之前给一个客户做了一个图书管理系统,写了份详细的报告。客户已经成功通过答辩一年了,分享出来给大家看一看。

图书管理系统

一、课题内容和要求

  主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。每一本被借阅的书都包括如下信息:编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。每一个人的借书信息包括借书证号、姓名、班级、学号等。系统用户包括系统管理员、图书管理员和读者,系统管理员管理读者,图书管理员负责借阅管理和管理图书。各类用户须进行登录认证。

  基本功能包括以下方面:借阅资料管理,书籍、期刊、报刊分类管理,可以对其添加、删除、修改、查询。借阅管理:实现借出、还书、续借操作

  扩展需求:读者还书时不仅更新图书的库存信息,还应该自动计算该书应罚款金额。并显示该读者所有至当日内到期未还书信息。

二、需求分析

  通过对市场上存在的图书管理系统的参考以及结合我们学校图书馆的实际流程,我把用户具体分类成三个类型,读者、图书管理员以及系统管理员。我们学校的读者需要通过本系统查询想要借阅的书本,并得知书本的位置,除此以外还应该可以看到借阅时间提醒,可以通知及时还书。图书管理员需要通过系统录入图书的信息,并能对其修改删除,并完成借书、还书、续借的过程。系统管理员负责整个系统的维护管理,能够修改其他用户的权限,并拥有图书管理员与读者所有的权限。  

  系统模块方面,通过需求分析我将系统粗分为几个模块。分别是登陆模块,修改模块,查询模块,设置模块。登陆模块主要完成各种用户的登陆,而且要实现各种用户的登陆实现不一样的权限。修改模块主要包括修改添加、修改、删除读者的资料,书籍的资料。查询模块主要实现查询书籍数据的功能,然后接下来进一步实现借还及续借的操作。设置模块主要实现让管理员管理各种参数,对图书馆系统的操作。

  在分析以上需求之后,就要开始考虑系统构建的问题,因为对MVC的编程模式较为熟悉,我便选用了其中最为经典的JSP + SERVLET + JAVABEAN的模式,框架采用了功能强大的开源框架Struts,采用B/S架构,网页的设计排版采用了JSP语言。数据库后端采用了Mysql,并用Navicat for Mysql软件完成了设计。开发集成环境选用了IntelliJ IDEA。根据需求对本图书管理系统进行了需求建模,系统功能结构图如下图1所示,系统概要用例图如下图2所示:

图1.系统总体结构图

图2.需求建模用例图

三、概要设计

1.功能模块说明

  登陆模块:用户输入账号密码,系统进入数据库查询并进行判断,如果与数据库信息符合则登陆进入系统,否则显示登陆失败并停留在当前页面。

  读者库模块:管理员可以对其进行修改,可以查看并设置关于读者的类型,可以借阅的数量并增删改查。同时也可以查看读者的个人信息,可以进行录入或者修改。进行操作之后会刷新数据并停留在当前页面。

  图书库模块:管理员及图书管理员可以对其进行修改,可以查看并设置关于图书的分门别类,设置每种类型的图书最大的借出数量。同时也可以查看图书的全部信息,可以进行录入或者修改。进行操作之后会刷新数据并停留在当前页面。

  图书操作模块:管理员及图书管理员可以对其进行修改,需先输入读者的条形码查看个人信息,之后可以输入图书的条形码或者图书的名称进行借书或者归还操作,如果操作不正确会有相应的提示。操作正确就会完成操作,并在下方表格中显示出当前个人已借的书本信息,并有到期时间提示。续借操作只要输入读者条形码点击相应书本的续借按钮即可实现。

  借阅查询模块:管理员、图书管理员以及读者都可以进行查询操作,输入查询依据就可以查询图书库中存在的书本、所在位置、图书信息。还可以输入读者信息来查询别的读者借过什么书、应归还时间。

  系统设置模块:管理员可以对其进行操作,管理员可以添加、修改、删除别的用户权限。还可以对书架信息进行添加、修改、删除。

  更改密码模块:任何用户都可以修改当前账号的密码并保存。

  退出系统模块:任何用户都可以操作,点击后会出现确认框,点击确认就退出系统进入登陆界面。

  联系我们模块:任何用户都可以操作,点击后显示图书馆信息。

2.数据库设计说明

  数据库使用Mysql,使用Navicat for Mysql可视化程序完成建表设计。

  用户信息表:要进行系统的登陆,首先我们需要一个表来存储我们的用户信息,并添加用户资料。所以创建用户信息表manager,具体的设计如图表1所示:

图1  manager表

  读者类型信息表:因为读者需要具有不同的等级例如学生和老师,他们具有不同的借书限制,所以需要创建一张读者类型信息表readertype,具体的设置如图表2所示:

