第10章图书借阅管理系统Word格式文档下载.docx
- 文档编号:17855024
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:140
- 大小:408.27KB
第10章图书借阅管理系统Word格式文档下载.docx
《第10章图书借阅管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第10章图书借阅管理系统Word格式文档下载.docx(140页珍藏版)》请在冰豆网上搜索。
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)若查找到该图书,则予以借出。
还书过程如下。
(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
读者序号
number
读者用户名,主键
读者姓名
读者密码
college
读者学院
subject
读者年级
grade
读者专业
3.图书表Book
图书表book用来保存图书信息,结构如表10-3所示。
表10-3图书表book
图书序号
图书编号,主键
bookname
图书名称
publish
出版社
author
作者
isbn
数字
国际统一编号
price
定价
lend
是否借出。
4.借阅表Lendbook
借阅表Lendbook用来保存读者借阅信息,结构如表10-4所示。
表10-4借阅表borrow
借阅序号,主键
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("
数据库未连接"
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 图书 借阅 管理 系统