JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc

上传人:PIYPING 文档编号:10836346 上传时间:2021-06-06 格式:DOC 页数:26 大小:884KB
返回 下载 相关 举报
JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc_第1页
第1页 / 共26页
JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc_第2页
第2页 / 共26页
JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc_第3页
第3页 / 共26页
JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc_第4页
第4页 / 共26页
JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc》由会员分享,可在线阅读,更多相关《JSP课程设计报告JSP+Servlet+JavaBean-JSP毕业设计.doc(26页珍藏版)》请在三一文库上搜索。

1、第一章 系统分析1.1可行性分析1.1.1 技术与开发方案可行性可行性本次课程设计通过采用JSP+servlet+JavaBean的设计模式,实现网上花店购物系统的实例。本系统采用界面与业务逻辑分离的三层架构设计,使用servlet封装业务逻辑,使得系统的安全性,可维护性,重用性和可拓展性大大提高。1.2 需求分析网上花店系统主要是实现商品展示,用户注册、登录、购买、产生订单等功能。根据系统的基本功能需求,可对系统前台、后台功能进行细分。1.2.1 功能需求一、前台功能1.用户注册游客进入本站后,可自行注册,设置合法的用户名与密码,填写个人详细信息,包括联系电话、邮箱、地址、所在单位等,要求用

2、户名不能有重复,长度在612位,密码长度不得小于6位字符,大于12位字符,所有注册必须同意本站条例才能注册,密码必须加密,用户名必须唯一。2.用户登录游客注册后输入正确的用户名和密码,且账户未被锁定方可登录。3.密保问题设置用户注册成功后提示是否设置密保,如果设置密保则选择两个问题和设置这两个问题的答案。4.忘记密码与会员密码修改会员登录后可自行修改账户密码,通过输入旧密码,并连续输入两次新密码通过验证确认修改后,密码修改成功。若忘记密码则可通过密保问题重置登录密码。5.用户留言要求用户必须登录才能留言,留言项记录用户信息、主题、内容,为保证系统安全,留言标题不超过25字,内容不得超过100字

3、。6.商品展示网站首页按商品分类展示各种商品,要求展示最新添加的商品,以及热卖商品,并有打折促销商品吸引游客;当点击商品图片或商品名时,查看商品详细信息,并将同类别的商品显示出来,方便游客查看与购买。7.商品购买游客与会员均可购买商品,购买量一次不得超过100件,要求系统能自动根据单价和所购商品数量计算总价;,未登录的只能进行商品浏览,以及将商品添加进购物车,不能结账;购买成功后产生一条订单,记录用户信息、商品信息、购买时间等,用户信息包括真实姓名,电话号码,地址,送货方式,所有用户输入的信息必须严格认证,如电话号码,姓名、地址等必须合法,订购成功后生成一条订单号返回给用户。二、后台功能1、用

4、户管理(1)、管理员登录管理员输入正确的用户名和密码且账号未锁定方可登录进行各项操作,非管理员权限不能进入后台操作。(2)、用户增、删、改、查管理员登录后,能够添加、修改、查询、批量删除用户;查询条件可以是用户名,地址、单位、邮箱等;可以将用户锁定,解锁,删除,对于忘记密码的用户,能将其密码重置为一固定值;注意:为保障用户安全,即使是管理员也查看不到用户的真实密码,必须对用户密码进行加密。(3)、留言处理对用户留言进行查看与删除操作,能根据标题和内容等进行查询,并实现批量删除。2、商品管理 (1).商品发布 按商品分类添加商品,商品信息包括商品名称、价格、简介、详细介绍、小图、大图、所属分类;

5、按分类添加商品,将商品归类,前台页面商品能够即时更新。(2).商品查看与更新 查询商品信息,能按商品名称查询,并能对其进行修改,删除,删除增加批量删除功能,一次能删除多条记录。3、分类管理(1).添加分类 分类分为父类和子类,分类记录分类名,分类介绍,添加时能够将子类归类到父类。(2).分类查看与更新 查看与修改分类,根据分类名称查询分类信息,在页面进行分类信息的修改。4、订单管理(1).查看订单查看用户订单,根据订单号进行查询。(2).订单处理对订单进行核实,核实通过可发货,能对订单实现删除和批量删除。5、系统管理(1).管理员管理查看、修改、删除管理员信息,能将管理员锁定,解锁,重置、删除

