数据库课程设计实验报告摘要随着人类社会的不断进步,科学技术有了长足的发展,尤其是在当今中国知识经济时代,知识大爆炸带来了全球图书企业的飞速发展,这些书籍为科技的发展做出了巨大的贡献。人类短短的几十年创造了大量的书籍资源,但是图书数量之多,也使得其管理起来非常的繁琐,随着信息时代的到来,图书的信息化管理使得问题得以解决,图书馆管理系统的出现就显得水到渠成了。本系统主要上可以分为两大模块:图书馆管理员模块和读者登录模块,并在这两大模块下分成多个子模块。图书的使用对象是借阅者,例如学生,教师,管理员;而管理者同时也是图书馆的管理者。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,管理员信息管理,图书浏览,书架管理信息,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。目录:第一章:需求分析1,学生用户端2,教师用户端第二章:总体设计1,系统分析2,可行性分析3,系统目标4,系统功能设计5,构建开发环境第三章:数据库设计1,数据库分析2,项目E-R图3,数据库表的设计第四章:程序模块设计1,用户登录模块2,数据库操纵框架3,登录界面实现4,管理端界面的设计5,查询图书界面模块6,借阅预约图书功能模块7,归还挂失图书功能8,图书超期处理模块9,学生用户管理模块10,,管理员管理模块11,超级管理员功能开发第五章:主要模块界面第六章:程序源代码第七章:参考文献1,需求分析当决定要开发一个信息系统时,首先要对信息系统的需求进行分析,需求分析要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。抽象出当前系统的逻辑模型。在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的困素,去掉那些非本质的困素即可获得反映系统本质的逻辑模型。管理员登录过程:当管理员在登录页面输入正确的用户名和密码后,通过客户端和服务器的双重校验,并且检测数据库中的对应的用户名和密码是否正确,如果是正确的,则表示管理员登录成功并进入管理员操作页面学生用户端:查询图书,学生用户可以进行简单的查询和高级查询,预约图书,当要借的的书不在馆时,可以提前预约。挂失图书,图书丢失要挂失,可以在学生用户端实现。管理员端:学生用户管理,实现学生用户信息的修改,删减,添加,查询。图书管理,包括对图书的增加,删减,查询等。管理员管理:操作者包括超级管理员和普通管理员,超级管理员可以对普通管理员进行删减,查询等操作,而普通管理员只有修改自己密码的权限。借阅管理:主要是学生借阅管理,归还图书和缴纳罚款的管理。2,总体设计系统不但要满足客户提出的要求,同时也要考虑其性能。因此,在项目开发之前,首先要进行需求分析和可行性研究,这就是进行项目开发的基础。利用MVC设计模式,模块间实现高内聚,低耦合。界面设计美观大方,操作简单。功能完善,结构清晰。能够快速的进行图书馆信息,图书馆参数,书架,管理员等信息等系统的设置。能够快速、准确的进行读者类型管理的相关功能,如读者类型增加、修改、删除。能够快速、准确的进行读者档案管理的相关功能,如读者档案的详细信息的查看,读者档案的增加、修改、查询。能够快速、准确的进行图书类型管理的相关功能,如图书类型的增加、修改、删除。能够快速、准确的进行图书档案管理的相关功能,如图书档案的详细信息的查看,图书档案的增加、修改、删除。能够快速、准确的进行图书借阅的相关功能,如图书借阅,图书借阅查询,图书归还,图书续借等。能够快速准确的进行系统的相关功能查询,如图书借阅查询、图书到期查询、图书档案查询等。能够快速、准确的进行管理员的相关功能,如管理员的增加、修改管理员密码、删除管理员。能够快速、准确的进行管理员或者读者的登录。能够快速、准确的让读者进行读者功能模块的浏览。3,可行性研究可行性分析是对项目的可行程度进行分析,以便管理层对资金以及技术的投入进行决策,包括技术可行性,经济可行性,营运可行性。对于本项目而言,图书是人类获取知识最重要的途径,随着读者的日益增加,对图书的管理要求也增大很多,从图书馆的需求以及现有的技术等方面研究该图书管理系统的可行性。当前该图书馆的管理比较粗放,还有大部分需要手工操作,对信息的维护不仅费用高而且工作量大,而且信息的安全性很难得到保障,学校支出了适量的资金进行本系统的开发。使用本系统后大部分工作将实现自动化,图书馆只需花费很少的人力和物力进行系统的维护即可。根据上述分析,公司为此项目结构清晰,功能合理,而且使用JAVASE技术能够进行开发,并实现客户的需求的全部功能,由于这是一个中小型系统,客户要求的开发时间完全充裕,利润与开发成本也比较高,这可在一定程度上提高了公司的效益,因此决定开发此项目。系统功能结构本系统包括学生端和管理员端,有借阅图书,预约图书,查询图书,挂失图书,超期交纳罚款等功能模块,结构如下:3,数据库设计数据库作为系统的基础,首先要保证其设计的合理性,在使用应用系统的时候,拥有设计合理的数据库往往可以起到事半功倍的效果,在系统的维护,功能拓展时,这一优点尤其得到很好的体现。系统包含的实体主要有:图书、学生、管理员等,下面将分别介绍各实体及实体间的E-R图。通过其E-R图读者可以更好地理解各实体的属性关系。下面就以学生实体为例,来进行介绍,学生E-R图如图所示管理员管理员E-R图数据库表的设计主要有学生信息表和管理员信息表还有图书信息表为例字段名称数据类型字段大小是否主键是否为空说明STUNOIntN/A是否学号StuNameVarchar50否是姓名StuAgeIntN/A否是年龄StuSexVarchar50否是性别ClassVarchar50否是班级DepartmentVarchar50否是院系TelChar11否是电话PermittedVarchar50否是借阅许可PasswordVarchar20否是密码学生用户信息表字段名称数据类型字段大小是否主键是否为空说明mgNoIntN/A是否管理员IDPermittedVarchar50否否管理员权限PasswordVarchar50否否管理员密码管理员信息表字段名称数据类型字段大小是否主键是否为空说明BookNo是否图书IDBookName否是图书名称Auther否是图书作者Publishment否是出版社ButTime否是购进日期Borrowed否是是否借阅Ordered否是是否预约图书基本信息表字段名称数据类型字段大小是否主键是否为空说明BookNointN/A是否书号STUNOvarchar50否否学号BorrorTimevarchar50否是借阅时间ReturnTimevarchar50否是归还时间Borrowedvarchar50否是是否借阅Orderedvarchar50否是是否预约借阅图书信息字段名称数据类型字段大小是否主键是否为空说明StuNOIntN/a是否学号BookNOIntN/A否是书号BookNameVarchar50否是书名DelayTimevarchar50否是超期天数超期图书信息表字段名称数据类型字段大小是否主键是否为空说明BookNOIntN/A是否书号StuNamevarchar50否是学生姓名Classvarchar50否是班级BookNamevarchar50否是书名StuNOIntN/A否是学生IDAuthervarchar50否是作者预约图书表如上字段名称数据类型字段大小是否主键是否为空说明LBNOIntN/A是否挂失书号BookNOIntN/A否是书号BookNameVarchar50否是书名StuNOintN/A否是学生ID第四章:程序模块设计1,用户登录模块设计用户登录界面的主要功能是验证登录者的身份和权限,只有学生用户或管理员才能登录与之对应的管理系统。在登录界面,通过对各项登录条件的验证,就可以确认用户的使用权限。下面将介绍登陆模块的具体开发。登录界面开发界面构造器的实现管理员登录模块需要对管理员登录是输入的用户名和密码进行检验,当管理员输入用户名和密码后,系统需要对输入的参数与数据库中的所存储的参数进行对比,当用户名和密码相对应且都正确时能能够成功登录到管理员的操作首页Login.jsp是管理员的登录界面,主要功能是将管理员输入的用户名和密码提交到manager.action进行处理而且能够进行简单的客户端校验。Manager.action是对用户提交的用户名和密码进行服务器端的校验。当用户提交了数据后,manager.action将调用managerdao中的check()检测用户提交的数据是否匹配数据库中的数据,各代码如下所示Login.jsp代码如下:packagewyf.hxl;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.table.*;importjavax.swing.event.*;importjava.sql.*;importjava.util.*;importjava.util.Date;publicclassLoginextendsJFrameimplementsActionListener{privateJPaneljp=newJPanel();//创建JPanel对象privateJLabel[]jlArray={//创建标签组newJLabel(用户IP),newJLabel(端口号),newJLabel(用户名),newJLabel(密码),newJLabel()};privateJButton[]jbArray={//创建按钮数组newJButton(学生登录),newJButton(清空),newJButton(管理员登录)};privateJTextField[]jtxtArray={//创建文本框newJTextField(localhost),newJTextField(3306),newJTextField(10001)};privateJPasswordFieldjpassword=newJPasswordField();//创建密码框Stringsql;DataBasedb;publicLogin(){jp.setLayout(null);//设置JPanel的布局管理器for(inti=0;i4;i++){//对标签与按钮控件循环处理jlArray[i].setBounds(30,20+i*50,80,25);//设置标签与按钮的大小和位置jp.add(jlArray[i]);//将标签和按钮添加进JPanel容器中}for(inti=0;i3;i++){//设置按钮的大小位置并为其添加事件监听器jbArray[i].setBounds(10+i*120,230,100,25);jp.add(jbArray[i]);jbArray[i].addActionListener(this);}for(inti=0;i3;i++){//设置文本框的大小位置并为其添加事件监听器jtxtArray[i].setBounds(80,20+50*i,180,25);jp.add(jtxtArray[i]);jtxtArray[i].addActionListener(this);}jpassword.setBounds(80,170,180,25);//设置密码框的大小位置jp.add(jpassword);//将密码框