Shopping online网上购物系统的设计与实现
第五章 系统详细设计
详细设计的根本目标是确定应该具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。在项目开发时,使用一种稳定成熟的框架是项目成功的重要因素。MVC的基本思想就是逻辑与显示的分离,Model是应用程序的主体部分,它表示业务数据或者业务逻辑,View是应用程序中与用户界面相关的部分,也就是用户看到并与之交互的界面,Controller根据用户的输入,控制用户界面数据的显示和更新Model对象的状态,MVC不仅实现了功能模块和显示模块的分离,同时也提供了应用系统的可维护性、可扩展性、可移植性和组件的可重用性。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。
5.1 系统主界面设计
本网站的主界面整体结构还算简洁、清晰,上面部分为商品搜索条,,左面部分为商品类别框,右面部分为资讯区,中间部分为商品展示区。本网上购物系统主界面如图5.1所示。
22
Shopping online网上购物系统的设计与实现
图5.1系统登陆界面
5.2 系统前台各主要模块的功能设计
5.2.1用户登陆模块的实现
用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行定购时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进行定购。如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览和搜索,而不能进行选购,在点击添加购物车后,系统会判断该用户是否是登陆用户,如果不是则弹出提示页面,提示用户必须先登陆才能定购商品,如果是第一次登陆,必须先注册。
23
Shopping online网上购物系统的设计与实现
登陆的具体实现要通过一个全程变量,即Session变量来实现用户登录的界面UserLogin.jsp,从shopuser表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“user”))。具体的判断过程为:
若session中user为空即session.getAttribute(\\,表明没有经过登陆与否的验证,则立即跳转到UserLogin.jsp,请用户登录;并将用户登陆的帐号和密码通过
通过UserService 的check 方法,先判断是否存在这个用户如果不存在这个用户则抛出自己定义的一个异常UserNotFoundException ,如果存在这个用户再和输入的密码做对比,如果密码不正确则抛出自己定义的PasswordWrongException异常。对应Action中分别截获这两种不同的异常来判断对应的错误信息。具体代码实现如下: String username = request.getParameter(\String password = request.getParameter(\try {
User u = User.check(username, password); session.setAttribute(\
} catch (UserNotFoundException e) {
out.println(e.getMessage()); return;
} catch (PasswordNotCorrectException e) {
out.println(e.getMessage()); return; }
5.2.2新会员注册模块的实现
如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表
24
Shopping online网上购物系统的设计与实现
即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。注册页面的效果图如下:
图5.2注册页面界面
系统对用户的注册信息的验证实现如下:用户输入的各项信息分别对应字段 username,password,phone,addr, 再添加用户之前要有一个前台校验: function check{
var username=document.register.username.value; var password=document.register.password.value; var password2=document.register.password2.value; var addr=document.register.addr.value; if(username.length==0){ alert(“用户名不能为空”); ruturn false;
}else if(username.length<6){
25
Shopping online网上购物系统的设计与实现
Document.register.username.value=’’; alert(“用户名长度不能小于6位”); return false;
}else if(password.length<6){
alert(“用户名长度不能小于6位”); return false;
}else if(password!=password2){
alert(“两次输入的密码不一样,请返回重新输入!”); ruturn false;
}else if(addr.length==0){ }
return true; }
5.2.3 购物车模块的实现
当用户登陆成功以后,如果找到了希望定购的物品,在点击物品下方的定购以后,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量。页面效果如下:
alert(“地址不能为空”); return false;
图5.3购物车界面
26