Java实现基于SQL server的图形化图书管理系统


一、前言

项目完成于2021/7/22,文章写于今天2021/8/20。开学大四,暑假目前随便找了个公司实习,做Java开发,发现自己的水平还远远达不到公司要求,因为本身是信息与计算科学专业的,属于数学类专业,相对于其他软件工程的实习生发现我欠缺的知识太多,开始学习Maven和Spring框架等等,现在想重构之前的项目,来总结一下经验。

这个项目是大三下学期的课程设计,要求一个图书管理系统,并且使用swing图形组件以及能使用数据库进行保存数据和增删改查。我和两个队友一起完成了这个项目,在班里拿到了比较好的成绩(基于初学者来说还不错),很多同学对于做这个项目表示很想抄一份,所以我也决定分享出来供大家参考学习。


二、运行环境

JDK:Java8(我用的),Java14(队友用的) 开发工具:eclipse2020.6 数据库:SQLserver2017(我,由于2019安装失败妥协于2017版本),SQLserver2019(队友) 额外的jar包:jdbc(这个不用多说),commons-codec-1.15.jar(用来MD5加密的) 数据库配置(重点):数据库库名:BMS ;表名:book,record, uuser

use BMS
CREATE TABLE record(  --借书记录表,依赖于uuser和book
snum bigint Identity(20210000000,1) PRIMARY KEY, --流水号
BN bigint Foreign Key References book(BN) not null,  --图书编号
id bigint Foreign Key References uuser(id) not null,  --借阅者学号
ldate date not null ,  --借书日期
bdate date  --还书日期,未还即为null
)
USE BMS
CREATE TABLE uuser(
id bigint PRIMARY KEY,
uname varchar(20) not null, 
upassword char(6) default 123456 not null,
uadmin int default 0 not null ,  --权限等级0为读者,大于0为管理员
idcard char(18) not null  --身份证号
ltwice int not null default 5  --可借阅次数
)

三、实现功能(简略)

1.用户登录

如图所示功能 以及一个隐藏登录方式,通过ctrl+alt+enter组合键以及正确的用户密码登录,进入超级管理员界面,这个超级管理员账户是写在代码里的,不存在数据库里。

KeyAdapter keyad = new KeyAdapter() {
          
   
		public void keyPressed(KeyEvent e) {
          
   
			if (e.isControlDown() && e.isAltDown() && e.getKeyCode() == KeyEvent.VK_ENTER) {
          
   
				type = 2;
				login1();
			}
			// 组合键
			if (!e.isControlDown() && !e.isAltDown() && e.getKeyCode() == KeyEvent.VK_ENTER)
				login();
		}
	};
public static boolean checkpassord(String id, String upassword) {
          
   
		if (id.equals("superadmin2018") && upassword.equals("superpassword2018")) {
          
   
			return true;
		} else {
          
   
			return false;
		}
	}

2.读者界面

后面两部分界面为同组成员完成,与主界面风格有些不同。

3.管理员界面

管理员界面如图所示

4.超级管理员界面

交作业最后一晚上我额外补充的,就把前面的界面拿来粘贴修改了一下,没有主界面

四、过程中遇到的问题以及解决方案

1.验证码功能

参考于博客园的一篇文章,直接复制来了验证码类的代码,并且直接套用了登录界面的图形进行修改

2.模态窗口设置

关于 Modal 窗体

3.对用户密码进行MD5加密

4.设置Jpanel的背景图片

五、存在问题

1.代码耦合度高,没有框架

其中有很多代码是过程中的测试代码,由于太乱,自己也不敢随便删了

2.没有防止SQL注入

六、项目文件以及代码

总结

经验分享 程序员 微信小程序 职场和发展