版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
⑪灣心《Web开发技术》
课程设计报告题目:网上商城系统目录任务与要求……………………3需求分析………………………3需求规定………………………3模拟需求图……………………4系统总体设计…………………5设计目标及完成功能……………………5系统结构设计……………6系统详细设计…………………8普通用户界面的详细设计……………………8管理员界面的详细设计……………………12数据库表的详细设计………14代码详细设计………………16测试和维护………………………36总结………………39参考文献…………401.任务与要求需求分析互联网的快速发展为人们的购物提供了多种方式,网上购物就是目前主流的网上购物方式之一。网上商城将现实中的购物行为虚拟到网上进行,人们可以足不出户,即可获得自己需要的商品。于是,我们为提高自己在JSP以及相关一系列中的编程能力,通过这几个星期的努力,来实现网上商城购物的一系列功能,了解用户的需要和管理员的功能来实现对购物系统的管理功能。明确所要开发软件的功能、性能与界面,使得软件人员更能清楚的了解用户的需求,并在一定基础上进一步提出概要说明书让使用者能更容易应用我们的系统。需求规定管理主要功能权限普通用户管理模块登陆管理员,普通用户(只能注册普通用户,管理员只有一个)管理员,普通用户修改资料(包括基本资料及密码)管理员,普通用户管理员用户管理查看用户信息管理员
模块删除用户管理员商品管理模块查看商品管理员,普通用户添加商品管理员修改商品管理员删除商品管理员数据库管理模块添加类型管理员删除类型管理员留言管理模块查看留言用户添加留言用户购物车模块查看购物车用户加入购物车用户删除购物车商品用户模拟需求图登陆界面1登陆界面1、判断用户权限2、用户管理3、注册新用户管理员界面1、审核用户2管理员界面1、审核用户2、修改用户资料和商品信^商品管理界面^1、上传商品2、删除商品3、查看商品l丿1、添加类型2、删除类型3、修改类型2系统总体设计2.1系统设计目标及完成功能网上购物商城是基于B/S模式的电子商务网站,用于满足不同人群的购物需求,本课程设计主要从普通用户界面和管理员界面的角度出发,以高效管理、满足消费者需求为原则,做出了以下的系统设计目标:•统一友好的操作界面,具有良好的用户体验。•商品信息完备,让用户可以更加清楚商品的性能。用户可通过购物车一次购买多件商品。实现支付功能,用户选择商品后可在线提交订单。提供简单的安全模式,用户必须先登录,才允许购买物品用户可以查看自己订单信息。设计网站后台,管理网站的各项基本数据。2.2系统结构设计系统流程图
系统结构网上商城系统中有两类用户,分别是普通用户和管理员,他们分别对应着普通用户模板和管理员模板。普通应户模板是网上商城系统的主体模板,它具有以下功能:•用户注册。•用户登录。•查看商品信息。•发表留言。搜索商品信息。将商品加入购物车。对个人购物车进行管理。•修改个人资料。管理员模板负责网上商城系统的管理和维护工作,它具有以下功能管理商品类别信息(包括修改和删除商品类别信息)。添加商品类别信息。管理商品信息(包括修改和删除商品类别信息)。添加商品信息。管理普通用户。管理订单信息。修改个人资料。3系统详细设计3・1普通用户界面的详细设计3.1.1查看商品信息普通用户主界面(Usermain.jsp)为主页面,它是一个框架页,它将整个界面分为上下两个框架,这两个框架分别是topFrame和usermainFrame他们所对应默认的页面分别是普通用户功能选择界面topuser.jsp和商品信息列表界面warelist.jsp效果图如图所示:Topuser.jsp效果图普通用户功能选择界面(topuser.jsp)提供了普通用户的所有功能连接,所显示欢迎信息是通过获取保存在session中的用户名来实现的。warelist.jsp效果图3.1.2购物车管理,包括查看购物车、添加商品到购物车、从购物车中删除商品查看购物车信息:为用户提供管理自己购物车中信息的功能,这个模块中用户同时可以删除购物欢迎&餉光临两上商域总恋E页.当甫果l页首页丨上一贡Ir-mInr产H广酬生产Bn丽伺till商晶戈别2科glrtt学亍炉第H«1Lmew.fresna“广却4FrFT:FHN2:HHimzmaw^TftfiisitH广哪主rnpH別问・JL信息。SW站沁ME.5护心宿痢'T-kKiJhflrtnf>*B..-utin欢迎&聞光临网上商城添加商品到购物车:在商品信息列表界面中提供了将某个商品添加到购物车的链接,包括填写购物信息界面和添加成功界面。完成添加后将跳转到购物车信息管理界面。e.3e.3N#*1™UPMt«e.3e.3N#*1™UPMt«欢迎EUiH光瞞阿匕商城从购物车中删除商品:点击删除的图标,用户可以将某商品从购物车中删除。3.1.3用户资料管理用户可自行修改用户的密码,电话号码,邮箱。3.1.4留言界面的详细设计用户可就商品进行评论,可以添加留言以及表情。><■-旦A厶■刊©©◎©©飞0提袞熾'言addmsg.jsp效果图3.2管理员界面的详细设计3.2.1、管理员主界面管理员界面(Adminmain.jsp)与普通用户主界面(Usermain.jsp)—样,它也是一个包含页,它将整个界面分为上下两个页面,这两个页面分别是topFrame和usermainFrame他们所对应默认的页面分别是管理员功能选择界面topadmin.jsp和商品信息列表界面adminlist.jsp效果图如图所示:
Topadmin.jsp效果图管理员功能选择界面(topuser.jsp)提供了普通用户的所有功能连接,所显示欢迎信息是通过获取保存在session中的用户名来实现的。欢迎admi11光临网上商城商昌窑称李宁运引解产卸广州孚宁向惘轮可
mill軻品讓别S商昌窑称李宁运引解产卸广州孚宁向惘轮可
mill軻品讓别S商品卅:對淞碗.严地:厂卅生产厂率竽宁丧阳赴问程土时目rraLL崗品类则'I漣齡称羊宁凤我产地:广州生产一军孚宁靑阻仝可聲支时目••新品类那:3帝旨曲李宁羽绒肪FH!!-广州生产厂乐孚宁岂限扯词握戈时目null創画[忌尹页,当前弟I页苗页I上一丙I卫二更I.获忌尹页,当前弟I页苗页I上一丙I卫二更I.获Adminlist.jsp效果图商品信息管理界面显示了网上商城系统中的左右商品信息,在这个页面上采用的方法来显示商品信息,它还提供了添加、修改和删除商品信息的借口。••Words数据库保存留言信息欢迎罰min光临网上裔城囱晶申,:||WSKad.illti>tf|fcMI:制城w£a£|?■mStM9vrriNsri.pjfl广+HTritS^Mnd欢迎罰min光临网上裔城囱晶申,:||WSKad.illti>tf|fcMI:制城w£a£|?■mStM9vrriNsri.pjfl广+HTritS^Mnd:*r+a*mr.Min亍滞M-za、HMW声hjrmH,严厂苹TTRMfcijH^vrp4MJ]uwtrtnwanfc户Hl广州虫尸厂宰flf.hH・~J必毎祜'Hl#£刚戈盂R3MF-VBwrt也亦烧1冋KHX4.®mzhjF:)m「AdflM4.jip3.2.2.管理用户界面,包含查看用户信息功能和删除用户信息功能欢jgudjtiin光临网上商城323.订单管理界面,可以实现查看用户添加的订单信息功能欢迎詞min处临网上商城3.3数据库表的详细设计网上商城系统中所创建的数据库的名称是shop,这个数据库包括以下5个数据表:Goods数据库保存订单信息Users数据库保存所有用户信息Wares数据库保存商品信息
3.3.1Goods数据库/USER-VAIO.shop-dtrc^ocdsGoodsIDGoadsTlameBuyNumberUserNameWarelDCreateTime►2訓t■曲?7节肚冲厂力NULLNULL1aam1aaaf^ULLNHL02Q却年6月W日’0El迺宙區KE翻AtflMiZ3.3.2Users数据库USERVAIO^hopdbo.usersUserIDUserNenieUserPass^ordRealUanieTeJeplcreEmaiCreateHTeRoleEladrrina±ninadnninAMIAm13ddd2342W/OiD■Abbbbbbbbb3335322C62C*ii7Eg2ginoflq...□6mmmrnm隅啊临333233@赵二Dg师力如wwn1ffef562辺AWD11kkkkkkkkkMAI1178929100@q...AL4iD12hhhH-bhhh123-fE67890117B9291D0@q...AWD13lyzw阪J2.34567S9O0721WZlflqq他fD伽丄/iMzNLS.LAM/AmAWMJS13.3.3Wares数据库USER-VAIO-dba.wart▼X|WsreJDWareNameCcnipanyAddressPricePldJrl5orUDIfltfOi爭宁軽蓝包氏-李宁京E驱词广哪閃沁;12學宁男子红邑F也孚宁討隅祠广呷60F323孚宁习漏服李宁有E眺社广州3C06Wg滩邑q李宁札衣李宁自陨处S!1“洲2Z0AW4米色5学宁雄瞬苜李宁总限处刁广州45iFOi□藍色9孚亍远功^求宁育B魁同广州299D3灰邑宰AL£2FiWALE1A«£FiWALE!AUZ3.3.4Words数据库USER-VAid.fhap-dbc.iwrdi-X7/DTdElDContentU9ETKJGreatEimeWarelD►潮35At乱3・4代码详细设计3.4.1、数据库连接packagedbconn;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassDB{privatefinalStringDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";privatefinalStringURL="jdbc:microsoft:sqlserver://localhost:1433;databasename=dbj_blog";privatefinalStringUSERNAME="sa";privatefinalStringPWD="sa";*连接数据库驱动,驱动名称及URL.*从Statement继承,用于提供可以查询信息一起预编译的语句.*ResultSet类可用来接受执行SQL查询语句后得到的记录集.*/privateConnectionconn=null;privatePreparedStatementpstat=null;privateResultSetrs=null;publicDB(){}/****@returnConnection返回生成的连接对象*/publicConnectiongetConn(){try{Class.forName(DRIVER);conn=DriverManager.getConnection(URL,USERNAME,PWD);}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblockSystem.out.println("注册驱动失败"+e.toString());}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("数据库连接失败"+e.toString());}returnconn;}/***@paramsql待查询的sql语句@return返回查询结果记录集*/publicResultSetexecuteQuery(Stringsql){try{pstat=conn.prepareStatement(sql);rs=pstat.executeQuery();returnrs;}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("数据库操作失败'");returnrs;}@paramsql待操作的sql语句@return返回整型值*/publicintexecuteUpdate(Stringsql){intflag=0;try{pstat=conn.prepareStatement(sql);flag=pstat.executeUpdate();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnflag;}/**对数据库关闭的操作*/publicvoidclose(){try{if(rs!=null){rs.close();if(pstat!=null){pstat.close();}if(conn!=null){conn.close();}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}3.4.2、乱码的处理问题publicclassEncodeFilterimplementsFilter{Stringcode="GBK";publicvoiddestroy(){}publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{//TODOAuto-generatedmethodstubHttpServletRequestrequest=(HttpServletRequest)arg0;request.setCharacterEncoding(code);arg2.doFilter(request,arg1);response.sendRedirect(response.sendRedirect("index.jsp");publicvoidinit(FilterConfigarg0)throwsServletException{//TODOAuto-generatedmethodstub}}3.4.3、获取系统时间packageutil;importjava.util.Date;publicclassMyDate{Dated=null;publicMyDate(){d=newDate();}publicStringgetDate(){return(d.getYear()+1900)+"年"+(d.getMonth()+1)+,'月"+d.getDate()+"日"+d.getHours()+"时";}3.4.4、图片上传<%Stringrealpath=request.getRealPath("");StringuploadPath=realpath+"\\upload\\";//上传文件的目录StringtempPath="D:\\temp\\";//临时文件目录Stringfilename="";Datedd=newDate();filename="upload"+dd.getTime();booleanisMultipart=FileUpload.isMultipartContent(request);if(!isMultipart){}try{DiskFileItemFactoryfactory=newDiskFileItemFactory();factory.setSizeThreshold(1024000);Filetemp=newFile(tempPath);if(!temp.exists()){temp.mkdir();}factory.setRepository(temp);FileUploadfileupload=newFileUpload(factory);fileupload.setSizeMax(100*1024*1024);Listitems=fileuploAd.parseRequest(request);Iterator辻r=items.iterator();while(itr.hasNext()){FileItemfileitem=(FileItem)itr.next();if(!fileitem.isFormField()){Stringname=fileitem.getName();
name=name.substring(name.lastIndexOf("\\")+1,name.length());longsize=fileitem.getSize();if((name==null||name.equals(""))&&size==0)continue;name=name.substring(name.lastIndexOf'.')+1,name.length());Fileupload=newFile(uploadPath);if(!upload.exists()){upload.mkdir();}fileitem.write(newFile(uploadPath+filename+"."+name));}else{}}catch(Exceptione){System.out.println("上传文件失败!"+e.toString());}response.sendRedirect("waredetail.jsp");%><%Stringrealpath=request.getRealPath("");Filefiles=newFile(realpath+"\\upload");Stringtest[];test=files.list();for(intk=0;k<test.length;k++){System.out.println(test[k]);%><imgalt=""src="upload\<%=test[k]%>"width="200"height="200"><%}%>3.4.5商品数据表操作类例、GoodsCtrl,其他类与之相似,省略不写packageedu.hbcf.shop.ctrl;sg.setBuyNumber(rs.getInt("BuyNumber"));//sg.setBuyNumber(rs.getInt("BuyNumber"));//将对应记录字段importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importedu.hbcf.shop.conn.DBConn;importedu.hbcf.shop.bean.ShopGoods;/**MsgCtr1类实现留言版模块的增、删、改、查@version1.0@authorcy**/pub1icc1assGoodsCtr1{DBConndb=nu11;Connectionconn=nu11;Resu1tSetrs=nu11;PreparedStatementpstat=nu11;*此方法实现查询所有留言信息,并返回查询结果*@returnList(ShopGoods类的结果记录集合)*/publicList<ShopGoods>queryAll(){List<ShopGoods>list=newArrayList<ShopGoods>();//定理list泛型集合,并实例化db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="select*fromgoodsorderbyGoodsIDDESC";//定义查询所有留言的sql语句try{pstat=conn.prepareStatement(sql);//生成预处理执行对象rs=pstat.executeQuery();//执行sql语句,并将结果保存在结果记录集中while(rs.next()){//游标后移一条记录,如果记录存在ShopGoodssg=newShopGoods();//实例化留言对象sg.setGoodsID(rs.getInt("GoodsID"));//将对应记录字段GoodsID保存在商品留言对象的GoodsID属性中sg.setGoodsName(rs.getString("GoodsName"));//将对应记录字段GoodsName保存在商品留言对象的GoodsName属性中BuyNumber值保存在商品留言对象的BuyNumber属性中sg.setUserName(rs.getString("UserName"));//将对应记录字段UserName值保存在商品留言对象的UserName属性中sg.setWareID(rs.getInt("WareID"));//将对应记录字段WarelD值保存在商品留言对象的WareID属性中sg.setCreateTime(rs.getString("CreateTime"));//将对应记录字段CreateTime值保存在商品留言对象的CreateTime属性中list.add(sg);//添加对象sg到集合类中}}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("查询留言版,数据库操作失败!"+e.toString());}finally{this.close();//连接通道关闭}returnlist;//返回集合类对象*此方法实现按用户查询所有留言信息,并返回查询结果*@returnList(ShopGoods类的结果记录集合)*/publicList<ShopGoods>queryAllByUser(StringUserName){List<ShopGoods>list=newArrayList<ShopGoods>();//定理list泛型集合,并实例化db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="select*fromgoodswhereUserName=?orderbyGoodsIDDESC";//定义查询所有留言的sql语句try{pstat=conn.prepareStatement(sql);//生成预处理执行对象pstat.setString(1,UserName);rs=pstat.executeQuery();//执行sql语句,并将结果保存在结果记录集中while(rs.next()){//游标后移一条记录,如果记录存在ShopGoodssg=newShopGoods();//实例化留言对象sg.setGoodsID(rs.getInt("GoodsID"));//将对应记录字段GoodsID值保存在商品留言对象的GoodsID属性中sg.setGoodsName(rs.getString("GoodsName"));//将对应记录字段GoodsName值保存在商品留言对象的GoodsName属性中BuyNumber值保存在商品留言对象的BuyNumber属性中sg.setUserName(rs.getString("UserName"));//将对应记录字段UserName值保存在商品留言对象的UserName属性中sg.setWareID(rs.getInt("WareID"));//将对应记录字段WarelD值保存在商品留言对象的WareID属性中sg.setCreateTime(rs.getString("CreateTime"));//将对应记录字段CreateTime值保存在商品留言对象的CreateTime属性中list.add(sg);//添加对象sg到集合类中}}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("查询留言版,数据库操作失败!"+e.toString());}finally{this.close();//连接通道关闭}returnlist;//返回集合类对象*此方法实现向数据库添加一条留言信息*@returnint添加留言成功返回1,否则返回0*/publicintaddGoods(ShopGoodssg){intflag=0;db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="insertintogoodsvalues(?,?,?,?,?)";//定义添加记录的sql语句try{pstat=conn.prepareStatement(sql);//生成预处理执行对象pstat.setString(l,sg.getGoodsName());//设置对象的GoodsName参数pstat.setlnt(2,sg.getBuyNumber());//设置对象的BuyNumber参数pstat.setString(3,sg.getUserName());//设置队想的UserName参数pstat.setlnt(4,sg.getWareID());//设置对象的WarelD参数pstat.setString(5,sg.getCreateTime());//设置对象的CreateTime参数flag=pstat.executeUpdate();//执行sql语句}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("添加留言失败"+e.toString());}finally{this.close();//关闭连接通道}returnflag;//返回操作状态}/***此方法实现根据留言id查询一条留言信息@paramGoodsID整形值,接受一条记录的id@returnShopGoods将查询的一条留言记录存放到ShopGoods类实例中返回*/publicShopGoodsquerryById(intGoodsID){ShopGoodssg=null;db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="select*fromgoodswhereGoodsID=?";//定义查询一条留言的sql语句try{pstat=conn.prepareStatement(sql);//生成预处理执行对象pstat.setlnt(l,GoodsID);//设置pstat对象的待定参数msgidrs=pstat.executeQuery();//执行查询if(rs.next()){//游标后移一条记录,如果记录存在sg=newShopGoods();//实例化ShopGoods对象//sg.setGoodsID(rs.getInt("GoodsID"));//将对应记录字段GoodsID值保存在留言对象的GoodsID属性中sg.setGoodsName(rs.getString("GoodsName"));//将对应记录字段GoodsName值保存在留言对象的GoodsName属性中sg.setBuyNumber(rs.getInt("BuyNumber"));//将对应记录字段BuyNumber值保存在留言对象的BuyNumber属性中sg.setUserName(rs.getString("UserName"));//将对应记录字段UserName值保存在留言对象的UserName属性中sg.setWareID(rs.getInt("WareID"));//将对应记录字段WareID值保存在留言对象的WareID属性中sg.setCreateTime(rs.getString("CreateTime"));//将对应记录字段msgid值保存在留言对象的CreateTime属性中}}catch(SQLExceptione){//TODOAuto-generatedcatchblockSystem.out.println("依据id查询一条留言失败"+e.toString());//输出错误信息}finally{this.close();//关闭连接通道}returnsg;//返回sg对象}/***@paramsg接收ShopGoods类的实例对象@returnint值,表示操作成功为非零值,操作失败为0*/publicintupdateGoods(ShopGoodssg){intflag=0;db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="updategoodssetBuyNumber=?,UserName=?,WareID=?,CreateTime=?whereGoodsID=?";try{pstat=conn.prepareStatement(sql);//生成预处理执行对象pstat.setlnt(l,sg.getGoodsID());//设置pstat对象的GoodsID参数pstat.setlnt(2,sg.getBuyNumber());//设置对象的BuyNumber参数pstat.setString(3,sg.getUserName());//设置队想的UserName参数pstat.setlnt(4,sg.getWareID());//设置对象的WareID参数pstat.setString(5,sg.getCreateTime());//设置对象的CreateTime参数flag=pstat.executeUpdate();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{this.close();//关闭连接}returnflag;//返回flag}/***实现一条留言记录的删除@paramGoodsID整形值,接受一条记录的id@returnint值,表示操作成功为非零值,操作失败为0*/publicintdeleteGoodsbyId(intGoodsID){intflag=0;db=newDBConn();//生成相应的类对象conn=db.getConn();//加载并注册驱动,生成连接对象返回Stringsql="deletefromgoodswhereGoodsID=?";try{pstat=conn.prepareStatement(sql);//生成预处理执行对象pstat.setlnt(l,GoodsID);//设置待定参数的值flag=pstat.executeUpdate();//执行sql语句}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{this.close();//关闭连接通道}returnflag;//返回状态标志}/***此方法实现关闭操作留言版产生的连接对象、预处理执行对象以及结果记录集*/publicvoidclose(){try{if(rs!=null){//如果结果记录集rs不为空rs.close();//关闭rs}if(pstat!=null){//如果预处理执行对象pstat不为空pstat.close();//关闭pstat}if(conn!=null){//如果连接对象conn不为空conn.close();//关闭conn}}catch(SQLExceptione){System.out.println("操作留言版数据库关闭异常!"+e.toString());}}}3.4.6客户端校验<scriptlanguage="javascript">functioncheck(){if(document.myform.username.value=="")//判断用户名为空{alert("用户名不能为空");returnfalse;ifif(document.myform.password.value=="”)//判断密码为空ifif(document.myform.password.value=="”)//判断密码为空{alert("密码不能为空");returnfalse;}varpassword2=request.getParameter("password");if(password2.value!=password.value){alert("输入的密码不一致!");//判断密码一致性returnfalse;}}</script>3.4.7新技术应用——HTML5表单、按钮美化<styletype="text/css>.content{font-family:宋体;font-size:12px;line-height:18py}a:link{font-size:12px;color:red}a:visited{font-size:12px;color:blue}a:hover{font-size:12px;color:pin}a:active{font-size:12px;color:purpe}input[type="submit"]:hover{background:-webkit-gradient(linear,lefttop,left24,from(#FF9800),color-stop(0%,#FF6900),to(#FF980;))}.form{margin-top:100p;margin-bottom:100p;margin-left:400p;margin-right:400p;padding:26px24px46p;font-weight:norma;background:whit;border:1pxsolid#E5E5E;-webkit-box-shadow:rgba(200,200,200,0.7)04px10px-1;xbox-shadow:rgba(200,200,200,0.7)04px10px-1;x}.button-primary{font-size:13px;line-height:16px;padding:3px10p;border-color:#298CB;font-weight:bold;color:whit;background:#21759Burl(../images/button-grad.png)repeat-xscrollleftto;text-shadow:rgba(0,0,0,0.3)0-1px;-webkit-border-radius:11px;border-radius:11px;cursor:pointe;}input{-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;}</style>表格美化<styletype="text/css>#nav{margin:0;padding:7px6px;line-height:100%;border-radius:2em;-webkit-border-radius:2em;-wekit-box-shadow:01px3pxrgba(0,0,0,;)-moz-box-shadow:01px3pxrgba(0,0,0,;)background:#8b8b8;background:-moz-linear-gradient(top,#a9a9a9,#7a7a;a)border:solid1px#6d6d6;}</style〉3.4.8分页//分页基本信息Stringcpage=request.getParameter("currentpage");intrecordcounts=0;//当前所有记录个数intcurrentpage=1;if(cpage!=null){currentpage=Integer.parseInt(cpage);}intpages=1;intpage_recorde_count=4;if(msglist!=null){recordcounts=msglist.size();recordcounts=msglist.size();//计算留言的个数recordcounts=msglist.size();recordcounts=msglist.size();//计算留言的个数pages=(recordcounts%page_recorde_count==0)?(recordcounts/page_recorde_count):(recordcounts/page_recorde_count)+1;inti=(current1)*page_recorde_count;intcount=0;while(count<page_recorde_count){if(i<recordcounts){msg=msglist.get(i);//得到下表索引表示的对象count++;i++;}else{break;}}}%>总共<%=pages%>页,当前第<%=currentpage%>页<%if(currentpage==1){%>首页<%}else{%><ahref="waredetail.jsp?currentpage=>首页</a><%}%>|<%if(current1>=1){%><ahref="waredetail.jsp?currentpage<%=current1%>">上一页</a><%}else{%>上一页<%}%>|<%if(currentpage+1<=pages){%><ahref="waredetail.jsp?currentpage<%=currentpage+1%>">下一页</a><%}else{%>下一页<%}%>|<%if(currentpage==pages){%>尾页<%}else{%><ahref="waredetail.jsp?currentpage<%=pages%>">尾页</a><%}%>4、测试测试是为了发现程序中的错误而执行程序的过程。好的测试方案是尽可能发现尚未发现的错误的测试方案。本节分别介绍各个功能的测试用例及其预期结果。管理员用户信息测试用例:制览商品時息资料■管谭胸村车管理制览商品時息资料■管谭胸村车管理登录成功驗驗3莉*炸驗驗3莉*炸欢迎admin光临网上商城欢迎£L曲光临网匕商城欢迎£L曲光临网匕商城StiEr心StiEr心B£«sna:诵旖:代tSlaEfi&xa□雋品•呂闻$T3fi±JbW尹地广M生户厂扳乎宁测限必司夷文时鬥2】@1圍裔品土砂E馬忌启怖車〒呑球Hi户地广州主尹厂饭手十科曝必m盘立时问31裔县土P4間足君怖•审〒FL衣f地riii主戸厂鬣:fi克时问HO1fyiKk/罔是茨别3曲時歸字宁】誠■卢地•广《1王产厂券手十*阳ilR验立时冃xJl®®®欢迎耳翻光临网上商城期55欢迎耳翻光临网上商城期55两品恒息悭帑药品佰息V■■■•■^:l?ir-r:-■I已成功将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026住院医师规培-山东-山东住院医师规培(急诊科)历年参考题库含答案详解
- 2026住院医师规培-天津-天津住院医师规培(医学检验科)历年参考题库含答案详解
- 2026住院医师规培-内蒙古-内蒙古住院医师规培(耳鼻咽喉科)历年参考题库含答案详解
- 2026事业单位笔试-青海-青海基础医学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-陕西-陕西儿科学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-福建-福建神经内科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-浙江-浙江超声医学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-河北-河北心胸外科(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-江西-江西中西医临床医学(医疗招聘)历年参考题库含答案详解
- 2026事业单位笔试-广东-广东医学基础知识(医疗招聘)历年参考题库含答案详解
- 2026年事业单位招聘会计专业考试真题及答案解析
- 2026年四川省普通高中信息技术学业水平合格性考试试卷及答案
- 2025国家电网中级职称考试(政工专业)复习题及答案
- 2026年版低分子肝素皮下注射操作规范
- 2025年燃气入户安全检查管理规范与实操培训
- 法治中国建设规划2026 ~2030年编制指南与要点
- 公安决策学自考重点资料汇编
- 2026年上海市教师职称考试(德育二)综合能力测试题及答案解析
- 2026年永州职业技术学院单招职业技能考试题库附答案
- 2025-2026学年人教版二年级体育与健康全一册教案设计
- 人工智能算力中心设计与建设方案
评论
0/150
提交评论