基于SSM的大王门店管理系统设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 SSM 3
1.1.1 Spring 3
1.1.2 Spring MVC 3
1.1.3 MyBatis 4
1.2 Shiro 4
1.3 前端技术 4
1.3.1 Bootstrap 4
1.3.2 jQuery 4
1.3.3 Ajax 5
1.3.4 Layui 5
1.3.5 Thymeleaf 5
1.4 本章小结 6
2 系统分析 7
2.1 功能需求分析 7
2.2 非功能需求 11
3 系统设计 13
3.1 系统总体设计 13
3.1.1 系统体系结构 13
3.1.2 系统组件结构设计 14
3.1.3 系统功能结构 15
3.2 系统详细设计 16
3.2.1 系统功能设计 16
3.2.2 数据库设计 19
3.3 本章小结 22
4 系统实现 23
4.1 开发环境 23
4.2 开发规范 23
4.3 核心功能实现 23
4.3.1 查询菜品功能实现 23
4.3.2 修改员工功能实现 25
4.3.3 新增员工功能实现 26
4.3.4 删除员工功能实现 27
4.4本章小结 28
5 系统测试 29
5.1 测试计划 29
5.2 测试用例 29
5.2.1 查询菜品列表用例测试 29
5.2.2 修改员工用例测试 30
5.2.3 新增员工用例测试 30
5.2.4 删除员工用例测试 31
5.3 测试结果 31
5.4 本章小结 32
致 谢 34
参考文献 35

摘 要

永和大王连锁餐厅,不但是在上海市开设的第一家餐厅,而且已经发展成了全国第一家连锁直营的连锁大型的餐饮企业,成立于1995年12月,开始发展后,已经经过了24年的历程,并且永和大王已经在中国地区开设了近300多家直营连锁餐厅,所创作出的口味都是符合是非常吸引人的,包括了具有中国特色的豆浆、稀饭、油条、面食以及各种中式糕点。并坚持以直营方式扩张获得了稳定、标准、一致的发展,深受大众喜爱。
经过对全国餐饮系统的调研,从中了解到这种餐饮系统种类不多且功能单一,在充分考虑管理人员、餐厅门店地址、订单、菜品等可变因素。本程序前端技术选择的是JSP技术,后端技术框架选择的是SSM框架,使用B/S应用体系构造系统框架,使用MySQL作为后台数据库,模板引擎用的是Thymeleaf,发布服务器选择的是Tomcat,使用众多框架完成并且实现了大王门店管理系统。
此课题是为了解决门店中多个需求,比如点菜品管理中的菜品列表和菜品类型,来往订单的管理,营业报表的信息,管理员的登录还有注销的功能等等。使用计算机进行有关餐饮企业的事务管理,可以推进企业走向科学化的管理,并且可以更加适应现代企业制度要求。
关键词:门店;订单;菜品;

Abstract

Yonghe King Restaurant, Not only the first restaurant opened in Shanghai,And it has developed into the country’s first chain-operated large-scale catering enterprise,Founded in December 1995, after starting to develop, it has gone through 24 years, And King Yonghe has opened nearly 300 direct-operated chain restaurants in China,The flavors created are very attractive, including soy milk with Chinese characteristics, porridge, fritters, pasta and various Chinese pastries, And adhere to the expansion through direct management to obtain stable, standard and consistent development, which is deeply loved by the public.
After a survey of the national catering system, I learned that this catering system has few types and single functions, Full consideration of variable factors such as management personnel, restaurant store address, orders, dishes, etc. The front-end technology of this program chooses JSP technology, The back-end technical framework chooses the SSM framework, Using B / S application system to construct system framework, Use MySQL as the backend database, The template engine uses Thymeleaf, The publisher chooses Tomcat, Completed and implemented Dawang Store Management System using many frameworks.
This subject is to solve multiple needs in the store, For example, the list and types of dishes in the order management, Management of current orders, Business report information, Administrator login and logout functions, etc. Use computer to manage affairs related to catering enterprises, Can promote the enterprise to scientific management, And can be more adapted to the requirements of modern enterprise systems
keywords: Stores; orders; dishes

引 言

由于国外的计算机技术的起步和发展都是非常快的,所以对于计算机的利用率和使用率都是非常高的,而且计算机技术就是产生于国外,这是他们的天然优势,在国外对于餐饮系统的发展中,正在逐步的使用计算机来进行管理。而且有着一套更为系统的流程。有Apache Ant管理工具。检查代码基本上选择的是Check style、PMD等静态代码管理工具。在安全性方面,有Shiro和Spring Security等安全框架。在服务器方面, Apache公司提供了Tomcat服务器,Tomcat是Apache Jakarta的子项目之一[1],Tomcat服务器是针对JSP和Servlet的服务器, JSP也就是Java Server Page(Java 服务器网页)[2],为应用提供了一个开源的、轻量的且稳定的服务器。但是在开发框架中对于SSM的应用是较少的。而本课题则是主要以SSM框架进行开发。
而现在国内的餐饮企业,虽然起步比较晚,但是市场上已经有很多比较多的餐馆信息管理软件,但是不是非常成熟。所以一定要有一套更为规范、更为科学的计算机管理事务,来符合适应现代企业的发展制度的要求。由于国外软件的发展比较早,所以餐饮企业对于计算机的应用也是比较早而且成功的,软件的运用比较成熟。国内外现在存在的问题则是:在一个门店的管理系统中,没有明确的分离出各个模块,并且应用较少,还是纸质化的或表格化的进行管理,而本次的设计则是更明确、清晰的管理并且解决一个门店的多个需求。
本次论文以Web应用开发技术为核心,运用SSM框架实现门店管理系统,主要思路是先编写数据库,然后编写用户的登录,然后编写门店部分,最后编写订单部分。
本文共分5章,分别阐述了大王门店管理系统用到的相关技术、系统分析(功能分析和非功能分析)、系统设计(总设计和详细设计)、系统实现(开发环境、开发规范和核心功能实现)和系统测试(测试计划和测试用例)等内容。具体内容是以如下的顺序进行组织的。总体结构如下:
第1章,归纳使用到的相关技术。介绍了系统开发工具及开发环境和开发过程中相关技术简介;
第2章,大王门店管理系统的功能需求分析和非功能需求分析,通过分析用户所要的需求,利用用例图来进行组织和表达功能,使用户对功能需求的了解更加直观;
第3章,大王门店管理系统的系统设计,并依据具体需求剖析了系统的整体结构。本文章主要从数据库设计、系统功能设计和界面设计三个方面进行设计
说明;
第4章,大王门店管理系统的系统实现,重点介绍了本系统中查询菜品列表、修改员工信息、新增员工信息、删除员工信息等核心功能的具体实现方法;
第5章,大王门店管理系统的系统测试,对其的具体业务功能做出必须的测试,并对结果进行分析。
结论,本文就大王门店管理系统作进行了一个完整的介绍,使用图、文、表相结合的方式来体现系统的分析、设计、实现、测试的过程,总结项目存在的不足和下一步完善计划。

1 相关技术

