完整图书馆管理系统(包含设计思路、图形界面、后台数据库)

面向对象技术》课程综合性实验报告

 

开课实验室:基础一实验室                                   2018 11 18

实验题目

图书馆管理系统

实验题目:

图书馆管理系统

实验目的:

1、掌握面向对象分析与设计的思想与方法。

2、使用UML进行系统的面向对象分析与设计:用例图,类图,顺序图,状态图,活动图,组件图等。

3.系统功能用Java或C++语言实现,并与后台数据库连接,实现系统的基本功能。

扫描二维码关注公众号,回复: 4709961 查看本文章

实验设备及环境:

硬件:多媒体计算机

软件:Windows7操作系统、Rational Rose建模工具

实验内容及要求:

工资管理:在取得授权的情况下,有关人员要进行如下工作。

(1)书籍信息录入

图书管理员录入书籍的书号、名称,修改录入的出错(维护),形成图书表。

(2)读者信息录入

系统管理员录入读者的个人信息,修改录入的出错(维护),形成读者表。

(3)借阅情况的录入

图书管理员在读者借阅图书时录入信息,修改录入的出错(维护),形成借阅表和历史借阅表。

(4)计算扣款金额

图书管理员按读者借书时间、还书时间和借阅时长判断读者是否需要扣费,然后生成信息到历史借阅表中。 

(5)读者、图书管理员及图书信息的查询

读者可以根据自己的读者号查询自己的个人信息;图书管理员可以根据自己的管理员号查询自己的个人信息(包括工资);所有人都可以登录之后无条件查询图书的信息包括馆藏册数。

完成步骤和要求:

完成用户需求的分析,找出系统的执行者、用况,画出用况模型图(包括用例描述)。

找出系统的概念类,建立基本模型。

建立系统顺序/通信图,找出系统与外界交互的消息。

建立系统活动图,找出系统的主要业务流程与关键操作流程。

建立系统中主要对象的状态机图,找出对象在其生存期内因响应事件所经历的状态序列。

给出系统的问题域部分设计的思路,结合2建立类设计模型图。

给出系统的关键界面设计图,并予以说明。

给出数据管理部分的设计结果。

给出控制驱动部分的设计思路。(可选)

设计系统的构件图和部署图。(可选)

四、实验结果及分析

1. 根据用户的需求画出用况图:

 

在本系统中一共包含了三个参与者:

其中读者的主要用例包括查询读者账户(即查询自己的个人信息以及查询自己的账户和借阅情况)、借书、还书和查询图书信息。

图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。

系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能。

另外,图书管理员和系统管理员都继承于图书馆内部人员这个父类。

2.根据用况图建立本系统的类图:

 

本系统一共设计了七个类:    。

读者类:属性包含(1)读者证号 (2)密码 (3)最大借书数量

方法包括(1)借书 (2)还书 (3)查看用户账户 (4)查看借书数量 (5)登录系统

    (5)查询图书信息 (6)交罚款

    图书管理员类:属性包含(1)管理员帐号 (2)密码

方法包括(1)查询图书信息(2)修改图书信息

    书架类:属性包含(1)书架号 (2)类型(3)位置(4)存放数量

方法只有 存放图书

图书类:属性包含(1)书号(2)书名(3)数量(4)价格(5)出版社

(6)馆藏册数(7)在馆册数

系统管理员类:属性包含 值班时间

     方法包括(1)查看用户个人信息(2)修改用户个人信息

