JAVA网上商城系统课设报告解析_第1页
JAVA网上商城系统课设报告解析_第2页
JAVA网上商城系统课设报告解析_第3页
JAVA网上商城系统课设报告解析_第4页
JAVA网上商城系统课设报告解析_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、企业项目综合实训报告目 录1.绪论11.1课题研究背景11.2课题研究意义11.3国内外的发展现状22.需求分析32.1 技术可行性分析32.2 操作可行性分析32.3 成本可行性分析33.总体设计44.详细设计64.1 数据库设计64.1.1 概念建模64.1.2 物理建模64.1.3数据库表结构84.2 功能设计124.3 代码设计144.3.1后台功能144.3.2前端功能185.结论27参考文献281.绪论1.1课题研究背景随着社会经济的发展和信息技术的高度发达,越来越多的企业和个人的购物方式和以前有了实质的改变,网上商店逐渐增多,交易的方式也从以前的网上发布,然后网下交易购买,发展到

2、了直接通过网络进行在线支付,随着物流的发展,交易的物品也从以前的大件物品,发展到现在几乎所有商品都能在网上购买。因此,为了更方便顾客购物,就需要有一个功能比较完善的网上商城系统来实现这个平台。网上商城系统是解决实体商城各种问题的一种方法。因此该课题具有一定的意义和研究价值。1.2课题研究意义相对于传统的实体商城,网上商城投资少,回收快。一项针对中国中小企业的情况调查显示,个人在网下启动销售公司的平均费用至少5万元,而网上开店建店成本非常小。一般说,筹办一家网上的商店投入很小,不用去办营业执照,不用去租门面,不用囤积货品,所需资金不过1500元左右;网上商店比同等规模的地面商店“租金”要低得多,

3、同时租金不会因为营业面积的增加而增加,投资者也不用为延长营业时间而增加额外的费用。   基本不需要占压资金。传统商店的进货资金少则几千元,多则数万元,而网上商店则不需要压资金。   24小时营业时间。网上商店延长了商店的营业时间,一天24小时、一年365天不停地运作,无须专人值班看店,都可照常营业。传统店铺的营业时间一般为8-12小时,遇上坏天气或者老板、店员有急事也不得不暂时休息。   销售规模不受地盘限制。传统商店有多大就只能摆放多少商品,生意大小常常被小店面积限制。而在网上,即便在地面上只有一个小商

4、店,或者干脆就没有门面,开店的生意却可以照样做得很大。   不受店面空间的限制。哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品。目前国内最大的专业拍卖网站同时在线的商品要超过10万件已超过一些大超市。不受地理位置影响。不管客户离店有多远,也不管顾客是国内还是国外,在网上,客户一样可以很方便地找到并购买商品。这令消费群体突破了地域的限制,变得无限广阔了。1.3国内外的发展现状伴随着Internet的蓬勃发展,网络购物中心作为电子商务的一种形式正以其高效、低成本的优势,逐步成为新兴的经营模式和理念,人们已不再满足于信息浏

5、览和发布,而是渴望着能够充分享受网络所带来的更多的便利。客户足不出户便可以方便快捷的选购自己喜欢的商品,这正是网络购物中心为客户带来的好处。敏锐的网络商家当然不会错过这样绝好的机会,越来越多的网站投身到提供网络购物服务的行列中来,一个基于Internet的全球电子商务框架正在形成。 在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止2004年1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的

6、一年里有过网上购物经历,这就说明中国有网上购物的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,到2006年中国网上购物用户将达到6962万人,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。因此,设计一个网上购物网站具有非常好的开发与应用前景。2.需求分析2.1 技术可行性分析本系统在前台用在前台用JSP进行页面开发和管理用户界面,提示信息完善,界面友好,具有较强的亲和力,后台采用MYSQL数据开发和管理数据库,对数据库操作采用事务处理机制,具有强大的错误处理功能。本系统的开发环境是使用现在非常流行的开源开发工具Eclipse和Tomcat服务器。

7、使用的灵活、以及他们当前的广泛实际应用,充分说明本系统在技术方面可行。2.2 操作可行性分析本系统采用的是网上管理,非常简单、易懂,不需要具有非常高的计算机专业知识,只需要管理员能够上网,就可对商城进行维护。2.3 成本可行性分析整个开发过程只需要一台装有上述所需求的各种软件的PC机就可以实现全部的开发任务。目前的计算机硬件市场竞争比较激烈,在价格上都出现了从没有过低廉;而所需要的各种软件,在相关产品的官方网站上都可以免费下载,而且还不断的有增加了最新功能的升级版的出现。因此,整个开发成本可以说是非常的低廉,这也为我进一步完善我的网站提供了更大的方便。在使用成本上,用户只需要拥有一台能够连接到