本项目使用的框架技术是SSM框架。即整体系统采用的是MVC设计理念的SpringMVC框架,持久层使用了MyBatis进行实现,并且运用了Spring的依赖注入,最后了使用了AJAX实现后端与前端的一个数据交互。
1.1SSM
运用的是Spring、SpringMVC和MyBatis三个正好的SSM框架技术,SSM是轻量级并且应用较多的一种组合框架[3],目前企业中流行的Java EE的一个框架技术,非常适用于大型企业的应用系统。SSM是一个优秀的平台,在这个平台上开发者实现CRUD更加快速有效,对于诸多事务的维护成本更小,操作更加简单。
1.1.1 Spring
Spring的开源性决定了它现在能够被广泛用,并且Spring是非侵入式的[4]。Spring框架的突出之处就是它具备的分层结构,而且由多个已被定义的模块组成。
Spring框架最大的特点就是对于J2EE服务器可以完全的应用,大部分的功能可以应用到不用管理的开发环境中的。Spring 提供了视图解析器供在浏览器显示模型数据[5]。Spring的配置方式是在XML中进行配置,还有其他配置方式都是通过使用注解的方式,可以极大简化项目开发步骤。
1.1.2 Spring MVC
Spring MVC是一个开源的MVC框架,MVC模式是一种架构模式[6],可以说是Struts还有Spring的一个集合,他们之间有着密不可分的关系。这种开发框架将一个繁琐复杂的Web项目通过分层的方式进行简化,Spring MVC 所有的请求都提交给 Web[7]。模型层主包含业务的核心模块,负责业务的处理,是MVC框架的核心,视图层表示用户界面,即平时浏览网站时所看到的界面呈现均是由视图层所负责,最后是控制器,控制器主要是将模型层与视图层结合在一起,接受回调请求。最常用的视图是JSP[8]。
SpringMVC的角色划分是非常的清晰的,含有处理器、模型对象还有控制器等多个角色,并且分别负责各自部分的业务。因为有可以重用的代码,所以极大的简化了开发时间和周期,尽可能的简化开发流程。同时SpringMVC开发框架与其他单一技术相比具有更好地灵活性。
1.1.3 MyBatis
MyBatis是一个关于存储的持久层框架,Mybatis 是开源免费,轻量级框架[9],它是用来封装JDBC的代码,省去手敲JDBC代码块,它可以对SQL的语句进行使用,也可以用来对数据的存储过程并且可以配置高级的映射。将所需要的数据库字段和 Java中Model对应的实体对象映射成数据库中的记录。
1.2 Shiro
Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。Apache Shiro 框架还包含了对保护 Java 应用十分有用的其他特性,包括:Web应用支持、缓存机制、线程和并发支持、支持测试工具、支持“Run As”等[10]。
1.3 前端技术
jQuery是继Prototype之后又一个优秀的JavaScript框架[11],是开发前端的一个库,它对JavaScript进行了很好的封装,Bootstrap提供HTML和CSS规范,为页面增加了更多层次感和美感。可以更便捷迅速的处理HTML。它可以很轻易的将结构与行为分离。jQuery能够操作页面对象、修改页面外观、为页面增加更多效果,并且它能够快速获取元素。本程序也使用了JSP[12]。Web应用开发的后端技术指的是对代码编写、数据库设计等,主要是与数据库进行交互处理响应的业务逻辑。
1.3.1 Bootstrap
Bootstrap 框架来自 Twitter,是一个 CSS /HTML 框架[13]。作为快速前端开发的工具同时又具有方便快捷的特点。Bootstrap前端框架编码简单,结构清晰,而且兼容电脑端和手机端,十分符合本平台的编码要求,对于本平台来说是最好的选择。所以本平台选择使用Bootstrap前端框架开发项目。Bootstrap最大的特点是兼容,可以电脑端和移动端同时应用。
1.3.2 jQuery
jQuery是一个开发速度非常快,并且使用起来非常简洁的JavaScript框架。jQuery设计的宗旨就是“write Less,Do More”,编写尽可能少的代码,然后可以做更多的事情。它基本封装了JavaScript中常用代码,提供的设计模式是非常简单的JavaScript,它能优化HTML的文档操作、可以处理各种各样的事件、运用动画设计与Ajax进行一系列交互。
1.3.3 Ajax
Ajax是一个类库,Ajax功能被控件或者对象的方式所应用,Ajax最大的特点是将Web页面数据与服务器之间的交互转入后台[14],一系列的JavaScript代码被Ajax类库所包括,使用Javascript向服务器提出请求并处理响应,通过XMLHTTPRequest这个核心对象可在不重载页面的情况与Web服务器交换数据。Java代码与服务器之间需要进行少量的数据的互换,通过该信息的互换,可以用到Ajax对网页进行无浏览刷新。
Ajax的特点是可以不提交数据,即可达到刷新部分页面的神奇效果,也称网页的局部刷新。这和传统的加载相比省去了很多的麻烦,也会让用户感觉使用起来很流畅。Ajax的功能很强大,可以处理各种数据的提交,但是有些时候不能使用此技术,比如在做Excel导出的时候就不能用Ajax处理请求,因为会无响应。Ajax技术避免了不必要的用户请求,方便了程序员、也提高了用户的体验。
1.3.4 Layui
Layui是一个有着自己的编写规范的UI的框架,而且有原生的书写和组织形式。它里面的方法极其简洁,对于初学的程序员非常的友好。非常适合界面的快速开发和使用。Layui是一款采用自身模块规范编写的前端UI框架,遵循原生 HTML/CSS/JS 的书写与组织形式。
Layui为了加深页面布局简化HTML/CSS代码的耦合度,并且可以提升多终端的适配能力,Layui后期引进了一套具备响应式能力的格栅系统,格栅系统的响应式能力很强,是因为CSS3媒体查询的强大支持,因此针对四类不同尺寸的屏幕,都可以进行相应的适配处理。
1.3.5 Thymeleaf
Thymeleaf 对于网络的是没有需求的,有没有因特网都是可以运行的,所以美工可以在浏览器端查看静态的页面,也可以让程序员在服务器端查看动态的页面。浏览分析html时不会寻找为定义的标签属性,因此Thymeleaf 的模板可以静态地运行;当有数据传到到页面时,Thymeleaf会自动的替换静态内容,使页面可以动态的显示。
Thymeleaf还提供Spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的进行表单绑定、属性编辑器等诸多功能。这些功能对于开发者来说是非常友好的。
1.4 本章小结
本章介绍了系统开发所涉及到的开发语言、框架和数据库,在开发之前选择好相关技术,然后在进行开发对于一个项目是非常重要的,这可以减少许多开发时间以及很多的难题。如今开发技术已经很成熟,开发一个项目用成熟的技术是很重要的,而开发一个项目是要掌握很多技术的,在掌握多个技术之后,开发效率才高。
本系统实现大王门店管理系统功能所使用到的Web开发技术、数据可视化技术、以及MVC分层思想等,对于前端界面的实现用到了Bootstrap 框架、Layui框架以及Thymeleaf模板引擎然后实现界面交互用到的是Ajax技术,并根据这些深入研究,为程序的实现奠定了基础。
熟练使用各种框架技术不但减少了开发的时间与精力,而且也减少了错误,使用前辈封装的成熟技术,使用起来是非常放心的。减少开发时间,将时间用在调试、测试、修改bug的性价比是很高的。

2 系统分析

