图书馆管理系统重构(数据库版)
前言
之前和同学合作开发了一个通过I/O流实现的图书馆管理系统,具体可以看我之前写的博客(Java实战-基于I/O流设计的图书馆管理系统项目总结),在学习了数据库之后,我们基于之前的项目,合作完成了这一个带数据库版本的图书馆管理系统。
两位和我合作的同学博客:小张报道的博客、隔壁皮皮王的博客
项目具体内容
本次的图书馆管理系统的基本功能大体可以参考之前I/O流版本的图书馆管理系统所具有的功能(Java实战-基于I/O流设计的图书馆管理系统项目总结)。
省流小助手:
数据库
因为本次项目需要用到mysql数据库,我们需要在项目开始前设计好数据库表的内容,我具体设计了四个表(这里设计表的时候我借鉴了博主LeKie1的博文图书馆管理系统(Java Mysql)),分别为:
- book表:存放图书馆中书籍的信息,包括书籍编号、ISBN、书名、书籍价格、作者、出版社、书籍类型和借出状态
- admin表:存放管理员信息,包括管理员id、管理员用户名、管理员登录的密码
- user表:存放用户信息,包括用户id、用户名、用户密码、用户性别、用户的电话和用户类型
- borrow表(借还书日志),日志id、书籍编号、用户id、借书时间和还书时间
表内容设置具体如下图所示:
代码部分
在学习了三层架构后,本次项目我们采用了三层架构的设计,具体代码结构比之前更加清晰,提高了代码可读可写性,方便了代码的开发和纠错,具体的代码结构如下图所示:
具体代码内容过多,我会将内容打包发到网盘在文章最后分享出来,这里分享两个在本次项目中用到的比较好用的方法:
int类型数据输入类型判断:
这是一个我在该项目中经常用到的方法,该方法对于项目中经常进行的int类型数据的数据验证非常方便,同样的还有double类型数据输入的判断,将下列代码中的int和hasNexInt改成double和hasNexDouble就可以了,可以说是非常的人性。
public int input() {while (!scanner.hasNextInt()) {//没有这一行的话会导致无限循环String input = scanner.next();System.out.println("不是数字,重新输入");}//当是数字时循环结束int inputNum = scanner.nextInt();return inputNum;}
电话号码判断:
该方法解决了在用户注册和用户修改电话号码时判断用户输入的电话号码是否符合规范,防止用户输入非正确格式的电话号码
public String modifyPhone(){Scanner scanner = new Scanner(System.in);System.out.println("请输入电话号码:");String Phone = scanner.next();while (!validateMobilePhone(Phone)){System.out.println("输入错误,请重新输入(电话号码为11位)");Phone = scanner.next();}return Phone;}
结语:
本次数据库版的图书馆管理系统的重构,增强了我对数据库、jdbc、三层架构和设计模式的理解以及git远程仓库的使用,对于团队合作完成项目也有了更深的理解,在之后的学习中,可能还会有新的挑战等着我,我将以积极的心态迎接这些新的挑战。
悄悄的分享:
csdn链接:library-management-system.rar
百度网盘链接:https://pan.baidu.com/s/1GalEWoP7ml_2HR3E5P6nqg
提取码:bjkz
图书馆管理系统重构(数据库版)相关推荐
- 图书馆管理系统的数据库设计
图书馆管理系统的数据库设计 --学生表 CREATE TABLE stu_info( --学号 stu_num varchar(10) primary key, --姓名 stu_name varch ...
- Java+MySQL学生选课与成绩管理系统(数据库版)
一.项目要求 学生选课与成绩管理系统(数据库版) 1.配置MySQL数据库 2.利用java+MySQL实现系统各个功能 3.功能包括: (1)系统交互界面,如下图所示 (2)学生信息的增删改查.学生 ...
- Oracle图书馆借阅管理数据库,图书馆管理系统Oracle数据库平台升级研究
随着现在计算机网络的发展,数字化图书凭着其发行的速度快.借阅的方便,并且没有时间和空间的限制逐渐成为未来图书馆发展中的一种趋势.我图书馆使用了汇文文献信息服务系统,该系统是江苏省教委资助,江苏省高校合 ...
- 数据库课程设计-图书馆管理系统(1.数据库分析部分)
图书馆管理系统第一部分,数据库分析. 主要是需求分析.设计概要模块.数据库概念结构设计(E-R图).数据库逻辑结构设计(表.存储过程.触发器) 目录 1. 需求分析 1.1 数据流图 1.2 数据字典 ...
- [Java] 自己写图书馆管理系统(详细版)
目录 一.简介 二.需求 三.具体设计 一.大纲 二.分析过程 三.小结 1.整体流程 2.ListBookOrderByXXXCommand 3.匿名类对象语法知识点 4.类和对象(面向对象设计) ...
- 图书馆管理系统(简易版)
在图书馆管理系统中首要有两个角色,普通用户(1.查找书籍.2.借阅书籍.3.归还书籍)与管理员(1.查找书籍.2.增加书籍.3.删除书籍.4.打印所有的书籍信息).在我们设计类的过程中 ,可从需求中找 ...
- 图书管理系统(数据库版)
1.项目前提 (1) 掌握Java基本语法 (2) 熟悉使用控制流程 (3) 理解面向对象思想 (4) 熟练封装.继承和多态 (5) 熟悉使用接口和异常 (6) 熟悉使用集合 (7) 熟悉掌握I/O流 ...
- c语言图书管理系统 - 链接数据库版(MySQL)
大一常见作业 使用vs 2022编写,若使用dev c++可酌情修改(如scanf_s修改为scanf) 比较简陋,可自行修改 功能概述 管理员功能 添加书籍信息(会存入数据库内) 显示书籍信息 查找 ...
- mysql智能停车场,jsp357智能停车场管理系统 双数据库版 mysql
资料介绍 提 示: 电脑 先解压,暴风影音 看 电脑 先解压,暴风影音 看 电脑 先解压,暴风影音 看 论文编号: jsp357 语言+数据库: jsp+sql2008+mysql 论文字数: 125 ...
最新文章
- VS遇到的各种bug
- 猫猫学IOS(二十四)UI之注册案例
- bash之预定义变量
- 【数字信号处理】傅里叶变换性质 ( 共轭对称、共轭反对称 与 偶对称、奇对称关联 | 序列对称分解定理 )
- form select multiple 某个字段是数组_Hive取非Group by字段数据的方法
- JSON数据表示格式简介(JavaScript对象表示法)
- Duilib开发环境搭建
- BZOJ - 2186 欧拉函数
- 200多位大牛!2019两院院士拟推荐候选人最新名单
- python数据格式化后导入数据库_MySQL导入格式化数据
- 基于vc的freetype字体轮廓解析_才一年,长安又换新LOGO,连带字体也升级了,你喜欢吗?_搜狐汽车...
- Caffe安装 (OPENCV4 Cuda10.2 Xavier)
- 将靠父id的层级关系处理成编码形式
- 计算机使用hdmi需要设置方法,如何在计算机显示器上切换HDMI
- 计算机科学与专业大学排名,计算机科学与技术专业大学排名
- 技术牛人---章文嵩博士---做系统要先了解业务的需求
- vue多次引用组件,减少每个页面import的方法
- 08s01 mysql_Mysql:SQL 错误 [08S01]: Communications link failure
- docker学习笔记(二)docker常用命令
- RTX3050、3050Ti相当于什么水平?