一.功能简介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
用VC++6.0实现的扫描线填充,裁剪算法及画线方法 CPenpen(PS_SOLID,1,fillcolor);//设置扫描线所用笔的属性 CPen*old=pDC->SelectObject(&pen); intj,k,s=0; intp[9];//每根扫描线交点 intpmin=1000; intpmax=0; for(inti=0;i<inLength;i++)//建立边表 { edge[i].dx=(float)(inVertexArray[i+1].x-inVertexArray[i].x)/(inVertexArray[i+1].y-inVertexArray[i].y); edge[i].num=i; if(inVertexArray[i].y<=inVertexArray[i+1].y) { edge[i].ymin=inVertexArray[i].y; edge[i].ymax=inVertexArray[i+1].y; edge[i].xmin=(float)inVertexArray[i].x; edge[i].xmax=(float)inVertexArray[i+1].x; } else{ edge[i].ymin=inVertexArray[i+1].y; edge[i].ymax=inVertexArray[i].y; edge[i].xmax=(float)inVertexArray[i].x; edge[i].xmin=(float)inVertexArray[i+1].x; } } //求多边形的最大最小值 for(intm=1;m<inLength;m++) { for(intn=0;n<inLength-m;n++) { if(pmaxinVertexArray[n].y) pmin=inVertexArray[n].y; } } for(intr=1;r<inLength;r++) //边表edge排序 { for(intq=0;q<inLength-r;q++) { if(edge[q].yminpmin;scan--)//扫描线遵守'“上开下闭”的原则 { intb=0; k=s; for(j=k;j=edge[j].ymin)&&(scan<=edge[j].ymax))//判断扫描线与线段是否相交于顶点 { intpreNum=edge[j].num; intnextNum=edge[j].num+1; if(preNum==0) preNum=inLength-1; else preNum=preNum-1; if(nextNum==inLength) nextNum=0; if(scan==edge[j].ymax)//位于下顶点时,根据相临点的位置决定取几个点 { if(inVertexArray[nextNum].y<edge[j].ymax) { b++; p[b]=(int)edge[j].xmax; } if(inVertexArray[preNum].yedge[j].ymin)&&(scan<edge[j].
2025/7/20 4:20:18 83KB 图形学 扫描线 裁剪 DDALine
1
本项目是基于C#和SqlServer开发的,项目中包括开发代码(C#)、数据库(mdf文件、建表插数据sql语句)、开发设计文档(word文档)和用户用例图(visio文档)
1
本电脑销售系统的数据库共需建立三个表,一个是库存表,主要有型号、价格、品牌、库存量等属性。
一个是销售人员信息表,主要有销售人员姓名、年龄、性别、员工号等属性。
还有一个是销售表,主要有员工号、型号、数量、价格、金额和销售时间等信息。
实现当销售某种产品时修改库存量中的信息和按销售时间进行查询的功能。
2025/7/18 9:43:08 240KB 电脑销售 数据库 课程设计
1
QTableWidgetQTableView自定义复杂表头(多行表头,表头合并)、冻结、固定特定的行
2025/7/18 8:21:13 9KB QT QTableWidget QTableView
1
通过对高校教师管理系统的了解,完成了高校教师管理系统的业务术语表、用例图、用例文档、类图、时序图以及协作图的设计
2025/7/17 21:39:45 3.04MB 需求分析
1
①在Nachos中修改目前的内存分配方式,使得多个线程可以同时存在于内存之中,这些线程可以按照“优先级”的方式进行调度②编写一个虚拟的“分页式”存储管理机制,也就是说不需要实现真正的分页管理,只需要建立并维护一个内存页表,页面大小为4K,当生成新的用户线程时,可以通过检索页表来为用户线程分配可用的页面号
2025/7/17 17:29:27 743KB 优先级、分页
1
全书共分10章。
第1章介绍PowerBuilder9.0的特性、PowerBuilder集成开发环境的组成与使用以及用PowerBuilder开发一个应用程序的基本过程。
第2章介绍PowerBuilder提供的AdaptiveServerAnywhere数据库管理系统的使用,包括数据库、表、主键、外键、索引、视图的创建以及数据操纵和安全管理。
第3章介绍PowerScript编程语言的语法规则、数据类型、控制语句和嵌入式SQL语句,并介绍面向对象程序设计技术。
第4章介绍应用的有关概念以及应用对象的创建方法和典型脚本的编写。
第5章介绍窗口对象的创建及属性设置方法、窗口中常用控件的属性设置及常用事件的编程。
第6章介绍菜单对象的创建、属性设置及典型编程。
第7章介绍数据窗口对象的创建方法、数据窗口中控件对象的属性设置和添加新对象的方法,并介绍数据窗口控件及实现典型数据操作的函数。
第8章介绍用户对象和用户事件的概念及创建与使用方法。
第9章介绍应用程序的调试方法、生成可执行程序的方法以及应用系统安装程序的制作方法。
第10章通过“学生成绩管理系统”实例,详细系统地介绍使用PowerBuilder开发数据库应用系统的方法和过程。
2025/7/17 5:49:48 7.31MB PB9.0学习资料
1
介绍AES算法的原理以及基于FPGA的高速实现。
结合算法和FPGA的特点,采用查表法优化处理了字节代换运算、列混合运算。
同时,为了提高系统工作速度,在设计中应用了内外结合的流水线技术,并应用Altera公司的开发工具及芯片进行实际开发。
2025/7/16 20:24:42 251KB AES  FPGA 查表法 流水线技术
1
在线考试毕业设计,完整版包括:一.毕业设计论文(答辩)二.附件三.开题报告(答辩)四.翻译五.源程序1.绪论 11.1传统考试的弊端 11.2在线考试系统的问题的提出及发展背景 11.3考试系统的研究目的及其意义 21.4考试系统的功能和作用 21.5课题研究的主要内容以及个人任务 31.6课题研究的价值 32.可行性研究 42.1可行性分析 42.1.1技术可行性 42.1.2经济可行性 42.1.3操作可行性 42.2系统实现目标 42.3ASP.NET概述 52.3.1ASP.NET的技术概述 52.3.2ASP.NET程序运行原理 52.3.3ASP.NET与数据库访问 63.需求分析 73.1系统需要解决的主要问题 73.2系统应该具备的基本功能 74.系统设计 84.1考试系统总体结构设计 84.4.1网站风格 84.1.2登录与导航模块 94.1.2在线考试模块 94.1.3管理模块 94.2数据库的设计 94.2.1基本概念 94.2.2数据模型 104.2.3数据库设计方法简述 114.2.4数据库设计的基本步骤 124.3属性图 134.3.1学生信息属性图 134.3.2成绩属性图 134.4考试系统数据库建表及其说明 134.5系统流程图 165.系统实现 175.1用户登录 175.2用户注册 195.3导航栏 196.功能测试 206.1测试目标 206.2测试项目说明 206.3测试评价 207.结论 21谢辞 22参考文献 23附录:程序部分后台代码 24用户登录: 24用户注册: 27用户信息管理: 28查看成绩: 30
2025/7/16 10:23:39 9.36MB 毕业设计 在线考试
1
共 1000 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