需求分析是软件开发过程中的一个重要阶段[15],分析系统的数据要求是非常重要的,软件系统本质都是信息处理系统,系统必须处理的信息和系统产生的信息很大程度上决定了系统的面貌对软件的设计具有深远的影响。功能需求必须划分出系统必须完成的所以功能本章详细的描述了大王门店管理系统的系统分析,要从功能需求华友非功能需求进行分析,可更加直观的展示大王门店管理系统的功能需求。本章节的分析对接下来进行开发、测试、还有整体的设计都有很大的作用,所以需求分析一定要详细且准确。
2.1 功能需求分析
在分析一个项目的需求的时候,一定要知道需要解决的问题是什么,由于这是一个管理门店的系统,所以此系统的目的是解决关于餐饮门店后台的问题,管理员可以随时对菜品、订单、门店、员工等信息来进行增删改查。
大王门店管理系统有七大模块,分别是连锁门店管理、后厨管理、订单管理、营业报表管理、员工管理、管理员管理。具体数据流如图2.1所示。
在这里插入图片描述

图2.1 大王门店管理系统数据流程图
通过对目前大王门店功能的分析,然后根据严格的权限管理,确定有三类用户,1:超级管理员也就是老板,2:1级管理员也就是经理,3:普通管理员也就是普通员工。首先是老板在登录后可以在各个模块下查看并管理信息。可以对员工进行增加员工和删除员工的信息。可以对普通管理员的增删改三个操作;在员工管理中管理着包括员工号、员工姓名、员工住址、员工电话、身份证、还有所属的门店的功能;在后厨管理中包括了菜品列表和菜品类型,其中菜品的类型可以增加,然后菜品的列表要根据已有的菜品类型再进行增加,不能增加不存在类型的菜品;在营业报表中包含了订单号、金额、操作的员工、所属门店、销售时间、以及时间;在连锁门店管理中包括了门店名、门店地址、联系电话。
然后是经理,经理的权限就少了很多,首先可以对订单列表进行管理,可以对普通员工的信息进行管理,对后厨中菜品列表和菜品类型进行管理,最后是对营业报表信息只能进行查询,无法进行操作。
最后是普通员工,普通员工的权限是最少的,只有两个管理的查看权限,首先只可以对订单列表进行查询,无法进行其他的操作。而对于菜品列表只能查看、打印、导出、筛选。相关用例图如图2.2所示。
在这里插入图片描述

图2.2 大王门店管理系统用例图
大王门店管理系统除了以上增删改查等基础功能之外也还包括了其他功能。其中用户对于营业报表的操作就有三个,与用户其他功能相关的用例有筛选营业报表,导出营业报表和打印营业报表的相关功能,营业报表功能用例如图2.3所示。
在这里插入图片描述

图2.3 大王门店管理系统营业报表功能用例图
查询订单列表,管理员登录大王门店系统后选择左侧导航栏的订单列表,根据订单号、客人名字、订单状态进行查询,其中可以选择其中的一项或两项,或者全选进行精确的查询。
新增订单列表,管理员登录大王门店系统后选择左侧导航栏的订单列表,点击新增按钮即可进入添加订单列表界面,可以选择添加的类型,然后添加菜品的类型,即可完成订单列表的添加。
删除订单列表,管理员登录大王门店系统后选择左侧导航栏的订单列表,选择一条订单后点击删除,然后会弹出确认删除的弹窗,以免错误操作,点击确认后进行删除。可以删除一条或批量删除。
筛选收银员管理,管理员登录大王门店系统后选择左侧导航栏的收银员管理,根据序号、用户名称、用户描述、所属门店进行筛选。
添加收银员管理,管理员登录大王门店系统后选择左侧导航栏的收银员管理,点击新增按钮即可进入新增收银员界面,输入用户名、所属门店、用户描述然后点击提交,即可完成收银员的添加。
删除收银员管理,管理员登录大王门店系统后选择左侧导航栏的收银员管理,选择一条收银员信息后点击删除,然后会弹出确认删除的弹窗,以免错误操作,点击确认后进行删除。可以删除一条或批量删除。并且也可以在数据库中更新。
筛选员工列表,管理员登录大王门店系统后选择左侧导航栏的员工列表,根据员工号、员工姓名、员工住址、员工电话、身份证号、所属门店进行筛选。
新增员工列表,管理员登录大王门店系统后选择左侧导航栏的员工列表,点击新增员工按钮,然后就会弹出新增员工的功能框,选择所属门店接下来输入员工姓名、身份证号码、员工电话、员工地址,其中员工的电话和身份证号要符合要求,否则会提示格式错误。然后点击提交,即可完成员工的添加。并且可以在数据库中更新。
修改员工列表,管理员登录大王门店系统后选择左侧导航栏的菜品列表,选择一条菜品后点击修改,可以修改员工id、员工姓名、所属门店、员工住址、员工电话、员工身份证号,点击提交即可完成员工的修改。并且也可以在数据库中更新。
删除员工列表,管理员登录大王门店系统后选择左侧导航栏的员工列表,选择一条员工信息后点击删除,然后会弹出确认删除的弹窗,以免错误操作,点击确认后进行删除。可以删除一条或批量删除。
查询菜品类型,管理员登录大王门店系统后选择左侧导航栏的菜品类型,根据菜品名称或菜品类型分别查询,也可以两项都选择,然后进行精确的查询。
新增菜品类型,管理员登录大王门店系统后选择左侧导航栏的菜品类型,点击新增按钮即可进入新增菜品类型界面,接下来输入菜品名称,即可完成菜品类型的新增。
删除菜品类型,管理员登录大王门店系统后选择左侧导航栏的菜品类型,选择一条菜品后点击删除,然后会弹出确认删除的弹窗,以免错误操作,点击确认后进行删除。可以删除一条或批量删除。删除完成页面显示也会少信息,并且也可以在数据库中更新。
查询菜品列表,管理员登录大王门店系统后选择左侧导航栏的菜品列表,根据菜品名称或菜品类型分别查询,也可以两项都选择,然后进行精确的查询。
添加菜品列表,管理员登录大王门店系统后选择左侧导航栏的菜品列表,点击添加菜品列表按钮即可进入添加菜品列表界面,选择菜品类型,输入菜品名称、菜品单价然后点击提交,即可完成菜品列表的添加。
修改菜品列表,管理员登录大王门店系统后选择左侧导航栏的菜品列表,选择一条菜品后点击修改,可以修改菜品id、菜品类型、菜品名称、和菜品单间,点击提交即可完成菜品的修改。
删除菜品列表,管理员登录大王门店系统后选择左侧导航栏的菜品列表,选择一条菜品后点击删除,然后会弹出确认删除的弹窗,以免错误操作,点击确认后进行删除。可以删除一条或批量删除。并且也可以在数据库中更新。
查询营业报表,管理员登录大王门店系统后,然后点击左侧导航栏的营业报表,在下拉列表中选择想要查找的序号、销售种类、销售类型、价格、销售时间,可以选择其中的几项或一项,但是不可以一项不选。查询营业报表中可以精确查询也可以模糊查询,可以查询一年的所以营业信息,可以查询一个月内的营业信息,也可以查询一天内的营业信息。并且也可以在数据库中更新。
新增门店,管理员登录大王门店系统后选择左侧导航栏的连锁管理下的门店管理,点击新增按钮,根据提示进行添加。
删除门店,管理员登录大王门店系统后选择左侧导航栏的连锁管理下的门店管理,点击门店列表后端删除按钮即可删除列表中该行数据,其他数据正常显示在列表中。
分页功能,在每一处管理模块中都包含了分页的功能,可回到首页、末页、上一页、下一页等,还可输入想要前往的页码。
2.2 非功能需求
本系统所有页面设计以用户体验为中心,所有页面风格一致,文字易于理解,本系统还有低调黑、炫酷蓝、奶昔绿三种或低调或明亮的主题可供用户个性化自定义。页面栏可以右键点击显示刷新当前页面也可以选择关闭当前页面等操作,方便用户同时操作多个页面的刷新和关闭。
一些列表均匀分布在整个页面,可以显示出全部的行和列,且拖拽列表行和列页面反应灵敏主要布局不会发生变化,方便用户的查看和编辑。系统提示信息清晰简短,信息的表达不使用冗长的文字。美观的页面设计可为用户提供良好的视觉印象,吸引用户的交互行为。
2.3 本章小结
本章主要介绍了大王门店系统的业务逻辑相关内容,需求分析对于软件的开发有很重要的地位,进行需求分析可以让软件具有很强的可靠性以及可行性。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型, 解决目标系的“做什么”的问题[16]。
对于软件的需求分析一旦有失误或者不能满足用户需求都不是一个成功的项目。软件需求不断地变更是软件开发困难的根源之一,需求的管理贯穿于整个软件开发周期中.软件的需求管理与控制涉及质量度量与控制、复杂性度量、有效性度量、优先级划分、风险性分析、依赖性分析、需求缺陷管理及管理工具[17]。
只有让需求分析尽量详细,在开发的过程中就会思路清晰、开发效率得到提高从而节省很多时间。

