收藏 分享(赏)

教材管理系统设计.doc

上传人:myw993772 文档编号:7893862 上传时间:2019-05-29 格式:DOC 页数:22 大小:414.95KB
下载 相关 举报
教材管理系统设计.doc_第1页
第1页 / 共22页
教材管理系统设计.doc_第2页
第2页 / 共22页
教材管理系统设计.doc_第3页
第3页 / 共22页
教材管理系统设计.doc_第4页
第4页 / 共22页
教材管理系统设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、教材管理系统设计1、系统概述本系统应该实现的功能如下:1、系统管理模块:首先是对本系统的操作用户设置权限以及用户基本信息的添加、修改、删除其次是设置有系统初始化,能够在系统出现问题或者有大量错误、冗余数据时进行初始化设置,使系统恢复期初始状态;2、书费管理局模块:财务科根据学生订书情况和教材费用收缴学生订书费用,并记录相应的数据;3、教材出入库模块:教材科根据学生订书数量和教材基本信息想学生发放教材的出库管理和向书商下达供书订单并打印教材报表,便于用户直接查看;4、综合查询模块:根据用户的类型和需求查询教材的库存信息,班级信息以及费用收缴信息;5、统计分析模块:录入班级信息闭和教师单位信息并设

2、置打印报表功能供用户查看然后操作员根据订书情况统计分析学生买书的人数比例和学生不购买教材的原因分析,一次给校方提供相应的数据,便于改进学校的教材管理措施,满足学生对教材的需求;6、 帮助模块:介绍本系统的相关信息和操作指南。2、需求分析教材管理是教学管理中的组成部分,一般学校的教材管理模式是在学年制基础上以班级为单位进行处理的。院校的教材管理随着学生规模的日益增大、教材日益多样化、学生个人之间教材差异越来越大的现实面前已呈现出无法应对的局面。因此,建立一套与选课相配套的教材管理模式和管理系统具有十分重要的意义和实际应用的迫切性,而且现有的条件、管理理念和技术水平已使之成为可能。教材管理员信息教

3、材管理员发书登记信息教材修改信息 删除信息管理财务管理员信息财务管理员信息操作流程图1.教师信息教师信息操作流程图2.教材信息教师财务管理员购买教材删除信息修改信息登记信息教材管理员拨款教材教材选定统计人数 修改人数 删除人数预订教材班级分类删除领取信息登记领取信息 修改领取信息教材信息操作流程图3.出版社信息出版社信息操作流程图三、概念模型设计从课程设计选题中可以得知,我们设计的教材管理系统数据库需具备以下功能:(1)可随时查询教材库中订购的教材的种类、数量、订购班级。(2)可随时查询班级某一学期订购教材的情况。包括订购班级、教材号、教材名称、教材数量、书费等。(3)当需要时,可通过数据库中

4、保存的出版社电话、邮编及地址等信息向有关书籍的出版社增购有关教材。(4)查询某种教材被哪些班级订购过(显示班级号、班级名称、班级人数、领书状态) 。(5)查询出版某书籍的出版社的出版社名、电话、地址(6)查询各种图书借阅次数(显示书名,书号,借阅次数) 。(7)查询图书所属出版社的相关信息(显示书名,书号,出版社名,电话,邮编,地址)(8)查询书库中某种类书籍的书名、书号(9)查询借阅了多种图书的读者的姓名、借书证号(10)查询某书架上放置的图书的书名、书号、数量整理信息联系购买商分类出版教材出版社被领取被订购(11)查询作者投稿的出版社的出版社名、出版社电话、地址(12)查询读者投稿时间、出

5、版社名在普通教材的管理应用中,一般的流程有以下几个:1、管理员可以对用户进行管理,如添加用户,分配用户的角色,如“普通用户” 、 “用户管理员” ;删除用户信息;修改用户信息。2、每个班级将需要订购的教材费用交由财务科科,财务科再通知教材科,根据上报的教材数量找到供应商订购教材,并详细记录教材信息。3、每个班级按照缴费情况,到教材科领书,并记录领取信息。并且教材管理处根据教库存信息决定是否订购书。4、校方高层管理人员可在学校教材发放完毕后根据教材科和财务科所提供的学生购书人数比例。5、当系统出现异常、人为故障时,或者在使用过程中出现了大量的冗余、错误数据时,可通过系统初始化设置使系统恢复初始状

