当前位置:   article > 正文

图书资料管理课程设计(附源码和连接)(1),前端开发入门_图书管理系统 er

图书管理系统 er

数据库的存储空间要小;

要保证数据的安全性和保密性;

易于维护。

数据库概念设计是在系统开发的总体任务的基础上完成。图书资料管理系统需要完成功能主要有:

(1)各种信息的输入,包括图书类别的添加,图书基本信息、借阅信息、员工信息等;

(2)借阅信息的处理;图书类别的修改,图书信息的增加与重置

(3)各种信息的修改、删除;

(4)按照某种条件,查询统计符合条件的各类信息;

(5)对查询、统计的结果打印输出。

数据库概念结构的ER模型可采用自顶向下、自底向上、逐步扩张和混合策略四种方法。其中最常用的方法是自底向上 。自底向上方法是先定义各局部应用的概念结构ER模型,然后将它们集成,得到全局概念结构ER模型 。

E-R图是建立数据模型的基础,根据E-R模型向关系模式的转换规则,可以将E-R图中所有的实体和联系都用关系来表示,从而可以得到数据库的逻辑模型。

数据库设计是指对于一个给定的应用环境,构造(设计)出某种数据库管理系统所支持的优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求。

数据库已经成为现代信息系统的基础和核心部分,而数据库设计的好坏直接影响到整个系统的效率和质量。

  1. 员工信息ER图主要包括的基本信息有:编号,员工编号,员工姓名,学历,职称,性别,联系电话,专业,读者类别,所在部门,职务等信息。如图2.1所示。

  2. 图书信息ER图主要包括的信息有:图书编号,作者,版次,出版时间,分类,出版社,单价等信息。

  3. 借阅信息ER图主要包括的信息有:办证日期,员工编号 ,员工姓名,借阅日期 ,归还日期,是否归还等信息。

  4. 图书分类ER图主要包括的信息有:图书编号,可借天数和类别名称等信息。

  5. 图书订购信息ER图主要包括的信息有:订购日期,订购数量,图书编号,折扣,是否入库,操作员等信息。

  6. 库存信息ER图主要包括的信息有:编号和库存数量。

  7. 管理员信息ER图主要包括的信息有:身份证号,联系电话,员工编号,性别,年龄,工作日期,密码等信息。

4.数据库逻辑结构设计

4.1 数据库模型图设计

概念结构设计阶段得到的ER模型是用户模型,它独立于任何一种数据模型,独立于任何一个具体的DBMS,是一个与计算机软、硬件的具体性能无关的全局概念模式。为了建立用户所要求的数据库,需要把上述概念模型转换为某个具体的DBMS所支持的数据模型,即逻辑结构设计。

数据库逻辑设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程。关系数据库逻辑设计的结果是一组关系模式的定义 。

E-R图是建立数据模型的基础,根据E-R模型向关系模式的转换规则,可以将E-R图中所有的实体和联系都用关系来表示,从而可以得到数据库的逻辑模型。

图书资料管理系统主要是对读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等等。

在本次课程设计中关于图书资料管理数据库共建立了七个实体关系:

  1. 员工信息表:工姓名、性别、所在部门、职务、职称、学历、专业、联系电话、办证日期、书证编号、读者类别,等

  2. 图书信息表:包的数据项有:图书编号、名称、作者、版次、单价、出版社、分类、出版时间等;

  3. 借阅信息表:的数据项有:借阅日期、借阅人、还回日期等。

  4. 图书分类表:包括的数据项有:编号,可借天数,编号名称。

  5. 图书订购信息表:包括的数据项有:订购日期,订购数量,图书编号,折扣,操作员以及是否入库。

  6. 库存信息表:包括的数据项有编号和库存数量。

  7. 管理员信息表:包括的数据项有身份证号,联系电话,员工编号,性别,密码,工作日期,年龄等。

本次本人通过PowerDesigner设计软件进行建模操作,所设计的数据库模型如图3.1所示

图3.1图书资料管理系统关系图

4.2系统功能模块图