3 系统设计

本章介绍大王门店管理系统进行了系统设计。根据门店的业务需求对本系统的体系结构进行了设计规划,即按系统功能设计、数据库设计、界面设计的设计思路,系统功能设计决定了软件开发的整体走向,可以减少许多开发的时间,先设计整个系统是非常的有必要性的,也是非常减少人力和物力的。是重要的环节。数据库的开发是格外重要的,数据库最初是在大公司或大机构中用作大规模事务处理的基础[18],使用达到更完善的性能和更高的用户满意度进行本项目系统设计,为下一步的整个系统编写打好基础。而界面的设计也是格外重要的,一个好看的界面对于使用人员来说,用起来还是比较舒适的,开发软件一定要注重用户体验的。
3.1 系统总体设计
本章的概要设计是对大王门店系统的层次划分、模块、接口、异常处理、抽象类等进行了详细设计,而接口的设计有自己的设计,也包含了继承Java的接口,Interfaces and abstract classes provide more structured way to separate interface from implementation[19]。使该系统更加符合用户的需求,同时也为测试人员提供了参考标准。
3.1.1 系统体系结构
本系统将采用三层结构设计,程序员把业务逻辑的代码放在服务器端,很大程度上减轻了浏览器端的负担,用户在浏览器端只需要传输数据,数据传入到后端服务器后就会处理此功能的业务逻辑。The DAO design pattern keeps all database access functionality in DAO classes. This creates a clear separation of concerns, leaving other layers in our application, such as the user interface logic and the business logic, free of any persistence logic[20]。该系统的设计主要采取架构风格是B/S架构[21],B/S结构不仅仅保留了C/S结构优点,还使复杂的程序变得简单了起来。因此可以很好的开发和维护客户的端程序,当改变后端业务逻辑的代码时前端界面不会轻易的被影响。
当软件编写结束后,进入部署实施阶段。当浏览器端或服务器端的内存占用过大时,可以把其分开部署,避免压力过大影响性能。系统部署结构如图3.1所示。
在这里插入图片描述

图3.1 系统部署结构图
3.1.2 系统组件结构设计
模型层主要对应数据库中的字段,将每个表中的字段封装成一个实体类。模型层里的对象与数据库中的字段具有一一对应的映射关系,所有需要进行数据处理的字段都需要依赖对象模型,所以在开发项目时传入的参数和用到的方法都依赖于模型层。系统组件结构图如图3.2所示。
在这里插入图片描述

图3.2 系统组件结构图
数据访问层,主要根据数据库的表结构来访问数据库表中的数据记录。不同的数据库访问数据有不同的方法,因此数据访问层取决于数据库管理系统的类型。
业务逻辑层,即响应用户在使用系统功能时的逻辑,业务逻辑层依赖于数据访问层。在软件开发的过程中客户可能会改变需求,或者在项目验收时,做出的功能与客户的需求不符,此时需要改变软件的业务逻辑。将业务逻辑分离出来,在不改变参数的情况下,不用改动其他代码就可以修改功能。
用户界面层,向用户显示经过门店系统业务处理后数据,即显示的需求功能。用户界面层还可以用来提交数据,用户对界面做出相应的操作,将数据提交到后台,也就是业务逻辑层,经过业务逻辑的处理后再调用数据访问层,实现用户的功能。
3.1.3 系统功能结构
大王门店管理系统包含七个模块,分别是订单管理、收银员管理、员工列表、菜品列表、菜品类型、营业报表、门店管理。在其中的收银员信息、员工信息、菜品信息、营业报表、门店管理等,在其中几个模块中还可完成排序、筛选、导出等功能,功能结构图如图3.3大王门店系统功能结构图所示。
在这里插入图片描述

图3.3 大王门店系统功能结构图
用户可以使用系统提供的以下功能:分别是订单信息查看、订单信息删除、订单信息修改、增加订单信息、根据订单号排序、根据价格排序、收银员新增、收银员删除、收银员按序号排序、员工的新增、员工信息删除、员工信息修改、员工信息筛选、根据员工号进行排序、根据员工电话号码排序、所属门店的排序、菜品列表的查询、菜品列表中菜品的新增、修改、查询、根据菜品编号的排序、根据菜品价格的排序、菜品类型的新增、菜品类型的删除、按菜品类型编号排序、营业报表的查询、新增、查询、按营业报表的排序、门店的新增、门店的删除、按门店序号的排序、用户的登陆、用户的注销等功能。
3.2 系统详细设计
详细设计总体来说是对上一节概要设计的细化,介绍整个大王门店管理系统的功能及数据库信息等。在本节中的实体关系图中可以清楚显示各个表之间的关系及每个实体存在的属性。
3.2.1 系统功能设计
添加员工功能,用户进入添加员工页面后,可以填写员工基本内容,如员工姓名、所属门店、员工住址、员工电话、身份证号,然后点击跳转式提交即可将刚输入的数据增加到员工列表中,并显示在员工列表页面,时序图如图3.4所示。
在这里插入图片描述

图3.4大王门店系统新增员工时序图
添加员工功能设计,用户进入employeeList.html界面,添加员工,将当前界面通过addEmployee将信息传递到controller,调用service层添加员工的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的添加员工功能,返回数据并在employeeList.html显示。具体功能描述见表3.1。
表3.1 添加员工功能描述
编号 类名 变量名 功能描述
1 employeeList.html addEmployee 输入添加员工的内容,并提交信息给后台。
2 EmployeeController addEmployee 在控制层获取到的员工的信息并调用对应的service方法。
3 EmployeeService addEmployee 通过传入的员工数据进行业务逻辑的处理并调用对应的mapper方法。
4 EmployeeMapper addEmployee 在数据访问层添加员工。
5 employeeList.html addEmployee 提示添加员工成功。
修改员工的功能,选择员工管理,然后选择一条员工信息点击修改,编辑表单中员工的信息内容如员工姓名、所属门店、员工住址、员工电话、身份证号,然后点击提交按钮,就可在该页面显示已修改过的信息。时序图如图3.5所示。
在这里插入图片描述

