第10章图书借阅管理系统.docx

上传人:b****4 文档编号:4901912 上传时间:2022-12-11 格式:DOCX 页数:140 大小:408.27KB
下载 相关 举报
第10章图书借阅管理系统.docx_第1页
第1页 / 共140页
第10章图书借阅管理系统.docx_第2页
第2页 / 共140页
第10章图书借阅管理系统.docx_第3页
第3页 / 共140页
第10章图书借阅管理系统.docx_第4页
第4页 / 共140页
第10章图书借阅管理系统.docx_第5页
第5页 / 共140页
点击查看更多>>
下载资源
资源描述

第10章图书借阅管理系统.docx

《第10章图书借阅管理系统.docx》由会员分享,可在线阅读,更多相关《第10章图书借阅管理系统.docx(140页珍藏版)》请在冰豆网上搜索。

第10章图书借阅管理系统.docx

第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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1