图书馆管理系统(数据库版)

目录:

  • 图书馆管理系统(数据库版)
  • 项目框架
  • 项目分包
  • 数据库列表
  • 代码分析
    • 工具包
    • 所用到的接口:
  • 分享一波:
  • 总结:

项目框架

项目分包


上面为本次项目的分包建包示意图,大概的内容分类便是如此(dao为数据访问层,entity为实体类包,service为业务逻辑层,util为工具类包,view为UI界面包)

数据库列表

代码分析

工具包

在本次项目中,用到一些可以通用的代码,这里把它们编写为了工具类(即util包中的类)
BookUtils类:

import dao.LogDao;
import dao.impl.LogDaoImpl;
import entity.Book;
import entity.Log;
import entity.User;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;//书籍工具类
public class BookUtils {User user = new User();LogDao logDao = new LogDaoImpl();//罚金方法public void cost(int book_id,String type) throws ParseException {Date nowDate = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String borrow_time = logDao.viewBorrowTime(book_id);//获取借书时间String return_time = sdf.format(nowDate);//获取归还时间Date d1 = sdf.parse(borrow_time);//借出时间Date d2 = sdf.parse(return_time);//归还时间long charge = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);if (charge <= 7){System.out.println("该书籍被您借出" + charge + "天,"+"感谢您规范用书!");}else {if (type.equals("学生")){System.out.println("该书籍被您借出"+ charge + "天,"+"已逾期"+(charge-7)+"天,您需要缴纳罚金:"+(charge-7)*5+"元,谢谢配合!");}else {System.out.println("该书籍被您借出"+ charge + "天,"+"已逾期"+(charge-7)+"天,您需要缴纳罚金:"+(charge-7)*3+"元,谢谢配合!");}}}//书籍Id限定public int idLimit(List<Book> books) {Scanner scanner = new Scanner(System.in);List<Integer> borrowedId = new ArrayList<>();//存放id的集合int book_id = 0;//id输入boolean flag = true;//增强for,遍历集合取出id存放在borrowedIdfor (Book book: books){borrowedId.add(book.getBook_id());//借阅书籍Id集合}while (flag){book_id = scanner.nextInt();//增强for,遍历并对比输入的idfor (Integer e : borrowedId){if (book_id == e){flag = false;}}if (flag){System.out.println("书籍Id输入错误,请重新输入:");}}return book_id;}
}

InputUtils类:对于输入的内容进行类型和范围的判断

package util;import java.util.Scanner;public class InputUtils {Scanner scanner = new Scanner(System.in);@SuppressWarnings({"all"})//int类型输入判断public int input() {while (!scanner.hasNextInt()) {//没有这一行的话会导致无限循环String input = scanner.next();System.out.println("不是数字,重新输入");}//当是数字时循环结束int inputNum = scanner.nextInt();return inputNum;}//double类型输入判断public double inputDouble() {while (!scanner.hasNextDouble()) {//没有这一行的话会导致无限循环String input = scanner.next();System.out.println("不是数字,重新输入");}//当是数字时循环结束double inputNum = scanner.nextDouble();return inputNum;}//double范围判断public double scopeDouble(double inputNum) {InputUtils inputUtils = new InputUtils();while (true) {if (inputNum < 0) {System.out.println("请输入正确的数字");inputNum = inputUtils.inputDouble();}else {break;}}return inputNum;}//int范围判断public int scope(int inputNum,int scope) {InputUtils inputUtils = new InputUtils();while (true) {if (inputNum > scope || inputNum < 1) {System.out.println("请输入正确的数字");inputNum = inputUtils.input();}else {break;}}return inputNum;}
}

ModifyUtils类:用户修改电话号码的类