图3.5大王门店系统修改员工时序图
修改员工信息功能设计,用户进入employeeList.html界面,输入员工姓名、所属门店、等,在当前界面通过updateEmployeeById变量将信息传递到controller,调用service层新增方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的新增功能,并返回数据。具体功能描述见表3.2。
表3.2 修改员工功能描述
编号 类名 变量名 功能描述
1 employeeList.html updateEmployeeById 输入修改内容,并提交信息给后台
2 EmployeeController updateEmployeeById 在控制层获取到的新增员工信息并调用对应的service方法
3 EmployeeService updateEmployeeById 通过传入的数据进行新增员工信息业务逻辑的处理并调用对应的mapper方法
4 EmployeeMapper updateEmployeeById 在数据访问层新增信息,新增后的信息返回前端界面
5 employeeList.html updateEmployeeById 提示修改员工信息成功
查询菜品功能,用户进入菜品列表后,可以对菜品进行不同名称和不同菜品类型进行查询。时序图如图3.6所示。
在这里插入图片描述

图3.6大王门店系统查询菜品时序图
查询菜品功能设计,用户查询菜品随后进入productList.html界面,选择想要查询的菜品,选择完成后,通过变量findAllVariety将当前界面信息传递到controller,然后调用service层查询菜品的方法,通过mapper将数据传入数据库,根据对应的方法调用xml文件的查询功能,返回数据并在productList.html显示。具体功能描述见表3.3。
表3.3 查询菜品功能描述
编号 类名 变量名 功能描述
1 productList.html findAllVariety 输入查询菜品的内容,并提交信息给后台。
2 VarietyController findAllVariety 在控制层获取到的菜品的信息并调用对应的service方法。
3 VarietyService findAllVariety 通过传入的菜品数据进行业务逻辑的处理并调用对应的mapper方法。
4 VarietyMapper.xml findAllVariety 在数据访问层查询菜品。
5 productList.html findAllVariety 显示菜品在菜品列表中。

3.2.2 数据库设计
SQL不仅具有丰富的查询,也具有增加、删除、修改强大功能,Given the large number of websites that are backed by SQL databases[22],所以本系统设计了8张核心功能数据表,表的直观图如图3.7,数据列表如表3.4所示。
在这里插入图片描述

数据表直观图3.7
表3.4 数据库表列表
表名 说明
admin 管理员表
employee 员工表
order 订单表
order_desc 订单详情表
shop 门店表
variety 菜品表
variety_type 菜品类型表
role 角色表
管理员表用来保存管理员信息。例如用户姓名、密码、头部加盐值、职位、门店id、主键id等。该表是以自增长字段id作为主键,使每条记录具有唯一性。具体字段如表3.5所示。
表3.5 管理员信息表
序号 数据字段 数据类型 约束 存储内容
1 user_name varchar(100) 用户姓名
2 password varchar(255) 密码
3 salt varchar(128) 头部加盐值
4 role_id int(11) 职位
5 shop_id int(11) 门店id
6 id int(11) PRIMARY KEY 主键id
7 desc varchar(128)

员工表用来保存员工信息。例如员工编号、员工姓名、员工电话、员工住址、外键,角色id、外键,门店id、性别(0女1男)。该表是以自增长字段emp_id作为主键,使每条数据记录具有唯一性。具体字段如表3.6所示。
表3.6 员工表
编号 列名 数据类型 空/非空 约束的条件 其它的情况说明
1 emp_id int(11) NOT NULL PRIMARY KEY 员工编号
2 emp_name varchar(100) 员工姓名
3 emp_phone varchar(50) 员工电话
4 emp_address varchar(100) 员工住址
5 emp_card_id varchar(100) 外键,角色id
6 shop_id int(11) 外键,门店id
7 emp_sex int(11) 性别(0女1男)
营业表,主要用于保存营业信息。包括订单id、外键,门店id、订单价格(单位:分)、订单创建时间、员工id、订单状态(1:已送 0:未送)等。该表以自增长字段order_id作为主键,使每条记录具有唯一性。具体字段如表3.7所示。
表3.7 营业信息表
编号 列名 数据类型 空/非空 约束的条件 其它的情况说明
1 order_id int(11) PRIMARY KEY 订单id
2 shop_id int(11) 外键,门店id
3 money int(11) 订单价格(单位:分)
4 create_date datetime 订单创建时间
5 emp_id int(11) 员工id
6 state varchar(2) 订单状态(1:已送 0:未送)
菜品表用来存储菜品的相关信息。包括菜品id、菜品名称、门店id、价格(单位:分)、菜品类型id等信息,该表以自增长字段variety_id作为主键,使每条记录具有唯一性。具体字段如表3.8所示。
表3.8 菜品信息表
编号 列名 数据类型 空/非空 约束的条件 其它的情况说明
1 variety_id int(11) NOT NULL PRIMARY KEY 菜品id
2 variety_name varchar(100) 菜品名称
3 shop_id int(11) 门店id
4 variety_price int(11) 价格(单位:分)
5 v_type_id int(11) 菜品类型id
菜品类型表用来存储菜品类型的相关信息。包括菜品id、菜品类型名称等信息,该表以自增长字段id作为主键,使每条记录具有唯一性。具体字段如表3.9所示。
表3.9 菜品类型信息表
编号 列名 数据类型 空/非空 约束的条件 其它的情况说明
1 id int(11) NOT NULL PRIMARY KEY id
2 type_name varchar(50) 菜品类型名称
门店表用来存储门店的相关信息。包括门店编号、门店名称、门店地址、门店联系方式信息,该表以自增长字段shop_id作为主键,使每条记录具有唯一性。具体字段如表3.10所示。
表3.10 门店信息表
编号 列名 数据类型 空/非空 约束条件 其它的情况说明
1 shop_id int(11) NOT NULL PRIMARY KEY 门店编号
2 shop_name varchar(100) 门店名称
3 shop_address varchar(255) 门店地址
4 shop_phone varchar(50) 门店联系方式
3.3 本章小结
本章先进行总体的设计然后是详细设计来介绍了大王门店系统的系统设计。总体设计介绍了系统的体系结构、组件结构设计、系统功能结构。系统的详细设计介绍了针对主要功能进行详细设计,最后对设计数据表、数据库进行细节上的描述。

4 系统实现

4.1 开发环境
本系统所使用的开发系统是Windows 10操作系统,该系统是目前较为主流的操作系统。用2019版本的IDEA作为开发工具,Tomcat9.0.34为服务器来进行开发,数据库使用Navicat for MySQL来存储数据。在开发之前,要将所有的开发环境配置妥当。比如JDK版本要在本机进行配置,Maven的环境变量要在本机配置妥当,而且要配置好maven本地仓库的路径,并且要将阿里云的镜像配置好,这样就可以高速下载需要使用的jar包。
4.2 开发规范
随着应用程序和系统的增长,需要将类和包的职责划分得足[23],以便于管理本项目按照Java命名规范来命名。包括包名、类名、接口名、方法名等。其中包名全部由小写字母组成,并且见名知意,看见包名就知道里面是关于哪个方面的内容,以本系统为例,包名为cn.li。此包内包含了controller、service、impl包等,其中包内的类名和接口名的首字母全都大写,如果有多个单词,按照小驼峰法进行命名,并且在每个包内的类名或接口名要加上对应的后缀名,便于区分。以员工信息管理模块为例,在controller包内的命名为EmployeeController,在service包内的命名为EmployeeService,在impl包内的命名为EmployeeImpl。在类或接口中的方法名一般大写字母开头,以大驼峰命名法来进行命名,以菜品类的方法为例,修改菜品的方法名为updateVarietyById。规范的命名和注释可以增加代码的可读性,方便开发人员找到对应的方法。
4.3 核心功能实现
本系统内容包括对菜品信息的增删改查、对员工信息的增删改、对商品信息的增删改查、对商品类型信息的增删改查、对库存信息的增删改查、对门店信息的增删改查、对营业报表的查询、对订单信息的增删改查,再次论文中只展示查询菜品信息的实现、增加员工信息的实现、修改员工信息的实现、删除员工信息的实现。
4.3.1 查询菜品功能实现
用户登录后,可以选择左侧导航栏中“后厨管理”然后进入查询菜品列表界面,在菜品名称中输入需要查询的菜品名称、在菜品类型中选择要查询的类型,输入和选择完成后会显示查询结果如图4.1所示。
在这里插入图片描述

