数据库课设报告-图书馆管理系统-毕业论文

上传人:仙*** 文档编号:201245919 上传时间:2023-04-19 格式:DOC 页数:23 大小:798.50KB
返回 下载 相关 举报
数据库课设报告-图书馆管理系统-毕业论文_第1页
第1页 / 共23页
数据库课设报告-图书馆管理系统-毕业论文_第2页
第2页 / 共23页
数据库课设报告-图书馆管理系统-毕业论文_第3页
第3页 / 共23页
点击查看更多>>
资源描述
课 程 设 计 课程名称_ 数据库_ 题目名称 图书馆管理系统 学生学院_计算机学院_专业班级_学 号_学生姓名_ _指导教师_左亚饶_ 2013年 1 月 15 日目录1.课设概述31.1 课设选题31.2 课设背景31.3 开发环境与工具42.需求分析42.1系统需求概述42.2 功能性需求43.概要设计53.1 系统总体设计53.1.1逻辑结构设计63.1.2软件架构设计63.2 系统功能设计73.2.1总体结构73.2.1功能设计说明93.3 数据库设计103.3.1建库设计103.4 界面设计113.4.1主界面113.4.2子界面A124.详细设计144.1 模块接口设计145.系统测试185.1 各模块测试185.2 测试评价225.3.1 充分性评价225.3.2 缺陷与不足225.3.3 改进建议226.总结体会23参考文献24231.课设概述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 数据库项目案例导航 刘大玮 王永皎 编著 清华大学出版社
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!