基于Android技术的名厨到家app系统的设计与实现.docx
《基于Android技术的名厨到家app系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android技术的名厨到家app系统的设计与实现.docx(45页珍藏版)》请在冰豆网上搜索。
![基于Android技术的名厨到家app系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-5/25/76955d68-5105-44af-8632-49331dbe9f4e/76955d68-5105-44af-8632-49331dbe9f4e1.gif)
基于Android技术的名厨到家app系统的设计与实现
基于Android技术的名厨到家
app系统的设计与实现
摘要
名厨到家app是一款手机软件,专门为那些不会做饭的人或者工作比较忙的人设计的。
我想集结一批经过专业认证厨师,他们擅长各系特色菜.他们专门为那些吃饭特别讲究的人提供上门服务,根据他们的要求,为他们做上他们想吃的可口的饭菜。
本论文先是介绍了绪论,包括本系统的课题背景及意义,课题研究的现状。
接着介绍了开发工具及相关技术,包括eclipse、myeclipse、MySQL以及json技术。
在接着介绍了需求分析,包括功能模块的需求分析,系统的业务流程,使用Rose进行业务建模。
然后介绍了系统的设计,包括本系统体系结构的总体设计,系统的功能设计,安全设计等。
之后介绍了系统的实现,包括主要功能的实现,例如订单功能的实现,菜系信息管理的功能实现等。
最后,介绍了系统的测试,包括我的订单功能系统的测试,用户管理功能的系统测试。
最后介绍了结论和致谢。
关键词名厨到家;Android;UML;MySql
1绪论
1.1课题背景及意义
当今时代科技发展迅速,智能手机对于当下的人们并不陌生。
就是由于智能手机的出现,手机上的APP应用如雨后春笋般的爆发式增长。
目前,各行各业都在和互联网结合,比如:
“互联网+医疗”、“互联网+农业”、互联网电子商务。
随着智能手机的普及,手机在我们的生活中逐渐占据了更加重要的地位,各种各样的手APP也孕育而生,如果能将名厨到家系统布局于智能手机上,不仅能方便地让客户足不出户便可浏览菜单、学习厨艺和下单,而且可以节约时间,提高效率。
日常工作期间,人们生活就餐的类型大概就是自己做饭、叫外卖或者去一些餐馆,但是进入移动互联网这个时代,人们似乎找到一种新的吃饭方式,就是请专业的厨师上门做饭。
我们只需支付服务费便能邀请厨师上门做菜,不仅能亲身与厨师交流,还是学到做菜的精髓,这种餐饮模式无疑成为当今的一种新潮流。
于是,针对他们有这样的需求,我设计这样一款厨师上门服务app软件——名厨到家。
我的目的是想通过名厨到家app集结一批经过专业认证,擅长各系特色菜的厨师.专门为那些吃饭特别讲究、特别注重饮食的人提供上门服务,根据他们的要求,为他们做上他们想吃的可口的饭菜。
1.2课题研究的现状
最近几年,餐饮业飞速发展,尤其是现在外卖订餐的软件大批量的出现,比如美团外卖,饿了么,XX糯米等,正是这些订餐软件的出现,人们变得越来越依赖外卖,尤其是上班族,很多都是依赖外卖,自己懒得动手做饭,但是外卖是不是很卫生我们不是特别清楚,所以,自己买一些食材,请专门的厨师到家里去做饭,不仅自己的健康能够得到很好的保障,而且还能享受到美味可口的饭菜。
1.3论文主要内容
第一章绪论
本章主要是讲解了名厨到家APP课题背景及研究意义和课题研究的现状。
第二章开发工具及相关技术
本章主要是讲解了开发名厨到家APP用到的技术,环境以及平台介绍。
第三章需求分析
本章对名厨到家APP平台功能模块需求陈述,详细功能需求陈述以及业务建模。
第四章系统设计
本章对名厨到家APP进行了系统服务器端和客户端体系结构的设计,软件功能的设计及其数据库的设计。
第五章功能的实现
本章主要是介绍了客户端APP和后台管理系统的功能的实现。
第六章功能测试
本章主要是对登录功能模块的测试、我的订单功能模块的测试以及用户管理功能模块的测试。
第七章结论与致谢
本章主要是基于前文对名厨到家APP研究内容及成果的总结并提出对以后工作的展望。
2开发工具及相关技术
2.1Eclipse
eclipse基于java的可扩展平台,是由IBM公司开发源代码开放的一个平台。
从eclipse自身而讲,它只是一组服务和一个框架,通过组件、插件来构建一个开发环境供开发人员使用。
并且,eclipse附带了一个插件集,也就是JDK。
Eclipse是一个很不错的跨平台集成开发环境,最初主要是用于java语言的开发,后来可以通过安装不同的插件,也可以进行其他语言的开发。
2.2Myeclipse
Myeclipse是在eclipse的基础之上加了开发人员自己的插件,Myeclipse是企业级开发的工作平台,是EclipseIDE的扩展版本,它是一个非常强大的用于Java、JavaEE开发的插件集合。
Myeclipse目前支持JSP、AJAX、Struts,Spring、JavaServlet、Hibernate、JDBC数据库链接工具等多项功能的集合。
2.3MySQL
MySQL是一个大型数据库管理系统,也是目前公司最常使用的数据库之一,备受开发人员的青睐,在WEB应用开发方面,MySQL是最适用的应用软件之一。
并且,MySQL使用的sql语句是程序员在开发项目时访问数据库最常用的标准语句。
MySQL由于总体成本低、速度快、体积小,并开放源代码,一般的公司开发中小型项目开发都会适用MySQL数据库。
2.4JSON技术
JSON是一种轻量级的数据交换格式。
JSON采用完全独立于语言的文本格式,但是也使用了开发语言的习惯。
JSON容易阅读和编写,也容易被机器解析和生成,基于JSON的这些特性,所以才受很多开发人员的青睐。
2.5MVC
MVC全名是ModelViewController,是模型(model,模型表示企业数据和业务规则。
)-视图(view,视图是用户看到并与之交互的界面。
)-控制器(controller,控制器接受用户的输入并调用模型和视图去完成用户的需求)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
3需求分析
3.1需求描述
3.1.1功能模块需求描述
当今时代,科学技术飞速发展,人们的生活压力也越来越大,吃饭对于现在高压力工作的人们来说是尤为重要。
如何利用高科技让人们吃饭更节省时间,工作更有效率是我一直在思考的问题。
通过调查,有很多人想要自己做饭,吃上美味可口的饭菜,可是没有自己没有时间。
于是,我设计了名厨到家APP。
用户可以根据自己的口味在这个APP上发布自己想吃菜品的订单,也可以根据自己的口味预约厨师。
这样厨师接单后,就可以按照自己的要求做出自己想要吃的饭菜,能够节省自己的时间,提高自己的工作效率。
3.1.2系统的业务流程
1、身份认证
身份认证是用来检验用户是否成功登录系统的,如果用户没有经过身份认证将看不到个人的相关信息。
身份认证具有一下几个模块:
(1)登录:
用户在每次使用手机时,需要先进行身份认证,如果用户输入的信息与注册时填写的信息不一致,则身份认证失败,将不能查看到自己的相关信息。
用户输入手机号、注册时设置的密码,点击登录按钮,如果登录成功,跳转到首页。
(2)注册:
用户第一次使用该系统时,需要进行注册。
用户输入手机号,点击获取手机短信验证码,输入获取到的验证码,进行注册。
(3)修改密码:
用户忘记登录密码时,则不能通过身份认证,可在登录页面点击忘记密码,则会跳转到修改密码界面,用户输入手机号获取验证码,进行手机验证,然后设置新密码。
用户也可以直接点击修改密码,输入旧密码,通过验证再输入新密码。
设置成功后,就可以使用新密码进行登录。
(4)注销用户:
注销用户就是退出当前用户。
(5)退出:
退出就是退出当前应用程序。
2、订单
订单信息包括查看个人订单详情、评论订单、发布订单。
(1)查看订单:
用户通过身份认证登录成功后,可以查看自己的已完成的订单,未完成的订单,还有进行中的订单。
(2)评论订单:
用户通过身份认证登录成功后,可以对已完成的订单进行评论,并且可以打出自己的评分。
(3)发布订单:
用户通过身份认证登录成功后,可以根据自己的需求发布订单,等待厨师接单。
3、名厨
名厨包括查看厨师列表、查看厨师详情、搜索指定厨师、预约厨师等功能。
(1)厨师列表:
用户查看厨师列表,厨师列表包含所有已经在该系统中注册的厨师。
(2)厨师详情:
用户查看厨师列表,推荐、人气、资历等相关信息选择自己的感兴趣的厨师,查看厨师详细信息。
(3)搜索:
用户输入查询条件,根据查询条件查询自己需要的厨师。
(4)预约:
用户可以自己浏览了解的厨师信息,查看厨师的拿手菜,根据自己的喜好预约自己的想要的厨师。
4、菜品
(1)菜品列表:
用户查看菜品列表,菜品列表包括鲁菜、徽菜、粤菜、川菜等各大菜系。
(2)菜品详情:
用户查看菜品列表,根据自己的喜好选择菜系,查看菜品详情简介,擅长的厨师。
(3)查看菜品:
用户通过浏览菜品列表信息,查看菜品详情。
(4)评论:
用户可以对菜品进行评论。
5、寻单
(1)接单:
用户发布新的订单后,厨师可以对用户发布的订单进行接单,如果用户是预约的指定的厨师,该厨师也可以进行接单。
(2)拒单:
如果用户预约指定的厨师,用户拒绝接单。
6、用户管理
(1)管理员添加用户信息。
(2)管理员删除用户。
(3)管理员查看用户详情。
(4)根据条件查询用户。
7、厨师信息管理
(1)管理员修改厨师信息。
(2)管理员查看厨师详情。
(3)管理员根据条件查询厨师。
(4)管理员删除厨师。
8、厨师评论信息管理
(1)管理员删除用户评论。
(2)管理员查看评论详情。
(3)管理选根据条件查询评论。
9、菜品信息管理
(1)管理员添加菜品信息。
(2)管理员删除菜品信息。
(3)管理员根据条件查询菜品信息。
10、订单信息管理
(1)管理员删除订单的信息。
(2)管理员查看订单信息详情。
(3)管理员修改订单信息。
(4)管理选根据条件查询用户收藏的信息。
3.2业务建模
3.2.1业务用例建模
普通用户可以对此名厨到家APP进行操作,可以对,订单、名厨、菜品、名厨授艺等模块进行不同的操作,厨师可以对寻单模块进行操作,管理员可以进行用户管理、订单管理、菜品管理操作,以下是名厨到家APP系统业务用例图,如图3-1所示:
图3-1业务用例图
3.2.2动态建模
用户可以对名厨到家APP进行操作,可以对名厨、寻单、菜品、订单、名厨授艺、我的等模块进行不同的操作,以下是名厨到家APP系统活动图,如图3-2所示:
图3-2业务活动图
管理员可以对名厨到家APP服务器端进行操作,可以对用户信息、厨师信息、厨师评论、菜品信息、订单管理等模块进行不同的操作,以下是服务器端活动图,如图3-3所示:
图3-3业务活动图
3.2.3业务静态建模
普通用户可以对名厨到家APP进行操作,可以对菜品、名厨授艺、订单、名厨、我的等模块进行不同的操作,以下是名厨到家APP系统活动图,如图3-4所示:
图3-4类图
4系统设计
本章将基于android技术的名厨到家app系统设计与实现的客户端和服务端的模块与分析,先从系统的物理架构开始分析,再从系统的工作流和功能模块开始分析。
4.1体系结构设计
名厨到家APP系统采用了多层体系架构设计。
以下是名厨到家APP的系统结构图,如下图4-1所示:
图4-1系统体系结构图
4.2系统总体设计
客户端app总体设计,如图4-2所示:
图4-2客户端结总体设计层次方框图
名厨到家app一是与用户进行相互交互,为使用者提供较好的用户界面让用户有更好的体验,二是通过网络与服务器端进行数据交换。
名厨到家app从服务器端把数据下载下来,在通过接口把数据传输到服务器端。
系统管理员登录后台系统,可以对数据进行删除、增加、修改等操作。
客户端和服务器端通过HTTP传输协议进行JSON数据的交换。
客户端app通过HTTP协议网络编程访问mysql数据库,而后台通过JDBC技术访问数据库,这个地方涉及到服务器端和客户端app数据同步的问题。
4.1.2服务端体系结构设计
做的这个系统的服务器端模块一共包括两个功能。
第一个主要的功能是为客户端APP提供数据服务接口,客户端调用服务器端的接口,从数据库中获取名厨、菜品、订单等数据信息,然后把数据信息显示在客户端手机界面上。
第二个功能就是实现动态数据的维护,包括厨师信息管理、菜品信息管理、用户信息管理、订单信息的管理等。
如图4-3所示:
图4-3服务器端总体设计层次方框图
4.2系统功能设计
名厨到家APP系统的设计与实现客户端包括几个功能模块:
名厨、寻单、菜品、名厨授艺、订单、我的。
具体的功能模块还包括自己的附属功能结构。
服务器端包括几个功能模块:
用户管理、厨师信息管理、评论管理、菜品信息管理、收藏信息管理、订单信息管理。
4.2.1预约厨师功能
以下是预约厨师的开发类图,其中OrderCook为边界类,CookActivity为边界类,OrderController为服务类,Order为订单实体类,GetAddSql为工具类,OrderDao为数据访问类,DBUtil数据库工具类。
如图4-4所示:
图4-4预约厨师开发类图
以下是预约厨师的顺序图,其中OrderCook为边界类,CookActivity为边界类,OrderController为服务类,Order为订单实体类,GetAddSql为工具类,OrderDao为数据访问类,DBUtil数据库工具类。
如图4-5所示:
图4-5预约厨师顺序图
4.2.2寻单功能
以下是寻单的开发类图,其中FindOrder为边界类,FindOrderActivity为边界类,FindOrderListServlet为服务类,Order为订单实体类,GetAddSql为工具类,OrderDao为数据访问类,DBUtil数据库工具类。
如图4-6所示:
图4-6寻单类图
以下是寻单的顺序图,其中FindOrder为边界类,FindOrderActivity为边界类,FindOrderListServlet为服务类,Order为订单实体类,GetAddSql为工具类,OrderDao为数据访问类,DBUtil数据库工具类。
如图4-7所示:
图4-7寻单顺序图
4.3数据库设计
名厨到家系统有很多数据需要处理,因此数据库的设计显得尤为重要,设计的实体有订单、浏览数量、用户信息、厨师信息、收藏信息、视频评论信息、菜品评论信息、视频信息、菜品信息、管理员信息等。
4.3.1数据库逻辑结构设计
数据库逻辑结构设计,E-R图,如图4-8所示:
图4-8E-R图
4.3.2数据库表设计
根据该系统的功能划分,共有13张表,该系统的数据库名称为:
cook。
(1)用户基本信息表(user_table)。
包含属性:
用户编号、性别、经度、纬度、密码、头像、身份、用户名、积分、信誉、手机号。
用户基本信息主要用于记录用户的基本信息,表结构见表4-1。
表4-1用户基本信息表
字段名
数据类型
长度
允许为空
注释
user_id
int
11
是
用户编号
username
varchar
10
是
用户名
续表4-1
字段名
数据类型
长度
允许为空
注释
password
varchar
20
是
密码
phonenumber
varchar
15
是
手机号
phonenumber
varchar
15
是
手机号
sex
varchar
2
是
性别
avatar
varchar
80
否
头像
credibility
int
11
是
信誉
integral
int
11
是
积分
identity
int
11
是
身份
latitude
double
0
否
纬度
longitude
double
0
否
经度
(2)订单信息表(order_table),包含属性:
订单编号、用户编号、厨师编号、定价、
交易价格、用餐时间、要求、用餐类型、地址、订单类型、订单状态、发布时间。
订单信息表主要是用来记录用户的订单信息,表结构见下表4-2。
表4-2订单信息表
字段名
数据类型
长度
允许为空
注释
order_id
int
11
否
订单编号
user_id
int
11
是
用户编号
cook_id
int
11
是
厨师编号
budget_price
int
20
是
定价
transaction_price
int
20
是
交易价格
use_time
varchar
25
是
用餐时间
meal_type
varchar
10
是
用餐类型
requirement
varchar
300
是
要求
address
varchar
100
是
地址
续表4-2
字段名
数据类型
长度
允许为空
注释
publish_time
datetime
0
是
发布时间
order_status
varchar
10
是
订单状态
order_type
varchar
10
是
订单类型
(3)菜品信息表(food_table),包含属性:
菜品编号、菜品名字、菜系、菜品内容、菜品图片。
菜品信息表主要是用来记录管理员上传的菜品信息,表结构见下表4-3。
表4-3菜品信息表
字段名
数据类型
长度
允许为空
注释
food_id
int
11
否
菜品编号
food_name
varchar
15
是
菜品名字
cuisine
varchar
6
是
菜系
food_info
varchar
800
是
菜品信息
food_pic
varchar
80
是
菜品图片
(4)厨师信息表(cook_table),包含属性:
厨师编号、真实姓名、菜系、服务范围、服务时间、推荐指数、经度、得分、工作时间、自我评价、经度、纬度、批准状态。
厨师信息表主要是用来记录厨师的基本信息,表结构见下表4-4。
表4-4菜品信息表
字段名
数据类型
长度
允许为空
注释
cook_id
int
11
否
厨师编号
real_name
varchar
20
否
真实姓名
skill
varchar
30
否
菜系
service_range
varchar
50
否
服务范围
service_time
varchar
50
否
服务时间
续表4-4
字段名
数据类型
长度
允许为空
注释
recommend_level
int
11
否
推荐指数
score
int
11
否
得分
work_year
int
11
否
工作时间
personal_profile
varchar
300
否
自我评价
approve_status
int
11
否
批准状态
cook_latitude
double
0
是
纬度
cook_longitude
double
0
是
经度
(5)视频浏览数量信息表(browse_num_table)
视频浏览数量信息表主要是用来记录用户浏览视频的数量,表结构见下表4-5。
表4-5视频浏览数量信息表
字段名
数据类型
长度
允许为空
注释
video_id
int
11
是
视频编号
user_id
int
11
是
用户编号
(6)收藏信息表(collect_table),包含属性:
用户编号、收集类型、收集目标编号。
收藏信息表主要是用来记录用户收藏信息,表结构见下表4-6。
表4-6收藏信息表
字段名
数据类型
长度
允许为空
注释
collect_id
int
11
否
收集编号
user_id
int
11
是
用户编号
collect_type
varchar
5
是
收集类型
collect_target_id
int
20
是
收集目标编号
(7)评论信息表(cook_comment),包含属性:
评论编号、用户编号、厨师编号、评论内容、评论时间、评论分数。
评论信息表主要是用来记录用户对菜品对厨师的评论,表结构见下表4-7。
表4-7评论信息表
字段名
数据类型
长度
允许为空
注释
cook_comment_id
int
11
否
评论编号
user_id
int
11
是
用户编号
cook_id
int
11
是
厨师编号
cook_comment_info
varchar
300
是
评论内容
comment_time
datetime
0
是
评论时间
comment_score
decimal
11
是
评论分数
(8)厨师拿手菜信息表(cook_food_table)
厨师拿手菜信息表主要是用来记录录厨师擅长的菜品,表结构见下表4-8。
表4-8厨师拿手菜信息表
字段名
数据类型
长度
允许为空
注释
cook_food_id
int
11
否
编号
字段名
数据类型
长度
允许为空
注释
food_id
int
11
是
菜品编号
cook_id
int
11
是
厨师编号
skilled_status
int
11
是
熟练程度
(9)管理员信息表(manager_table),包含属性:
管理员姓名、管理员手机号、管理员密码、管理员邮箱。
管理员信息表主要是用来记录管理员的基本信息,表结构见下表4-9。
表4-9管理员信息表
字段名
数据类型
长度
允许为空
注释
manager_name
varchar
11
否
管理员姓名
续表4-9
字段名
数据类型
长度
允许为空
注释
manager_password
varchar
45
否
管理员密码
manager_phonenumber
varchar
45
是
管理员手机号
manager_email
varchar
45
是
管理员邮件
(10)发布订单信息表(publish_order_table)
发布订单信息表主要是用来记录用户发布的订单信息,表结构见下表4-10。
表4-10发布订单信息表
字段名
数据类型
长度
允许为空
注释
publish_id
int
11
否
编号
order_id
int
11
是
订单编号
cook_id
int
11
是
厨师编号
字段名
数据类型
长度
允许为空
注释
cook_offer
int
20
是
厨师要价
(11)视频评论信息表(video_comment),包含属性:
视频编号、视频标题、视频信息、浏览量、点赞数量、踩的数量、视频地址。
视频评论信息表主要是用来记录用户对视频评论的信息,表结构见下表4-11。
表4-11视频评论信息表
字段名
数据类型
长度
允许为空
注释
video_comment_id
int
11
否
厨艺视频编号
user_id
int
1