图4.1 菜品中主食的界面
菜品查询功能的主要代码如下所示。
@RequestMapping(“/getVariety”)
@ResponseBody
public Map<String, Object> findAllVariety(Integer page, Integer limit,SearchBean searchBean) {
Map<String, Object> map = new HashMap<>();
List lists = varietyService.findAllVariety(page, limit, searchBean);
if (lists != null && lists.size() > 0) {
map.put(“code”, “0”);
map.put(“msg”, “success”);
map.put(“data”, lists);
} else {
map.put(“code”, “1”);
map.put(“msg”, “暂无数据”);
}
return map;
}
@RequestMapping(“/findVarietyById”)
@ResponseBody
public Map<String, Object> findRoleById(Integer id) {
Map<String, Object> map = new HashMap<>();
if (id == 0) {
map.put(“code”, “1”);
map.put(“msg”, “参数异常”);
}
Variety variety = varietyService.findVarietyById(id);
if (variety != null) {
map.put(“code”, “0”);
map.put(“msg”, “success”);
map.put(“data”, variety);
} else {
map.put(“code”, “1”);
map.put(“msg”, “暂无数据”);
}
return map;
}

4.3.2 修改员工功能实现
用户登录后,可以选择左侧导航栏中“员工管理”进入员工列表界面,选择一条信息,然后点击修改,在输入框可在该页面编辑员工id、员工姓名、选择门店、员工住址、员工电话、身份证号等信息,提交即可完成员工信息的修改。修改员工信息界面如图4.2所示。
在这里插入图片描述

图4.2 修改员工界面
修改员工信息功能的主要代码如下所示。
@RequestMapping(“/updateEmployee”)
@ResponseBody
public Map<String, Object> updateRoleById(Employee employee) {
//判断性别
int sex=PanSex(employee.getEmpCardId());
employee.setEmpSex(sex);
// 最终结果集
Map<String, Object> map = new HashMap<>();
int i = employeeService.updateEmployeeById(employee);
System.out.println(“返回结果”+i);
if (i > 0) {
map.put(“result”, “success”);
map.put(“msg”, “操作成功!”);
} else {
map.put(“result”, “error”);
map.put(“msg”, “操作失败!”);
}
return map;
}
4.3.3 新增员工功能实现
用户登录后,可以选择左侧导航栏中“员工管理”进入员工列表界面,点击新增按钮,在弹出框中输入员工姓名然后选择所属门店,输入员工的住址、员工的电话最后是身份证号然后点击提交,新的员工信息将显示在员工列表并且此条信息是可以进行操作的。新增员工信息界面如图4.3所示。
在这里插入图片描述

图4.3 添加员工界面
新增员工信息的关键代码如下所示。
/**

  • 新增员工
  • @param employee 员工类
  • @return
    */
    @RequestMapping(“/addEmployee”)
    @ResponseBody
    public Map<String, Object> addRole(Employee employee) {
    int sex=PanSex(employee.getEmpCardId());
    employee.setEmpSex(sex);
    // 最终结果集
    Map<String, Object> map = new HashMap<>();
    int i = employeeService.addEmployee(employee);
    if (i > 0) {
    map.put(“result”, “success”);
    map.put(“msg”, “操作成功!”);
    } else {
    map.put(“result”, “error”);
    map.put(“msg”, “操作失败!”);
    }
    return map;
    }
    4.3.4 删除员工功能实现
    用户登录后,可以选择左侧导航栏中“员工管理”进入员工列表界面,删除功能支持批量删除,所以可以选择一条或几条信息,然后点击删除,因为要避免可能是失误操作,所以点击删除之后,会弹出确认删除的窗口,点击确定会成功删除,员工信息界面会缺少删除的信息。删除一条员工信息如图4.4所示。批量删除如图4.5所示。
    在这里插入图片描述

图4.4 删除员工界面
在这里插入图片描述

图4.5 批量删除员工界面
4.4本章小结
本章主要介绍了大王门店系统编码实现阶段需要完成的工作,规定了开发环境、开发规范以及系统核心功能的实现,本系统总体使用MVC结构编译整个代码,使功能变得更加完善。

5 系统测试

进行测试是本系统开发过程中一个重要的阶段。也是完成整个项目的最后一关,是对整个项目完成情况的最后检测。如果系统测试通过,则代表整个项目均已完成,就可以给客户验收。在整个大王门店系统开发的过程中,会遇到错综复杂的问题,在开发的过程中的每个阶段都可能出现不可避免的编码错误。软件测试领域存在着很多非常困难的科学问题[24],为了减少错误的存在,本章就进行一些必要的测试。
5.1 测试计划
为了大王门店管理系统的用户体验和使用质量,一定要尽量找出该系统存在的错误及时的加以改正,确保用户可以更快更方便的使用该系统。在整个项目的实现过程中,将严格按照科学的软件测试方法,进行了测试用例,对项目的各个模块都进行了测试。
5.2 测试用例
软件测试的重要性是非常重要的。但如何用最少的人力、投入最少的资源、用最少的时间完成测试,去发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。CSTS is designed to facilitate test data generation in minimum time and cost[25]。每个软件产品一定要有一套优秀的测试方案和测试方法。
5.2.1 查询菜品列表用例测试
管理员登录后,进入主页,就可进行查询菜品功能操作,决定使用4种测试方法完成查询菜品信息的测试用例,并编写预期结果,然后查看实际结果与之是否相符。测试查询菜品信息的操作如表5.1所示。
表5.1 查询菜品信息测试表
编号 测试方法 预期结果 实际结果
1 直接点击查询按钮。 无结果显示。 无结果显示。
2 输入馒头然后点击
查询。 只显示馒头列表 成功显示馒头列表。
3 输入豆浆然后点击
查询。 只显示豆浆列表 成功显示豆浆列表。
4 输入小菜然后点击
查询。 只显示小菜列表 成功显示小菜列表。
5.2.2 修改员工用例测试
用户登录后,进入主页后进入“员工管理”,选择一条信息,然后点击修改,进行测试员工修改操作,决定使用5种测试方法完成修改员工信息的测试用例,并编写预期结果,然后查看实际结果与之是否相符。测试修改员工信息的操作详细如表5.2所示。
表5.2 修改员工信息测试表
编号 测试方法 预期结果 实际结果
1 直接点击保存按钮。 可成功修改。 提示修改成功,查看数据库后无变化。
2 修改员工姓名,其余不修改。 可成功修改。 提示修改成功,跳转后员工姓名改变。 数据库信息改变。
3 修改所属门店,其余不修改。 可成功修改。 提示修改成功,跳转后所属门店改变。 数据库信息改变。
4 修改员工住址,其余不修改。 可成功修改。 提示修改成功,跳转后员工住址改变。 数据库信息改变。
5 修改身份证号,其余不修改。 可成功修改。 提示修改成功,跳转后信息改变。 数据库信息改变。
5.2.3 新增员工用例测试
用户登录后,进入主页后进入“员工管理”,点击新增可进行新增员工操作,决定使用7种测试方法完成添加员工信息的测试用例,并编写预期结果,然后查看实际结果与之是否相符。测试新增员工信息的详细操作如表5.3所示。
表5.3 新增员工信息测试表
编号
测试方法 预期结果 实际结果
1 不填信息,直接点击添加按钮。 添加失败,提示错误信息。 员工名不可为空!
2 输入员工信息,不输入其他。 添加失败,提示错误信息。 门店不可为空!
3 选择门店,不输入其他。 添加失败,提示错误信息。 员工名不可为空!
4 输入员工住址,不输入其他。 添加失败,提示错误信息。 员工名不可为空!
5 输入员工电话,不输入其他。 添加失败,提示错误信息。 员工名不可为空!
6 输入身份证号,不输入其他。 添加失败,提示错误信息。 员工名不可为空!
7 全部输入正确信息 添加成功 添加成功,数据库增加信息
5.2.4 删除员工用例测试
用户登录后,进入主页后进入“员工管理”,可进行删除员工功能操作,决定使用3种测试方法完成删除员工信息的测试用例,并编写预期结果,然后查看实际结果与之是否相符。测试删除员工信息的操作如表5.4所示。
表5.4 删除员工信息测试表
编号 测试方法 预期结果 实际结果
1 不选择任意一条信息点击删除。 删除失败。 请选择一条信息在进行操作。
2 任意选择一条信息后点击删除。 删除成功。 选中的员工信息被删除。
3 选择全部的员工信息后点击删除 删除成功 所以员工被删除,数据库中信息清空
5.3 测试结果
打开Visual VM软件,选择Tomcat进行监视系统的堆、类、线程等数据的变化情况,从图5.1中可以很清楚的看出数据的改变,其中类是平缓的基本不变,堆的变化是比较大的,但也是有规律的。对于正常要求都可以满足的。
在这里插入图片描述