8、国际互联网上的计算机,通过注册就可以在世界的任何一个角落使用网站的全部功能和服务。而且对计算机的硬件的需求也不是很高,软件方面也没有特殊的需求,极大了方便了广大用的访问与使用。因此,从成本可行性分析来看,这个网站体现了经济实惠,但是功能强大的特点。3.总体设计网上商城系统又称在线商城系统,其功能主要包含商品的管理、会员的管理、订单的管理、在线支付等。本次实训将由指导老师带领学生有Java EE技术完成“网上商城系统”的设计与开发,主要开发的功能如图3-1所示。商城平台用户管理员注册下订单浏览商品搜索商品查看订单订单管理会员管理商品管理配送管理图3-1 功能图1)后台功能商品模块:包括后台商品库

9、存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。 订单模块:在线订单程序,使消费者能够顺利的通过Web在线的方式,直接生成购买订单。会员模块:在购物系统中,集成会员注册是吸引会员进行二次购买和提升转换率最好的方式。配送模块:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如:EMS、顺风等等。2)前端功能商品搜索:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。商品浏览:随着电子商务的发展商品图片成为吸引消费者的第一要素,多图展示即提供前台多张图片

10、的展示,从而提升消费者的购物欲望。 用户管理模块:为了方便于网站的管理,必须由一套完整的用户管理体系。该网站用户管理模块主要实现用户的注册、登录、找回密码3方面功能。 为了全面的了解前端功能,图3-2将前端的购物流程详细的展示。图3-2购物流程4.详细设计4.1 数据库设计4.1.1 概念建模本系统实体包括:管理员、网站、顾客、商品、购物车、订单。如图4-1所示:图4-1 E-R图4.1.2 物理建模数据库表之间关系如图4-1所示:图4-2数据库表关系图4.1.3数据库表结构整个购物系统能运行离不开数据库的支持,数据库在整个系统的最底部发挥着不可忽视的作用。没有了数据库的支撑,系统无法运行。由

11、此可见,系统离不开数据库,在系统之前首先必须保证数据库的准备工作已经完成。本系统采用的是Mysql数据库,数据库的准备工作需要以下几个表来保存整个系统的重要信息,它们分别是:商品表,用来存储购物系统的所有商品的信息,能够根据这个表来管理所有的商品信息,如表4-1所示。表4-1 商品表(product)字段类型长度备注productidint11商品表主键productnamevarchar200商品名categoryidint11分类ID(外键)storecountint11库存量marketpricefloat10市场价salepricefloat10销售价hitint11点击量addtim

12、evarchar200上架时间isdelvarchar255是否下架contenttext商品详情商品图片表,用来存储购物系统的商品的所有图片信息,能够根据这个表来管理商品所有的图片信息,如表4-2所示。表4-2 商品图片表(pic)字段类型长度备注picidint11主键picurlvachar200图片路径productidint11商品ID(外键)分类表,用来存储购物系统的所有商品的分类信息,能够根据这个表来管理所有的分类信息,如表4-3所示。表4-3 分类表(category)字段类型长度备注categoryidint11分类表主键categorynamevarchar100分类名pa

13、rnetidint11父分类IDlevelint11分类的级商品属性名称表,用来存储购物系统的所有商品属性名称信息,能够根据这个表来管理所有商品属性名称信息,如表4-4所示。表4-4 商品属性名称表(attribute) 字段类型长度备注attributeidint11主键namevarchar100商品属性名字商品属性值表,用来存储购物系统的所有商品属性值的信息,能够根据这个表来管理所有商品属性值的信息,如表4-5所示。表4-5 商品属性值表(value)字段类型长度备注valueidint11主键valuestrvarchar100商品属性值商品属性中间表,用来存储购物系统的所有商品的属性

14、信息,能够根据这个表来管理所有商品的属性信息,如表4-6所示。表4-6 商品属性中间表(attrvalue)字段类型长度备注idint11主键attributeidint11商品属性名称ID(外键)valueidint11商品属性值ID(外键)productidint11商品ID(外键)发票表,用来存储购物系统的发票信息,能够根据这个表来管理发票,如表4-7所示。表4-7 发票表(invocie)字段类型长度备注invocieidint11主键titlevachar100发票类型contentvachar100明细orderidint11订单ID(外键)订单明细表,用来存储购物系统的所有订单详

