第10章图书借阅管理系统.docx
- 文档编号:4901912
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:140
- 大小:408.27KB
第10章图书借阅管理系统.docx
《第10章图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《第10章图书借阅管理系统.docx(140页珍藏版)》请在冰豆网上搜索。
第10章图书借阅管理系统
第10章图书借阅管理系统
课前导读
随着计算机的广泛运用、网络技术的飞速发展,利用计算机来管理信息成为社会发展的趋势。
图书管理系统的开发就是为了摆脱以往人工操作的诸多不便,实现图书、工作人员与读者信息的微机化管理。
图书管理系统的实施,很大程度上提高了图书信息资源的利用率,减轻了工作人员的工作强度,提高了他们的工作效率,也使管理更加科学、完善,使得读者能够更加方便的对图书进行个性化的管理。
本章将以第二篇项目驱动篇所介绍的内容为基础,对以上内容进行总结,并对系统功能进行分析和设计,系统讲解图书借阅管理系统的开发,该系统可以实现图书或读者信息查询、图书信息管理、图书借阅管理、用户管理等功能。
重点提示
本章重点讲解系统流程、模块功能、数据库设计以及系统各个模块的具体实现。
通过对本系统模块功能分析、系统流程设计、数据库设计和功能模块实现的学习,使读者深入掌握Java面向对象的编程的精髓,能够独立开发简单的Java程序应用系统。
本章重点内容如下:
Ø模块功能分析
Ø系统流程分析
Ø数据库设计
Ø各模块实现
10.1系统分析
10.1.1需求分析
在当今这个知识经济时代,知识的大爆炸带来了图书业的大发展,图书数量的急剧增加,但是书籍的增多也给图书管理带来了很大不便,图书管理系统开发的目的就是要解决图书管理的问题。
本系统需要实现图书管理系统的基本功能。
该系统能够对读者和图书进行管理,对借书和还书进行管理。
在对用户操作时,操作者可以依据用户编号或姓名进行用户管理;对图书操作时,操作者可以依据图书序列号或图书名对图书进行管理。
该系统会提高图书管理工作者的工作效率和工作能力,减少工作人员的出错率,减少读者的借阅时间,让其把更多的时间用在选择书和看书上。
图书管理系统需要具备以下主要功能:
Ø用户管理:
将用户信息存储于系统中,管理员可以管理用户,如查询用户、添加新用户、修改和删除用户等;
Ø书籍管理:
将图书信息存储于系统中,管理员可以添加新书、修改错误书和删除不存在的书,并可以查阅图书被借阅的情况;
Ø借阅管理:
管理员帮用户操作借书、还书,并可以查询用户借阅图书的情况;
10.1.2可行性分析
以前,图书馆采用手工方式对图书借阅信息进行管理,将借阅情况记录在借书证上,将图书数目和内容记录在文件中,这样,随着资料的增多,时间的增长,再查询时,就需要在众多的资料中查找,即费时又费力,手工操作使得图书借阅信息的管理工作混乱而复杂。
基于以上问题,开发一个智能化的、操作简单、使用方便的图书管理系统是非常有必要的。
图书管理系统使图书管理工作规范化、系统化、程序化,避免手工管理的繁琐工作,减少出错的概率,提高信息处理的速度和准确性。
图书管理系统是一个典型的数据库应用系统,主要涉及数据读写和数据的传递,利用Eclipse工具,采用Java语言进行开发不存在技术方面的问题。
10.1.3开发及运行环境分析
硬件平台:
ØCPU:
P1.60GHz;
Ø内存:
512M以上;
软件平台:
Ø操作系统:
Windows2000/WindowsXP/Windows2003/Windows2008;
Ø数据库:
SQLServer2005;
Ø开发工具:
JDK1.6.0Eclipse3.4;
10.2系统设计
目前开发系统常用的技术架构主要有两类:
C/S(Client/Server)模式和B/S(Browser/Server)模式。
C/S模式就是客户机/服务器模式。
在这种模式下,可以充分利用客户机和服务器的硬件环境优势,将任务合理分配到客户机端和服务器端来实现,降低了系统的通讯开销。
在C/S模式下,应用服务器运行数据负荷较轻,但是C/S模式的劣势是高昂的维护成本,且投资大。
B/S模式就是浏览器/服务器模式。
在Browser/Server模式下,用户主要通过客户端浏览器,浏览系统的工作界面,极少部分事务在浏览器端(Browser)实现,主要事务在服务器端(Server)实现。
Browser/Server模式通过Internet进行通信,不受地域的限制,减轻了系统维护与升级的成本和工作量。
图书借阅管理系统属于图书馆内部的一种管理系统,通过内部网络处理和交换信息,C/S(Client/Server)模式采用发放结构、解决数据库共享问题,本例采用C/S模式,客户端运行Java客户端程序,服务器端运行Java服务器端程序如图10-1所示。
图10-1系统运行总体结构
10.2.1系统流程
系统图书借阅流程如图10-2所示。
图10-2系统图书借阅流程图
借书过程如下。
(1)用户将图书和借阅卡(或卡号)交给管理人员;
(2)管理人员将图书和借阅卡上的号码输入系统;
(3)系统依据借阅卡号作为借阅条件进行查找;
(4)若查找到该用户,则依据图书编码查找图书;
(5)若查找到该图书,则予以借出。
还书过程如下。
(1)用户将图书和借阅卡(或卡号)交给管理人员;
(2)管理人员将图书和借阅卡上的号码输入系统;
(3)系统依据图书编码作为查询条件进行查找;
(4)若查找到该图书被借阅记录,则正常归还图书,并记录还书时间。
10.2.2模块功能结构分析
根据系统的设计要求,图书管理系统实现了五个完整的功能。
根据这些功能要求,设计的系统功能模块如图10-3所示。
图10-3系统功能模块
该系统需要添加图书、修改图书、删除图书、添加用户、修改用户、删除用户、借阅图书、归还图书和查阅图书等过程。
图书管理系统各模块功能要求分析如下:
用户登录要求
该模块实现对管理员用户登录的验证、标识,为用户对系统的操作提供授权依据,在这一模块中,首先要求管理员输入自己的登录用户名和登录密码,然后系统对用户名和密码进行验证,判断用户的身份。
用户管理要求
由于用户众多,为了方便每个用户借阅,该系统需要存储每个用户的基本信息,以便用户借书时通过用户名从数据库中快速调出用户信息,用户基本信息包括用户名、姓名、密码、学院、专业、年级等,管理员可以添加新用户、查询拥护、修改用户和删除用户
图书管理要求
为了方便书籍的管理,需要把每本书的相关信息添加到数据库,以便通过书号从数据库中快速调出用户信息,图书基本信息包括书号、作者、出版社、出版年月等,管理员可以添加图书、查询图书、修改图书和删除图书。
借阅管理要求
通过本系统,图书管理员可以进行图书借阅登记和图书归还登记,并可以查询图书被借阅的情况。
10.3数据库设计
图书借阅系统不仅要求数据库功能强大,而且要有很好的安全保障机制。
SQLserver数据库是当前应用最为广泛的数据库,它可以很好的支持各种信息,而且具有较高的数据安全保障,是一般公司、企业首选的数据库之一,本系统采用SQLserver数据库。
10.3.1E-R图
E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是实体型、属性和联系,其表示方法为:
Ø实体型(Entity):
用矩形表示,矩形框内写明实体名,比如在本系统中数据库的实体为用户和书籍等。
Ø属性(Attribute):
用椭圆形表示,并用无向边将其与相应的实体连接起来,比如书籍的作者、出版社和书号等。
Ø联系(Relationship):
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
n或m:
n)。
比如图书和借阅的关系就是1:
N的关系,一本书可能被多次借阅。
本系统所用到的数据库表的E-R图如图10-4所示。
图10-4数据库E-R图
10.3.2数据表结构分析
根据系统的设计要求和模块功能,进行数据库的分析和设计。
本节,将介绍图书管理系统所用到的数据库结构。
从以上分析可知,系统拥有图书管理员、用户(读者)、图书等实体。
在数据库中,可以使用表描述这些实体。
另外还需要存储图书借阅记录,也需要用表来表示,这些表的名称以及表的说明如下。
Ø管理员表Admin;
Ø用户(读者)表Users;
Ø图书表Book;
Ø借阅表Lendbook。
这些表之间存在一定的关联关系。
具体的关联关系如下所示:
Ø读者可以借阅、归还图书;读者借阅的图书保存在借阅表Lendbook中。
读者表Users和借阅表Lendbook通过读者序号进行关联;
Ø图书表Book和借阅表Lendbook可以通过图书序号进行关联;
Ø图书管理员可以对图书进行借阅和归还管理。
图书管理员表Admin和借阅表Lendbook可以通过图书管理员序号进行关联;
这些表的详细信息介绍如下。
1.管理员表Admin
管理员表Admin用来保存管理员用户信息,结构如表10-1所示。
表10-1管理员表Admin
字段名称
数据类型
说明
ID
自动编号
管理员序号
num
文本
管理员用户名,主键
name
文本
管理员姓名
password
文本
管理员密码
remark
文本
说明
2.图书用户表users
图书用户表users用来保存图书用户信息,结构如表10-2所示。
表10-2图书用户表user
字段名称
数据类型
说明
ID
自动编号
读者序号
number
文本
读者用户名,主键
name
文本
读者姓名
password
文本
读者密码
college
文本
读者学院
subject
文本
读者年级
grade
文本
读者专业
remark
文本
说明
3.图书表Book
图书表book用来保存图书信息,结构如表10-3所示。
表10-3图书表book
字段名称
数据类型
说明
ID
自动编号
图书序号
number
文本
图书编号,主键
bookname
文本
图书名称
publish
文本
出版社
author
文本
作者
isbn
数字
国际统一编号
price
文本
定价
lend
文本
是否借出。
4.借阅表Lendbook
借阅表Lendbook用来保存读者借阅信息,结构如表10-4所示。
表10-4借阅表borrow
字段名称
数据类型
说明
ID
自动编号
借阅序号,主键
bnumber
文本
图书编号
unumber
文本
借阅者用户名。
lendtime
文本
借书时间
Returntime1
文本
应还书时间
Returntime2
文本
还书时间
breturn
文本
是否归还
10.4连接数据库模块
系统所需要的信息都存储在数据库中,例如图书信息、读者信息、借阅信息等,要对这些信息进行操作,就必须连接数据库,为了省去每次操作都要编写连接数据库程序,我们把连接数据库操作封装到一个类jdbcfile.java中,在不同的模块中调用这个类就可以对数据库进行连接,执行相应的数据库操作,这样使得连接数据库安全高效,程序代码简洁清晰,也符合Java面向对象的思想。
连接数据库类jdbcfile.java的代码如下:
1importjava.sql.*;
由于类中要用到java.sql包中的类,因此这里首先要引入包。
2publicclassjdbcfile{
3//声明变量
4Connectionconn;
5Statementstmt;
6intinorupdatevalue=-1;
以上代码用于声明类中所使用到的变量。
7//声明构造方法,并抛出异常
8publicjdbcfile()throwsException{
9try{
10Stringdrivername="com.microsoft.sqlserver.jdbc.SQLServerDriver";
11StringdbURL="jdbc:
sqlserver:
//localhost:
1489;DatabaseName=book";
12//加载驱动程序
13Class.forName(drivername);
14//创建数据库连接Connection对象
15conn=DriverManager.getConnection(dbURL,"sa","123");
16//创建Statement对象
17stmt=conn.createStatement();
18}catch(ClassNotFoundExceptione){
19//捕获异常
20thrownewException("数据库驱动未找到"+e.getMessage());
21}catch(SQLExceptione){
22//捕获异常
23thrownewException("数据库未连接"+e.getMessage());
24}
25}
以上代码用于连接数据库,首先,第13行加载数据库驱动程序,然后,第15行创建一个数据库连接,为执行SQL语句,第17行创建一个Statement对象,由于在连接数据库时可能产生异常,因此,在第18行和21行分别捕获异常。
26//定义查询数据的方法
27publicsynchronizedResultSetexecuteQuery(Stringsql)throwsException{
28ResultSetrs=stmt.executeQuery(sql);
29returnrs;
30}
31//定义插入数据的方法
32publicsynchronizedintinsert(Stringsql)throwsException{
33inorupdatevalue=stmt.executeUpdate(sql);
34returninorupdatevalue;
35}
36//定义修改数据的方法
37publicsynchronizedintupdate(Stringsql)throwsException{
38inorupdatevalue=stmt.executeUpdate(sql);
39returninorupdatevalue;
40}
41//定义删除数据的方法
42publicsynchronizedintdel(Stringsql)throwsException{
43inorupdatevalue=stmt.executeUpdate(sql);
44returninorupdatevalue;
45}
46//定义关闭数据库连接的方法
47publicvoidclose()throwsException{
48conn.close();
49}
以上代码用于定义查询数据、插入数据、修改数据、删除数据和关闭数据库连接的方法,插入修改和删除使用的是同一个方法executeUpdate(),也可以只定义一个方法,这里为了表达清楚,使读者容易理解,定义了以上三个方法。
50}
10.5管理登录模块
为保证系统的完全性,只有管理员才可以对系统进行操作,因此,需要对用户登录信息进行验证,管理员的用户名和密码存放在数据库中,通过文本框获得用户输入的用户名和密码,然后与数据库中的用户名和密码进行比较,如果匹配,则进入系统,否则提示用户名和密码不正确。
10.5.1管理登录界面
管理登录界面主要用于输入用户名和密码,以便与数据库中的用户名和密码进行比较,界面主要包括两个标签、文本框和两个按钮,如图10-5所示。
图10-5管理登录界面
10.5.2管理登录技术实现
1.图形用户界面的具体实现
1importjava.awt.*;
2importjava.awt.event.*;
3importjava.sql.*;
4importjavax.swing.*;
以上代码用于导入以下程序所用到的包。
5publicclassLoginextendsJFrame{
6//声明标签、按钮、文本框和密码框
7privateJLabelJLb1;
8privateJLabelJLb2;
9privateJButtonOk_btn;
10privateJButtonCancel_btn;
11privateJTextFieldjtflduser;
12privateJPasswordFieldjtpwdfld;
13//声明窗口
14privateJFrameframe;
15//构造方法
16publicLogin(){
17frame=newJFrame("登录");
18Containercontent=frame.getContentPane();
19//采用GridLayout布局管理器
20content.setLayout(newGridLayout(3,2,20,20));
21JLb1=newJLabel("用户名");
22JLb2=newJLabel("密码");
23//将标签置于居中位置
24JLb1.setHorizontalAlignment(SwingConstants.CENTER);
25JLb2.setHorizontalAlignment(SwingConstants.CENTER);
26jtflduser=newJTextField();
27jtpwdfld=newJPasswordField();
28Ok_btn=newJButton("确定");
29Cancel_btn=newJButton("取消");
30//为按钮增加事件监听者
31Ok_btn.addActionListener(newActionHandler());
32Cancel_btn.addActionListener(newActionHandler());
33//添加标签、文本框和密码框到窗口
34content.add(JLb1);
35content.add(jtflduser);
36content.add(JLb2);
37content.add(jtpwdfld);
38content.add(Ok_btn);
39content.add(Cancel_btn);
40frame.pack();
41//设定登录窗口启动时出现在屏幕中央位置
42frame.setLocationRelativeTo(null);
43frame.setSize(300,200);
44frame.setVisible(true);
45}//Login()method
Login类继承了JFrame,因此可以显示,在Login类中,首先声明标签、按钮、文本框、密码框和一个JFrame窗口,然后通过构造方法创建标签、按钮、文本框、密码框,并添加到窗口容器中,最后设置窗口的大小和可见性。
在程序的第31和32行,为按钮注册事件监听者,当单击按钮时产生事件。
2.处理监听者事件
当单击按钮时产生按钮单击事件,按钮把事件对象传递给监听者,事件监听者要监听到该事件,就要在程序中加入一个能够“听到”该事件的接口,实现这个接口并处理监听到的事件。
46/**
47*实现ActionListener监听,激活组件响应
48*/
49classActionHandlerimplementsActionListener{
50publicvoidactionPerformed(ActionEvente){
51Stringstr1,str2,sqlStr;
52Objectobj=e.getSource();
53//获得文本框和密码框的数据
54str1=jtflduser.getText().trim();
55str2=newString(jtpwdfld.getPassword()).trim();
56try{
57//点击确定按钮
58if(obj.equals(Ok_btn)){
59if(str1.equals("")){
60JOptionPane.showMessageDialog(frame,"用户名不能为空!
");
61return;
62}
63//创建数据库连接
64jdbcfileconn=newjdbcfile();
65//产生登录sql语句
66sqlStr="select*fromAdminwherenum='"+str1+"'andpassword='"+str2+"'";
67ResultSetresult=conn.executeQuery(sqlStr);
68if(result.next()){
69//弹出对话框提示登录成功
70JOptionPane.showMessageDialog(frame,"登录成功!
");
71//打开图书管理主页面
72bookmainbookmain1=newbookmain();
73bookmain1.go();
74//关闭登录窗口
75frame.dispose();
76//关闭数据库连接
77conn.close();
78}else{
79JOptionPane.showMessageDialog(frame,"用户名或密码错误");
80}
81
82}elseif(obj.equals(Cancel_btn)){
83//点击取消按钮
84System.exit(0);
85}
86}catch(ClassNotFoundExceptionce){
87//捕获异常
88System.out.println("SQLException:
"+ce.getMessage());
89}
90catch(SQLExceptionex){
91//捕获异常
92System.out.println(ex);
93}
94catch(Exceptions){
95//捕获异常
96s.printSta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 图书 借阅 管理 系统