《网店课程设计.docx》由会员分享,可在线阅读,更多相关《网店课程设计.docx(28页珍藏版)》请在课桌文档上搜索。
1、摘要伴伴随Intemet0蓬勃发展,网络购物中心作为电子商务0一种形式正以其高效、低成本0优势,逐渐成为新兴的经营理念和模式,人们已经不再满足信息0浏览和公布方式,而是渴望着可以充足享有网络所带来的更多便利。网络购物正适应了当今社会快节奏地生活,使顾客足不出户便可以以便、快捷、轻松地选购自己喜欢的商品。本系统便是尝试用JSP在网络上架构一种动态的电子商务网站,它是在Windows系统下,以MySQL数据库为开发平台,Tomcat网络信息服务作为应用服务器,采用JSP(JavaServerPages)JaVaBean和JDBC等技术开发0网上购物系统。它分前台部分和后台部分,前台部分由顾客使用,
2、重要包括顾客注册,购物车管理,订单管理,个人资料管理等功能;后台部分由管理员使用,重要包括商品管理,处理订单,顾客信息管理,链接信息管理等功能。建立后的网站是一种动态、交互式、具有商品提供、系统管理等功能的电子商务网站。关键字JSP;MySQL;Tomcat;网上购物系统1系统功能概述11.1 系统B重要功能11.2 系统日勺构造总图12数据库设计22.1 需求分析22.2 网上商城后台管理系统E-R模型22.2.1 顾客信息实体属性E-R模型22.2.2 商品类别实体ER模型3商品信息实体属性E-R模型42.3 表构造设计43系统各功能模块的详细设计43.1 后台管理员登陆模块43.2 商品
3、管理模块53.2.1 商品列表53.2.2 商品添加73.2.3 商品修改93.2.4 商品搜索11参照文献171系统功能概述1.1系统的(重要功能:(1)前台顾客的注册;(2)后台管理员对顾客的简朴管理;(3)后台管理员对商品类别的管理;(4)后台管理员对商品信息的管理。1.2网上商城后台管理系统构造总图,如下图所示。图Ll系统构造总图2数据库设计2.1 需求分析建立一种完善的网上购物平台,包括前台显示和后台的管理,前台通过可视化的界面显示给顾客,顾客通过可视化0操作与数据库进行动态交互。而后台管理员则对前台显示0信息进行管理,本系统重要是后台管理的设计,其重要功能如下:(1)注册顾客信息在
4、后台0显示;(2)商品类别的管理,重要有类别B添加、修改、删除和列表显示;(3)商品详细信息的管理,重要有商品的添加、修改、删除和列表显示。2.2 网上商城后台管理系统E-R模型顾客信息实体属性E-R模型,如下图所示。图2.1顾客信息实体属性图商品类别实体E-R模型,如下图所示。图2.2商品类别实体图商品信息实体属性E-R模型,如下图所示。图2.3商品信息实体属性图2.5表构造设计表构造是寄存数据的格式,也是呈目前数据库中的样式。下图分别是表2.1顾客表日勺表构造、表2.2商品类别表的表构造以及表2.3商品信息表附表构造。表2.1顾客表的表构造字段名数据类型长度含义约束idint11顾客IDp
5、rimarykeyauto_incrementusernamevarchar40顾客名DefaultNULLpasswordvarchar20密码DefaultNULLphoneVarchar20DefaultNULLaddrVarchar255地址DefaultNULLrdatedatetime注册时间DefaultNULL表2.2商品类别表的I表构造字段名数据类型长度含义约束idint11类别IDprimarykeyauto_incrementnamevarchar255类别名DefaultNULLdescrvarchar255类别描述DefaultNULLpidInt11父类别IDDef
6、aultNULLisleafInt11与否子类别DefaultNULLgradeint11级别DefaultNULL备注:字段isleaf,若类别为没有子类别则取值为0,若有子类别取值则为1。表2.3商品信息表附表构造字段名数据类型长度含义约束idint11商品IDprimarykeyauto_incrementnamevarchar255商品名DefaultNULLdescrvarchar255商品描述DefaultNULLnormalpricedouble市场价DefaultNULLmemberpricedouble会员价DefaultNULLpdatedatetime上架时间Defaul
7、tNULLCategoryidint11类别IDDefaultNULL3系统各功能模块的详细设计3.1 后台管理员登陆模块该模块是后台管理0入口,通过前台提交0登录名和密码,在程序中验证与否能进入后台管理系统。后台管理员登陆界面如下图3.1所示。图3.1后台登陆界面接受表单提交的数据并进行验证,代码如下所示:%Stringaction=request.getParameterCction);if(action!=null&action.e3.2 商品管理模块商品列表证登入到后台管理时,通过点击管理主界面左侧产品管理下0产品列表的J超链接,则在主界面右侧区域显示商品详细信息。产品列表B界面如下图
8、3.2所示。J. wthttraa * lW。士 出。ocalhost800MyShoppigadmirifxle.jsp 3DSVl -moBS HM-. MSN Q HfltS下M(Sa四二0 订if分 f,OtS SB SA*上方格低,住抵福好1800.02014-06-19 19:8:52W修改上传2Bfi!车需好用0刀201406 19 19:19:171&上传图3.2产品列表界面部分重要程序代码如下:%finalintPAGE_SIZE=5;每页显示多少条记录finalintPAGES_PER_TIME=10;/每次显示多少个页码链接intpageNo=1;StringStrPag
9、eNo=request.getParameter(pageNo);if(StrPageNo!=null&!StrPageNo.trim().equals()try(pageNo=IntegenparseInt(StrPageNo);catch(NumberFormatExceptione)pageNo=1;)if(pageNo%1.istproducts=newArrayList();inttotalRecords=ProductManager.getInstance().getProducts(products,pageNo,PAGE_SIZE,true);inttotalPages=(to
10、talRecords+PAGE.SIZE-1)/PAGE_SIZE;if(pageNototalPages)pageNo=totalPages;%publicintgetProducts(Listproducts,intpageNojntpageSize,booleanlazy)inttotalRecords=-1;Connectionconn=DB.gefCo();Stringsql=;if(lazy)sql=select*fromproductorderbypdateasc;)sql+=limit+(pageNo-l)*pageSize+,+pageSize;ResultSetrs=D.e
11、xecuteQuery(coxr,sql);StatementStmtCount=DB.ge/S”Corm);ResultSetrsCount=DB.exec用。StmtCount,selectcount(*)fromproduct);try(rsCount.next();totalRecords=rsCount.getInt(l);Productp=null;while(rs.next()p=newProduct();p.setld(rs.getlnt(id);p.setName(rs.getString(name);p.setDescr(rs.getString(descr);p.setN
12、ormalPrice(rs.getDouble(,normalprice);p.setMemberPrice(rs.getDouble(memberprice);p.setPdate(rs.getTimestamp(,pdateH);p.setCategoryId(rs.getInt(categoryid);products.add(p);I)catch(SQLExceptione)e.printStackTrace();)returntotalRecords;)商品添加通过点击产品管理模块下0产品添加超链接,将出现添加商品0页面,管理员完善产品的所有信息后,点击提交按钮提交表单中B数据,后台
13、程序代码将产品信息写入数据库。产品添加的界面如图3.3所示。J用户宜理 凸类别宜悭 g产品省理卢品列去产品添加 F1蛛 凸订单管迎 q统计分析 凸百翦省理产品的:I市场价格:L会员价格:I斫属奥别n% *产品碗:AV囹囤四产晶土分内8夷女I图3.3添加产品界面部分程序代码:publicbooleanaddProduct(Productp)Connectionconn=null;PreparedStatementpstnt=null;conn=DB.geCo();Stringsql=”;if(p.getld()=-l)sql=insertintoproductVaIUeS(null?);try(
14、pstmt=DB.getPstmt(conn,sql);pstmt.setString(1,p.getName();pstmt.setString(2,p.getDescr();pstmt.setDouble(3,p.getNormalPrice();pstmt.setDouble(4,p.getMemberPrice();pstmt.setTimestamp(5,p.getPdate();pstmt.setlnt(6,p.getCategory(d();pstmt.executeUpdate();returntrue;)catch(SQLExceptione)e.printStackTrac
15、e();returnfalse;)finallyDB.OSe(PStmt);DB.cose(conn);商品修改点击商品列表中处理项中0修改链接,则出现修改对应商品0信息,当填写好修改之后0信息后,点击提交按钮,对商品信息进行更新操作。修改商品信息的运行界面如图3.4所示。RW*B三三KXJ_A:(Q)苗LB。localho$t:8080/MyShopping/AdmirVindex.j%p黑3。EJ.QKXmSamoBaSRMft?.MSN113ea三FflGK央栏0089SWV-AM泳师产品qRPis用户利褰q典别慢q产鹿 &89廉 声鼻宗加 户出9iTli?J线首分析61/212|IMD
16、l-MMttM*上点受*MVA6iR6-2621:33:54电aIi娥修改上传8javaA三三fi易于殖第32.0201432715:37:43m归改上传:I9X18.020l4g2715:40:09环mttfttIOTi2律律方M:W用Q名-谊剔-ISAlr-/!户Ba林:l*In金员象脩:fF-所艮别1-*FMit:AVI*2IVFlfc图3.4修改商品信息界面接受表单数据代码如下:将更新的商品信息写入数据库的UPDateProdUCt措施:publicbleanUpdateProduct(Productp)Connectionconn=null;PreparedStatementpstm
17、t=null;try(conn=DB.geCb();Stringsql=updateproductsetname=?,descr=?,normalprice=?,memberprice=?,pdate=7,categoryid=?whereid=,+p.getld();pstmt=DB.getPstmt(conn,sql);pstmt.setString(I,p.getName();pstmt.setString(2.p.getDescr();pstmt.setDouble(3,p.getNormalPrice();pstmt.setDouble(4,p.getMemberPrice();ps
18、tmt.setTimestamp(5,p.getPdate();pstmt.setlnt(6,p.getCategoryId();pstmt.executeUpdate();returntrue;catch(SQLExceptione)e.printStackTrace();returnfalse;)finallyDBdQse(PStmt);DB.c/oSe(COnn);商品搜索商品的搜索分为简朴搜索和复杂搜索,简朴搜索通过关键字搜索,复杂搜索可以通过多种商品时多种信息进行搜索。商品搜索界面如图3.5所示。用用恢 。9lWiV g raw产品多雄 iW产品解 Ol图3.5商品搜索界面.1简朴搜
19、索搜索的搜索框中输入关键字“笔”之后,点击提交按钮。简朴搜索界面如图3.6所示。S用r型用户列表 。二别得 g K a* 那- rM*产品季加产翱蝶 。订雷瑁 g娘W分析 a ”谡Aa5价脩fU1.10.82014-06-26 12:20:16ts6ra餐侪用1.21.0201406.19 19:20:14产S第停方式:WH - was -性刷-iam - 吃曲CAIO mM图3.6简朴搜索界面接受表单数据:%Stringkeyword=newString(request.getParameter(keyword).getBytes(8859_l),GBK);finalintPAGE_SIZE
20、=2;每页显示多少条记录finalintPAGES_PERJnME=IO;/每次显示多少个页码链接intpageNo=1;StringStrPageNo=request.getParameter(,pageNo);if(StrPageNo!=null&!strPageNo.trim().equals()try(pageNo=IntegeEparseInt(StrPageNo);catch(NumberFormatExceptione)pageNo=1;if(pageNo%1.istproducts=newArrayList();inttotalRecords=ProductManager.ge
21、tInstance().getProducts(products,pageNo,PAGE_SIZE,keyword);inttotalPages=(totalRecords+PAGE_SIZE-1)/PAGE_SIZE;if(pageNototalPages)pageNo=totalPages;%实现搜索功能H勺getProducls措施”:publicintgetProducts(Listproducts,intpageNo,intpageSize,StringqueryStr)inttotalRecords=-1;Connectionconn=DB.getConn()Statementst
22、mt=DB.ge/S用什(Corm);Stringsql“,sql=selectp.idproductid,p.namepname,p.descrpdescr,p.normalprice,+p.memberprice,p.pdate,.categoryid,+,c.idcategoryid,c.namecname,c.descrcdescr,c.pid,c.grade+fromproductpjoincategorycon(p.categoryid=c.id)+queryStrorderbyp.pdatedesc;sql+=limit+(pageNo-1)*pageSize+,+pageSiz
23、e;ResuItSetrs=DB.executeQuery(stsql);StatementStmtCount=DB.getStmt(conn)ResultSetrsCount=DB.exec/eQefy(stmtCount,selectcount(*)fromproduct+queryStr.replaceAlICpW.1,|,);try(rsCount.next();totalRecords=rsCount.getInt(l);if(rs=null)returnO;while(rs.next()Productp=null;p=newProduct();p.setld(rs.getlnt(,
24、productid);p.setName(rs.getString(pname);p.setDescr(rs.getString(pdescr);p.setNormalPrice(rs.getDouble(,normalprice);p.setMemberPrice(rs.getDouble(memberprice,);p.setPdate(rs.getTimestamp(pdate);p-setCategoryldCrs.getlntCcategoryid1);products.add(p);)catch(SQLExceptione)e.printStackTrace();)finally(
25、DB.cave(rsCount);DB.cOSe(StmtCoUnt);DB.cose(stmt);DB.cose(rs);DBdOSe(COrm);)returntotalRecords;.2复杂搜索复杂搜索0会员价中输入价格区间为10002023时,点击提交按钮进行搜索。复杂搜索界面如图3.7所示。工山511I图3.7复杂搜索界面实现搜索功能的措施山:publicintfind(Listproducts,intpageNo,intpageSize,ProductSearchFonnBeanbean)StringqueryStr=where1=1;if(bean.getCategoryId(
26、)!=-1)queryStr+=andp.categoryid=+bean.getCategoryId();if(bean.getName()!=null&!bean.getName().trim().equals(H)queryStr+=andp.namelike%+bean.geName()+,%,;if(bean.getLowNormalPrice()!=0.0)queryStr+=andp.normalprice=+bean.getLowNormalPrice();if(bean.getHighNormalPrice()!=0.0)queryStr+=,andp.normalprice
27、=,+bean.getLowMemberPrice();)if(bean.getHighMemberPrice()I=0.0)(queryStr+=andp.memberprice=+bean.getStartDate()+”00:00:00;)if(bean.getEndDate()!=null&!bean.getEndDate().trim().equals(,H)queryStr+=andp.pdate=,+bean.getEndDate()+”00:00:00,;)returndao.getProducts(products,pageNo,pageSize,queryStr);)pub
28、licintgetProducts(Listproducts,intpageNo,intpageSize,StringqueryStr)inttotalRecords=-1;Connectionconn=DB.getConn()Statementstmt=DB.getStmt(conn);Stringsql=,;sql=selectp.idproductid,p.namepname,p.descrpdescr,p.normalprice,+p.memberprice,p.pdate,.categoryid,+,c.idcategoryid,c.namecname,c.descrcdescr,c
29、.pid,c.grade,+fromproductpjoincategorycon(p.categoryid=c.id)+queryStr+orderbyp.pdatedesc;sql+=,limit+(pageNo-1)*pageSize,+pageSize;ResultSetrs=DB.executeQuery(stmt,sql);StatementStmtCount=DB.getStnt(conn)ResultSetrsCount=DB.exeeQey(stmtCount,selectcount(*)fromproduct+queryStr.replaceAll(p.,);try(rsC
30、ount.next();totalRecords=rsCount.getInt(l);if(rs=null)returnO;while(rs.next()Productp=null;p=newProduct();p.setld(rs.getlnt(productid);p.setName(rs.getString(pname);p.setDescr(rs.getString(,pdescr);p.setNormalPrice(rs.getDouble(,normaIprice);p.setMemberPrice(rs.getDouble(,memberprice);p.setPdate(rs.
31、getTimestamp(pdate);p.setCategoryId(rs.getInt(categoryid);products.add(p);)catch(SQLExceptione)e.printStackTrace();finallyDB.cose(rsCount);DBdose(StmtCount);DB.cose(stmt);DB.cose(rs);DB.cose(conn);returntotalRecords;参照文献1贾素玲,王强.JSP应用开发技术.北京.清华大学出版社.20232李楠.JSP工程应用与项目实践.北京.机械工业出版社.2023李俊明.MySQL数据库开发完全手册.北京.人民邮电出版社.20234孙卫琴.Tomcat与JavaWeb开发技术详解(第2版).北京.电子工业出版社.20235张志锋,朱颖东.JSPWeb技术整合应用与项目实践.北京.清华大学出版社.2023