6、,锁定后不能登录,必须等待其他管理员解锁。(2).管理员修改密码管理员需登录才能修改,输入旧密码,与新密码,验证通过后修改成功。(3).添加管理员添加系统管理员,要求输入用户名,密码,只有具有管理员权限的登录成功后才能添加管理员。1.2.3 可靠性和安全性需求分析为保障系统的安全性,对用户输入信息进行限制,以防止不法分子利用网站漏洞进行攻击。如用户注册与留言,输入的信息不能太长,商品购买,够买数量不能无限制。1.3 构建开发环境 开发此网上花店系统所需要用到的环境如下。 开发工具:Myecplise5.5.1,Tomcat6.0,JDK1.6 数据库:SQL Server 2005第二章 系统

7、设计 2.1系统体系结构设计本系统采用三层B/S体系结构:表示层客户机浏览器浏览器Jsp页面请求Jsp页面响应web服务器和应用程序服务器图2-3 系统三层B/S体系结构SQL Server数据库中间层数据层表示层:这一部分是面向用户的一部分,这部分由JSP页面和代码隐藏文件组成,为客户端提供系统中应用程序的访问。客户端向服务器端发送请求,然后接受由服务器端发回的结果。中间层:中间层处理来自表示层的请求并和数据库连接,完成数据的查询和结果的传递,是整个系统的核心部分。数据层:数据层以SQL server 2005为后台,处理应用层对数据的请求。在系统中,由于系统复杂的处理过程在服务器端执行,返

8、回给用户的是简单的html网页,有效保护了程序的代码。2.2 系统模块规划根据系统分析,本系统可划分为以下几个模块:商品展示模块:实现商品展示。前台用户模块:实现用户注册、密保设置、找回与修改密码、登录。商品购买模块:实现购物车、产生订单。后台用户管理模块:实现用户信息查看与修改。后台商品管理模块:添加、更新商品信息。后台分类管理模块:查看与添加或修改分类。后台订单管理模块:订单查看与处理。后台系统管理模块:添加或修改管理员信息。网上花店系统前台商品展示模块前台用户模块用户注册用户登录密码修改商品购买模块添加商品产生订单浏览商品分类查看图2-1 前台系统模块设计图1用户留言网上花店系统后台用户

9、管理模块商品管理模块添加商品商品查看商品更新系统管理模块添加管理员管理员更新用户删改查留言删改查图2-2 后台系统模块设计图分类管理模块分类查看分类更新订单管理模块查看订单订单查询删除订单2.3 系统用例图1.用户购买商品用例图2.管理员用例图2.4 工作流程图管理员工作流程订单信息数据查询数 据 库数据处 理事 务登录处理登录录录商品与分类信息表管理员存储事务数据查询用户与留言信息表数据存储图2-6 管理员工作流程图(4)会员工作流程留言提交发表购买浏览商品信息登录数 据 库登录会员修改提交会员密码 图2-7 会员工作流程图2.5数据库设计2.5.1 E-R图 图 2-8 系统E-R图2.5

10、.2 数据库结构本系统使用SQL Server 2005作系统数据库,根据需求设计了以下几个表:用户表tbl_account:记录用户信息。密保问题表tbl_question:记录密保信息。留言表tbl_message:记录用户留言。商品表tbl_product:记录商品信息。商品分类表tbl_category:记录商品分类信息。订单表tbl_order:记录订单信息,包括收货人信息。订单详细表tbl_orderDetail:记录订单中的商品信息。2.5.3 数据库表结构用户表:tbl_account字段类型说明userIdint主键,自动增长userNamevarchar(50)用户名,no

11、t nullpasswordvarchar(50)密码,not nullcompanyvarchar(50)公司,nullemailvarchar(50)邮箱,not nullphonevarchar(50)联系电话,nulladdressvarchar(50)地址,nullstatusint用户状态,0正常,1锁定,default(0)roleIdint角色,0会员,1管理员,default(0)留言表:tbl_message字段类型说明messageIdint 留言编号,主键,自动增长userIdint用户编号,外键messageTitlevarchar(50)留言主题,not nullm

12、essageContentvarchar(200)留言内容,not nullmessageDatedatetime留言时间,默认系统当前时间密保问题表:tbl_question字段类型说明questionIdint密保编号,主键,自动增长userNamevarchar(50)用户名,not nullquestionOnevarchar(50)问题1,not nullanswerOnevarchar(50)答案1,not nullquestionTwovarchar(50)问题2, not nullanswerTwovarchar(50)答案2, not null商品分类表:tbl_catego

