4.2.1.2类别信息管理
1.描述:管理员点击左侧的菜单“服装类别管理”,页面跳转到类别管理界面,调用后台的action类查询所有服装类别信息。
2.程序效果图如下图4.5所示
图4.5 服装类别管理
类别管理关键代码:
public String catelogMana()
{
String sql="from TCatelog where catelogDel='no'";
List cateLogList=catelogDAO.getHibernateTemplate().find(sql);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("cateLogList", cateLogList);
return ActionSupport.SUCCESS;
}
public String catelogAll()
{
String sql="from TCatelog where catelogDel='no'";
List cateLogList=catelogDAO.getHibernateTemplate().find(sql);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("cateLogList", cateLogList);
return ActionSupport.SUCCESS;
}
public String catelogAdd()
{
TCatelog catelog=new TCatelog();
catelog.setCatelogName(catelogName);
catelog.setCatelogMiaoshu(catelogMiaoshu);
catelog.setCatelogDel("no");
catelogDAO.save(catelog);
this.setMessage("操作成功");
this.setPath("catelogMana.action");
return "succeed";
}
public String catelogDel()
{
String sql="from TGoods where goodsDel='no' and goodsCatelogId="+catelogId;
List goodsList=goodsDAO.getHibernateTemplate().find(sql);
if(goodsList.size()>0)
{
}
else
{
TCatelog catelog=catelogDAO.findById(catelogId);
catelog.setCatelogDel("yes");
catelogDAO.attachDirty(catelog);
this.setMessage("操作成功");
this.setPath("catelogMana.action");
}
return "succeed";
}
4.2.1.3类别信息删除
1.描述:先是点击类别信息管理,页面跳转到类别管理界面,浏览所有的类别信息,点击要删除的类别,弹出的确定对话框,即可删除该类别信息。
2.程序效果图如下图4.6所示
图4.6 类别信息删除
4.2.2服装信息管理
4.2.2.1服装信息录入
1.描述:在此页面主要是输入服装信息,包括服装编号、名称、服装介绍、服装图片、服装价格等,其中服装介绍这个地方,使用的是开源的在线文本编辑器fckEditor这个富文本框实现。是否为空也是通过form表单中的onsubmit="return checkForm()来检查。
2.程序效果图如图4.7所示:
图4.7 服装信息录入
4.2.2.2服装信息管理
1.描述:管理员点击左侧的菜单“服装管理”,页面跳转到服装管理界面,调用后台的服装Action类查询出所有的服装信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出服装信息。
2.程序效果图如下图4.8所示
图4.8 服装信息管理页面
服装管理关键代码:
public String goodsAdd()
{
TGoods goods=new TGoods();
goods.setGoodsCatelogId(goodsCatelogId);
goods.setGoodsName(goodsName);
goods.setGoodsMiaoshu(goodsMiaoshu);
goods.setGoodsPic(fujian);
goods.setGoodsShichangjia(goodsShichangjia);
goods.setGoodsDel("no");
goodsDAO.save(goods);
this.setMessage("操作成功");
this.setPath("goodsManaNoTejia.action");
return "succeed";
}
public String goodsDel()
{
TGoods goods=goodsDAO.findById(goodsId);
goods.setGoodsDel("yes");
goodsDAO.attachDirty(goods);
this.setMessage("操作成功");
this.setPath("goodsManaNoTejia.action");
return "succeed";
}
public String goodsMana ()
{
String sql="from TGoods where goodsDel='no' order by goodsIsnottejia";
List goodsList=goodsDAO.getHibernateTemplate().find(sql);
for(int i=0;i
{
TGoods goods=(TGoods)goodsList.get(i);
System.out.println(goods.getGoodsCatelogId());
goods.setGoodsCatelogName(catelogDAO.findById(goods.getGoodsCatelogId()).getCatelogName());
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("goodsList", goodsList);
return ActionSupport.SUCCESS;
}
public String goodsShezhiTejia()
{
TGoods goods=goodsDAO.findById(goodsId);
goods.setGoodsIsnottejia("yes");
goods.setGoodsTejia(goodsTejia);
goodsDAO.attachDirty(goods);
return ActionSupport.SUCCESS;
}
public String goodsDetailHou()
{
Map request=(Map)ServletActionContext.getContext().get("request");
TGoods goods=goodsDAO.findById(goodsId);
request.put("goods", goods);
return ActionSupport.SUCCESS;
}
public String goodsDetail()
{
Map request=(Map)ServletActionContext.getContext().get("request");
TGoods goods=goodsDAO.findById(goodsId);
request.put("goods", goods);
return ActionSupport.SUCCESS;
}
4.2.3会员信息管理
4.2.3.1会员信息管理
1.描述:游客访问该站点的时候,可以注册成为会员,管理员登陆后可以管理会员信息,点击左侧的“会员管理“,页面调转中后台的是java类userAction,在此类中,读取数据库中,提取会员的信息,绑定到request对象,再输出到相应的jsp显示页面页面。
2.程序效果图如图4.9所示:
图4.9会员信息管理
会员管理核心代码:
public String userDel()
{
TUser user=userDAO.findById(userId);
user.setUserDel("yes");
userDAO.attachDirty(user);
this.setMessage("删除成功");
this.setPath("userMana.action");
return "succeed";
}
public String userXinxi()
{
TUser user=userDAO.findById(userId);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("user", user);
return ActionSupport.SUCCESS;
}
public String userMana()
{
List userList=userDAO.findAll();
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("userList", userList);
return ActionSupport.SUCCESS;
}
4.2.4修改个人密码
1.描述:输入用户名和用户的原有密码,输入新密码以后点击修改按钮即可修改密码成功。
2.程序效果图如图4.14所示:
图4.14 修改密码
4.2.5安全退出系统
1.描述:点此按钮回到系统的主页面。
2.关键代码:主要是通过javascript语句来实现, item_word[8][4]="退出系统";
item_link[8][4]="javascript:window.open('../index.jsp','_self')";
4.3普通用户模块
4.3.1系统主页面实现
1.描述:页面的上方显示的是该网站的logo和当前的时间,下方主要部分是信息显示区域,左侧部分是通知公告,管理员发布的信息公告都可以在此点击后链接到相应的信息页面查看具体通知公告,左上方是登陆模块,用户必须输入正确的用户名、密码和验证码后才能进入系统,做下方方是一个服装类别信息。
2.程序运行效果图如图4.15所示:
图4.15 系统主页面设计
4.3.2服装类别查询
1.描述:普通用户点击导航栏的“类别查询”。调用后台的java类catelogAction查询所有的类别信息,并绑定这些信息到request对象中,在显示层jsp展示出来,然后用户点击类别名称,即可显示该类别的信息。
2.程序效果图如图4.16所示:
图4.16 类别查询界面设计
4.3.3用户注册
1.描述:对于游客,至于浏览的功能,如果想进一步使用本系统,比如说购买服装、在线下订单等,首先需要注册一个合法的账号,然后登陆后,方能使用,点击导航栏菜单“免费注册”,调用js的open()方法,弹出注册页面,输入相关正确信息后点击注册按钮即可完成注册,如果是没有输入完整的信息,或都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.程序效果图如图4.17所示:
图4.17 用户注册界面设计
第五章 系统测试
5.1系统测试目的与意义
系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。
系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这这阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是正对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。
5.2测试过程
在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。
这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。
5.2.1主页面的登录模块测试
测试流程: 1.打开系统首页,输入错误的登录信息
2.登录
3.输入正确的登录信息
4.登录
5.测试结果
列名 |
数据类型 |
长度 |
允许空 |
是否主键 |
说明 |
goods_id |
Int |
4 |
否 |
是 |
服装ID |
catelog_id |
Int |
4 |
否 |
否 |
类别ID |
goods_name |
varchar |
50 |
否 |
否 |
名称 |
goods_jieshao |
varchar |
50 |
否 |
否 |
介绍 |
goods_pic |
varchar |
50 |
否 |
否 |
服装封皮 |
shichangjia |
Date |
50 |
否 |
否 |
服装价格 |
5.3其他错误
在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet路径配置时因粗心错误导致运行导致所报错误,如图5.4:
图 5.4 由于action路径配置错误,运行时的提示
结 论
本次毕业设计将我大学四年所学的软件工程理论知识用到了具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力。在这段日子里,我查阅了许多有关网上购物管理系统的资料,翻阅了许多JSP的书籍,结合自己的经验,详细调查了网上购物的运作流程,开发设计了这个网上购物管理系统,虽然学校每个学期都会有相应课程的课程设计和实训来作为动手练习训练,不过在本次毕业设计具体的实践的时候还是遇到了很多小问题,比如说在jsp页面将输入框设为不可用是添加属性readonly=“true”,而我在实际编程中却错写成disable=“true”,这样直接导致了request对象取不到数据,调试了程序很久才发现request对象获得的返回值一直是空,之前一直以为是代码哪里出了问题,总是在查源程序的逻辑。这些虽然都是小问题,但是由于不细心在具体实践中却浪费了不少时间,看来平时还是要多多实践才是。
在系统的开发过程中,我运用到了B/S三层结构技术和自己在平时学习中掌握的一些技术,通过这些技术的实现,整个系统的性能得到了大大的提高。这些技术都在论文中做了比较详细的介绍。本系统还存在许多的缺陷和不足之处,比如很多细节上做的还不行,有些功能模块还应再加强。希望在以后的时间里,我可以把这些缺陷都弥补过来,进一步完善系统。
通过本次毕业设计我锻炼了自己的自学、研究能力,也从中学到不少在学校在课堂上学不到的东西.通过实践我也深刻的体会到软件开发的艰辛及问题解决后的喜悦心情,培养我的独立思考问题的能力,同时也增强了我的理论联系实际的能力,这为自己以后的工作奠定了良好的基础。