6、态。其系统流程图如下图所示:2.3 教材系统的数据流图数据流程图班级表的结构字段名 数据类型 说明班级名 文本(索引) 主键,字段大小为 20入学时间 日期/时间所在院系 文本 字段大小为 20班长 文本 字段大小为 8班长联系电话 文本 字段大小为 20班主任 文本 预算科目代码,字段大小为 8班主任联系电话 文本 预算科目代码,字段大小为 20操作员 文本 业务金额,字段大小为 8最后修改时间 日期/时间书费 货币所学专业 文本 字段大小为 20班级总人数 数字 整型买书人数 数字 整型单位信息表的结构字段名 数据类型 说明单位名 文本(索引) 主键,字段大小为 20负责人 文本 字段大小

7、为 8联系电话 文本 字段大小为 50书费 货币操作员 文本 字段大小为 8最后修改时间 日期时间学生书费历史表的结构字段名 数据类型 说明班级名 文本 字段大小为 20上期费用 货币本次费用 货币本期费用 货币经办人 文本 字段大小为 8上期数量 数字 整型本次数量 数字 整型操作员 文本 字段大小为 8最后修改时间 日期时间说明 文本 字段大小为 50班级人数 数字 整型id 自动编号 主键,长整型 递增教材表的结构字段名 数据类型 说明教材名 文本 字段大小为 50出版社 文本 字段大小为 50作者 文本 字段大小为 8获奖情况 文本 字段大小为 50出版年月 日期时间订书单位 文本 字

8、段大小为 50经办人 文本 字段大小为 8教材数量 数字 整型教材单价 货币使用说明 文本 字段大小为 50入库时间 日期时间说明 文本 字段大小为 50操作员 文本 字段大小为 8最后修改时间 日期时间Id 自动编号 主键,长整型 递增教材出入库历史表的结构字段名 数据类型 说明教材名 文本 字段大小为 50出版社 文本 字段大小为 50获奖情况 文本 字段大小为 50出版年月 日期时间经办单位 文本 字段大小为 50经办人 文本 字段大小为 8上期数量 数字 整型本次数量 数字 整型本期数量 数字 整型教材单价 货币使用说明 文本 字段大小为 50入库时间 日期时间说明 文本 字段大小为

9、50操作员 文本 字段大小为 8最后修改时间 日期时间id 自动编号 主键,长整型 递增操作用户表的结构字段名 数据类型 说明用户名 文本 主键,字段大小为 8密码 文本 字段大小为 8所在单位 文本 字段大小为 50权限一 是/否 管理权权限二 是/否 收费权权限三 是/否 出入库权权限四 是/否 查询权操作员 文本 字段大小为 8最后修改时间 日期/时间不购书原因记录字段名 数据类型 说明班级名 文本 主键所在专业 文本 字段大小为 50太贵 数字 整型与专业不符 数字 整型没必要 数字 整型其他 数字 整型2.4.2 数据库关联图第 3 章 总体设计3.1 软件设计流程图系 统 初 始

10、化建 立 基 本 教 材 数 据班 级 选 择 教 材建 立 班 级 教 材 数 据建 立 教 材 库 存 数 据征 订 教 材 数 据 信 息采 购 教 材 数 据 信 息建 立 用 户 信 息操 作 用 户 信 息建 立 不 购 书 人 数 统计不 购 书 原 因 分 析3.2 软件功能模块图图 3.2.1 软件功能模块图系统登录本模块实现验证用户身份并登录系统的功能。本模块的主要程序设计思想是:启动教材管理系统后,显示系统登录界面,此时,用户输入名称和口令,单击 “登录”按钮,系统验证用户身份通过后,将显示系统主界面。继承 JDialog 类,构造登录界面。继承conDB 类,构造数据库

