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

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

数据库设计实验报告

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

未命名文件(2)

系统主要结构功能如下:

名字:书籍信息表

名字:学生信息表

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

名字:学生账号信息

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

名字:学生预约

名字:学生借书

名字:学生还书

名字:管理员信息

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

名字:管理员账号信息

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

名字:超级管理员信息

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

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

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

名字:用户信息

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

数据库关系图

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

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

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

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

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

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

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

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

书籍实体:

学生信息实体:

学生账号实体:

学生预约实体:

学生借书实体:

学生还书实体:

管理员信息实体:

管理员账号实体:

超级管理员信息实体:

超级管理员账号实体:

职工信息:

所有实体的联系:

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

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

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

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

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

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

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

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

(Login)

(ForgetPassword)

(Student,StudenOrder)

预约情况

(StudentAppointment)

(StudentBorrow)

HandleBorrow//查询借书情况**if**(i==1){Stringsql="selectbook.bno,bname,bauthor,btranslator,bpublish,bsort,sborrow,soverdue"\+"fromstudentborrow,bookwherestudentborrow.bno=book.bnoandsno='"\+num+"'orderbysborrowdesc";Statementstat=con.conn.createStatement();ResultSetres=stat.executeQuery(sql);ArrayList\list=**new**ArrayList\();**while**(res.next()){bookbook=**new**book();book.setNo(res.getString(1));book.setName(res.getString(2));book.setAuthor(res.getString(3));book.setTranslator(res.getString(4));book.setPublis(res.getString(5));book.setSort(res.getString(6));book.setTime(res.getDate(7));book.setOrderTime(res.getString(8));list.add(book);}还书情况

(StudentReturn)