图5.1 Visual VM测试图
从图5.2可看出是没有线程在睡眠的。http-nio-2281-exec-xx 代表Tomcat用的默认的nio来处理http请求,当有请求来,这个线程就会从等待变成运行。

在这里插入图片描述

图5.2 Threads测试图
5.4 本章小结
本章主要叙述了测试相关功能及测试结果,使用了Visual VM测试工具来高效完成测试工作。测试是整个管理系统开发过程中的不可或缺的步骤,确保项目的可用性,测试可以了解用户在使用时可能出现的问题,如果测试时出现问题,还可以进行修改,但是如果没有进行测试,而在用户使用时出现问题,会非常的影响用户的体验。计算机软件测试技术对于一个成功的软件开发来讲是特别关键的[16]。

结 论

现如今在我国计算机技术的发展相比较于美国、日本、韩国等国还是比较落后的。国外一些大型的餐饮企业都已经采用了计算机信息化来进行管理。但是国内的大部分企业对于内部后台的管理绝大部分还是采用纸质的传统方式进行处理,使用计算机网络系统来对餐饮后台系统进行控制管理还没有被重视,所以开发一套后台关于餐饮管理系统来对餐饮门店进行管理和控制是非常有必要的。
本系统在设计与实现的过程中充分考虑了软件的安全性、可移植性等要求,代码的重用性很强、安全性很高,而且本系统的操作简单等特点,所使用的SSM框架技术非常利于开发以及后期维护的,所采用的MVC设计模式保证了系统具有良好的扩展性。本系统实际开发和应用效果充分的说明了本系统设计的合理性与实用性。

致 谢

最后要感谢在整个论文写作过程中帮忙过我的每一位人。首先,也是最主要感谢的是我的指导老师,陈思老师。在整个过程中她给了我很大的帮忙,在论文题目制定时,她首先肯定了我的题目大方向,但是同时又帮我具体分析使我最后选取餐饮系统这个具体目标,让我在写作时有了具体方向。在论文提纲制定时,我的思路不是很清晰,经过老师的帮忙,让我具体写作时思路顿时清晰 。在完成初稿后,老师认真查看了我的文章,指出了我存在的很多问题。在此十分感谢陈老师的细心指导,才能让我顺利完成毕业论文。
同时也非常感谢我的另外一位指导教师董超老师,在遇到技术上的难题,以及自己难以解决的bug时,在询问董超老师之后,都会详细解释然后帮助我进行分析,让我对于这些问题的理解更加深刻。在以后遇到此类问题时都可以自主的进行解决。
在本次论文设计过程中,感谢我的学校,给了我学习的机会,在学习中,老师从选题指导、论文框架到细节修改,都给予了细致的指导,提出了很多宝贵的经验,才使得我的论文完成的比较成功。
不积跬步何以至千里,本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。

参考文献

[1]边清刚,潘东华.Tomcat和Apache集成支持JSP技术探讨[J].研究探讨,2003, 20(6):12-13
[2]杨金花.JSP技术中文乱码的原因及解决方法[J].计算机技术与应用,2011,19(1):78-81
[3]李洋.SSM框架在Web应用开发中的设计与实现[J].应用开发研究,2016,26(12):192-193
[4]黄俊勇.基于Spring框架的研究与设计[J].电脑知识与技术,2018(03):116-117
[5]廖福.扩展Spring MVC模块的Web应用[J].实验室研究与探索,2012,31(10):70-73
[6]刘铃霞,王凌,周斌,吴泉源.MVC模式在Tomcat动态管理中的应用[J].开发研究与设计技术2005,31(6):216-217
[7]周燕玲.Spring MVC框架开发WEB应用程序的探索与研究[J].科技广场,2016,(6):25-28
[8]舒礼莲.基于Spring MVC的Web应用开发[J].计算机与现代化,2013,(11):167-168,173
[9]荣艳冬,关于Mybatis持久层框架的应用研究[J].信息安全与技术,2015,6(12),86-87
[10]徐孝成.基于Shiro的Web应用安全框架的设计与实现[J].电脑知识与技术,2015,(16):93-95
[11]俞国红.利用JQuery框架技术快速开发网站前端页面[J].襄樊职业技术学院学报,2011,10(5):25-27
[12]刘京华.Java Web整合开发王者归来[M].北京:清华大学出版社,2010:87-88
[13]舒后,熊一帆,葛雪娇.基于Bootstrap框架的响应式网页设计与实现[J].电气信息,2016, 24(2):48-49
[14]唐永瑞,张达敏.基于Ajax与MVC模式的信息系统的研究与设计[J].电子技术与应用,2014,40(2):128-129
[15]李敏,林昌意.独立学院JavaEE实训教改探索[J].福建电脑,2017,33(04):87-88
[16]王继成,高珍.软件需求分析的研究[J].计算机工程与设计,2002,23(08):18-19
[17]李超.谢坤武.软件需求分析方法研究进展[J].湖北民族学院学报(自然科学版),2013,31(02):204-211
[18]张莉,王强.SQL Server数据库原理及应用教程[M].北京:清华大学出版社,2003:2-3
[19]Bruce Eckel. Thinking in Java[M].Upper Saddle River, New Jersey, USA:Prentice Hall,2006:217-220
[20]David R Heffelfinger.Java EE 7 Development with NetBeans 8[M]. Birmingham,UK:Packt PublishingLtd,2015:140-145
[21]郭航宇,成丽君.基于JavaEE的诗词文化网站系统设计与实现[J].电子技术与软件工程,2018(11):7-8
[22]Syed Hamdi Tirmizi,Juan F. SEQUEDA,OSCAR CORCHO, et al.Survey of directly mapping SQL databases to the Semantic Web[J].The knowledge engineering review,2011,26(4):445-486
[23]MetskerS J.Java设计模式[M]. 北京:电子工业出版社,2012:75-77
[24]聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(02):1-3
[25]Priyanka Chawla,Inderveer Chana,Ajay Rana.Framework for cloud-based software test data generation service[J].Software:Practice and Experience,2019,49(8) 1307-1328

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/440104.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【web网页制作】html+css网页制作企业网站办公用品主题(3页面)【附源码】