15、细信息,能够根据这个表来管理订单详细信息,如表4-8所示。表4-8 订单明细表(orderdetail)字段类型长度备注orderdetailidint11主键productidint11商品表IDproductnamevarchar100商品名salepricefloat10销售价buycountint11购买数量orderidint11订单ID(外键)订单表,用来存储购物系统的所有订单信息,能够根据这个表来管理订单信息,如表4-9所示。表4-9 订单表(orders)字段类型长度备注orderidint11主键ordernovachar100订单编号useridint11用户ID(外键)b

16、zvarchar100标志paywayidint11支付方式ID(外键)sendwayidint11配送方式ID(外键)totalfloat10总价支付方式表,用来存储购物系统的支付信息,能够根据这个表来管理支付信息,如表4-10所示。表4-10 支付方式表(payway)字段类型长度备注paywayidint11主键titlevachar100支付方式收货人信息表,用来存储购物系统的收货人信息,能够根据这个表来管理收货人信息,如表4-11所示。表4-11 收货人信息表(receive)字段类型长度备注receiveidint11主键receivervarchar100收货人addressva

17、rchar100地址mobilevarchar100手机phonevarchar100固话mailvarchar100邮件postcodevarchar255邮编 配送方式表,用来存储购物系统的配送方式,能够根据这个表来管理配送方式,如表4-12所示。表4-12 配送方式表(sendway)字段类型长度备注sendwayidint11主键sendwayvarchar100配送方式sendmoneyfloat10运费用户表,用来存储所有会员用户的信息,能够根据这个表管理所有用户,如表4-13所示。表4-13 用户表(user)字段类型长度备注useridint11主键usernamevarcha

18、r100用户名passwordvachar100密码realnamevarchar100真实姓名scoreint11积分amountfloat10余额questionvarchar100问题answervarchar100答案emailvarchar100邮箱telvarchar100电话4.2 功能设计网上商城系统又称在线商城系统,其功能主要包含商品的管理、会员的管理、订单的管理、在线支付等。1)后台功能商品模块:包括后台商品库存管理、上货、出货、编辑管理和商品分类管理、商品品牌管理等。 订单模块:在线订单程序,使消费者能够顺利的通过Web在线的方式,直接生成购买订单。 会员模块:在购物系统

19、中,集成会员注册是吸引会员进行二次购买和提升转换率最好的方式。配送模块:购物系统集成的物流配送方式,从而方便消费者对物流方式进行在线选择。如:EMS、顺风等等。2)前端功能商品搜索:通过前端界面,以标准的或者其他个性化的方式向用户展示商品各类信息,完成购物系统内信息流的传递。购物车:用户可对想要购买的商品进行网上订购,在购物过程中,随时增删商品。商品浏览:随着电子商务的发展商品图片成为吸引消费者的第一要素,多图展示即提供前台多张图片的展示,从而提升消费者的购物欲望。 用户管理模块:为了方便于网站的管理,必须由一套完整的用户管理体系。该网站用户管理模块主要实现用户的注册、登录、找回密码3方面功能

20、。 该购物网站具体功能结构图如图4-3所示。商城平台用户管理员注册购物车浏览商品搜索商品查看订单订单管理会员管理商品管理配送管理图4-3 功能图4.3 代码设计4.3.1后台功能1)添加或修改a.判断是添加还是修改代码/如果有商品ID,说明是编辑int productid=CommonUtil.getIntParameter(request, "productid");BaseDAO dao=new BaseDAO();if(productid!=0)/说明是进入修改页面try Map<String,Object> record=dao.listWithPage

21、("a.*,b.categoryname", "product a,category b", " and a.categoryid=b.categoryid and ductid="+productid, "ductid desc", 1, 9999, false).getRecords().get(0); request.setAttribute("record", record); catch (Exception e) e.printStackTrace();Strin

22、g tree=CategoryUtil.makeTree("listcategory");request.setAttribute("tree", tree);request.getRequestDispatcher("addproduct.jsp").forward(request, response);b.添加或修改代码/接收参数String productname = request.getParameter("productname");String categoryid = request.getPara

23、meter("categoryid");String storecount = request.getParameter("storecount");String marketprice = request.getParameter("marketprice");String saleprice = request.getParameter("saleprice");String hit = request.getParameter("hit");String picture = request

24、.getParameter("picture");String addtime = request.getParameter("addtime");String isdel = request.getParameter("isdel");String content = request.getParameter("content");int productid=CommonUtil.getIntParameter(request, "productid");try /调用DAOBaseDAO d