HandleReturn**if**(i==1){Stringbno=fromClient.readUTF();Stringtime=fromClient.readUTF();Statementstat=c.conn.createStatement();Stringsql="selectsnofromstudentorderwheresno='"+sno\+"'andbno='"+bno+"'";ResultSetres=stat.executeQuery(sql);**if**(res.next()){**int**te=2;//已经预约toClient.writeInt(te);}//更新预约**else**{sql="insertintostudentorder(sno,bno,sorder)values(,,)";PreparedStatementpre=c.conn.prepareStatement(sql);pre.setString(1,sno);pre.setString(2,bno);pre.setString(3,time);pre.executeUpdate();sql="begintranss"\+"updatebooksetbstock=bstock-1wherebno="\+"if\@\@error!=0rollbacktransselsebegin"\+"updatebooksetbacount=bacount+1wherebno=end"\+"if\@\@error!=0rollbacktransselsebegin"\+"updatestudentacountsetsstats=sstats-1wheresno=endcommittran"\+"if\@\@error!=0rollbacktranss";pre=c.conn.prepareStatement(sql);pre.setString(1,bno);pre.setString(2,bno);pre.setString(3,sno);pre.executeUpdate();toClient.writeInt(1);pre.close();}预约书籍

(BookInformation)

HandleCancel(对应bookimformation)//查询预约信息sql="select\*fromstudentorderwheresno='"+sno+"'andbno='"+bno+"'";//取消预约sql="begintranss"\+"deletefromstudentorderwheresno=andbno="\+"if\@\@error!=0rollbacktransselsebegin"\+"updatebooksetbstock=bstock+1wherebno=end"\+"if\@\@error!=0rollbacktransselsebegin"\+"updatestudentacountsetsstats=sstats+1wheresno=endcommittran"\+"if\@\@error!=0rollbacktranss";6.2.3管理员界面管理员端界面

(Admit)

(ChangBookInformation)

(StudentInformation)

(Mstudent)

HandleStudent(对应StudentInformation)Stringsno=fromClient.readUTF();Stringbno=fromClient.readUTF();Stringsql="select\*fromStudentInformation"\+"wheresno="+sno+"";Statementstat=con.conn.createStatement();sql="select\*frombookwherebno='"+bno+"'";6.2.4超级管理员界面超级管理员界面

(superAdmit)

添加、修改管理员信息

(information)

(yijiaoquanxian)

(changepassword)

HandlePassword(对应changpassword)修改密码:分别对应学生,管理员,超级管理员"updatestudentacountsetspassword="+"wheresno=""updateadmitacountsetapassword="+"whereano=""updatesuperadmitacountsetspassword="+"wheresno="修改密保

(changequestion)

HandleQuestion(对应changQuestion)此处只列举了修改学生"begintransavupdatestudentacountsetsquestion=wheresno="\+"if\@\@error!=0rollbacktransavelsebegin"\+"updatestudentacountsetsanswer=wheresno=endcommittran"+"if\@\@error!=0rollbacktransav"7.项目总结7.1数据库设计首先需要对数据库进行需求分析。在这一步的时候,要详细考虑到各个功能的实现,以及不同成员之间的联系。一定要考虑周到,不然在之后的过程会有很大的困难。在这一步中,参考了某些图书馆的网上图书管理系统,分析他们的需求与功能。再结合当下疫情实际情况分析,最后给出总需求,画出各部分流程图以及系统流程图。

设计概念结构,对用户的需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型。画出ER图。

根据ER图转换成关系模式。在SQLSERVER中建立对应的数据库以及数据表。详情请见建表代码。

服务端的主要问题就是在于如何与客户端建立起socket连接,并且实现各种不同需求的监听处理。在每一个处理中,要和数据库进行连接,并且采用sql语句对数据库进行修改。主要使用Statement或者PreparedStatement接口执行sql语句。这一部分加深了我对jdbc的理解,以及学会了它的使用方法。

服务器界面:

下面的服务器端的部分代码:

与客户端建立连接并处理请求:

链接数据库:

查询信息:

因为代码质量比较一般,因此大大小小的bug其实有挺多的。最常见的bug就是sql语句的错误,导致的服务端崩溃。因为sql语句有很多引号,以及查询条件什么的不清楚,导致数据库无法查询就会引起崩溃。

更多的bug就是在GUI界面设计的时候的一些文字格式,文本框大小,各个按钮等的整体布局。如果没有调试好会导致部分不显示之类的bug。

徐云彪编著.数据库原理与技术[M].浙江:浙江大学出版社,2002:23-59.

陆晶编著.Java程序设计[M].北京:清华大学出版社,2002:10-136.

孙元编著.Java语言SQL接口[M].北京:清华大学出版社,1997:3-59.

苗春义著.Java项目开发全程实录[M].北京:清华大学出版社,2008:45-159.

希尔伯沙茨著.数据库系统概念[m].北京:机械工业出版社,2012:28-157

这个项目是初学Java开发和数据库做的一个项目,整体代码质量不是很高。但是程序是能够完美运行的,而且不存在什么bug。要注意的修改与数据库连接的端口号,以及数据库的账号和密码。还有创建表的时候要注意表的信息完整性,不然会出现线程错误。

THE END
1.重点教材推荐——Java进阶篇系列Java Web应用开发(第2版) 内容摘要 本书从Java Web应用开发技术的原理出发,详细介绍了进行Web应用开发所需的基础知识和基本技能。本书共分9个模块,涵盖了JSP运行环境搭建、JSP语法、JSP内置对象、JavaBean及其应用、Web前端脚本技术、Servlet技术、JSP数据库操作、Java Webhttps://mp.weixin.qq.com/s?__biz=MzUyMzY3MjUxNA==&mid=2247522347&idx=1&sn=372d9095352d6111d292bf64224c4bf5&chksm=fbdd332353138ef4e18ad7ae33b5c458af39cb311017e7e8a049d75e57724a2170c6e7cd4ca5&scene=27
2.Java课程设计之图书管理系统java图书管理系统详细设计在暑假期间,我做了一个基于Java swing+mysql+jdbc的学生管理系统并且还发布到了csdn供大家参考和学习一下。最近这个学期初呢,上了Java课程设计的可成,这次我刚好做了一个Java +swing+mysql+jdbc的图书管理系统。刚好趁着最近有空,想把这个系统和大家分享出来,供大家学习和参考。 https://blog.csdn.net/xyendjsj/article/details/134820039
3.如何使用Java实现一个简单的图书管理系统?java教程随着数字化时代的到来,传统的图书管理方式已经难以满足人们的需求。通过使用计算机技术,可以极大地提高图书管理的效率和精度。在这篇文章中,我们将详细介绍如何使用Java编写一个简单的图书管理系统。 1.需求分析 在开始编写图书管理系统之前,我们需要对其需求进行分析。我们需要实现的功能如下: https://www.php.cn/faq/625833.html
4.图书馆管理系统java课程设计总结gulaotou的技术博客图书馆管理系统java课程设计总结 1项目基本信息 1.1项目名称 图书馆管理系统 1.2开发运行环境 Window 10 64位 JDK 1.8.0 Eclipse 4.8版本 MySql 5.5 Tomcat 9.0 2项目需求分析 2.1学生登录部分 (1)学生注册:在进入图书馆前必须要登录,如果没有学号则要注册,注册时系统会将用户填写的学号与数据库里面的数据对比,https://blog.51cto.com/u_15444/12044715
5.图书管理系统设计与实现—看这篇就够了腾讯云开发者社区图书管理系统设计与实现 图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力、物理、财力,极大的浪费了资源,对于图书管理人员来说,图书馆管理包括图书信息管理、图书类别管理、借阅信息管理、管理员信息管理等等。而这些项目在过去靠手工操作,需要手工记录这些https://www.cloud.tencent.com/developer/article/1697988
6.ui等实现的图书购物商场系统详细设计实现?适用嘲:Java完整地址:2022Java毕业设计项目:图书购物商城系统(java+springboot+vue实现)-寒假了快卷起来 功能截图: 用户登录:分为管理员和普通用户进行登录、也可以在这里进行用户注册。 ? 录入相关用户信息进行用户注册。 前端用户首页:用户登录后、可以查看新上架的书籍和新闻等书籍、点击进入详情查看购买书籍、加入购物车以及https://juejin.cn/post/7049931731470090248
7.图书管理系统需求分析报告附有java代码(精选6篇)缺陷分析工作是提升java系统运行效率的关键方法,在一般的源代码运行系统中,只有具备系统管理能力的客户才能够通过登录的方式实现对缺陷分析系统的控制,一般情况下,正常的用户在实施缺陷分析系统的运行过程中,不能够了解源代码问题的分析方式,因此,设计并完善java系统的分析方案,对提升Java系统的运行质量十分重要。 https://www.360wenmi.com/f/filewe6vegvd.html
8.图书馆管理系统的设计与实现(JSP+SQL2005)Javaweb计算机因此,开发一套完善的图书馆管理系统就成不可少了,本文介绍了在NetBeans6.7环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发本系统的详细过程,提出实现图书馆信息管理、资源共享的基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图书的入库登记到查询浏览,图书的借阅,形成了https://www.2bysj.cn/Article/jsp/201109/3474.html
9.整理一份详细的图书管理系统课设报告(含用例图通信图顺序图学校图书馆希望设计一个图书管理系统,管理读者的登记、图书的购入、借出、归还以及注销等。管理人员还可以查询某位读者、某本图书的当前借阅情况、历史借阅记录,并可按照读者角度、图书角度、借阅角度分别进行统计,给出统计报表,以全面掌握图书的流通情况。 https://www.pianshen.com/article/96321395145/
10.软件项目计划书15篇SQL Server 20xx:数据库管理软件 DBMS:数据库管理系统 Windows XP:运行环境 VB.net 20xx:软件开发语言 visual studio 20xx 软件开发环境 2 项目概述 2.1 系统与项目的定义 本系统是建立在C/S系统架构下基于SQL Server数据库,采用VB.Net技术分析、设计、开发用于酒店信息化管理的。该系统基本满足了酒店管理方面的需https://www.ruiwen.com/gongwen/jihuashu/1309196.html
11.软件开发实习总结范文(通用10篇)(3)功能完善:包括常见网站的图书管理的各个方面:图书新增、浏览、删除、修改、检索等各个方面,完整地实现了网站对即时图书的管理要求。 (4)方便移植:针对不同的图书馆,只需要稍作修改就可以开发出适合本企业特点的网站图书管理系统。 2、 系统的详细设计 https://www.yjbys.com/shixi/shixizongjie/2181534.html
12.Java远程教学系统毕业设计:源代码MySQL数据库及文档本文介绍了Java语言开发的远程教学系统,包括源代码、MySQL数据库配置以及相关文档,适用于计算机专业的毕业设计。系统支持远程调试,采用B/S架构,适合现代教育需求。 Java远程教学系统毕业设计:源代码、MySQL数据库及文档 本项目提供了Java远程教学系统的完整源代码、MySQL数据库配置及相关文档,支持远程调试。 https://www.php1.cn/detail/java_JiSuanJiBiY_5703f258.html