摘 要
餐饮和酒店行业是全球最重要的服务行业之一,用户对于餐饮酒店的评价成为影响顾客选择的重要因素。传统的餐饮酒店推荐系统主要基于用户的位置、价格等静态信息进行推荐,无法很好地反映用户的个性化需求和偏好。因此,本论文提出了一种基于用户评价的餐饮酒店推荐系统,通过分析用户历史评价数据,挖掘用户的个性化需求和偏好,实现更精准的推荐。
基于用户评价的餐饮酒店推荐系统的主要使用者分为管理员和普通用户,实现功能包括管理员:系统用户、餐饮信息管理、美食分类管理、美食评分管理、美食订单管理、酒店信息管理、酒店评分管理、房间类型管理、入住订单管理、退房信息管理、系统管理(轮播图管理、敏感词管理)、系统公告管理模块,普通用户:首页、系统公告、餐饮信息、酒店信息、我的账户、个人中心等功能。由于本网站的功能模块设计比较全面,所以使得整个餐饮酒店推荐系统信息管理的过程得以实现。
本餐饮酒店推荐系统是以Django这一框架为基础,采用Python的编程语言,使用了MySQL这一数据库进行开发的,可以实现本餐饮酒店推荐系统管理的信息化,可以方便管理员进行更加方便快捷的管理。
关键词:餐饮酒店推荐系统;Django框架;MySQL数据库;Python语言
A Catering and Hotel Recommendation System Based on User Evaluation
Abstract
The catering and hotel industry is one of the most important service industries in the world, and user evaluations of catering and hotels have become important factors affecting customer choices. Traditional restaurant and hotel recommendation systems mainly rely on static information such as user location and price for recommendations, which cannot reflect the personalized needs and preferences of users well. Therefore, this paper proposes a restaurant and hotel recommendation system based on user evaluation, which analyzes user historical evaluation data, mines user personalized needs and preferences, and achieves more accurate recommendations.
The main users of the food and beverage hotel recommendation system based on user evaluation are divided into administrators and ordinary users. The functions include administrators: system users, food information management, food classification management, food rating management, food order management, hotel information management, hotel rating management, room type management, check-in order management, check-out information management, system management (carousel management, sensitive word management) System announcement management module, ordinary users: homepage, system announcements, catering information, hotel information, my account, personal center and other functions. Due to the comprehensive design of the functional modules on this website, the entire process of information management in the catering and hotel recommendation system can be achieved.
This restaurant and hotel recommendation system is based on the Django framework, developed using Python programming language and MySQL database. It can achieve information management of this restaurant and hotel recommendation system, making it easier for administrators to manage more conveniently and quickly.
Keywords: Catering and hotel recommendation system; Django framework; MySQL database; Python language
目 录
1 绪论
1.1 选题背景与意义
餐饮和酒店行业是一个竞争激烈的行业,用户对于服务质量和体验的要求越来越高。在互联网技术的发展下,用户可以通过各种平台发布和查看餐饮酒店的评价,与其他用户分享自己的体验和观点。用户评价不仅可以影响其他用户的选择,也可以对餐饮酒店进行改善和优化。
然而,传统的推荐系统主要基于静态信息进行推荐,无法充分利用用户评价的信息。用户评价具有丰富的意义和信息,可以反映出用户的个性化需求和偏好。通过对用户评价的分析,可以挖掘出用户的偏好因素,提高推荐的准确度和精确度。
因此,基于用户评价的餐饮酒店推荐系统的研究具有重要的现实意义和应用价值。通过分析用户评价,可以深入了解用户的需求和偏好,为用户提供更加个性化的餐饮酒店推荐服务。此外,通过对用户评价的统计和分析,还可以为餐饮酒店提供改善和优化的建议,提升服务质量和用户满意度。
随着互联网的普及,用户在选择餐饮酒店时往往通过在线平台上的评价和评分来查询并决定。然而,由于餐饮酒店数量庞大,用户面临选择困难,很难快速找到适合自己口味和需求的餐厅或酒店。因此,基于用户评价的餐饮酒店推荐系统应运而生。
国内外目前对于基于用户评价的餐饮酒店推荐系统的研究主要提现在以下几个方面:
1. 用户评价挖掘:许多研究致力于利用自然语言处理和机器学习技术从用户评价中挖掘有用信息。通过情感分析、主题识别等技术,可以提取用户对餐饮酒店的评价中隐藏的情感倾向和具体优缺点,从而更好地理解用户需求。
2. 推荐算法:推荐系统是基于用户历史行为和兴趣为用户推荐个性化内容的关键技术。基于协同过滤、内容过滤等推荐算法的研究,可以有效地帮助用户在众多餐饮酒店中找到符合自己口味和偏好的地方。
3. 用户画像建模:通过分析用户的历史行为和偏好,可以建立用户画像,从而更加精准地向用户推荐适合的餐饮酒店。用户画像建模是推荐系统个性化推荐的基石,为提高推荐准确度提供了重要支持。
4. 交互设计:餐饮酒店推荐系统的用户体验也是关键因素之一。良好的交互设计可以提升用户体验,使用户更加愿意使用推荐系统,并能够更方便地找到满足自己需求的餐厅或酒店。
综上所述,基于用户评价的餐饮酒店推荐系统的研究已经取得了一定的进展,但仍然存在很多挑战和机遇。未来的研究可以进一步深化用户评价挖掘和推荐算法,提升用户画像建模准确度,优化交互设计,从而为用户提供更加精准、个性化的餐饮酒店推荐服务。
实现基于用户评价的餐饮酒店推荐系统,主要研究内容有:
(1)数据收集:通过API接口或爬虫技术,获取用户评价和餐饮酒店信息的数据集。
(2)数据预处理:对获得的数据进行清洗、去重和标准化处理,确保数据的质量和一致性。
(3)特征提取:通过文本特征提取技术,提取用户评价的关键词和情感极性等特征。
(4)用户分群:基于用户评价的特征,使用聚类算法将用户分成不同的群体,挖掘出用户的个性化需求和偏好。
(5)推荐算法:根据用户群体的需求和偏好,采用推荐算法为用户推荐合适的餐饮酒店。
(6)系统实现:将研究结果应用到实际的推荐系统中,通过用户界面的设计和实现,提供个性化的餐饮酒店推荐服务。
本文共分为六章,章节内容安排如下:
第一章:引言。此章节对所设计和实现的系统的背景和状况以及意义进行详细的论述以及说明,同时进行了研究内容和论文整体框架的结构的简要介绍。
第二章:系统需求分析。章节所做的主要的工作是对系统进行了技术、经济和操作方面可行性的分析;对系统实行了总体功能的需求、用例分析。
第三章:系统的设计。主要是对系统的功能结构进行设计,并对系统数据库的概念结构以及物理结构的设计进行了分析。
第四章:系统的实现。根据系统功能的划分,分别的对系统所需要实现的前台客户功能和后台管理员功能进行了分析和说明。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试。
2 餐饮酒店推荐系统系统分析
系统需求分析是系统开发的一个关键环节,它在系统的设计和实现上起到了一个承上启下的位置。系统需求分析是对所需要做的系统进行一个需求的挖掘,如果分析的准确可以精准的解决现实中碰到的问题。如果分析不到位会影响后期系统的实现。一个系统的优秀程度需求分析也是占据了非常大的比例,如果需求分析不到位,后面的系统设计要实现就是一个偏离导航的设计。
系统可行行分析是对系统对系统可行性进行一个探讨。在探讨系统的可行性上我们主要从技术上的可行性和经济上的可行性以及法律层面的可行性上进行分析,如果三个层面度通过,我们则认为系统是比较可行的。
2.1.1 技术可行性分析
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Python开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Python编程语言,已无技术上的问题。
系统所采用的开发平台和MySQL后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。
本系统是自行开发的系统,以方便高效管理餐饮酒店信息为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。
餐饮酒店推荐系统我划分为了普通用户管理模块和管理员模块这两大部分。
普通用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现评分、下单购买、订房入住等操作,就必须有这个系统的账号,如果没有账号的话,可以注册用户进行相关的操作,同时用户还可以通过“我的”这个按钮对个人信息以及操作的信息进行管控。
(2)查看餐饮酒店推荐系统的首页信息:餐饮酒店推荐系统的首页信息包含了首页、系统公告、餐饮信息、酒店信息、我的账户、个人中心等。
(3)系统公告:当用户点击“系统公告”这一菜单按钮,会显示管理员在后台发布的所有的系统公告,可以查看详情;
(4)餐饮信息:用户可以查看餐饮的所有信息,包括美食名称、美食分类、制作材料、美食价格、店铺名称、店铺地址、美食介绍等。支持通过搜索关键词的方式对餐饮信息进行查询,在查询到自己想要了解的餐饮信息的时候,可以进入查看详细的介绍,在餐饮信息详情这个界面,同时支持用户对喜欢的餐饮信息进行评分、下单购买、点赞、收藏、评论的功能。
(5)酒店信息:用户可以查看酒店推荐信息,在查询到自己想要了解的酒店信息的时候,可以进入查看详细的介绍,包括展现编号、酒店名称、客房名称、房间类型、房间单价、房间数量、酒店地址等,在酒店信息详情这个界面,同时支持用户对喜欢的酒店信息进行评分、订房入住、点赞、收藏以及评论的功能。
(6)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改信息进行管控。
(7)个人中心:用户点击右上角的“用户名”,然后点击“个人中心”可查看个人首页、美食评分、美食订单、酒店评分、入住订单、退房信息和自己收藏的信息并对其进行管理。支持对收藏信息的搜索查询,如果你想不再收藏某一信息,点击删除就可以了。
管理员管理模块:
(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。
(2)系统用户:管理员可以对餐饮酒店推荐系统中的管理员和普通用户进行增删改查。
(3)餐饮信息管理:管理员点击“餐饮信息管理”会显示出所有的餐饮信息,支持输入美食名称对餐饮信息进行查询,如果想要添加新的餐饮信息,点击“添加”按钮,输入美食名称、美食分类、制作材料、美食价格、店铺名称、店铺地址、美食介绍等信息,点击“提交”按钮就可以添加了,同时可以选择某一条餐饮信息,点击“删除”进行删除,也可以对用户提交的餐饮信息评论的信息进行管控。
(4)美食分类管理:点击“美食分类管理”系统会把餐饮酒店推荐系统当中所有的美食分类信息都显示出来,管理员可对餐饮进行添加美食分类和类型描述管理,并可进行查询、重置或删除等相应操作。
(5)美食评分管理:管理员点击“美食评分管理”可以对用户提交的美食评分信息进行审核及回复。
(6)美食订单管理:管理员点击“美食订单管理”会显示出所有的美食订单信息,也可以点击右侧的“支付”按钮进行支付信息操作。
(7)酒店信息管理:管理员点击“酒店信息管理”菜单可以对酒店信息列表进行查看,并进行增删改查,也可以对用户提交的酒店信息评论的信息进行管控。
(8)酒店评分管理:管理员点击“酒店评分管理”可以对用户提交的酒店评分信息进行审核及回复。
(9)房间类型管理:点击“房间类型管理”系统会把餐饮酒店推荐系统当中所有的酒店房间类型信息都显示出来,管理员可对房间进行添加房间类型和类型描述管理,并可进行查询、重置或删除等相应操作。
(10)入住订单管理:管理员点击“入住订单管理”会显示出所有的入住订单信息,也可以点击右侧的“退房”“支付”按钮进行相关操作。
(11)退房信息管理:管理员点击“退房信息管理”会显示处所有的退房信息。
(12)系统管理:管理员点击“系统管理”菜单可以对首页展示的轮播图和敏感词进行管理。
(13)系统公告管理:管理员点击“系统公告管理”菜单可以查看到系统中的所有系统公告信息,对已经存在的系统公告,管理员可以修改,也可以添加新的系统公告或者删除系统公告。
餐饮酒店推荐系统的非功能性需求,比如餐饮酒店推荐系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1餐饮酒店推荐系统非功能需求表
安全性 | 主要指餐饮酒店推荐系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指餐饮酒店推荐系统能够按照用户提交的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响餐饮酒店推荐系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着餐饮酒店推荐系统的页面展示内容进行操作,就可以了。 |
可维护性 | 餐饮酒店推荐系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3 系统用例分析
餐饮酒店推荐系统的完整UML用例图分别是图2-1和图2-2。
图2-1就是普通用户角色的用例展示。
![](https://i-blog.csdnimg.cn/direct/820eac873d484d0695ba362d65f37a13.png)
图2-1 餐饮酒店推荐系统普通用户角色用例图
图2-2就是管理员角色的用例展示。
图2-2 餐饮酒店推荐系统管理员角色用例图
2.4 业务流程分析
业务流程图不仅能反映出内部业务之间的关系,而且能体现出作业顺序及信息的流动。基于用户评价的餐饮酒店推荐系统必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据餐饮酒店推荐系统的特点以及结合所面临的实际情况,设计出了系统的业务流程图。
系统的业务流程如下图所示。
![](https://i-blog.csdnimg.cn/direct/aaa9d5b9395a4b8e96f00c53e155c09e.png)
本章主要讨论的内容包括餐饮酒店推荐系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本餐饮酒店推荐系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1餐饮酒店推荐系统架构设计图
表现层(UI):又称UI层,主要完成本餐饮酒店推荐系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本餐饮酒店推荐系统时的舒适度。UI的界面设计也要适应不同版本的餐饮酒店推荐系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本餐饮酒店推荐系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本餐饮酒店推荐系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本餐饮酒店推荐系统的数据存储和管理功能。
登录模块主要满足了管理员以及用户的权限登录,登录模块顺序图如图3-2所示。
![](https://i-blog.csdnimg.cn/direct/3324dcd071e440ce839b7cbcd1c3bf4a.png)
图3-2登录顺序图
管理员以及用户登录后均可进行添加信息操作,添加信息模块顺序图如图3-3所示。
![](https://i-blog.csdnimg.cn/direct/c35c4f2256244f49b6c9903c795ee133.png)
图3-3 添加信息顺序图
餐饮酒店推荐系统根据前面章节的需求分析得出,其总体设计模块图如图3-4所示。
图3-4 餐饮酒店推荐系统功能模块图
3.3.2用户模块设计
本系统的用户包括管理员和用户两种用户模块的功能基本是相同的,用户比管理员多了一个注册功能,所以以用户模块的结构图为例进行分析,用户模块结构图为例进行分析,如下图:
![](https://i-blog.csdnimg.cn/direct/43d54ab6c465482dac039df618b7941c.png)
图3-5用户模块结构图
3.3.3 评论管理模块设计
餐饮酒店推荐系统是一个交流性质的公开平台,用户在平台上提交评论,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的评论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:
图3-6评论管理模块结构图
餐饮酒店推荐系统是中需要存储不少餐饮信息,其模块功能结构,具体的结构图如下:
图3-7餐饮信息模块结构图
3.3.5酒店信息管理模块设计
餐饮酒店推荐系统是中需要存储不少酒店信息,其模块功能结构,具体的结构图如下:
![](https://i-blog.csdnimg.cn/direct/0fa45b5c4fe4405a9771dfc82d7b368c.png)
图3-8酒店信息模块结构图
3.4 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.4.1 数据库概念结构设计
下面是整个餐饮酒店推荐系统中主要的数据库表总E-R实体关系图。
![](https://i-blog.csdnimg.cn/direct/f4582fdda58945809780b20f676cd4b8.png)
图3-9 餐饮酒店推荐系统总E-R关系图
3.4.2 数据库逻辑结构设计
通过上一小节中餐饮酒店推荐系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | catering_information_id | int | 10 | 0 | N | Y | 餐饮信息ID | |
2 | food_name | varchar | 64 | 0 | Y | N | 美食名称 | |
3 | cover | varchar | 255 | 0 | Y | N | 封面 | |
4 | food_classification | varchar | 64 | 0 | Y | N | 美食分类 | |
5 | production_materials | varchar | 64 | 0 | Y | N | 制作材料 | |
6 | food_prices | int | 10 | 0 | Y | N | 0 | 美食价格 |
7 | food_introduction | text | 65535 | 0 | Y | N | 美食介绍 | |
8 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
9 | store_address | varchar | 64 | 0 | Y | N | 店铺地址 | |
10 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
11 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | check_in_order_id | int | 10 | 0 | N | Y | 入住订单ID | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
3 | display_number | varchar | 64 | 0 | Y | N | 展现编号 | |
4 | hotel_name | varchar | 64 | 0 | Y | N | 酒店名称 | |
5 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
6 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
7 | cover | varchar | 255 | 0 | Y | N | 封面 | |
8 | room_unit_price | int | 10 | 0 | Y | N | 0 | 房间单价 |
9 | check_in_date | date | 10 | 0 | Y | N | 入住日期 | |
10 | check_in_users | int | 10 | 0 | Y | N | 0 | 入住用户 |
11 | number_of_room_reservations | int | 10 | 0 | Y | N | 0 | 订房数量 |
12 | stay_days | int | 10 | 0 | Y | N | 0 | 入住天数 |
13 | payment_amount | varchar | 64 | 0 | Y | N | 支付金额 | |
14 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
15 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | check_out_information_id | int | 10 | 0 | N | Y | 退房信息ID | |
2 | order_number | varchar | 64 | 0 | N | N | 订单号 | |
3 | display_number | varchar | 64 | 0 | Y | N | 展现编号 | |
4 | hotel_name | varchar | 64 | 0 | Y | N | 酒店名称 | |
5 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
6 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
7 | cover | varchar | 255 | 0 | Y | N | 封面 | |
8 | room_unit_price | int | 10 | 0 | Y | N | 0 | 房间单价 |
9 | check_in_date | date | 10 | 0 | Y | N | 入住日期 | |
10 | check_in_users | int | 10 | 0 | Y | N | 0 | 入住用户 |
11 | number_of_room_reservations | int | 10 | 0 | Y | N | 0 | 订房数量 |
12 | stay_days | int | 10 | 0 | Y | N | 0 | 入住天数 |
13 | payment_amount | varchar | 64 | 0 | Y | N | 支付金额 | |
14 | check_out | date | 10 | 0 | Y | N | 退房日期 | |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_classification_id | int | 10 | 0 | N | Y | 美食分类ID | |
2 | food_classification | varchar | 64 | 0 | Y | N | 美食分类 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_orders_id | int | 10 | 0 | N | Y | 美食订单ID | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
3 | food_name | varchar | 64 | 0 | Y | N | 美食名称 | |
4 | cover | varchar | 255 | 0 | Y | N | 封面 | |
5 | food_classification | varchar | 64 | 0 | Y | N | 美食分类 | |
6 | production_materials | varchar | 64 | 0 | Y | N | 制作材料 | |
7 | food_prices | int | 10 | 0 | Y | N | 0 | 美食价格 |
8 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
9 | store_address | varchar | 64 | 0 | Y | N | 店铺地址 | |
10 | subscription_date | date | 10 | 0 | Y | N | 订购日期 | |
11 | customer_users | int | 10 | 0 | Y | N | 0 | 顾客用户 |
12 | order_quantity | int | 10 | 0 | Y | N | 0 | 订购数量 |
13 | payment_amount | varchar | 64 | 0 | Y | N | 支付金额 | |
14 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
15 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | food_rating_id | int | 10 | 0 | N | Y | 美食评分ID | |
2 | food_name | varchar | 64 | 0 | Y | N | 美食名称 | |
3 | cover | varchar | 255 | 0 | Y | N | 封面 | |
4 | food_classification | varchar | 64 | 0 | Y | N | 美食分类 | |
5 | production_materials | varchar | 64 | 0 | Y | N | 制作材料 | |
6 | food_prices | int | 10 | 0 | Y | N | 0 | 美食价格 |
7 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
8 | store_address | varchar | 64 | 0 | Y | N | 店铺地址 | |
9 | rating_date | date | 10 | 0 | Y | N | 评分日期 | |
10 | customer_users | int | 10 | 0 | Y | N | 0 | 顾客用户 |
11 | customer_rating | varchar | 64 | 0 | Y | N | 顾客评分 | |
12 | number_of_raters | varchar | 64 | 0 | Y | N | 评分人数 | |
13 | rating_content | text | 65535 | 0 | Y | N | 评分内容 | |
14 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
15 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hotel_information_id | int | 10 | 0 | N | Y | 酒店信息ID | |
2 | display_number | varchar | 64 | 0 | Y | N | 展现编号 | |
3 | hotel_name | varchar | 64 | 0 | Y | N | 酒店名称 | |
4 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
5 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
6 | cover | varchar | 255 | 0 | Y | N | 封面 | |
7 | room_unit_price | int | 10 | 0 | Y | N | 0 | 房间单价 |
8 | number_of_rooms | int | 10 | 0 | Y | N | 0 | 房间数量 |
9 | hotel_address | varchar | 64 | 0 | Y | N | 酒店地址 | |
10 | details_introduction | longtext | 2147483647 | 0 | Y | N | 详情介绍 | |
11 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
12 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hotel_rating_id | int | 10 | 0 | N | Y | 酒店评分ID | |
2 | hotel_name | varchar | 64 | 0 | Y | N | 酒店名称 | |
3 | room_name | varchar | 64 | 0 | Y | N | 客房名称 | |
4 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
5 | cover | varchar | 255 | 0 | Y | N | 封面 | |
6 | room_unit_price | int | 10 | 0 | Y | N | 0 | 房间单价 |
7 | rating_date | date | 10 | 0 | Y | N | 评分日期 | |
8 | check_in_users | int | 10 | 0 | Y | N | 0 | 入住用户 |
9 | customer_rating | varchar | 64 | 0 | Y | N | 顾客评分 | |
10 | number_of_raters | varchar | 64 | 0 | Y | N | 评分人数 | |
11 | rating_content | text | 65535 | 0 | Y | N | 评分内容 | |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | gender | varchar | 64 | 0 | Y | N | 性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | room_type_id | int | 10 | 0 | N | Y | 房间类型ID | |
2 | room_type | varchar | 64 | 0 | Y | N | 房间类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表sensitive_vocabulary (敏感词汇)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | sensitive_vocabulary_id | int | 10 | 0 | N | Y | 敏感词汇ID | |
2 | sensitive_vocabulary | varchar | 64 | 0 | Y | N | 敏感词汇 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
整个餐饮酒店推荐系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 餐饮酒店推荐系统详细设计与实现
餐饮酒店推荐系统的详细设计与实现主要是根据前面的餐饮酒店推荐系统的需求分析和餐饮酒店推荐系统的总体设计来设计页面并实现业务逻辑。主要从餐饮酒店推荐系统界面实现、业务逻辑实现这两部分进行介绍。
4.1用户功能模块
4.1.1 前台首页界面
当进入餐饮酒店推荐系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,其次是餐饮信息推荐。系统主界面展示如下图4-1所示。
![](https://i-blog.csdnimg.cn/direct/de02b0fcc1964f2eae844a2a8783aaac.png)
图4-1 前台首页界面图
4.1.2 用户注册界面
餐饮酒店推荐系统的游客和普通用户时可以进行注册登录,当用户右上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-2所示。
![](https://i-blog.csdnimg.cn/direct/aa6a8ab400f94235b2170cccd7063b26.png)
图4-2注册界面图
注册代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
4.1.3 用户登录界面
餐饮酒店推荐系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当普通用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到餐饮酒店推荐系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。
![](https://i-blog.csdnimg.cn/direct/f3bf26ef9b1149b5b6d058a44dc3e911.png)
图4-3用户登录界面图
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
当访客点击餐饮酒店推荐系统中导航栏上的“系统公告”后将会进入到该“系统公告”列表的界面,然后选择想要看的系统公告,点击进入到详细界面。系统公告展示界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/ee2a3f36359a4efcb00c53d1b118469a.png)
图4-4系统公告展示界面图
用户可以查看餐饮信息,在查询到自己想要了解的餐饮信息的时候,可以进入查看详细的介绍,支持用户对喜欢的餐饮信息进行评分、下单购买、点赞、收藏、评论的功能。餐饮信息详情界面如下图4-6所示。
![](https://i-blog.csdnimg.cn/direct/c853aed7ad004f6283a6bee1e147be5d.png)
图4-6餐饮信息详情界面图
餐饮评分界面如下图4-7所示。
![](https://i-blog.csdnimg.cn/direct/8fe3b2d97c6a48029bbf363cd8853ae0.png)
图4-7餐饮评分界面图
下单购买界面如下图4-8所示。
![](https://i-blog.csdnimg.cn/direct/4c3ee2630e47427c9a301d431278dffc.png)
图4-8下单购买界面图
4.1.6 酒店信息详情界面
用户可以查看酒店信息信息,在查询到自己想要了解的酒店信息的时候,可以进入查看详细的介绍,支持用户对酒店信息信息进行评分、下单购买、点赞、收藏、评论的功能。酒店信息详情界面如下图4-9所示。
![](https://i-blog.csdnimg.cn/direct/5e3c63fd387a4c1c9d710b19de2b9cb3.png)
图4-9 酒店信息详情界面图
酒店评分界面如下图4-10所示。
![](https://i-blog.csdnimg.cn/direct/e5dd293e11f14027955827df8633066c.png)
图4-10 酒店评分界面图
酒店订房入住界面如下图4-11所示。
![](https://i-blog.csdnimg.cn/direct/b7f7ed1a77ef4a83865c4ce65a9d9c00.png)
图4-11 酒店订房入住界面图
4.1.7个人中心界面
当用户点击右上角“我的”这个按钮,会出现子菜单,点击“个人中心”可以对个人首页、美食评分、美食订单、酒店评分、入住订单、退房信息和自己收藏的信息进行设置管理。个人中心首页界面如下图4-12所示。
![](https://i-blog.csdnimg.cn/direct/43d6f079b5414dc799d58ee83b15b649.png)
图4-12个人中心首页界面图
4.2管理员功能模块
4.2.1系统用户界面
餐饮酒店推荐系统中的管理人员在“系统用户”这一菜单是中可以对注册的游客用户以及管理员进行管控。界面如下图4-13所示。
![](https://i-blog.csdnimg.cn/direct/64b381c7bab34a87acf2282f806e7375.png)
图4-13用户管理界面图
查询用户关键代码如下:
def Get_list(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
if "page" in query:
config_plus["page"] = query.pop("page")
if "size" in query:
config_plus["size"] = query.pop("size")
if "orderby" in query:
config_plus["orderby"] = query.pop("orderby")
if "like" in query:
config_plus["like"] = query.pop("like")
if "groupby" in query:
config_plus["groupby"] = query.pop("groupby")
count = self.service.Count(query)
lst = []
if self.service.error:
return {"error": self.service.error}
elif count:
lst = self.service.Get_list(query,
obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
self.interact_list(ctx, lst)
return {"result": {"list": lst, "count": count}}
4.2.2 餐饮信息管理界面
管理员点击“餐饮信息”会显示出所有的餐饮信息,支持选择美食名称、美食分类等对信息进行查询,如果想要添加新的餐饮信息,点击“添加”按钮,输入美食名称、美食分类、制作材料、美食价格、店铺名称、店铺地址、美食介绍等信息,点击“提交”按钮就可以添加了,同时可以选择某一条餐饮信息,点击“删除”进行删除,也可以对用户提交的餐饮信息评论的信息进行管控。界面如下图4-14所示。
![](https://i-blog.csdnimg.cn/direct/f07659b8c9244618a12675181714aca5.png)
图4-14餐饮信息管理界面图
4.2.3系统管理界面
管理人员在“系统管理”这一菜单下是可以对餐饮酒店推荐系统内的轮播图进行添加修改的,其管理界面如下图4-15所示。
![](https://i-blog.csdnimg.cn/direct/2fef46d7d42243ac846e524a64f8b82e.png)
图4-15系统轮播图管理界面图
5系统测试
5.1 系统测试用例
系统测试包括:用户登录功能测试、餐饮信息展示功能测试、餐饮信息添加、酒店信息搜索、密码修改、美食评分功能测试,如表5-1、5-2、5-3、5-4、5-5、5-6所示:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
餐饮信息查看功能测试:
表5-2 餐饮信息查看功能测试表
用例名称 | 餐饮信息查看 |
目的 | 测试餐饮信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击餐饮信息列表 |
预期结果 | 可以查看到所有餐饮信息信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加餐饮信息界面测试:
表5-3 管理员添加餐饮信息界面测试表
用例名称 | 添加餐饮信息测试用例 |
目的 | 测试餐饮信息添加功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员点击餐饮信息,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的餐饮信息 |
实际结果 | 实际结果与预期结果一致 |
酒店信息搜索功能测试:
表5-4酒店信息搜索功能测试表
用例名称 | 酒店信息搜索测试 |
目的 | 测试酒店信息搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的酒店信息 |
实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
美食评分功能测试:
表5-6美食评分功能测试表
用例名称 | 美食评分测试用例 |
目的 | 测试用户美食评分功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)搜索查看餐饮信息,点击评分。 2)填写美食评分信息,点击进行提交。 |
预期结果 | 美食评分成功 |
实际结果 | 实际结果与预期结果一致 |
通过编写餐饮酒店推荐系统的测试用例,已经检测完毕用户登录功能测试、餐饮信息展示功能测试、餐饮信息添加、酒店信息搜索、密码修改、美食评分功能测试,通过这6大模块为餐饮酒店推荐系统的后期推广运营提供了强力的技术支撑。
通过基于用户评价的餐饮酒店推荐系统的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。
系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
[1]孔垂炼.云南旅游经济持续“红”[N].云南经济日报,2024-01-04(A01).
[1]Holsteg S ,Askeridis M J ,Krajewski J , et al.Virtual reality roleplays for patients with depression: A user experience evaluation[J].Internet Interventions,2024,35100713-.
[2]刘浩.基于用户行为的多元数据推荐方法研究[D].山东大学,2023. DOI:10.27272/d.cnki.gshdu.2023.007191.
[3]周茜,刘力,魏帅等.基于用户评价的网络餐饮商户评分模型构建[J].食品工业,2023,44(07):236-239.
[4]郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.
[5]罗昕东.基于MacBERT的餐饮评论情感分析研究[D].大连交通大学,2023.DOI:10.26990/d.cnki.gsltc.2023.000798.
[6]苏忻洁.考虑评分与流行度偏差的用户个性化推荐研究[D].哈尔滨商业大学,2023.DOI:10.27787/d.cnki.ghrbs.2023.000404.
[7]曾俊杰.基于用户评价数据的Y系列产品用户画像研究[D].昆明理工大学,2023.DOI:10.27200/d.cnki.gkmlu.2023.000450.
[8]Yegulalp S .Plunge into Python with 'Python Crash Course 3rd Edition'[J].InfoWorld.com,2023,
[9]Tyson M .Error tracking with Sentry, Python, and Django[J].InfoWorld.com,2022,
[10]代小会.基于双边用户评价的网络招聘平台信息推荐服务评价研究[D].浙江师范大学,2022.DOI:10.27464/d.cnki.gzsfu.2022.000490.
[11]董林芳.基于英文用户评价的玩具与游戏推荐系统的设计与实现[D].北京邮电大学,2022.DOI:10.26969/d.cnki.gbydu.2022.001583.
[12]陈耀东.基于网络用户评价的云南咖啡品牌管理问题与对策研究[D].云南大学,2022.DOI:10.27456/d.cnki.gyndu.2022.001274.
[13]常苗.基于用户评价的生鲜电商商品综合排序算法研究[D].华东师范大学,2022.DOI:10.27149/d.cnki.ghdsu.2022.002076.
[14]邱红丽,张舒雅.基于Django框架的web项目开发研究[J].科学技术创新,2021,(27):97-98.
[15]曹华强.基于情感分析的餐饮行业推荐系统设计与实现[D].重庆邮电大学,2021.DOI:10.27675/d.cnki.gcydx.2021.000973.
[16]毕洁昊.基于用户感知的个性化推荐系统推荐效果评价[D].中国石油大学(北京),2021.DOI:10.27643/d.cnki.gsybu.2021.001469.
[17]杜伍.个性化推荐算法的研究和实现[D].长江大学,2021.DOI:10.26981/d.cnki.gjhsc.2021.000194.
[18]汪洋,姜新通.MVC框架在Python与Django下的设计研究[J].电脑与信息技术,2021,29(01):55-57+63.DOI:10.19414/j.cnki.1005-1228.2021.01.017.
[19]黄达伟.基于大数据框架的餐饮推荐系统[D].华南理工大学,2020.DOI:10.27151/d.cnki.ghnlu.2020.005030.
[20]鄢锦芳.基于用户签到数据的餐饮推荐系统研究与应用[D].中国矿业大学,2020.DOI:10.27623/d.cnki.gzkyu.2020.000672.
到此,整个基于用户评价的餐饮酒店推荐系统就算完成了,虽然过程十分艰难,但是等到都完成的时候,我感觉无比的自豪,虽然设计的系统还存在许多的纰漏,但是我已经拼劲全力,给自己的大学四年画上了一个圆满的句号。
在这里我首先要感谢的就是大学四年来所有教导我的老师,是他们教会了我许多的专业知识以及做人的道理,从一进校门对对开发系统一窍不通到现在能自主开发一个管理系统,里面包含了前台框架、后台框架、业务流程、数据结构、操作系统等各种知识,只有把他们统一运用好,才能够完成整个系统,这都是老师的功劳;其次我要感谢我的指导老师,在开发这个系统的时候,我遇到了无数的问题,经常通过线上、线下的方式去请教导师,每次去请教导师,他从来没有不耐烦,都是细心的引导,告诉我怎么样实现这个功能,怎么样才能使得系统更加完善,然后通过自己查询相关资料解决问题,提高了自己自主解决问题的能力,授人以鱼不如授人以渔,指导老师的这种工作态度受益终生,我也会向老师不断靠拢,向他学习,在此我只想说一句:“老师,谢谢您,您辛苦了”!最后我还要感谢我的室友、同学,在一起学习这四年,他们不但学习上给了我很多建议,在生活上更加给了我帮助,正是有他们的帮助,我的大学生涯才如此完美。
最后,希望自己在未来的道路上能够越走越远,不辜负在大学的学习以及老师们的细致的教导,追风赶月莫停留,平荒尽处是春山。