版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE60基于Java语言的商务网站系统设计电脑科学与技术指导老师摘要伴随着Internet的蓬勃发展,网络购物中心作为电子商务的一种形式正以其高效、低成本的优势,逐步成为新兴的经营模式和理念,人们已经不再满足用途信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利。网络购物正适应了当今社会快节奏地生活,使顾客足不出户便可以方便快捷轻松地选购自己喜欢的商品。本系统便是尝试用JSP在网络上架构一个动态的电子商务网站,它是在WindowsXP下,以SQLServer2000为数据库开发平台,Tomcat网络信息服务作为应用服务器,采用JSP(JavaServerPages)技术开发的网上购物系统。他分前台部分和后台部分,前台部分由用户使用,主要包括用户注册,购物车管理,订单管理,个人资料管理,留言板管理等功能;后台部分由管理员使用,主要包括商品管理,处理订单,用户信息管理,链接信息管理等功能。建立后的网站系统是一个动态、交互式、具有商品提供、系统管理、用户留言等功能的电子商务网站。关键字:JSP;SQLserver2000;Tomcat;网上购物系统
DesignedinthebusinesswebsitesystembasedonJavaComputerScienceandTechnologyTeacherAbstractAlongwiththevigorousdevelopmentoftheInternet,e-commercenetworksasashoppingcenterisaformofitshighlyefficient,low-costadvantages,graduallyemergingasabusinessmodelandphilosophy,thereisnolongermeetuseanddisseminationofinformationbrowsing,butadesiretobringthefullenjoymentnetworkmoreconvenient.Internetshoppingisbeingadaptedtothefastpaceoftoday'ssocietytolive,sothatcustomerscanenjoytheconvenienceoffastandeasywaytopurchasetheirownlikecommodities.ThesystemistryingtouseJSPinadynamicnetworkofe-commercewebsitesstructure,whichisinWindowsXP,SQLServer2000fordatabasedevelopmentinplatform,Tomcatapplicationserverasanetworkinformationservices,useJSP(JavaServerPages)technologydevelopmentonlineshoppingsystem.Prospectsandthebackgroundofsomeofhishours,theprospectsofusers,includingusersregistered,ashoppingcartmanagement,ordermanagement,personalinformationmanagement,messageboardmanagementfunctions;Backgroundinpartbymanagers,includingcommoditymanagement,processingorders,customerinformationmanagement,informationmanagement,andotherfunctionslinks.Aftertheestablishmentofthewebsiteisadynamic,interactive,withcommodities,systemsmanagement,voicemail,andotherfunctionsofthee-commercewebsiteusers.KeywordsJSP;SQLServer2000;Tomcat;Onlineshoppingsystem目录摘要 IAbstract II前言 VI第1章系统概述 11.1JSP的技术原理 11.1.1JSP语言及其特点 11.1.2Java及JavaServlets概述 31.1.3JavaBean简介 31.2服务器配置 41.3.2Tomcat安装及配置 51.3.3数据库配置 6第2章系统需求分析及总体设计 92.1需求分析 92.2系统功能模块设计 9第3章数据库结构设计 123.1数据库实现 123.1.1tb_member(会员信息表) 123.1.2tb_goods(商品信息表) 123.1.3tb_rebate〔折扣表) 133.1.4tb_manager(管理员信息表) 133.1.5tb_order_detail(订单明细表) 143.1.6tb_order(订单信息主表) 143.1.7tb_superType(商品大分类信息表) 153.1.8tb_subType(商品小分类信息表) 153.1.9tb_BBS(公告信息表) 153.2用JSP连接数据库 16第4章系统详细设计 234.1前台部分 234.1.1前台总体框架 234.1.2用户管理模块 254.1.3用户资料修改 284.1.4购物车模块 304.2后台部分 414.2.1后台总体框架 414.2.2管理员登录 434.2.3商品管理模块 464.2.4订单管理模块 494.2.5会员管理模块 524.2.6公告管理模块 54第5章结束语 59参考文献 60谢辞 61前言21世纪是网络飞速发展的时代,上网、创建网站已经成为热门话题。Internet技术得到持续、猛烈的发展,已经成为电脑产业的一个技术热点,越来越多的企业开始关注网络,许多人正在或正准备学习网络知识,进行网络开发或创建自己的网站。JSP的全称是JavaServerPages,是一种以Java为主的跨平台Web开发语言,它具有安全性,健全性,运行效率高等许多优点。本次毕业设计——基于Java语言的商务网站系统设计,是在WindowsXP下,以SQLServer2000为数据库开发平台,Tomcat网络信息服务作为应用服务器,采用JSP(JavaServerPages)技术开发的。在本论文中全面详细地介绍了网上影院系统的设计方案,第1章为JSP的基础理论,包括JSP的技术原理,Java及JavaServlets概述,JavaBean简介,在JSP中使用XML,服务器配置,Web站点配置;第2章为系统需求分析及总体设计,包括需求分析,系统功能模块设计,对具体功能及用例说明,数据库需求分析;第3章为数据库设计,包括数据库结构设计,用JSP连接数据库;第4章为系统详细设计,包括前台和后台两个大的部分,前台部分由用户使用,主要包括用户注册,购物车管理,订单查询,个人资料修改;后台部分由管理员使用,主要包括会员信息管理,商品管理,订单管理,公告信息管理等功能;第5章为结束语。第1章系统概述1.1JSP的技术原理1.1.1JSP语言及其特点在传统的网页HTML文件〔*.htm,*.html〕中加入Java程序片段〔Scriptlet〕和JSP标记〔tag〕,就构成了JSP网页〔*.jsp〕。JSP页面看上去象标准的HTML和XML页面,并附带有JSP引擎能够处理和抽取的额外元件。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给用户。程序片段可以操作数据库、重新定向网页以及发送E-mail等,这就是建立动态网站所需要的功能。所有程序都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低。它基于强大的Java语言,具有良好的伸缩性,在网络数据库应用开发领域具有得天独厚的优势。JSP技术在多个方面加速了动态Web页面的开发:〔1〕将内容的生成和显示进行别离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容〔内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格〕。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容〔例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件〕,并且将结果以HTML〔或者XML〕页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。〔2〕强调可重用的组件绝大多数JSP页面依赖于可重用的,跨平台的组件〔JavaBeans或者EnterpriseJavaBeansTM组件〕来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。〔3〕采用标识简化页面开发Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。〔4〕JSP能提供所有Servlets功能与Servlets相比,JSP能提供所有Servlets功能,它比用Println书写和修改HTML更方便。可以更明确地进行分工,Web页面设计人员编写HTML,只需留出空间让Servlets程序员插入动态部分即可。JSP技术能够支持高度复杂的基于Web的应用。〔5〕健壮的存储管理和安全性由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。〔6〕一次编写,各处运行作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供给商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。1.1.2Java及JavaServlets概述JSP技术是用JAVA语言作为脚本语言的,谈及JSP技术,少不了要对JAVA技术进行一些基本的介绍。1.1.3JavaBean简介JavaBean是一种基于Java的软件组件,JavaBean和Active控件一样,可以通过封装业务逻辑建立一整套可重复利用的对象库。JSP对于在Web应用中集成JavaBean组件提供了完善的支持,这种支持不仅能缩短开发时间〔可以直接利用经过测试和可信任的已有组件〕,防止重复开发,也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互及数据提取等。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean组件可以在任何地方重用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构和细节问题,只需定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。1.2服务器配置第一步:从官方网站;//java.sun下载该软件的最新版本。我所下载的是jdk-1_5_0_06-windows-i586-p.exe文件。第二步:双击.exe文件,安装在C:\ProgramFiles\Java\jdk1.5.0_06。第三步:JDK的环境配置:在Windows中用鼠标指向我的电脑,按右键,选择“属性”,在“系统特性”表单内选择“高级”标签,在“高级”标签内选择“环境变量”,在系统变量中加入变量JAVA_HOME(变量名为C:\ProgramFiles\Java\jdk1.5.0_06),classpath(变量值为C:\ProgramFiles\Java\jdk1.5.0_06\lib\dt.jar;C:\ProgramFiles\Java\jdk1.5.0_06\lib\tools.jar;C:\ProgramFiles\Java\jdk1.5.0_06)和path(变量值为C:\Pro-gramFiles\Java\jdk1.5.0_06\bin;)。安装和配置完毕后,在“命令提示符”中输入javac,会出现如图1所示,则说明JDK安装和配置都是正确的。图1javac调试界面1.3.2Tomcat安装及配置直接运行下载的apache-tomcat-5.5.17.exe文件,按照一般的Windows程序安装步骤即可安装好Tomcat,安装时它会自动寻找JDK的位置。安装过程中需要选择一个文件夹作为Tomcat的安装目录。我选择安装的位置是C:\Tomcat5.5。安装完成以后,添加一个Tomcat的环境变量,添加方法和JDK的环境变量的添加方法相同,设置变量名为TOMCAT_HOME,变量值为C:\Tomcat5.5。设置完毕后就可以运行Tomcat服务器了。Tomcat成功启动后,在浏览器中输入;//localhost;8080/,如果出现欢送界面,则说明Tomcat安装成功。欢送界面如图2所示。图2Tomcat欢送界面1.3.3数据库配置〔1〕SQLServer2000首先,要定义一个数据库名称〔DSN〕。打开“开始”|“设置”|“控制面板”|“管理工具“,在文件夹下有ODBC数据源的快捷方式。在弹出的“ODBC数据源管理器”对话框中选择“系统DSN”选项卡,然后单击“添加”按纽,选择“SQLServer”为数据库驱动程序,单击“完成”按纽。如图3所示。图3创建新数据源在弹出的“创建SQLServer的新数据源”对话框的“数据源名称”文本框输入“biye”,在“描述”文本框中可以写上数据库的功能。在“服务器”下拉列表中选择要连接的SQLServer,此处要安装的本地服务器,所以选择“XY”即可。如图4所示。图4选择数据库服务器单击“下一步”按钮,选择“使用用户输入登录ID和密码的SQLServer验证”单项选择按钮,“登录ID”默认为“weiyue”,密码为空。如图5所示。图5SQLServer身份验证设置单击“下一步”按钮,在下拉列表中选择该数据库的数据库为“毕业设计”,图6所示。图6选择SQL数据库单击“下一步”按钮,再单击“完成”按钮即可打开“ODBCMicrosoftSQLServer安装”对话框。如图7所示。图7测试数据源第2章系统需求分析及总体设计2.1需求分析此基于Java语言的商务网站系统分前台功能和后台功能:前台部分由用户使用,主要包括用户注册,购物车管理,订单管理,个人资料管理,留言板管理。后台部分由管理员使用,主要包括管理员身份验证,商品管理,处理订单,用户信息管理,连接信息管理。2.2系统功能模块设计功能结构图如下:图8功能模块设计图从图中可以看出,网上购物系统可以分为前台和后台两个部分,前台部分由用户使用,主要包括用户注册,生成订单,购物车管理,查看购物车,查看留言,订购产品,订单查询和发布留言7个模块;后台部分由管理员使用,主要包括管理员身份验证,商品管理,处理订单,用户信息管理,连接信息管理5个模块。2.3数据库需求分析数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MYSQL,SQLServer,Oracle等。我采用了SQLserver2000数据库管理系统,建立的数据库名为db_shop。整个系统功能需要以下数据项:会员信息表:用户id、用户名称、用户真实、登录密码、所在城市、、邮政编码、证件号码、证件类别、联系、邮箱地址。商品信息表:商品id、类别id、名称、简介、定价、现价、图片、类型、入库时间、存储地址、是否新品、是否特价。订单信息主表:订单号、品种数、用户名、真实、、邮政编码、、付款方式、运送方式、折扣、订购日期、是否执行、备注。订单明细表:id号、订单号、商品id、价格、数量。管理员信息表:管理员id、管理员名称、管理员密码。公告信息表:id号、标题、公告内容、公告时间。商品大类别信息表:类别id、类别名称。商品小类别信息表:类别id、父类id、类别名称。折扣表:等级、消费额、折扣。 第3章数据库结构设计3.1数据库实现3.1.1tb_member(会员信息表)主要用于保存用户注册信息,该表的结构如表1所示。表1tb_goods(商品信息表)列名说明类型〔长度〕备注Id会员idInt〔8〕不允许空,主键Usrname用户名Varchar〔20〕不允许空Truename真实Varchar〔20〕不允许空Password密码Varchar〔20〕不允许空City所在城市Varchar〔20〕AddressVarchar〔100〕Postcode邮政编码Varchar〔6〕CardNO证件号码Varchar〔24〕不允许空CardType证件类型Varchar〔20〕不允许空Grade等级Int〔4〕不允许空Amount消费额Money〔4〕不允许空TelVarchar〔20〕EmailE-mailVarchar〔100〕不允许空Freeze是否冻结Int〔4〕3.1.2tb_goods(商品信息表)主要用于保存商品的基本信息,该表的结构如表2所示。表2tb_goods(商品信息表)列名说明类型〔长度〕备注Id物品idbigInt〔8〕不允许空,主键Typeid商品类别Int〔4〕不允许空goodsname物品名称Varchar〔50〕不允许空price定价Money〔8〕不允许空Nowprice现价Money〔8〕不允许空Introduce物品介绍Text〔16〕不允许空Picture图片文件Varchar〔100〕不允许空Newgoods是否新品Int〔4〕不允许空INTtime发布时间Dattime〔8〕不允许空Sale是否特价Int〔4〕不允许空Hit浏览次数Int〔4〕不允许空3.1.3tb_rebate〔折扣表)主要用于记录顾客在购买商品时的折扣信息,该表的结构如表3所示。表3tb_rebate(折扣表)字段说明类型(长度)备注Grade等级Varchar〔20〕不允许空,主键Amount消费额Money〔8〕不允许空Rebate折扣Float〔50〕不允许空3.1.4tb_manager(管理员信息表)主要用于保存管理员信息,该表的结构如表4所示。表4tb_manager(管理员信息表)字段说明类型(长度)备注Id管理员idInt〔4〕不允许空,主键Manager管理员名称Varchar〔30〕不允许空PWD管理员密码Varchar〔30〕不允许空3.1.5tb_order_detail(订单明细表)用来保存订单的详细表信息,其结构如表5所示。表5tb_order_detail(订单明细表)字段说明类型(长度)备注IdId号Bigint〔8〕不允许空,主键Orderid订单idBigint〔8〕不允许空Goodsid商品idBigint〔8〕不允许空Price货物价格Money〔8〕不允许空Number货物数量Int〔4〕不允许空3.1.6tb_order(订单信息主表)主要用于保存订单的概要信息,该表的结构如表6所示。表6tb_order(订单信息主表)字段说明类型(长度)备注Orderid订单idBigint〔8〕不允许空,主键Bnumber品种数Smallint〔2〕不允许空Usermane用户名Varchar〔15〕不允许空Truename真实Varchar〔15〕不允许空AddressVarchar〔100〕不允许空Postcode邮政编码Varchar〔10〕不允许空TelVarchar〔20〕不允许空Pay付款方式Varchar〔20〕不允许空Carry运送方式Varchar〔20〕不允许空Rebate折扣Float〔8〕不允许空Orderdate订货日期Smalldatetime〔4〕不允许空Enforce是否执行Int〔4〕不允许空Bz备注Varchar〔200〕不允许空3.1.7tb_superType(商品大分类信息表)主要用于保存商品大类别信息,该表的结构如表7所示。表7tb_superType(商品大类别信息表)字段说明类型(长度)备注Id类别idInt〔4〕不允许空,主键Typename类别名称Varchar〔50〕不允许空3.1.8tb_subType(商品小分类信息表) 主要用于保存商品类别中小的类别信息,其结构如表8所示。表8tb_subType(商品小类别信息表)字段说明类型(长度)备注Id类别idInt〔4〕不允许空,主键Typename类别名称Varchar〔50〕不允许空SuperType父类idInt〔4〕不允许空3.1.9tb_BBS(公告信息表)主要用于记录后台添加的公告信息,该表的结构如表8所示。表9tb_BBS(公告信息表)字段说明类型(长度)备注IdId号Int〔4〕不允许空Title公告标题Varchar〔100〕不允许空Content公告内容Varchar〔40000〕不允许空INTtime公告时间Dattime〔8〕不允许空3.2用JSP连接数据库在本系统中,需要多次连接数据库,而且这种连接是一项很消耗资源的操作,因此,在本系统中对数据库连接的部分写成了一个JavaBean。文件名为Condb.java,关键代码如下:packagecom.tools;importjava.sql.*;importjava.io.*;importjava.util.*;publicclassConnDB{publicConnectionconn=null;publicStatementstmt=null;publicResultSetrs=null;privatestaticStringpropFileName="/com/connDB.properties"; //指定资源文件保存的位置privatestaticPropertiesprop=newProperties();privatestaticStringdbClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver";privatestaticStringdbUrl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_shop";privatestaticStringdbUser="sa";privatestaticStringdbPwd="";publicConnDB(){ try{ InputStreamin=getClass().getResourceAsStream(propFileName); prop.load(in); //通过输入流对象加载Properties文件 dbClassName=prop.getProperty("DB_CLASS_NAME"); //获取数据库驱动 dbUrl=prop.getProperty("DB_URL",dbUrl); dbUser=prop.getProperty("DB_USER",dbUser); dbPwd=prop.getProperty("DB_PWD",dbPwd); } catch(Exceptione){ e.printStackTrace(); //输出异常信息 } }publicstaticConnectiongetConnection(){Connectionconn=null;try{Class.forName(dbClassName).newInstance();conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);}catch(Exceptionee){ee.printStackTrace();}if(conn==null){System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl+"\r\n用户/密码"+dbUser+"/"+dbPwd);}returnconn;}/**功能:执行查询语句*/publicResultSetexecuteQuery(Stringsql){try{conn=getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);}catch(SQLExceptionex){System.err.println(ex.getMessage());}returnrs;}/**功能:执行更新操作*/publicintexecuteUpdate(Stringsql){intresult=0;try{conn=getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);result=stmt.executeUpdate(sql);}catch(SQLExceptionex){result=0;}try{stmt.close();}catch(SQLExceptionex1){}returnresult;}publicintexecuteUpdate_id(Stringsql){intresult=0;try{conn=getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);result=stmt.executeUpdate(sql);StringID="select@@IDENTITYasid";rs=stmt.executeQuery(ID);if(rs.next()){intautoID=rs.getInt("id");result=autoID;}}catch(SQLExceptionex){result=0;}returnresult;}/**功能:关闭数据库的连接*/publicvoidclose(){try{ //捕捉异常 if(rs!=null){ //当ResultSet对象的实例rs不为空时 rs.close(); //关闭ResultSet对象 } if(stmt!=null){ //当Statement对象的实例stmt不为空时 stmt.close(); //关闭Statement对象 } if(conn!=null){ //当Connection对象的实例conn不为空时 conn.close(); //关闭Connection对象 } }catch(Exceptione){ e.printStackTrace(System.err); //输出异常信息 } }}第4章系统详细设计4.1前台部分4.1.1前台总体框架前台部分由用户使用,包括用户注册,购物车管理,订单管理,个人资料管理等几个部分。〔1〕模块功能介绍用户管理:为了便于网站的管理,必须有一套完整的用户管理体系。该网站用户管理模块由用户注册,用户登陆,2部分组成。订单查询:登陆用户可以通过订单号查询订单。购物车:所选商品须通过购物车进行保存,然后生成订单。修改个人资料:为了保护用户信息不受非法侵害,用户登陆后即可对个人的注册信息进行修改。〔2〕前台文件构架网络购物中心网站的前台文件结构如图9所示。商品分类〔goodsType.jsp〕商品分类〔goodsType.jsp〕广告栏〔ad.jsp〕首页〔index.jsp〕网站导航〔navigation.jsp〕会员登录(login_u.jsp)商品搜索〔search.jsp〕右侧页面〔right.jsp〕版权信息〔copyright.jsp〕会员登录处理页面〔login_u_deal.jsp〕搜索结果(search_deal.jsp)图9前台文件结构图〔2〕网站前台首页的运行结果如图10所示。图10购物网站首页4.1.2用户管理模块用户管理模块主要包括用户注册,登录及找回密码3个部分.。〔1〕用户注册当用户第一次登录时首先要注册,成为会员后,才可以购买物品.用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作,用户注册页面的运行结果如图11所示.。图11用户注册页面会员注册信息关键代码如下: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;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>");}}〔2〕用户登录用户登录口设置在首页的中上部,主要用来接收用户输入的用户名和密码,并更新用户在网站中的状态信息.会员登录窗口的运行结果如图12所示。图12会员登录窗口当用户在登录页面中输入会员名和密码后,单击“登录”按钮,系统将对输入的会员名和密码进行验证,如果用户输入的会员名存在并且冻结字段值不为1,则判断用户输入的密码是否正确,如果正确,则重新进入网站首页,显示登录会员的会员名、“修改资料”和“退出登录”按钮,否则提示登录失败。会员登录处理页面关键代码如下:Stringusername=chStr.chStr(request.getParameter("username"));try{ ResultSetrs=conn.executeQuery("select*fromtb_Memberwhereusername='"+username+"'andfreeze=0"); if(rs.next()){ StringPWD=request.getParameter("PWD"); if(PWD.equals(rs.getString("password"))){ session.setAttribute("username",username); 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>");}conn.close();4.1.3用户资料修改用户资料修改在前台主页上,只有用户登录后才能单击“修改资料”链接,进入用户修改资料页面,该页面主要用于修改用户信息,其运行结果如图13所示。图13修改用户信息个人资料修改完毕后,要将修改后的数据信息更新注册到数据表中,单击“确定保存”按钮,如果提交的数据无误,将弹出“数据更新成功”消息对话框,否则将弹出“更新失败”的消息对话框。结果展示页面的关键代码如下:publicintexecuteUpdate_id(Stringsql){intresult=0;try{ conn=getConnection(); stmt=conn.createStatement\(ResultSet.TYPE_SCROLL_INSENSITIVE,\ResultSet.CONCUR_READ_ONLY); result=stmt.executeUpdate(sql); StringID="select@@IDENTITYasid"; rs=stmt.executeQuery(ID); if(rs.next()){ intautoID=rs.getInt("id"); result=autoID; }}}4.1.4购物车模块在超市购物,可以根据自己的需要将很多的物品挑选到购物车〔篮〕中。而在网上虚拟的购物商城中,通常都会采用一种被称作“购物车”的技术来模拟现实生活。这种技术用起来十分方便,不但可以随时添加,查看,修改,清空购物车中的内容,还可以随时去收银台结账。〔1〕添加购物车添加购物车就是把用户选中的商品放在购物车中。当用户在前台首页中单击商品展示区的“购买”按钮时,系统会将该商品的详细信息展示在查看物品清单页中,运行结果如图14所示。图14查看物品清单页面运行结果用户在单击物品清单页面下方的“放入购物车”链接,便可将商品放入购物车,关键代码如下:intID=Integer.parseInt(request.getParameter("goodsID"));Stringsql="select*fromtb_goodswhereID="+ID;ResultSetrs=conn.executeQuery(sql);floatnowprice=0;if(rs.next()){ nowprice=rs.getFloat("nowprice");}Goodselementmygoodselement=newGoodselement();mygoodselement.ID=ID;mygoodselement.nowprice=nowprice;mygoodselement.number=1;booleanFlag=true;Vectorcart=(Vector)session.getAttribute("cart");if(cart==null){ cart=newVector();}else{ for(inti=0;i<cart.size();i++){ Goodselementgoodsitem=(Goodselement)cart.elementAt(i); if(goodsitem.ID==mygoodselement.ID){ goodsitem.number++; cart.setElementAt(goodsitem,i); Flag=false; } }}if(Flag)cart.addElement(mygoodselement);session.setAttribute("cart",cart);conn.close();response.sendRedirect("cart_see.jsp");〔2〕查看购物车为了方便用户随时查看购物情况,在网站的首页加入了查看购物车链接,通过它可以将所选物品信息放入购物车中显示出来。查看购物车页面运行结果如图15所示。图15购物车在网页中运行结果判断用户登录和购物车是否为空。在实现查看购物车时,首先需要判断用户是否登录,如果没有登录,则不能查看购物车;如果购物车为空,需将页面重定向到购物车为空的页面。关键代码如下:Stringusername="";username=(String)session.getAttribute("username");if(username==""||username==null){ out.println("<scriptlanguage='javascript'>alert('请先登录!');window.location.href='index.jsp';</script>");}else{ Vectorcart=(Vector)session.getAttribute("cart"); if(cart==null||cart.size()==0){ response.sendRedirect("cart_null.jsp");}else{…Conn.close}显示购物车信息主要时将保存在session中的购物信息利用for语句输出到浏览器中去,同时根据商品的现价和购物数量自动计算每种商品的金额和购物车中全部商品的合计金额。其关键代码如下: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"); } }〔3〕修改购物车信息由于商品数量存放在文本框里,用户只需在某商品后的文本框中输入相应的数量即可,这里我采用的是Ajax技术,所以我先创建了一个封装Ajax的功能对象AjaxRequest,这里我同样用循环语句保存新的购物车信息其关键代码如下:for(inti=0;i<cart.size();i++){ Goodselementmygoodselement=(Goodselement)cart.elementAt(i); try{ if(mygoodselement.ID==ID){ //修改单件商品的购买数量 mygoodselement.number=number; } if(number!=0){ newcart.addElement(mygoodselement); sum=sum+mygoodselement.number*mygoodselement.nowprice; //计算合计金额 }}}〔4〕删除指定商品如果不想要某件商品时,我们可以将指定商品从购物车中删除,也就是将已经选择的商品退回到货架上。这样我们可以方便的处理我们不想要的商品,其关键代码如下:intid=Integer.parseInt(request.getParameter("ID")); cart.removeElementAt(id);〔5〕清空购物车清空购物车是指当用户订单生成后,倘假设还想继续购物,一定要清空购物车在进行选购商品,这样防止重复购物。清空购物车只需要将session中存储的shop对象清空即可。此功能是由shoppingCenter/car_clear.jsp完成的,关键代码如下:session.removeAttribute("cart");response.sendRedirect("cart_null.jsp");〔6〕生成订单生成订单是网上购物商城的最终目的,前面的所有的功能的实现都是为最后生成一个用户满意的订单做基础,在此要生成一个可以供用户随时查询订单号,还要保存用户订单中所购买的商品信息。当用户确认对购物车不再改变后,就可以到收银台结帐并生成订单。结帐的流程是:从购物车中读取商品名称,商品数量,商品价格信息,生成唯一的一个订单号,同时也把用户注册的基本信息读取出来,形成一个完整的订单写入数据库中,结帐填写订单的页面如图16所示。图16购物车在网页中运行结果 用户在收银台页面填写订单信息后,单击“提交”按钮将订单信息分别保存到订单主表和订单明细表中。由于购物中心为会员设置了等级,所以在保存订单的同时还会取出会员的等级信息并根据会员等级给予相应的折扣,同时当消费额到达一定数量时会员的等级也会相应的改变。以下是相关的关键代码:〔1〕计算折扣代码 floatrebate=1; ResultSetrs_rebate=conn.executeQuery("selectrebatefromV_Memberwhereusername='"+username+"'"); if(rs_rebate.next()) { rebate=rs_rebate.getFloat("rebate"); }〔2〕插入订单主表代码 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); //out.print("sql:"+sql); if(temp==0){ flag="false"; //out.print(flag+"主表出错"); }else{ orderID=temp; } Stringstr="";〔3〕插入订单明细表代码 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); //out.print("sql2:"+str); Totalsum=Totalsum+sum; if(temp==0) { lag="false"; //out.print(flag+"从表出错"); } } }〔4〕会员等级更新代码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"; //out.print(flag+"更新会员等级出错"); }}4.2后台部分4.2.1后台总体框架后台功能只允许具有管理员权限的用户使用,它是实现前台功能的基础。主要包括管理员身份验证,订单管理模块,商品管理模块,会员管理模块,公告信息管理模块组成。后台功能介绍〔1〕功能模块介绍管理员身份验证:为合法用户提供一个后台入口。订单信理模块:网站管理者对用户订单的执行和编辑状态。商品管理模块:向商品表插入前台首页展示的商品信息,其中又分为大类别信息管理和小类别信息管理及商品添加信息。会员管理模块:查询会员信息,对一些非法或失信用户进行账户冻结操作。公告信息管理模块:网站向用户发送最新公告信息。〔2〕后台文件结构网站后台文件结构,如图17所示。退出后台〔logout.jsp〕退出后台〔logout.jsp〕订单管理公告管理后台首页后台登录〔Login_m.jsp〕会员管理详细信息〔member_detail.jsp〕解冻(thaw.jsp)冻结(freeze.jsp)详细订单〔order_detail.jsp〕添加公告信息〔add.jsp〕删除公告信〔Del_deal.jsp〕商品管理〔indexl.jsp〕大分类信息管理〔superType.jsp〕修改商品信息〔goods_modify.jsp〕小信息分类管理(subType.jsp)添加商品信息(goods_add.jsp)详细信息(goods_detail.jsp)删除商品信息(goods_del.jsp)图17后台文件结构图〔3〕后台首页运行结果网站后台首页运行结果,如图18所示。图18后台首页图4.2.2管理员登录在前台首页单击进入后台,将转到管理员登录页面。该页面的功能是对管理员身份验证,用户输入用户名和密码后单击“确认”按键,系统将判断用户名和密码的有效性,如果通过验证则转到后台首页,反之则提示错误。管理员登录页面的运行结果如图19所示。图19管理员登录图在管理员登录页面中,对管理员的身份进行验证,关键代码如下:try{ResultSetrs=conn.executeQuery("select*fromtb_manager\wheremanager='"+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.3商品管理模块在商品管理首页中单击“添加商品信息”系统将打开添加商品信息页面。该页面主要用于商品信息添加到数据库表中,以提供前台首页商品展示类别展示所需要的数据依据。添加页面的运行结果如图20所示。图20添加商品页面为了减少错误,在提交商品信息时,需要对数据的合法性进行验证,输入的商品价格不能是空字符型,而输入的图片只支持Gif格式等,这些任务可以用Bean来实现的,也可以由脚本语言Javascript编写,以下是脚本语言函数mycheck〔〕来完成的关键代码如下:functionmycheck(){ if(form1.goodsName.value==""){ alert("请输入商品名称!");form1.goodsName.focus();return; } if(form1.picture.value==""){ alert("请输入图片文件的路径!");form1.picture.focus();return; } if(form1.price.value==""){ alert("请输入商品的定价!");form1.price.focus();return; } if(isNaN(form1.price.value)){ alert("您输入的定价错误,请重新输入!");form1.price.value="";form1.price.focus();return; } if(roduce.value==""){ alert("请输入商品简介!");roduce.focus();return; } form1.submit();}商品信息分为两类〔即大分类和小分类〕,这样做方便商品信息的管理首先需要创建显示商品大分类的结果集,并获取第一条大分类的ID号,为显示默认的小分类做准备,其代码如下:ResultSetrs_super=conn.executeQuery("selectID,superTypefromV_typegroupbyID,super Type");intsuperID=-1;StringsuperName="";if(rs_super.next()){ superID=rs_super.getInt(1);}else{ out.println("<scriptlanguage='javascript'>alert('请先录入类别信息!');Window.location.href='index.jsp';</script>"); return;}商品大分类信息的下拉列表框代码如下:<selectname="supertype"class="textarea"id="supertype"onChange="selSubType(this)"><%rs_super.first()do{superID=rs_super.getInt(1);superName=rs_super.getString(2);%><optionvalue="<%=superID%>"><%=superName%></option><%}while(rs_super.next());%></select>4.2.4订单管理模块单击后台导航条中的“订单管理”即可进入到订单信息管理首页。订单的管理主要是执行订单和查看订单的详细信息,但不能修改订单信息。订单管理页面的运行结果如图21所示。图21订单管理页面〔1〕订单查询用户提交订单后,通常产生的订单号查询信息及执行状态。用户在网站首页中单击“订单查询”超链接,进入输入订单号页面,运行结果如图22所示。图22订单查询页面用户订单处理页面显示的是用户的基本信息。要知道订单中所涉及的商品,需要单击对应的订单号的超链接打开商品订购祥单页才行。其关键代码如下:if(request.getParameter("ID")!=null){ intID=Integer.parseInt(request.getParameter("ID")); ResultSetrs_main=conn.executeQuery("select*fromtb_orderwhereorderID="+ID); intorderID=0; Stringaddress=""; Stringpostcode=""; Stringtel=""; Stringbz=""; intgoodID=-1; Stringgoodsname=""; floatnowprice=0; intnumber=0; if(rs_main.next()){ orderID=rs_main.getInt("orderID"); address=rs_main.getString("address"); postcode=rs_main.getString("postcode"); tel=rs_main.getString("tel"); bz=rs_main.getString("bz"); if(bz.equals("")){ bz="无"; } }商品订购祥单的运行结果如图23所示。图23商品详细订购界面〔2〕执行订单用户在前台购物并到收银台结账生成订单后,网站服务商〔即卖主〕需要去执行订单以便记录是否收到款项,是否该发货。在订单主表tb_order中的enforce字段的值代表着订单的执行状态,值为1,代表订单已被执行,默认值为0,代表订单没有被执行。订单的状态值的修改的关键代码如下:if(request.getParameter("ID")!=""){ intID=Integer.parseInt(request.getParameter("ID")); Stringsql="updatetb_ordersetenforce=1whereorderID="+ID; intret=0; ret=conn.executeUpdate(sql); if(ret!=0){ out.println("<scriptlanguage='javascript'>alert('订单执行成功!');window.location.href='ordermanage.jsp';</script>"); }else{ out.println("<scriptlanguage='javascript'>alert('订单执行失败!');window.location.href='ordermanage.jsp';</script>"); }}4.2.5会员管理模块该模块用来完成对注册用户的浏览及冻结帐户功能。如果用户蓄意性注册或在很长的时间内没有订单生成,管理员就可以将该用户账号冻结。单击导航拦中的“会员管理”超链接进入用户信息页面,其运行结果如图24所示。图24查询用户信息界面对于一些失信的用户只需要单击右侧的冻结/解冻”列下的图标,将其图标变为锁即可冻结该帐户,关键代码如下:if(request.getParameter("ID")!=""){ intID=Integer.parseInt(request.getParameter("ID")); Stringsql="updatetb_membersetfreeze=1whereID="+ID; intret=0; ret=conn.executeUpdate(sql); if(ret!=0){ out.println("<scriptlanguage='javascript'>alert('该会员信息已经被冻结!');window.location.href='membermanage.jsp';</script>"); }else{ out.println("<scriptlanguage='javascript'>alert('操作失败!');window.locatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学生个人新学期学习计划(3篇)
- 2024年房产交易协议
- 2024年度绿色建筑铝扣板应用合同
- 2024年度自动化设备安装工人劳务合同
- DB4114T 105-2019 黄河故道地区苹果化学疏花疏果技术规程
- DB4106T 118-2023 鹤麦601生产技术规程
- 幼儿园拓展心得5篇
- 2024年新品:股权转让与回购协议大全
- 第三期专题02完形填空-冲刺2023年中考英语必考题型终极预测(深圳专用)
- 商务助理个人工作总结范文(9篇)
- 北师版 七上 数学 第四章 基本平面图形《角-第2课时 角的大小比较》课件
- 外研版小学英语(三起点)六年级上册期末测试题及答案(共3套)
- 北师大版(2024新版)七年级上册生物期中学情调研测试卷(含答案)
- 产品包装规范管理制度
- 2024年海南省中考物理试题卷(含答案)
- 2024统编新版小学三年级语文上册第八单元:大单元整体教学设计
- 第07讲 物态变化(原卷版)-2024全国初中物理竞赛试题编选
- 高危儿规范化健康管理专家共识解读
- DB61T1521.5-2021奶山羊养殖技术规范 第5部分:后备羊培育
- 中国心力衰竭基层诊疗与管理指南(2024年版)
- 2024-2030年中国番茄粉行业市场发展趋势与前景展望战略分析报告
评论
0/150
提交评论