图2  readertype表

  读者信息表:因为需要录入读者的个人信息,系统通过读者的个人编号来识别不同的读者,这些编号是唯一的,而且使用它来操作各种借还,因为图书馆可能需要联系读者,所以也需要添加电话号码、邮箱等信息,同时包含读者类型信息,所以创建读者信息表reader,具体的设置如图表3所示:

图3  reader表

  图书类型信息表:因为不同类型的书本需要分门别类的放置,而且不同类型的书本可借出的时间也不同,所以需要一张图书类型信息表booktype来放置这些信息,具体的设置如图表4所示:

图4  booktype表

  图书信息表:因为图书管理员需要录入图书信息以便实现借书功能,所以需要一张图书信息表bookinfo来放置这些信息,因为信息要尽量详细,所以添加了ISBN、名称、类型、出版社、书架等信息,具体的设置如图表5所示:

图5  bookinfo表

  出版社信息表:因为添加图书的时候是采取选择出版社的方式来实现的,所以需要一张出版社信息表publishing来放置出版社信息,需要提前录入好出版社,具体的设置如图表6所示:

图6  publishing表

  书架信息表:因为添加图书信息的时候是采取选择书架的方式来实现的,所以需要一张书架信息表bookcase来放置书架信息,需要提前录入好书架信息,具体的设置如图表7所示:

图7  bookcase表

  借出表:因为要将已借出的图书和未借出的图书分别开来,当系统中有借出操作时,这个信息应该被存储到借出表borrow中,具体的设置如图表8所示:

图8  borrow表

  归还表:因为当系统中有归还操作中,这个信息应该被存储到归还表giveback中,系统才能区分已归还和未归还的书籍,具体的设置如图表9中所示:

图9  giveback表

  权限表:因为管理员具有更改其他用户权限的能力,其他用户的权限等级应该被保存到权限表purview中,具体的设置如图表10所示:

图10  purview表

四、关键技术难点分析

  1.此次实验使用了我较为不熟悉的开发环境IDEA,在修改程序的时候遇到了很多的麻烦,控制台出现了乱码以致于无法看到错误类型。尝试了许多方法没有解决。最后发现是因为java io中如果不指定具体的编码方式,就会从这个属性取得file.encoding,而JDK的默认编码是gbk,所以就出现了乱码。解决方法在edit configuration中的VMoptions设置-Dfile.encoding=UTF-8。如下图1所示:

图1  解决乱码问题

  2.在完成借阅模块的时候需要用到计算归还日期的方法,一开始采用的算法是先读取到系统的当前时间parseInt(dd),并将其的值与最大可借书时长相加,结果在运行的时候发现错误,归还时间会显示出类似9月69号、9月50号之类的错误,原代码如下图2所示:

图2  错误代码

  之后发现应将日期先转换成秒计算再转换成时间,修改算法,代码如下图3所示:

图3  修改后的算法

  3.试图想提升界面友好度,在用户成功输入账号密码登陆的时候先跳转到一个界面显示用户登陆成功并欢迎用户登陆,于是我新建了一个login_ok.jsp文件。并将login界面的登录按钮连接到这个界面上,再从这个界面跳转到main界面,但是发现按下系统并不会进入main界面。经过查找资料后发现需要配置struts框架的struts-config.xml文件,设置跳转路径,代码如下图4所示:

图4  配置struts-config.xml文件

  4.将从数据库中读取的数据显示到页面上的表格里的实现方式,最终使用迭代来实现。代码如下图5所示:

图5  迭代显示数据

五、测试数据及其结果分析

1.测试登陆模块

  数据库中已经插入了三条用户信息,分别是管理员:admin admin,图书管理员:bookmanager bookmanager,读者:reader reader,测试是否能登陆并是否权限不同。结果如下图1、2、3、4:

图1  登陆界面

图2  admin登入主页

图3  bookmanager登入主页

图4  reader登入主页

2.测试读者库模块

  点击添加读者类型以及添加读者信息,若输入正确的信息,则录入成功并立即显示,若输入错误的信息则会提示录入失败,测试结果正常,如图5、6所示:

图5  输入无效信息

图6  显示添加失败

3.图书库模块

  同读者库,在此不作赘述。

4.借还模块

  管理员需先输入读者的条形码,能查看读者的个人信息以及借还情况以及有无逾期罚款,然后再输入图书的条形码或者图书名来实现借阅功能,借阅成功则会刷新并显示数据,本系统借阅时间默认为一个月,如下图7、8所示:

图7  借阅书本

图8  借阅成功

  若要查找的书不存在则会提示错误,如下图9:

