《网上购物管理系统.docx》由会员分享,可在线阅读,更多相关《网上购物管理系统.docx(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程实践报告课程名称:软件工程实践II项目名称:网上购物系统专业班级: 姓 名: 学 号:指导教师: 成绩:_报告日期:2014年12月9日 网上购物管理系统摘要随着计算机技术在各行各业日益广泛和深入的应用,网络的概念早已深入人心。网络在各行各页的发展战略占据了重要的位置,成为了商家不可分割的一部分。网络已经成为了商家展示自己的另一个舞台。商家建立网站,通过网站可以实现,浏览商品,网上购物,结账本系统实现了网上购物商城的基本功能和购物流程。主要模块有:商品查询、商品管理、商品显示、购物车、订单管理、用户管理等功能。其开发主要包括:数据库的建立,前台Web页面设计,后台管理。本系统采用MySql
2、数据库和Tomcat服务器实现,并且使用HTML、JSP等技术来编辑网页,并运用Hibernate技术把数据库和动态网页相关联。关键字关键词:网上商场,购物车,结账,Tomcat,Sevlet,JSP,MySql数据库目录摘要2关键字21需求分析41.1背景41.2可行性分析41.3对性能的规定41.3.1时间特性要求41.3.2灵活性51.4其他专门要求51.5运行环境的规定51.6设备51.7支持软件52功能分析62.1功能分析的目的62.2业务描述62.3用例图82.4 状态图103模块设计103.1系统功能模块103.2模块分析114数据库分析与设计184.1数据库分析184.2系统整
3、体ER图的设计194.3数据库设计205编码,实现及测试225.1各功能源代码226 结论226.1系统优点226.2系统缺点226.3未来发展227实验小结237.1 孙佳伟实验小结237.2 喻道斌实验小结237.3 金龙实验小结231需求分析1.1背景在发达国家,电子商务的发展非常迅速,通过Internet进行交易己成为一种潮流。基于电子商务所连带出的商品交易方案、电子结账方案和信息安全方案等,已逐步成为国际信息技术市场竞争的焦点。随着电子商务的日益发展,产生了网上购物、网络广告等新兴信息产业,从侧面反应了电子商务正在对社会和经济产生着深刻的影响。在我国,网上购物从无到有也不过短短几年时
4、间。但是就在这几年时间,网络购物已经深入千家万户,普通的购物已经不能满足人们的消费。网上购物以其诸多优势,获得人们的青睐。它以其方便,快捷,高效,高选择性等优点,迅速得到了广大网友的喜爱与青睐,现在的网上购物已经非常普及。本系统设计就是为了满足广大网友的这些需求,改变传统的交易模式,通过互联网完成查看商品,购买商品等完成网上交易。方便消费者,同时对商家的商品信息进行管理,便于商家的商品数据分析。截止2013年1月中国有网上购物的用户将近5000万人,这足以证明网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。因此我们小组致力于做一个基于B/S架构的网上购物管理系统,使广大用户可以享受网
5、上购物的种种优势。1.2可行性分析随着计算机的普及,Internet的发展,网购已经成为人们生活消费中一大部分。一个网上购物系统可以为消费者提供软件条件,使其可以更加快捷,方便,实惠的选择商品,而商家也可以更好的管理商品,节约成本,两全其美。所以构建一个网上购物商城在运行上是完全可行的。此次开发使用JSP作为开发语言,采用Servlet技术,Tomcat7.0座位Web服务器,采用MySql作为数据库,这几种技术及工具的方便,快捷,免费大大的缩短了开发的时间,减少了开发的成本。并且使得开发更方便安全,更利于后期的维护。网上购物服务系统给人们带来了方便,成为一种全新的商务模式。因此,不用出门就可
6、以在家购物的新时尚已经到来,构建一个网上购物服务系统在经济上是完全可行的。综上所述:开发本系统是完全可行的。1.3对性能的规定1.3.1时间特性要求对于商品基本信息,订单信息管理的增加删除修改必须是实时响应,与客户端的交互响应时间不超过5s1.3.2灵活性操作方式的变化,可以直接从UI或从数据库输入行,对初始行进行增加,删除,删除等操作。1.4其他专门要求文字描述必须准确,精炼,通俗易懂。安全性要得以保障,可移植性要高,为了适应不同系统,程序吞吐量必须要大,否则不能动态适应购物网站的需要。1.5运行环境的规定1.6设备开发环境:操作系统:windows7硬件环境:客户终端:pc机;服务器:To
7、mcat编译环境:Jdk 1.61.7支持软件操作系统:*开发软件:MyEclipse数据库: Mysql2功能分析2.1功能分析的目的从用户需求出发,对于网上购物系统做细致全面的功能分析,准确地定义网上购物系统的目标,确定系统必须做什么,再用UML建模,并以Rational Rose工具画出功能模型,以此形式分析确定此网上购物系统的功能。2.2业务描述用户进入网站后,可以根据价格高低确定是否进行筛选,不筛选则进入所有的商品浏览界面,筛选则得出筛选后的浏览界面。接着可以点击商品加入购物车,可以自己选择加入的数量。加入购物车以后可以查看购物车,在购物策划模块中可以选择添加或删除购物车商品,接着用
8、户可以自行判断是否继续购物,如果继续购物则返回首页,不购物则进行结账。结账之后可以查看订单界面,这里有详细的订单信息。,否则注销退出。下图为网上购物系统的业务流程图。图 1-1 系统业务流程图2.3用例图用例图l 浏览商品用例,可以实现浏览商品l 搜索商品用例,可以根据商品的价格进行筛选查询商品。l 管理商品详情用例,可以实现对商品中所有信息的浏览。l 加入购物车用例,是用户才有的功能,能在浏览商品后把商品加入购物车l 管理购物车用例,在加入购物车后扩展的功能,对于购物车内的商品可以增加删除l 购买商品用例,用户可以对于商品显示页面的商品进行购买l 管理自身订单,用户可以对自身的订单进行搜索,
9、删除功能。l 清空购物车用例,用户对购物车中所有商品进行清空l 浏览曾经的商品(历史记录)用例,用户可以在这里浏览曾经使用的商品l 结账模块用例,用户可以在这里进行结账功能。图1-2主用例图图 1-3 购物车用例图图 1-4 结账用例图2.4 状态图对于系统进行状态细节分析如下a) 用户首页输入网址进入首页界面b) 用户浏览商品进入商品展示界面c) 浏览完之后可选择喜欢的商品进入购物车界面d) 在购物车中可以添加或删除商品进入更改商品界面e) 更改接受后确定是否继续购物,若继续择返回商品展示界面f) 若不继续购物则进入结账界面g) 在结账界面中进行查看订单,进入订单确认状态h) 订单确认无误后
10、,则系统提交,之后用户可以注销退出。3模块设计3.1系统功能模块功能模块图:系统总体分为前台展示模块,购物车模块,结账模块。前台展示模块包括:浏览商品模块,筛选商品模块,商品详情模块,历史纪录模块。购物车模块包括:购物车展示模块,删除商品模块,清空购物车模块,继续购物模块。结账模块包括:订单确认模块,提交订单模块,事务处理模块。图3-1 功能模块图3.2模块分析1:商品展示模块这是网站的主页面,用户不登陆也可以进入该页面,登陆成功后,页面会显示用户的信息。此页面主要是显示一些主要商品的图片、名称、价格等信息,用户可以输入商品名称,种类等进行搜索,也可以直接点击商品查看商品细节信息。图 3-2
11、商品展示模块在主界面中可以根据价格的高低排序 2:商品详情模块当你点击一个商品的链接,可以进入商品的详情页面,这里会相识一个商品的所有具体信息,可以看到书名,作者,价格,出版日期图3-3 商品详情模块 3:购物车模块用户喜欢的商品可以选择放进购物车里,可以在购物车里产看用户选择的商品的名称价格以及购物车商品的总价,用户可以对购物车中的商品进行操作,修改购买数量,删除商品,清空购物车,结账等。图3-3 购物车前台模块图3-4购物车展示界面清空购物车图3-5清空购物车界面删除购物车中的某教材图3-6删除购物车某教材4:回顾商品模块当您想看曾经浏览过的商品时,可以点击查看浏览的历史记录,根据最近浏览
12、的显示记录排序图3-7 回顾商品模块5:结账模块在购物车进行结算以后,会跳转至结账界面,系统会显示当前的信用卡姓名,信用卡帐号,当您提交时就会结算成功,并且通过事务管理防止重复提交图3-8 结账模块界面余额不足时提示图3-8 余额不足界面6:订单页面模块在购物车进行结算以后,就会生成订单,订单会显示订单号、收货人、地址、电话等信息。点击查看详情就可以进入订单详情页面图 3-9 订单页面模块4数据库分析与设计4.1数据库分析对于以上模块的划分以及分析我们建立网上购物管理系统数据库,建了5个表,分别是帐户表(account),书籍信息表(mybooks),订单表(trade),订单项目表(trad
13、eItem),用户信息管理(usersInfo),各表的实现的功能在上述模块设计中已经指出,此刻不再赘述。帐户表(account)中的各列分别为:帐户编号(accounted)主码,帐户余额balance书籍信息表(mybooks)中的各列分别为:书籍(Id)主码,作者(Author),标题(Title),价格(Price),出版日期(Publishingdate),车辆类型(Salesamount),车辆规格(Storenumber),单价预算(Remark)订单表(trade)中的各列分别为:订单编号(tradeid)主码,用户编号(userid)外码,订单日期(tradetime)订单项
14、目表(tradeItem)中的各列分别为:订单编号(itemid)主码,书籍编号(bookid)外码,(quantity),使用年限(tradeid)用户信息管理(usersInfo)中的各列分别为:用户编号(userid),用户名(username),帐户编号(accountid)4.2系统整体ER图的设计图4-1 系统整体ER图设计4.3数据库设计帐户表(account)设计图4-2帐户表(account)设计书籍信息表(mybooks)设计图4-3书籍信息表(mybooks)设计订单表(trade)设计图 4-4订单表(trade)设计订单项目表(tradeItem)设计图4-5订单项目
15、表(tradeItem)设计用户信息表(userinfo)设计图4-6 用户信息表(userinfo)设计5编码,实现及测试5.1各功能源代码5.1.1 分页的实现public ListgetPageList(CriteriaBookcb, intpageSize,String method) String sql=null;System.out.println( method-+method);if(method.equals(price)sql=SELECT id, author, title, price, publishingDate, +salesAmount, storeNumbe
16、r, remark FROM mybooks +WHERE price = ? AND price = ? AND price = ? AND price = ? AND price =0)flag=true;if(!flag) alert(输入的数量不合法); $(this).val($(this).attr(class);return ;var$tr = $(this).parent().parent();vartitle = $.trim($tr.find(td:first).text();if(quantity=0)varflag2=confirm(确定要删除+title+吗?);if
17、(flag2)varserializeVal = $(:hidden).serialize();varhref=$tr.find(td:last).find(a).attr(href);window.location.href=href+ & + serializeVal;return ;varflag = confirm(确定要修改 + title + 的数量吗?);if(!flag) $(this).val($(this).attr(class);return;/2. 请求地址为: bookServletvarurl = Books;/3. 请求参数为: method:updateItem
18、Quantity, id:name属性值, quantity:val, time:new Date()varidVal = $.trim(this.name);varargs = method:updateItemQuantity, id:idVal, quantity:quantityVal, time:newDate();/4. 在updateItemQuantity方法中, 获取quanity, id, 再获取购物车对象, 调用 service 的方法做修改/5. 传回 JSON 数据: bookNumber:xx, totalMoney/6. 更新当前页面的bookNumber和tot
19、alMoney$.post(url, args, function(data)varbookNumber = data.bookNumber;vartotalMoney = data.totalMoney;$(#totalMoney).text(总金额: ¥ + totalMoney);$(#bookNumber).text(您的购物车中共有 + bookNumber + 本书);,JSON););5.1.3:运用ThreadLocal类实现数据库的连接与当前线程绑定,实现结账的事务操作publicvoiddoFilter(ServletRequest request, ServletResp
20、onse response, FilterChain chain) throwsIOException, ServletException Connection connection = null;try connection = DBUtils.getConnection();connection.setAutoCommit(false);ConnectionContext.getInstance().bind(connection);chain.doFilter(request, response);mit(); catch (Exception e) e.printStackTrace(
21、);try connection.rollback(); catch (SQLException e1) e1.printStackTrace();HttpServletResponseresp = (HttpServletResponse) response;HttpServletRequestreq = (HttpServletRequest) request;resp.sendRedirect(req.getContextPath() + /error-1.jsp); finallyConnectionContext.getInstance().remove();DBUtils.Rele
22、ase(connection);5.1.4:使用过滤器实现页面的编码publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain) throwsIOException, ServletException String encoding = filterConfig.getServletContext().getInitParameter(encoding);request.setCharacterEncoding(encoding);chain.doFilter(request, r
23、esponse);5.1.5:数据库底层操作,运用泛型技术和反射技术public class BaseDao implements DAO privateQueryRunnerqueryRunner=new QueryRunner();private Classclazz;publicBaseDao() clazz = ReflectionUtils.getSuperGenericType(getClass();System.out.println(clazz);Overridepublic long insert(String sql, Object. args) long id=0; Co
24、nnection conn=ConnectionContext.getInstance().get();try PreparedStatement prepareStatement=conn.prepareStatement(sql,java.sql.Statement.RETURN_GENERATED_KEYS );for(inti=0;iargs.length;i+)prepareStatement.setObject(i+1, argsi);prepareStatement.executeUpdate();ResultSetresultSet=prepareStatement.getGe
25、neratedKeys();if(resultSet.next()id=resultSet.getLong(1); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return id;Overridepublic void update(String sql, Object. args) Connection conn=ConnectionContext.getInstance().get();try queryRunner.update(conn, sql, args); catch (S
26、QLException e) / TODO Auto-generated catch blocke.printStackTrace();Overridepublic T query(String sql, Object. args) Connection conn=ConnectionContext.getInstance().get();try return (T)queryRunner.query(conn, sql, new BeanHandler(clazz), args); catch (SQLException e) / TODO Auto-generated catch bloc
27、ke.printStackTrace();return null;SuppressWarnings(unchecked)Overridepublic V getSingleValue(String sql, Object. args) Connection conn=ConnectionContext.getInstance().get();try return (V) queryRunner.query(conn, sql, new ScalarHandler(), args); catch (SQLException e) / TODO Auto-generated catch block
28、e.printStackTrace();return null;Overridepublic void batch(String sql, Object. args) Connection conn=ConnectionContext.getInstance().get();try queryRunner.batch(conn, sql, args); catch (SQLException e) e.printStackTrace();Overridepublic ListgetForList(String sql, Object. args) Connection conn=Connect
29、ionContext.getInstance().get();try System.out.println(sql-+sql);returnqueryRunner.query(conn, sql, new BeanListHandler(clazz),args); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return null;5.1.6:使用session防止表单重复提交publicvoidcash(HttpServletRequest request, HttpServletRe
30、sponse response)throwsServletException, IOException, InterruptedException HttpSession session=request.getSession();Thread.sleep(5000);String username=request.getParameter(username);String accountId=request.getParameter(accountId);StringBuffer errors=validateFormField(username, accountId);if(errors.t
31、oString().equals()errors=validateUser(username, accountId);if(errors.toString().equals()errors=validateBookStoreNumber(request);if(errors.toString().equals()errors=validateBalance(request,accountId);String code=(String) session.getAttribute(code);System.out.println(code+-);String codeRe=request.getP
32、arameter(checkCode);if(!code.equals(codeRe)errors.append(验证码输入不正确);if(!errors.toString().equals()request.setAttribute(errors, errors);request.getRequestDispatcher(/WEB-INF/pages/cash.jsp).forward(request, response);return ;String val=request.getParameter(date);String valS=(String) session.getAttribu
33、te(date);if(valS!=null&valS.equals(val)service.cash(BookStoreWebUtils.getShopCart(request),username,accountId);request.setAttribute(username, username);request.getRequestDispatcher(/success.jsp).forward(request, response);session.removeAttribute(date);if(valS=null)request.getRequestDispatcher(/WEB-I
34、NF/pages/error.jsp).forward(request, response);5.1.7:使用数据库连接池rootjdbc:mysql:/bookstorecom.mysql.jdbc.Driver255102056 结论6.1系统优点系统实现了网上购物商城的基本功能,可以很好的完成网上购物的一系列流程。而且方便快捷,高效。页面也很美观,大方。对整个系统的框架设计合理,大大提升了系统的整体性与耦合性。也方便了后期的进一步开发与维护。6.2系统缺点系统缺乏创新性,没有自己过多的新增功能,没有特别突出的特点。可以增加一些功能,来丰富系统,提升系统的实用性。例如增加商品的销量排行榜,方便用户查看畅销商品。增加商品的交易评价,方便用户判断是否购买此商品。6.3未来发展这里指为了使本系统更好的适应环境的变化,有必要进行适应性维护。一方面由于计算机技术的飞速发展,原来的系统不能适应新的软硬件,另一方面,应用对象也在不断的发生变化,将导致系统不能适应新的应用环境,因此,有必要对系统进行调整,以保证系统时时都能满足用户要求。7实验小结