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

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

目录:

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

项目框架

在这里插入图片描述

项目分包

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图书馆管理系统的开发

课程设计的目的与要求 课程设计目的软件工程课程设计是学习软件工程课程后所进行的实践环节,目的是培养学生用工程化的思想和标准文档化的思想进行软件开发。本次课程设计通过开发一个小型实用的软件系统,亲身体验软件生命周期中的各个环节,以加深对软件工程课程的深入理解、…

基于微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&#xf…

智慧图书馆中一般有哪些设备

图书馆在很多人心目中都是一个神圣的场所&#xff0c;但现实中去过图书馆的人们都知道&#xff0c;由于管理上的原因很多图书馆都会非常的嘈杂和混乱。而智慧图书馆的建设就是让图书馆重新变回宁静祥和的知识海洋&#xff0c;通过RFID技术打造智慧化设备为读者提供更好的学习阅…

自助借还系统——智慧图书馆的新体验

自助借还系统主要用于智慧图书馆图书自助借还、查询、续借等&#xff0c;具有多本书同时识别处理&#xff0c;多卡识别功能&#xff0c;红外线感应技术&#xff0c;内置人脸识别模块和协议标准&#xff0c;系统具有ISO1800-3、ISO15693物流网工作协议&#xff0c;可无缝对接智慧…

基于微信的图书馆服务系统的设计与实现

随着时代的快速进步&#xff0c;“互联网”一词概念逐渐深入人心&#xff0c;新兴产业蓬勃发展&#xff0c;传统产业深刻重塑。传统行业与互联网的结合成为了必然的趋势。在时代的大背景下&#xff0c;高校图书馆如何突破原有服务壁垒、精准把握需求&#xff0c;人性化服务&…

图书馆管理系统(一)

图书馆管理系统 项目说明项目内容&#xff08;1&#xff09;读者信息管理&#xff1a;&#xff08;2&#xff09;图书信息管理&#xff1a;&#xff08;3&#xff09;图书借阅管理&#xff1a;&#xff08;4&#xff09;基础信息维护&#xff1a;&#xff08;5&#xff09;用户…

馆员工作站,智慧图书馆自助借还系统

RFID馆员工作站是以计算机为基础&#xff0c;集成RFID读写装置&#xff0c;对RFID标签进行识别和流通状态处理&#xff0c;辅助以其他装置用于流通部门对粘贴有RFID标签及条形码的流通资料进行快速的借还操作&#xff0c;以此提高工作人员的借还工作效率。同时能够通过扫描图书…

24小时智慧图书馆解决方案,校园智能微型图书馆

校园24小时智慧图书馆的建设&#xff0c;与学校图书馆总馆之间实现信息实时交互并提供24小时自助服务&#xff0c;24小时智能微型图书馆让学生就近借书、就近阅读&#xff0c;创造良好便利的阅读环境&#xff0c;激发学生阅读需求&#xff0c;营造浓厚的校园阅读文化氛围。 24小…

图书借阅管理系统

1、系统概述 图书借阅管理系统由管理员系统和用户系统两个子系统构成。用户运行程序后可按程序说明进入子系统&#xff0c;输入“1”进入管理员系统&#xff0c;输入“2”进入用户系统。图书信息和读者信息均用文件存储。 管理员系统&#xff1a; 新增图书&#xff1a;管理…

图书馆管理系统UML各种图

1用例图 主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】&#xff1a;帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下&#xff1a;actor、usecase、子系统、四中关系&#xff…

智慧图书馆解决方案-最新全套文件

智慧图书馆解决方案-最新全套文件 一、建设背景二、思路架构三、建设方案四、获取 - 智慧图书馆全套最新解决方案合集 一、建设背景 现下&#xff0c;传统图书馆已经难以适应时代的发展&#xff0c;图书盘点繁琐、管理模式落后、阅读时间和场地受限等问题&#xff0c;迫使传统…

学校图书馆管理系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;学校图书馆管理系统当然也不能排除在外。学校图书馆管理系统是以实际运用为开发背景&#xff0c;运用软件工程开发方法&…

2021中国大学生程序设计竞赛(CCPC),烤仔与你不见不散!

今天也是见到超多学霸的一天呢&#xff01; 因为&#xff0c;CCPC 的参赛选手们来看烤仔啦&#xff01;北京航空航天大学、北京交通大学等高校共 95 名总决赛参赛选手在 5 月 28 日来到 Conflux 参观、交流。 由中国大学生程序设计竞赛组委会主办&#xff0c;Conflux 、旷视等…

HTML+CSS鲜花静态网页设计

&#x1f4c2;文章目录 一、&#x1f468;‍&#x1f393;网站题目二、✍️网站描述三、&#x1f4da;网站介绍四、&#x1f4a0;网站演示五、⚙️ 网站代码&#x1f9f1;HTML结构代码&#x1f492;CSS样式代码 六、&#x1f947; 如何让学习不再盲目七、&#x1f381;更多干货…

客厅窗帘要安装纱帘吗?怎么选择纱帘?-好佳居窗帘十大品牌

窗帘是我们常见的&#xff0c;但是客厅窗帘有必要装纱帘&#xff1f;很多人在选择窗帘的时候纠结要不要加一层纱帘。这种纠结可能不仅仅是选择的困难&#xff0c;纱帘的具体功能性也不是那么好理解。别急&#xff0c;我们来看看。 客厅窗帘要不要安装纱帘&#xff1f; 众所周知…

web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于STM32设计的智慧浇花系统(华为云IOT)

1. 前言 随着社会的不断发展和人们生活水平的逐渐提高,人们逐渐追求高质量的生活,很多人都会选择在家里或办公室种植一些花卉以净化家庭空气,陶冶情操,但是很多人忙于工作、学习、出差、旅游或者一些其他的原因,不能及时地对花卉进行照料,短时间内导致很多花卉因缺水分而…

c#温室监控系统

上位机采用串口与下位机信&#xff0c;使用modbus通信协议控制和采集数据 可以参考一下&#xff08;直接翻到modbus的章节&#xff09;&#xff1a; MODBUS技术协议&#xff08;第三章&#xff09;.pdf chuan/临时的 - 码云 - 开源中国 (gitee.com) 首先实现通信用的modbus…

es6 filter方法_极其有用的JavaScript数组方法,可提高您的编码技能

随着ES6的开始&#xff0c;在javascript语言中添加了许多改进以改进javascript编码标准。 今天&#xff0c;我们将看到一系列非常有用的数组方法&#xff0c;这些方法将提高您的编码技能。因此&#xff0c;让我们深入了解它。 数组 该Array.of语法如下 Array.of(element0[, ele…

互联网快讯:荣耀打响重回海外第一枪;极米投影产品成双十一爆款;工业富联发起灯塔领航计划

国内要闻 《2021胡润百富榜》发布&#xff1a;农夫山泉创始人钟睒睒以3900亿元首次成为中国首富&#xff0c;抖音创始人张一鸣跃居第二&#xff1b;荣耀打响重回海外第一枪&#xff1a;多国市场发布荣耀50系列&#xff0c;已恢复与主流运营商及渠道商合作&#xff1b; 3、财富…