菜单推荐系统菜单推荐系统设计摘要: 随着经济生活的发展,计算机的应用已普及到人们日常生活的各个领域。
计算机虽然与人类的关系愈来愈密切,但还是有由于计算机操作不方便,而浪费人们大量时间。
在吃饭选择地点,饭菜,为了适应现代社会人们高度强烈的时间观念,同时为人们带来方便,于是设计了菜单推荐系统。
为明确软件需求安排项目规划与进度、组织软件开发与测试,特撰写了本文档。
菜单推荐系统其系统功能在内部tomcat服务器上运行。
餐厅管理员,顾客只需通过简单的操作,即可方便的管理自己的事务。
老板,顾客都可以了解本系统软件的基本工作原理。
顾客只需进行输入一些简单的汉字、数字或用鼠标点击即可获取自己想要的菜单。
关键词:设计目的菜单推荐系统系统设计Design of menu recommendation systemAbstract: with the development of economic life, computer applications have spread to all areas of daily life. the computer and human relations become more closely, but due to the inconvenience of computer operation, and the waste a lot of time people. At local restaurant, in order to adapt to modern society people’s highly strong concept of time, and bring convenience for people, we design the menu recommendation system. In order to define the software requirement, arrange the project planning and progress, organize the software development and testing, and write the document. Menu recommendation system its system function in the internal Tomcat server running. Restaurant Manager, customers simply through a simple operation, you can easily manage their own affairs. The boss, customers can understand the basic working principle of the system software. Customers only need to input some simple Chinese characters, numbers or click with the mouse can get your desired menu.Keywords: design purpose menu recommendation system system design1 编写目的1.1主要目的:1. 通过大量用户选择,获取在众多用户选择过程中最受欢迎的菜单,推荐菜单。
2.通过单个用户选择来记录用户喜爱偏好,并推荐给用户可能需要的菜单在完成了针对“菜单推系统”软件市场的前期调查,同时与多位软件使用者进行了全面深入地探讨和分析的基础上,我们提出了“菜单推荐系统”软件需求规格说明书。
它全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
我们开发一个“菜单推荐系统”,目标是方便客户短时间内找到自己喜欢的菜单。
系统针对用户需求的实际,紧贴用户需求,全面菜单选择,上菜、结账各个方面,提供强大的菜单管理功能,提高管理水平、质量、效率,为客户选择菜单决策提供有力支撑。
系统分析人员首先与店主管理员进行交流,了解顾客数量的规模、兴趣、口味偏好。
项目小组已完成了全面的市场调查和分析,同时与顾客进行了多次深入沟通,并在此基础上着手开发“菜单推荐系统”软件。
1.2 项目风险项目提出方:主要承担:软件质量不过关,产生的软件危机主要承担:软件实现达不到预期目标,软件中错误1.3 产品使用范围随着生活节奏加快,人们也越来越注重时间管理,餐厅管理员如何在短时内引导顾客找到他们自己喜欢的菜单,顾客如何在短时间内找到符合自己口味的和一些比较受欢迎的菜。
这对于顾客和餐厅管理员十分重要。
这大大方便餐厅管理大大节省人力成本,同时也大大方便了顾客节省了他们宝贵的时间。
2.综合描述2.1 产品的状况菜单推荐体统属于餐饮系统的下的一个分支,目前菜单推荐有很多,例如,美团网美食,饿了么,吃货吧,有移动端和web 端,餐饮系统功能齐全,有菜单显示,结算,还有外卖送达。
目前菜单推荐还不成熟,不能准确的推出符合用户口味的菜单。
目前该技术还在不断的发展。
2.2 产品的功能1功能:实现综合管理,包括菜单查看、菜单搜索、菜单推荐、菜单外送、付款结算、打印菜单发票。
2性能:要求性能稳定,不能出现数据丢失等情况。
3输出:要求将各种输出数据以表单形式打印。
4输入:要求系统各模块具有添加新数据的功能。
5安全与保密要求:要求系统软件具有权限功能,使不同的用户具有不同的权限,建立后的数据库需要加密。
6与软件相关的其他系统:本软件应使用Windows 2007、Windows XP操作系统。
Hadoop + Mahout + j2ee7完成期限:本软件应在1个月内设计完成2.3 用户特征顾客,餐厅管理员2.4 系统运行环境a.硬件平台;486或更高档PC台式机,笔记本电脑运行时占用内存:10MB安装所需硬盘:500MB打印机:可选b.操作系统和版本;Windows7或Windows Xp系统c. 支撑环境(例如:数据库等)和版本;d. 其它与该软件有关的软件组件;e. 与该软件共存的应用程序。
f. 运行软件需要:Hadoop + Mahout + j2ee2.5 条件与限制本系统是基于B/S结构的,服务器端采用Windows 7 作为操作系统,后台数据库采用SQL SERVER 2005数据库进行数据存储,该数据库系统在安全性、准确性、运行速度方面适用于中小型系统;客户端选择只需要IE6.0以上版本的浏览器即可访问,采用elipse配置mahout 作为集成式开发工具,实现j2ee 开发。
这些技术现在还未成熟,有时会出现推荐菜单和用户实际需要有很大区别。
3功能需求3.1 功能划分系统用户分为餐厅管理员和顾客,提供给餐厅管理员功能有:接受订单,付款结算,打印菜单发票,外送。
提供给顾客的功能有:搜索菜单,获得推荐菜单,下订单,付款结算。
3.2 功能描述搜索菜单:顾客通过输入关键字,会弹出一系列菜单。
获得推荐菜单:通过大量用户选择,获取在用户选择过程中最受欢迎的菜单。
通过单个用户选择记录用户喜爱偏好,推荐用户可能需要的菜单。
下订单:顾客在选完菜单后,下订单。
付款结算:顾客和餐厅管理员的付款交易。
外卖:送餐给顾客。
4外部接口需求4.1 用户界面1.用户界面将采用HTML +jsp实现:主要有登录注册,搜索窗口。
效果图:图1 登录界面图2:点菜系统2.推荐众多用户点餐最多的菜单。
3.根据记录的个人用户的口味、爱好,向个人用户推荐菜单4.现金结算界面第三方支付,例如支付宝,网银4.2 硬件接口表3check表表3系统为windowsxp或windows7,打印机,usb接口,主板稳定,网卡连接,驱动稳定;4.3 软件接口数据库操作接口,javabean对象数据封装。
前端使用web界面设计人机交互,后台实现数据库接口。
5. 详细设计5.1 数据库设计表1:dash表Dash_nameDash_typeDash_priceDash_scoreDash_idvarcharvarcharfloat floatinte表2:User表namepasswordFlavorUser_idVarcharVarcharvarcharintCheck表总体E-R模型设计如图所示Das h_i d User_idnumberTotal_priceint int float floa t图3:系统E-R图5.2 系统设计图4:系统中的功能图图5:业务设计 5.3算法设计基于物品的协同过滤算法ItemCF 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐。
简单来讲就是:给用户推荐和他之前喜欢的物品相似的物品。
图6:算法设计基于物品的CF 的原理和基于用户的CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。
从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。
图中给出了一个例子,对于物品A,根据所有用户的历史偏好,喜欢物品A 的用户都喜欢物品C,得出物品A 和物品C 比较相似,而用户C 喜欢物品A,那么可以推断出用户C 可能也喜欢物品C。
6.系统实现6.1编码实现(计算相似比)图6:系统实现中部分代码核心代码:算法:计算相似比public List<RecommendedItem > userBasedRecommender(long userID,int size) {// step:1 构建模型 2 计算相似度 3 查找k紧邻 4 构造推荐引擎List<RecommendedItem> recom mendations = null;try {DataModel model = MyDataM odel.myDataModel();//构造数据模型UserSimilarity similarity = new PearsonCorrelationSi milarity(model);//用PearsonCorrelation 算法计算用户相似度UserNeighborhood neighborho od = new NearestNUserNeig hborhood(3, similarity, mo del);//计算用户的“邻居”,这里将与该用户最近距离为 3 的用户设置为该用户的“邻居”。