13、ry字段类型说明categoryIdint分类编号,主键,自动增长parentIdint上级分类编号,not nullcategoryTipvarchar(50)分类说明,nullcategoryNamevarchar(50)分类名称,not null商品表:tbl_product字段类型说明productIdint商品编号,主键,自动增长productNamevarchar(50)商品名称,not nullproductIntrodnvarchar(50)商品简介,nullproductDetailvarchar(500)商品详细,nullproductPicvarchar(50)商品小图,

14、nullproductBigPicvarchar(50)商品大图,nullproductPricefloat单价,not nullstatuIdint商品状态,外键,1最新,2特殊,3推荐categoryIdint 分类编号,外键订单表:tbl_order字段类型说明orderIdint 订单号,主键,自动增长userIdint用户编号,外键totalPricefloat总金额,not nullorderStatuint订单状态0未处理,1已送货,默认0orderDatedatetime订单日期,默认系统当前时间customerNamevarchar(10)客户真实姓名,not nullpho

15、neNumbervarchar(50)电话号码,not nullsendTypevarchar(20)送货方式,not nullsendAddressvarchar(50)送货地址,not null2.5.4 数据库关系图 图 2-9 数据库关系图第三章 系统实现3.1 后台用户管理功能的实现3.1.1 用户列表的实现实现用户列表的方法如下:Servlet:if(toAccountList.equals(action)AccountDao dao = new AccountDao();String linkUrl = ;List all = new ArrayList();String key

16、word=request.getParameter(keyword);String keyvalue=request.getParameter(keyvalue);String status=request.getParameter(status);if(!-1.equals(status)&status!=null)/不加上status!=null分页后文本框中显示查询条件变了keyvalue=status;/如果keyvalue没有值说明选择了按用户状态status查询if(keyvalue=null|.equals(keyvalue)all =dao.findAllUser(0);/0普

17、通,1管理员linkUrl = accountServlet?action=toAccountList;elseall = dao.findUserByKeyWord(keyword,keyvalue,0);linkUrl = accountServlet?action=toAccountList&keyword=+keyword+&keyvalue=+keyvalue;int totalRows;/ 记录总行数Pager pager = null; / 页面信息int pageSize =5;totalRows = all.size(); / 获取指定主题总行数pager = PagerHe

18、lper.getPager(request, totalRows, pageSize); / 初始化分页对象pager.setLinkUrl(linkUrl); / 设置跳转路径request.setAttribute(pb, pager); / 将分页信息保存在Request对象List user= dao.findByPage(pager,keyword,keyvalue,0); / 根据分页信息查询指定的主题if(user.size()0)request.setAttribute(user, user);request.getRequestDispatcher(admin/files/a

19、ccountList.jsp).forward(request, response);查询的实现public List findByPage(Pager pager,String keyword,String keyvalue,int roleId) List list = new ArrayList(); Account user = null; String sql = ; if(keyvalue!=null&!.equals(keyvalue) sql = select top +pager.getPageSize()+ * from tbl_account + where +keywo

20、rd+ like %+keyvalue+% and roleId=+roleId+ and userId not in (+ select top + (pager.getCurrentPage()-1)*pager.getPageSize()+ userId from tbl_account where +keyword+ like %+keyvalue+% and roleId=+roleId+ order by userId) order by userId desc; else sql = select top +pager.getPageSize()+ * from tbl_acco

21、unt + where roleId=+roleId+ and userId not in (+ select top + (pager.getCurrentPage()-1)*pager.getPageSize()+ userId from tbl_account where roleId=+roleId+ order by userId) order by userId; PreparedStatement pstmt = null; ResultSet rs = null; Connection conn = null; try conn = super.getConn(); pstmt

22、 = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next() user = new Account(); user.setUserName(rs.getString(userName); user.setPassword(rs.getString(password); user.setUserId(rs.getInt(userId); user.setEmail(rs.getString(email); user.setCompany(rs.getString(company); user.setPhone(

23、rs.getString(phone); user.setAddress(rs.getString(address); user.setStatus(rs.getInt(status); user.setRoleId(rs.getInt(roleId); list.add(user); catch (SQLException e) e.printStackTrace(); finally super.closeAll(conn, pstmt, rs); return list; 删除功能删除的实现public int deleteUser(int userId) int reg=0; Conn

24、ection conn = null; PreparedStatement pstmt = null; String sql = delete from tbl_account where userId=?; try conn=super.getConn(); pstmt=conn.prepareStatement(sql); pstmt.setInt(1, userId); reg=pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace(); finally super.closeAll(conn, pstmt, nul

25、l); return reg; 密码重置功能:代码如下:public int resetPassword(int userId) int reg=0; Connection conn = null; PreparedStatement pstmt = null; MD5Code md5=new MD5Code(); String pass=md5.getMD5ofStr(123456); String sql = update tbl_account set password=? where userId=?; try conn=super.getConn(); pstmt=conn.prep

26、areStatement(sql); pstmt.setString(1, pass); pstmt.setInt(1, userId); reg=pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace(); finally super.closeAll(conn, pstmt, null); return reg; 锁定与解锁:代码如下:public int lockedUser(int status,int userId) int reg=0; Connection conn = null; PreparedState

27、ment pstmt = null; String sql = update tbl_account set status=? where userId=?; try conn=super.getConn(); pstmt=conn.prepareStatement(sql); pstmt.setInt(1, status); pstmt.setInt(2, userId); reg=pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace(); finally super.closeAll(conn, pstmt, nul

28、l); return reg; 解除锁定:代码如下:if(unlockedUser.equals(action)/解除锁定AccountDao dao=new AccountDao();String userId=request.getParameter(userId);int reg=dao.lockedUser(0,Integer.parseInt(userId);if(reg0)response.getWriter().print(alert(已成功解除锁定);location.href=accountServlet?action=toAccountList;);elseresponse

29、.getWriter().print(alert(解锁失败);location.href=accountServlet?action=toAccountList;); 3.1.2 留言的实现实体类:package org.flowers.model;import java.io.Serializable;public class Account implements Serializableprivate int userId;private String userName;private String password;private String company;private Strin

30、g email;private String phone;private String address;private int status;private int roleId;public Account()public Account(String userName, String password, String company, String email, String phone, String address,int status,int roleId) this.userName = userName;this.password = password;pany = compan

31、y;this.email = email;this.phone = phone;this.address = address;this.status=status;this.roleId=roleId;public String getAddress() return address;public void setAddress(String address) this.address = address;public String getCompany() return company;public void setCompany(String company) pany = company

32、;public String getEmail() return email;public void setEmail(String email) this.email = email;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getPhone() return phone;public void setPhone(String phone) this.phone = phone;publi

33、c int getRoleId() return roleId;public void setRoleId(int roleId) this.roleId = roleId;public int getStatus() return status;public void setStatus(int status) this.status = status;public int getUserId() return userId;public void setUserId(int userId) this.userId = userId;public String getUserName() r

34、eturn userName;public void setUserName(String userName) this.userName = userName;界面: 留言列表的实现代码如下:public List findByPage(Pager pager,String keyword) List list = new ArrayList(); String sql = ; if(keyword!=null&!.equals(keyword) sql = select top +pager.getPageSize()+ * from tbl_message + where message

35、Title like %+keyword+% and messageId not in (+ select top + (pager.getCurrentPage()-1)*pager.getPageSize()+ messageId from tbl_message where messageTitle like %+keyword+% order by messageId) order by messageId desc; else sql = select top +pager.getPageSize()+ * from tbl_message + where messageId not

36、 in (+ select top + (pager.getCurrentPage()-1)*pager.getPageSize()+ messageId from tbl_message order by messageId) order by messageId desc; PreparedStatement pstmt = null; ResultSet rs = null; Message message = null; Connection conn = null; try conn = super.getConn(); pstmt = conn.prepareStatement(s

37、ql); rs = pstmt.executeQuery(); while(rs.next() message=new Message(); AccountDao dao=new AccountDao(); message.setMessageId(rs.getInt(messageId); message.setUserId(rs.getInt(userId); Account user=dao.findUserByUserId(message.getUserId(); message.setUser(user); message.setMessageTitle(rs.getString(m

38、essageTitle); message.setMessageContent(rs.getString(messageContent); message.setMessageDate(rs.getDate(messageDate); list.add(message); catch (SQLException e) e.printStackTrace(); finally super.closeAll(conn, pstmt, rs); return list; 留言删除留言删除的实现代码如下:Javascript:function deleteMessage(o) if(window.co

39、nfirm(确认删除该留言?) location.href=messageServlet?action=deleteMessage&messageId=+o; function deleteSelect()var obj = document.fom.elements;var flag = 0;for (var i=0;iobj.length;i+)if (obji.name = delid)if (obji.checked=true) flag = 1; break;if(flag=0)alert(请选中要删除的留言);return ;if(flag=1) if(confirm(确定删除所选留言吗?) document.getElementById(fom).action =messageServlet?action=deleteSelect;document.getElementById(fom).submit(); JavaBean:public int deleteMessage(int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1