greenlight
随着高校规模的扩大和教学的改革的深入,高校的教学水平和管理在稳步提高,而高校的教材管理环节起着为教学和科研提供软环境的重要作用,是与高校综合能力的增强相辅而成的。而现有的高校教材管理系统大多还停留在手工管理阶段,建立一套符合高校需要的先进的高校教材管理系统是十分必要的。
关键词:教材管理;用户管理;预定教材;财务管理;
高校教材管理系统现阶段还依旧停留在手工阶段,系统的一般流程是任课教师进修选定教材,呈交到各个院系,各个院系汇总上报教材,有教材库统一征订,入库,发放和费用结算。随着高校办学规模的扩大,开设课程的增多,教材科每个学期需要入库的教材高达几百种,数量达到几万册,涉及教师、学生几千至几万人。教材管理的涉及面广,工作量大。现有的高校教材管理系统功能比较单一,不能很好地满足实际需要,尤其在书费管理和教材征订两个方面。设计一个能对教材征订、入库、发放和费用结算实现有效的管理的系统是减轻各个院系、教材科相关人员的工作量,节约成本,提高效率的关键。因此本文采取SQL sever 2008,和VC++6.0设计并实现高校教材管理系统。
根据高校教材管理系统的需要,本平台实现的需求如下七个部分:用户登录模块,定数模块,教材基本信息管理,财务管理,渠道管理,用户个人中心,管理员中心。能够实现以下功能:
登录界面的功能主要是供合法用户根据自己的用户类型进行登录。如果用户在没有登录的情况下是不能进入系统的。用户的类型分为普通用户和管理员,每一种不同的用户所拥有的权限是不一样的。
网上教程预定模块可以分为根据教材号预定,根据教程名预定,分类预定和查看所有教材并预定,给用户提供了很大的空间。
教材基本信息是教材入库的时候进行统计的,包括教材本身的基本信息和教材入库的库存量和教材入库的库位号方面管理和查找。在教材基本信息里卖还可以查到供应商信息和出版社信息,在教材的基本信息上还有教材的介绍,功能强大和方面。
财务管理方面有按月份进行管理,按照年份进行管理,按照进货的支出,出货的收入,打印报表等,方面实用的涵盖了对财务的具体包含。
在这里进行用户,班级负责人,教师,出版社,供应商的总管理,这里可以看出每个渠道的具体信息,从而进行修改和进行进一步计划。
在这里进行对自己的个人资料和密码的更改,退出登录,切换用户,和联系管理员。
在这里进行管理员的注册,修改管理员的密码,对用户的消息进行处理和交流,而且在这里可以对所有用户的基本信息进行修改。防止用户忘记密码等。
顶层数据流图如图所示:
0层数据流图如图所示:
第1层数据流图如图:
系统涉及的数据项有86项,具体如表1.1所示:
数据项编号 | 数据项名 | 数据项含义 | 存储结构 | 别名 |
---|---|---|---|---|
DI-1 | 教材ID | 教材信息ID | int | ID |
DI-2 | 书号 | 教材信息书号 | varchar(30) | 书号 |
DI-3 | 书名 | 教材信息书名 | varchar(40) | 书名 |
DI-4 | 条码 | 教材信息条码 | varchar(40) | 条码 |
DI-5 | 作者 | 教材信息作者 | varchar(30) | 作者 |
DI-6 | 出版日期 | 教材信息出版日期 | datetime | 出版日期 |
DI-7 | 出版社名称 | 教材出版社名称 | varchar(20) | 出版社名称 |
DI-8 | 版次 | 教材信息版次 | varchar(10) | 版次 |
DI-9 | 库位信息 | 教材信息库位信息 | varchar(10) | 库位信息 |
DI-10 | 入库编号 | 教材信息入库编号 | int | 入库编号 |
DI-11 | 库存量 | 教材信息库存量 | int | 库存量 |
DI-12 | 供应商 | 教材信息供应商 | varchar(30) | 供应商 |
DI-13 | 定价 | 教材信息定价 | money | 定价 |
DI-14 | 入库编号 | 入库统计入库编号 | int | 入库编号 |
DI-15 | 教材ID | 入库统计教材ID | varchar(30) | 教材ID |
DI-16 | 书号 | 入库统计书号 | varchar(30) | 书号 |
DI-17 | 书名 | 入库统计书名 | Varchar40) | 书名 |
DI-18 | 条码 | 入库统计条码 | varchar(40) | 条码 |
DI-19 | 作者 | 入库统计作者 | varchar(30) | 作者 |
DI-20 | 出版日期 | 入库统计出版日期 | varchar(30) | 出版日期 |
DI-21 | 出版社名称 | 入库出版社名称 | varchar(50) | 出版社名称 |
DI-22 | 版次 | 入库统计版次 | varchar(20) | 版次 |
DI-23 | 库位信息 | 入库统计库位信息 | varchar(10) | 库位信息 |
DI-24 | 供应商 | 入库统计供应商 | varchar(40) | 供应商 |
DI-25 | 定价 | 入库统计定价 | Money | 定价 |
DI-26 | 入库时间 | 入库统计入库时间 | varchar(30) | 入库时间 |
DI-27 | 入库价格 | 入库统计入库价格 | Money | 入库价格 |
DI-28 | 入库数量 | 入库统计入库数量 | int | 入库数量 |
DI-29 | 序号 | 退书统计序号 | int | 序号 |
DI-30 | 教材ID | 退书统计教材ID | int | 教材ID |
DI-31 | 退书时间 | 退书统计退书时间 | datetime | 退书时间 |
DI-32 | 退书原因 | 退书统计退书原因 | varchar(60) | 退书原因 |
DI-33 | 退书数量 | 退书统计退书数量 | int | 退书数量 |
DI-34 | 退书单价 | 退书统计退书单价 | Money | 退书单价 |
DI-35 | 定价 | 订购统计定价 | money | 定价 |
DI-36 | 订购数量 | 订购统计订购数量 | int | 订购数量 |
DI-37 | 订购时间 | 订购统计订购时间 | datetime | 订购时间 |
DI-38 | 订购价格 | 订购统计订购价格 | money | 订购价格 |
DI-39 | 备注 | 订购统计备注 | text | 备注 |
DI-40 | 订购编号 | 订购统计订购编号 | int | 订购编号 |
DI-41 | 教材ID | 订购统计教材ID | int | 管理员编号 |
DI-42 | 书号 | 订购统计书号 | varchar(30) | 书号 |
DI-43 | 书名 | 订购统计书名 | Varchar(40) | 书名 |
DI-44 | 条码 | 订购统计条码 | Varchar(40) | 条码 |
DI-45 | 作者 | 订购统计作者 | Varchar(30) | 作者 |
DI-46 | 出版日期 | 订购统计出版日期 | datetime | 出版日期 |
DI-47 | 出版社名称 | 订购出版社名称 | varchar(50) | 出版社名称 |
DI-48 | 版次 | 订购统计版次 | varchar(20) | 版次 |
DI-49 | 库位信息 | 订购统计库位信息 | varchar(10) | 库位信息 |
DI-50 | 供应商 | 订购统计供应商 | varchar(40) | 供应商 |
DI-51 | 出库编号 | 出库统计出库编号 | int | 出库编号 |
DI-52 | 教材ID | 出库统计教材ID | int | 教材ID |
DI-53 | 收货方 | 出库统计收货方 | varchar(60) | 收货方 |
DI-54 | 出库时间 | 出库统计出库时间 | datetime | 出库时间 |
DI-55 | 出库数量 | 出库统计出库数量 | int | 出库数量 |
DI-56 | 出库单价 | 出库统计出库单价 | money | 出库单价 |
DI-57 | 取书编号 | 教师取书取书编号 | int | 取书编号 |
DI-58 | 教材ID | 教师取书教材ID | int | 教材ID |
DI-59 | 教师姓名 | 教师取书教师姓名 | varchar(10) | 教师姓名 |
DI-60 | 所在院校 | 教师取书所在院校 | varchar(40) | 所在院校 |
DI-61 | 取书时间 | 教师取书取书时间 | datetime | 取书时间 |
DI-62 | 取书数量 | 教师取书取书数量 | int | 取书数量 |
DI-63 | 取书单价 | 教师取书取书单价 | money | 取书单价 |
DI-64 | 取书编号 | 学生取书取书编号 | int | 取书编号 |
DI-65 | 教材ID | 学生取书教材ID | int | 教材ID |
DI-66 | 负责人 | 学生取书负责人 | varchar(10) | 负责人 |
DI-67 | 取书时间 | 学生取书取书时间 | datetime | 取书时间 |
DI-68 | 取书数量 | 学生取书取书数量 | int | 取书数量 |
DI-69 | 取书单价 | 学生取书取书单价 | money | 取书单价 |
DI-70 | 姓名 | 负责人姓名 | varchar(20) | 姓名 |
DI-71 | 院系名称 | 负责人院系名称 | varchar(30) | 院系名称 |
DI-72 | 专业名称 | 负责人专业名称 | varchar(30) | 专业名称 |
DI-73 | 班级名称 | 负责人班级名称 | varchar(30) | 班级名称 |
DI-74 | 班级人数 | 负责人班级人数 | int | 班级人数 |
DI-75 | 入学年份 | 负责人入学年份 | datetime | 入学年份 |
DI-76 | 联系电话 | 负责人联系电话 | varchar(20) | 联系电话 |
DI-77 | 供应商 | 供应商姓名 | varchar(20) | 供应商 |
DI-78 | 联系电话 | 供应商联系电话 | varchar(30) | 联系电话 |
DI-79 | 邮箱 | 供应商邮箱 | varchar(30) | 邮箱 |
DI-80 | 地址 | 供应商地址 | varchar(40) | 地址 |
DI-81 | 传真 | 供应商传真 | varchar(30) | 传真 |
DI-82 | 出版社名称 | 出版社名称 | varchar(20) | 出版社名称 |
DI-83 | 联系电话 | 出版社联系电话 | varchar(20) | 联系电话 |
DI-84 | 邮箱 | 出版社邮箱 | varchar(40) | 邮箱 |
DI-85 | 地址 | 出版社地址 | varchar(40) | 地址 |
DI-86 | 传真 | 出版社传真 | varchar(30) | 传真 |
编号 | 名称 | 含义 | 组成 |
---|---|---|---|
DS-1 | 教材信息 | 教材基本信息 | 教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,入库编号,库存量,供应商,定价 |
DS-2 | 入库 | 入库统计信息 | 入库编号,教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,供应商,定价 |
DS-3 | 退书 | 退书统计信息 | 序号,教材ID,退书时间,退书原因,退书数量,退书单价 |
DS-4 | 订购 | 订购统计信息 | 教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次库位信息,供应商出库编号,定价,订购数量,订购时间,订购价格,备注,订购编号 |
DS-5 | 出库 | 出库统计信息 | 出库编号,教材ID,收货方,出库时间,出库数量,出库单价 |
DS-6 | 教师取书 | 教师取书信息 | 取书编号,教材ID,教师姓名,所在院校,取书时间,取书数量,取书单价 |
DS-7 | 学生取书 | 学生取书信息 | 取书编号,教材ID,负责人,取书时间,取书数量,取书单价 |
DS-8 | 负责人 | 负责人信息 | 姓名,院系名称,专业名称,班级名称,班级人数,入学年份,联系电话 |
DS-9 | 供应商 | 供应商信息 | 供应商,联系电话,邮箱,地址,传真 |
DS-10 | 出版社 | 出版社信息 | 出版社名称,联系电话,邮箱,地址,传真 |
编号 | 处理功能 | 处理过程 |
---|---|---|
PR-1 | 入库进行更新功能模块 | 根据入库的内容进行库存的更新 |
PR-2 | 订购统计插入功能模块 | 根据订购的情况进行再订购表内的更新,计算总价,在教材基本信息表内进行库存更新 |
PR-3 | 退书更新内容功能模块 | 在退书的时候进行更新库存和退书的原因 |
PR-4 | 负责人进行替换功能模块 | 在修改负责人信息的时候,会级联更新订书表的负责人信息,减少冗余 |
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
在本高校教材管理管理系统中,从数据流图下手。分析数据流图和数据字典,知道整个系统功能围绕“教材”、“用户”、“管理员”、“订书”、“退书”的处理,根据需求分析得出如下过程。
根据以上需求得出基本的全局ER图如下:
分析全局ER图,由于部门与职工的联系方式是1:n(一对多),可以将其之间的联系与n端实体部门、职工合并,,而教师与课程之间的借阅和归还联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,职工与管理员之间的罚款联系是m:n(多对多),将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下:
教材基本信息表:(教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,入库编号,库存量,供应商,定价)
入库统计信息表:(入库编号,教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,供应商,定价)
退书统计信息表:(序号,教材ID,退书时间,退书原因,退书数量,退书单价)
订购统计信息表:(教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次库位信息,供应商出库编号,定价,订购数量,订购时间,订购价格,备注,订购编号)
出库统计信息表:(出库编号,教材ID,收货方,出库时间,出库数量,出库单价)
教师取书信息表:(取书编号,教材ID,教师姓名,所在院校,取书时间,取书数量,取书单价)
学生取书信息表:(取书编号,教材ID,负责人,取书时间,取书数量,取书单价)
负责人信息表: (姓名,院系名称,专业名称,班级名称,班级人数,入学年份,联系电话)
供应商信息表: (供应商,联系电话,邮箱,地址,传真)
教材基本信息表
列名** | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
教材ID | int | not null | 教材ID |
书号 | varchar(30) | not null | 书号 |
书名 | varchar(40) | not null | 书名 |
条码 | varchar(40) | not null | 条码 |
作者 | varchar(30) | 作者 | |
出版日期 | datetime | 出版日期 | |
出版社名称 | varchar(20) | 出版社名称 | |
版次 | varchar(10) | 版次 | |
库位信息 | varchar(10) | 库位信息 | |
入库编号 | int | 入库编号 | |
库存量 | int | 库存量 | |
供应商 | varchar(30) | 供应商 | |
定价 | money | 定价 |
入库统计表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
入库编号 | int | not null | 入库编号 |
教材ID | varchar(30) | not null | 教材ID |
书号 | varchar(30) | not null | 书号 |
书名 | Varchar40) | not null | 书名 |
条码 | varchar(40) | 条码 | |
作者 | varchar(30) | 作者 | |
出版日期 | varchar(30) | 出版日期 | |
出版社名称 | varchar(50) | 出版社名称 | |
版次 | varchar(20) | 版次 | |
库位信息 | varchar(10) | 库位信息 | |
供应商 | varchar(40) | 供应商 | |
定价 | Money | not null | 定价 |
入库时间 | varchar(30) | not null | 入库时间 |
入库价格 | Money | not null | 入库价格 |
入库数量 | int | not null | 入库数量 |
订购统计表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
定价 | money | not null | 订购数量 |
订购数量 | int | not null | 订购时间 |
订购时间 | datetime | not null | 订购价格 |
订购价格 | money | not null | 备注 |
备注 | text | 订购编号 | |
订购编号 | int | not null | 教材ID |
教材ID | int | not null | 书号 |
书号 | varchar(30) | not null | 书名 |
书名 | Varchar(40) | not null | 条码 |
条码 | Varchar(40) | 作者 | |
作者 | Varchar(30) | 出版日期 | |
出版日期 | datetime | 出版社名称 | |
出版社名称 | varchar(50) | 版次 | |
版次 | varchar(20) | 库位信息 | |
库位信息 | varchar(10) | 供应商 | |
供应商 | varchar(40) | 订购数量 |
退书统计表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
序号 | int | not null | 序号 |
教材ID | int | not null | 教材ID |
退书时间 | datetime | not null | 退书时间 |
退书原因 | varchar(60) | not null | 退书原因 |
退书数量 | int | not null | 退书数量 |
退书单价 | Money | not null | 退书单价 |
出库统计表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
出库编号 | int | not null | 出库编号 |
教材ID | int | not null | 教材ID |
收货方 | varchar(60) | not null | 收货方 |
出库时间 | datetime | not null | 出库时间 |
出库数量 | int | not null | 出库数量 |
出库单价 | money | not null | 出库单价 |
教师取书表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
取书编号 | int | not null | 取书编号 |
教材ID | int | 教材ID | |
教师姓名 | varchar(10) | not null | 教师姓名 |
所在院校 | varchar(40) | 所在院校 | |
取书时间 | datetime | not null | 取书时间 |
取书数量 | int | not null | 取书数量 |
取书单价 | money | not null | 取书单价 |
学生取书表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
取书编号 | int | not null | 取书编号 |
教材ID | int | not null | 教材ID |
负责人 | varchar(10) | not null | 负责人 |
取书时间 | datetime | not null | 取书时间 |
取书数量 | int | not null | 取书数量 |
取书单价 | money | not null | 取书单价 |
负责人信息表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
姓名 | varchar(20) | not null | 姓名 |
院系名称 | varchar(30) | not null | 院系名称 |
专业名称 | varchar(30) | not null | 专业名称 |
班级名称 | varchar(30) | not null | 班级名称 |
班级人数 | int | not null | 班级人数 |
入学年份 | datetime | not null | 入学年份 |
联系电话 | varchar(20) | not null | 联系电话 |
供应商基本信息表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
供应商 | varchar(20) | not null | 供应商 |
联系电话 | varchar(30) | not null | 联系电话 |
邮箱 | varchar(30) | 邮箱 | |
地址 | varchar(40) | 地址 | |
传真 | varchar(30) | 传真 |
出版社基本信息表
列名 | 数据类型 | 可否为空 | 说明 |
---|---|---|---|
出版社名称 | varchar(20) | not null | 出版社名称 |
联系电话 | varchar(20) | not null | 联系电话 |
邮箱 | varchar(40) | 邮箱 | |
地址 | varchar(40) | 地址 | |
传真 | varchar(30) | 传真 |
系统功能模块图,如图所示:
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,为数据库中各基本表建立的索引如下:
由于基本表的主码ID,经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引
由于订购统计表、入库统计表和退书统计表的特殊性需要把教材基本信息表的库存进行更新
学生取书表的负责人是负责人信息表的内容,教师取书表的负责人是教师表里面的教师ID
供应商基本信息表和出版社基本信息表完善了教材信息表的供应商信息和出版社信息。
登录分为用户登录和管理员登录,对于不同的登录人提供不同的功能,具体的功能模块图,如图所示:
修改个人信息,在进入的时候先根据登录的用户名获取到自己的个人信息,然后进行更改,具体的功能模块图,如图所示:
在SQL SEVER方面还是暑假前面的涉及,在vc++做系统的时候进行了一些小的更改使设计能运行,感觉在具体的权限设置方面。数据库的级联更新删除做的还不是太好。
在VC++方面。这次设计花费了快一个月的时间,从以前的看书打代码到现在的明白了类。虽然说认识的还是不是特别深刻,但是知道了继承和关系,cpp文件和.h文件的联系。关键是暑假之前一直在做ODBC 在这次的实验过程中我用了ADO这个比较流行的接口,在网上看了一些封装ADO的接口指针的视频和教程,知道了大概改怎么使用ADO发现在vc里面使用ADO会比ODBC更加灵活,虽然说ADO更加难一点,但是理解了做发现格式都大同小异,在ado里面要经常使用try catch 语句,可以发现未知错误并且及时进行更改。前一段时间在想怎么把vc和数据库封装起来在其他的电脑上也能继续使用,但是没有成功,现在可以把数据源附加到有SQL的电脑里从新设计一个连接字符就应该可以做到封装。新的技术还是没有掌握。
在这次的涉及里,我把整个的VC的框架给涉及了出来,但是因为时间有限,不能给没一个控件完善其中的代码。只做到了对数据库的插入更新删除的操作。对一些VC的高级控件还是不会使用,例如列表控件,标签控件,里面的代码缺少实践。对VC的界面没有进行更改,没有用到画刷进行高级的修饰,做出来的程序还是和市面上的程序有好大的区别,有一些bug没有进行修复。我相信,以后我会做的更好!
[1]匡松,李强.Visual C++开发宝典[M].北京:中国铁道出版社,2009
[2]刘锐宁,李伟明,粱水.Visual C++编程宝典[M].北京:人民邮电出版社,2011
[3]李军.Visual C++ 实例精通[M].北京:机械工业出版社,2009
[4]JamesR.Groff, Paul N.Weinberg, Andrew J.Oppel.SQL Server完全手册[M] .北京:电子工业出版社,2010
系统的登陆界面
主窗体
查看本学期所需教材
修改个人信息
更改密码
教材退订
联系管理员
教材基本信息
教材进货
库存管理
用户个人管理
keyboard_arrow_left上一篇 : 基于JSP和MySQL的进销存管理系统的设计与实现 基于MySql和JSP的题库管理系统 : 下一篇keyboard_arrow_right