《基于JAVA的宠物用品网站的开发与设计》15000字_第1页
《基于JAVA的宠物用品网站的开发与设计》15000字_第2页
《基于JAVA的宠物用品网站的开发与设计》15000字_第3页
《基于JAVA的宠物用品网站的开发与设计》15000字_第4页
《基于JAVA的宠物用品网站的开发与设计》15000字_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

基于JAVA的宠物用品网站的开发与设计摘要宠物市场有着很大的前景,但是该行业缺乏有效的监管和规范。因此宠物用品网站的开发既可以使用户的购物方式更加便捷,又可以提高企业的工作效益,降低企业的工作成本,还可以提高宠物行业的市场秩序,增加该行业的透明度。本次“宠物用品网站的开发与设计”分为用户端和管理员端。前者包含用户的注册登录,对商品的浏览,购买,退订,加入购物车,以及对个人信息的修改等功能。后者包含对对订单的管理,对用户信息的管理和对商品的管理。本次“宠物用品的开发与设计”为了方便前后端的交互采取的核心技术是JSP和Servlet,所使用的开发语言是Java,开发环境是MyEclipse,以及由SQLServer2008作为后台数据库进行网站相关信息的存储。关键词:宠物用品;电商网站;JSP;Servlet目录1.绪论 [11]。ItemCF算法计算宠物用品的相似度时第一步要建立每个用户的喜欢的宠物用品的列表,然后根据该列表建立当前矩阵,再将所有用户的当前矩阵累加得到共现矩阵,根据共现矩阵实现宠物用品的推荐。图5.3推荐窗口宠物用品网站的推荐功能就是根据以上公式实现的,其基本思路就是针对当前用户所喜欢的任何一个宠物用品,推荐所有用户喜欢了当前用户喜欢的这个宠物用品又喜欢了其他的宠物的宠物用品中相似度最高的几个宠物用品,并且这些宠物用品是当前用户以前没有接触过的。如果出现推荐数量不足或者刚注册的新用户由于历史数据集不足够支撑推荐算法的计算,采用TopN推荐,将最热门的几个宠物用品补充到推荐列表中,进而解决了冷启动的问题。publicclassItemSimilarity{ publicclassItemSimilarity{ publicstaticvoidmain(String[]args){//测试小DemoSystem.out.println("请输入用户希望推荐的用户id:");Scannerinput=newScanner(System.in);intuserid=input.nextInt();ArrayList<Petsupplies>v=recommend(userid);System.out.println("正在生成针对用户id为"+userid+"的推荐...");for(inti=0;i<v.size();i++)System.out.println("第"+(i+1)+"个推荐:题目:"+v.get(i).getPSId()+"喜欢个数"+v.get(i).getPSlike()+"");} publicstaticArrayList<Petsupplies>recommend(intuserid){ UserUtiluserutil=newUserUtil(); PSUtilpsutil=newPSUtil(); LikeUtillikeutil=LikeUtillikeutil=newLikeUtil(); ArrayList<UserLike>likeLists;//其他用户喜欢的论文列表 ArrayList<User>userlist=userutil.getallUser(); //所有用户列表 ArrayList<Petsupplies>pslist=psutil.getallPS();//所有论文列表 int[][]curMatrix=newint[pslist.size()+5][pslist.size()+5];//当前矩阵 int[][]comMatrix=newint[pslist.size()+5][pslist.size()+5];//共现矩阵 int[]N=newint[pslist.size()+5];//喜欢每个物品的人数 for(Useruser:userlist){ if(user.getUserId()==userid)continue;//当前用户则跳过 likeLists=likeutil.findLikesByUser(userid); //当前用户的喜欢列表 for(inti=0;i<pslist.size();i++) for(intj=0;j<pslist.size();j++) curMatrix[i][j]=0;//清空矩阵 for(inti=0;i<likeLists.size();i++){ intpsid1=likeLists.get(i).getPSId(); ++N[psid1]; for(intj=i+1;j<likeLists.size();j++){ intpsid2=likeLists.get(j).getPSId(); ++curMatrix[psid1][psid2]; ++curMatrix[psid2][psid1];//两两加一 } } //累加所有矩阵,得到共现矩阵 for(inti=0;i<pslist.size();i++){ for(intj=0;j<pslist.size();j++){ intpsid1=pslist.get(i).getPSId(),psid2=pslist.get(j).getPSId(); comMatrix[psid1][psid2]+=curMatrix[psid1][psid2]; comMatrix[psid1][psid2]+=curMatrix[psid1][psid2]; } } }TreeSet<Petsupplies>preList=TreeSet<Petsupplies>preList=newTreeSet<Petsupplies>(newComparator<Petsupplies>(){ publicintcompare(Petsupplieso1,Petsupplieso2){ if(o1.getW()!=o2.getW()) return(int)(o1.getW()-o2.getW())*100; else returno1.getPSlike()-o2.getPSlike(); }});//预处理的列表 likeLists=likeutil.findLikesByUser(userid);//当前用户喜欢的论文列表 boolean[]used=newboolean[pslist.size()+5];//判重数组 for(UserLikeuserlike:likeLists){ intNij=0;//既喜欢i又喜欢j的人数 doubleWij;//相似度 Petsuppliestmp;//当前的论文 inti=userlike.getPSId(); for(Petsuppliesps:pslist){ if(userlike.getPSId()==ps.getPSId())continue; intj=ps.getPSId();//对宠物表中宠物用品的ID遍历 Nij=comMatrix[i][j];//共现矩阵中既喜欢i又喜欢j的个数 Wij=(double)Nij/Math.sqrt(N[i]*N[j]);//计算余弦相似度 tmp=psutil.getPSById(ps.getPSId()); tmp.setW(Wij); if(used[tmp.getPSId()])continue; preList.add(tmp); used[tmp.getPSId()]=true; } } ArrayList<Petsupplies>recomLists=newArrayList<Petsupplies>();//生成的推荐结果 for(inti=0;preList.size()>0&&i<5;i++){ recomLists.add(preList.pollLast()); preList.pollLast();//方法检索并移除此列表的最后一个元素 } if(recomLists.size()<5){ //推荐数量不满5个,补足喜欢数最高的文章 recomLists=psutil.findTopNPapers(recomLists); } returnrecomLists; } }5.1.4推荐算法评测指标由于无法获取到宠物用品的数据集,故改用MovieLens数据集来模拟计算并评价该算法的推荐性能。该数据集是是GroupLens研究组在明尼苏达大学中组织的。该数据集是电影评分集合,分为在M,10M与20M三种大小,分别包含了用户对所看电影的1,10,20万条评分,评分的范围是1~5。本系统推荐算法的采用10万条评分的数据集。由于宠物用品网站的推荐算法中所包含的用户显性反馈行为为用户对某宠物用品喜欢或者不喜欢,与MovieLens数据集的用户显性反馈行为不一致,故将MovieLens数据集中评分范围为1~3的电影视为用户不喜欢,将MovieLens数据集中评分范围为4~5的电影视为用户喜欢,以便实现推荐算法。将该数据集的百分之七十作为训练集,百分之三十作为测试集进行推荐算法评测指标的计算,本次评测主要从准确率指标和召回率指标两个方面进行。各指标计算公式如下:准确率=用户喜欢的商品/全部推荐商品×100%召回率=推荐商品/用户喜欢的全部商品×100%5.2核心类的设计相关5.2.1数据库相关将连接数据库的类进行封装,降低代码的重复率,也便于调用。publicpublicclassDBUtil{privatestaticfinalStringurl="jdbc:sqlserver://localhost:1433;databaseName=GP"; privatestaticfinalStringuser="sa"; privatestaticfinalStringpassword="6623662"; privatestaticConnectionconn=null; static{ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //加载数据库驱动 conn=DriverManager.getConnection(url,user,password);//getConnection()方法创建数据库连接 }catch(Exceptione){ e.printStackTrace(); } } publicstaticConnectiongetConnection(){ returnconn; }}5.2.2实体类为每一个数据库表建一个实体类,完成对该表字段的获取和设置。

宠用用品网站所使用的实体类列表如表5.4所示。Entity类说明UserLike类喜欢信息表对应的Entity类UserOrder类用户订单表对应的Entity类PetSupplies类宠物用品表对应的Entity类OrderDetail类订单详情表对应的Entity类Comment类评论表对应的Entity类ShoppingCart类购物车表对应的Entity类User类用户表对应的Entity类User类的部分代码如下:publicclassUser{publicclassUser{//属性,对应数据表中的字段名privateintUserId="";privateStringUserName="";//字段的访问和设置方法publicintgetUserId(){ returnUserId; } publicvoidsetUserId(intuserId){ UserId=userId; }5.2.3工具类实体类有与其相对应的工具类,在实体类及数据库相关类的基础上完成对数据库表的访问、更新、统计操作。宠物用品网站所用工具类列表如表5.2所示。工具类说明LikeUtil类完成对商品喜欢信息表的查询及统计UserUtil类完成对用户的查询,更新及统计PSUtil类完成对宠物用品的查询、更新及统计CartUtil类完成对购物车的查询、更新及统计OrderUtil类完成对订单的查询、更新及统计PSUtil类的部分代码如下:publicpublicArrayList<Petsupplies>getallPS()//获取所有的宠物用品 { ArrayList<Petsupplies>list=newArrayList<Petsupplies>(); try{ conn=DBUtil.getConnection(); Stringsql="select*fromPetSupply"; Statementstmt=conn.createStatement(); ResultSetrs=stmt.executeQuery(sql); while(rs.next()) { PetsuppliesPS=newPetsupplies(); PS.setPSId(rs.getInt("PSId")); PS.setPSName(rs.getString("PSName")); PS.setPSPrice(rs.getString("PSPrice"));PS.setPSPic(rs.getString(PS.setPSPic(rs.getString("PSPic")); list.add(PS); } }catch(Exceptione){e.printStackTrace();} returnlist; }publicArrayList<Petsupplies>findTopNPapers(ArrayList<Petsupplies>pslist){//将喜欢人数最多的宠物用品补入推荐列表,直至满五篇(考虑重复)try{ conn=DBUtil.getConnection();Stringsql="SELECT*FROMPetSupplyorderbyPSLikedesc;";Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(sql);while(rs.next()&&pslist.size()<5){Petsuppliesps=newPetsupplies();ps.setPSId(rs.getInt("PSId"));ps.setPSPic(rs.getString("PSPic"));ps.setPSlike(rs.getInt("PSLike"));ps.setPSName(rs.getString("PSName"));ps.setPSPrice(rs.getString("PSPrice"));ps.setPSAddCart(rs.getInt("PSAddCart"));ps.setPSPurchase(rs.getInt("PSPurchase"));if(PSUtil.isExist(pslist,ps.getPSId()))pslist.add(ps);}}catch(Exceptione){e.printStackTrace();}returnpslist;}5.3系统的测试与维护在完成了整个宠物用品网站的开发与设计后,避免该系统投入使用后出现bug,需要对整个系统进行测试,看是否与预期的效果一致,及时检测出漏洞,及时完善,减少不必要的损失。系统的测试包括功能测试、性能测试、负载测试、兼容性测试、安全测试、可用性测试、文档测试、健壮性测试等。在宠物用品网站系统的开发的收尾阶段,通过不同方面的测试,不断完善,测试,再完善最终基本实现了宠物用品网站基本功能的正常运行。5.3.1测试此次测试着重从功能测试的角度出发,功能模块的测试主要采用黑盒测试的方法。登录测试用例,如表5.1所示:表5.1登录测试用例用例名称登录用途测试宠物用品网站的登录功能前提条件用户已经进行了注册测试步骤1、输入用户名和密码2、点击登录按钮,进行登录。预期结果用户在点击登录按钮后,系统会跳转到宠物用品网站的主页。测试结果测试结果和预期结果相同商品详情测试用例,如表5.2所示:5.2商品详情测试用例用例名称商品详情用途测试用户在点击了某个宠物用品后进入该商品详情页面的功能前提条件无测试步骤用户点击某一商品图片预期结果系统跳转到宠物用品的详情页面测试结果测试结果和预期结果相同购物车测试用例,如表5.3所示:5.3购物车测试用例用例名称购物车用途测试用户的购物车的功能前提条件无测试步骤1、用户在心仪的宠物用品详情页面点击“加入购物车”按钮。2、点击“我的购物车”。3、点击“结算”按钮。预期结果用户点击“加入购物车”后,购物车列表中会出现新添加的商品,点击“结算”后,会生成新订单,购物车会自动清空。测试结果测试结果和预期结果相同购买测试用例,如表5.4所示:5.4购买测试用例用例名称购买用途测试购买功能前提条件无测试步骤用户在宠物用品详情页面点击“购买”按钮预期结果系统会跳转到订单页面,用户核对订单信息,点击“结算”按钮,生成新订单。测试结果测试结果和预期结果相同退订测试用例,如表5.5所示:5.5退订测试用例用例名称退订用途测试退订功能前提条件无测试步骤1、在宠物用品网站的主页点击“我的订单”。2、点击“详情”,查看要退订的订单的详情。3点击“退订”。4管理员审核通过后点击“确认退货”。预期结果点击“退订”后等待管理员审核,管理员审核通过后,在后台点击“确认退货”,退订成功,该订单从用户订单中自动清除。测试结果测试结果和预期结果相同评论测试用例,如表5.6所示:表5.6评论测试用例用例名称评论测试用途测试用户评论的功能前提条件用户形成了订单,基于订单进行评论测试步骤1、进入“我的订单”页面,查看订单列表。2、在要评论的订单列点击评论按钮。3、在评论框中输入评论的内容,点击“提交评论”预期结果在该订单所包含的所有宠物用品的详情页的评论栏出现该用户评论的信息和该用户的用户名。测试结果测试结果和预期结果相同5.3.2维护技术的更新是非常快的,该宠物用品网站运行一段时间之后,需要对其进行维护,包括代码的更新,参数的更新等。为了方便后期对网站的管理,该宠物用品网站的管理,将用户端页面和管理端页面进行分类,为了与用户端的页面进行区分,管理端的JSP页面会以Admin开头来进行区分。而针对每一个实体的操作,都会将其操作功能封装在工具类,具有良好的扩展性,便于后期添加新功能。另外数据库中所存储的信息也是十分宝贵的,要定期对数据库进行备份,为宠物用品网站稳定运行保驾护航。

6.结论6.1总结论文通过对宠物用品网站进行系统分析,从可行性分析,需求分析,业务流程分析各个角度出发,通过学习相关的技术,实现了网站的设计与开发。总结起来,主要完成了以下内容:阐述宠物行业的发展概况以及国内宠用用品行业的现状和前景,针对宠物行业现阶段存在的一些问题,阐明了开发宠物用品网站的目的和意义所在,并确定了技术路线。从宠物用品网站进行了多方面的分析,如可行性分析及需求分析,初步建立系统的功能模块图,确定了宠物用品网站所需的开发模块。在编程阶段,后端主要建立了三个包,一个是封装实体类,一个是封装工具类,一个是封装Se

温馨提示

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

评论

0/150

提交评论