对上述各功能进行集中、分块业务流程分析

新添加的图书由管理员进行入库操作,添加图书信息到图书信息表中。管理员依次输入图书条形码,书名,作者,出版社,出版时间,页数,类别,存放位置,图书总数和图书价格,系统自动根据图书类别、出版时间给出该书在数据库中的唯一编号,并同时记录入馆时间。所有这些信息将会被添加到图书基本信息表中。

添加读者(新加入的读者也由管理员进行添加操作,添加新读者信息到读者信息表中)

图书管理(可以对数据库中所有的图书(包括在馆和不在馆的)进行管理)

读者管理(可以对数据库中所有的读者进行管理,可以对读者的信息进行修改、删除)

信息查询业务(包括图书基本信息查询,读者基本信息查询,在这个查询界面,系统提供多种查询条件供用户选择)

图书借出业务(读者根据需要查询图书信息,找到要借图书后,系统根据读者编号和图书编号调出相关信息,判断读者能否借此书)

图书归还业务(系统根据图书实际归还日期以及应还日期判断是否超期)

统计业务(包括图书借阅排名统计和罚款金额统计)

系统管理(这部分包括修改管理员登录密码、图书类别设置、存放位置设置和读者类别设置等)

打印操作(本系统提供所有图书信息打印,所有读者信息打印等,另外也提供自定义打印,即可对查询出来的结果进行打印)

业务流程描述主要功能如图3.2所示:

图3.2小型图书资料管理系统功能图

4.3数据流程分析

数据流程图(Data Flow Diagram, DFD)是以管理业务流程图为依据,通过抽象以舍去具体的组织结构、工作场所和物流等,单从数据信息流动的角度,来描述系统内部及系统与环境之间的数据信息的传递、处理和存储过程的一种工具。

根据系统的业务流程,对其中的数据流向、处理及数据存储进行分析后,可以得到本系统的数据流程图如图3.3所示:

图3.3图书资料管理系统数据流程图

数据字典

数据字典是用来规范化描述数据具体内容的工具,也是对数据汇总分析的一个总结,包括数据流字典、数据存储字典和数据处理字典。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述

数据库逻辑结构设计

该图书馆管理信息系统中各个数据表的设计如下所示:表4.1员工信息表

表4.1员工信息表

表4.2图书信息表

表4.3管理员信息表

5.数据库物理设计

5.1 索引设计

表5.1读者表(reader)

字段名 sno sname passwd which num

索引表达式 sno

索引类型 主索引

表5.2书籍表(book)

字段名 bno bname bwriter bpress binfo bstate

索引表达式 bno

索引类型 主索引

5.2 视图设计

该视图建立在书籍表和借阅表的基础上,用来查询用户的借书信息,设计如下:

表5.2视图设计

字段名 bno bname bwriter bpress starttime endtime

说明 书籍号 书籍名称 作者 出版社 借书时间 还书时间

6.编码及实现

6.1 文件夹组织结构

在编写代码之前,可以先将系统中可能用到的文件夹或者包建立起来,这样方便我们后期的开发与管理,也可以规范系统的整体框架,我在做图书馆管理系统时设计了如图6.1所示的文件夹结构,在开发时,将相对应的放到各自根目录下即可。

图6.1图书资料管理系统文件夹结构

6.2公共模块的编写

在一般的开发中,经常会遇到一些公共模块的编写,如数据库连接及相关操作的类,这样的好处就在于方便管理和后期功能的扩展。

6.2.1数据库连接

数据库连接及操作类通常包括,数据库连接的方法(GetConnection),数据库关闭的方法(Close),执行查询语句的方法(List),执行添加语句的方法(Add),执行修改语句的方法(update),以及删除语句的方法(Delete),下面开始对各个模块及Dao类进行编码

在工具类DButil中创建数据库连接的操作在此类中新定义数据库连接驱动包名称,数据库连接路径,数据库用户名,密码等静态变量,然后在构造函数中实现连接数据库的操作。在数据库连接时需要添加trycatch关键字来捕捉数据库连接时异常。同时为了进行优化,我加入了判断数据库连接是否为空的情况,为空则进行连接,同时建立了数据库关闭操作,当对数据库的连接操作完成后进行关闭。

