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

article/2025/11/9 10:02:20

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

目录:

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

项目框架

在这里插入图片描述

项目分包

在这里插入图片描述
上面为本次项目的分包建包示意图,大概的内容分类便是如此(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

总结:

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


http://chatgpt.dhexx.cn/article/o9xow6et.shtml

相关文章

图书管理系统(数据库)

一、项目分析 1、项目功能分析 项目功能模块主要分为三个模块&#xff0c;登录模块、管理员模块、操作员模块。 登录模块包括登录功能&#xff0c;注册功能&#xff0c;登录日志功能&#xff0c;修改密码以及找回密码。 管理员模块包括工作日志功能、图书借阅金额设定、操作员…

数据库系统设计大作业:图书馆管理系统

数据库系统设计大作业&#xff1a;图书馆管理系统 参考https://blog.csdn.net/dimo__/article/details/84936685中的设计思路&#xff0c;设计了本系统 1 需求分析 针对图书馆的图书管理系统数据库设计&#xff0c;分别对图书馆的读者、一般工作人员和部门负责人进行详细地分…

简单用数据库实现图书管理系统

目录 一、摘要 2、基本功能 二、前言 三、主体 3.1需求分析 3.1.1 数据需求分析 3.1.2 功能需求分析 3.2概要设计 3.2.1 数据字典 3.2.2 ERD&#xff08;实体关系图&#xff09; 3.2.3 DFD数据流图 3.3 逻辑设计 3.3.1 E-R模型向关系模型的转换规则 3.3.2 E-R图转…

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

1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理&#xff0c;其中每天的业务和操作流程非常繁琐复杂&#xff0c;纸质版的登记信息耗费了大量的人力物力。因此图书馆管理系统应运而生&#xff0c;该系统采用智能化设计&#…

tar文件是什么?怎么解压?

例如在使用coco数据集的时候&#xff0c;下载下来是这样的两个文件&#xff1a; 恕我无知&#xff0c;之前完全没见过这种格式的文件。 经过一番咨询&#xff0c;原来是一种压缩文件&#xff0c;里面藏了很多内容&#xff0c;看它的大小就能猜到。 这种文件一般的压缩软件貌似…

常用的tar解压命令总结

&#xff8d;^ヽ&#xff64;  /⌒&#xff64;  ,   |  &#xffe3;7  (⌒r⌒7/   レ   &#xff3c;/&#xffe3;&#xff3c;&#xff63; &#xff3f;/         { _&#xff8c; ●       ゝ _人   ο  ●  ナ   ト&#xff64;&…

linux中.tar文件怎么解压

linux中.tar文件怎么解压 1、打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar.bz2 pack/ #打包压缩为一个.bz2格式的压缩包 tar -Jcvf pack.tar.xz pack/ #打包压缩为一个.xz格式的压缩包 2、解…

Linux 解压tar

Linux系统中tar压缩包怎么解压&#xff1f;Linux系统中有一个tar压缩包格式的文件需要解压&#xff0c;但是linux系统中没有找到tar的命令&#xff0c;该怎么办呢&#xff1f;下面我们就来看看详细的教程&#xff0c;需要的朋友可以参考下 在Linux的默认的版本中不是所有的命令…

解压缩命令tar zip rar

文章目录 打包和压缩的概念tar常用独立命令打包压缩查阅tar包内有哪些文件解压缩到指定目录(默认是当前目录)只将tar内的部分文件解压出来其他命令(其他) zip和unziprar和unrar 打包和压缩的概念 tar命令可以为linux的文件和目录创建档案 利用tar&#xff0c;可以为某一特定文件…

【hardware】什么是H桥电路?

前言 初玩智能车的小伙伴肯定会涉及到驱动电机正反转的时候&#xff0c;那么该如何控制智能车呢&#xff1f;这就要讲到双H桥了&#xff0c;让我来给你们分析吧&#xff01; 1.三极管 讲到双H桥&#xff0c;那么首先得介绍两种三极管&#xff0c;S8550&#xff08;PNP型&#x…

关于H桥的理解和应用

很多用电器对电源极性要求不高&#xff0c;如点灯&#xff0c;正反接都可以工作&#xff0c;而且现象都差不多&#xff0c;也有的用电器对电源极性敏感&#xff0c;而且接反了就不工作&#xff0c;例如多数半导体器件&#xff0c;LED等&#xff1b;但也有的用电器对电源极性敏感…

H桥驱动电路原理【转】

H桥驱动电路原理 一、H桥驱动电路 图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿&#xff0c;而电机就是H中的横杠&#xff08;注意&#xff1a;图4.12及随后的两个图都只是示意图&#xff0c;而…

STM32F1基于H桥的电机控制程序分析

这里写自定义目录标题 N-MOS H桥结构控制原理MOS驱动调速的实现控制程序编写 N-MOS H桥结构 控制原理 N-MOS的G极与S级的电压差大于某一值的时候&#xff0c;D极和S极之间导通&#xff0c;DS电阻极小&#xff0c;可看作导线&#xff0c;否则DS之间视为断路。 因此有以下控制方…

一份很用心的H桥驱动扫盲教程

什么是H桥&#xff1f; H桥是一个比较简单的电路&#xff0c;通常它会包含四个独立控制的开关元器件&#xff08;例如MOS-FET&#xff09;,它们通常用于驱动电流较大的负载&#xff0c;比如电机&#xff0c;至于为什么要叫H桥&#xff08;H-Bridge&#xff09;&#xff0c;因为…

电机控制-H 桥电路 控制方式简单解析

声明&#xff1a;本片文章来自互联网&#xff0c;侵删 电机控制-H 桥电路 控制方式简单解析 什么是H桥一. 开关状态1.1、正转1.2、反转1.3、调速 二. 停止状态2.1 第一种停止方式2.1 第二种停止方式 什么是H桥 H桥是一个比较简单的电路&#xff0c;通常它会包含四个独立控制的…

PWM驱动MOS管H桥电路

H桥是一个典型的直流电机控制电路&#xff0c;因为它的电路形状酷似字母H&#xff0c;故得名与“H桥”。4个三极管组成H的4条垂直腿&#xff0c;而电机就是H中的横杠&#xff08;注意&#xff1a;图中只是简略示意图&#xff0c;而不是完整的电路图&#xff0c;其中三极管的驱动…

基于STM32的电机--直流有刷电机H桥驱动的不同模式分析

文章目录 直流电机驱动设计1.电机驱动硬件配置2.电机驱动电路分析简单正向电路最简单的电机正反转电路H桥电路分析受限单极模式单极模式双极模式 减速电机的重要参数 直流电机驱动设计 1.电机驱动硬件配置 直流电机旋转&#xff1a;给电机提供两根线&#xff0c;以提供电压正…

深入浅出H桥驱动电路

什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为长得比较像字母H,具体如下图所示; 这里有四个开关元器件Q1,Q2,Q3,Q4,另外还有一个直流电机…

mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com)

来源&#xff1a; mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com) 一、mos管H桥电路 图1中所示为一个典型的直流电机控制电路。 电路得名于“H桥驱动电路”是由于它的外形酷似字母H。4个三极管组成H的4条垂直腿&#xff0c;而电机就是H中的横杠&#xff08;留意&…

【开源电机驱动】H 桥驱动-硬件篇

原文地址&#xff1a;http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge_drivers/ 本文翻译校正稿件&#xff0c;含有译者批注 H-Bridge Drivers H 桥驱动-硬件篇 Introduction 引言 In the previous installment of the series we’ve gone through…