图9  错误提示

  若可借数量已达上限也会提示达到上限,如下图10:

图10  超过借阅上限

  若读者不存在则会重置界面,如下图11:

图11  读者信息错误

  归还与续借功能测试方法相似,在此不再赘述。

5.查询模块

  用户可通过多种查询方式来搜索图书或者借阅信息,默认显示所有的图书或者信息,按下搜索则只会显示想要搜索的那条信息,如下图12所示:

图12  查询成功

  

前往毕业设计板块目录,查看更多毕业设计案例


代码之间工作室,专业计算机程序设计。

技术交流QQ群:439261058

商务合作加QQ:1215714557

转载于:https://www.cnblogs.com/wangleiblog/p/6155446.html

南京邮电大学图书管理系统相关推荐

  1. 南京邮电大学c语言程序设计平台,程序设计报告-南京邮电大学-学生管理系统-c语言.doc...

    程序设计报告-南京邮电大学-学生管理系统-c语言.doc 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 ...

  2. 南京邮电大学c语言程序报告,程序设计报告南京邮电大学学生管理系统 c语言.doc...

    程序设计报告南京邮电大学学生管理系统 c语言 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 位 南京邮 ...

  3. c++图书管理系统_轻松学做C语言课程设计:图书管理系统-数组实现

    C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力.从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现. 题目要求 图书管理系统 ...

  4. PyQT5一起学做图书管理系统(6)添加/删除书籍

    PyQT5一起学做图书管理系统(6)添加/删除书籍 环境 系统:windows10系统 编辑器:Sublime3 编程语言:python3+pyqt5 前言 本节来实现书籍的添加与删除,还是那句话,记 ...

  5. 跟着王进老师学开发之C#篇第五季:图书管理系统-王进-专题视频课程

    跟着王进老师学开发之C#篇第五季:图书管理系统-2659人已学习 课程介绍         本季视频通过完整的案例介绍了图书管理系统的开发,包含了数据库的设计.界面设计.代码实现等等,本系统的模块包含 ...

  6. C语言课程设计—图书管理系统

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<std ...

  7. java图书馆管理系统_六天写出来的基于Swing的图书管理系统你不来吐槽一下?

    前段时间学习完了MySQL和JDBC,想着自己做个东西实战一下,于是写了一个烂大街的图书管理系统...但好歹是自己一个人日夜兼程,硬着头皮做出来的还像样的东西,总结一手吧.看的人欢迎吐槽.我会从以下几 ...

  8. 图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...

    摘 要 本文根据<数据库应用系统设计>课程要求而做.选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大,并且经常去图书馆,对图书馆的大部分功能及流程还是比较了解,而且现在 ...

  9. 我用Python帮学校写了一款图书管理系统!教导员居然请我吃饭

    话不多说,直接正文开始,话说才吃个饭是不是亏了,是不是又奖金没给我! 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的 ...

最新文章

  1. Git统计个人提交代码行数
  2. 50道练习实践学习Pandas!
  3. Json的list、map、对象对应格式
  4. python 最小栈
  5. java array to string_数组到字符串转换(Array to string conversion)
  6. LeetCode 946. 验证栈序列(栈)
  7. python 列表推导式
  8. 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
  9. gpt windows linux,UEFI+GPT环境下安装Windows+Linux+OS X
  10. mysql with lock tables_mysql出现大量FLUSH TABLES WITH READ LOCK
  11. 要素集获取要素_OGC的网络要素服务(WFS)(持续更新。。。)
  12. everedit选择_【EverEdit怎么用】EverEdit好不好_使用技巧-ZOL软件百科
  13. 【linux内核分析与应用-陈莉君】字符设备驱动
  14. FPGA简单实现数据过采样
  15. 华为2019届校招笔试题及解法
  16. esp_image: Image length xxxx doesn‘t fit in partition length 1048576问题解决思路
  17. 委托、事件 茴字有几种写法
  18. STL CSB 11.10
  19. 区块链三种网络地址btc\eth\fil
  20. xge_mac学习(4)--TX_DeQ

热门文章

  1. 简单使用七牛图床 API 上传与下载图片
  2. 实战项目 78 : 从 Web API 获取数据
  3. DHTMLX JS框架,日程JS框架 功能强大 收藏!
  4. burpsuite第一次爬行扫描
  5. 我的手机游戏回忆-风云剑侠
  6. 谭浩强c语言 读后感,读谭浩强C语言数据结构有感(1)
  7. 计算机毕业设计springboot+vue基本微信小程序的透析耗材管理系统
  8. 火山PC写出内置资源文件
  9. Git命令及分支操作
  10. Linux双系统安装教程【暗影精灵5】