package java1.book.util;

import java.sql.Connection;//导入数据库连接时所使用的类

import java.sql.DriverManager;

/*

  • 数据库工具类

_/

public class DButil {

private String dbURl=“jdbc:mysql://localhost:3306/db_book?serverTimezone=UTC”;

private String dbUserName=“root”;//用户名

private String dbUserPassword=“123456”;//密码

private String jdbcName=“com.mysql.cj.jdbc.Driver”;//驱动名称

/_*

  • 获取数据库连接

_/

public Connection GetCon()throws Exception{

Class.forName(jdbcName);

Connection con=DriverManager.getConnection(dbURl, dbUserName, dbUserPassword);

return con;

}

/_*

  • 关闭数据库连接

_/

public void closeCon(Connection con)throws Exception{

if(con!=null)

{

con.close();

}

}

public static void main(String[] args) {

DButil Dbutil=new DButil();

try {

Dbutil.GetCon();

System.out.println(“数据库连接成功”);

} catch (Exception e) {

e.printStackTrace();

System.out.println(“数据库连接失败”);

}

}

}

6.2.2字符串工具类

字符串连接工具在后期的进行查询等操作时可以进行有效的提高效率,和进行字符串拼接时将会用到。

package java1.book.util;

/_*

  • 字符串工具类

_/

public class Stringutil {

/_*

  • 判断是否为空

_/

public static boolean isEmpty(String str) {

if(str==null || “”.equals(str.trim())) {

return true;

}else {

return false;

}

}

/_*

  • 判断是否不是空

_/

public static boolean isNoteEmpty(String str ) {

if(str!=null && !“”.equals(str.trim())) {

return true;

}else {

return false;

}

}

6.3窗体设计

6.3.1主窗体设计

管理员通过“系统登陆”模块的验证后,可以登陆到图书资料管理系统的主界面,系统主窗体包括基本数据维护(图书类别管理,图书信息管理,和安全退出模块),“关于我们”只是简单的进行了一个展示。调用了一个JTextPane容器 进行文本框书写,在后面不在过多介绍。下面对这一模块的具体实现进行描述。

图6.2图书资料管理系统主界面

//设置JFrame最大化

this.setExtendedState(JFrame.MAXIMIZED_BOTH);

其添加事件的方法,点开Design然后在相关的需要添加事件的地方进行右击鼠标,找到Add event handler 下的action,再进一层点开actionPerformed。点击之后即可进行实际的事件添加,编写相应的代码。

图6.3添加功能方法图

代码如下:

public void actionPerformed(ActionEvent e) {

booktypeInter jbooktypeInter=new booktypeInter();

jbooktypeInter.setVisible(true);

table.add(jbooktypeInter);

6.3.2登陆界面

对于整个系统来说,无论是管理员还是普通读者,都必须登陆后才可以进行各种各样的操作。因此登陆界面的设计是本系统的关键。用户登陆必须输入用户名和密码,系统检测数据库中是否有该用户的信息以及密码是否正确,若符合要求则登陆成功,否者登陆失败。

登陆界面的设计如下:登陆界面通过添加相应的属性即可完成,不过区别在于这个时候要和数据库连接,检查数据库中是否有相应的管理员所以建立工具类Userdao。代码如下所示:

package java1.book.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java1.book.model.User;

/_*

  • 用户Dao类

  • @author 徐建国

_/

public class Userdao {

public User login(Connection con,User user)throws Exception{

User resultUser=null;

String sql=“select _from t_user where username=?and password=?”;

PreparedStatement pstmt=con.prepareStatement(sql);//结果集遍历

pstmt.setString(1, user.getUserName());

pstmt.setString(2, user.getPassword());

ResultSet rs=pstmt.executeQuery();

if(rs.next())

{

resultUser=new User();

resultUser.setId(rs.getInt(“id”));//获取id

resultUser.setUserName(rs.getString(“username”));//获取用户名

resultUser.setPassword(rs.getString(“password”));//获取密码

}

return resultUser;

}}

运行后界面如图所示:

图6.4图书资料管理系统登陆界面图

6.3.3图书信息添加界面

图书信息是本系统的基础。书籍管理包括书籍数据的添加和修改等功能,同时可以根据书籍的id号进行查询等功能。主要是对数据库中书籍表(t_book)的操作。本模块中的操作有“查询”“添加”“修改”“保存”“删除”。涉及对数据库的操作有查询、增加、删除、修改等。

1.若数据库中存在此书籍的信息,则将结果显示出来。

2.保存:当管理员新增或修改书籍信息后,需要将数据信息保存到数据库中,更新数据库的数据。操作完成后,可到数据库中查看信息是否保存成功。

3.删除:当书籍不存在时,管理员需要将数据库中书籍的信息删除,以防止数据的冗余。

对于修改操作的实现,本系统采用如下方法:当用户单击“修改”按钮后,系统将删除数据库中当前的书籍信息,等待用户填入新的信息后,必须单击保存按钮将新的信息保存到数据库中。对于添加操作同样要在填入新的信息后单击保存才可以。图书类别的添加主要包括图书类别名称和图书描述信息的添加。

(1)添加方法就是在添加按钮添加事件,进行调用。

图6.5图书类别的添加

/__

  • 图书类别添加事件处理

_/

private void bookTypeAddActionPerformed(ActionEvent evt) {

String bookTypeName=this.bookTypeNametxt.getText();

String bookTypeDesc=this.bookTypeDesctxt.getText();

if(Stringutil.isEmpty(bookTypeName)) {

JOptionPane.showMessageDialog(null, “图书类别不能为空”);

return;

}

Booktype booktype=new Booktype(bookTypeName,bookTypeDesc);

Connection con=null;

try {

con=dbutil.GetCon();

int n=booktypedao.add(con, booktype);

if(n==1) {

JOptionPane.showMessageDialog(null, “图书类别添加成功”);

resetValue();

}else {

JOptionPane.showMessageDialog(null, “图书类别添加失败”);

}

}catch(Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, “图书类别添加失败”);

}finally {

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

添加成功之后还会进行表格的刷新。

图6.5图书类别添加

在此还设置了重置按钮可以防止数据的误操作之后进行数据的恢复。

/_*

  • 重置表单

_/

private void resetValue() {

this.bookTypeNametxt.setText(“”);

this.bookTypeDesctxt.setText(“”);

}

(2)图书类别的修改主要是通过和数据库进行连接之后进行更新操作。

/_*

  • 图书类别修改记录 事件处理

  • @param evt

*/

