草庐IT

图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)...

威海云博客 2023-04-22 原文

图书管理系统数据库设计实验报告

文章目录

更新日志

2020.7.11 修改了表的结构,表之间增加了外键联系,更加完整且符合第三范式。

数据库设计实验报告

1.概述

疫情期间,大家都只能够在家里,不能去到学校,此时需要在图书馆借书,就是只能通过网络来操作了。因此,网上图书馆就此诞生了,有了网上图书馆,学生通过网络来订阅图书是一件非常轻松的事情,只要在网上申请了书籍的借阅,管理员则可以通过快递把书籍寄给学生,并且学生在规定时间内再通过快递把书籍送还给学校图书馆。

本系统是一个针对学校的网上图书馆借还系统,通过网络,学生可以很轻松的查询某些书籍是否可以借到,并且还可以通过网络续借书籍。管理员可以通过该系统很容易的将书籍信息存储到数据库和查询学生的借还情况,并且通知那些逾期的学生尽快归还或者续借。超级管理员则对学生和管理员的信息进行修改,或者增加用户。用户必修用户名和密码相互匹配正确后才能登陆成功,然后在进行相应的操作。对于非法操作,该系统有识别作用。

2.需求分析

2.1需要实现的功能

  1. 登陆功能:登陆系统为身份验证登陆。分为学生登陆,管理员登陆,超级管理员登陆。不具备注册功能。

  2. 学生登陆后:显示该用户的基本信息。可以修改密码,修改密保问题,查看书籍并且预约书籍,查看已经借到的书籍的情况,还书的情况。

  3. 管理员登陆后:显示该用户的基本信息。可以修改密码,修改密保问题,查看书籍信息并且修改数据信息,添加书籍。查看学生的借还情况。

  4. 超级管理员登陆后:显示该用户的基本信息。可以修改密码,修改密保问题,查看,修改管理员的信息,添加新的管理员。添加用户学生,查看学生的情况。

  5. 修改密码:通过匹配密保问题的答案进行修改密码。

  6. 修改密保问题:通过匹配原密码进行修改密保问题。

  7. 预约书籍:查看书籍的具体信息后,可以对该书籍进行预约,预约到期时间1天后,如果一天后还没有借到该书籍,则自动取消预约。

  8. 查看借书情况:查看书籍的具体信息后,可以对该书籍进行续借,续借的有效时间是30天,只可以对同一书籍续借1次。

  9. 查看还书情况:查看书籍的具体信息后,可以对该书籍进行预约,预约和预约书籍功能一样。

  10. 修改书籍信息:查看书籍的具体信息后,可以对该书籍的信息进行修改。

  11. 增加书籍:增加书籍。

  12. 查看学生借还情况:查看学生的借还详细信息。

  13. 权限移交:只有超级管理员才有的功能。删除该管理员,新增加一个超级管理员。

  14. 增加管理员:增加一个新的管理员。

  15. 查看管理员信息:查看信息后,可以进行信息修改

  16. 查看学生信息:只能查看学生的信息,而不能进行修改

2.2业务流程图

2.2.1学生流程图

2.2.2管理员流程图

2.2.3超级管理员流程图

未命名文件 (2)

2.3功能需求分析

系统主要结构功能如下:

3.数据字典

名字:书籍信息表

描述:数据库中书籍信息表各字段的集合,包含编号,书名,作者,译者,出版社,库存,进货时间

名字:学生信息表

描述:数据库中学生信息表各字段的集合,包括学号,姓名,学院编号,性别,出生日期,身份证号码,手机号码

名字:学生账号信息

描述:数据库中学生账号信息表各字段的集合,包括学号,密码,密保问题,密保答案,剩余可以借次数

名字:学生预约

描述:数据库中学生预约表各字段的集合,包括学号,书籍编号,预约时间,到期时间

名字:学生借书

描述:数据库中学生借书表各字段的集合,包括学号,书籍编号,借书时间,到期时间

名字:学生还书

描述:数据库中学生还书表各字段的集合,包括学号,书籍编号,还书时间

名字:管理员信息

描述:数据库中管理员信息表各字段的集合,包括工号,名称,性别,手机号码,email,身份证号码

名字:管理员账号信息

