MFC使用ADO连接SQL SERVER数据库实现的高校教材管理系统

greenlight

发布日期: 2018-11-11 09:36:52 浏览量: 1533
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

随着高校规模的扩大和教学的改革的深入,高校的教学水平和管理在稳步提高,而高校的教材管理环节起着为教学和科研提供软环境的重要作用,是与高校综合能力的增强相辅而成的。而现有的高校教材管理系统大多还停留在手工管理阶段,建立一套符合高校需要的先进的高校教材管理系统是十分必要的。

关键词:教材管理;用户管理;预定教材;财务管理;

引 言

高校教材管理系统现阶段还依旧停留在手工阶段,系统的一般流程是任课教师进修选定教材,呈交到各个院系,各个院系汇总上报教材,有教材库统一征订,入库,发放和费用结算。随着高校办学规模的扩大,开设课程的增多,教材科每个学期需要入库的教材高达几百种,数量达到几万册,涉及教师、学生几千至几万人。教材管理的涉及面广,工作量大。现有的高校教材管理系统功能比较单一,不能很好地满足实际需要,尤其在书费管理和教材征订两个方面。设计一个能对教材征订、入库、发放和费用结算实现有效的管理的系统是减轻各个院系、教材科相关人员的工作量,节约成本,提高效率的关键。因此本文采取SQL sever 2008,和VC++6.0设计并实现高校教材管理系统。

1 需求分析

1.1 处理功能及要求

根据高校教材管理系统的需要,本平台实现的需求如下七个部分:用户登录模块,定数模块,教材基本信息管理,财务管理,渠道管理,用户个人中心,管理员中心。能够实现以下功能:

1.1.1 用户登录模块

登录界面的功能主要是供合法用户根据自己的用户类型进行登录。如果用户在没有登录的情况下是不能进入系统的。用户的类型分为普通用户和管理员,每一种不同的用户所拥有的权限是不一样的。

1.1.2 订书模块

网上教程预定模块可以分为根据教材号预定,根据教程名预定,分类预定和查看所有教材并预定,给用户提供了很大的空间。

1.1.3 教材基本信息管理

教材基本信息是教材入库的时候进行统计的,包括教材本身的基本信息和教材入库的库存量和教材入库的库位号方面管理和查找。在教材基本信息里卖还可以查到供应商信息和出版社信息,在教材的基本信息上还有教材的介绍,功能强大和方面。

1.1.4 财务管理

财务管理方面有按月份进行管理,按照年份进行管理,按照进货的支出,出货的收入,打印报表等,方面实用的涵盖了对财务的具体包含。

1.1.5 渠道管理

在这里进行用户,班级负责人,教师,出版社,供应商的总管理,这里可以看出每个渠道的具体信息,从而进行修改和进行进一步计划。

1.1.6 用户个人中心

在这里进行对自己的个人资料和密码的更改,退出登录,切换用户,和联系管理员。

1.1.7 管理员中心

在这里进行管理员的注册,修改管理员的密码,对用户的消息进行处理和交流,而且在这里可以对所有用户的基本信息进行修改。防止用户忘记密码等。

1.2 高校教材管理系统业务流程

1.3高校教材管理系统数据流图

顶层数据流图如图所示:

0层数据流图如图所示:

第1层数据流图如图:

1.4 高校教材管理系统数据字典

1.4.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) 传真

1.4.2 数据结构

编号 名称 含义 组成
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 出版社 出版社信息 出版社名称,联系电话,邮箱,地址,传真

1.4.3 处理逻辑描述

编号 处理功能 处理过程
PR-1 入库进行更新功能模块 根据入库的内容进行库存的更新
PR-2 订购统计插入功能模块 根据订购的情况进行再订购表内的更新,计算总价,在教材基本信息表内进行库存更新
PR-3 退书更新内容功能模块 在退书的时候进行更新库存和退书的原因
PR-4 负责人进行替换功能模块 在修改负责人信息的时候,会级联更新订书表的负责人信息,减少冗余

2 概念设计

概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。

在本高校教材管理管理系统中,从数据流图下手。分析数据流图和数据字典,知道整个系统功能围绕“教材”、“用户”、“管理员”、“订书”、“退书”的处理,根据需求分析得出如下过程。

  • 一门教材只能被一个用户订阅,一个用户可以订阅多门教材;
  • 一个管理员可以管理多个用户,一个用户只能被一个管理员管理;
  • 用户决定订书,用户提出退书条件
  • 管理员接受订书条件,管理员可以同意用户退书

根据以上需求得出基本的全局ER图如下:

3 逻辑设计

