系统合集跳转
源码获取链接
一、系统环境
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
tomcat环境: Tomcat 7.x,8.x,9.x版本均可
操作系统环境: Windows XP/7/8//8.1/10/11或者Linux或者MacOS,2G内存以上,推荐4G,4G以上更好
用了技术框架: HTML+CSS+JavaScript+jsp+mysql+Spring+SpringMVC+mybatis+Spring boot
数据库: Mysql数据库,任意版本均可,也可使用各种数据库工具,例如Navicat等。
二、摘 要
近年来,我国计算机技术飞速发展,促进了许多产业的进步,2020年受到新冠肺炎疫情的影响,我国经济受到了剧烈影响,餐饮业更是收到了重创。在这种恶劣的大环境下外卖行业却得到了提升,在疫情最严重的时期,餐厅禁止堂食,各大小区、校园、办公楼也设立了门禁,吃饭问题只能依靠自己带和外卖,外卖事业得到了飞速的发展,但是对于封闭的校园来说,外卖人员也禁止进入校园,学生吃饭也受到了巨大影响,在此大环境下,点餐系统应运而生。
本系统采用当下比较流行的Java语言进行开发,框架采用J2EE框架进行搭建,使用B/S架构进行架构,将系统分为前台后台两个界面,前台给普通用户进行点餐,后台由管理员进行管理,设计出一款包含用户管理、商品管理、评论管理、订单管理、管理员管理(权限管理)、咨询管理、会员管理的点餐管理系统,数据库采用MySql关系型数据库进行管理。
**关键词:**点餐系统; J2EE框架; B/S架构
三、目 录
第1章 绪论 1
1.1研究背景 1
1.2研究目的 1
1.3研究现状 1
1.3.1国外研究现状 1
1.3.2国内研究现状 2
1.4论文主要研究内容 2
第2章 相关技术和理论介绍 2
2.1 开发工具 2
2.1.1 Navicat 2
2.1.2 Eclipse 3
2.1.3 Tomcat7简介 3
2.2 开发技术 3
2.2.1 Spring框架: 3
2.2.2 Mybatis 4
2.3 本章小结 4
第3章 需求分析 5
3.1 可行性分析 5
3.1.1 经济可行性 5
3.1.2 技术可行性 5
3.1.3 操作可行性 5
3.2 需求分析 6
3.3 本章小结 8
第4章 点餐系统的总体设计 9
4.1功能结构设计 9
4.2点餐系统的数据表结构 10
4.3点餐系统的数据表结构 13
4.3.1 商品种类管理表 13
4.3.2 用户管理详情表 13
4.3.3 订单信息管理表 13
4.3.4 订单详情信息表 14
4.3.5 权限信息表 14
4.3.6 商品信息表 15
4.3.7 评论信息表 15
4.4本章小结 16
第5章 点餐系统实现 17
5.1后台业务实现 17
5.1.1 用户管理模块 17
5.1.2 商品管理模块 19
5.1.3 订单管理模块 21
5.1.4 咨询管理模块 23
5.2 前台业务实现 24
5.2.1 注册登陆业务 24
5.2.2 商品查询业务 25
5.2.3 购物车业务 27
5.2.4 我的订单业务 27
5.3本章小结 28
第6章 系统测试 29
6.1软件测试的基本概念 29
6.3测试计划 29
6.3测试用例 30
6.3测试结果 31
第7章 总结 33
致 谢 34
四、主要内容
1.1研究背景
21世纪是互联网技术飞速发展的时代,特别是电子商务的兴起将人们日常生活消费方式带来了巨大的改变,人们可以足不出户就能进行网络购物,不需要再到线下进行挑选和购买商品。电子商务是互联网发展的一个里程碑,特别对于“互联网+”思维让人们思维方式发生改变[1],新型技术的发展对于传统行业造成巨大的冲击,传统餐饮业还停留在顾客到饭店去点餐吃饭的模式,非常的不方便,不但需要了解饭店位置还需要对饭店食品和价格有所了解,如果遇到恶劣天气,就更加增加了到店吃饭的难度,采用计算机去进行数据处理,数据处理非常的快速,而且保存到硬盘上数据不易丢失。并且国内受到“新冠肺炎”疫情的影响,线下销售又受到了巨大冲击,线上销售非常有必要。
1.2研究目的
随着互联网的发展,外卖系统的出现改变了这一格局,人们可以通过一部手机就可以完成在家点餐的目的,这样大大的顾客的吃饭方式,同时还提高了饭店的销量[2]。互联网+传统零售的模式大大改善了消费者和买家的经营和购买方式,双方互利互惠,而且还带动了第三产业的发展,但是大学校园相对来说是比较特殊的存在,由于送外卖的配送员大多是社会上的人员,对于大学校园来说一般情况下是不允许陌生的人员进入,如果外卖不能送到宿舍里这将失去了他原本的便利,这就极大增加了配送员的送餐效率,并且降低了学生群体点外卖的体验[3]。为了解决这些问题,本文主要对点餐系统进行研究,希望开发出一款功能完善的点餐系统。
1.3研究现状
1.3.1国外研究现状
对于国外来讲,互联网技术发展较早,早在上世纪60年代就出现了管理系统MIS系统,对于管理系统的研究国外有非常悠久的历史,利用计算机对各种事务处理、统计报表和查询统计等操作,大大代替了人工去做这些事,人工统计会出现纰漏,人工计算可能会出现偏差以及解决了纸质保存易丢失性,管理系统的出现大大解决了传统管理的问题。互联网技术经过长时间的发展和多次技术革新,网络技术已经十分成熟,像亚马逊,沃尔玛,eBay等都是享誉全球的购物网站。因此,这些网站所使用的技术,和架构理念已经得到了充分的验证,十分值得借鉴。但是由于国外高昂的人工成本和相对来说较为稀疏的人员分布密度,国外外送以及快递事业发展非常很差,就拿沃尔玛为例,它拥有自己本身的外送体系,但是价格非常高昂,一次快递的配送费需要10美元左右的价格,外包出去由他人接单配送的价格同样也非常昂贵,比中国同等距离的配送价格要贵上3倍左右的价格,这就导致了美国居民很少去点外卖,没有市场的带动就导致外卖系统发展就非常缓慢。
1.3.2国内研究现状
对于国内来说,互联网起步较晚,管理系统发展历史也较为短暂,但是由于国家政策扶持互联网技术在中国得到飞速的发展,在短暂的时间内涌现出来了大量优秀的系统,对于管理系统来说更是如此,在30年的时间里国内管理系统经历了飞快的变革,基本上每年都会出现快速的迭代了革新,由于市场需求量非常巨大,我国点餐系统发展非常的迅速,著名的点餐配送系统有饿了吗、美团等系统,它们拥有非常美观的界面,系统功能也十分完善,并且配送分配机制也十分智能,为我们系统的开发提供了良好的借鉴功能,但是其Web端和手机端差别十分巨大,而且针对大学校园内的商家没有很好的管理,也是不足其不足之处。
虽然国内外都拥有非常优秀的管理系统,并且互联网平台发展的也十分完善,但是不管国内还是国外到目前为主,针对校园的点餐系统并没有很多,对应的系统却处于空缺状态,非常的急需优秀的系统去弥补空缺,本系统希望借助国内外优秀的系统,结合当前国内发展现状和快递发展情况,做出一款符合人们需求的点餐系统,来弥补市场的空缺。
1.4论文主要研究内容
本系统采用当下比较流行的Java语言进行开发,框架采用J2EE框架进行搭建,使用B/S架构进行架构,将系统分为前台后台两个界面,前台给普通用户进行点餐,后台由管理员进行管理,设计出一款包含用户管理、商品管理、评论管理、订单管理、管理员管理(权限管理)、咨询管理、会员管理的点餐管理系统,数据库采用MySql关系型数据库进行管理。本系统采用Mybatis特有的Mapper层配置代替了Hibernate全局映射,并采用Spring的bean工厂来管理依赖注入,进行详细的需求分析和功能设计来满足用户需求,数据库采用了比较常用的MySQL关系型数据库来管理。为客户提供了种类非常完善的点餐资源,增加客户使用体验。
第2章 相关技术和理论介绍
2.1 开发工具
2.1.1 Navicat
Navicat 能在琳琅满目的数据库管理工具中独树一帜,是由于他的高效、便捷、易于上手、轻巧、支持中文等特点。它能支持市面上主流的所有关系型数据库,因此Navicat十分适合中小型企业或者学术研究者使用。本系统中使用的Mysql数据库就非常适合使用Navicat来进行集成,它提供给使用者一个可视化的操作界面,不需要在传统的CMD中输入命令来操作数据库,省去了很多繁琐的操作,只需要进行在可视化界面上进行操作即可,非常的便利,所以本文也选择了Navicat作为数据库管理工具。
2.1.2 Eclipse
Eclipse作为一款历久弥新的Java编辑器,所凭借的不仅仅只是它的永久免费。Eclipse里的一切都是插件,这意味着Eclipse具有突出的易扩展性,使得所有开发者都有发挥的空间。同时Eclipse附带的标准插件集已经足够Java开发者使用。其次Eclipse编辑器集成了非常多的语言平台,不仅可以Java代码编写,还能对C、C++以及Python代码进行编译,基于上述原因,本系统把Eclipse作为首选编辑器进行系统开发。
2.1.3 Tomcat7简介
本系统之所以采用Tomcat7作为开发容器,是因为Tomcat作为一款开源的Web应用服务器兼具性能稳定、技术先进、轻巧便捷、易部署的优点得到了广大开发者的喜爱。开发者只需在服务器上配置好Tomcat并把项目打包部署上去就可以使用。所以,Tomcat十分适合研究人员和中小型企业使用。而本文采用的版本为Tomcat第7版,此版本的稳定性已经得到广大开发者的验证。
2.2 开发技术
2.2.1 Spring框架:
Spring框架的出现是为了解决早期企业级java开发代码量大,代码耦合度高,不易维护等问题提出的。Spring就像是一个管家,开发人员把各个功能抽象成一个个JavaBean,Spring这个管家就负责创建这些JavaBean的实例,并管理他们的生命周期。这样一来就实现了控制反转和依赖注入,大大降低了耦合度。Spring的AOP则提供了一种把不同模块中相同的功能抽离出来的方式,解耦的同时也使开发人员更能专注于本职能的开发。Spring的事务则保证了数据一致性,提高了系统的可靠性。
SpringMVC框架则是基于Model(数据层),View(视图层)和Controller(控制层)构成的。早期的JSP把业务逻辑代码和页面展示用的前端代码耦合在一起,不易于阅读也不易于维护,而当SpringMVC问世后,这样的问题便迎刃而解了。
2.2.2 Mybatis
Mybatis作为一种持久层框架,但却不是Hibernate这样的ORM框架。相比于Hibernate,Mybatis更轻巧灵便,美中不足的是需要手动写sql语句。这看似是Mybatis的劣势,然而这也是Mybatis的优势所在。手写sql语句意味着更加灵活,在面对复杂的多表联查问题下,Hibernate自动生成的sql语句就不能满足。虽然Hibernate提供了hql语句,但是其性能无法和Mybatis的动态sql相提并论。而且,如今出现了许许多多的Mybatis插件,这些插件也提供了基础增删改查的语句,减轻了开发者的负担。
系统用例图
网站的功能结构由两个角色进行管理分别是管理员和用户。
本系统前台由普通用户进行使用,进行点餐业务,后台由管理员进行统一管理,前台操作后台管理,功能各不相同。
管理员角色:
(1)用户管理:用户管理主要分为两个内容,分别是对用户查询和对用户进行新增,查询功能分为全局查询和模糊查询两种,并且将查询出来的结果通过分页进行展示,新增功能同注册类似,只不过是管理员进行新增。
(2)商品管理:商品管理主要是对点餐的信息进行管理,在前台页面上显示的美食都是在后台这个模块进行管理,管理员可以在这里对商品信息进行增删改查操作,而且还能对商品分类进行管理,将美食分为食品类、饮品类、小食类等种类,方便管理员管理也方便用户进行查询。
(3)评论管理:该模块主要分为查询评论和删除评论,用户可以对食品进行评论,后台会收到,后台在这里进行统一管理,可以对评论信息进行统一管理。
(4)订单管理:订单管理是对用户购买完商品后会生成订单信息,管理员根据订单信息的收货地址进行配送,配送后可以修改订单状态,并且可以查询订单详情,还可以删除订单信息,订单信息也是通过Mybatis分页进行显示。
(5)咨询管理:咨询管理是管理员发布咨询的地方,咨询也就是我们说的公告信息,在这里可以对公告进行管理,对公告和咨询信息进行增删改查操作。
用户角色:
(1)登陆注册:普通用户首先在首页进行注册获得账户,然后在登陆界面进行登陆后就可以获取权限,登陆后填写好地址信息就可以进行点餐。
(2)商品查看:没有账户的游客也可以对商品进行查询,并且可以查看外卖的详细信息,也可以在每个分类里面进行查看,同时还可以直接搜索名称进行查询。
(3)订单管理:用户在购买后会生成订单信息,用户可以在订单管理页面来查看订单状态,可以更新订单状态来查看外卖配送信息,同时还能查看到订单的详细信息。
咨询查看:用户可以在咨询模块查看到管理员发布的公告信息和优惠活动。
数据表结构
(1)管理员
图4-2管理员实体图
(2)用户
图4-3用户实体图
(3)商品种类
图4-4商品实体属性图
(4)订单
图4-5订单实体属性图
(5)商品
图4-6商品实体属性图
(6)评论
图4-7评论实体属性图
(7)咨询
图4-8咨询实体属性图
五、系统页面展示
六、代码片段
if(comment == null){ret.put("type", "error");ret.put("msg", "请填写正确的评论信息");return ret;}if(StringUtils.isEmpty(comment.getContent())){ret.put("type", "error");ret.put("msg", "请填写评论内容");return ret;}if(commentService.edit(comment) <= 0){ret.put("type", "error");ret.put("msg", "编辑失败,请联系管理员!");return ret;}
if(!StringUtils.isEmpty(username)){Account account = accountService.findByName(username);if(account != null){queryMap.put("userId", account.getId());}}
if(moneyMin != null){queryMap.put("moneyMin", moneyMin);}if(moneyMax != null){queryMap.put("moneyMax", moneyMax);}if(status != null){queryMap.put("status", status);}queryMap.put("offset", page.getOffset());queryMap.put("pageSize", page.getRows());ret.put("rows", orderService.findList(queryMap));ret.put("total", orderService.getTotal(queryMap));
/*** 查询订单列表* @param sn* @param page
*/
@RequestMapping(value="/list",method=RequestMethod.GET)public ModelAndView list(ModelAndView model){model.setViewName("order/list");model.addObject("accountList",
JSONArray.fromObject(accountService.findList(new HashMap<String, Object>())));return model;}
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶
一键三连+关注+评论留下你的邮箱 获取源码,主动获取 看主页置顶