版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年4月19日软件工程网上购物系统课程设计文档仅供参考,不当之处,请联系改正。软件工程课程设计报告(--年第二学期)课程名称:软件工程课程设计题目:网上购物系统院系:控制与计算机工程学院班级:软件1002班组号:组长:艾君伟组员:陈肖成、汪豪、李崧榕指导教师:设计周数:两周小组成绩:日期:年7月12日《软件工程》课程设计任务书一、目的、要求经过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。具体如下:学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;熟悉自动化的软件开发工具RationalRose,并将其运用于软件开发的全过程;进一步加强和提高软件工程文档的编写能力;培养协作能力和团队精神。二、主要内容运用面向对象技术、UML进行网上购物系统的需求分析与设计;使用RationalRose作为需求分析与设计的建模工具,进行静态建模和动态建模;利用对象模型自动生成数据模型,自动建立数据库;使用J2EE、HTML、CSS、Javascript语言对购物模块进行界面层的设计并给出实现;撰写课程设计报告。三、任务分配任务负责人参与人备注小组讨论:需求分析(用例图、类图)艾俊伟、陈肖成、汪豪、李崧榕用例图绘制、类图绘制、数据流分析、数据库设计汪豪汪豪顺序图、系统结构分析、状态图测试陈肖成陈肖成需求分析、编码、详细设计艾君伟艾君伟绘制部分顺序图、协作图、报告处理李崧榕李崧榕四、进度计划序号设计内容名称完成时间备注1分组及确定题目1个工作日2初步的需求分析与设计建模,确定实现平台,并搭建环境2个工作日3详细的需求分析与设计建模2个工作日进行中期检查4关键模块的实现与测试3个工作日5编写课程设计报告1个工作日6验收检查及评定成绩1个工作日五、设计成果要求建立系统分析与设计模型;初步建立系统原型,实现关键的功能;编写课程设计报告。六、考核方式系统演示及讲解占50%。设计报告占50%。指导教师:日期:6月28日
《软件工程》课程设计成绩评定一、指导教师评语二、成绩学号姓名成绩备注艾君伟陈肖成李崧榕汪豪指导教师:日期:年7月12日摘要:当今社会,随着计算机的应用和Internet的普及,Internet网络给人类社会带来了巨大变化,网络在我们的生活中几乎无处不在。因此,建立网上物品的销售管理系统是时代的潮流。由于JSP能够在85%以上的服务器上运行,而且JSP技术的应用程序比ASP的应用程序易于维护和管理。因此,经过采用JSP技术设计开发在线购物系统符合时代的潮流、具有积极的进步意义。网上购物系统能够实现人们远程逛逛商店和购买商品的愿望。本系统的功能是实现网上购物,主要包括商品信息管理、购物车订单管理、用户管理、商品评价管理、商品库存管理等模块,主要以对数据库的增删改查来实现这些功能。本系统依据模仿现行的B2C网站的需求而设计,运用RationalRose、Myeclipse等软件开发工具实现系统的分析、设计与实现,最后设计出来的系统基本满足能网上购物的功能需求。关键词:网上购物,面向对象,RationalRose,J2EE一、课程设计的目的与要求经过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。具体如下:学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;熟悉自动化的软件开发工具RationalRose,并将其运用于软件开发的全过程;进一步加强和提高软件工程文档的编写能力;培养协作能力和团队精神。二、设计正文概述设计课题该系统为网上购物系统。系统目标调研当前现有的网上购物系统,如当当网,亚马逊商城,京东商城等大型电子商务系统,设计出一个更适合用户使用,有更多用户交互,更人性化的购物系统。系统开发与运行环境 (1)数据库管理软件:MySQL (2)建模工具:RationalRose (3)编程工具:MyEclipse、DreamWeaver (4)操作系统:Windows系列、Tomcat系统 (5)开发语言:J2EE
2系统需求分析2.1系统需求概述主要从用户、管理员两方面进行需求分析。用户功能分析:(1)购物车: 主要功能包括将商品加入购物车——>提交订单——>支付——>将订单信息存档 (2)个人中心:功能主要包括四部分: 1)查询自己的购买商品记录,经过人员id在数据库中查找。 2)商品列表:能够查询用户本人在使用,想购买,和购买过的商品。 3)推荐商品:本用例中,推荐商品和新商品经过控制类中的方法实现,偏好是商品经过人员的个性分析方法实现。 4)商品评价:能够查询自己的评论过的商品的商品信息和评论信息(3)账户管理: 主要包括登录,注册,修改个人资料的功能 (4)商品搜索: 1)字节搜索:能够经过商品名称,商品序列号精确搜索 2)分类搜索:经过各个分类进行搜索。管理员功能分析: (1)商品信息管理:功能主要包括四部分: 1)增加商品信息 2)删除商品信息 3)修改商品信息 4)查看商品信息 (2)库存管理: 主要功能包括:修改商品的存货数量 (3)用户管理: 1)将不良交易次数用户较多的用户加入黑名单 2)商品评价管理:将被人气较高的书评放入首页的推荐书评模块 (4)商品评评管理: 主要功能为将违禁商品评价删除 (5)销量统计: 主要功能包括:查看营业额,查看销售排行,查看利润。2.2用例图对于整个用例图,外部角色有管理员、普通用户即顾客。管理员主要有书籍的增、删、改,普通用户信息管理,订单管理。普通用户主要有在线交易、搜索、结算、加入购物车、加入收藏、结算、评价、账户管理等用例。图2.2-1总用例图用例图图2.2-2店铺管理用例图图2.2-3购物用例图关键用例正常事件流和异常事件流的描述如下表:用例规格说明:内容管理员注册超级管理员说明内容管理员注册B2C购物系统前提条件超级管理员(最高权限)登录后置条件内容管理员注册成功基本事件流确认B2C购物系统已打开→确认超级管理员已登录→确认打开注册页面→确认用户名输入正确,两次密码相同且正确→内容管理员成功注册异常事件流第一异常事件流两次密码不相同第二异常事件流用户名已注用例规格说明:内容管理员登录所有用户说明内容管理员登录B2C购物系统前提条件无后置条件内容管理员登录成功基本事件流确认B2C购物系统登录界面已打开→确认用户名和密码已输入→验证经过→用户成功登陆系统异常事件流第一异常事件流用户名或密码错误
用例规格说明:新增商品内容管理员说明内容管理员新增一条商品信息前提条件内容管理员已登录,已输入新增商品信息后置条件系统中增加一条商品信息基本事件流确认已输入商品信息→增加商品异常事件流第一异常事件流商品信息错误第二异常事件流商品信息已存在用例规格说明:修改商品内容管理员说明内容管理员修改商品信息前提条件内容管理员已登录,修改商品信息存在后置条件系统中修改一条商品信息基本事件流确认商品信息已修改→修改商品信息异常事件流第一异常事件流修改信息错误第二异常事件流修改信息无变化第三异常事件流修改信息不存在用例规格说明:删除商品内容管理员说明内容管理员删除一条商品信息前提条件内容管理员已登录,删除商品信息存在后置条件系统中删除一条商品信息基本事件流确认已选择商品信息→删除商品异常事件流第一异常事件流删除的商品不存在
用例规格说明:修改订单内容管理员说明内容管理员修改一条订单信息前提条件内容管理员已登录,修改的订单存在后置条件系统中修改一条订单信息基本事件流确认已选择订单信息→修改商品异常事件流第一异常事件流要修改的订单不存在第二异常事件流修改订单信息错误用例规格说明:取消订单内容管理员说明内容管理员取消一个订单前提条件内容管理员已登录,取消的订单存在后置条件系统中一条订单取消基本事件流确认已选择订单信息→取消订单异常事件流第一异常事件流要取消的订单不存在用例规格说明:退货内容管理员说明管理员管理退货前提条件内容管理员已登录,用户申请符合要求,收到退回来的货品,检查完好后置条件顾客退货成功基本事件流登录→查看退货申请→符合退货条件→收到退回来货品→退货成功异常事件流第一异常事件流未登录第二异常事件流退货申请不存在第三异常事件流商品已过保质期第四异常事件流商品未寄回
用例规格说明:顾客信息修改内容管理员说明修改顾客信息前提条件顾客存在,管理员已登录后置条件修改顾客信息成功基本事件流选择用户→确认修改信息→顾客信息修改成功异常事件流第一异常事件流管理员未登录第二异常事件流顾客不存在第三异常事件流输入信息错误与顾客有关的用例规格说明用例规格说明:顾客注册顾客说明顾客注册B2C购物系统前提条件无后置条件顾客注册成功基本事件流确认打开注册页面→确认用户名输入正确,两次密码相同且正确→顾客注册成功异常事件流第一异常事件流用户名存在第二异常事件流用户名或密码输入错误用例规格说明:顾客登录顾客说明顾客登录B2C购物系统前提条件无后置条件顾客登录成功基本事件流确认打开登录页面→确认登录名、密码→顾客注册成功异常事件流第一异常事件流用户名不存在第二异常事件流用户名或密码错误
用例规格说明:浏览顾客说明顾客浏览商品前提条件无后置条件商品页面打开成功基本事件流确认打开链接→商品页面打开成功异常事件流第一异常事件流商品已下架用例规格说明:搜索顾客说明顾客搜索商品前提条件无后置条件显示搜索结果基本事件流确认搜索内容→显示搜索结构异常事件流第一异常事件流输入搜索内容错误用例规格说明:加入购物车顾客说明顾客将商品加入购物车前提条件商品存在,购物车未满后置条件顾客注册成功基本事件流确认加入购物车商品和购物车→商品成功加入购物车异常事件流第一异常事件流商品已下架第二异常事件流购物车已满
用例规格说明:加入收藏顾客说明顾客将商品加入收藏夹前提条件商品存在,顾客已登录,收藏夹未满后置条件商品加入收藏夹成功基本事件流确认加入收藏夹的商品和收藏夹→商品加入收藏夹成功异常事件流第一异常事件流商品已下架第二异常事件流用户未登录第三异常事件流收藏夹已满用例规格说明:结算顾客说明用户对购物车中的商品进行结算前提条件用户已登录,购物车中有商品,余额充分后置条件结算成功基本事件流确认结算信息→确认余额充分→结算成功异常事件流第一异常事件流购物车为空第二异常事件流未登录第三异常事件流余额不足用例规格说明:退货顾客说明用户申请退货前提条件购买商品未过保质期,用户已登录后置条件顾客退货成功基本事件流登录→勾选商品→确认未过保质期→寄回商品→退货成功异常事件流第一异常事件流未登录第二异常事件流商品不存在第三异常事件流商品已过保质期第四异常事件流商品未寄回
用例规格说明:顾客信息修顾客说明修改顾客信息前提条件顾客已登录后置条件修改顾客信息成功基本事件流确认修改信息→顾客信息修改成功异常事件流第一异常事件流顾客未登录第二异常事件流输入信息不合法2.3类图图2.3-1类图类描述如下:coustomer用户能够更改自己的姓名、密码和其它个人信息,也能够查看自己的购物车并在其上添加删除商品,其后对购物车中的产品进行结算。用户还能够对订单中已付款的商品按照要求进行退货操作。用户还能够发表商品评价和查看商品的来自其它人的评价。Manager管理员所具有的属性并不多,管理员主要实现对商品的增、删、改,对用户个人信息的管理,对订单的处理协助用户退货。good描述商品对象的抽象。商品的唯一标识是商品ID,商品还有品名、价格、类型编号、图片、描述、数量、评价。
shoppingcart用户的购物车类,在用户进行网上浏览和准备交易时,可将商品加入购物车,查看购物车,删除或取消交易。进行交易时会将交易信息入时间、金额、商品列表、优惠方式等记录为购物历史。购物车对象自带了计算优惠的方式,同时购物车要记录用户购买商品时的运送信息。Order订单记录了订单编号,订单生成时间和用户ID,订单经过一个LIST类型记录了购买的商品。类之间的关系:Coustomer与shoppingcart为聚合关系,manger与order是聚合关系;manger、coustomer类同good类是关联关系,其中coustomer与good的关联类是shoppingcart类;shoopingcart与order为关联类。2.4顺序图支付的顺序图如下图所示,首先是用户登录系统,然后用户经过界面在商品类中查看到自己想要买的商品,然后将商品加入购物车,然后提交订单,支付订单,最后进行存档。图2.4-1用户支付顺序图图2.4-2新增商品顺序图图2.4-3删除商品顺序图图2.4-4修改商品顺序图退货的顺序图如下图所示,首先是用户登录系统,然后用户经过界面在订单中查看到自己已买的商品,然后申请退货,最后进行退货。2.4-5用户退货顺序图2.5协作图根据顺序图获得协作图如下:图2.5-1用户支付协作图图2.5-2新增商品协作图
图2.5-3删除商品协作图图2.5-4修改商品协作图图2.5-5用户退货协作图2.6状态图订单状态图。主要包括订单为空状态、订单处理状态、增加完成状态、删除完成状态、修改完成状态,支付订单状态,订单存档状态。图2.6-1订单状态图3.系统总体设计3.1系统体系结构设计3.3设计数据管理子系统表3.3-1用户表表3.3-2管理员表表3.3-3商品表表3.3-4订单表表3.3-5商品类型表图3.3-1数据表关系图3.4设计人机交互子系统图3.4-1注册界面图3.4-2注册成功界面图3.4-3登陆界面图3.4-4主页界面图3.4-5购物车界面图3.4-6提交订单界面图3.4-7提交订单成功界面4.详细设计提示:对于复杂的方法给出详细设计,能够使用伪代码描述,也能够使用程序流程图来描述。4.1.1商品查询方法goodsearch(){创立一个List类型以及标志位flg=false;获取搜索类型If(按名字查询){获取窗口中的关键字;创立数据库查询语句sql;创立SQLBean对象bean;Rs=bean.exacuteQuery(sql);Try{将rs中的信息存入到List中;}Catch(SQLExceptione){输出异常信息;}}If(按分类查询){获取商品类型;创立数据库查询语句sql;创立SQLBean对象bean;Rs=bean.exacuteQuery(sql);Try{将rs中的信息存入到List中;}Catch(SQLExceptione){输出异常信息;}}返回List}4.1.2登录界面代码实现packageServlet_Contorlller;//登录publicclassloginCheckextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriterout=response.getWriter(); response.setContentType("text/html"); Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); System.out.println("输入的密码:"+password); Stringradio=request.getParameter("logintype"); //username=newString(username.getBytes(),"gb2312"); intreginfo=-1; if("".equals(username)||username==null){ reginfo=4;//用户名不能为空 System.out.println("用户名为空"); }else{ if(radio.equals("0"))//个人登录 { StringsqlString="selectpasswordfromcustomerwhereusername='" +username+"'"; List<String>list=null; SQLBeansearch=newSQLBean(); try{ search.executeQuery(sqlString); System.out.println(sqlString); list=search.getSelectRt(); search.close(); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } if(list.size()==0){ reginfo=3;//用户不存在 response.sendRedirect("index.jsp?reginfo=3"); }else{ for(Stringitem:list){ if(item.equals(password)){ System.out.println("sadasdsa"); reginfo=1;//登录成功 HttpSessionsession=request.getSession(true); session.setAttribute("user",username); response.sendRedirect("pagedivide"); } } } } } } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException { this.doGet(request,response); }}4.1.3注册界面代码实现packageServlet_Contorlller;publicclassregisterCheckextendsHttpServlet{ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException { this.rtcheck(request,response); } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException { //response.sendRedirect("registerCheck.jsp"); this.rtcheck(request,response); } publicvoidrtcheck(HttpServletRequestrequest,HttpServletResponseresponse) { try{ request.setCharacterEncoding("utf-8"); }catch(UnsupportedEncodingExceptione2){ //TODOAuto-generatedcatchblock e2.printStackTrace(); } response.setCharacterEncoding("utf-8"); Stringname=request.getParameter("cuserid"); Stringpassword=request.getParameter("cpassword"); Stringtel=request.getParameter("ctel"); Stringemail=request.getParameter("cemail"); Stringsex=request.getParameter("select"); Stringage=request.getParameter("cage"); Stringrepeatpassword=request.getParameter("repeatpassword"); intreg=0;//0--注册成功1--注册失败 if("".equals(name)||name==null) { reg=0; try { System.out.println("跳转"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif("".equals(password)||password==null) { reg=0; try { response.sendRedirect("register.jsp"); System.out.println("跳转2"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif("".equals(tel)||tel==null) { reg=0; try { System.out.println("跳转3"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif("".equals(email)||email==null) { reg=0; try { System.out.println("跳转4"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif("".equals(age)||age==null) { reg=0; try { System.out.println("跳转5"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif("".equals(repeatpassword)||repeatpassword==null) { reg=0; try { System.out.println("跳转6"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } elseif(!repeatpassword.equals(password)) { reg=0; try { System.out.println("跳转7"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } else { Stringsqlstr="selectusernamefromcustomer"; SQLBeanbean=newSQLBean(); List<String>list=newArrayList(); try { bean.executeQuery(sqlstr); list=bean.getSelectRt(); bean.close(); } catch(Exceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("数据库查询错误"); } for(Stringli:list) { if(li.equals(name)) { reg=1;//用户名重复 try { System.out.println("跳转"); response.sendRedirect("register.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("重定向异常"); } } } sqlstr="insertintocustomer(userid,username,password,tel,email,sex,age)values(null,'"+name+"','"+password+"','"+tel+"','"+email+"','"+sex+"',"+age+")"; System.out.println(sqlstr); SQLBeanbean2=newSQLBean(); try { bean2.executeUpdate(sqlstr); bean2.close(); } catch(Exceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } try { response.sendRedirect("success.jsp"); } catch(IOExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } } }}4.1.4购物车处理代码实现if(action.equals("buy"))//加入购物车{ CarBeanmycart=(CarBean)session.getAttribute("mycart"); if(mycart==null) { mycart=newCarBean(); } //得到要购买东西的ID Stringgid=request.getParameter("gid"); mycart.buy(gid,Integer.parseInt(num)); response.sendRedirect("cart.jsp");}elseif(action.equals("changeNum")){ Stringgnum=request.getParameter("gnum"); Stringgid=request.getParameter("gid"); intnumber=0; try { number=Integer.parseInt(gnum); } catch(Exceptione) { //修改的数量不合法时 Stringmsg="对不起,数量修改错误!!!"; //pageForward(msg,request,response); } intid=Integer.parseInt(gid); intcount=0; //得到库存数量 Stringsql="selectgoodnumfromgoodswheregoodId="+id; SQLBeanbean=newSQLBean(); try{ bean.executeQuery(sql); ResultSetst=bean.getRs(); if(st!=null) { st.next(); count=st.getInt(1); bean.close(); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } if(count<number) {//当库存少于修改的值时 Stringmsg="对不起,库存不够,库存数量只有"+count; out.println("<p>msg</p>"); out.println("<ahref='cart.jsp'>返回购物车</a>"); } else {//当库存够时 CarBeanmycart=(CarBean)session.getAttribute("mycart"); if(mycart==null) { mycart=newCarBean(); } //得到用户的购物车 Map<String,Integer>cart=mycart.getCart(); //修改商品数量 cart.put(gid,number); session.setAttribute("mycart",mycart); response.sendRedirect("cart.jsp"); }}elseif(action.equals("delete")){ Stringgid=request.getParameter("gid").trim(); //得到javaBean对象 CarBeanmycart=(CarBean)session.getAttribute("mycart"); if(mycart==null) { mycart
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年桥梁安全性分析与技术措施
- 2026春招:行政专员真题及答案
- 2026春招:销售代表面试题及答案
- 人工智能在康复医学中的应用
- 手术室护理要点解读
- 人工智能在疾病诊断与治疗中的应用
- 2026年河南水利与环境职业学院单招综合素质考试备考试题带答案解析
- 2026年广西安全工程职业技术学院单招综合素质笔试备考试题带答案解析
- 医疗单位医护人员职业操守
- 医学伦理学在临床实践
- 售后技术服务流程规范
- 生活垃圾收集容器选型与配置方案
- 2025年西安交通大学少年班招生考试初试数学试题(初中组)+答案
- 急性肺栓塞诊断和治疗指南(2025版)解读课件
- 2026届新高考化学热点复习水溶液的多重平衡图像
- 中职思政一年级“中国特色社会主义”期末考试试卷
- 《经济学基础》教学
- 建设项目使用林地可行性报告
- IABP最常见的并发症及临床管理
- 2025至2030年中国中试基地行业市场全景调查及发展趋向研判报告
- 江苏开放大学道路勘测设计060836形考作业1、3答案
评论
0/150
提交评论