本系统采用了nodejs语言的express框架,数据采用MySQL数据库进行存储。进行开发设计,功能强大,界面化操作便于上手。本系统具有良好的易用性和安全性,系统功能齐全,可以满足饮食分享管理的相关工作。
前端技术:nodejs+vue+elementui,
Express 框架于Node运行环境的Web框架,
语言 node.js
框架:Express
前端:Vue.js
数据库:mysql
数据库工具:Navicat
开发软件:VScode
视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正常。
代码结构讲解
1、 node_modules文件夹(有npn install产生)
这文件夹就是在创建完项目后,cd到项目目录执行npm install后生成的文件夹,下载了项目需要的依赖项。
2、package.json文件
此文件是项目的配置文件(可定义应用程序名,版本,依赖项等等)。node_modules文件夹下的依赖项是从哪里知道的呢?原因就是项目根目录下的这个package.json文件,执行npm install时会去找此文件中的dependencies,并安装指定的依赖项。
3、public文件夹(包含images、javascripts、stylesheets)
这个文件夹做过Web开发的应该一看就知道,为了存放图片、脚本、样式等文件的。
4、routes文件夹
用于存放路由文件。
5、views文件夹
存放视图。
随着网络科技的不断发展以及人们经济水平的逐步提高,计算机如今已成为人们生活中不可缺少的一部分,为饮食分享轻松便捷的管理信息,基于java技术的饮食分享的设计与实现了一款简洁、轻便的管理系统。本系统解决了饮食分享管理事务中的主要问题,包括首页、个人中心、用户管理、菜品分类管理、菜谱信息管理、笔记信息管理、留言板管理、饮食论坛、趣味答题管理、试题管理、系统管理、考试管理等功能。目 录
目 录 2
1 绪 论 1
1.1研究背景和意义 1
1.2拟解决的问题及特性 1
1.3论文的结构 2
2 相关技术简介及部署环境说明 3
2.1 nodejs语言 3
2.2 express框架 3
2.3 MySQL简介 3
2.5系统的开发环境 4
2.6小结 4
3需求分析 6
3.1系统的可行性分析 6
3.2系统需求分析 6
3.3开发目标 7
3.4系统流程设计 7
3.4.1 用户登录流程 7
3.4.2 系统操作流程 8
3.5小结 9
4 系统总体设计 10
4.1系统功能结构设计图 10
4.2 数据库设计与实现 10
4.2.1 概念模型设计 11
4.2.2 系统数据表设计 13
小结 20
5 系统详细设计与实现 21
5.1系统功能实现 21
5.2后台模块实现 23
5.2.1管理员模块实现 23
5.2.2用户模块实现 28
5.3 小结 29
6 系统测试 30
6.1软件测试的定义 30
6.2测试方法 30
6.3测试过程 30
6.4测试结果 31
6.5小结 31
参考文献 33
致 谢 34
1 绪 论
1.1研究背景和意义
随着科学技术的不断发展,计算机现在已经成为了社会的必需品,人们通过网络可以获得海量的信息,这些信息可以和各行各业进行关联,饮食分享平台也不例外,它给饮食分享管理带来了更多的选择和便捷。然而,因2019年末的新冠疫情席卷全球,加重了全世界经济的不稳定性并严重影响了电子商务平台的准确度。为解决这样的问题,饮食分享平台应运而生并快速发展,目前已成为众多公司的应用模块,同时也引起了学术界的长期关注[1]。
1.2拟解决的问题及特性
面对高重复性机械性的工作,工作人员不可避免的会出现失误,而改正失误的成本也相当高。这些都为饮食分享管理工作带来了新的问题[1]。从而急需开发一款这样的系统来解决这些问题,对高速发展的技术有着更强的适应性,只需要维护更新得当,大大的降低了人力成本。饮食分享平台有以下几个特性:
(1)高自由度:饮食分享平台是一种人性化设计的系统,可以根据用户的需要来添加不同功能的组件和界面,让饮食分享平台更加的符合操作者的使用习惯,提供更多的便利功能。
(2)用户之间互动性强:饮食分享平台的所有用户们可以交流自己的心得。
(3)高检索率:传统管理信息检索也需要系统的支持,不过纸质载体的体积大,占地面积广,复原困难等问题,就算检索到了位置,也会出现找不到资源的情况,饮食分享平台可以不受物理空间的限制,能储存的资料也没有空间的限制,大大的提高了资源搜索效率。
(4)节省资源:传统饮食分享管理需要消耗大量人力对信息进行编辑管理,费人,费时,费力。而饮食分享平台这些缺陷都没有,还节省了大量资源。极大地提高工作效率,可以精确查询和编辑各类信息,能更快、更好地满足了他们的需求。
1.3论文的结构
本文的主体结构如下:
第一章主要对当下的饮食分享平台的背景及开发意义进行了重点论述。
第二章 重点介绍本系统的相关的开发技术,并对软件的部署环境进行必要的说明。
第三章 重点对系统进行需求分析、流程分析和可行性论述。
第四章 主要对系统整体功能进行设计和对数据库进行设计。
第五章 详细的对各个模块进行阐述,各个模块总体的设计以文字加图表的形式进行说明。
第六章 对系统的测试方法进行说明及测试结果的展示。
3需求分析
3.1系统的可行性分析
饮食分享平台的可行性分析基于当下的互联网背景,从经济、技术、法律和用户使用上进行了调查,从此验证次系统开发的可行性[6]。下面分别从以下几点进行分析:
(1)经济可行性分析:此系统所用的框架技术完全是开源的,其余的软件使用也都是免费的,在开发方面所消耗的成本可以忽略不计。而建立系统信息库所需的费用远远少于其带来的社会收益,从经济上分析系统是完全可行的。
(2)技术可行性分析:对系统进行分析,饮食分享平台的大部分功能都需要管理员完成,系统只需要添加少量代码就可以很好适配管理员功能[7]。可以提高文件的复用率,提高效率。在数据库方面,ORM简化了表的创建和使用,采用了Oracle旗下开源的关系型数据管理系统MySQL,多表存储的特点使数据更加规范化,增删改查更容易[8]。综上所述,技术开发上并无太大的难点。
(3)用户使用可行性分析:鉴于系统的使用用户,有统一的账号和密码,且系统无需用户有过多的操作,界面清晰简洁,用户使用可行性上无问题。
(4)法律可行性分析:即分析本系统是否与各类法律相悖。本系统使用市面开源免费软件开发,且作为个人毕设,无商用,均为本人自主开发,并且页面设计合理,发布的信息要求符合常规。整个系统无抵触法律法规的问题。因此在法律上,本系统可行。
3.2系统需求分析
需求分析在系统开发中有着十分重要的作用[9]。软件项目凭借软件工程的思想和步骤可以大大的提高开发效率,缩短软件开发周期,保证了软件项目的质量。需求分析作为软件工程方法中的一步是至关重要的。软件需求工程是一门分析并记录软件需求的学科[10]。需求分析简单的来说就是用户需要什么,系统需要什么,对此进行问题的列举,等级的排列,需要缜密的思分析和大量的调研[11]。
饮食分享平台在国内有很多值得借鉴的例子,功能也都趋于完善,因此此次饮食分享平台将轻量化开发,要完成以下功能:
(1)要支持完整的用户注册,登录功能,账号的管理通过管理员来实现。
(2)饮食分享平台的前端页面简单明了,功能让用户快速上手,一目了然,不需要教程也能直接使用。
(3)为了用户能够方便的搜寻信息。
(4)管理员通过后台系统来完成对饮食分享信息的编辑,包括添加、删除等操作。
3.3开发目标
饮食分享平台主要开发目标如下:
(1)对零碎化、分布散的饮食分享信息进行收纳、整理,通过网络服务平台使这些信息内容更加调理,更加方便化和清晰化,让访问该系统的每个用户享受浏览的过程。
(2)生活中存在的一些现象:人员冗余。饮食分享平台应尽量减少用户的需求压力,给他们提供省时省力省心的服务平台,降低其工作量。
(3)便于查询信息及管理信息等。
(4)通过计算机网络技术,提升解决管理问题和技术工作的质量,为用户一种规范方便的服务。
(5)该系统的面向社会为用户,系统的设计风格应该简约整洁,操作容易上手,目标信息明确,避免花里胡哨。
(6)为社会稳定和发展贡献一份力量。
3.4系统流程设计
3.4.1 用户登录流程
登录流程实现了用户的登录,在登录页面需要用户填写自己的信息,前端页面会将信息传递给后端接口,然后查询数据库确定该身份有效后登录成功,否则此用户登录失败,需要重新填写信息,进行再次验证,如图3-1所示。
图4-6饮食论坛实体图
4.2.2 系统数据表设计
数据库表的设计通常是根据业务逻辑设置的。数据库模型在数据库中设计,并根据模型创建数据库表。数据库包涵了以下数据表来实现了对数据库的存储、调用。以下分别列出数据表的每个字段名称、类型、长度、字段说明、主键、默认值。
表4-1:配置文件
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
name varchar 100 配置参数名称
value varchar 100 配置参数值
表4-2:用户
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
zhanghao varchar 200 账号
mima varchar 200 密码
xingming varchar 200 姓名
xingbie varchar 200 性别
youxiang varchar 200 邮箱
shoujihaoma varchar 200 手机号码
touxiang longtext 4294967295 头像
表4-3:聊天助手表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
ask varchar 200 提问
reply longtext 4294967295 回复
表4-4:用户表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
username varchar 100 用户名
password varchar 100 密码
role varchar 100 角色 管理员
addtime timestamp 新增时间 CURRENT_TIMESTAMP
表4-5:在线咨询
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 用户id
adminid bigint 管理员id
ask longtext 4294967295 提问
reply longtext 4294967295 回复
isreply int 是否回复
表4-6:token表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
userid bigint 用户id
username varchar 100 用户名
tablename varchar 100 表名
role varchar 100 角色
token varchar 200 密码
addtime timestamp 新增时间 CURRENT_TIMESTAMP
expiratedtime timestamp 过期时间 CURRENT_TIMESTAMP
表4-7:菜谱信息
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
caipumingcheng varchar 200 菜谱名称
caipinfenlei varchar 200 菜品分类
caipufengmian longtext 4294967295 菜谱封面
kouwei varchar 200 口味
cailiao varchar 200 材料
zhizuogongyi varchar 200 制作工艺
shiyingrenqun varchar 200 适应人群
gongxiaoyingyang varchar 200 功效营养
caipuxiangqing longtext 4294967295 菜谱详情
thumbsupnum int 赞 0
crazilynum int 踩 0
clicktime datetime 最近点击时间
表4-8:公告信息
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
title varchar 200 标题
introduction longtext 4294967295 简介
picture longtext 4294967295 图片
content longtext 4294967295 内容
表4-9:关于我们
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
title varchar 200 标题
subtitle varchar 200 副标题
content longtext 4294967295 内容
picture1 longtext 4294967295 图片1
picture2 longtext 4294967295 图片2
picture3 longtext 4294967295 图片3
表4-10:菜品分类
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
caipinfenlei varchar 200 菜品分类
表4-11:留言板
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 留言人id
username varchar 200 用户名
avatarurl longtext 4294967295 头像
content longtext 4294967295 留言内容
cpicture longtext 4294967295 留言图片
reply longtext 4294967295 回复内容
rpicture longtext 4294967295 回复图片
表4-12:收藏表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 用户id
refid bigint 商品id
tablename varchar 200 表名
name varchar 200 名称
picture longtext 4294967295 图片
type varchar 200 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) 1
inteltype varchar 200 推荐类型
remark varchar 200 备注
表4-13:笔记信息
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
biaoti varchar 200 标题
biaoqian varchar 200 标签
bijineirong longtext 4294967295 笔记内容
jiluriqi date 记录日期
zhanghao varchar 200 账号
xingming varchar 200 姓名
表4-14:饮食论坛
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
title varchar 200 帖子标题
content longtext 4294967295 帖子内容
parentid bigint 父节点id
userid bigint 用户id
username varchar 200 用户名
avatarurl longtext 4294967295 头像
isdone varchar 200 状态
表4-15:考试记录表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
userid bigint 用户id
username varchar 200 用户名
paperid bigint 趣味答题id(外键)
papername varchar 200 趣味答题名称
questionid bigint 试题id(外键)
questionname varchar 200 试题名称
options longtext 4294967295 选项,json字符串
score bigint 分值 0
answer varchar 200 正确答案
analysis longtext 4294967295 答案解析
myscore bigint 试题得分 0
myanswer varchar 200 考生答案
表4-16:试题表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
paperid bigint 所属趣味答题id(外键)
papername varchar 200 趣味答题名称
questionname varchar 200 试题名称
options longtext 4294967295 选项,json字符串
score bigint 分值 0
answer varchar 200 正确答案
analysis longtext 4294967295 答案解析
type bigint 试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空) 0
sequence bigint 试题排序,值越大排越前面 100
表4-17:趣味答题表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
name varchar 200 趣味答题名称
time int 考试时长(分钟)
status int 趣味答题状态 0
表4-18:菜谱信息评论表
字段名称 类型 长度 字段说明 主键 默认值
id bigint 主键 主键
addtime timestamp 创建时间 CURRENT_TIMESTAMP
refid bigint 关联表id
userid bigint 用户id
avatarurl longtext 4294967295 头像
nickname varchar 200 用户名
content longtext 4294967295 评论内容
reply longtext 4294967295 回复内容
小结
本章刚开始总结了整个系统的总体功能,以树型图展示出来,使得看上去更加清晰明朗,而后介绍了每一个模型的属性和对数据库表的设计。随着时代的发展和需求的不断提高,饮食分享平台应对的数据量将越来越庞大,数据结构也会越来越复杂,因此本文所提出的饮食分享平台具有实际意义,可提高效率,减少不必要的人力财力的损失,具有一定的现实意义。
5 系统详细设计与实现
按照软件工程的流程来说,在系统的详细设计与实现阶段,要把模块、视图、模板进行相应的组合完成一个个所需的功能,此章将会把设计中模块一一说明如何设计和实现的。
6 系统测试
6.1软件测试的定义
在软件测试的过程之中,为了保证软件测试的各项工作能够安全有序地进行,就要对整个测试过程进行有效的干预或管理。
我们要清楚的是,无论从理论上,还是从经验上,我们都无法发现软件系统中的所有错误,一个软件系统必定存在着缺陷,软件测试必然有一定的局限性。
6.2测试方法
系统测试不仅仅是发现系统潜在的BUG或错误,而更为重要的是为用户提供一个良好的体验和安全可使用的产品服务。而通过发现错误或潜在的问题,将有助于提升产品的竞争力,这也是软件测试的其中的重要目的之一。
尽管软件测试的方法有好几种,但现目前主要采用的是包括以功能性为主要测试方向的黑盒测试以及以逻辑性为主要测试方向的白盒测试,由于这也是二种不一样的测试方式,因此最先白盒测试是依据程序的内部结构逻辑总体设计测试测试用例的方式。 因而,也称之为构造测试和夹层玻璃实例测试,将手机软件视为全透明的黑盒,依据程序的构造和解决逻辑挑选适宜的测试实例,测试手机软件的逻辑途径和步骤, 科学研究其与设计方案是不是一致的黑盒测试主要是挑选充足的测试测试用例,充足遮盖源码,尽量多地发觉程序中产生的不正确。 关键有这两种方式。 一种称为逻辑未来展望法,另一种称为途径未来展望法。
黑盒测试:又被称为作用测试、数据驱动测试等,将精确测量目标视为白盒,彻底不考虑到程序的构造和特点,只需依据说明书查验程序的作用是不是常规应用就可以。
6.3测试过程
登录:录入登录信息,输入账号,账号密码,用户权限,然后单击登录进行操作,会出现两种情况:一种情况是登录成功,进入用户相应的功能界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作;
管理员登录:录入登录信息,管理员账号,密码,权限,然后单击登录进行操作,会出现两种情况:登录成功进入管理员具有权限的功能界面和提示登录失败。一种情况是登录成功,进入管理员界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作。
6.4测试结果
通过一系列的软件测试,系统基本上满足了需求分析中设计目标的要求。软件功能基本上是完整的,使用者表现良好,系统故障处理基本上是正确的,缺陷也可以得到纠正。然而,在测试过程中也发现了系统的一些不可改变的方面,例如, 系统的数据库没有被完全完善,用户的信息显示也不全面。与此同时,用户不能修改自己提交的管理信息。如此一来,当系统进一步修改和完善时,这些问题就必须得到纠正。
最后,该系统通过了测试。
6.5小结
本章采用的是动态测试和黑盒测试方法进行测试,查看程序在运行过程中发现可能的错误操作,用测试用例来检测应用的稳定性,安全性。并在测试过程严格按照测试标准进行测试,保证系统能够安全运行,减少差错。
结 论
本次论文介绍了开发饮食分享平台的全部过程,该系统运用了nodejs语言进行编写、MySQL数据库存储数据和express框架搭建出了一款简洁方便的饮食分享平台。对用户来说,只有简单的操作,不需要担心复杂的界面,难懂的操作来完成饮食分享平台最基本的工作,节约时间和资源。对管理员来说,可以清晰明了的检查饮食分享的管理情况,增删改查都通过后台系统完成,得益于数据库建表的工作大大简化。使得用户和管理员的工作变得更加方便简单。
由于作者的技术水平有限,还有很多问题没有解决,有一些功能还未添加:界面风格过于生硬,大片空间没有进行合理利用;总体上说,此次饮食分享平台相对于那些已经非常成熟的管理系统还差得远,只能算上一个雏形,所达到的标准只能令作者勉强满意,之后仍需继续改进,努力完成上述功能,让其成为一个可以为大众使用的,真正的饮食分享平台。
致 谢
在如此特殊时间里,我能顺利将毕业设计和论文完成,这都要归功于导师的无私的帮助,悉心的教导。为我指引方向,解答疑惑,每个问题都能得到专业的解释,让我在解惑的同时又能对语言和框架的理解更加深入。
通过这次毕业设计,我了解了怎样将理论联系到实际,收获到了许多书本上不曾有过的知识,也将知识融入自己的设计中进行了努力,拥有了成就感。
我也发觉了规划计划和查阅资料的重要性,规划计划让你每一步都有明确的目标,按照计划走能少走很多弯路,省去很多不必要的麻烦。nodejs是一门发展迅速,改动较大的语言,就需要在网络上不断寻找新的文章,合适的版本和技术逐渐完善程序,解决各种各样的小问题。
以上,毕业设计磨练了我的开发技术和理论知识,这为我以后的道路打下了坚实的基础,这段经历也会成为我人生中宝贵的财富。
最后,我要再次感谢导师对我的帮助,和同学们在我设计过程中提出的意见和建议。