收藏 分销(赏)

数据库课设报告-图书馆管理系统.doc

上传人:可**** 文档编号:9900245 上传时间:2025-04-12 格式:DOC 页数:27 大小:798.50KB
下载 相关 举报
数据库课设报告-图书馆管理系统.doc_第1页
第1页 / 共27页
数据库课设报告-图书馆管理系统.doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述
课 程 设 计 课程名称____ 数据库_________ 题目名称 图书馆管理系统 学生学院____计算机学院_________ 专业班级___________ 学 号_____________ 学生姓名______ _________ 指导教师________左亚饶_________ 2013年 1 月 15 日 目录 1.课设概述 3 1.1 课设选题 3 1.2 课设背景 3 1.3 开发环境与工具 4 2.需求分析 4 2.1系统需求概述 4 2.2 功能性需求 4 3.概要设计 5 3.1 系统总体设计 5 3.1.1逻辑结构设计 6 3.1.2软件架构设计 6 3.2 系统功能设计 7 3.2.1总体结构 7 3.2.1功能设计说明 9 3.3 数据库设计 10 3.3.1建库设计 10 3.4 界面设计 11 3.4.1主界面 11 3.4.2子界面A 12 4.详细设计 14 4.1 模块接口设计 14 5.系统测试 18 5.1 各模块测试 18 5.2 测试评价 22 5.3.1 充分性评价 22 5.3.2 缺陷与不足 22 5.3.3 改进建议 22 6.总结体会 23 参考文献 24 27 1.课设概述 1.1 课设选题 图书馆管理系统实例 1.2 课设背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。 尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。 1.3 开发环境与工具 序号 类别 具体需求 备注 1 硬件 内存512M以上 2 软件 Windows xp以上 Sql Server 2000+ eclipse + JDBC 驱动 2. 需求分析 2.1 系统需求概述 设计图书馆信息管理系统要考虑的问题很多。本程序的实例对实际系统作了适当的简化。需求概述如下: ①  系统能对书籍信息进行管理。书籍的信息包括:书籍名称、出版社、作者、出版社地址、出版日期、价格、书籍数量、书籍借出数量。书籍管理功能包括:添加书籍、修改书籍信息、删除书籍。添加书籍时。可设定新书数目,几本完全相同的书籍作为一条记录管理。 ②  系统不需要管理借阅者除姓名外的信息。对每一名借阅者最多可借阅的书籍数目不做限定。 ③  借书时,管理人员记录借书者姓名、借阅书籍名称和借阅日期。 ④  还书时,管理人员记录还书者姓名、归还书籍名和还书日期。系统暂时不设定书籍的最长借阅时间。 ⑤  操作人员可以根据书籍名称、作者、出版社三者之一或者三者的任意组合查询书籍信息。系统暂时不具备模糊查询的功能。 ⑥  操作人员可以查询借阅某书籍的所有借阅者姓名;也可以查询借阅者借阅的所有书籍名称;还可以根据借阅者姓名、书籍名称查询借阅者的借书时间、还书时间。 ⑦  系统由图书馆工作人员操作、图书馆工作人员分为系统管理员、书籍管理员和借阅管理员三类。系统管理员具有所有操作权限;书籍管理员具有书籍管理、查询信息权限但不具备管理借书还书事宜及管理用户权限;借阅管理员具有管理借书还书、查询信息权限,但不具备管理书籍和用户的权限。 ⑧  系统管理员负责管理系统用户,可以增减用户、修改用户密码和删除用户。 ⑨  所有操作人员凭账号和密码登陆系统。 2.3 功能性需求 u 用户登陆 u 用户管理:该功能又包含以下三项子功能: l 添加用户 l 修改用户密码 l 删除用户 u 书籍管理:书籍管理功能包括以下三项子功能: l 添加书籍 l 修改书籍 l 删除书籍 u 借书管理:该功能包括以下两项子功能: l 书籍出借 l 出借信息修改 u 还书管理:该功能包括以下两项子功能: l 书籍还入 l 书籍还入信息修改 u 信息查询:该功能包括以下三项子功能: l 书籍信息查询 l 借阅信息查询 l 系统用户列表 3.概要设计 3.1 系统总体设计 系统包含五大功能:系统管理、书籍管理、借书管理、还书管理、信息查询。每个功能还可以进一步划分为若干个子功能。根据场景和用户权限分析,绘制成一个如图所示的用例总体图。 图书管理系统 3.1.1逻辑结构设计 采用C/S逻辑结构的设计。即每一个用户登录都要输入用户名和密码已验证身份。然后在后台数据库系统查询用户是否存在,返回给用户一个结果。用户根据自己的权限进行相应的操作。 关系模型为(满足第三范式3NF): 用户表UserTable(ID,用户名,用户密码,用户权限), 书籍表books(ID,书名,出版社,作者,地址,日期,价格,网址,购书总数量,已借走数量), 借阅表booksBrowse(ID,名称,出版社,作者,地址,日期,价格,网址,购书总数量,已借走数量)。 ID字段均被设置为“标识”,标识种子为1,增量为1。被设置为“标志”的字段的数据必须为数值类型。 3.1.2软件架构设计 采用Java的软件架构,采用了Java 包中的JDBC链接SQL Server 2000数据库的包。界面GUI设计采用了Java的图形界面设计包如swing和awt组件构成了用户界面。 3.2 系统功能设计 3.2.1总体结构 系统开发了以下用户场景: 场景名称:用户登录 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接 事件流:1 用户单击“用户登录”菜单项 2 系统弹出一个子窗口,用户在子窗口输入登录账号和密码 3 系统查询数据库用户列表,判断此账号是否存在,账号和密码是否吻合 4 如果账户存在并且账号和密码吻合,系统将根据该账号锁对应的操作权限设定用 户所能操作的菜单选项 后置条件:用户已经登录,用户可以操作有权使用的菜单项 场景名称:添加用户 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、用户具有添加新用户的权限 事件流:1 用户单击“用户添加”菜单项 2 系统弹出一个子窗口,用户在子窗口输入新增用户的登入名、登入密码和权限 3 系统向数据库用户表新增一条记录 后置条件:已新增用户,新用户可以使用指定登入名和密码登入 场景名称:修改用户密码 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有修改其他用户密码的权限 事件流:1 用户单击“修改用户密码”菜单项 2 系统弹出一个子窗口,用户在子窗口输入欲修改用户的登入名、原密码和新密码 3 系统向数据库用户表刷新一条记录 后置条件:用户密码已经修改,可进行后续操作 场景名称:删除用户 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有删除其他用户的权限 事件流:1 用户单击“删除用户”菜单项 2 系统弹出一个子窗口,用户在子窗口输入欲删除用户的登入名、密码 3 系统向数据库用户表删除此记录 后置条件:指定用户已经被删除 场景名称:添加书籍 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有添加书籍的权限 事件流:1 用户单击“添加书籍”菜单项 2 系统弹出一个子窗口,用户在子窗口输入欲添加书籍的书籍名称、出版社、作者、出版社地址、出版日期、价格、新增数目、备注 3 系统向数据库书籍表新增一条记录 后置条件:书籍已经添加,可以进行后续操作 场景名称:修改书籍 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有修改书籍的权限 事件流:1 用户单击“修改书籍”菜单项 2 系统弹出一个子窗口,用户在子窗口输入欲修改书籍的书名 3 用户修改书籍的基本信息 4 系统向数据库书籍表刷新书籍记录 后置条件:书籍信息已经修改 场景名称:书籍出借 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有出借书籍的权限 事件流:1 用户单击“书籍出借”菜单项 2 系统弹出一个子窗口,用户在子窗口输入借阅者姓名、借阅书籍名称、借阅日期、备注等信息 3 系统查询数据库书籍表,判断所借书是否还有库存本 4 若有,系统向数据库借阅表新增一条记录 5 系统修改数据库书籍表中该书籍的借出册数 后置条件:书籍借出,借出册数加1 。。。。省略的几个表和上述表类似,这里就不再阐述了。 场景名称:查看用户列表 参与执行者实例:系统用户、本软件系统界面、数据库 前置条件:软件已经打开、数据库已经连接、该用户具有查看用户列表的权限 事件流:1 用户单击“查看用户列表”菜单项 2 系统查询数据库用户表,以表格的形式显示所有用户登入名和权限 后置条件:满足条件的记录已经找到,可以进行其他查询或其他操作 [说明系统按照功能划分的总体结构。可用结构图来描述系统的子系统划分情况;如果待实现系统比较简单,则可以直接描述系统中模块间关系的层次。结构图的基本组成部分是模块,模块用来标识一个功能,在结构图中表示了系统的层次关系和调用关系] 3.2.1功能设计说明 上述几个表很清楚的说明了每一个类到底在干什么和怎么实现的,每一个场景都包括了场景名称,参与执行者的类别说明,前置条件和引起的事件流说明,还有后置条件。这是我设计程序很可靠的保障,这让我思路很清楚而且知道每一个类之间的联系和区别之处。此外还有一个用户权限的设计表: 用户 功能 权限 系统管理员 书籍管理员 借阅管理员 用户登录 √ √ √ 添加用户 √ × × 修改用户密码 √ × × 删除用户 √ × × 添加书籍 √ √ × 修改书籍 √ √ × 删除书籍 √ √ × 书籍出借 √ × √ 修改书籍借阅信息 √ × √ 书籍还入 √ × √ 修改书籍还入信息 √ × √ 书籍信息查询 √ √ √ 借阅信息查询 √ √ √ 查看用户列表 √ × × 3.3 数据库设计 3.3.1建库设计 本软件涉及的对象较多,仅仅构造一个数据库表示无法使数据库表满足第三范式的。因此,根据构造关系数据表的有关理论,我构造了三个数据库表:用户表、书籍表和借阅表。这三个表的字段和字段数据类型如下面所示。 关系模型为(满足第三范式3NF): 用户表UserTable(ID,用户名,用户密码,用户权限), 书籍表books(ID,书名,出版社,作者,地址,日期,价格,网址,购书总数量,已借走数量), 借阅表booksBrowse(ID,名称,出版社,作者,地址,日期,价格,网址,购书总数量,已借走数量)。 3.4 界面设计 3.4.1主界面 根据系统功能,整理出系统菜单,如图所示: 3.4.2子界面A 后面的子界面不再显示了。 4.详细设计 4.1 各模块接口设计 通过了以上分析场景和概要设计之后,现在可以详细绘制各个类流程图和实现过程了。(流程图采用Diagram Designer软件) 下面举例几个关键类的流程图,其他的是类似。 用户登录的流程图: 关键代码: public void actionPerformed(ActionEvent e) { if (e.getSource() == cancelBtn) { mainFrame.setEnable("else"); this.dispose(); } else { char[] password = passwordTextField.getPassword(); String passwordSTR = new String(password); if (userTextField.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "用户名不可为空!"); return; } if (passwordSTR.equals("")) { JOptionPane.showMessageDialog(null, "密码不可为空!"); return; } String strSQL; strSQL = "select * from usertable where UserName='" + userTextField.getText().trim() + "'and Password='" + passwordSTR + "'"; rs = db.getResult(strSQL); boolean isExist = false; try { isExist = rs.first(); } catch (SQLException sqle) { System.out.println(sqle.toString()); } if (!isExist) { JOptionPane.showMessageDialog(null, "用户名不存在或者密码不正确!"); mainFrame.setEnable("else"); } else { try { rs.first(); mainFrame.setEnable(rs.getString("power").trim()); db.closeConnection(); this.dispose(); } catch (SQLException sqle2) { System.out.println(sqle2.toString()); } } 借阅信息查询: 关键代码: public void actionPerformed(ActionEvent e) { if (e.getSource() == clearBtn) { borrowedBookStudentTextField.setText(""); borrowedBookNameTextField.setText(""); borrowedDateTextField.setText(""); borrowedCommentTextField.setText(""); } else if (e.getSource() == cancelBtn) { this.dispose(); } else if (e.getSource() == yesBtn) { try { String strSQL = "select studentName,bookName,borrowDate,com from BookBrowse where studentName='" + borrowedBookStudentTextField.getText().trim() + "'and bookName='" + borrowedBookNameTextField.getText().trim() + "'"; rs = db.getResult(strSQL); if (!rs.first()) { JOptionPane.showMessageDialog(null, "此学生没有借过书!或者没有此书!"); } else { borrowedBookStudentTextField.setText(rs.getString(1).trim()); borrowedBookNameTextField.setText(rs.getString(2).trim()); borrowedDateTextField.setText(rs.getString(3).trim()); borrowedCommentTextField.setText(rs.getString(4).trim()); updateBtn.setEnabled(true); } } catch (Exception ex) { System.out.println(ex.toString()); } } else if (e.getSource() == updateBtn) { String strSQL = "update bookBrowse set borrowDate='" + borrowedDateTextField.getText().trim() + "',com='" + borrowedCommentTextField.getText().trim() + "' where studentName='" + borrowedBookStudentTextField.getText().trim() + "'and bookName='" + borrowedBookNameTextField.getText().trim() + "'"; if (db.updateSql(strSQL)>0) { JOptionPane.showMessageDialog(null, "更新成功!"); db.closeConnection(); this.dispose(); } else { JOptionPane.showMessageDialog(null, "更新失败!"); db.closeConnection(); this.dispose(); } } 其他测试模块请看文件中具体代码。 5.系统测试 5.1 模块测试 在数据库中只保留了一个系统管理员用户,方便操作。 输入用户名和密码。如上图所示的系统用户和密码。 系统菜单全部激活,系统管理员可以进行所有操作。 添加lily为书籍管理员,密码初始化为0000 数据库中发生了相应的变化 添加书籍 相应数据库中发生变化,可见添加了一本书,名字叫做Java 书籍借出,可以看出目前只有一本书可借,因为书库里面只有一本书 从图中可以看出已经借出了一本书 选择借阅信息查询,可以看到名叫libai的学生借了一本书 相应数据库内容发生了变化 还书管理,输入还书者姓名和日期 相应数据库内容发生了变化 用户列表 帮助内容 5.2 测试评价 5.2.1 充分性评价 本图书管理系统基本实现了一个图书馆中的基本功能。在界面上还是做得一般的,没有凸显出一个图书馆界面,但是总体上的感觉还行。各大功能模块的基本功能足够满足每一个用户的需要,能实现对数据库的增删查找功能,使用了Java的JDBC功能来实现。由于自己的数据库水平和Java水平的有限,所以在开发一个图书馆管理系统时还是显得比较乏力。在功能要求上,优点是突出了多级用户权限的功能,这方面是很有必要的也是整个系统最大的特点就是能够有多个权限功能。 5.2.2 缺陷与不足 本系统缺点也是比较多的,如GUI做的不过好,精简了很多图书馆的实际管理功能,数据库设计的不够规范,数据库的逻辑结构和物理结构设计没有考虑完整。虽然我们只是模拟图书馆的管理系统但是实际我们应该考虑更多因素,不仅仅局限于我们所想到的内容。在逻辑结构优化方面做的不够好。整个系统的搜索查找方面没有做够等等。 5.2.3 改进建议 针对GUI界面的设计和数据库优化方面可以做的更好,有些小细节要注意。 6.总结体会 这次数据库的实验可以来说是这三个课程设计中最难得了,因为我们要设计成一个小型数据库来实现某一个现实生活中存在的工作系统。因为要涉及到数据库知识和数据库与某一些高级语言的知识,所以要设计好一个好的小型数据库是不容易的。 总体来说我选择的是我熟悉的Java搭配上实验课所学的SQL Server的知识来构建一个图书馆管理系统。在没有两个星期的设计过程中可以来说是困难重重,因为完全没用过Java的JDBC功能,所以要不断的查找Java的API文档才能了解它的工作原理。还好我挺过来了,实现了与数据库的链接。在图形界面上也就是GUI上面我用Java的强大的图形界面功能,所以大部分时间主要是链接数据库方面,反而在图形界面上我做的不是很好,知识简单设计了一下图形界面,包括各个菜单选项的实现,比较简洁的风格。 这次在数据库的链接方面花了很大功夫,主要是不明白JDBC如何才能连上SQL SERVER 2008,通过不断的找资料和上网查资料最后明白了,我们要先创建一个数据源,该数据源必须属于某一个数据库用户,然后通过JDK本身自带的JDBC ODBC驱动器加载驱动然后指明路径,就可以连上数据库了。虽然花了两天功夫才弄明白,不过我觉得还是值得的,毕竟我以后就不会再犯同样的错误了,而且对于Java有了更深的了解了。 最后终于成功了,不过还是觉得收获很大的。对于以后我们了解一个数据库软件的如何实现有很大的帮助,这是非常必要的。数据库在我们生活中到处都存在,所以要设计好一个数据库要在逻辑结构设计方面下够功夫才行,否则的话会在后面实现阶段吃很大的苦头! 参考文献 1 数据库系统概论(第四版) 王珊 萨师煊著 高等教育出版社 2 Java + SQL Server项目开发实践 苏年乐编著 中国铁道出版社 3 Access 数据库项目案例导航 刘大玮 王永皎 编著 清华大学出版社
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服