3.1 将E-R图转换为关系模型

分析全局ER图,由于部门与职工的联系方式是1:n(一对多),可以将其之间的联系与n端实体部门、职工合并,,而教师与课程之间的借阅和归还联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,职工与管理员之间的罚款联系是m:n(多对多),将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下:

  • 教材基本信息表:(教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,入库编号,库存量,供应商,定价)

  • 入库统计信息表:(入库编号教材ID,书号,书名,条码,作者,出版日期,出版社名称,版次,库位信息,供应商,定价)

  • 退书统计信息表:(序号教材ID,退书时间,退书原因,退书数量,退书单价)

  • 订购统计信息表:(教材ID书号,书名,条码,作者,出版日期,出版社名称,版次库位信息,供应商出库编号,定价,订购数量,订购时间,订购价格,备注,订购编号)

  • 出库统计信息表:(出库编号教材ID,收货方,出库时间,出库数量,出库单价)

  • 教师取书信息表:(取书编号教材ID,教师姓名,所在院校,取书时间,取书数量,取书单价)

  • 学生取书信息表:(取书编号教材ID,负责人,取书时间,取书数量,取书单价)

  • 负责人信息表: (姓名,院系名称,专业名称,班级名称,班级人数,入学年份,联系电话)

  • 供应商信息表: (供应商,联系电话,邮箱,地址,传真)

3.2 模型优化

3.2.1 数据库模式定义

教材基本信息表

列名** 数据类型 可否为空 说明
教材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) 传真

3.4 数据处理

系统功能模块图,如图所示:

4 物理设计

4.1 数据存储

数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,为数据库中各基本表建立的索引如下:

  • 由于基本表的主码ID,经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引

  • 由于订购统计表、入库统计表和退书统计表的特殊性需要把教材基本信息表的库存进行更新

  • 学生取书表的负责人是负责人信息表的内容,教师取书表的负责人是教师表里面的教师ID

  • 供应商基本信息表和出版社基本信息表完善了教材信息表的供应商信息和出版社信息。

4.2 系统功能模块

4.2.1 登录模块

登录分为用户登录和管理员登录,对于不同的登录人提供不同的功能,具体的功能模块图,如图所示:

4.2.2 个人信息更新模块

修改个人信息,在进入的时候先根据登录的用户名获取到自己的个人信息,然后进行更改,具体的功能模块图,如图所示:

5 设计心得

  • 在SQL SEVER方面还是暑假前面的涉及,在vc++做系统的时候进行了一些小的更改使设计能运行,感觉在具体的权限设置方面。数据库的级联更新删除做的还不是太好。

  • 在VC++方面。这次设计花费了快一个月的时间,从以前的看书打代码到现在的明白了类。虽然说认识的还是不是特别深刻,但是知道了继承和关系,cpp文件和.h文件的联系。关键是暑假之前一直在做ODBC 在这次的实验过程中我用了ADO这个比较流行的接口,在网上看了一些封装ADO的接口指针的视频和教程,知道了大概改怎么使用ADO发现在vc里面使用ADO会比ODBC更加灵活,虽然说ADO更加难一点,但是理解了做发现格式都大同小异,在ado里面要经常使用try catch 语句,可以发现未知错误并且及时进行更改。前一段时间在想怎么把vc和数据库封装起来在其他的电脑上也能继续使用,但是没有成功,现在可以把数据源附加到有SQL的电脑里从新设计一个连接字符就应该可以做到封装。新的技术还是没有掌握。

6 存在的问题及建议

在这次的涉及里,我把整个的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

附录 系统的运行界面

系统的登陆界面

主窗体

查看本学期所需教材

修改个人信息

更改密码

教材退订

联系管理员

教材基本信息

教材进货

库存管理

用户个人管理

上传的附件 cloud_download MFC使用ADO连接SQL SERVER数据库实现的高校教材管理系统.7z ( 2.34mb, 164次下载 )
error_outline 下载需要12点积分

keyboard_arrow_left上一篇 : 基于JSP和MySQL的进销存管理系统的设计与实现 基于MySql和JSP的题库管理系统 : 下一篇keyboard_arrow_right



小鲨鱼
2021-01-13 14:21:14
SQL SERVER和MY SQL分不清?不知道怎么做的就不要瞎写题目,浪费时间
破铜烂铁的小钢炮
2021-04-06 18:19:51
“用vc打开界面编译并运行,即可连接数据库并进入系统”说的是打开哪一个界面呢,下载的压缩文件夹里每个能打开的都试了好像都不行呢

发送私信

幸福的绿光在哪里

21
文章数
20
评论数
最近文章
eject