JSP网上书店系统实验报告.docx
- 文档编号:11095737
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:17
- 大小:180.08KB
JSP网上书店系统实验报告.docx
《JSP网上书店系统实验报告.docx》由会员分享,可在线阅读,更多相关《JSP网上书店系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
JSP网上书店系统实验报告
浙江工业大学之江学院
Java网站架构技术大型实验报告
班级:
软件801
姓名:
***
学号:
****
指导老师:
***
2011年12月22日
网上书店系统设计
1、实验目的
1运用以前学习的Ajax+JSP+JavaBean系统的开发方法完成网上购物系统架构设计和代码编写。
2掌握需求分析、文档编写和数据库设计等系统开发步骤。
3掌握系统测试方法。
2内容设计
1功能描述
分为前端和后端,前端主要实现:
(1)能够购买,具有购物车功能/
(2)结帐
(3)用户注册
(4)具有查询功能
后端主要实现:
(1)图书的修改,删除,添加
(2)图书分类
(3)用户权限分配
2数据库表(数据字典),带表头
(1)用户表user_info
数据项
数据类型
数据长度
备注
id
Int
11
用户编号
username
Varchar
14
用户名
password
varchar
22
密码
super_id
int
11
是否超级用户,1为是
(2)图书表book_info
数据项
数据类型
数据长度
备注
id
Int
11
书籍编号
name
Varchar
80
书籍名称
author
varchar
20
作者
price
int
4
单价
photo
varchar
40
存放封面地址
Type_id
Int
11
区别图书类型
describe
varchar
250
图书描述
(3)购物车表shop_bus
数据项
数据类型
数据长度
备注
id
Int
11
物品编号
book_name
Varchar
80
书籍名
price
varchar
5
单价
allprice
int
6
总价
(4)订单表list_info
数据项
数据类型
数据长度
备注
id
Int
11
订单编号
all_price
Int
14
总价
all_books
varchar
500
所有书籍名称
user_id
int
11
订单所属ID
3详细实现
1运行环境:
MyEclipse,TomCat6.0
2数据库连接:
mySQL
3主要页面,及页面功能描述
登录页面:
登录页面含有用户的登录功能,如果用户未注册过,还可以通过注册功能注册为会员,然后再登录该系统进入首页,同样,为了方便用户重新输入用户名与密码,还设置了用户名与密码重置的功能。
如图1:
图1登录界面
主要的登录代码如下:
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
HttpSessionsession=req.getSession();
UserInfouser=newUserInfo();
user.setUsername(req.getParameter("username"));
user.setPassword(req.getParameter("password"));
UserInfoDaouserInfoDao=newUserInfoDaoImp();
BookInfoDaobookInfoDao=newBookInfoDaoImp();
if(userInfoDao.login(user)){
Pagepage=newPage();
page.setPageSize(12);
page.setNowPage
(1);
if(bookInfoDao.allCount()%12==0){
page.setAllPage(bookInfoDao.allCount()/12);
}else{
page.setAllPage(bookInfoDao.allCount()/12+1);
}
List
list=bookInfoDao.getAllBooks(page);
page.goTo();
ShopBusDaoshopBusDao=newShopBusDaoImp();
shopBusDao.delAll();
user=userInfoDao.findByUsername(user);
session.setAttribute("page",page);
session.setAttribute("bookList",list);
session.setAttribute("user",user);
resp.sendRedirect("main.jsp");
}else{
req.setAttribute("error","用户名或密码错误!
");
ServletContextsc=getServletContext();
RequestDispatcherrd=null;
rd=sc.getRequestDispatcher("/index.jsp");
rd.forward(req,resp);
}
}
注册页面:
注册页面可以让需要注册的玩家填写注册信息,同意具有重置功能,如图2:
图2注册页面
注册的的代码如下:
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
UserInfouser=newUserInfo();
user.setUsername(req.getParameter("username"));
user.setPassword(req.getParameter("password"));
UserInfoDaouserInfoDao=newUserInfoDaoImp();
if(userInfoDao.reg(user)){
userInfoDao.addUserInfo(user);
resp.sendRedirect("success.jsp");
}else{
req.setAttribute("error","用户名已存在!
");
ServletContextsc=getServletContext();
RequestDispatcherrd=null;
rd=sc.getRequestDispatcher("/reg.jsp");
rd.forward(req,resp);
}
}
查询功能:
查询的功能主要是通过选择查询条件书名或者作者,然后按照输入的关键字进行查询如图3和图4:
图3查询功能图4查询所得图书列表
主要代码如下:
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
BookInfoDaobookInfoDao=newBookInfoDaoImp();
List
HttpSessionsession=req.getSession();
session.setAttribute("listBookByKey",list);
ServletContextsc=getServletContext();
RequestDispatcherrd=null;
rd=sc.getRequestDispatcher("/lookBooks.jsp");
rd.forward(req,resp);
}
通过关键字查找数据库的代码如下:
publicList
List
con=DBCon.GetConnectionMysql();
Stringsql="SELECT*FROMbook_infoWHEREnameLIKE'%"+key+"%'";
PreparedStatementstmt=null;
ResultSetrs=null;
try{
stmt=con.prepareStatement(sql);
//stmt.setString(1,key);
rs=stmt.executeQuery();
while(rs.next()){
BookInfobk=newBookInfo();
bk.setId(rs.getInt
(1));
bk.setName(rs.getString
(2));
bk.setAuthor(rs.getString(3));
bk.setPrice(rs.getInt(4));
bk.setPhoto(rs.getString(5));
bk.setTypeId(rs.getInt(6));
bk.setDescribe(rs.getString(7));
list.add(bk);
}
CloseSql.CloseDB(rs,stmt,con);
}catch(SQLExceptione){
e.printStackTrace();
}
returnlist;
}
购物车功能:
购物车功能可以让会员把自己选择的书籍放入购物车,方便会员一次性下单也方便会员查看以选择的书籍,同时帮会员计算所需支付的总价,如图54:
图5购物车
显示以已放入购物车中的主要代码如下:
publicShopBusgetLast(){
con=DBCon.GetConnectionMysql();
ResultSetrs=null;
PreparedStatementstmt=null;
Stringsql="select*fromshop_bus";
ShopBusshopBus=newShopBus();
try{
stmt=con.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next()){
shopBus.setId(rs.getInt
(1));
shopBus.setBookName(rs.getString
(2));
shopBus.setPrice(rs.getInt(3));
shopBus.setAllPrice(rs.getInt(4));
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnshopBus;
}
用于存放当前所购物车中的书籍信息,对数据库表shop_bus进行插入书籍信息的代码如下:
publicbooleanadd(ShopBusshopBus){
booleanflag=false;
con=DBCon.GetConnectionMysql();
PreparedStatementstmt=null;
Stringsql="insertintoshop_bus(book_name,price,allPrice)values(?
?
?
)";
try{
stmt=con.prepareStatement(sql);
stmt.setString(1,shopBus.getBookName());
stmt.setInt(2,shopBus.getPrice());
stmt.setInt(3,this.getLast().getAllPrice()+shopBus.getPrice());
if(stmt.executeUpdate()==1){
flag=true;
}
CloseSql.CloseDB(stmt,con);
}catch(SQLExceptione){
e.printStackTrace();
}
returnflag;
}
查看订单列表:
查看订单列表便于会员查看自己以往所过买的书籍信息,同时该列表具有翻页功能使列表占有平面空间不大,如图6:
图6订单列表
当购物车点击生成订单按钮时就已经完成对订单列表的信息增加,主要代码如下:
publicbooleanadd(ListInfolistInfo){
booleanflag=false;
con=DBCon.GetConnectionMysql();
PreparedStatementstmt=null;
Stringsql="insertintolist_info(all_price,all_books,user_id)values(?
?
?
)";
try{
stmt=con.prepareStatement(sql);
stmt.setInt(1,listInfo.getAllPrice());
stmt.setString(2,listInfo.getAllBooks());
stmt.setInt(3,listInfo.getUserId());
if(stmt.executeUpdate()==1){
flag=true;
}
CloseSql.CloseDB(stmt,con);
}catch(Exceptione){
e.printStackTrace();
}
returnflag;
}
分页功能及显示列表的代码如下:
publicList
Pagepage=newPage();
page.setNowPage(nowPage);
page.setPageSize(5);
if(this.allCount(id)%5==0){
page.setAllPage(this.allCount(id)/5);
}else{
page.setAllPage(this.allCount(id)/5+1);
}
page.goTo();
List
if(page.getNowPage()<=page.getAllPage()){//假如存在当前页
con=DBCon.GetConnectionMysql();
PreparedStatementstmt=null;
ResultSetrs=null;
Stringsql="select*fromlist_infowhereuser_id=?
limit?
?
";
try{
stmt=con.prepareStatement(sql);
stmt.setInt(2,(page.getNowPage()-1)*page.getPageSize());
stmt.setInt(3,page.getNowPage()*page.getPageSize());
stmt.setInt(1,id);
rs=stmt.executeQuery();
while(rs.next()){
ListInfolistInfo=newListInfo();
listInfo.setId(rs.getInt
(1));
listInfo.setAllPrice(rs.getInt
(2));
listInfo.setAllBooks(rs.getString(3));
listInfo.setUserId(rs.getInt(4));
list.add(listInfo);
}
CloseSql.CloseDB(rs,stmt,con);
}catch(Exceptione){
e.printStackTrace();
}
}
returnlist;
}
注销功能:
方便用户使用完毕,用于退出网页,同时回到登录页面,注销前后如图7和图8:
图7注销前图8注销后
注销的主要代码如下:
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
HttpSessionsession=req.getSession();
session.removeAttribute("page");
session.removeAttribute("bookList");
session.removeAttribute("user");
req.setAttribute("error","注销成功!
");
ServletContextsc=getServletContext();
RequestDispatcherrd=null;
rd=sc.getRequestDispatcher("/index.jsp");
rd.forward(req,resp);
}
图书信息列表:
方便会员查看图书信息,便于选择,和通过点击购买按钮放入购物车,同样为了节省版面具有分页功能,如图9:
图9图书信息列表
显示图书信息的主要代码如下:
publicintallCount(){
intnum=0;
con=DBCon.GetConnectionMysql();
Stringsql="SELECTcount(*)FROMbook_info";
PreparedStatementstmt=null;
ResultSetrs=null;
try{
stmt=con.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next()){
num=rs.getInt
(1);
}
CloseSql.CloseDB(rs,stmt,con);
}catch(SQLExceptione){
e.printStackTrace();
}
returnnum;
}
分页功能代码如下:
publicList
List
con=DBCon.GetConnectionMysql();
Stringsql="SELECT*FROMbook_infolimit?
?
";
PreparedStatementstmt=null;
ResultSetrs=null;
try{
stmt=con.prepareStatement(sql);
stmt.setInt(1,(page.getNowPage()-1)*page.getPageSize());
stmt.setInt(2,page.getNowPage()*page.getPageSize());
rs=stmt.executeQuery();
while(rs.next()){
BookInfobk=newBookInfo();
bk.setId(rs.getInt
(1));
bk.setName(rs.getString
(2));
bk.setAuthor(rs.getString(3));
bk.setPrice(rs.getInt(4));
bk.setPhoto(rs.getString(5));
bk.setTypeId(rs.getInt(6));
bk.setDescribe(rs.getString(7));
list.add(bk);
}
CloseSql.CloseDB(rs,stmt,con);
}catch(SQLExceptione){
e.printStackTrace();
}
returnlist;
}
4总结
通过这次实验,加深了对Ajax+JSP+JavaBean的理解与应用,也把一学期所学的知识都综合应用到一起,并解决了学习中存在的很多疑惑与难点,对实验中的Ajax和JavaBean的应用更熟练更透彻。
同样在实验中也发现了自身的许多不足与缺陷相信在接下来的学习中会努力的去解决。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 网上 书店 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)