描述:数据库中管理员账号信息表各字段的集合,包括工号,密码,密保问题,密保答案

名字:超级管理员信息

描述:数据库中超级管理员信息表各字段的集合,包括工号,姓名,性别,手机号码,身份证号码,email

名字:超级管理员账号信息

描述:数据库中超级管理员账号信息信息表各字段的集合,包括工号,密码,密保问题,密保答案

名字:用户信息

描述:数据库中账户信息以及账户类型,包括工号/学号,用户类型。

数据库关系图

4.概念模型

经过上述系统功能分析和需求总结,设计如下面所示的数据项和数据结构。

书籍表:存放书籍记录。包括编号,书名,作者,译者,出版社,库存,进货时间,分类

学生信息:存放学生信息。包括学号,姓名,班级编号,性别,出生日期,身份证号码,手机号码

学生账号信息:存放学生账号信息。包括学号,密码,密保问题,密保答案,剩余可以借的次数。

学生预约情况:学号,书籍编号,预约时间,预约到期时间

学生借书情况:学号,书籍编号,借书时间,借书到期时间

学生还书情况:学号,书籍编号,还书时间

管理员信息:存放管理员信息。包括工号,姓名,性别,手机号码,身份证号码,email。

管理员账号信息:工号,密码,密保问题,密保答案

超级管理员信息:工号,姓名,性别,手机号码,身份证号码,email

超级管理员账号信息:工号,密码,密保问题,密保答案

职工信息:工号/学号,职位

  1. R图:

书籍实体:

学生信息实体:

学生账号实体:

学生预约实体:

学生借书实体:

学生还书实体:

管理员信息实体:

管理员账号实体:

超级管理员信息实体:

超级管理员账号实体:

职工信息:

所有实体的联系:

5.数据模型

将E-R图转换成的关系模式如下:

书籍信息(编号,书名,作者,译者,出版社,库存,进货时间,分类)

学生信息(学号,姓名,校区编号,性别,出生日期,身份证号码,手机号码)

学生账号信息(学号,密码,密保问题,密保答案,剩余可以借次数)

学生预约(学号,书籍编号,预约时间,到期时间)

学生借书(学号,书籍编号,借书时间,到期时间)

学生还书(学号,书籍编号,还书时间)

管理员信息(工号,名称,性别,手机号码,email,身份证号码)

管理员账号信息(工号,密码,密保问题,密保答案)

超级管理员信息(工号,姓名,性别,手机号码,身份证号码,email)

超级管理员账号(工号,密码,密保问题,密保答案)

职工信息(工号/学号,职位)

6.建表代码与界面展示

6.1表创建:

(书籍表)create table book

(

Bno smallint primary key not null, Bname varchar(50) not null, Bauthor varchar(50) not null, Btranslator varchar(50), Bpublish varchar(50) not null, Bsort varchar(50) not null, BinTime date not null, Bstock smallint not null, Bacount int not null ) (学生信息表) create table studentimfornation ( Sno varchar(20) primary key not null, Sname varchar(20) not null, no smallint not null, Ssex nchar(1) not null, Sbirthday date , Sid varchar(20) not null, Sphone varchar(13), Sno foreign key references studentsacount(sno) ) (学生账号表) create table studentaccount ( sno varchar(20) primary key not null, Spassword varchar(18) not null, Squestion varchar(50) , Sanswer varchar(20), Sstats smallint not null, ) (学生预定表) create table studentorder ( sno varchar(20) primary key not null, bno smallint not null, sorder date not null, soverdue date not null, Bno foreign key references book(Bno) Sno foreign key references studentacount(sno) ) (学生借书表) create table studentborrow ( sno varchar(20) primary key not null, Bno smallint not null, Sborrow date not null, soverdue date not null Bno foreign key references book(Bno) Sno foreign key references studentacount(sno) ) (学生还书表) create table studentreturn ( sno varchar(20) primary key not null, bno smallint not null, sreturn date not null, Bno foreign key references book(Bno) Sno foreign key references studentacount(sno) ) (管理员信息表) create table admitinformation ( ano varchar(

有关图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)...的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  3. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  4. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  5. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  6. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  7. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  8. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  9. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  10. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

随机推荐