版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大手
实验报告
实验课程:Web应用开发
学生姓名:______________________________
学号:__________________________
专业班级:
南日大学实验报告
学生姓名:学号:专业班级:___________________
实险类型:口验证■综合口设计口创新实验日期:实验成绩:—
一、实验项目名称
«Web应用开发》综合训练
二、实验目得和要求
使用Java+JSP+Scrvlet技术,选用EL、JSTL>StrutsHibernate>myBa
tis、jQucry等技术,开发一个基本Web得应用程序,以达到掌握Web应用开发得底本
原理、具备使,用Java+JSP+Serv1et技术结合流行框架技术开发Web应用程序得
能力,从而提升学生得Web编程能力。
要求学生自选题目,开发一个模拟得Web应用程序。可以一人一题,也可以多人一
题。但就就是每人必须单独完成动态Web页面10页以上。
要求学生根据需求描述独自完成需求分析,软件设计、程序模块设计以及程序得编
写、调试和测试。
设计和程序完成后,要求根据指定得格式要求,独自完成设计报告得撰写。
三、实验基本情况
本实训要求根据下述需求陈述写出需求分析文本并进行软件开发,并列出源代码和
运行结果。
四、需求分析
项目介绍
这就就是一个简单得图书管理系统,由一个管理员来实现对用户得删除,图书得增加,修
改和图书得删除功能,用户注册登录后可以实现对图书得借阅和归还。由于时间关系在
设计项目时有很多不好得地方,未来得及修改,在管理员登录界面采用了图形验证码,由
于就就是同样得技术,在用户登录界面就没有采用图形验证技术。
功能需求
1.用户注册
2.图书添加
3.图书修改
4.用户管理
5.图书借阅
6.归还图书
五、软件设计
ER图
程序流程
用户注册
数据库设计
mysql>descuser;
FieldTypeNullKeyDefaultExtra
J__________________1_________________________________1________________1______________1_______________________1__________________L
rrnrrrr
namevarchar(15)NOPRINULL
pwdvarchar(15)NO|NULL|
Li___________________i1__________________________________1________________1______________i1________________________!L__________________1L
1丁1
mysql>descbook_info;
+++
FieldTypeNullKeyDefaultExtra
+++++++
bnoint(11)NOPRINULL
bnamevarchar(20)NONULL
authorvarchar(20)NONULL
pricefloatNONULL
othervarchar(20)YESNULL
+++++++
5rowsinset(0.01sec)
mysql>desclendbook;
4-x
FieldType|Null|Key|Default|Extra|
d1
usernamevarchar(15)YESNULL
bnoint(11)YESNULL
bnamevarchar(20)YESNULL
authorvarchar(20)YESNULL
pricefloatYESNULL
othervarchar(20)YESNULL
H++++++
6rowsinset(0.10sec)
mysql>
模块设计及运行结果
项目整体采用MVC模式,整体上运用jsp+javabean+serv1et+jdbc+daO,每个jsp页面采
用jQuery技术作为背景,实现简单得动态背景,部分页面运用EL、JSTL、js中得点击事件、Boots
rap、图形验证码、分页技术以及邮箱页面。
六、源代码
1N用户类User、Java
packagevo;
pub1icclassUser{
privateStringname,pwd;
publiCStringgetName(){
§returnname;
)
pub1icvoidsetName(Stringname){
this、name=name;
}
publiCStringgetPwdQ{
returnpwd;
)
publiCvo1dsetP\vd(Stringpwd){
。this、pwd=pwd;
)
)
2、图书类bo。kinfoxjava
packagevo;
publieclassbookinfo
{
privateStringbno,bname,author,price,other;
。publicStringgetBno(){
oreturnbno;
°}
®pUb1icvoidsetBno(Stringbno){
»this>bno=bno;
)
pub1iCStringgetBname0{
retumbname;
0}
。pub1icvoidsetBname(Stringbname){
。thiS、bname=bname;
}
。publicStringgetAuthor。{
06retUmauthor;
)
3pub1icvoidsctAuthor(Stringauthor){
。。this、author=author;
0}
publicStringgetPrice(){
s°returnprice;
}
§pub1icvoidsetPrice(Stringprice){
thiS、price=price;
)
。publicStringget()thcr(){
。retumother;
°publicvoidsetOther(Stringother){
this、other=other;
)
)
3、借书信息类lendbooksinfo
packagevo;
puhlicClasslendbook
{
。ptivateStringusername,bno,bname,author,price,other;
3pub1iCStringgetUSernameO{
°returnusername;
}
spub1icvoidsetUsername(Stringusername){
this、uSernamc=uscrname;
)
publieStringgetBno(){
retumbno;
}
publicvoidsetBno(Stringbno){
。this、bno=bno;
)
opub1iCStringgetBname0{
。returnbnamc;
)
。publicvoidsetBname(Stringbname){
。this、bname=bname;
)
publieStringgetAuthor。{
oreturnauth0r;
°}
pub1icVoidsetAuthor(Stringauthor){
this、author=author;
)
publiCStringgetPrice(){
。3returnprice;
)
publicvOidsetPrice(Stringprice){
thisxprice=price;
)
0publicStringgctOther。{
§sretumothcr;
°}
publicvoidsetOther(Stringother){
。°this>other=odier;
4^用户功能UserDao、java
packagedao;
importjava、util、List;
importjava、sqk*;
importjava、util、ArrayList;
importvo、bookinfb;
importvoUser;
importvo>lendbook;
importdbc、JdbcUtil;
publicclassUserDao
(
,pub1icvoidadd(Useruser)throwsException{//添加用
户
ooConnectionconn=nul1;
°PreparedStatementps=nu11;
otry
°{
,0conn习dbcUti1getConnectionQ;白
,,Sttingsql="insertintouserva1ues(?,?)11;
s6ps=conn、prepareStatement(sq1);
3ps、setString(l,user、getName。);
ops、setString(2,user、getPwdQ);
,ops、exeCuteUpdate();
}
s。finally
ddd{
3JdbcUtil、free(null,ps,conn);
)
pub1icvoidadd_book(bookinfobook)throwsExcept
ion{〃添加图书
oConnectionconn=nu11;
PreparedStatementps=nu11;
stry
°{
,oconn=JdbcUtikgetConnection();,
s,Stringsql=ninsertintobook_infovalues(?,?,?,?,?)n;
oooops=conn>prepareStatement(sql);
dd
psNsetString(1,book、getBnoO);
6ps、setString(2,book、getBname());
asps>setString(3,book、getAuthor0);
§,ps、setString(4,book、getPrice());
6dps、setString(5,book、getOther());
ps、executeUpdate();
o,,}
3,,finally
ddo{
3JdbcUtil、free(nul1,ps,conn);
8}
°}
opub1icvoidlend_book(lendbookbook)throwsException{//
借出图书
。Connectionconn=null;
o3PreparedStatementps=nul1;
try
a(
6conn=JdbcUtil、getConnection();
,,Stringsq1=nins6rtintolendbookva1ues(?,?,?,?,?,?)11;
3ps=conn>prepareStatement(sql);
sps、setString(l,book>getUsemameO);
ddps、setint(2,1nteger、parseint(book>getBno()));
6d6ps>setString(3,book、getBnameQ);
0,,pSAsetString(4,book、getAuthor());
66ps、setString(5,book>getPrice。);
ps、setString(6,book>getOther。);
3,ps、executeUpdate();
,3}
o''finally
9(
6
3JdbCUHINfree(null,ps,conn);
°}
}
publicList<User>QueryAHQthrowsException//列出全部用户
(
Connectionconn=null;
PreparedStatementps=nul1;
oResultSetrs=nu11;
sList<User>userList=newArrayList<User>0;
try
{
sconn=JdbcUtil、getConnection();
dStringsql=nselect*fromuser";
dd6ps=conn>prepareStatement(sql);
6
rs=pSNexeCuteQuery();
aswhile(rsNnext()){
dooUseruser=newUser();
suser、setName(rs>getString(1));
o3user、setPwd(rs>getString(2));
os。userListNadd(user);
d0}
…fina1ly
9{
d66JdbcUtikfree(rs,ps,conn);
9)
dreturnuserList;
)
publicvoiddelete(Stringbookno)throwsException//
删除图书
{
3Connectionconn=null;
oPreparedStatementps=null;
…try{
conn=JdbcUtil、getConnection();
Stringsq1=ndeletefrombook_infowhere
bno=?H;
…ps=conn^prepareStatement(sql);
sps、setString(1,bookno);
3sps、exeCuteUpdate();
3)
finally{
sJdbcUtil、free(null,ps,conn);
so}
9)
3publievoidretumbook(Stringbno,Stringusemame)throws
Exception〃归还图书
{
o,Connecdonconn=nu11;
PrepatedStatementps=nu11;
try{
ooconn=JdbcUtil、getConnectionQ;
Stringsql=Hdeletefromlendbookwherebno=?and
usemame=?
oops=conn、prepareStatement(sql);
oops、SetString(l,bno);
d。ps、setString(2,usemame);
dps、executeUpdate();
}
§fina1ly{
s。JdbcUtil>free(nu11,ps,conn);
')
3}
pub1icvoiddelete_user(Stringusername)throwsExceptio
n//删除用户
(
oConnectionconn=nul1;
o。PreparedStatementps=nu11;
,try{
d,conn=JdbcUtil、getConnection();
Stringsql=ndeletefromuserwherename=?";
ops=conn>prepareStatement(sql);
,ps>setString(l,usemame);
,ps、executeUpdate();
33}
o,final1y{
,JdbcUtikfree(null,ps,conn);
6)
}
pub1icintgetPageCount。throwsException{〃分页
Connectionconn=null;
6PreparedStatementps=nu11;
s,ResultSetrs=null;
sintrecordCount=0,tl=0,t2=0;
try
3,,conn=JdbcUtil、getConnectionQ;
sdStringsql=11se1ectcount(*)frombook_info11;
o3ps=conn>prepareStatement(sql);
Drs=ps、executeQuery0;
s6TSNnext();
6drecordCount=rs>getInt(1);
6tl=recordCount%5;
o3,t2=recordCount/5;
6}
fina1ly
a(
oJdbcUtil、firee(null,ps,conn);,
°}
,returntl==0?t2:t2+l;
)
pub1icList<bookinfb>QueryAll_book(intpageN0)
throwsException//歹可出全部图书
(
Connectionconn=nu11;
,sPreparedStatementps=null;
3ResultSetrs=null;
intpageSize=5;
3,intstartRecno=(pageNo-1)*pageSize;
dList<bookinfo>bookList=newArrayList<bookinfo
>0;
otry
(
030conn=JdbcUtilsgetConnection0;
oo^Stringsql=Mselect*frombook_infoorderbybno1
imit?,?”;
osps=conn、prepareStatement(sq1);
ooops、setlnt(l,startReeno);
Soops、se11nt(2,pageSize);
o3rs=ps、executeQuery();
o,,while(rsxnext()){
3o,,bookinfobook=newbookinfoQ;
o。3book、setBno(rs、getString(1));
。book>setBname(rs>getString(2));
obook、setAuthor(rs、getstring(3));
°book、setPrice(rs>getString(4));
6ddbook>setOther(rs、getString(5));
6obookList>add(book);
33}
00}
3finally
oo{
3,6JdbcUti1>free(rs,ps,conn);
do}
oreturnbookList;
}
pub1icList<lendbook>QueryAll-lendbook(Stringusernam
e)throwsException//歹【J出已借图书
9{
,Connectionconn=null;
PreparedStatementps=nu11;
o,Resu1tSetrs=null;
,List<lendbook>bookList=newArrayList<lendbook>Q;
try
9{
3conn=Jdbcllti1>getConnection();
Stringsq1=Hselect*fromlendbookwhereuser
name=?H;
,ps二conn、prepareStatement(sql);
,,ps、setString(l,username);
3,rs=ps>executeQuery();
,,3while(rsNnext。){
,o1endbookbook=new1endbook。;
。sbook、setUsername(rs>getString(1));
obook^setBno(rs>getString(2));
a。book、setBname(rs、getString(3));
a。。,book、setAuthor(rs、getString(4));
os,,book、setPrice(rs、getString(5));
,,Dbook、setOther(rs、getString(6));
o0。bookList、add(book);
do}
00}
3finally
dd{
ooJdbcUri1xftee(rs,ps,conn);
od|
oreturnbookList;
9)
opublievoidmodify_book(bookinfobook)throwsException{/
/修改图书
sConnectionconn=nu11;
osPreparedStatementps=nu11;
3try
3conn=JdbcUtil、getConnection();
6Stringsql=nupdatebook_infosetbname
=?,author=?,price=?,other=?wherebno=?n;
ps=conn、preparestatement(sq1);
o6ps、setString(l,book、getBname());
oops、setString(2,book、getAuthor());
d6ps>setString(3,book、getPriceQ);
pSNSetString(4,book、getOther());
ps、setString(5,book、getBno());
oooops、executeUpdate();
do}
…finally
30{
,oJdbcUtil、free(null,ps,conn);
3}
}
)
5、获取表格值代码:
fiinctiongctTab1eContcnt(node){
vartr1=node^parcntNode、parentNodc;
varname=tr1>cells[0]、innerText;
window>1ocationhref=n<%=path%>/deIete_user?name="+name;
alert(name);
)
7.背景jQuery代码
由于代码过长,不展示;
七、运行结果
1、管理员登录页面:管理员登录界面采用简单得CSS、jQuery、以及图形脸证码,当图形验证
码输入不正确以及账号密码输入不正确会出现相相应提示,同时点击相信得输入框,提示输入对应类
型得背景字体会消失,当鼠标点击其她地方时会相应出现,采用得就就是placeholder属性,我们平时
单纯得html得输入框以及提交得按钮,让人感觉不就就是很舒适,采用简单得CSS将她们得边框去
除,然后加上相应得边框。
2、登录主界面:
导航栏感谢bootstrap开源,运用了始终悬浮在顶部得导航栏,奈何页面长度有限不能向下滚动,无
法看出这一功能,页面内容由于思维过于局限,暂时没有想出用什么内容来填充,只想到类似于积分
得东西,这一内容在以后会作出改进,目前只有一个大概得模板,同时在改变页面得分辨率时导航栏
中得功能选项会变成一个按钮,用一个<nva>便签来装载,本页也有一人亮点便就就是响应式,在改
变分辨率时板块并不会发生错乱得现象,运用栅格系统思想,在第二张图张可以看到效果,由于调各
种分辨率国语繁琐,所以这一技术只在两个页面运用到,以后有时间会加以改善。
3、管理用户页面:
点击管理用户得小便签会出现用户得列表,点击删除用户可以将用户从数据库中删除,同时页面中得
几个小符号也就就是运用bootstrap中得组件,给人以更直观清楚得描述功能,在本页面我并没有
采用分页技术,但就就是在后面几个页面中有采用分页技术,在做页面得时候并没有考虑到有很多得
用户,只就就是用几个来验证,所以就没有用分页技术,在这个点击就删除得技术上一开始遇到了难
题,并不知道怎么样去些控制得后台,后来在页面中运用了js得技术,可以利用表格得结点来获取每个
表格单元格得内容,再将按键设置为this,点击便就就是获取当前行得值,并传到serv1et中调用dao
中删除用户得函数,便实现了。同时利用js得鼠标事件,鼠标移动到当前行时会改变颜色。
4、添加图书页面:
添加图书得页面并没有多么得新奇,同样还导航栏加动态背景,同样输入框也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑节能工程热桥部位处理措施选择方法选择原则
- 数字博物馆导览App硬件集成课程设计
- 设计纹样美术教案
- 检验科临床标本采集技巧培训教程
- 化工原理设计课程
- 口腔科洗牙注意事项指南
- 急诊科突发性耳聋抢救规范
- 急诊科休克早期护理指南
- 外国名著书籍设计赏析
- ICU院内感染预防措施
- 2026江苏苏州高新区(虎丘区)人民法院公益性岗位招聘6人笔试参考试题及答案解析
- 2026年三级级安全教育培训试题及答案
- 南昌市青山湖区2026年公开招聘社区工作者(专职网格员)【60人】笔试参考题库及答案解析
- 克拉玛依市护士招聘笔试题及答案
- 智能经济的发展模式
- 中国牙外伤诊疗指南(2026版)
- 毛概期末考试真题及答案
- 2026云南特岗生物备考核心模拟题及逐题解析答案
- 建筑工地高空坠落安全培训教材
- 新版国家建筑工程施工质量验收规范目录(2026年更新)
- 棋牌室消防安全责任制度
评论
0/150
提交评论