《基于安卓的购物推荐系统.docx》由会员分享,可在线阅读,更多相关《基于安卓的购物推荐系统.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、扬州大学本科毕业设计该系统的客户端软件结构可以分为三个部分:Android客户端应用程序层,服务器业务逻辑层和数据库层。 Android客户端的应用程序层在具有Android操作系统的智能移动终端上执行。服务器主要由Tomcat服务器上提供的多个servlet组成,这些servlet与Android客户端和数据库服务器动态交互以提供数据传输功能齐全。数据层主要提供一些数据访问接口:首先,统一检索来自现场各种仪器和设备的数据,然后将其存储在外部数据库中。服务器完成对外部数据的处理后,数据将存储在数据库的本地数据库中。通过数据库接口,服务器可以精确高效地处理数据库中的数据。由于此系统中服务器的业务
2、逻辑层和数据层相对简单,因此我们将在此处详细介绍Android客户端应用程序层。这里有两个主要功能:用户交互和处理详细业务。用户交互主要是一些用XML编写的布局文件作为移动应用程序的显示桌面。负责与用户进行交互并接收他们的请求。并将查询结果呈现给用户,使用户拥有非常舒适的体验。处理详细交易中,具体的业务逻辑主要通过一系列Activity来实现。在Activity中,它通过网络通信库连接到服务器,以完成Android与服务器之间的数据交互。4.1.2 服务器设计这是因为原始平台未保留可直接在移动设备上使用的接口,以通过原始平台检索存储在MySQL数据库中的数据。使用服务器端Servlet技术从M
3、ySQL数据库提取数据。servlet的数据工作处理流程主要如下:首先是Android主机客户端将一个数据包的请求信息发送给主机服务端。服务器在第一次测试接受了从Android这个客户端上直接发来的一个HTTP的请求以,Tomcat服务器将分配一个特定的servlet来处理这些HTTP请求。Tomcat服务器上提供了几个servlet。在servlet程序接收到请求信息之后,servlet通过Tomcat Web服务器响应网页上的请求,动态生成内容。最后,可以通过在Android客户端中分析网页的URL来获取网页的内容。具体过程图如图4-2所示。图4-2 Servlet结构图4.2 功能模块设
4、计此系统开发分为两部分:Android客户端和web服务端。系统实现的功能模块图如图4-3所示。图4-3 系统功能模块图4. 2.1 客户端功能设计Android端主要为用户提供网上购物的基本功能,用户模块的各个自功能模块如下:1. 用户信息:新用户需要进行注册,若账号已存在,会注册失败;已有账号的用户根据个人账号、密码登录,若账号密码不匹配,提示“登录失败”。2.商品列表:顾客可以查看所有商品列表及商品详情。3.搜索、分类:使用搜索可以进行模糊查询搜索到用户需要的商品;根据分类可以按照类型查看不同类别的所有物品。4.购物车:用户可以将自己需要购买的商品加入购物车,然后在购物车中进行删除购物车
5、中商品和购买操作。购买时,填写好收货信息及商品数量后提交订单,即可生成订单。5.订单:用户可以查看自己的所有订单,订单分为三种状态:待付款、已付款、交易成功。用户可以对已下单但未支付的商品进行支付,已支付订单确认收货后,状态变为交易完成,用户还可以对交易完成的商品进行评价。6.个人信息:用户在个人中心可进入个人信息修改页面,可修改注册时的个人信息。7.个性化推荐:系统采用基于用户的协同过滤算法,根据用户的订单信息进行个性化推荐,显示在猜你喜欢页面。4. 2. 2 后台系统功能设计后台系统主要完成管理员对此购物系统的数据管理,具体功能模块如下:1.商品管理:管理员可对商品信息进行查询、修改、删除
6、。2.用户管理:管理员可根据用户姓名查询用户信息,可对用户信息进行修改、删除操作。3.订单管理:管理员可以根据购买商品用户姓名查询该用户的订单,还可以对订单进行删除操作。4.3 数据库设计4.3.1 数据库E-R图此系统的数据库E-R图如图4-4所示。图4-4 系统E-R图4.3.2 数据库表1.用户信息表users用户信息表users为用户注册时的基本信息,主要包括用户id、账号、用户名、密码、电话、密码。用户信息表如表4-1所示。表4-1 用户信息表字段名数据类型允许Null值备注idint(11)否用户idloginidvarchar(30)否账号namevarchar(30)否用户名p
7、asswordsphoneaddrtextvarchar(11)varchar(255)否否否密码电话地址2.商品信息表dishes商品信息表dishes包括商品id、商品名称、类型id、店铺id、商品简介、商品图片名称、单价、库存、销量。商品信息表如表4-2所示。表4-2 商品信息表字段名数据类型允许Null值备注idint(11)否商品idtitletext否商品名称typeidint(11)否类型idbusinessidintroimg_urlpriceamountsalesint(11)textvarchar(255)doubledoubleint(11)否否否否否否店铺id简介商品图
8、片名称单价库存销量3.商品类型表types商品类型表包括类型id、类型名称,商品类型表如表4-3所示。表4-3 商品类型表字段名数据类型允许Null值备注idint(11)否类型idtypenametext否类别名称4.店铺信息表business店铺信息表business主要包括店铺id、图片名称、店铺名、简介。店铺信息表如表4-4所示。表4-4 店铺信息表字段名数据类型允许Null值备注idint(11)否店铺idimg_urlnameintrovarchar(255)texttext否否否图片名称店铺名简介5.购物车表tb_car购物车表tb_car主要包括购物车id、商品id、用户id、
9、创建时间。购物车表如表4-5所示。表4-5 购物车表字段名数据类型允许Null值备注idint(11)否购物车idproiduseridcreatetimeint(11)int(11)varchar(255)否否否商品id用户id创建时间6.订单表orders订单信息表orders主要包括订单id、用户id、用户名、电话、收货地址、订单状态、商品id、价格、数量、创建时间。订单信息表如表4-6所示。表4-6 订单信息表字段名数据类型允许Null值备注idint(11)否订单iduseridusernamephoneaddrstatusdishesidpriceamountcreatetimei
10、nt(11)texttextvarchar(255)textint(11)doubledoublevarchar(30)否否否否否否否否否用户id用户名电话收货地址订单状态商品id价格数量创建时间7.评价信息表comments评价信息表comments主要包括评价id、商品id、用户id、内容、创建时间。评价信息表如表4-7所示。表4-7 评价信息表字段名数据类型允许Null值备注idint(11)否评价id、dishesiduseridbodycreatetimeint(11)int(11)textvarchar(20)否否否否商品id用户id评价内容创建时间第5章 实现效果及关键代码5.1
11、 前台客户端实现5.1.1 用户注册新用户可在登陆界面点击“注册”按钮进入注册界面,可进行注册操作。在此页面输入注册用户的相关信息,点击“注册”按钮实现注册。若两次输入密码不一致,则提示“两次输入的密码不一致”;若申请注册账号已存在,则显示“该账号已被注册”。用户注册界面如图5-1所示。图5-1 用户注册页面5.1.2 用户登录打开软件后进入登录页面,在此页面上输入用户的账号和密码,点击“登录”按钮验证成功后即可登录系统。若账号或密码有错误,则弹出“登录失败”的提示。登录页面如图5-2所示。图5-2 用户登录页面5.1.3 商品列表商品列表页面显示所有商品。商品列表页面如图5-3所示。图5-3
12、 商品列表页面5.1.4 商品搜索、分类在商品列表页面右上方有搜索按钮,点击后可根据名称关键字模糊查询,点击类型列表可根据类别查看商品。商品搜索页面、商品分类页面如图5-4 、图5-5所示。图5-4 商品搜索页面图5-5 商品分类页面5.1.5 商品详情用户点击商品列表中的商品,即可进入查看商品详情页面。详情页会显示商品的名称单价、库存、简介和评论等相关信息。页面右上方有购买按钮,点击可直接进入购买生成订单;点击“加入购物车”按钮即可将商品加入该用户的购物车,若此用户的购物车中已存在该商品,则提示“该商品已存在购物车,不用重复添加”。商品详情页面如图5-6所示。图5-6 商品详情页面5.1.6
13、 个人中心系统可通过商品列表右上方的“个人”进入个人中心,包括我的购物车、我的订单、个人信息、我的推荐(猜你喜欢)四个模块,点击即可进入相应模块。个人中心页面如图5-7所示。图5-7 个人中心页面5.1.7 我的购物车在个人中心页面点击“我的购物车”可进入购物车模块,查看该用户的购物车中的所有商品列表。购物车页面如图5-8所示。图5-8 购物车页面点击购物车中的商品,用户可以选择两种操作:购买、删除。点击购买即可进入提交订单界面,选择删除,此商品即可从此用户购物车中删除。购物车购买、删除操作界面如下图5-9所示。图5-9 购物车操作页面5.1.8 我的订单通过商品详情页面的“购买”按钮和我的购
14、物车中的购买操作可进行下单操作。在提交订单页面中,默认联系电话、送货地址为用户注册时填写的信息,购买商品数量默认为1,用户也可进行修改,确认信息后点击右上方的“提交”按钮,即可生成订单。订单共有三种状态:待付款、已付款、交易完成,此时此订单状态为待付款。用户提交订单后生成订单后,页面跳转到我的订单模块。用户点击待付款状态的订单,可进行付款、取消订单两种操作,选择付款,用户付款完成后,订单状态就会立即变为已付款。用户点击已付款状态的订单可进行确认收货和取消订单两种操作,用户确认收货后,此订单状态就变成交易完成。订单模块相关页面如图5-10、图5-11、图5-12、图5-13所示。图5-10 提交
15、订单页面图5-11 订单页面图5-12 订单付款操作图5-13 订单确认收货操作交易完成后,用户可对此订单的商品进行评论。如图5-14、图5-15所示。图5-14 评价操作图5-15 商品评论页面5.1.9 个人信息用户在个人中心中点击“个人信息”,可以进入个人信息页面,在此页面中,用户可以对自己注册时填写的账号、姓名、密码、电话、地址等相关个人信息进行修改,点击“修改”即可完成修改。个人信息修改页面如图5-16所示。图5-16 个人信息修改页面5.1.10 个性化推荐猜你喜欢页面实现了基于用户的协同过滤推荐算法。根据用户现在的订单信息实现推荐结果如下图5-17所示,具体推荐过程及计算的推荐度
16、结果如图5-18所示,推荐商品1和2的推荐度为0.7071和1.5236。图5-17 猜你喜欢页面图5-18 推荐算法过程用户购买商品后,重新查看推荐部分,此时推荐部分更新为推荐度0.8660的商品1。更新后的推荐如图5-19所示,推荐过程如图5-20所示。图5-19 实时更新后的猜你喜欢图5-20 更新后的推荐过程推荐模块的关键代码如下:public class UserCF /* * param list_item 用户-商品ID映射信息 * param recommendUser 推荐的目标用户 * return */ public static Map run(MapString,Li
17、st list_item, String recommendUser) System.out.println(接口传入内容:+list_item.toString(); / 存储每一个用户对应的不同商品总数 eg: A 3 Map userItemLength = new HashMap(); / 存储商品到用户的倒排表 eg: a A B MapString, Set itemUserCollection = new HashMapString, Set(); / 存储商品集合 eg: a,b,c,d,e Set items = new HashSet(); / 存储每一个用户的购买商品集合
18、 eg: A: a,b,d MapString, Set userPurchase = new HashMapString, Set(); / 存储每一个用户的用户ID映射 eg: A:0 B:1 Map userID = new HashMap(); / 存储每一个ID对应的用户映射 eg: 0:A 1:B Map idUser = new HashMap(); / 依次处理N个用户 以空格间隔 int i=0; Iterator it = list_item.entrySet().iterator(); while(it.hasNext() Map.Entry entry = (Map.E
19、ntry) it.next(); / entry.getKey().toString():用户ID / entry.getValue().toString():用户ID的购买记录 System.out.println(entry.getKey() + : + entry.getValue(); List entryValue = (List) entry.getValue(); / 存储用户的购买记录 String user_item = new StringentryValue.size(); entryValue.toArray(user_item); int length = user_
20、item.length; /eg: A 3 代表A用户偏好三种商品 userItemLength.put(entry.getKey().toString(), length); /用户ID与稀疏矩阵建立对应关系 userID.put(entry.getKey().toString(), i); idUser.put(i, entry.getKey().toString(); /记录用户ID和购买记录关系存到userPurchase Set temp = new HashSet(); for (int j = 0; j length; j+) temp.add(user_itemj); user
21、Purchase.put(entry.getKey().toString(),temp); / 建立商品-用户倒排表 for(int j = 0; j length; j +) /如果已经包含对应的商品-用户映射,直接添加对应的用户 if(items.contains(user_itemj) itemUserCollection.get(user_itemj).add(entry.getKey().toString(); else /否则创建对应商品-用户集合映射 items.add(user_itemj); /创建商品-用户倒排关系 itemUserCollection.put(user_i
22、temj, new HashSet(); itemUserCollection.get(user_itemj).add(entry.getKey().toString(); i+; / 计算相似度矩阵 / 存储用户之间的相似度,该变量仅仅记录分子部分(用于相似度矩阵计算) int sparseMatrix = new intlist_item.size()list_item.size(); SetEntryString, Set entrySet = itemUserCollection.entrySet(); IteratorEntryString, Set iterator = entry
23、Set.iterator(); while(iterator.hasNext() Set commonUsers = iterator.next().getValue(); for (String user_u : commonUsers) for (String user_v : commonUsers) if(user_u.equals(user_v) continue; /计算用户u与用户v都有正反馈的商品总数 sparseMatrixuserID.get(user_u)userID.get(user_v) += 1; / 使用余弦相似度计算用户之间的相似度 / 根据用户获取存储的ID
24、int recommendUserId = userID.get(recommendUser); / 存储所有相似用户ID Set similarUsers = new HashSet(); / 存储相似用户购买商品集合 Set similarUsersItems = new HashSet(); for (int j = 0;j 0) similarUsers.add(idUser.get(j); similarUsersItems.addAll(userPurchase.get(idUser.get(j); / 存储目标用户对商品的偏好度并按偏好度降序 Map result = new H
25、ashMap(); / 计算指定用户的商品推荐度/ 从相似用户的购买记录中遍历每一件商品 / 遍历每一件商品 for(String item: similarUsersItems) /得到购买当前商品的所有用户集合 Set users = itemUserCollection.get(item); /如果被推荐用户没有购买当前商品,则进行推荐度计算 if(!users.contains(recommendUser) double itemRecommendDegree = 0.0; for(String user: users) /推荐度计算 itemRecommendDegree += sp
26、arseMatrixuserID.get(recommendUser)userID.get(user) /Math.sqrt(userItemLength.get(recommendUser)*userItemLength.get(user); result.put(item,itemRecommendDegree); return result; 5.2 后台系统实现5.2.1 商品管理模块管理员登录后进入商品管理模块,在此模块中,可根据商品名称进行搜索、对商品进行修改、删除操作。商品管理、修改页面如图5-21、图5-22所示。图5-21商品管理模块图5-22 商品信息修改页面5.2.2 用
27、户管理模块在用户管理模块,管理员可通过搜索购买商品用户名来查询此用户的订单信息,管理员还可以修改用户的账号、姓名、电话、地址等注册时填写的信息,管理员还有删除用户的权限。管理员进行用户管理界面如下图5-23所示,管理员修改用户信息页面如下图5-24所示。图5-23 用户管理模块图5-24 用户信息修改页面5.2.3 订单管理模块管理员点击“用户管理”后,即可进入进行订单管理。管理员可以根据用户姓名对订单进行查询,除了查询,管理员还可以对订单进行删除。订单信息管理模块如下图5-25所示。图5-25 订单管理模块第6章 总 结6.1 总结本文根据软件开发步骤对系统开发设计过程进行论述,首先对这个基
28、于安卓的购物推荐系统的项目的推荐系统的发展和背景进行介绍,然后介绍了此系统所使用的相关技术,并对此项目的需求分析工作和设计工作展开了重点、详细的说明,最后展示了本系统实现了的功能及界面,并附上部分关键相关代码。该系统主要包括Android客户端软件开发和Web服务器端软件开发,推荐模块采用了基于用户的协同过滤推荐算法。其中Android端主要实现了用户登录注册、商品浏览、购物车、订单、个性化推荐等购物推荐系统的基本功能,Web端包括商品信息管理、用户信息管理、订单信息管理等功能模块。在开发过程中,Android客户端在Android Studio开发平台进行,Web服务器端使用Eclipse进
29、行开发,在这两个平台中均采用Java开发语言,系统后台数据库选择了MySQL数据库。Android客户端和Web服务器端之间的数据通过HTTP网络传输协议来进行实时数据通信,采用JSON封装技术进行数据交互。该购物推荐系统首页具有简洁、实用的界面,操作简单,并且可以实时有效地为用户进行个性化推荐。6.2 展望本文将购物推荐系统可以在Android真机上运行流畅,但是在系统整体功能设计还比较简单。因此,在未来的工作中,还可以对一下功能进行优化:(1)优化系统界面,是界面设计更加美观,提高用户体验,提高交互性。(2)继续丰富和完善系统的功能,添加收藏、评分等其他购物推荐系统的常用功能。(3)完善推
30、荐部分,可增加其他推荐算法,提高推荐效率。致 谢时光匆匆,转眼间四年已然而过,不知不觉间四年的大学的时光已临近结尾,我们将要离开校门步入社会。在毕业论文完成之际,我要向所有曾给予我支持和帮助的人表达我诚挚的感谢。首先,我要感谢我的导师何萍老师。从接受这个课题到最终完成论文,我遇到了很多困难,非常感谢在此期间为我指明方向并给予指导和帮助的何萍老师,使我能够顺利完成毕业论文。其次,我非常感谢学院的全体领导和老师,得益于他们的悉心教导,我学到了专业的计算机知识,掌握了专业技能。最后,感谢我的家人在此期间给予我的包容和支持,以及所有陪伴我一路走来的同学和朋友,正是由于他们的支持和照顾,我才能安心学习并
31、顺利完成我的学业。毕业在即,在今后的工作和生活中,我会铭记师长们的教诲,继续不懈努力和追求。参考文献1 王健,冯佳琳.协同过滤推荐算法的改进J.通信电源技术,2019,36(03):29-30+352 袁志远.基于协同过滤的个性化推荐算法研究D.南京邮电大学,2018.3 陈洁敏, 汤庸, 李建国,等. 个性化推荐算法研究J. 华南师范大学学报(自然科学版), 2014(5):8-15.4 刘士琛,面向推荐系统的关键问题研究及应用D. 中国科学技术大学,2014.5 朱扬勇,孙婿.推荐系统研究进展J. 计算机科学与探索,2015,9(05):513-525.6 荣辉桂,火生旭,胡春华,等基于用
32、户相似度的协同过滤推荐算法J通信学报,2014,(2):16247 孙晓娟,千博,王圣涛基于协同过滤算法的IT书籍推荐系统设计与实现J软件导刊,2017,16(4):70-738 Liang C Y,Leng Y J,Wang Y S, et al. Research on Group Recommendation in E-commerce Recommender Systems. Chinese Journal of Management Science, 2013 , 21 ( 3) : 153 -1589 SCHAFER J B, FRANKOWSKI D, HERLOCKER J,
33、et a1. Collaborative filtering recommender systemC/The Adaptive Web, Lect Notes Comput Sci. Berlin, Heidelberg: Springer-Verlag, 2007, 4321: 291-324.10 李晶莹.电子商务个性化推荐关键技术研究0.北京邮电大学,2016.11 王晓禹,石丽基于JSON实现Android智能终端与web服务器“面向对象”的信息交换J2012,(4):224-22512 马昭征. 基于HTTP的安卓与服务器交互方法的实现J. 计算机世界, 2015,03:92-114
34、.13 王炎.基于Android移动电子商务系统的研究与设计J.电子设计工程,2017,25(17):69-72+77.14 刁云霞,张辉,康雪薇,卢洁.面向Android的电子商务移动客户端的设计与开发J.电脑知识与技术,2016,12(12):287-288+297.15 Jonathan Simon. Head First Android DevelopmentM, OReilly Media, 2011.16 张洪,巩日成.基于JSON的Android移动终端与网络设备管理系统的数据通信J.信息与电脑(理论版),2018(15):197-199.17 Resnick,Marc L:Po
35、mpa,Sheryda:Korn,Isaac:CastilIo,OmarPersuasive Design Through Intelligent Recommendation SystemsJProceedings of the Human Factors and Ergonomics Society Annual Meeting,2004,13(48):1503150718 Songjie GongA Flexible Electronic Commerce Recommendation System7Physics Procedia,2012(24):80681119 项亮.推荐系统实践M.北京:人民邮电出版社,2012.24