11、操作对象,验证用户身份。本模块的核心代码如下。 本模块的核心代码如下。 voidjbtnok_actionPerformed(ActionEvente)(/jbtnok 为登录按钮 name userid=jtfname.getTextO.trim();/获取用户 id sql=“select*fromidpwdwhereid-“+jtfname.getText()+” andpwd=“+jtfpwd.getText()+“”; /从表中查找满足条件的记录 try rs=con.getrs(con.con,sql);/得到记录集 if(rs.next()/如果记录集不空this.dispose

12、(); mainFramemf=newmainFrameO;mf.show(true);/显示系统主界面 con.dbclose(con.con,rs); catch(Exceptionee)4.2 主界面设计本模块为系统功能提供平台支持,用户经身份验证后登录系统,在主界面上完成各种教材管理工作。本模块的程序设计思想是:继承 Jframe 类,构造系统主界面。在主界面上添加JmenuBar 组件,以菜单形式体现系统的功能结构。在本界面上添加一个 JScrollPane 面板,其内填充 JTable 组件,该表格响应报表菜单和主界面下方按钮事件,用以显示各种报表内容,系统默认显示教材入库情况。设

13、置菜单代码为:this.setjMenuBar(jMnubar);jMnubar 为菜单工具条名称。在菜单条中添加菜单项调用函数 add0 方法实现。相应菜单项被选择事件,显示相应模块界面,只需构造该模块类一个对象即可。显示教材入库信息的核心代码如下。Stringsql=“select*frombookin“;/选择 bookin 表中所有记录try( ResultSetrst=con.getrs(con.con,sql);/得到所有记录 while(rst.next()/构造表格行记录 rowdatarowcount0=rst.getString(“bkname“); rowdatarowc

14、ount1=rst.getString(“bkeditor“) rowdatarowcount2=rst.getString(“pubname“);rowdatarowcount3=rst.getString(“bkisbn“); rowdatarowcount4=rst.getString(“bkprice“): rowdatarowcount5=rst.getString(“bknumber“) rowdatarowcount6=rst.getString(“suncomp“); rowcount 十+;/行计数器自增,确定行数 rst.close(); catch(Exceptionpe

15、)(pe.toString0; jtablistbook=newJTable(rowdata,col): /构造表格,rowdata 和。of 为己定义的 object 对象和 string 对象 tf = true;/标识表格内存在记录内容相应 “显示开课计划”按钮的代码与以上代码在思想上没有太大差别,可以修改后显示开课计划。4.3 部门信息本模块主要实现初始化部门信息功能,本模块主要实现思想是:系统初始化时将实现与数据库的连接,当用户输入部门名称时,单击 “增加按钮” ,conDB 类对象将使用insert 语句实现对部门信息表的插入记录功能。系统初始化时,将自动初始化部门列表,保持与部门

16、信息表的同步,同时便于用户选择部门,当用户选择某一部门时,该部门名称同时被填充到部门文本框中,用户单击 “删除”按钮即可删除某一部门,重新输入部门信息,单击 “修改”按钮实现修改部门信息功能。 部门列表的初始化代码如下,本模块中以函数形式体现,便于操作。publicvoidinit_combox()/初始化部门列表 try Stringsql 二“select*fromdepartment“; rs=con.getrs(con.con,sql);/得到记录集 while(rs.next() jcmbdeplist. addItem(rs.getString(“DEPNAME“);/添加条目 r

17、s.close();/关闭记录集 catch(Exceptionee) 增加部门信息代码如下。 voidjbtnadd_actionPerformed(ActionEvente) if(jtfdepname.getText0.length()!=0)/部门信息非空 String sql = “insert into department values(,+ jtfdepname.getText()+”)“: con.moddb(con.con,sql):/执行 sql 语句实现增加信息功能 jcmbdeplist.addItem(jtfdepname.getText();表 当实现删除、修改部

18、门信息时,分别使用 delete,updateSQL 语句,调用 conDB 类成员方法 mondb(Connectioncon,Stringsql),把以上删除、修改 sql 语句分别作为mondb 的参数即可实现部门信息的删除、修改工作,代码实现同部门增加方法。当单击 “退出”按钮时,退出本模块,此时关闭记录集,调用 onDB 类成员方法 dbclose();4.4 用户管理本模块实现增加、删除用户的管理功能,本模块的程序设计思想是:继承JDialog 类,构造模块界面,按界面设计添加各种组件。当初始化界面后,模块程序连接数据库,初始化用户列表,便于用户查看当前系统所有用户和便于删除某一用

19、户。在不断增加用户的情况下,用户可以单击用户列表右边的刷新按钮,使得列表内容保持与数据库表记录的同步。初始化用户列表的代码如下。sql=“select*fromidpwd“; ResultSetrs=con.getrs(con.con,sql);/得到所有用户 while(rs.next()cmblist.addltem(rs.getString(“id“);/添加用户到列表中当要刷新用户列表时,只要删除当前所有内容,重新调用列表初始化方法即可,代码如下。 jcmblist.removeAllItems();/清空所有的用户initcombox();/其代码为以上列出的用户列表初始化代码 在增

20、加用户时要判断是否该用户己经存在,所以要有两遍查询数据库记录的过程,代码如下。 voidjbtnuserinactionPerformed(ActionEvente)tryJOptionPanejop=newJOptionPane();sql=“select*fromidpwdwhereid=”+jtfid.getText().trim()+“;rs=con.getrs(con.con,sql);/用于验证用户是否存在 if(rs.next() jop.showConfirmDialog(nul1,”该用户已经存在”);else/增加用户并赋予用户退出系统的权限 sql=“insertinto

21、idpwdvalues(“+jtfid.getText()+”, ” +jtfpwd.getText0+“, 6001)“:con.moddb(con.con,sql); catch(Exceptionee) jtfid.setText(“);/清空各种文本框,便于下次输入 tfpwd.setText(“);4.5 技术难点与解决 在系统开发实现过程中,遇到了一定的技术实现问题,现把问题及其解决方 法描述如下。 (1)用户权限分配模块中遇到的问题及其解决方法权限分配模块中原来程序设计思想:用两个 JTree 控件分别用于显示系统权 限树和用户权限树。当为用户分配权限时,单击系统权限树某叶结点,

22、然后分配后的权限即可在用户权限树中增加相应的叶结点,而且结点之间从属关系不改 变。但要删除用户某一权限时,只要单击树中的叶结点且树刷新即可。用户权限树同系统权限树在默认状态下都要通过数据库表中的权限值动态生成。在实际开发过程中,用户权限树的建立、为用户分配权限后树的刷新问题没 有解决,成为代码实现中的一个难点。鉴于此,改用 JTable 控件代替 JTre。控 件来表现用户的权限,技术问题随之解决。(2)主界面中同一表格显示多种内容的问题在主界面中,设想用同一表格显示教材入库信息、教材出库信息、教材使用查询、各种费用查询、各种报表等内容,但正确显示表头成为一个小技术难点。当改显其他内容时,列标

23、题维持原有的内容,限于编程水平,该问题尚未得到解决。(3)报表打印问题由于本系统没有完全实现,代码开发阶段尚未结束,所以报表打印问题虽有考虑,但还未真正尝试解决。此为从未接触的新问题,应是难点之一,可以考虑用目前免费的可以提供二次开发的报表打印程序来实现。1.1.1 创建模式创建数据库“图书管理”1、 打开企业管理器,单击目录树窗口中的 sql server 服务器,选择工具向导菜单命令。2、 在打开的“选择向导”对话框表中双击“数据库” ,展开节点,显示数据库操作向导,单击“创建数据库向导” 。3、 单击确定按钮,打开创建数据库向导的欢迎对话框。4、 单击下一步按钮,打开命名数据库对话框,将

24、对话框的“数据库名称”文本框中显示的默认数据库名称“Administrator 数据库”修改为“图书管理” ,数据库文件位置使用默认值。5、 单击下一步按钮,打开命名数据库文件对话框,将数据文件的初始大小修改为 2。6、 单击下一步按钮,打开定义数据文件增长对话框,选中“文件增长的最大值” ,并将其后的文本框的数字修改为 4。7、 单击下一步按钮,打开命名事务日志文件对话框,将文件初始大小修改为 2。8、 单击下一步按钮,打开定义日志增长对话框,选中“事务日志文件不自动增长” ,不允许事务日志文件自动增长。9、 单击下一步按钮,打开完成信息对话框。10、 单击完成按钮,执行创建数据库操作。11

25、、 单击确定按钮,有提示是否为数据库创建维护计划,单击否.至此,完成数据库创建操 作。5.1.2 创建数据表1、打开查询分析器,在数据库下拉表框中选择“成图书管理”数据库。2、在查询窗口中输入下面的 sql 语句。 3、单击工具栏中执行按钮执行查询,完成数据表创建操作。(1)读者信息表的建立。命令如下:create table 读者信息(姓名 char(8) not null,借书证号 char(10) primary key not null,借书人单位 char(40)(2)出版社信息表的建立。命令如下:create table 出版社信息(出版社名 char(20) primary ke

26、y not null,电话 char(20),邮编 char(10),地址 char(40)(3)图书信息表的建立。命令如下:create table 图书信息(书名 char(40) not null,书号 char(10) primary key not null,种类 char(10)not null,总数量 int not null) (4)借阅信息表的建立。命令如下:create table 借阅信息(借书证号 char(10) foreign key references 读者信息 not null,书号 char(10) foreign key references 图书信息 n

27、ot null,借书日期 datetime not null,primary key(借书证号,书号)(5)归还信息create table 归还信息(借书证号 char(10) foreign key references 读者信息 not null,书号 char(10) foreign key references 图书信息 not null,归还日期 datetime not null,primary key(借书证号,书号)(6)放置信息create table 放置信息(书架号 char(10) foreign key references 书架信息 not null,书号 cha

28、r(10) foreign key references 图书信息 not null,数量 int not null,primary key(书架号,书号)(7)书架信息create table 书架信息(书架号 char(10) primary key not null,书架名 char(10) )(8)供应信息create table 供应信息(书号 char(10) foreign key references 图书信息 not null,出版社名 char(20) foreign key references 出版社信息 not null,数量 int not null primary

29、 key(书号,出版社名)(9)投稿信息create table 投稿信息(姓名 char(8) foreign key references 作者信息 not null,出版社名 char(20) foreign key references 出版社信息 not null,投稿日期 datetime not null,primary key(姓名,出版社名)(10)作者信息create table 作者信息(姓名 char(8) primary key not null,性别 char(10) not null,联系方式 char(20)5.1.3 创建索引(1)考虑到在连接中会频繁使用到表

30、 图书管理.读者信息中的“姓名”和“借书证号”两列,同时“借书证号”列已经存在唯一索引,所以在表图书管理.读者创建一个名为“读者情况”的非聚簇索引,索引关键字为“姓名” 、 “借书证号” 。命令如下:create nonclustered index 读者情况 on 读者信息(借书证号,姓名)(2)在表图书上创建名为“图书情况”的非聚簇索引,索引关键字为“书名” 、 “书号” 。命令如下: create nonclustered index 图书情况 on 图书信息(书号,书名)(3)在表借阅信息上创建名为“借阅时间”的非聚簇索引,索引关键字为“借书日期” ”。命令如下:create nonc

31、lustered index 借阅时间 on 借阅信息(借书日期)(4)在表归还信息上创建名为“归还时间”的非聚簇索引,索引关键字为“借书日期” ”。命令如下:create nonclustered index 归还时间 on 归还信息 (归还日期)(5)在表出版社信息上创建名为“出版社情况”的非聚簇索引,索引关键字为“出版社名” ”。命令如下:create nonclustered index 出版社情况 on 出版社信息(出版社名)(6)在表书架信息上创建名为“书架情况”的非聚簇索引,索引关键字为“书架号” 。命令如下:create nonclustered index 书架情况 on 书

32、架信息(书架号)(7)在表投稿信息上创建名为“投稿时间”的非聚簇索引,索引关键字为“投稿日期” ”。命令如下:create nonclustered index 投稿时间 on 投稿信息(投稿日期)(8)在表作者信息上创建名为“作者情况”的非聚簇索引,索引关键字为“姓名” ”。命令如下:create nonclustered index 作者情况 on 作者信息(姓名)5.1.4 数据库关系图为“图书管理”数据库创建关系图1) 打开企业管理器,并在窗口中选中“图书管理”数据库,在内容窗口中使用鼠标右键单击“关系图”项目,在弹出的快捷菜单中选择“新建数据库关系图”命令2) 在打开的“创建数据库关

33、系图”对话框向导中单击“下一步”按钮,打开向导的选择数据表对话框,在对话框的“可用的表”列表框中分别双击“图书” 、 “出版社” 、 “借阅信息”和“读者”数据表,将其铁甲到“要添加到关系图中的表”列表框中3) 单击“下一步”按钮,打开向导的完成信息对话框,单击“完成”按钮关闭向导。 (因为已经创建了“图书” 、 “出版社” 、 “借阅信息”和“读者”数据表之间的关联,所以向导自动绘制出了表之间的关系连线。准备表“读者信息”数据“读者信息”数据可以使用记事本创建,如图,注意各个数据项之间使用用以的分隔符,如英文的逗号活空格,一个记录数据为一行。将文件保存为“读者信息.txt ”。1、 在开始菜

34、单中选择 Microsoft SQL Server导入和导出数据。2、 单击下一步按钮,打开向导的选择数据源对话框。在“数据源”下拉列表框中选中“文本文件”选项,在“文件名”文本框中找见“读者信息.txt” 。3、 单击下一步按钮,打开向导的选择文件格式对话框。因为“读者信息.txt ”名单中的数据使用逗号分隔,每个记录占一行,文本数据没有使用限定符,所以首先应选中“带分隔符,各列之间可用任何字符分隔”单选项。然后在“文本限定符”下拉列表中选中“无”选项。4、 单击下一步按钮,打开向导的指定列分隔符对话框。这里在读者文件中使用的是逗号分隔各个数据项,所以无需在此修改。5、 单击下一步按钮,打开

35、向导的选择目的对话框,向导默认将数据导入到 SQL Server 数据库,所以只需在“数据库”下拉列表中选中“成绩管理”数据库。6、 单击下一步按钮,打开向导的选择源表和视图对话框。单击浏览按钮课查看文本文件的源数据,单击按钮,课打开“列映射和转换”对话框。7、 选中“在目的表追加行”单选项,表示将文本文件中的数据添加到数据表中,单击确定。8、 单击下一步按钮,打开向导的保存、调度和复制包对话框。选中“立即运行”复选框,表示向导会执行数据导入操作。9、 单击下一步按钮,打开向导的完成信息对话框,单击完成,执行数据导入操作。(2)学习心得通过本次课程设计,我们进一步了解数据库的基本概念、原理和技

36、术,结合实际的操作和设计,巩固了课堂的教学内容,将理论与实际相结合,加强了自我实践意识、提高了实际动手能力和创新能力。由于本次课程设计的内容有点多,因此我们四人分工完成了所有工作,途中也遇到了不少问题,例如如何画出准确的 E-R 图、如何将 E-R 图转换成关系模式、对索引的概念和功能的了解以及怎样创建索引等。通过自我查找书籍和利用互联网这个自我学习的平台,我们顺利解决了大部分问题。通过互联网上有用的资料,我们认识到要获得有效地 E-R 图,需局部的 E-R 图,再合并各局部 E-R 图并解决冲突,最后得到有效的总体 E-R 图。而索引是刚开始一直困扰我们的难点,可能是我们上课不专心没有听到老师的讲解。同时,我们在课本找不到对索引的详细解析。因此,我们通过互联网详细了解了它的概念、功能、类型以及怎样创建,使课程设计顺利进行下去。这次课程设计能够完满完成,最主要是因为我们的团结合作和老师的悉心教导。如果没有我们组的团结合作,如果没有老师平时为我打下坚实的基础和热情地帮助我们解决遇到的各种问题,我们是无法完成这次课程设计的。所以,我在这里衷心地感谢老师和我们组的成员!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报