文章目录

  • 一、前言
  • 二、运行环境
  • 三、实现功能(简略)
    • 1.用户登录
    • 2.读者界面
    • 3.管理员界面
    • 4.超级管理员界面
  • 四、过程中遇到的问题以及解决方案
    • 1.验证码功能
    • 2.模态窗口设置
    • 3.对用户密码进行MD5加密
    • 4.设置Jpanel的背景图片
  • 五、存在问题
    • 1.代码耦合度高,没有框架
    • 2.没有防止SQL注入
  • 六、项目文件以及代码
  • 总结

一、前言

项目完成于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 book(
BN bigint Identity(180000000,1) PRIMARY KEY, --书籍编号
bname varchar(20) not null,  --书名
au varchar(20) not null, --作者
pbc varchar(20) not null , --出版社
bcount int not null  --借阅次数
)
insert book(bname,pbc,au,bcount) values
('造彩虹的人','东野圭吾','北京十月文艺出版社',2),
('大雪中的山庄','东野圭吾','北京十月文艺出版社',3),
('数据库概念','希尔伯','机械工业出版社',8),
('人间失格','太宰治','作家出版社',2),
('java语言','孙元','清华大学出版社',3),
('黑客与画家','黑客','黑客出版社',5),
('数据库原理','徐云彪','浙江大学出版社',4),
('计算机网络','徐福','中国出版社',4),
('数据结构','严蔚敏&吴伟民','清华大学出版社',7),
('解忧杂货店','东野圭吾','南海出版社',6),
('C程序设计','谭浩强','清华大学出版社',7),
('实变函数','程其襄&张奠宙','高等教育出版社',9),
('梦溪笔谈','沈括','北京燕山出版社',5)
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.验证码功能

参考于博客园的一篇文章,直接复制来了验证码类的代码,并且直接套用了登录界面的图形进行修改
https://www.cnblogs.com/yang2000/p/11565412.html

2.模态窗口设置

点击注册以后弹出来的注册窗口想设置为模态窗口,但是没有直接设置的功能,类似于确认的对话框,不完成注册操作是不能切换窗口的
参考CSDN的作者为Rockey一篇文章

关于 Modal 窗体

在 Swing 中只有 JDialog 可以设置为 Modal 窗体,其方法可以在构造函数(例如“JDialog(Frame owner,
boolean modal)”)中传参数,也可以用 setModal(boolean b) 方法设定,这个方法是从 Dialog 类继承的。
———————————————— 版权声明:本文为CSDN博主「Rockey」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/grock304/article/details/1425711

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

参考于CSDN中,作者:JarVv的文章
https://blog.csdn.net/Archer_M/article/details/79884593

4.设置Jpanel的背景图片

参考文章太多,不记得作者了,大概思路就是写一个Mpanel类继承Jpanel类
重写了Jpanel类的构建窗体函数,把图片添加进去。
设置圆形Jbutton也类似,这个Jbutton在读者界面,由组员完成。

五、存在问题

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


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

2.没有防止SQL注入

六、项目文件以及代码

项目已上传CSDN
https://download.csdn.net/download/weixin_44745548/21383085
压缩包里附带了所需jar包以及背景图片资源
其中数据库部分请参考上文运行环境
也可以加我QQ获取项目
QQ:2856868725

总结

第一次做项目有些粗略,目前还在学习,学成后考虑将此项目改为Javaweb项目,或者添加一些框架重构代码,有什么问题也欢迎加QQ交流。

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

  1. 图书管理系统 java 源码_[源码和文档分享]基于C语言和SQL SERVER数据库实现的图书管理系统...

    摘 要 本文根据<数据库应用系统设计>课程要求而做.选择图书馆管理系统设计与开发是因为觉得图书馆管理系统对我们的帮助很大,并且经常去图书馆,对图书馆的大部分功能及流程还是比较了解,而且现在 ...

  2. [转]基于SQL Server 2008 Service Broker构建企业级消息系统

    http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroker 1.引言 Microsoft 在SQL Serve ...

  3. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.1 窗口函数的背景...

    本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.1节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...

  4. 基于Sql Server 2008的分布式数据库的实践(一)

    原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...

  5. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.7 小结

    本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.7节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...

  6. 基于Sql Server 2008的分布式数据库的实践(五)

    基于Sql Server 2008的分布式数据库的实践(五) 原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------ ...

  7. 基于Sql Server 2008的分布式数据库的实践(三)

    原文 基于Sql Server 2008的分布式数据库的实践(三) 配置PHP 1.打开PHP配置文件,找到extension=php_mssql.dll,将前面的注释符号去掉 2.找到mssql.s ...

  8. 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...

    本节书摘来自异步社区出版社<T-SQL性能调优秘笈--基于SQL Server 2012 窗口函数>一书中的第1章,第1.2节,作者: [美]Itzik Ben-Gan,更多章节内容可以访 ...

  9. 谈谈基于SQL Server 的Exception Handlingp[下篇]

    六.SqlException 在上面一节中,我给出了一个完整的例子说明了:如何在将message定义在sys.messages中保证message的一致性和可维护性:如何在Stored procedu ...

最新文章

  1. php fpm error,关于启动php-fpm失败的解决办法
  2. 《MS SQL Server 2000管理员手册》系列——8. 管理 Microsoft SQL Server 服务
  3. excel学习range
  4. har后缀文件怎么提取?
  5. UDS 安全认证29服务概述
  6. 百度智能云NIRO MAX机器人,打造智慧党建新体验!
  7. 绩效考核方法有哪些?这四种你知道几个?
  8. Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查
  9. 【web素材】16—激发你开发灵感的十大创意网站菜单示例效果
  10. 岗位和职责和划分在测试团队中的重要性
  11. 喜报接连,闪马智能与创始人兼CEO彭垚斩获猎云网、雷锋网多项奖项
  12. process has died
  13. 检测U盘插入并自动备份自定义文件下的文件(支持增量更新)
  14. 中南林业科技大学第十一届程序设计大赛 D 最大的湖
  15. Linux文件读取操作:read函数的使用
  16. 光伏发电与“鸭子曲线”
  17. css-doodle学习教程
  18. 基于vue2+element+springboot+mysql+jpa+mybatis的图书管理系统
  19. WAMP启动报The configuration file contains a syntax error
  20. 16代表啥_出道12年33岁当选,新晋金鹰女神,宋茜比几位前任女神差了啥

热门文章

  1. yipin project 02
  2. Linux系统putty的安装使用教程
  3. oracle heavy swapping,WARNING: Heavy swapping observed on system in last 5 mins
  4. Pygame-飞机大战
  5. mysql 删除check_数据库中五种check约束添加/删除方法
  6. Swarm Flocking 经典蜂拥模型大全
  7. Java 合并、拆分PPT幻灯片
  8. 阿里云——OpenAPI使用——短信服务
  9. 基于ssm量贩式ktv管理系统
  10. 运筹学状态转移方程例子_动态规划 Dynamic Programming