KTV运营平台
一、系统设计概述
1、设计目的
该系统设计的目的在于使用web技术开发一个平台系统用于线下KTV门店运营管理,旨在对日常订单进行登记和门店会员的注册管理。传统的书面账单效率低下,该系统能提高KTV前台的工作效率。
2、设计思想
该系统将KTV运营所需要的数据存储在数据库中,利用网页进行交互,因此页面设计简洁和美观很重要,为了让后台响应良好,需使用框架来辅助开发
二、系统需求分析
1、功能需求
登录功能:因为这个系统是交给前台服务员去操作的,因此只需在数据库中添加一个一个管理员用户即可,无需注册功能。
查询包间功能:查询数据库中存储包间信息的表,将包间状态,价格,等信息已表格的形式展示出来。
包间登记功能:该功能包括包间登记信息展示和添加新的登记信息功能,登记信息展示有登记人姓名,电话,包间编号等,每个包间编号绑定一条记录,对于已经完成付款的顾客可以对该记录进行删除操作;顾客来消费可以对其做登记,并添加一条消费记录到账单里面。
酒水存量功能:该功能可以查询本店酒水库存,并用于增减操作。
会员功能:该功能包括会员数据表展示、会员查询和会员注册。每个会员拥有系统分配的唯一的账号,结算的时候给予相应的折扣
账单功能:该功能可以查询最近的所有账单记录,每条记录包括订单编号、包间编号、总消费和付款状态。通过查询结算包间的编号来完成离店支付。
2、可行性分析
技术可行性:计算机配置够高,有足够的空间可以安装运行平台、数据库和各类编程工具,在编程环境上提供了可靠的支持;在编程人员方面,可以运用以前所学各种计算机开发软件的计算机知识和管理知识,加上不断的学习,未系统的开发提供了必要的技术保障。
经济可行性:本系统采用Spring boot后台框架和vue前端框架,开源,免费,登入给予Web的KTV运营平台即可进行操作,方便快捷。
三、系统设计的基本原理和采用的主要方法与技术
1、基本原理:
本系统是基于web开发,利用Java和数据库技术对前台数据进行操作的一个集成网页系统,利用前后端分离技术进行跨域操作,将后台数据封装成JSON数据以URL向前端发送,前端通过本地域名和端口号获取数据,前端操作的数据又可以通过端口号发回后端。
2、主要方法和技术:
本系统前端采用Vue框架进行页面设计,其中在Vue里面又利用了基于Vue封装的组件库Element-ui对页面进行美化,页面设计部分大部分模块采用了Element-ui的组件进行修改组装,最终呈现出美观的页面;
后端采用Spring boot框架和Mybatis-Plus数据库框架,其中Spring是Java平台上的轻量开源框架,提供具有翻转特性的容器,Spring boot是基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程;Mybatis-Plus(MP)框架是Mybatis的增强版,在Mybatis的基础上只做增强,不做改变,简化开发,提高效率,其中Mybatis-Plus,使用的内置的代码生成工具,采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,该分层思想满足MVC的设计模式,模块层,视图层和控制层自动生成,在控制层调用服务层接口实现一系列前后端交互操作,在服务层实现类写具体代码实现。Mybatis-Plus框架结构如下:
四、本人在此次实习负责的系统模块设计与实现。
本人在该次实习中属于个人完全开发,系统全部的模块设计均由我本人设计并实现,所有的前后台数据交互均使用Vue里面封装好的组件axios对数据进行接受与发送,我设计的模块有:
1、登录模块:该模块页面较简洁,我个人追求一切从简,从配色方面下了一番功夫,登录校验功能在后台实现。
2、主页模块:该模块页面设计灵感来源于以前做过的一个医院管理系统,主打黑黄配色,子页面配上淡淡的蓝色,简洁美观。主页主要由最左边导航栏和右边子页面组成,信息交互主要在子页面进行,通过绑定路由到每一个导航栏,将每一个子页面与导航栏一一对应,实现整体页面不刷新,局部刷新的功能,导航栏采用Element-ui的样式。
其中主页模块又包含五个功能模块,分别为:
3、包间查询模块,该模块实现的功能是实时查询包间空余状态,以便分配包间给客人使用,该模块会根据登记情况对包间是否空余状态进行动态修改,并同步到后台,并更新数据库的状态,并实时更新到页面上,一目了然,该页面如下:
4、包间登记功能:该模块包含两个功能,一个是登记信息展示和添加登记信息功能,其中,添加登记信息之后,能在信息展示页面实现更新,并向后台发送一段包含包间编号的信息,更新包间状态的状态,该功能的页面如下:
5、酒水饮料功能:该功能可以实时查询店内酒水存量,并查询价格信息等,对于商品的存量变化,前台人员可以对数据进行增减,保证每日的供应量。
6、会员管理功能:该功能可以实时查询已经购买本店会员的人员信息,并拥有增删功能,,可以对新注册的会员进行个人信息登记,只需发送数据到后台,然后往数据库里添加信息即可,该功能页面如下:
7、账单结算:该功能可以查询近期所有的账单,包括已结算的账单,前台人员可以对每一笔账单做记录,拥有修改支付状态、查询账单、删除账单权限。
五、个人遇到的困难与获得的主要成果
1、遇到的困难:
(1)使用旧版本IDEA的时候,配置项目的Maven 依赖总是会使用编译器自带的Maven,使得下载Spring boot依赖的时候出错,解决方法:删除项目,卸载旧版IDEA,安装最新版IDEA,安装最新版Maven,配置默认Maven版本为自己安装的。
(2)项目做到一半的时候,发现想要在一张数据表中添加一个字段,结果添加之后,由于利用到Mybatis-Plus的自动生成代码功能,于是把一开始已经存在的那张表的实体类、控制类、服务类等都删了重新生成代码,结果运行项目往这张表中添加数据时发生了意想不到的数据库出错,最后解决不了,于是重新建立一个项目,从头开始,先确定数据表要不要修改,不用修改之后才开始构建项目。这让我懂得了有时候绝不能轻易删除项目中的类,因为项目一旦构建好之后,不一定可以删除干净。
(3)前后台传值报错,有时候后台接受前台传回来的数据,因为数据传回来的时JSON数据,如果后台不使用正确的方法去接受的话,会导致传回来一些乱码,一般如果前台传回的时一个JSON对象的话,后后台也应该用一个对象去接受,并且使用正确的注解,例如使用@RequestBody注解去将前台传回的JSON对象转化为实体类对象。
(4)登录验证token拦截器失效,在登录成功时在后台生成了一个携带用户名的加密字段,传回前端前端对该token信息进行读取,如果正确传回了该信息,则说明用户已经完成登录,可以进行后续操作,否则强制跳回登录页,但是我这里token不起作用,直接输入主页的地址也能跳转,安全性还有待加强。
(5)Vue项目引入阿里云图标失败问题,引入的图标不显示。Element-ui的图标倒是可以引入。
(6)Vue项目中Element-ui table中引入计数器,绑定列名到计数器输入框问题,绑定失败,获取tableData中的值貌似只能用tableData.data来获取全部数据,不能单独将tableData.nums绑定到计数器中。
2、获得的主要成果:
(1)从以前使用JSP进行的前后端集成开发,转变为前后端分离开发,学会了Vue前端框架的使用,前后端分离使得数据处理更加清晰,前台负责展示数据,后台负责处理数据,将前后端进行解耦,即使前端出错也不会对后端有太大的影响,Vue框架是我用过的最好的开发框架之一,轻量化,跳转页面只需要进行简单的路由配置路径,即可随意跳转,我觉得在本系统中Vue最出色的地方在于子页面的跳转,只需要设置好子路由即可;在路由配置方面只需要在Vue项目中router下的index.js下导入每个页面的路径,然后配置好path,即可在导航栏中绑定每个子页面。
(2)在本次实习中学会了Element-ui的使用,我发现Element-ui里面的组件基本上能满足日常开发了,特别时表格用的比较多,因为表格绑定数据操作简单,只需要在每个column里面将prop的值与后台对应实体类的值一一对应即可自动完成绑定,在导航栏那里采用了Element-ui的样式,修改了布局,绑定导航栏的index为每个子页面的路由地址,使用了Element的表单,其中表单的数据绑定也比较简单明了,传值到后台只需要将form对象通过axios发送到后台即可
Element-ui官网:
(3)学会了Spring boot框架的基本配置搭建,在Spring boot中集成了Mybatis-Plus配置,理解了MP思想,认识到了MVC设计模式的好处,体会到了数据库框架的好处,常用的增删改查数据不需要写SQL语句配置,直接调用Server层的实现方法,对数据进行增删改查操作。前后端进行交互前要先进行跨域配置,才可以使用Mapping方法接受前端的数据和发送数据到前端,理解了GetMapping,PutMapping,PostMapping,DeleteMapping等使用过程和方法。
(4)学会了利用框架和组件的文档在理解的基础上嵌入到项目当中,并逐渐熟练运用不同的组件对整个项目进行美化完善,融会贯通,不写重复代码,提高了技术文档阅读能力。
(5)学会了使用IDEA的Debug功能,掌握了前后台发生数据交互的时候合理的设置断点,观察数据的传递,可看出哪里出错,数据有没有传回后台,进一步提高了调试能力,理解了一些网页页面检查信息的功能。
(6)学会了排查错误,善于利用百度等搜索引擎去搜索解决方案,养成了自己纠错的习惯,提高了开发技术,可以举一反三,融会贯通。
六、测试与运行记录
1、登录调试运行记录:
前台向后台发送数据:
后台接受到的数据:
登录成功后返回前台的数据:
登录功能测试完毕。
2、包间查询测试:
可以看到后台以List集合的形式向前端发送包间信息
3、包间登记测试:
前台数据:
后台拿到的数据:
删除登记信息测试:
后台获取被删除的id:
4、酒水模块测试:
更新库存
后台调试数据:
5、会员模块测试:
搜索会员:
添加会员:
后台调试获取到的数据:
前台更新会员列表:
删除会员测试:
后台获取待删除的id:
6、账单模块测试:
删除测试:
1号账单删除成功
账单结算后更新付款状态:
后台更新:
可以看到11号账单变为已支付。
本次系统测试运行完毕!
七、系统设计完成结果分析与个人小结
本系统设计完成度达到90%,经调试运行,除了存在一些安全性问题外,系统基本可以正常运作,数据精确不出错,但是系统设计结构上可能没有那么严谨,功能也不够全面,后续会增添新功能;结果也算达到了我想要的效果,毕竟完全属于个人开发,时间只有十几天,从熟悉框架开始入门,也逐渐学到了很多技术,特别时Mybatis-Plus框架给予了我很大的帮助,在页面的设计方面,Vue框架给了我很大的自信,我越来越喜欢使用Vue框架,看着自己精心设计出来的界面,有一股巨大的成就感。通过这次实习,我体会到了模块化开发的优点,提高了对整体项目的管理能力,在独立开发中可以学到