2系统相关技术
2.1 Java语言简介
Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。
Java语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为"一次编译、到处执行"。当然java也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响java成为此次设计语言的选择。Java语言简单易学,使用它的编程时间短,功能性强,开发者学习起来更简便、更快。Java的主要特性有以下几个:
1.面向对象
面向对象有四个特点:封装、继承、多态、抽象。抽象是指忽略一个问题中的次要部分,关注主要部分。多态是指对同一种消息做出的不同反应。继承是指在原有的父类方法基础上增加自己独有的方法,而不改变原来父类。
2.平台无关性、
Java编译出来的是字节码,直接由虚拟机执行。在任何平台上,只要有Java虚拟机,Java代码都能运行。
3.可靠性和安全性
Java对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误。
- 多线程
Java提供了多线程功能,利用编程实现同一时间同时工作的功能。
2.2微信开发者工具
在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和逻辑层会同时被加载。微信小程序的这种逻辑方式大大的优化了页面响应速度,减少了页面加载的等待时间,提高了用户体验。微信开发者工具可以实现同步本地文件,开发调试,编译预览,上传,发布等一整套流程。
2.3 B/S架构
B/S的系统是通过能上网的电脑就可以使用,它最大的优点是不需要安装专门的软件,首先浏览器向服务器发出请求,然后服务器处理请求把信息再返回给浏览器。不需要再次对数据进行存取与计算数据,只要负责显示数据来降低要求,如果说客户端像个"瘦子",而服务器会越来越"胖"。B/S体系结构与C/S体系结构相比,最大的不同是:B/S体系的应用软件使用网络浏览器作为与用户交互的平台,而C/S则需要开发专用的应用程序。
图2-1 B/S结构图
2.4 MySQL 介绍
在软件项目,通过经营性数据的数据库,可以保证其安全,独立和数据一致,访问数据的系统来提供,所以有效减少时间程序员开发应用程序。
MySQL可以支持多线程,可以方便使用系统的资源,提高运行的速度。并提供odbc、jdbc和tcp/ ip,以各种形式连接到MySQL; 功能方面表现欠缺,规模小,但对于这个系统就足够了。
因为MySQL是源代码对外开放的,所以任何人都可以通过相应的方法下载,并根据个性化需求进行修改。 由于MySQL的速度,可靠性和适应性,MySQL受到重视。
MySQL虽然功能可能不是很强大,但由于其开源,广泛传播,导致很多人都意识到这个数据库。
2.5 SSM框架
开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。
3系统需求分析
3.1系统功能
通过前面的功能分析可以将食堂线上预约点餐系统的功能分为学生和管理员两个角色,系统的主要包括首页、个人中心、学生管理、菜品分类管理、菜品管理、关于我们管理、意见反馈、系统管理、订单管理等内容。任何用户只要进入系统不需登录也可浏览到的信息,后台管理是针对已登录的用户看到满意的食堂线上预约点餐信息而设计的。
1、一般用户的功能及权限
所谓一般用户就是指还没有注册的过客,他们可以浏览主页面上的信息。但如果要进入后台进行操作,要登录注册,只有注册成功才有的权限。
2、管理员的功能及权限
用户信息的添加和管理,食堂线上预约点餐详细信息添加和管理,文档信息添加和管理以及网站信息管理,这些都是管理员的功能。
3、系统功能结构图
系统功能结构图是系统设计阶段,系统功能结构图只是这个阶段一个基础,整个系统的架构决定了系统的整体模式,是系统的根据。食堂线上预约点餐系统的整个设计结构如图3-1所示。
图3-1系统功能结构图
3.2可行性研究
通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。
3.2.1 经济可行性
开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。
3.2.2 技术可行性
技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是java开发技术,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。
3.2.3 运行可行性
当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。
3.2.4 时间可行性
从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。
3.3系统业务过程分析
食堂线上预约点餐系统是两种身份的用户,主要涉及管理员和学生。每个身份都是操作起来都是清楚方便的。对于一些食堂线上预约点餐信息,这是任何人都可以查看的,但是如果用户想分享,则必须是已经进行登录的用户,或者想修改食堂线上预约点餐信息的话,也是需要用户为登录状态。这些用户的基本信息都由管理员对其统一管理。
根据食堂线上预约点餐实际过程的分析,网站有以下几个部分,其中用户注册,发布个人信息,修改个人信息;用户注册登录,发布食堂线上预约点餐信息;管理员管理用户信息;一般用户只可以浏览不可以发布信息。以上业务过程从用户角度可以分为两类使用本系统的用户角色,包括管理员和学生。以下针对各类用户说明相应的业务过程。
3.4系统用例图
系统用例图如下图3-2所示:
图3-2 系统业务用例图
4系统设计
4.1数据库设计
信息管理系统的效率和实现的效果完全取决于数据库结构设计的好坏。为了保证数据的完整性,提高数据库存储的效率,那么统一合理地设计数据库结构是必要的。数据库设计一般包括如下几个步骤:
(1)根据用户需求,确定数据库信息进行保存
对用户的需求分析是数据库设计的第一阶段,用户的需求调研,熟悉食堂运作流程,系统要求,这些都是以概念模型为基础的。
(2)设计数据的概念模型
概念模型与数据建模用户的观点一致,用于信息世界的建模工具。通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。
菜品实体图如图4-1所示:
图4-1菜品实体图
购物车实体图如图4-2所示:
图4-2购物车实体图
(3)数据库逻辑结构分析
数据库概念结构设计后,可以数据库概念转化实际的数据模型,这是一种数据库的逻辑结构,就是将概念结构与支持数据库管理系统的模型相符合。具体的表设计如下所示:
表4-1:系统公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-2:意见反馈
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 留言人id | |||
username | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 留言内容 | ||
cpicture | varchar | 200 | 留言图片 | ||
reply | longtext | 4294967295 | 回复内容 | ||
rpicture | varchar | 200 | 回复图片 |
表4-3:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
lianxifangshi | varchar | 200 | 联系方式 | ||
biaoti | varchar | 200 | 标题 | ||
tupian | varchar | 200 | 图片 | ||
youxiang | varchar | 200 | 邮箱 | ||
xiangqing | longtext | 4294967295 | 详情 |
表4-4:菜品评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-5:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-6:购物车表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
tablename | varchar | 200 | 商品表名 | caipin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | varchar | 200 | 图片 | ||
buynumber | int | 购买数量 | |||
price | float | 单价 | |||
discountprice | float | 会员价 |
表4-7:学生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
xuehao | varchar | 200 | 学号 | ||
mima | varchar | 200 | 密码 | ||
xueshengxingming | varchar | 200 | 学生姓名 | ||
xingbie | varchar | 200 | 性别 | ||
touxiang | varchar | 200 | 头像 | ||
xueshengshouji | varchar | 200 | 学生手机 | ||
money | float | 余额 | 0 |
表4-8:菜品分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
caipinfenlei | varchar | 200 | 菜品分类 |
表4-9:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-10:菜品
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
caipinbianhao | varchar | 200 | 菜品编号 | ||
caipinmingcheng | varchar | 200 | 菜品名称 | ||
caipinfenlei | varchar | 200 | 菜品分类 | ||
tupian | varchar | 200 | 图片 | ||
kouweipianhao | varchar | 200 | 口味偏好 | ||
jianjie | longtext | 4294967295 | 简介 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 | ||
price | float | 价格 |
表4-11: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-12:地址
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
address | varchar | 200 | 地址 | ||
name | varchar | 200 | 收货人 | ||
phone | varchar | 200 | 电话 | ||
isdefault | varchar | 200 | 是否默认地址[是/否] |
表4-13:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 收藏id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 收藏名称 | ||
picture | varchar | 200 | 收藏图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | 1 | |
inteltype | varchar | 200 | 推荐类型 |
表4-14:订单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
orderid | varchar | 200 | 订单编号 | ||
tablename | varchar | 200 | 商品表名 | caipin | |
userid | bigint | 用户id | |||
goodid | bigint | 商品id | |||
goodname | varchar | 200 | 商品名称 | ||
picture | varchar | 200 | 商品图片 | ||
buynumber | int | 购买数量 | |||
price | float | 价格 | 0 | ||
discountprice | float | 折扣价格 | 0 | ||
total | float | 总价格 | 0 | ||
discounttotal | float | 折扣总价格 | 0 | ||
type | int | 支付类型 | 1 | ||
status | varchar | 200 | 状态 | ||
address | varchar | 200 | 地址 | ||
tel | varchar | 200 | 电话 | ||
consignee | varchar | 200 | 收货人 | ||
logistics | longtext | 4294967295 | 物流 |
4.2系统整体设计
4.2.1 系统设计思想
系统确定了各项需求,完成了系统的分析和数据库的设计,它就可以根据网站的特点决定网站的发展模式,才能实现代码。通过对网站的分析,这个网站是属于一个小项目,所完成的功能相对简单,就是对数据的基本操作。从而决定采用B/S开发模式。该模型的基本过程是:当用户访问网站的浏览器,或从用户向服务器发送请求时,通过接收请求,然后调用数据访问逻辑运算如比,将结果返回给将结果返回到用户通过浏览器。
使用开发的模型时,我们要把一些常用的,可以重复使用了java技术。当用户浏览网页,很多网页上的信息是从数据库动态删除,这就要求网页必须有数据库操作的能力,如连接数据库和数据表,更新。一个网站包含多个相同的网页,实现数据库操作功能的、代码就需要在不一样的网页中重复的被使用,这样不仅降低了工作的效率,一般也会给维护带来较大的麻烦。为了弥补这一缺陷,功能代码应该在java中完整的数据库操作,可以使用在每一个页面上。
4.2.2系统流程图
下图是用户进入这个食堂线上预约点餐系统后,基本的操作流程。一进入首页便可以进行各种食堂线上预约点餐信息的浏览,用户可以根据自身的需求来找适合自己的点餐信息,如果有合适的点餐信息要进入后台操作,前提是必须是登录的用户,不然系统会提示需重新登录才可操作。用户也可通过公告的消息,了解实时的情况,这样有助于结合自身,更好的适应食堂线上预约点餐的分享需求,最后用户可以根据自己获得信息的满意程度来进行操作。
图4-3系统操作流程图
5系统详细设计
5.1前台功能模块
登录,用户通过输入用户名和密码,选择角色等信息并点击登录进行系统登录操作,如图5-1所示。
图5-1用户登录界面图
学生注册,在注册页面通过填写学号、密码、确认密码、学生姓名、性别、学生手机等信息进行注册操作;如图5-2所示。
图5-2学生注册界面图
学生登陆系统后,可以对首页、菜品、购物车、我的等功能进行详细操作,如图5-3所示。
图5-3系统首页界面图
菜品,在菜品页面可以查看菜品名称、菜品编号、菜品分类、图片、价格、口味偏好、点击次数、简介等信息,并进行加入购物车,立即订购,评论或收藏操作;如图5-4所示。
图5-4菜品界面图
购物车,在购物车页面可以查看菜品名称、菜品图片、单价、数量、总价格等信息,并进行立即下单或删除操作;如图5-5所示。
图5-5购物车界面图
学生,在我的页面可以对个人中心、我的收藏管理、用户充值、购物车、我的订单、意见反馈等详细信息进行操作,如图5-6所示。
图5-6学生功能界面图
学生信息,在学生信息页面通过填写学号、密码、学生姓名、性别、头像、学生手机等详细信息进行保存或退出登录操作,如图5-7所示。
图5-7学生信息界面图
5.2管理员功能模块
管理员登录,管理员通过输入用户名、密码,选择角色并点击登录进入系统操作界面,如图5-8所示。
图5-8管理员登录界面图
管理员登陆系统后,可以对首页、个人中心、学生管理、菜品分类管理、菜品管理、关于我们管理、意见反馈、系统管理、订单管理等功能进行相应操作,如图5-9所示。
图5-9管理员功能界面图
学生管理,在学生管理页面可以对索引、学号、学生姓名、性别、头像、学生手机等内容进行详情、修改或删除等操作,如图5-10所示。
图5-10学生管理界面图
菜品分类管理,在菜品分类管理页面可以对索引、菜品分类等内容进行修改或删除操作,如图5-11所示。
图5-11菜品分类管理界面图
菜品管理,在菜品管理页面可以对索引、菜品编号、菜品名称、菜品分类、图片、口味偏好、价格等内容进行详情,修改,查看评论或删除操作,如图5-12所示。
图5-12菜品管理界面图
关于我们管理,在关于我们管理页面可以对索引、联系方式、标题、图片、邮箱等内容进行详情,修改或删除操作,如图5-13所示。
图5-13关于我们管理界面图
系统管理,在轮播图管理页面可以对索引、名称、值等内容进行详情或修改操作,还可以对系统公告进行详细操作;如图5-14所示。
图5-14系统管理界面图
订单管理,在已支付订单页面可以对索引、订单编号、商品名称、商品图片、购买数量、价格、折扣价格、总价格、折扣总价格、支付类型、状态、下单时间等内容进行详情或核销操作,还可以对已完成订单、未支付订单、已取消订单、已退款订单进行详细操作;如图5-15所示。
图5-15订单管理界面图
6系统测试
系统测试不仅仅是发现系统潜在的BUG或错误,而更为重要的是为用户提供一个良好的体验和安全可使用的产品服务。而通过发现错误或潜在的问题,将有助于提升产品的竞争力,这也是软件测试的其中的重要目的之一。
软件测试的方法有好几种,但目前主要采用的是包括以功能为主要测试方向的黑盒测试以及以逻辑为主要测试方向的白盒测试,这是两种不同的测试方法,针对的测试侧重点不同,本课题根据实际需求情况,选择以功能为主要的黑盒测试方法,同时测试是要遵循一定的规则来执行的,一个测试要执行其执行的依据一般是由测试用例来规定的,而测试用例一般是依据需求或说明书来综合制定的,测试在硬件出厂前是十分重要的一个过程,本课题由于时间和精力的关系,选择以实现的功能作为测试要点来进行测试。具体测试过程如下:
测试用例1及测试过程:
登录:录入登录信息,账号,密码,权限,点击登录按钮,会出现两种情况:登录成功进入用户具有权限的功能界面和提示登录失败。
测试用例2及测试过程:
管理员登录:录入登录信息,管理员账号,密码,权限,点击登录按钮,会出现两种情况:登录成功进入管理员具有权限的功能界面和提示登录失败。