后台系统类:属性包含(1)级别(2)配置

     方法包括(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息

Item类:属性包含 id

     方法包括(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数

其中,图书管理员类和系统管理员类是工作人员类的子类,图书管理员在继承了其父类的属性和操作以外还自己添加了管理员帐号和密码这两个属性,添加了查询图书信息和修改图书信息这两个操作。系统管理员在继承了父类的基础以外还添加了值班时间这个属性,以及查看用户个人信息和修改用户个人信息这两个操作。

另外,读者类和工作人员类是Person类的子类,读者在继承了其父类的属性和操作以外还自己添加了读者证号、密码和最大借书数量这几个属性,添加了借书、还书、查看用户账户、查看借书数量、登录系统、查询图书信息和交罚款这些操作。工作人员在继承了其父类的属性和操作以外还自己添加了工资和管理范围这两个属性,添加了登录账户、查询用户借阅信息、管理借书记录、管理还书记录、查看用户账户这些操作。

Person类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于Person类,这就简化了这两个子类的属性。

类之间的关系先从图书管理员讲起,图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看Item,Item类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个Item,因此,在类图中Item与后台系统之间是一种聚合的关系,而读者也可以查看Item,因为当读者在完成借阅之后,Item便可以证明借书是否成功以及后台系统是否发生故障。

除了图书管理员之外,同样继承于工作人员的系统管理员类也与其他类有着很多联系,比如说系统管理员同样与图书类有着维护与被维护这样的关系,但与图书管理员不同的是,系统管理员只负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。另外,系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。

 

 

3.用户登录的时候的时序图:

 

 

 

 

 

 

 

    借书过程的时序图:

上图表示了读者在进行借阅操作时的一系列变化,读者在进行借书操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将读者的帐号和密码进行比对,进行身份验证,并将验证的结果返回给读者。如果身份验证成功则用户登录成功,反之读者登录失败。

然后,读者可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,后台系统查看对应图书的馆藏册数,并根据馆藏信息,返回该图书是否可借阅。若可借阅,则图书管理员可在此时修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间。

此时,后台系统调用其Item功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。

 

还书过程的时序图:

用户在还书的时候也需要登录,在登录的时候,首先需要输入自己的信息包括帐号和密码,显示器讲这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果返回给用户。如果身份验证成功则用户登录成功,反之用户登录失败。

借阅者在登录成功之后,可以向图书管理员发送还书请求,图书管理员在接收到还书请求之后,需要进入后台系统查看该借阅者是否超期借阅,后台系统返回超期的信息,若借阅者还书的时间超过了应还的时间,后台系统则自动生成一张扣款账单,由图书管理员返回给借阅者。

之后借阅者需要支付扣款的金额,支付完毕后,图书管理员需要修改借阅信息,即进入后台数据库的借阅表删除这条借阅信息,后台系统自动将删除的借阅信息添加到后台数据库的历史借阅表中。另外,后台系统还需要修改图书的馆藏册数,将所还图书的馆藏册数加一,并返回馆藏信息。

最后,借阅者可以归还实体的图书,图书管理员将会请求生成一张还书书单,后台系统启用其Item功能生成一张还书书单并返回给读者,整个还书操作结束。

 

4.进行还书操作时的活动图:

读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。

图书管理员在后台系统返回可借阅信息之后修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间,与此同时,后台系统调用其Item功能,当图书管理员修改完借阅信息之后,后台系统生成一张纸质书单。

完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。

 

5.读者从未登记到还书成功时的状态图:

读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。

注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于10本时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。

若借阅者处于未还书状态超过2个月,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。

此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于10本时,才可以继续借阅,若是读者借书数量大于10本,则直接结束,无法再借。

 

6.系统的界面设计:

系统的页面包括主界面、录入界面、查询所有学生界面和查询单个学生界面。

主界面:是所有分界面的总和,所有的分界面都展示在主界面上。

 

录入界面:将新入学的学生录入到图书管理系统中,同时注册自己的账号,用账号登录到系统后,即可以查询自己的借书记录。

查询所有学生界面:图书管理员可以通过“查询所有”这个界面来查询所有借阅者的信息以及借书的数量。

 

查询单个学生界面:通过输入单个借阅者的姓名来查询对应借阅者的借阅信息。

 

 

 

 

7、后台数据库管理部分的设计结果

主要设计了7个表,具体表结构如下:

图书表

字段名称

数据类型

长度

说明

书号

VARCHAR2

15

主码

书名

VARCHAR2

20

非空

  作者

VARCHAR2

  10

-

类型

VARCHAR2

15

依赖于书架类型表中的类型字段

价格

FLOAT

  -

-

出版社

VARCHAR2

40

-

摘要

VARCHAR2

50

-

馆藏册数

NUMBER

-

-

在馆册数

NUMBER

-

小于馆藏册数

存放位置

VARCHAR2

5

-

被借次数

NUMBER

-

判断图书是否受欢迎的标准

 

读者表

字段名称

数据类型

长度

说明

卡号

VARCHAR2

15

主码

姓名

VARCHAR2

20

   -

性别

CHAR

2

为“男”或“女”

单位

VARCHAR2

40

   -

类型

VARCHAR2

  10

依赖于读者类型表中的类型字段

级别

NUMBER

-

用来记录该学生借阅的数量

在借册数

NUMBER

-

   -

 

 

 

读者类型表

字段名称

数据类型

长度

说明

类型

VARCHAR2

10

主码

借书时间

DATE

   -

 

最多在借册数

NUMBER

   -

 

 

正借阅表

字段名称

数据类型

长度

说明

书号

VARCHAR2

15

主码

卡号

VARCHAR2

15

借书时间

DATE

   -

 

已还表

字段名称

数据类型

长度

说明

书号

VARCHAR2

15

主码

卡号

VARCHAR2

15

借书时间

DATE

-

还书时间

DATE

    -

 

书架表

字段名称

数据类型

长度

说明

书架号

VARCHAR2

15

主码

类型

VARCHAR2

15

NOT NULL

 

工作人员表

字段名称

数据类型

长度

说明

工作号

VARCHAR2

15

主码

姓名

VARCHAR2

20

   -

职务

VARCHAR2

20

   -

工资

FLOAT

-

 -

 

五.实验心得体会

     通过本次面向对象的综合实验,我对面向对象的思想有了更加深入的了解。作为一种思想,面向对象是需要进行抽象、提炼、总结的,这也许就是是我之前对面向对象思想认知有鸿沟的原因。但是不可否认的是,认真地学习面向对象的思想,不仅仅对编程有好处,还可以让你能更深入地理解所处的这个世界。

     除此之外,通过使用老师向我们介绍的用例图、类图、顺序图、通信图、活动图以及状态图,我对如何去全面地描述一个实际应用的系统有了更多的方法。之前如果让我独立去完成一个比较全面的系统。我可能会不知道从哪里开始,但经过了这次实验,我会先从用户需求分析开始,然后画一个对应的用例图,再根据用用例图画出其他的图,这看似繁琐,但经过这一个学期我发现这是解决一个综合问题的最有效、最有条理的方式。这就是我对这门课的收获。

     最后,我对面向对象的设计也有了一些初步的认识,由于在面向对象的分析阶段,我针对用户需求已经建立起用面向对象概念描述的系统分析模型,因此在面向对象设计阶段需要更多地考虑如何去实现以及用什么编程语言去实现,这需要进一步运用面向对象方法对系统进行设计。在综合实验中,我主要运用JAVA语言在构造前端界面,用SQL数据库来构造后台,之后再用SQL数据库的JDBC功能将前端界面与后台SQL数据库中的对应表进行连接,最终实现可以进行录入、查询、排序和查找的效果。但是由于时间原因,我的系统还不是很完善,比如说还没有制作登录界面,并根据用户从登录界面输入的信息来判断是否允许用户登录,因此整个系统仍需要进行后续改进。但通过本次综合实验,我真的收获到了很多,思想也变得更加全面了。

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Dimo__/article/details/84936685