25、ao=new BaseDAO();int result=0;if(productid!=0)/修改result=dao.update("product","productname='"+productname+"',categoryid='"+categoryid+"',storecount='"+storecount+"',marketprice='"+marketprice+"',saleprice='&quo

26、t;+saleprice+"',hit='"+hit+"',picture='"+picture+"',addtime='"+addtime+"',isdel='"+isdel+"',content='"+content+"'", " and productid="+productid);else/添加result=dao.add("product"

27、,"productname='"+productname+"',categoryid='"+categoryid+"',storecount='"+storecount+"',marketprice='"+marketprice+"',saleprice='"+saleprice+"',hit='"+hit+"',picture='"+picture+&

28、quot;',addtime='"+addtime+"',isdel='"+isdel+"',content='"+content+"'");String msg=""if(result>0)msg="<script>alert('操作成功');window.location.href='productServlet?action=list'</script>"else

29、msg="<script>alert('操作失败');window.location.href='productServlet?action=list'</script>"/把提示信息放入requestrequest.setAttribute("msg", msg);request.getRequestDispatcher("msg.jsp").forward(request, response);c.商品的添加及修改公用一个页面,如图4-4所示。图4-4 添加或修改页面2)商品

30、列表及删除a.列表代码String where=" and a.categoryid=b.categoryid"String productname=CommonUtil.getStringParameter(request,"productname");if(!productname.equals("")where+=" and ductname like '%"+productname+"%'"int categoryid=CommonUtil.getIntPara

31、meter(request,"categoryid");if(categoryid!=0)where+=" and a.categoryid="+categoryid;CommonUtil.getIntParameter(request,"categoryname");float startprice=CommonUtil.getFloatParameter(request,"startprice");float endprice=CommonUtil.getFloatParameter(request,"

32、;endprice");if(startprice=0 && endprice=0)elsefloat temp=0;if(startprice>endprice)temp=startprice;startprice=endprice;endprice=temp;where+=" and a.saleprice>="+startprice+" and a.saleprice<="+endprice;BaseDAO dao=new BaseDAO();SearchResult sr=dao.listWithPag

33、e("a.*,b.categoryname", "product a,category b",where, "a.addtime desc",CommonUtil.getPageNo(request), 2,true); request.setAttribute("records", sr.getRecords();request.setAttribute("pb", sr.getPb();List<Integer> pagecode=new ArrayList<Integer

34、>();for(int i=1;i<=sr.getPb().getPageCount();i+)pagecode.add(i);request.setAttribute("pagecode", pagecode);String tree=CategoryUtil.makeTree("searchproduct");request.setAttribute("tree", tree);request.getRequestDispatcher("listproduct.jsp").forward(reque

35、st, response);b.删除代码int productid=CommonUtil.getIntParameter(request, "productid");BaseDAO dao=new BaseDAO();int result = dao.del("product", " and productid="+productid);String msg=""if(result>0)msg="<script>alert('删除成功');window.location.

36、href='productServlet?action=list'</script>"elsemsg="<script>alert('删除失败');window.location.href='productServlet?action=list'</script>"request.setAttribute("msg", msg);request.getRequestDispatcher("msg.jsp").forward(request,

37、response);c.列表部分适合删除在一起完成的,如列表图4-5、删除如图4-6所示。图4-5 列表图4-6 删除3)分类管理这一部分包括了分类的添加修改以及删除,基本实现方法与商品管理相同,不同的地方是:分类主要的视图是以分类树的形式出现。如图4-7所示是分类的添加及修改所公用的页面,而图4-8则是分类的删除及列表的页面。图4-7添加修改公用页面 图4-8分类列表4.3.2前端功能1)主页在这部分比较重要的是主页的分类树的实现,如图4-9、4-10所示 。图4-9 主页代码图4-10 主页2)商品列表 在列表部分比较重要的是分页树的实现以及排序方式和分页功能,如图4-11、4-12所示。