private void bookTypeUpdateActionEvent(ActionEvent evt) {

String id=idTxt.getText();

String bookTypeName=bookTypeNameTxt.getText();

String bookTypeDesc=bookTypeDescTxt.getText();

if(Stringutil.isEmpty(id)) {

JOptionPane.showMessageDialog(null, “请选择要修改的记录”);

return;

}

if(Stringutil.isEmpty(bookTypeName)) {

JOptionPane.showMessageDialog(null, “图书类别不能为空”);

return;

}

Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );

Connection con =null;

try {

con=dbutil.GetCon();

int modifyNum=booktypedao.update( con, bookType);

if(modifyNum==1) {

JOptionPane.showMessageDialog(null, “修改成功”);

this.resetValue();

this.fillTable(new Booktype());

} else {

JOptionPane.showMessageDialog(null, “修改失败”);

}

}catch (Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, “修改失败”);

}finally {

try {

dbutil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}} }

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等

详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车免费领取!

前端视频资料:
eKEhYEH-1712322613386)]

[外链图片转存中…(img-AuEdBrUs-1712322613389)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-wF4Qo8eD-1712322613390)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等

详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车免费领取!

[外链图片转存中…(img-XOngOBet-1712322613390)]

前端视频资料:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/678225
推荐阅读
相关标签
  

闽ICP备14008679号