2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 数据库课程设计:图书借阅系统(Java+MySQL)

数据库课程设计:图书借阅系统(Java+MySQL)

时间:2022-08-04 03:01:17

相关推荐

数据库课程设计:图书借阅系统(Java+MySQL)

应粉丝要求,出个借阅系统swing版的,时间有些赶,可能还存在一些bug,不过不要紧,发现bug提给我,我逐个去修复与完善程序。

问题描述

实现简易版图书借阅管理系统,学生(读者)在系统里可以检索图书,借阅图书,归还图书,修改密码,查看个人借阅信息等功能;

管理员有书籍信息,学生(读者)信息,借阅信息维护等功能

需求分析

系统分为管理员账户,学生(读者)账户管理员账户可以进行书籍,学生(读者)信息的维护(CRUD)学生(读者)账户可以借书,还书,检索图书,个人借阅信息浏览

要点

开发语言:Java (jdk版本12+)

数据库:MySQL (版本8.0+)

工具:JDBC

交互场景:控制台

软件:IDEA(推荐),Navicat

项目构建:maven

数据库设计

实体关系:

数据库表设计:

注意:所有表的主键记得勾上自增

管理员表:

书籍表:

学生表:

借书表:

程序运行效果

1.登录验证:分读者与管理员两个身份,输入账号密码,校验通过即可进入系统,否则弹窗提示操作结果。

2.首页:读者进入系统后,首先看到的是首页,可在此处设置公告,书目推荐等信息。

3.检索:读者通过输入要查书本的ISBN或者书名即可查询

4.借还书籍:在表单输入要借图书的ISBN,点确认即可,会先确认该书是否还有库存,如果无,不能借阅成功,反之可以;表格显示的是当前登录用户的借阅信息,鼠标指针选中一行,点击右下角的还书,即可归还书籍。

5.个人信息:读者在此可以查看自己的个人信息,修改密码。

6.学生管理:管理员可以对学生(读者)信息进行多条件查询,新增,修改,删除。

\7. 书籍管理:管理员可以对书籍信息进行多条件查询,新增,修改,删除。

8.借阅一览:查看系统内部的借阅信息,可选中行删除记录。

9.数据汇总:重要指标数据汇总,如读者数量,书籍种类数量,库存总数等,可根据实际来调整。

部分程序

数据库连接工具类

package com.tushu.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class ConnDB {// 获取连接通道// Connection public static Connection getConnection() {Connection conn = null;// 1.加载驱动类try {// Mysql驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接通道String url ="jdbc:mysql://localhost:3306/bm?useSSL=false&serverTimezone=Asia/Shanghai";String user = "root";String password = "xxxxx";conn = DriverManager.getConnection(url,user,password);} catch (ClassNotFoundException e) {// 1.类名错误 2.外部jar没有引用e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}// 关闭资源public static void closeDB(ResultSet rs,Statement pst,Connection conn) {try {if(rs!=null) {rs.close();}if(pst!=null) {pst.close();}if(conn!=null) {conn.close();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {System.out.println(ConnDB.getConnection());}}

时间获取工具类

package com.tushu.utils;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class TimeTools {public static String getTime() {Date date = new Date();SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return dateFormat.format(date);}//获取当前时间往后一个月的时间public static String getTime2() {Date date = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MONTH, +1);SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return dateFormat.format(calendar.getTime());}}

CRUD方法封装类

package com.tushu.dao;import com.tushu.utils.ConnDB;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public abstract class BaseDAO {// 共通的增删改方法public int update(String sql,Object[] arr) {Connection conn = ConnDB.getConnection();PreparedStatement pst = null;try {pst = conn.prepareStatement(sql);//对占位符赋值for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}int row = pst.executeUpdate();return row;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return 0;}// 共通查询public <T>T select(String sql,Object[] arr){Connection conn = ConnDB.getConnection();PreparedStatement pst = null;ResultSet rs = null;T t = null;try {pst= conn.prepareStatement(sql);for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}rs = pst.executeQuery();// 对结果集的收集if(rs.next()) {// 收集对象的属性t = this.rowMapper(rs);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return t;}// 查询结果集合public <T> List<T> selectAll(String sql,Object[] arr){List<T> list = new ArrayList<>();Connection conn = ConnDB.getConnection();PreparedStatement pst = null;ResultSet rs = null;try {pst= conn.prepareStatement(sql);for (int i = 0; i < arr.length; i++) {pst.setObject(i+1, arr[i]);}rs = pst.executeQuery();T t = null;// 对结果集的收集while(rs.next()) {// 收集对象的属性t = this.rowMapper(rs);// 添加到集合list.add(t);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {ConnDB.closeDB(null, pst, conn);}return list;}// 定义方法 每个查询的结果集获取对应的属性public abstract <T> T rowMapper(ResultSet rs) throws SQLException;}

篇幅有限,就不在这里展示全部代码了。

完整源码=》

git@:yan-sheng-li/lend-system-win.git

本次分享到这!!!

下期见!!

拜拜!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。