38、图4-11列表代码图4-12 列表3)登陆a.可以完成的功能是登陆之后才可以结算。/调用DAOBaseDAO dao=new BaseDAO();String username=CommonUtil.getStringParameter(request, "username");String password=MD5.md5(CommonUtil.getStringParameter(request, "password");String checkcode=CommonUtil.getStringParameter(request, "che

39、ckcode");/获取SESSIONHttpSession session=request.getSession();String msg=""String rightcode=session.getAttribute("checkcode").toString();/验证码正确if(checkcode.equals(rightcode)try List<Map<String,Object>> records=dao.listWithPage("*", "user", "

40、; and username='"+username+"' and password='"+password+"'", "userid desc", 1, 1, false).getRecords();if(records.size()>0) /当前登录用户的信息Map<String,Object> user=records.get(0);session.setAttribute("user", user);msg="<script>

41、alert('登录成功');window.location.href='frontServlet?action=orderconfirm'</script>"elsemsg="<script>alert('用户或密码错误');window.location.href='userlogin.jsp'</script>" catch (Exception e) e.printStackTrace();elsemsg="<script>alert(&

42、#39;验证码错误');window.location.href='userlogin.jsp'</script>"request.setAttribute("msg", msg);request.getRequestDispatcher("msg.jsp").forward(request, response);b.登陆如图4-13所示。图4-13 登陆4)将商品放入购物车a.这一部分需要完成的功能是商品放入购物车,并且可以计算出价钱。/这是购买第一件产品,即现在没有车子,我们就创建一个车子if(sessi

43、on.getAttribute("cart")=null)cart=new ArrayList<Map<String,Object>>();/放入商品图片record.put("picurl", record.get("picurl");/设置商品数量(增加一列)record.put("buycount", buycount);/增加总价record.put("totalprice", BaseCalculate.round(buycount*Float.parseFlo

44、at(record.get("saleprice").toString(), 1);/把产品放入车子就行了。cart.add(record);else /说明已经有车子了cart=(List<Map<String,Object>>)session.getAttribute("cart");/判断该次购买的产品是否已在车中,默认不在车中boolean inCart=false;/循环车子,判断当前购买的产品是已经购买过(重复购买)for(int i=0;i<cart.size();i+)/获取每一条车子中已有的产品Map<

45、;String,Object> temprecord=cart.get(i);/是重复购买if(temprecord.get("productid").equals(productid)/取出之前购买的数量,加上本次的购买数量temprecord.put("buycount", Integer.parseInt(temprecord.get("buycount").toString()+buycount);/重新计算总价temprecord.put("totalprice", BaseCalculate.ro

46、und(BaseCalculate.add(Float.parseFloat(temprecord.get("totalprice").toString(), buycount*Float.parseFloat(record.get("saleprice").toString(), 1);/将更改的记录重新放入Cart(更改)/cart.add(i, temprecord);inCart=true;break;/该产品不在车中if(inCart=false)System.out.println("buycount:"+buycount

47、);/放入商品图片record.put("picurl", record.get("picurl");/增加数量列record.put("buycount", buycount);/增加总价列record.put("totalprice", BaseCalculate.round(buycount*Float.parseFloat(record.get("saleprice").toString(),1);System.out.println("="+record);/把商品

48、放入车子cart.add(record);/购物车中商品的总价float sum=0;/重新循环购物车,统计总价for(int i=0;i<cart.size();i+)Map<String,Object> temp=cart.get(i);/当前商品的总价sum=BaseCalculate.round(BaseCalculate.add(sum, Float.parseFloat(temp.get("totalprice").toString(), 1);/把总价放入Sessionsession.setAttribute("sum",

49、sum);/将车子放入Sessionsession.setAttribute("cart", cart);response.sendRedirect("showCart.jsp");b.放入购物车如图4-14所示。图4-14 加入购物车5)订单确认 a. 订单确认页面进行订单确认。/调用DAOBaseDAO dao=new BaseDAO();/获取SESSIONHttpSession session=request.getSession();Map<String,Object>user=(Map<String,Object>)s

50、ession.getAttribute("user")/当前登录用户的IDString userid=getUserid(request);/查询收货人的信息try List<Map<String,Object>> receivelist=dao.listWithPage("*", "receive", " and userid="+userid, "receiveid desc", 1, 999999, false).getRecords();if(receivelis

51、t.size()>0)/把所有的收货人信息放入页面request.setAttribute("receivelist", receivelist);/跳转到填写订单确认的页面 request.getRequestDispatcher("orderconfirm.jsp").forward(request, response);else/目前该用户没有收货人信息/跳转到填写收货信息人信息的页面request.getRequestDispatcher("addreceiver.jsp").forward(request, respo

52、nse); b.订单确认如图4-15所示。 图4-15 订单确认6)保存收货人信息 a.保存收货人信息以便下次使用。String receiver=CommonUtil.getStringParameter(request, "receiver");String address=CommonUtil.getStringParameter(request, "address");String mobile=CommonUtil.getStringParameter(request, "mobile");String phone=CommonUtil.getStringParameter(request, "phone");String mail=CommonUtil.getStringParameter(request, "

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论