一.功能简介1.实现一个图书管理系统。
图书信息存放到一个数据库中。
图书包含信息:图书号、图书名、作者、价格、备注字段。
2.系统实现如下的基本管理功能:(1)用户分为两类:系统管理员,一般用户。
(2)提供用户注册和用户登录验证功能;
其中登录用户的信息有:登录用户名,登录密码等。
(3)管理员可以实现对注册用户的管理(删除),并实现对图书的创建、查询、修改和删除等有关的操作。
(4)一般用户,只能查询图书,并进行借书、还书操作,每个用户最多借阅8本,即当目前借书已经是8本,则不能再借书了,只有还书后,才可以再借阅。
二.涉及技术Struts2框架、MySQL数据库、C3P0数据池、Jsp、HTML、CSS、JavaScript等技术。
三.设计思路1.基于Struts2框架进行编程设计,连接MySQL数据库实现数据的增删查改,应用Jsp、HTML、CSS、JavaScript对访问页面进行编写和美化。
2.分别创建book表和user表,用以存放图书信息和用户数据。
其中user表中,设有flag以区分管理员和普通用户。
3.分别创建Book类和User类,与数据表相对应。
每本书和每个用户都有唯一的id与之对应。
4.创建C3P0属性文件和数据库连接工具类。
5.设计数据库操作类:UserDao类和BookDao类。
UserDao用于实现所有对user表的操作,BookDao用于实现所有对book表的操作。
6.创建分别对应UserDao类和BookDao类的Action:UserAction和BookAction。
采用基于注解的方式进行Action配置。
7.用户账号分为管理员账号和普通用户账号,注册时加以区分,登录时即可自动判断进入对应的操作主页面。
8.管理员可实现对用户的查询显示,模糊查询,删除,批量删除,全选和取消全选等功能;
可实现对图书的查询显示,模糊查询,添加,删除,批量删除,全选和取消全选等功能。
9.普通用户可实现借书和还书功能,借书功能通过对book表的查询,将未借出的图书按照id顺序排列显示,点击表格后方的“借阅”按钮,进行确认借阅,将book表中本书的borrowperson列的值改为本用户账号。
对于借阅成功的图书可以在“当前借阅”中进行查看。
还书功能通过在“当前借阅”中点击“还书”按钮,进行确认还书,将book表中本书的borrowperson列的值改为“空”,本书信息将可以在“借书”界面查看。
四.存在的问题1.原本希望能为每一个用户创建一个对应的以其账号命名的数据表,用以存放用户所借图书信息,但创建表的SQL语句无法在java代码中执行,所以只好在book表中添加一列borrowperson,用来存放借阅本书的用户账号,这样查询用户当前借阅记录时,以“whereborrowperson=‘account’”为条件对book表进行查询即可。
但是每个用户要当前查询借阅记录时都需要对整个book表进行遍历,效率太低。
2.模糊查询时,因同时需要进行where筛选,SQL语句无法执行,只好分开查询,先进行模糊查询,查询结果存放到list表中,再通过遍历list表进行判断是否符合where的条件,若符合,则存入另一个list表中。
这种方法虽然实现了查询,但效率太低,代码过于繁重。
五.改进预想这些本不应该是预想,原本希望在本次作业中实现的,但时间不够充分,只能作为下一步的改建预想。
1.希望实现登录时验证码验证登录;
2.希望实现查询时,查询结果分页浏览;
3.进一步优化Action之间的传值方法;
4.页面进一步优化、美化;
5.实现用户借书还书时间记录,和借阅时长限制。
2025/7/20 9:38:38 13.98MB Struts2
1
在几秒钟内启动您的下一个ReactNative项目具有最佳DX的高度可扩展,脱机优先的基础,并专注于性能和最佳实践由创建并维护:red_heart:由一个强化的奇妙想法。
网站:动机:在创建该项目时,我始终需要为我们的团队提供一个React敏捷的标准。
当我们开始新项目时,我们总是花太多时间。
因此,我们创建了并希望与社区共享。
特征快速脚手架直接从CLI创建组件,容器,路线,选择器和sagas-及其测试!即时反馈享受最好的DX(DevelopereXperience),并以思想的速度编写您的应用程序!您保存的对CSS和JS的更改会立即反映出来,而无需刷新页面。
即使在基础代码中更新某些内容,也可以保留应用程序状态!可预测的状态管理单向数据流允许更改日志记录和时间旅行调试。
下一代JavaScript使用模板字符串,对象解构,箭头函数,JSX语法等。
行业标准
2025/7/20 1:35:53 1.31MB JavaScript
1
该数据集为辛辛那提大学轴承全生命周期数据集,由于太大了,只能分批上传
2025/7/18 0:26:49 349.59MB 故障诊断
1
AD使用的库资源太缺了,上传部分收集的Protel可用电路图,PCB相关的库(SCBLIB文件),DDB可以在AD中建立向导转换成SCB文件
2025/7/17 4:44:23 13.89MB
1
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
2025/7/14 15:30:30 201KB C#WinForm DirectShow 预览保存 视频音频
1
此套架构整合了springboot+memcached+mybatis+shiro+webservice的聚合式架构,内有具体代码,望大家一起学习交流,写博客因为太懒不愿意写直接传了。
请把解压后的java_memcached-release_2.6.3.jar和commons-pool-1.5.6.jar安装到本地maven库或者直接引入项目,在阿里镜像里拉不到这两个包。
2025/7/13 15:06:09 1.32MB java框架架构
1
Informaticapowercenterdesigner指南(中文)是关于如何使用Designer进行Mapping设计的指导书,版本老了些(其实这些年Powercenter新版本并没有大的变化,核心技术没变,只是加了些并没太大用处的所谓新特性),但比新版的写得都详细,而且是中文的,阅读起来比较轻松,作为参考资料是很好的。
2025/7/10 10:52:09 8.78MB Informatica powercenter designer guide
1
工具说明:1.本工具可以用来隐藏你想要隐藏的窗口,以前是为了上班时间玩游戏用的^_^2.找窗口按钮,用来查找标题为下拉列表框内容的窗口句柄3.如果要查找的窗口标题太长,不好输入,可以勾选“查询当前窗口”,然后迅速切换到要查找的窗口,1秒钟后,被激活的窗口句柄就被找出来了。
4.可以用"Rename"按钮来给窗口改名字。
5.当勾选了“剩xx个关机”的时候,如果要查找的窗口数量少于这个数量,就关机了。
用于游戏多开的。
比如你一个法师,一个医生一起挂机,用医生给法师加血,用法师攻击。
如果医生的那个窗口被自己的外挂给call死了,那你的法师也很有危险,可以用这个方法强行关机。
(不玩网游的可以跳过这个功能)6.可以再Hidewindow.ini中添加你常用的窗口标题。
自己写的小工具,如果能给你提供一些参考就算给CSDN做了一点点贡献
2025/7/10 7:23:47 5KB VB 隐藏窗口 界面 查找窗口
1
第一次使用的时候,觉得太难用了,琢磨了半个小时都不知道怎么搞。
看了这个简单的中文使用说明。
还是很有帮助的
2025/7/8 22:33:16 1MB spoon studio
1
完美高仿QQ消息界面功能,说的是完美,但是有个遗憾,就是跟随侧滑显示操作view和隐藏的时候,有时会有卡顿的现象,这点小小的不足,如果有大神能帮我补足就太好了
2025/7/7 10:54:53 6.72MB 消息 小红点 侧滑删除 侧滑操作
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