手机销售网站的设计与实现毕业设计论文_第1页
手机销售网站的设计与实现毕业设计论文_第2页
手机销售网站的设计与实现毕业设计论文_第3页
手机销售网站的设计与实现毕业设计论文_第4页
手机销售网站的设计与实现毕业设计论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

PAGEIV长沙民政职业技术学院毕业设计说明书题目:手机销售网站的设计与实现产品设计工艺设计方案设计√类型:学生姓名:_________________学号:_______________学院:____软件学院_____________专业:____软件开发方向__________班级:_____软开1331班___________学校指导教师:______企业指导教师:_______________2016年5月1日摘要随着信息化社会的不断发展,电子商务在人们生活的领域已随处可见,人们可以足不出户,通过互联网选购自己所需的商品,通过网上支付或货到付款的形式进行付款。这样的方式给人们的生活带来的极大的方便,人们可以不受时间和地点的限制,选购商品,对于商家而言,通过互联网的方式销售商品,可以减轻经济的负担,但是这种销售方式,由于存在购物量繁多,给人工管理增加了极大的负担,因此,如何处理好快速销售与管理之间的关系,成为了商家们关心的问题。传统的商品管理通过手工记录的形式记录下来,每月进行统计等等,这样的管理形式存在诸多不足之处,首先,手工记录工作量大,或多或少有商品丢失数据的情况,其次是管理方面,由于数据多导致统计非常繁琐,比如传统的手机销售方式是人们到实体店中购买手机,销售员进行记录,这样的方式不仅影响的手机的销售,在管理方面工作也非常繁琐。针对以上问题,设计开发了手机销售网站,本网站前台主要使用JSP作为开发语言,后台使用SqlServer2005作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的手机销售网站。关键词:网上销售;订单管理;JSP;B/S结构;手机销售目录TOC\o"1-2"\h\z\t"标题3,3,标题4,4"摘要 I1.绪论 11.1课题背景 11.2目的和意义 11.3开发工具及技术 11.3.1开发工具 MyEclipse Tomcat SqlServer 21.3.2JSP 21.3.3JavaScript 31.4软硬件需求 32.需求分析 42.1需求调研 42.2可行性分析 42.2.1技术的可行性 42.2.2经济的可行性 42.2.3操作可行性 42.2.4法律的可行性 52.3系统用例分析 52.3.1普通用户用例图 52.3.2管理员用例图 52.3.3会员用例图 62.4功能模块需求分析 72.5性能需求分析 82.5.1系统的安全性 82.5.2数据的完整性 93.系统分析与设计 103.1系统分析10 3.2数据库的分析与设计 103.2.1数据库的概念结构设计 103.2.2数据库的逻辑结构设计 123.2.3数据库的连接原理 134.系统功能实现 174.1系统登陆页面实现 174.2总体功能模块 184.2.1系统主页面 184.2.2会员购物功能实现 194.2.3会员注册功能 264.2.4订单查询功能 294.3中文乱码问题处理 315.系统测试 325.1系统测试目的与意义 325.2测试过程 325.2.1主页面的登录模块测试 325.3其他错误处理 33结论 34参考文献 35致谢36PAGE371.绪论1.1课题背景随着互联网技术的不断发展[1],人们的生活方式也发生了许多改变,在互联网上,人们可以随时随地获取信息,可以发布信息和网上购物等,其中,网上购物的发展最为突出。现如今,各种各样的商品都可以通过网上购物的形式进行销售,客户可以随时浏览商品信息,可以在线咨询等。然而,随着网上购物在人们生活中不断受到欢迎,使用的人也越来越多,在于商品的管理方面,也遇到了问题,如何能使得商品以最多的速度销售,同时,也可以实现高效的管理成为迫切需要解决的问题。1.2目的和意义为了解决在实体店中销售手机遇到的问题,开发设计了此手机销售网站,该网站中,利用图片展示及文字介绍的形式代替实体店中费时的介绍形式,人们可以随意浏览手机不受限制,在后台管理方面,管理员通过手机入库,展示及出库的形式,完成整个手机商城管理功能。手机销售网站[2],手机信息是由管理员将将需要入库的手机信息录入系统中,系统将数据存储在数据库中,长期保存,管理员可以随时查询信息,可以对商品信息进行维护,普通用户可以不登录系统,进行产品浏览,需要购物时,需要登录系统才可购买。1.3开发工具及技术1.3.1开发工具此次设计主要采用MyEclipse[3]加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和SqlServer数据库进行简要介绍。MyEclipseMyEclipse[4]全称MyEclipseEnterpriseWorkbench即我们通常说的企业级工作平台,它是在Eclipse的基础上对IDE进行了相关的扩展与升级,能够支持现代多种开源的产品,通过MyEclipse与JAVAEE以及数据库软件的有效结合,能够极大地提高开发的效率。同时在该平台能够同时进行编译、调试、运行等多项功能。Tomcat在通过JAVA[5]技术实现系统的开发过程中,避免不了服务器的使用,而经常用到的即是Tomcat服务器,该服务器属于一种免费的开源式应用服务器,普遍应用于中小型系统的开发。Tomcat[6]近些年来凭借其所占内存小,运行速度快,稳定性强等诸多优点深受广大软件以及网站开发者的喜爱,特别对于一个新手而言,很容易就能够掌握它的使用方法。SqlServerMicrosoftSQLServer2005[7]是微软的一款数据库软件,是一个基于关系型数据库模型建立的数据库系统。它主要能够保存足够多的数据信息,利用其丰富的SQL语言,可以完成对数据的操纵。SQLServer2005数据库还易于移植,只需将所建好的数据分离后,便可将数据库移植到其他的机器的数据库中,同时,SQLServer2005还具有强大的图形界面,易于学习和使用。本系统后台数据库选用SQLServer20005数据库是因为现如今网站及系统开发中运用非常广泛,其数据库操纵语句丰富,对数据的存取速度快,而物流信息管理系统是一个数据量大且数据也需要维护的系统,它强大的图形界面运用更加方便[8]。1.3.2JSPJSP技术[9]是一种动态网页技术标准,此技术与其他技术相比,其开发的web应用是可以跨平台运行浏览的,能够适合在不同的操作系统环境下使用。JSP技术实现的网页页面除了html,div,css等代码主要是通过嵌入Javascript脚本语言,从而形成了JSP动态网页页面。JSP的工作原理[10]如下:(1)当JSP页面文件被请求时,JSP文件将被转换成为JAVA源文件,并将其编译成class文件,并加载到内存中。(2)加载后,系统为其创建一个Servlet()实例,并调用jspService()方法。(3)执行jspService(),浏览器将html中的内容返回给客户端。1.3.3JavaScriptJavaScript[11]是一种基于客户端的脚本语言,广泛应用于动静态网站的开发建设过程中,其最重要的特点是面向对象,即可通过更加直观、模块化的方式来对程序进行开发。它的重要性体现在其能够与html,java程序语言等实现交互连接,从而设计出更加完美的网站或者系统[12]。1.4软硬件需求硬件需求:CPU:Pentium以上计算机内存:512M以上软件需求:操作系统版本:WindowsXP/vista/Win7开发工具:MyEclipse6.0.1后台服务器:ApacheTomcat6.0开发语言:Java浏览器:IE6.02.需求分析2.1需求调研在项目的开始是需求调研,经过一系列的调查发现,实际生活中的手机销售管理存在诸多不足之处,由于每日客流量多,手工记录销售记录方式容易造成数据丢失,同时,也不利于管理员进行数据统计和查询,因此设计了手机销售网站。2.2可行性分析开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之前,都要进行可行性分析,可以减少项目的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍。2.2.1技术的可行性本系统开发工具是MyEclipse和SqlServer数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,会员订单管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性[13]。2.2.2经济的可行性手机的销售在日常生活中具有非常大的市场需求,因此,管理者不仅要雇用许多员工,对电子商城的手机进行销售,同时,在管理方面,不仅效率低,并且容易出现差错,为了可以更好的处理以上问题,利用信息化管理可以管理工作更加系统化、快速化、全面化,不仅可以减轻管理的工作量,在手机的销售方面,也能减少经济支出,所以在经济上具有完全的可行性。2.2.3操作可行性本系统开过程中很好的考虑了人机界面的结合,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练,加之对本系统的操作稍加培训即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。2.2.4法律的可行性手机销售网是自行开发的电子商城网站,是很有实际意义的电子销售平台,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。2.3系统用户用例图2.3.1普通用户用例图登录手机商城登录手机商城商品信息浏览商品分类浏览公告信息浏览普通用户图2.1普通用户用例图普通用户可以不进行身份验证,浏览网上信息;2.3.2管理员用例图管理员可以对系统后台数据进行管理,可以管理系统用户等,主要有四大模块:会员管理,商品管理,订单管理,公告管理及分类管理等;其中分类管理中,分为大分类和小分类。图2.2管理员后台管理用例图管理员可以登录后台管理系统进行如上图所示的的多项管理。2.3.3会员用例图登录手机商城登录手机商城订单信息查询会员购物车会员信息维护会员公告信息查询图2.3会员操作用例图会员可以购买商城的商品,购买成功后生成个人订单,在个人会员管理中心,可以查询会员的信息,订单信息及购物车等。2.4功能模块需求分析手机销售网手机销售网普通用户会员用户管理员用户商品信息查询公告信息查询商品信息查询公告信息查询购物车信息查询订单信息查询商品管理会员管理订单管理公告管理图2.2系统功能模块图由上图可以知道本系统最大的特点是使用操作简单、友好的提示信息。本系统将实现以下基本功能:(1)普通用户商品信息,公告信息浏览功能,当用户不需要购买商品时,可以不需要注册会员;(2)管理员用户具有会员信息管理、商品信息管理、订单管理、公告管理及分类管理等功能(3)会员购物功能,当需要购买商品时,需要用注册成功的会员账号密码登录系统,购买的商品信息生成相应订单;普通用户功能模块图描述了普通用户登录手机商城后可以进行的操作;管理员功能模块图说明:管理员是功能最多的一种用户角色。(1)会员管理模块:在该模块中完成会员信息管理功能,会员信息管理提供会员的查询、增加、修改和删除等功能操作。(2)商品管理模块:在该模块中可以添加新的商品信息,可以对现有商品信息进行修改和删除操作。(3)订单管理模块:在该模块中可以查询系统内所有的会员产生的订单信息。(4)公告管理模块:管理员在公告管理模块可以添加新的公告信息,可以删除现有的公告信息。2.5性能需求2.5.1系统的安全性手机销售网在管理权限上要严格进行控制,具体要求如下:普通用户可以浏览网站信息,购物时需要检验会员信息,若是本站会员,可以购买商品,查询个人订单信息及购物车信息,管理员用户通过管理员登录界面登录后台管理系统,对系统数据进行维护。对系统用户权限做以上控制,可以确保系统的严密性和安全性。2.5.2数据的完整性1.各种记录信息的完整性,信息记录内容不能为空2.各种数据间相互联系的正确性3.相同数据在不同记录中的一致性3.系统分析与设计3.1系统分析图3.1系统构架图设计开发手机销售网站,网站前台使用JSP这种种动态网页技术,此技术与其他技术相比,其开发的web应用是可以跨平台运行浏览的,能够适合在不同的操作系统环境下使用,后台使用SqlServer2005作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S三层结构的手机销售网站3.2数据库的分析与设计数据库是整个系统的核心,数据库设计质量的高低直接影响到整个系统质量的好坏,因此在进行网站或者系统的开发时数据库的设计显的尤为重要。通常数据库设计主要有以下几个基本的步骤组成:需求分析,概念设计,逻辑与物理设计等。3.2.1数据库的概念结构设计概念设计是一种数据库的概念结构,它在建立整个系统的过程中是基于数据库分析的基础之上的。接着进行视图设计、集成等,最终得出结果。概念设计采用的是实体-联系(E-R)模型的设计方法。通过该方法,能够形象地将系统中所涉及到的实体以及其属性连接在一起根据此种方法,并结合系统概念模型的特点,建立E-R模型图。实体间关系属性实体实体间关系属性实体(1)会员信息实体E-R图如图3.2所示:图3.2会员信息实体E-R图会员信息拥有的属性有:用户名,密码,姓名,所在地,地址,邮编,证件类型,证件号码(2)订单信息实体E-R图如图3.3所示图3.3订单信息实体E-R图订单信息属性有:订单号,商品数量,用户名,用户姓名,付款方式,订单日期,运送方式(3)管理员信息E-R图如图3.4所示图3.4管理员信息实体E-R图管理员拥有的属性有:账号,密码(4)商品信息E-R图如图3.5所示图3.5商品信息实体E-R图商品属性:商品编号,类别编号,商品名称,生产商,价格,现价。3.2.2数据库的逻辑结构设计我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:*每一个实体要转换成一个关系*所有的主键必须定义非空(NOTNULL)*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。根据E-R模型,商场VIP消费管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。(1)会员信息表主要是记录了会员基本信息。表结构如表3.1所示。表3.1会员信息表(tb_member)列名数据类型长度允许空是否主键说明idint4否是编号usernamevarchar50否否用户名trueNamevarchar50否否用户姓名Passwordvarchar50否否密码Cityvarchar50否否所在地Addressvarchar50否否详细地址Postcodevarchar50否否邮编cardIDvarchar20否否证件号码cardTypevarchar20否否证件种类(2)商品信息表中保存着商城的全部商品信息,表结构如图3.2所示。表3.2商品信息表(tb_goods)列名数据类型长度允许空是否主键说明idInt4否是编号TypeidInt4否否类别编号goodsNamevarchar50否否商品名称Intrducevarchar50否否生产商Pricevarchar50否否价格nowPricevarchar50否否现价(3)订单信表中保存着所有会员购物产生的订单基本信息。表结构如表3.3所示。表3.3订单信息表(tb_order)列名数据类型长度允许空是否主键说明idint4否是编号Bnumbervarchar50否否数量Usernamevarchar50否否用户名trueNamevarchar50否否用户姓名Addressvarchar50否否详细地址Payvarchar50否否付款方式Carryvarchar50否否运送方式orderDatevarchar20否否订单日期(4)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.4所示。表3.4管理员信息表(tb_manager)列名数据类型长度允许空是否主键说明userIdint4否是编号userNamevarchar50否否用户名userPwvarchar50否否密码3.2.3数据库的连接原理采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,该模式也叫数据访问对象模式,属于JAVA编程中的一种被广泛应用的经典模式,其主要的工作原理是获取抽象数据中的方法。其思想如图3.10所示:封装使用封装使用DataSourceDataAccessObjectBusinessObjectDataSourceDataAccessObjectBusinessObject创建/使用获取/修改创建/使用获取/修改DataTransferObjectDataTransferObject图3.10DAO模式类图图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用getConnection的对象来接一个数据库(建立一个类getConnection),代码如下:publicConnectionconn=null;//定义一个Connection对象publicStatementstmt=null;//定义一个Statement对象publicResultSetrs=null;//定义一个ResultSet对象staticStringsd="sun.jdbc.odbc.JdbcOdbcDriver";staticStringsc="jdbc:odbc:db_shop";publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Stringdriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; Stringurl="jdbc:sqlserver://localhost:1433;databaseName=db_shop"; Stringuser="sa"; Stringpassword="123456"; Class.forName(driver); conn=DriverManager.getConnection(url,user,password); } catch(Exceptione){ System.err.println(e.getMessage()); } returnconn; }在程序需要连接数据库的地方,只需要生成一个getConnection的对象,就可以对数据库进行连接并操作。3.3设计的基本思想设计思想遵循以下几点:1.采用B/S模式来对系统进行开发与设计,即通过网页的形式来展示系统,这种方式不仅符合现代大众的需求,同时维护方便,成本低。2.使用面向对象的设计理念来进行开发。此种理念能够有效地保证系统的完整性。3.模使用模块化设计方法。模块化设计的优点在于能够使程序的结构更加清晰,对于代码的重载有很大的好处。4.简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。5.速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。6.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。4.系统功能实现系统经过需求分析、可行性分析、数据库设计后接着就需要对程序进行设计与编写,在实现系统功能过程中,必须要对系统的每个功能进行不断的测试,对编码进行针对性的调试,保证系统完成后的稳定性。4.1系统登陆页面实现1.描述:为了保证系统的安全性及稳定性,管理员进入后台管理系统之前需要跳转至登录界面进行身份验证,输入正确的账号和密码登录后台管理系统。2.程序运行效果图如图4-1所示:图4-1管理员登陆页面设计3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的jsp中,在该jsp中会对所输入的用户名,密码,验证码进行判断,验证通过进入对应的页面,Login_M_deal.jsp关键代码:会员登录主要实现功能代码如下:connDBconn=newconnDB();chStrchStr=newchStr();Stringmanager=chStr.chStr(request.getParameter("manager"));//此处必须进行编码转换,否则输入中文用户名时将出现乱码try{ ResultSetrs=conn.executeQuery("select*fromtb_managerwheremanager='"+manager+"'"); if(rs.next()){ StringPWD=request.getParameter("PWD"); if(PWD.equals(rs.getString("PWD"))){ session.setAttribute("manager",manager); response.sendRedirect("index.jsp"); }else{ out.println("<scriptlanguage='javascript'>alert('您输入的管理员或密码错误!');window.location.href='../index.jsp';</script>"); } }else{ out.println("<scriptlanguage='javascript'>alert('您输入的管理员或密码错误!');window.location.href='../index.jsp';</script>"); }}catch(Exceptione){ out.println("<scriptlanguage='javascript'>alert('您的操作有误!');window.location.href='../index.jsp';</script>");}4.2总体功能模块4.2.1系统主页面图4-2系统主页面如图4-2所示的是本购物系统的主页面,通过主页面,可看到本系统的大部分功能,其中包括导航的新品上架、特价商品、会员资料修改、购物车、查看订单以及销售排行等信息。在网站的主体页面,能够了解到特价商品、新品上架、商品分类、商城公告以及广告招商等信息。4.2.2会员购物功能实现1.描述:用户登录本网站,当要购买商品时,需要校验是否是本站的会员,是本站的会员,可以购买商品的链接,否则需要注册本站会员,会员信息登录成功后,购买的商品以在购物车中查看,生成的订单可以在订单查询中查看。2.程序运行效果图如图4-3,4-4,4-5,4-6,4-7所示:图4-3会员登录页面图4-4商品信息图4-5购物车页面图4-6生成订单页面图4-7订单生成成功提示实现代码如下://确定购买手机<% floatsum=0; intID=-1; Stringgoodsname=""; for(inti=0;i<cart.size();i++){ goodselementgoodsitem=(goodselement)cart.elementAt(i); sum=sum+goodsitem.number*goodsitem.nowprice; ID=goodsitem.ID; if(ID>0){ ResultSetrs_goods=conn.executeQuery("select*fromtb_goodswhereID="+ID); if(rs_goods.next()){ goodsname=rs_goods.getString("goodsname"); } } %><tralign="center"valign="middle"><tdwidth="32"height="27"><%=i+1%></td><tdwidth="109"height="27"><%=ID%></td><tdwidth="199"height="27"><%=goodsname%></td><tdwidth="59"height="27">¥<%=goodsitem.nowprice%></td><tdwidth="51"height="27"><inputname="num<%=i%>"size="7"type="text"class="txt_grey"value="<%=goodsitem.number%>"onBlur="check(this.form)"></td><tdwidth="65"height="27">¥<%=(goodsitem.nowprice*goodsitem.number)%></td><tdwidth="34"><ahref="cart_move.jsp?ID=<%=i%>"><imgsrc="images/del.gif"width="16"height="16"></a></td><scriptlanguage="javascript"> <!-- functioncheck(myform){ if(isNaN(myform.num<%=i%>.value)||myform.num<%=i%>.value.indexOf('.',0)!=-1){ alert("请不要输入非法字符");myform.num<%=i%>.focus();return;} if(myform.num<%=i%>.value==""){ alert("请输入修改的数量");myform.num<%=i%>.focus();return;} myform.submit(); } --> </script> <% } %></tr></table> </form><tablewidth="100%"height="52"border="0"align="center"cellpadding="0"cellspacing="0"><tralign="center"valign="middle"> <tdheight="10">  </td><tdwidth="24%"height="10"colspan="-3"align="left"> </td> </tr><tralign="center"valign="middle"><tdheight="21"class="tableBorder_B1"> </td><tdheight="21"colspan="-3"align="left"class="tableBorder_B1">合计总金额:¥<%=sum%></td></tr><tralign="center"valign="middle"><tdheight="21"colspan="2"><ahref="index.jsp">继续购物</a>|<ahref="cart_checkout.jsp">去收银台结账</a>|<ahref="cart_clear.jsp">清空购物车</a>|<ahref="#">修改数量</a></td></tr></table>//确定订单实现:<%chStrchStr=newchStr();connDBconn=newconnDB();if(session.getAttribute("cart")==""){ out.println("<scriptlanguage='javascript'>alert('您还没有购物!');window.location.href='index.jsp';</script>");}StringUsername="";Username=(String)session.getAttribute("username");if(Username!=""){try{ResultSetrs_user=conn.executeQuery("select*fromtb_Memberwhereusername='"+Username+"'");if(!rs_user.next()){ session.invalidate(); out.println("<scriptlanguage='javascript'>alert('请先登录后,再进行购物!');window.location.href='index.jsp';</script>"); return;}else{ Stringusername=chStr.chStr(request.getParameter("username")); Stringtruename=chStr.chStr(request.getParameter("truename")); Stringaddress=chStr.chStr(request.getParameter("address")); Stringpostcode=request.getParameter("postcode"); Stringtel=request.getParameter("tel"); Stringpay=chStr.chStr(request.getParameter("pay")); Stringcarry=chStr.chStr(request.getParameter("carry")); Stringbz=chStr.chStr(request.getParameter("bz")); intorderID=0; //计算打折 floatrebate=1; ResultSetrs_rebate=conn.executeQuery("selectrebatefromV_Memberwhereusername='"+username+"'"); if(rs_rebate.next()){} Vectorcart=(Vector)session.getAttribute("cart"); intnumber=0; floatnowprice=(float)0.0; floatsum=(float)0; floatTotalsum=(float)0; Stringflag="True"; inttemp=0; intID=-1; //插入订单主表数据 floatbnumber=cart.size(); Stringsql="insertintotb_Order(bnumber,username,truename,address,postcode,tel,pay,carry,rebate,bz)values("+bnumber+",'"+username+"','"+truename+"','"+address+"','"+postcode+"','"+tel+"','"+pay+"','"+carry+"',"+rebate+",'"+bz+"')"; temp=conn.executeUpdate_id(sql);if(temp==0){ flag="false"; }else{ orderID=temp; } Stringstr=""; //插入订单明细表数据 for(inti=0;i<cart.size();i++){ goodselementmygoodselement=(goodselement)cart.elementAt(i); ID=mygoodselement.ID; nowprice=mygoodselement.nowprice*rebate; number=mygoodselement.number; sum=nowprice*number; str="insertintotb_order_Detail(orderID,goodsID,price,number)values("+orderID+","+ID+","+nowprice+","+number+")"; temp=conn.executeUpdate(str); Totalsum=Totalsum+sum; if(temp==0){ flag="false"; } } //更新会员信息 Stringsql_up="updatetb_MembersetAmount=Amount+"+Totalsum+"whereusername='"+username+"'"; temp=conn.executeUpdate(sql_up); if(temp==0){ flag="false"; } //更新会员等级 ResultSetrs_Amount=conn.executeQuery("selectAmountfromtb_Memberwhereusername='"+username+"'"); if(rs_Amount.next()){ intAmount=0; Amount=rs_Amount.getInt("Amount"); ResultSetrs_grade=conn.executeQuery("selectTop1grade,Amountfromtb_rebatewhereAmount<="+Amount+"orderbygradedesc"); if(rs_grade.next()){ intgrade=0; grade=rs_grade.getInt("grade"); Stringsql_upgrade="updatetb_Membersetgrade="+grade+"whereusername='"+username+"'"; temp=conn.executeUpdate(sql_upgrade); if(temp==0){ flag="false"; } } } if(flag.equals("false")){ out.println("<scriptlanguage='javascript'>alert('订单无效');history.back();</script>"); }else{ session.removeAttribute("cart"); out.println("<scriptlanguage='javascript'>alert('订单生成,请记住您的订单号["+orderID+"]');window.location.href='index.jsp';</script>"); } conn.close();}}catch(Exceptione){out.println(e.toString());}}else{ session.invalidate(); out.println("<scriptlanguage='javascript'>alert('请先登录后,再进行购物!');window.location.href='index.jsp';</script>");}%>4.2.3会员注册功能1.描述:普通用户当需要购买商城的商品时,需要注册本站会员,输入相关会员信息,保存到会员信息表中,jsp页面根据用户所输入的信息,首先判断所注册的用户名是否存在,不存在则可以注册,校验功能由Js方法openwin()完成。2.程序效果图如下图4-8所示:图4-8会员注册输入信息页面图4-9用户名校验3.流程图如下图4-10所示: 图4-10会员注册流程图会员注册需要遵守流程,判断先决条件是否成立,否则不予注册4.实现代码如下:会员信息管理关键代码://会员用户名校验功能代码<scriptlanguage="javascript"> functionopenwin(UID){ if(UID==""){ alert("请输入用户名!"); myform.username.focus(); return; } varstr="checkUserName.jsp?username="+UID; window.showModalDialog(str,"","dialogWidth=300px;dialogHeight=150px;status=no;help=no;scrollbars=no");}</script>}//会员注册信息提交实现代码<%connDBconn=newconnDB();request.setCharacterEncoding("gb2312");Stringusername=member.getUsername();ResultSetrs=conn.executeQuery("select*fromtb_Memberwhereusername='"+username+"'");if(rs.next()){ out.println("<scriptlanguage='javascript'>alert('该用户名已经存在,请重新注册!');window.location.href='register.jsp';</script>");}else{ intret=0;MemberDaoImplins_member=newMemberDaoImpl();ret=ins_member.insert(member); if(ret!=0){out.println("<scriptlanguage='javascript'>alert('用户注册成功!');window.location.href='index.jsp';</script>");}else{out.println("<scriptlanguage='javascript'>alert('用户注册失败!');window.location.href='register.jsp';</script>");}}%> 4.2.4订单查询功能1.描述:在管理员操作界面,点击订单管理,可以查询本站所有会员的订单信息。2.程序效果图如下图4-11所示图4-11管理员订单管理界面3.实现代码如下:<%Stringstr=(String)request.getParameter("Page");if(str==null){ str="0";}intpagesize=10;rs.last();intRecordCount=rs.getRow();intmaxPage=0;maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1);intPage=Integer.parseInt(str);if(Page<1){ Page=1;}else{ if(((1)*pagesize+1)>RecordCount){ Page=maxPage; }}rs.absolute((1)*pagesize+1);for(inti=1;i<=pagesize;i++){ orderID=rs.getInt("orderID"); bnumber=rs.getInt("bnumber"); truename=rs.getString("truename"); pay=rs.getString("pay"); carry=rs.getString("carry"); rebate=rs.getFloat("rebate"); orderDate=rs.getString("orderDate"); enforce=rs.getInt("enforce"); %> <tralign="center"> <tdheight="24"><ahref="order_detail.jsp?ID=<%=orderID%>"><%=orderID%></a></td> <td><%=bnumber%></td> <td><%=truename%></td> <td><%=pay%></td> <td><%=carry%></td> <td><%=orderDate%></td> <td><%if(enforce==0){%><ahref="order_enforce.jsp?ID=<%=orderID%>"><imgsrc="../images/enforce.gif"width="16"height="16"></a> <%}else{%>已执行<%}%></td> </tr>4.3中文乱码问题处理在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,编写了chStr类文件处理字符转换:代码如下:publicStringchStr(Stringstr){if(str==null){str="";}else{try{str=(newString(str.getBytes("iso-8859-1"),"GB2312")).trim();//String类的getBytes方法是一个取得字符串编码类型的函数,trim()方法用于去除字符串的收尾空格}catch(Exceptione){e.printStackTrace(System.err);}}returnstr;}publicStringconvertStr(Stringstr1){if(str1==null){str1="";}else{try{//replaceAll(Stringstr1,Stringstr2)方法为JDK1.4.x的新方法,使用str2替换字符串中的所有str2字符串str1=str1.replaceAll("<","<");//替换字符串中的"<"和">"字符,保证HTML标记的正常输出str1=str1.replaceAll(">",">");str1=str1.replaceAll(""," ");//空格符str1=str1.replaceAll("\r\n","<br>");//回车换行符}catch(Exceptione){e.printStackTrace(System.err);}}returnstr1;}5.系统测试5.1系统测试目的与意义系统测试是整个系统开发过程中不可或缺的流程,通过系统测试不仅能够保证系统的正常运行,同时提高系统的性能,保证系统运行的稳定,对于后期的维护与管理是至关重要的。系统测试的任务是尽可能找出系统中存在的问题,保证系统的稳定性、可靠性,高效性等。在系统测试过程中,一般采用三个步骤来依次对系统进行测试即模块、组装、确认等流程。通过严格执行此三个流程,确保最终的系统的可靠。5.2测试过程在

温馨提示

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

评论

0/150

提交评论