Web系统开发与设计期末报告
班 级 10金融信息 学 号 ********** 姓 名 褚腾燕 指导教师 张琼妮
浙江财经学院东方学院教务部制
Web论文
摘要:本文基于Web技术下,研究并实现了网上购物功能以及后台管理功能。并对购物车系统进行设计的总体规划,同时详细地分析了基于 Web平台的购物车的系统结构及功能划分 ,进而对各子系统进行了具体设计 。 关键词:购物车;Web ;数据库
一、需求分析
网络购物车是现在广泛用于网上购物的工具之一。购物车主要提供了基本的用户注册,用户登录,增删物品,统计价格等功能。用户在使用购物车时,可以方便的使用这些简易的功能。
1.功能需求
从部署的位置来看,本项目可以分为服务器端和客户端。
服务器端的应用主要是起管理作用,用户端发送的所有消息都将被发送到服务器端,经过服务器端的出来后,服务器端可以选择将消息丢弃或者转发。 用户端的应用分成三种。第一种是提供基本的登录界面,在登录界面中应该有服务器地址选择、服务器端口选择以及用户登录昵称等信息;第二种是想服务器发送消息,比如用户注册,用户登录、用户退出、添加物品,删除物品,统计价格等消息;第三种是响应服务器的消息,即当接收到服务器端方式的消息后,采取响应的动作。比如当用户端收到服务器端发送的添加物品的消息后,用户端应该从消息中提取添加物品的信息,并将信息按要求添加到适当的位置。 综上所述,本系统需要提供一下的界面和功能:
(1)用户注册。当用户第一次使用购物车时,提供用户注册界面,以便后期进行各种购物车功能
(2)在用户端提供登录界面,支持服务器的选择,并提供所选择服务器的端口号,以及基本的登录昵称的输入。
(3)提供一个完整的网络消息协议的设计以及实现。该消息协议应包括登录消息、添加物品、删除物品、统计价格等。每一种网络消息都应该有响应处理以及回复的方法。
(4)在客户端提供购物车页面。用户在购物车页面可以进行添加、删除等
操作,并可以实时统计价格。
(5)在服务器端提供消息出来机制。对客户端发送的各种消息,服务器端应该在进行分析后,进行响应的处理。
2.系统结构设计
系统结构图如下所示:
网上购物 一般用户 网站布局 管理员进入 一般用户登录 用户注册 用户注销 商品管理 用户管理 商品搜索 我的购物车 添加到购物车 进入结算 3用户信息查维护
系统的后台程序会自动记录每个用户在登录网站后进行的所有操作,包括查询和订购信息。这些信息对以系统的管理员都是珍贵的数据,系统分析程序可以根据用户的查询记录判断该客户的喜好,可以根据用户的购买情况判断该用户的经济情况。系统后台程序可以根据分析的结果自动得出给该用户的推荐商品,在用户登录时显示在醒目的位置。
4.开发及运行环境
(1) 硬件平台
CPU: Pentium 4 2.0GHz以上
内存:512MB以上容量
显卡:32MB或以上显存之AGP接口显卡
(2) 软件要求
操作系统:Microsoft Windows XP 运行环境:Tomcat/ jdk1.6 开发工具:MyEclipse ,MySQL-Front
二、数据流程图
显示所有商品: 将某商品添加到购物车:
V(视图) index.jsp getAllGoods.js p M(模型)V(视图)M(模型)请求调用GetAllGoodsS返回结果ervletgetAllGoods.jsp请求调用返回结果GoodsBeanGoodsBeanAddToCartServlet调用返回CartManager返回调用显示结果cart.jsp显示购物车ItemBean
生成订单: 图片的上传和显示:
V(视图)M(模型)V(视图)M(模型)cart.jspc_add.jsp请求AddGoodsServlet调用返回GoodsBeanbyinfo.jsp请求BuyServlet调用返回OrderBean否成功否?是c_manager.jspuserinfo.jsp是成功否?发出请求ShowGoodsServlet显示信息调用返回cart.jsp否showgoods.jsp付款 下单(查询、修改订) 订单管理 1. 一般用户 2. 网上购物系统 订单反馈 3. 管理员 系统管理 发货
2.1.1 网上购物系统顶层图
1.1未登录 注册注册失败验证失败 登录 1.3登录验证 验证成功 查询、修改订单 下订单 订单反馈 1.4注册验证 注册成功 1.2已登录 注册成功 1.5个人信息查询、修改 一般用户信息记录
2.1.2 网上购物系统(会员)
订单 查询、修改订单 2.1 订单管理系统 2.2 界面管理系统 管理员 2.3 注册用户管理系统
2.1.3 网上购物系统图(购物系统)
2.3.1 浏览、修改用户信息 2.3.2 浏览、修改普通管理员信息 用户信息记录文件 管理员信息记录文件
2.1.4 网上购物系统图(注册会员管理系统)
订单记录文件 管理员信息记录文件 3.2 个人信息修改 3.1管理员 已无库存 3.2 管理员 订单管理系统 注册会员管理系统
2.15 网上购物系统图(管理员系统)
三、ER图
3.1 用户ER图
3.2 商品ER图
3.3 用户和商品、订单之间的局部ER图
图3.3 用户和商品、订单之间的局部ER图
3.4 各实体之间总体ER图
图3.2 各实体之间总体ER图
四.数据库模块设计
根据需求分析以及功能需求,我们得出我们的购物网站的总体框架以及程序的实际运用流程.
4.1基于MVC的应用开发模型
在传统的基于Web的应用系统中,例如ASP,CGI等,通常开发者将业务逻辑,数据逻辑、展示逻辑等混杂在一起,在同一个界面面里既进行后台数据库的访问和操作,同时还包含业务流程和页面表示。这样编写出来的程序,既不利于程序员对业务代码的调试,同时也不利于编辑人员进行交互页面的设计。同时系统也不具备可扩展性,当我们要在现有业务上进行扩展的时候,通常无法借助于现有的资源和应用,而只能够重新编写,大大增加了投资,延长了系统上线的时间,失去了竞争市场的优势。
在本网上购物系统中,将采用通行的MVC模式来构建应用。这种结构解决了前面所述的所有问题,在我们的应用集成网络中,通过企业级高端J2EE应用服务器实现MVC开发模型。
输入请求 Control 服务控制 输出 View 显示方式 Html Model 业务逻辑模型 其他
通过这种方案,我们可以迅速地实现整个业务,其优势和特点如下: Model(模型)层:由JavaBean组件来实现,JavaBean将具体的业务封装在组件内部,具备安全、高性能、可重用等优秀的特征。
View(视图)层:由JSP组成。这一层次的特点是能够真实地展示和客户交
互的界面,具备可描绘的功能。同时能够嵌套动态数据,可以进行动态页面的展示。同时可以方便地进行客户端的个性化定制。根据每个客户的需求来展示不同风格的界面。
Controller(控制器)层:是非常重要的一层,这一层是连接View和Model的纽带,同时也是将这两层进行最大限度分离的工具。通常由Servlet来实现,Servlet和JSP虽然同样都属于页面展示工具,但分属两层。主要在于JSP以脚本语言的形式存在, 它的主要优势是进行动态数据的Web展示,而Servlet是一个完整的Java程序,进行业务的调用和流程的处理是它的长处。
4.2平台功能模块的设计分析
平台功能的分析基础上,我认为购物车应该有两个平台的设计,即前台用户设计与后台的管理者设计,由此得到本平台的功能模块图如图3-1所示:
网上购物系统 前台功能 后台功能 用户管理 订 单 管 理 购物车管理 管理员身份验证 商品管理 用户信息管理
前台设计:用户进入网上购物平台,用户可以注册,然后登录后可以进行个人信息修改与注销,用户可以通过商品搜索,找到自己想要产品,然后添加到购物车,
后台设计:管理员可以通过后台登录进去进行用户管理,商品管理,在用户管理中,可以对用户进行添加删除,在商品管理中可以对商品进行添加修改。
五.数据库表结构设计
5.1manage(管理员表) 功能 用户id 用户名 性别 生日 籍贯 字段名 id username gender birthday nativeplace 字段类型 varchar varchar char date varchar char 用户类型 type
5.2 Goods(商品表)
功能 商品id 商品名称 商品价格 商品数量 商品介绍 图片存储位置 商品图片 cpic blob 字段名 cid cname cprice cnumber cintro cimage 字段类型 varchar varchar float int text varchar 5.3 orderstable(订单表) 功能 字段名 字段类型 收货人姓名 receivename varchar 电话号码 邮编 付款方式 tele zipcode paymode char char char 功能 订单id 用户名 订单日期 订单状态 地址
字段名 orderid username 字段类型 varchar varchar orderdate date orderstate char address varchar 5.4 orderlist(订单信息表) 功能 订单id 商品id 数量 字段名 orderid cid quantity 字段类型 varchar varchar int 5.5 users(用户信息表) 功能 用户id 字段名 userrid 字段类型 int varchar varchar char Date varchar 用户姓名 Username 密码 性别 Userpass Gender 出生日期 Birthdate 籍贯
Nativeplace
六.各模块的运行界面与实现代码
6.1注册设计
如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规
则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入用户表即user并提示用户注册成功,2秒跳转到个人主页,就可以进行有效的购物了。
注册页面的效果图如下图5-1所示:
系统对用户的注册详细代码实现如下:
<%if(session.getAttribute(\"reg_msg\")!=null) out.println(session.getAttribute(\"reg_msg\")); %>
这一请求通过regservlet进行接收,并对信息验证,对用户进行响应:
public void doGet(HttpServletRequest request, HttpServletResponse
throws ServletException, IOException {
response)
String
System.out.println(username);
String userpass=request.getParameter(\"userpass\"); String
String birthdate=request.getParameter(\"birthdate\"); String
String url=\"jdbc:mysql://localhost:3306/mytest\"; String user=\"root\"; String password=\"123456\";
String sql=\"select * from users where username='\"+username+\"'\"; //创建各个对象
Connection conn=null; //建立数据库连接的对象
Statement stmt=null; //创建用于执行SQL语句的Statement对象 ResultSet rs=null; //创建结果集对象
HttpSession session=request.getSession(); try{
//建立连接并执行语句
conn=DriverManager.getConnection(url, user, password); stmt=conn.createStatement(); rs=stmt.executeQuery(sql); //其它操作
if(rs.next()) { } else {
StringBuffer newsql=new StringBuffer();
newsql.append(\"insert into users (username, userpass, newsql.append(username); newsql.append(\"','\"); newsql.append(userpass);
session.setAttribute(\"reg_msg\", \"用户已经存在,请重新注册!\"); response.sendRedirect(\"reg.jsp\");
username=Tools.CodeToString(request.getParameter(\"username\"));
gender=Tools.CodeToString(request.getParameter(\"gender\"));
nativeplace=Tools.CodeToString(request.getParameter(\"nativeplace\"));
//省略号表示要输入具体的sql语句
gender,birthdate,nativeplace) values ('\");
}
newsql.append(\"','\"); newsql.append(gender); newsql.append(\"','\"); newsql.append(birthdate); newsql.append(\"','\"); newsql.append(nativeplace); newsql.append(\"')\");
stmt.executeUpdate(newsql.toString()); session.setAttribute(\"msg\", \"用户注册成功!\"); session.setAttribute(\"username\",username); response.sendRedirect(\"regMsg.jsp\");
}catch(SQLException se){
throw new ServletException(se); }finally{
try{rs.close();}catch(SQLException se){} try{stmt.close();}catch(SQLException se){} try{conn.close();}catch(SQLException se){} } }
6.2登陆设计
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行定购时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进入购物界面。如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览,而不能进行选购,在点击任一按钮后,系统会判断该用户是否是登陆用户,如果不是则弹出提示页面,提示用户必须先登陆才能购物。
登陆的具体实现要通过一个全程变量,即Session变量来实现,在系统中则单独的一个loginservlet页面来放置该session。用户登录的界面login.jsp,从user表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“username”))。示意图如图5-2所示
由于首页中包含了不止登陆界面一个模块,便于理解期间,就显示登陆的具体代码如下:
而loginservlet响应信息代码为:
if(rs.next()){
session.setAttribute(\"username\",username); session.setAttribute(\"msg\",\"登录成功!\");
}else{
session.setAttribute(\"msg\",\"用户名或密码错误!\"); }
response.sendRedirect(\"regMsg.jsp\");
}catch(SQLException se){
}
throw new ServletException(se);
try{rs.close();}catch(SQLException se){} try{stmt.close();}catch(SQLException se){} try{conn.close();}catch(SQLException se){}
}finally{
6.3购物车设计
6.3.1 商品显示实现
当用户登陆成功以后,如果想进入购物,就进入所有商品界面,在点击物品右边的添加到购物车,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量。其中所有商品页面效果如图5-3所示:
主要代码如下:
所有商品
物品编号 | 物品名称 | 物品价格 | 商品图片 | 操作 |
物品编号 | 物品名称 | 价格 | 数量 | 操作 |