企业网站目录 涉及知识写在前面一、网页主题二、网页效果Page1、主页Page2、用品展示Page3、关于我们 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码4.1 主页模块源码4.2 源码获取方式 作者寄语 涉及知识 办公用品企业主题HTML网页制作&#xff0c;…

2024pytest自动化测试框架学习(一)

pytest是一个使构建简单和可扩展测试变得容易的框架。测试具有表现力和可读性-不需要样板代码。数分钟内即可开始为您的应用程序或库进行小型单元测试或复杂的功能测试。 一、安装 使用在线安装命令&#xff1a; pip install -U pytest (参数-U代表如果你已经安装了pytest&…

限制员工上网行为,如何有效管控员工上网行为? 你一定想不到这个方法!

发现员工上班时间刷抖音&#xff1a; 面对这种情况&#xff0c;领导不得火冒三丈&#xff1f;&#xff1f;&#xff1f; 对于员工不恰当的上网行为&#xff0c;非常有可能导致工作效率低下、安全风险增加以及企业形象受损。 因此应该采取一些措施来对员工上网行为进行管理。 …

NTP协议介绍

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 网络时间协议NTP&#xff08;Network Time Protocol&#xff09;是TCP/IP协议族里面的一个应用层协议&#xff0c;用来使客户端和服务器之间进行时…

浅谈碳化硅MOSFET TO-247封装单管引入开尔文管脚必要性

相较于传统的硅MOSFET和硅IGBT 产品&#xff0c;基于宽禁带碳化硅材料设计的碳化硅 MOSFET 具有耐压高、导通电阻低&#xff0c;开关损耗小的特点&#xff0c;可降低器件损耗、减小产品尺寸&#xff0c;从而提升系统效率。而在实际应用中&#xff0c;我们发现&#xff1a;带辅助…

Navicat安装破解教程

蓝奏云下载地址https://wws.lanzoux.com/b01tqirzc或者链接https://pan.baidu.com/s/15cfQAFdQsn8xSg_2LiQZHg 提取码&#xff1a;q3rd链接&#xff1a;https://pan.baidu.com/s/1WwyCC03qcnqnWKGo-m6ZjA 提取码&#xff1a;pg9uNavicat16目前没有破解方法&#xff0c;15可以&a…

Ant Design Vue 修改Model弹框 样式不生效

今天在使用 Ant Design Vue 组件库中又踩了一个坑 其他的样式都可以更改&#xff0c;唯独更改 Model 弹框组件的样式一直不生效 于是研究了好久才找到样式不生效的原因 最后又折腾了好久&#xff0c;参考了不少资料才得出的解决方案&#xff1a;

软件测试卷王面试题分享(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在这把自己整理的软件测试面试题和文档发出来给各位一点帮助&#xff0c;面试题记得收藏好&#…

【GAMES101】Lecture03 Transformation 变换

目录 0 课程内容1 Why Study Transformation1.1 Modeling 模型变换1.2 Viewing 视图变换 2 2D Transformations 二维变换2.1 Scale 缩放变换2.2 Reflection Matrix 反射矩阵2.3 Shear Matrix 切变矩阵2.4 Rotate 旋转2.5 特点&#xff1a;线性变换可以用矩阵表示&#xff08;Li…

量化投资实战(三)之配对交易策略--协整模型法

点赞、关注&#xff0c;养成良好习惯 Life is short, U need Python 量化投资实战系列&#xff0c;不断更新中 1. 初识配对交易策略 配对交易&#xff08;Pairing Trading&#xff09;是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量…

【MQ】消息队列概述

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;MQ ⛺️稳中求进&#xff0c;晒太阳 定义 消息队列&#xff1a;一般我们简称为MQ(Message Queue) Message Queue :消息队列中间件&#xff0c;很多初学者认为&#xff0c;MQ通过消息的发送…

C++:string的介绍

C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合面向对象的思想&#xff0c;而且底层空间需要用户自己管理&#xff0c;稍不留…

RocketMQ如何保证消息的顺序性?

和Kafka只支持同一个Partition 内的消息的顺序性一样,RocketMQ中的也提供了基于队列(分区)的顺序消费。即同一个队列内的消息可以做到有序,但是不同队列内的消息是无序的! 当我们作为MQ生产者需要发送顺序消息时,需要在send方法中,传入一个MessageQueueSelector。 Mes…

Media-Download-Helper 完整部署说明

Media-Download-Helper 完整部署说明 前排提示&#xff1a;由于使用到了 Telegram、Google 等服务&#xff0c;所以当前方案不建议国内用户使用&#xff01; 基于 docker 安装 qbittorrent WebUI 使用 docker 安装 qbittorrent 非常简单&#xff0c;教程也非常非常多&#xff…

安卓7原生相机切到视频崩溃

目录 1、查看日志 2、分析日志、提取重点 3、寻找解决方法 author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 1、查看日志 由于安…

格行随身WiFiVS华为天际通VS飞猫U8真实测评大PK,随身WiFi哪个牌子最好用?随身WiFi怎么选?

如今随身WiFi界格行、华为、飞猫三足鼎立&#xff0c;被称为随身WiFi界的“三国杀”&#xff0c;今天&#xff0c;我这个江湖百晓生就来给大家揭秘&#xff0c;究竟谁才是随身网络之王&#xff1f;你准备好围观了吗&#xff1f; 先说说华为天际通随身WiFi&#xff0c;这位老大哥…

今日arXiv最热大模型论文:北大发布,通过上下文提示,让大模型学习一门新的语言

在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;的发展已经取得了显著的进步&#xff0c;它们在处理高资源语言方面表现出色。然而&#xff0c;对于资源较少的语言&#xff0c;尤其是极低资源语言&#xff0c;这些模型的支持却显得力不从心。这些语言往往缺…

【C++庖丁解牛】C++内存管理 | new和delete的使用以及使用原理

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. C/C内存分布2. C语…

方法中单独使用return关键字

一、return关键字的单独使用 二、示例代码 public class ReturnDemo {public static void main(String[] args) {chu(10,0);chu(10,2);}public static void chu(int a,int b){if (b 0) {System.out.println("除法出错&#xff0c;除数不能为零");return;}System.ou…

无处不在的便捷:D咖无人售卖咖啡机在公共场所的应用探索

在繁忙的现代生活中&#xff0c;无人售卖咖啡机作为一项便捷的服务&#xff0c;正逐渐在公共场所得到广泛应用。本文将探讨D咖无人售卖咖啡机在公共场所的应用场景和优势。 一、无人售卖咖啡机的应用场景 写字楼&#xff1a;写字楼内工作人员需要在繁忙的工作中寻找便捷的饮品解…