package util;import java.util.Scanner;import static util.RegisterUtils.validateMobilePhone;public class ModifyUtils {//修改电话public String modifyPhone(){Scanner scanner = new Scanner(System.in);System.out.println("请输入新的电话号码:");String newPhone = scanner.next();while (!validateMobilePhone(newPhone)){System.out.println("输入错误,请重新输入(电话号码为11位)");newPhone = scanner.next();}return newPhone;}public String modifyPassword(){Scanner scanner = new Scanner(System.in);System.out.println("请输入新密码:");String newPassword = scanner.next();return newPassword;}}

RegisterUtils类:对于用户名、性别、电话、类型的判断

package util;import dao.impl.AdminDaoImpl;
import dao.impl.UserDaoImpl;import java.util.Scanner;
import java.util.regex.Pattern;public class RegisterUtils {//用户用户名判断public boolean nameProve(String user_name) {UserDaoImpl userDao1 = new UserDaoImpl();if (null != userDao1.nameProve(user_name)) {return false;} else {return true;}}//管理员用户名判断public boolean adminNameProve(String admin_name) {AdminDaoImpl adminDao1 = new AdminDaoImpl();if (null != adminDao1.nameProve(admin_name)) {return false;} else {return true;}}//性别判断public String sexProve(String sexNum) {String sex = null;if (sexNum.equals("1")) {sex = "男";return sex;} else if (sexNum.equals("2")) {sex = "女";return sex;} else {System.out.println("输入错误,请重新输入(1、男 | 2、女)");return null;}}//电话判断public static boolean validateMobilePhone(String in) {Pattern pattern = Pattern.compile("^[1]\\d{10}$");return pattern.matcher(in).matches();}//类型判断public String typeProve ( String typeNum){String type = null;if (typeNum.equals("1")) {type = "学生";return type;} else if (typeNum.equals("2")) {type = "教师";return type;} else {System.out.println("输入错误,请重新输入(1、学生 | 2、教师)");return null;}}
}

上面便是这次使用到的工具类,把他们封装成方法,使用起来更加的快捷与方便。

所用到的接口:


上图所示接口为数据访问层的连接接口,是与数据库相连的,对于数据库数据进行操作的接口,他连接着数据访问层的代码与业务逻辑层的代码。

这两个接口是连接UI层与业务逻辑层代码的枢纽。

分享一波:

链接:https://pan.baidu.com/s/10jCeuEIRaiUR5cbjgz3g3Q
提取码:klmn

总结:

以前写过一次没有用到数据库的图书馆管理系统,在以往的作品中,这次写的是连接数据库后所编写的图书馆管理系统,是自己对于三层架构与数据库的项目练习,通过这次项目的编写,是自己对于三层架构与数据库相关知识拥有了一个相对透彻的理解。

图书馆管理系统(数据库版)相关推荐

  1. php语言设计图书管理系统,图书馆管理系统PHP版_7tmu7b

    图书馆管理系统PHP版_7tmu7b 所属分类:其他 开发工具:PHP 文件大小:15765KB 下载次数:0 上传日期:2020-11-22 11:12:53 上 传 者:ygrdmbji 说明:  ...

  2. Microsoft-pubs(图书馆管理系统)-数据库设计

    ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本  View Code 1.C,功能实现代码 本文转自ylb ...

  3. 图书馆管理系统数据库设计与实现--用于学完SQL/MYSQL练手

    图书馆管理系统数据库设计与实现 数据库设计大作业

  4. c语言图书借出归还系统,c语言图书馆管理系统(codeblocks版).docx

    c语言图书馆管理系统(codeblocks版) /* *图书馆管理系统 *@author 琴卓 *@time 2015-12-10 */#include#include#include#include ...

  5. 图书馆管理系统重构(数据库版)

    前言 之前和同学合作开发了一个通过I/O流实现的图书馆管理系统,具体可以看我之前写的博客(Java实战-基于I/O流设计的图书馆管理系统项目总结),在学习了数据库之后,我们基于之前的项目,合作完成了这 ...

  6. MySQL数据库期末项目 图书馆管理系统

    1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理,其中每天的业务和操作流程非常繁琐复杂,纸质版的登记信息耗费了大量的人力物力.因此图书馆管理 ...

  7. 美萍超市销售管理系统标准版access数据库密码mp611

    美萍超市销售管理系统标准版access数据库密码mp611 作者:admin  来源:本站  发表时间:2015-10-14 19:01:43  点击:199 美萍超市销售管理系统标准版access后 ...

  8. 图书馆管理系统的数据库设计

    图书馆管理系统的数据库设计 --学生表 CREATE TABLE stu_info( --学号 stu_num varchar(10) primary key, --姓名 stu_name varch ...

  9. java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件

    java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 java计算机毕业设计图书馆管理系统源码+系统+mysql数据库+LW文档+部署文件 本源码技术栈: 项目架构:B ...

  10. 计算机毕业设计Java阿博图书馆管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java阿博图书馆管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java阿博图书馆管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

最新文章

  1. swift5.给系统类添加便利构造函数
  2. python删除重复值所在的行数_python – 在last中删除具有重复值的行
  3. MapReduce的shuffle阶段
  4. 白鹭引擎egret wing编辑器提示报错 egret 命令不存在 乱码的情况解决方法
  5. 如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
  6. python编程是干嘛的-编程小白必看!Python到底能做什么?
  7. C#读写三菱Fx PLC 使用Fx 串口协议 读写Fx3U设备
  8. python之word2vec实战学习
  9. 深入了解字符集和编码
  10. [收藏]DIV中控制超级链接的方法
  11. 达梦数据库启用日志方法,达梦数据库查看日志是否启用,达梦数据库日志文件位置查找
  12. 网易云音乐突破版权限制
  13. html导航栏自动调间距,HTML CSS导航栏间距
  14. 2022 年 Flutter 适合我吗?Flutter VS Other 量化对比
  15. 高等数学---向量解析几何
  16. 什么是DNS污染?DNS污染怎么办怎么解决?
  17. 音视频数据处理入门:AAC音频码流解析
  18. 解决Word2010中插入图片时变成空白框问题
  19. Easy Excel 使用总结
  20. 国际战略中aaa模式_AAA游戏中的微交易将继续存在(但仍然很糟糕)

热门文章

  1. vb access mysql数据库教程_vb操作access数据库的方法
  2. 解决idea谷歌翻译插件不可用
  3. 远程医疗监护系统开发
  4. 基于SSM【爱校图书馆管理系统】附源码+论文
  5. 附和导线平差程序(by C#)
  6. MATLAB软件安装教程
  7. YDOOK:MyPLayer:Jinwei Lin 最新开源 Python 音频视频基本播放器
  8. [19保研]厦门大学软件学院暑期夏令营招生简章
  9. 获取QQ好友列表接口分析
  10. 台式计算机声音输出方式在哪里,电脑声音无法找到输出设备怎么办?