图书管理系统需求分析
图书借阅管理系统需求分析和功能划分
前言:此项目为学校寒假实训项目,需求求分析是老师提供的,仅供学习使用。
1 项目提出
随着计算机的普及和信息技术的发展,人们的生活发生了日新月异的变化,各类计算机软件逐渐渗透到了社会的每个角落,大大地改善了人们的生活质量,提高了人们的工作效率。在高校中,图书借阅是学生获取知识的一个很重要的途径,如何既能方便学生借书,又能减轻图书馆管理人员的工作负担,高效地完成图书借阅管理工作,是一件非常重要的事情。
A高校拥有一个小型图书馆,为全校师生提供学习、阅读的空间。近几年来,随着生源的不断扩大,图书馆的规模也随之扩大,图书数量也相应地打量增加,有关图书借阅的各种信息成倍增加。面对如此巨大的信息量,图书馆管理人员很难支撑,因此,学校领导决定建立一套合理实用的图书借阅管理系统软件,以对校内的图书借阅信息进行统一、集中的管理。
2 需求分析
图书借阅管理系统,能够实现计算机化的图书借阅管理,能够提供方便快速的图书信息检索功能和便捷的图书借阅和归还功能,并且能够对图书信息和读者信息进行管理,方便管理员和读者的借阅处理。要求系统具备以下特点:
(1)操作简单,易用。
(2)数据存储可靠,具备较高的处理效率。
(3)系统安全、稳定。
(4)开发技术先进、功能完备、扩展性强。
2.1功能需求分析
本系统主要实现对图书馆图书借阅信息的管理,主要管理读者信息、图书信息、借阅与归还信息、系统用户的信息。
(1)读者信息管理:能够对读者的基本信息进行管理,包括新增读者,如学校新来一名教师,想要借书,就必须先添加读者信息;读者信息的修改,如学生转到别的专业,此时要修改学生的基本信息;删除读者的信息,比如某个学生中途退学了,可以将其信息删除。查询读者的信息,比如有同学拾到了一张借阅卡,卡上有学生的编号,通过此号来查询学生的联系电话,从而可以找到学生。
(2)图书信息管理:能够对图书的基本信息进行管理,包括新增图书,学校每年会购进新书,此时需要将新书的信息录入系统中;图书信息的修改,如学生借书后将图书丢失,此时需要修改图书的总数量,使总数减1;删除图书,学校在购进新书的同时,每年会对过期的图书进行清理,不再提供借阅,此时就需要将这些图书的信息从系统中删除。查询图书的信息,比如要查看有哪些是java相关的书籍或者指定ISBN号的图书等。
(3)图书借阅信息管理:能够对图书的借阅信息进行记录,包括读者信息、图书信息、借阅时间等信息。
(4)图书归还信息管理:能够对图书的借阅信息进行记录,包括读者信息、图书信息、归还时间、是否超期、罚金等信息。
(5)系统用户信息管理:能够对系统用户的信息进行管理,包括增加新的系统操作用户,对当前系统用户的密码进行修改,以及删除某一用户。
根据上述功能需求,本系统具体的功能模块图如下图所示:
本系统功能分为读者信息管理模块、图书信息管理模块、图书借阅管理模块、基础信息维护模块和用户管理模块。
(1)读者信息管理:包括读者信息添加和读者信息查询与修改功能。用户登录成功之后,可以浏览所有读者的信息,也可以检索特定读者的信息;同时,可以对读者信息进行维护,包括增加、删除及修改。具体信息包括读者类型、读者姓名、出生日期、性别、电话、所在院系、注册日期等。
(2)图书信息管理:包括图书信息添加和图书信息查询与修改功能。用户登录成功之后,可以浏览所有图书信息和检索特定图书的信息;也可以对图书信息进行维护。包括添加图书、删除图书以及修改图书信息。具体信息包括:图书ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类别等。
(3)图书借阅管理:包括图书借阅和图书归还功能。图书借阅功能,先输入读者的编号,然后输入要借阅的图书的信息,记录系统当前时间即借阅时间;图书归还功能,输入读者的编号,选择其名下已借阅的图书,判断当前日期即归还日期与借阅日期的差值是否超过了规定的期限,计算罚金,从而进行图书的归还操作。具体信息包括:借阅日期、归还日期、罚金。由于要计算罚金,故需要知道该读者的读者类型,根据类型判断其可借图书天数、可借图书数量等。
(4)基础信息维护:包括图书类别设置、读者类别设置及罚金设置。图书类别设置,可以对图书的类别进行增加、删除、修改和查询;读者类别设置可以对读者的类别进行增加、删除、修改和查询;罚金设置,可以指定超期一天的罚金标准。
(5)用户管理:包括修改密码、用户添加和删除。修改密码,是指当前用户修改自己的密码;用户添加和删除,是对新增和去除系统用户时对用户信息的维护。
根据上述功能的描述,系统的管理员即操作用户 需要先登录,然后才能使用系统的各项功能,会涉及相应的信息。具体的图书借阅管理系统的流程图如下图所示:
2.2数据库需求分析
根据以上功能分析,涉及到的数据如下:
读者姓名、出生日期、性别、电话、所在院系、注册日期、读者类型(可借阅天数、可借阅数量)等。
图书ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类别等
读者、所借图书、借阅时间、归还日期、罚金
用户名、密码
3.系统概要设计
3.1 数据库设计
3.1.1 数据库概念结构设计
读者实体:读者编号、读者姓名、出生日期、性别、电话、所在院系、注册日期
读者类型:读者类型编号、读者类型名称、可借阅天数、可借阅数量
图书实体:图书编号ISBN、图书名称、作者、出版社、出版日期、印刷次数、单价、图书类型
图书类型:图书类型编号、图书类型名称
用户:用户编号、用户名、密码
3.1.2 数据库逻辑结构设计
(1)图书(图书编号ISBN,图书类型编号,图书名称,作者,出版社,出版日期,印刷次数,单价)
(2)图书类型(图书类型编号,图书类型名称)
(3)读者(读者编号,读者类型编号,姓名,年龄,性别,电话,所在系部,注册日期)
(4)读者类型(读者类型编号,读者类型名称,最多可借图书数量,最长可借图书天数)
(5)用户(用户编号,用户名,密码)
(6)图书借阅(读者编号,图书编号,借阅日期,归还日期,罚金)
3.1.3数据库物理结构设计
数据库管理系统选择sqlServer,根据SQLServer特点,设计数据表如下:
表1 读者信息表 reader
字段名 |
类型 |
长度 |
是否为空 |
描述 |
readerid |
char |
8 |
否 |
读者编号(主键) |
type |
int |
是 |
读者类型编号 |
|
name |
char |
20 |
是 |
读者姓名 |
age |
int |
是 |
年龄 |
|
sex |
char |
4 |
是 |
性别 |
phone |
char |
11 |
是 |
联系电话 |
dept |
varchar |
20 |
是 |
所在系部 |
regdate |
date |
是 |
注册日期 |
表2 读者类型表readertype
字段名 |
类型 |
长度 |
是否为空 |
描述 |
id |
int |
否 |
读者类型编号(主键) |
|
typename |
varchar |
20 |
是 |
读者类型名称 |
maxborrownum |
int |
是 |
最多可借阅图书数量 |
|
int |
是 |
最长可借阅图书天数 |
表3 用户表 users
字段名 |
类型 |
长度 |
是否为空 |
描述 |
id |
int |
否 |
用户编号(主键) |
|
name |
varchar |
20 |
是 |
用户名称 |
password |
varchar |
20 |
是 |
用户密码 |
表4 图书信息表 book
字段名 |
类型 |
长度 |
是否为空 |
描述 |
ISBN |
char |
10 |
否 |
图书的ISBN(主键) |
typeid |
int |
是 |
图书类型编号 |
|
bookname |
varchar |
30 |
是 |
图书名称 |
author |
varchar |
30 |
是 |
作者 |
publish |
varchar |
30 |
是 |
出版社 |
publishdate |
date |
是 |
出版日期 |
|
publishtime |
int |
是 |
印刷次数 |
|
unitprice |
money |
是 |
单价 |
表5 图书类型表booktype
字段名 |
类型 |
长度 |
描述 |
id |
int |
图书类型编号(主键) |
|
typename |
varchar |
30 |
图书类型名称 |
表6 图书借阅表borrowbook
字段名 |
类型 |
长度 |
是否为空 |
描述 |
readerid |
char |
8 |
否 |
读者编号(组合主键) |
ISBN |
char |
10 |
否 |
图书ISBN(组合主键) |
borrowdate |
date |
是 |
借阅日期 |
|
returndate |
date |
是 |
归还日期 |
|
fine |
money |
是 |
罚金 |
3.2 体系架构设计
系统采用三层架构模式
(1)表现层(UI):展现给用户的界面,用户在使用一个系统的时候他的所见所得。
(2)业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
(3)数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、 删除、修改、更新、查找等。
(4)实体层(Model):独立于三个层次,倾向于业务逻辑层(三层),用来封装数据,在三层间传送数据。Model不引用各层次,但三个层都会引用Model。
优点:
低耦合 、高重用 和使用、低开发成本、快速部署、可维护、利于 软件开发管理,分层同时也简化了分组开发。不同的开发人员可同时开发表示层、业务逻辑层和数据访问层。
4.1 实体层
在实现功能的过程中,需要对数据表进行操作,可以在程序中直接访问数据库,但这样降低了系统的安全性,同时后续维护和扩展也不方便。因此可以建立实体类,实现数据库表的映射,封装数据库中的数据,通过对实体类的操作,映射到数据库表,既提高了系统的安全性,使代码简介,又提高了复用性和可扩展性。
根据数据库表,结合功能设计,设计6个实体类。
Book.java:ISBN,typeid,bookname,author,publish,pubilishdate,printtime,unitprice,typename
BookType.java:typeid,typename
BorrowBook.java:readerid,ISBN,borrowdate,returndate,fine
Reader.java:readerid,name,sex,age,dept,phone,regdat,limit,maxborrownum,type,typename
ReaderType.java:typeid,typename,limit,maxborrownum
Users.java:id,name,passwowrd
4.2 表示层设计
这里暂时省略:随后会贴出个个界面设计的链接。
4.3 数据访问层设计
创建一个基本数据访问操作类Dao.java,主要用于数据库的连接和执行基本的SQL语句。设计其包含的方法如下:
(1)Dao():构造方法,实现数据库连接,获取连接对象conn
(2)StaticResultSet executequery(String sql):静态方法,执行SQL查询操作,返回结果集对象ResultSet
(3)Staticint executeUpate(String sql):静态方法,执行非查询操作,返回值为受影响的行数。
(4)close():关闭数据库连接
4.3.1读者信息管理
ReaderDao.java:完成读者信息添加和读者信息查询与修改功能。
(1)读者信息添加
根据输入的读者编号、姓名、类别、性别、年龄、电话、所在部门、注册日期,完成读者信息的录入。其中要求读者编号和姓名不能为空,读者编号长度为8。
publicstatic int insertReader(String id, String typename,String name,String age,String sex, String phone, String dept, String reg){…}
(2)读者信息查询与修改
用户登录成功之后,可以查询全部读者信息,也可以分别根据读者编号、读者姓名、读者部门、读者类型查询读者信息。
publicstatic List<Reader> selectReader(){…..}
publicstatic List<Reader> selectReaderById(String id){…..}
publicstatic List<Reader> selectReaderByName(String name){…..}
publicstatic List<Reader> selectReaderByType(String type){…..}
publicstatic List<Reader> selectReaderByDept(String dept){…..}
读者信息修改根据查询到的读者信息,可以修改各部分。
publicstatic int updateReader(String id, String typename, String name, integer age,String sex, String phone, String dept, String reg)
4.3.2 图书信息管理
BookDao.java:完成图书信息添加和图书信息查询与修改功能。
(1)图书信息添加
根据录入的图书ISBN、类别、图书名称、作者、出版社、出版日期、印刷次数、单价完成图书信息添加。
publicstatic int insertBook(String ISBN, String typename, String Bookname, Stringauthor, String publish, String publishdate, Integer printtime, Double price){……}
(2)图书信息查询与修改
用户登录成功之后,可以浏览所有图书信息,也可以根据ISBN、图书名称、图书类别、作者、出版社检索特定图书的相关信息。
publicstatic List<Book> selectBook(){….}
publicstatic List<Book> selectBookByISBN(String ISBN){….}
publicstatic List<Book> selectBookByName(String name){….}
publicstatic List<Book> selectBookByType(String type){….}
publicstatic List<Book> selectBookByAuthor(String author){….}
publicstatic List<Book> selectBookByPublish(String Publish){….}
图书信息修改根据查询到的读者信息,可以修改各部分。
publicstatic int update(String ISBN, String type name, String bookname, Stringauthor, String publish, String publishdate, Integer printtime,Double unitprice)
4.3.3 图书借阅管理
BookBorrowDao.java:包括图书借阅和图书归还功能。
(1)图书借阅
根据用户输入的读者编号,则显示出该读者的姓名、类别,及该读者的借阅情况。然后录入该读者的最新借阅的图书ISBN,显示出该图书的相关信息,确定借阅后,将该借阅信息录入(包括读者编号、图书ISBN,当前日期即借阅日期)。
publicstatic List<BorrowBook> selectBorrowByReaderId(String readerid){….}//查询指定编号读者的借书信息
publicstatic int borrowBook(String readerid,String ISBN, Date borrowdate){…}//图书借阅,借阅者的编号,图书编号,借阅日期
(2)图书归还
图书归还功能,输入读者的编号,则显示出该读者名下已借阅的图书,选中要归还的图书,判断当前日期即归还日期与借阅日期的差值是否超过了规定的期限,计算罚金,从而进行图书的归还操作,更新借阅信息表的归还日期为当前日期。
publicstatic int returnBook(String readerid,String ISBN,Date returndate) {…}//图书归还,还书者的编号,图书编号,借阅日期
4.3.4 基础信息管理
包括图书类别设置、读者类别设置及罚金设置。图书类别设置,可以对图书的类别进行增加、删除、修改和查询;读者类别设置可以对读者的类别进行增加、删除、修改和查询;罚金设置,可以指定超期一天的罚金标准。
(1)图书类别设置
BookTypeDao.java图书类别设置包括查询所有图书类别信息,查询指定类型名的图书类型信息,添加图书类型,修改指定编号的图书类型信息,删除指定类型编号的图书类型。
publicstatic List<BookType> selectBookType(){…}
publicstatic List<BookType> selectBookType(String type){…}
publicstatic int insertBookType(Integer id, String typename){….}
publicstatic int updateBookType(Integer id, String typename){….}
publicstatic int deleteBookType(Integer id){….}
(2)读者类别设置
ReaderTypeDao.java读者类别设置包括查询所有读者类型信息,查询指定类型名的读者信息类型,添加读者类型,修改指定编号的读者类型信息,删除指定类型编号的读者类型。
publicstatic List<ReaderType> selectReaderType(){…}
publicstatic List<ReaderType> selectReaderType(String type){…}
publicstatic int insertReaderType(Integer id, String typename, Integer num, Integerlimit){….}
publicstatic int updateReaderType(Integer id, String typename, Integer num, Integerlimit){….}
publicstatic int deleteReaderType(Integer id){….}
4.3.5 用户管理
UserDao.java具体包括登录系统的时候,判断用户名和密码是否有效;查询所有用户信息;添加用户;修改指定编号的用户的密码;删除指定编号的用户信息。
publicstatic Users check(String name, String password){…}
publicstatic List<Users> selectUser(){….}
publicstatic int insertUser(String name, String password){…}
publicstatic int updateUserPWD(Integer id, String pwd){…}
publicstatic int deleteUser(Integer id){…}
相关阅读
工程师为消费类设备开发了这种语言,并使其与当时适度的CPU兼容时保持了简单性。从那时起,这种面向对象的语言已用于创建简单到
JavaScript主要作用是什么呢?学习编程的同学对JavaScript并不陌生,JavaScript是前端技术中非常重要的内容,是网站搭建必不可少的
java.lang.UnsupportedClassVersionError
截图: 错误日志: Exception in thr
学了一段时间Java了,但是还是很菜,看到反射这一节的时候,就有点厌烦,看不下去了,过了一段时间后我又翻了回来,因为要学习后面的,所以反射
Java 混淆器就是给.class加密以防止反编译的工具 开源的 RetroGuard http://www.retrologic.com/ IBM的 JAX