基于SSM框架的婚庆平台设计与实现

news2024/11/15 11:17:19

目 录

摘 要 I
Abstract II
引 言 1
1相关技术 3
1.1 SSM框架简介 3
1.2 MySQL数据库简介 3
1.3 MVC设计模式简介 3
1.4 本章小结 4
2系统分析 5
2.1功能需求 5
2.1.1 用户功能需求 5
2.1.2 管理员功能需求 6
2.2非功能需求 10
2.3本章小结 10
3系统设计 11
3.1总体设计 11
3.1.1平台设计原则 11
3.1.2平台功能结构 11
3.1.3平台体系结构 12
3.2详细设计 13
3.2.1数据库设计 13
3.2.2核心功能设计 15
3.5本章小结 20
4系统实现 21
4.1开发环境 21
4.2开发规范 21
4.3数据库实现 21
4.4核心功能实现 22
4.4.1用户分享爱情故事 22
4.4.2用户定制婚礼 23
4.4.3用户预约 24
4.4.4管理员处理预约信息 26
4.4.5管理员查看数据统计 27
4.5本章小结 28
5系统测试 29
5.1测试计划 29
5.2功能测试 29
5.3性能测试 31
5.4本章小结 34
结 论 35
致 谢 36
参考文献 37

摘 要

随着人们生活水平的不断提高,婚庆行业也在不断发展,但是承办婚礼的机构普遍是以实体店为主,发展相对落后,并且随着用户数量的增加,用户需求的变化,使得传统的婚庆行业面临了严峻的挑战,婚庆行业的信息化水平亟待提升。因此传统婚庆已经无法满足现代婚庆行业的发展要求。本文针对当前存在的此种迫切需求开发了基于SSM框架的婚庆平台。
通过对婚庆行业的调研,并充分考虑人们对婚庆的需求因素,基于SSM框架进行平台搭建,使用MySQL作为数据库,以Tomcat为应用服务器,开发实现了本婚庆平台。用户可以查看本平台提供的婚庆相关资讯,可在平台自主定制婚礼(包含主题、司仪、礼服和婚车4种类型服务),并完成预约操作。本平台的搭建使婚庆业务的可操作性、直观性大大增强,具有方便、快捷等特点,很大程度上解决了传统婚庆行业消费不透明的现象,提升了市场竞争力。
本婚庆平台采用MVC设计模式开发,具有功能结构清晰且灵活性强的优点。经过设计实现和系统测试,本婚庆平台各个功能均正常运行,可以满足目前婚庆行业信息化的需要。
关键词:婚庆平台; SSM框架; 定制婚礼

Abstract

With the continuous improvement of people’s living standards, the wedding industry also has a growing, but undertake wedding agency are generally store is given priority to, the development is relatively backward, and with the increase of the number of users, the change of user requirements, make the traditional wedding industry is facing the severe challenge, the wedding industry informatization level to ascend. Therefore, the traditional wedding has been unable to meet the development requirements of the modern wedding industry. This paper develops a wedding celebration platform based on SSM framework according to the current urgent needs.
Based on the survey of the wedding industry, and taking people’s demand for wedding into full consideration, the platform was built based on SSM framework. MySQL was used as the database and Tomcat was used as the application server to develop and realize the wedding platform. Users can view the wedding related information provided by the platform, customize the wedding (including theme, master of ceremonies, wedding dress and wedding car services) on the platform, and complete the reservation operation. The construction of this platform makes the wedding service operable, intuitive greatly enhanced, with the characteristics of convenience, speed and so on, to a large extent to solve the traditional wedding industry consumption opaque phenomenon, improve the market competitiveness.
This wedding platform is developed by MVC design pattern, which has the advantages of clear functional structure and strong flexibility. After design and implementation and system testing, all functions of the wedding platform are running normally and have been put into use. The actual use has proved that this wedding celebration platform is stable in operation and rich in functions, which can meet the needs of the wedding celebration industry informatization.
Keywords: wedding platform; SSM framework; customized wedding

引 言

在中国,人们通常都对自己的婚礼十分重视,希望能有一个专属于自己的难忘且浪漫的婚礼。婚庆行业,又名婚庆消费行业,是为人们在举行婚礼时提供各种服务的一个行业。现代意义上的婚庆行业进入中国市场还不到20年,对于中国来说婚庆行业是一个新兴行业[1],具有很大的商机和广阔的发展空间。婚庆涉及很多种不同类型的服务,例如婚礼的主题,婚礼负责主持的司仪,结婚时穿的婚纱礼服,迎亲时的婚车,为新人化妆的化妆师团队,为新人负责录像和摄影的影像团队等等。婚庆行业的前景乐观,未来发展会更加多元化:
(1)婚庆行业的服务类型丰富多样。随着现代人消费水平的不断提高,人们对婚庆行业的要求也越来越高。为了给用户提供称心的服务,婚庆行业的公司,不再被传统婚庆服务所束缚,而是提供更加新颖、简洁、丰富的服务,提升用户体验。
(2)婚庆公司更加注重团队合作和团队精神。在婚庆行业工作,少不了各种类型的服务团队之间的合作,例如影像团队,化妆师团队等等。通常情况下,一场婚礼的整体流程和具体细节由本场婚礼的策划师负责制定,并统一安排人手。
(3)从事婚庆行业的人更加专业化。为了使口碑提升,形成品牌效应,从事婚庆行业的人自身专业性素质不断提升,服务的质量也越来越高,这样也使婚庆行业朝着专业化方向发展。
与庞大的市场需求和乐观的发展前景相比较,目前中国的婚庆行业还远远不能满足消费者的需求。据调查显示,中国人在新婚时对自己选择的婚庆公司表示比较满意的比率只有10%左右。目前婚庆行业在产业的规模大小和对用户的服务水平上都有很长的路要走。本文所设计的婚庆平台主要解决以下几个痛点:
(1)传统婚庆行业的发展比较落后。据调查显示,中国目前承办婚礼的机构普遍是以实体店为主,发展相对较为落后,并且很少有网络化的平台。本文设计并实现一个网络化的婚庆平台,方便用户定制属于自己的婚礼,实现婚庆行业的信息化。
(2)现代人婚庆方面的知识比较匮乏。即将结婚的人们一般都对自己的婚礼十分重视,但现代人普遍缺乏婚礼习俗,婚礼流程等知识。本平台提供丰富的有关婚礼习俗,婚礼攻略方面的文章,方便用户了解婚庆方面的知识。
(3)婚庆行业隐形消费较多。隐形消费出现的原因是传统婚庆行业消费不透明,细则不明确等。本婚庆平台提供公开,透明化的服务,价格一目了然,绝无二次消费,用户可放心使用。
本文所设计的婚庆平台旨在解决人们在结婚时遇到的问题,努力为人们提供最简洁、最便利的婚庆服务以及有关婚礼习俗和婚礼攻略方面的知识,形成一个专业化的服务体系。通过本婚庆平台,用户可直接计算婚庆所需费用,提供了直观的婚庆体验,使婚庆流程电子化,现代化。这些对于提高婚庆服务的质量和层次,满足客户的时尚化、个性化和多元化需求都有一定意义。
本文主要从以下几个方面进行阐述:(1)对本婚庆平台使用的相关技术进行介绍。(2)对本婚庆平台进行功能需求分析和非功能需求分析。(3)对本婚庆平台进行系统设计,包括总体设计与详细设计。(4)对本婚庆平台进行实现,主要包括数据库实现和核心功能的实现。(5)对本婚庆平台进行测试,主要包括功能测试和性能测试。

1相关技术

1.1SSM框架简介
SSM框架,即Spring、Spring MVC和MyBatis3个开源框架组合而成。SSM框架通常作为web项目的框架使用。同时SSM框架也是目前主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统[2]。
Sping框架是一个集众多设计模式于一身的开源的,轻量级的项目管理框架,致力于JavaEE轻量级解决方案,其核心思想是IOC与AOP。IOC即控制反转(Inverse Of Control),将对象的创建由原来new的方式转移到Spring配置文件中,由Spring工厂进行创建。AOP即面向切面编程(Aspect Oriented Programming),从切入点和通知类入手,使用动态代理给目标类增加额外功能[3]。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面[4]。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC是轻量级的典型MVC框架,在整个MVC架构中充当控制器。在开发中,通常使用其注解式开发,十分的高效与灵活。
MyBatis框架是一个基于Java的持久层框架,主要用于对数据库的增删改查操作。MyBatis对现有的JDBC代码进行合理封装,可以自动完成对象关系映射。MyBatis的出现大大简化了开发流程,提高了开发效率[5]。
1.2MySQL数据库简介
在当今的互联网中,最常见的数据库模型主要有两种,即关系型数据库和非关系型数据库。关系型数据库是创建在关系模型基础上的数据库,利用集合代数等数学概念和方法来对数据库中的数据进行处理[6]。
MySQL 是目前最流行的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前为Oracle 公司所有。MySQL数据库存储速度很快,体积相对较小且具有跨平台的特性,由于开放源码,任何人都可以下载使用,所以很多网站的开发者在开发时一般都会选择MySQL作为数据库[7]。
1.3MVC设计模式简介
设计模式是一套成功的代码设计总结,并且这些代码已被开发人员反复使用[8]。模式都是典型问题的解决方案,而不是某个单独的问题。在程序设计中,把采用模型(Model)、视图(View)、控制(Controller)的设计方式称为MVC设计模式[9]。模型(Model) 即处理业务逻辑,对应组件是一个Java类。视图层(View)即显示查询结果并收集用户数据,对应组件是jsp或html。控制器层(Controller)即接收 View 请求并将请求转发给对应的 Model 并响应客户端,对应组件是Servlet。
在开发时按照MVC设计模式进行开发有很多好处:(1)每层各自负责自己的任务:在MVC设计模式中,3个层分工互不相同,若某层需求变化,只需修改自己层中的代码,不影响另外2层[10]。(2)有利于人员分工:例如某企业在开发某项目时使用MVC设计模式,那么前端开发工程师可以开发JSP页面,后端开发工程师可以开发控制器或处理业务,两者分工明确且可同时进行。(3)有利于组件复用:例如控制层可以是一个通用组件,视图层也可以是一个通用界面。总结来说,MVC设计模式使界面和业务逻辑分离,使程序变得更加灵活。
1.4本章小结
本章主要介绍了本婚庆平台所使用的技术:基于SSM框架技术进行搭建,MySQL数据库用于数据存储,使用MVC设计模式进行代码的编写,增强程序的可维护性和拓展性,降低耦合。

2系统分析

2.1功能需求
2.1.1 用户功能需求
用户功能主要包括:注册,登录,修改基本信息,修改密码,查看预约信息,查看日志信息,反馈建议,查看婚庆资讯,查看分享爱情故事,查看可定制的婚庆服务,定制婚礼和预约。如图2.1所示:
在这里插入图片描述

图2.1 婚庆平台用户用例图

1.注册:用户进入婚庆平台用户端,若处于非登录状态,可选择进行注册,用户进入注册页面,输入相关基本信息可进行注册,例如:性别、联系方式、出生日期等,若用户注册成功,页面跳转至登录页面。
2.登录:用户进入婚庆平台用户端,若处于非登录状态,可选择进行登录,用户进入登录页面,输入正确的用户名和密码可进行登录,若用户登录成功,即可跳转至主页面。
3.修改基本信息:用户进入婚庆平台用户端,登录后,用户可进入个人中心页面,选择“修改基本信息”,即可对注册时填写的基本信息进行修改,例如:性别、联系方式、出生日期等。
4.修改密码:用户进入婚庆平台用户端,登录后,用户可进入个人中心页面,选择“修改密码”,然后输入正确的原密码和新设置的密码,即可完成对密码的修改操作。
5.查看预约信息:用户进入婚庆平台用户端,登录后,用户可进入个人中心页面,选择“我的预约”,即可查看自己已预约的婚庆服务信息,例如预约编号、预约时间、总额等。
6.查看日志信息:用户进入婚庆平台用户端,登录后,用户可进入个人中心页面,选择“登录日志”或“密码修改日志”,即可查看历史登录时间或历史密码修改时间。
7.反馈建议:用户进入婚庆平台用户端,登录后,可进入反馈建议页面,输入对婚庆平台的建议,提交后,管理员会看到用户的反馈建议。
8.查看婚庆资讯:用户进入婚庆平台用户端,用户可在首页看到“婚礼攻略”“婚礼习俗”,“友情链接”3个栏目,点击各自栏目下的链接,即可查看平台提供的婚庆资讯信息。
9.查看分享爱情故事:用户进入婚庆平台用户端,可进入爱情故事页面,用户可查看其他用户分享的爱情故事,也可分享自己的爱情故事,在爱情故事分享页面,输入故事标题和故事内容,提交并被管理员审核通过后,分享的爱情故事方可显示。
10.查看可定制的服务:用户进入婚庆平台用户端,可在首页看到“主题分类”,“主题推荐”,“司仪推荐”,“礼服推荐”,“婚车推荐”5个栏目,每个栏目下对应着各自的婚庆服务,用户可选择查看服务的详情展示页。
11. 定制婚礼:用户进入婚庆平台用户端,可进入服务详情展示页,可把心仪的服务添加到定制列表,定制列表包含主题,司仪,礼服,婚车4种类型,每种类型最多只能定制1个。
12. 预约:用户进入婚庆平台用户端,登录后,可进入定制列表页面,此页面显示主题、司仪、礼服、婚车4中类型的服务定制情况,在选择服务定制之后输入预约时间,可进行预约。
2.1.2 管理员功能需求
管理员功能主要包括:登录,处理预约信息,查看反馈建议,查看管理员登录日志,查看数据统计,用户相关管理,婚礼定制管理,主题相关管理和平台资讯管理。如图2.2所示:
在这里插入图片描述

图2.2 婚庆平台管理员用例图

1.登录:管理员进入婚庆平台管理员端的登录页,输入管理员名称和密码,点击登录按钮,若管理员名称和密码正确,即可登录成功,之后页面跳转至婚庆平台管理员端主页面。
2.处理预约信息:管理员登录进入婚庆平台管理员端后,在菜单栏点击“处理预约信息”,可查看用户的预约信息,并对待处理状态的预约信息进行处理,可选择“接受预约”或“拒绝预约”。
3. 查看反馈建议:管理员登录进入婚庆平台管理员端后,在菜单栏点击“查看反馈建议”,可查看用户的反馈建议信息,例如用户名,反馈建议内容和反馈建议时间等。
4. 查看管理员登录日志:管理员登录进入婚庆平台管理员端后,在菜单栏选择“管理员登录日志”,即可查看管理员的登录日志信息,例如:管理员名称和登录时间等。
5. 查看数据统计:管理员登录进入婚庆平台管理员端后,在菜单栏选择“平台数据统计”,可出现2个二级菜单,分别是用户性别年龄统计和用户预约消费统计。
(1)用户性别年龄统计:管理员可查看用户性别年龄柱状图,此柱状图显示用户在各个年龄段的男女分布人数。通过用户性别年龄柱状图可以推测本婚庆平台用户的大致年龄范围。
(2)用户预约消费统计:管理员可查看用户预约消费饼状图,此饼状图显示用户在各个消费区间的人数及所占百分比。通过用户预约消费饼状图可以推测本婚庆平台用户的消费水平。
6. 用户相关管理:管理员登录进入婚庆平台管理员端后,在菜单栏选择“用户相关管理”,可出现2个二级菜单,分别是用户信息管理和爱情故事管理。
(1)用户信息管理:管理员可查看用户信息,例如用户名,手机号码,性别,出生日期,年龄,注册时间等。同时,管理员可更改用户的状态信息,冻结某个用户,若某个用户账号被冻结,则该用户无法登录婚庆平台用户端。
(2)爱情故事管理:管理员可查看用户分享的爱情故事信息,例如标题,作者,分享时间和状态信息等。管理员点击查看详情按钮,可查看当前爱情故事的详细内容,并且管理员可更改爱情故事的状态信息,使某个故事显示或不显示,若某个故事状态是不显示,则该故事不在婚庆平台用户端显示,不可被其他用户阅读。
7. 婚礼定制管理:管理员登录进入婚庆平台管理员端后,在菜单栏选择“婚礼定制管理”,可出现4个二级菜单,分别是主题定制管理、司仪定制管理、礼服定制管理和婚车定制管理。
(1)主题定制管理:管理员可查看主题信息,例如主题名称,图片展示,主题简介,价格,热度值,策划师,所属类别,所属影像团队,所属化妆团队和状态信息。同时,管理员可添加,删除,修改主题信息,若某个主题状态是不可定制,则该主题不在婚庆平台用户端显示,不可被用户定制。
(2)司仪定制管理:管理员可查看司仪信息,例如司仪姓名,图片展示,手机号码,性别,出生日期,个人简介,价格,热度值和状态信息。同时,管理员可添加,删除,修改司仪信息,若某个司仪状态是不可定制,则该司仪不在婚庆平台用户端显示,不可被用户定制。
(3)礼服定制管理:管理员可查看礼服信息,例如礼服名称,图片展示,礼服简介,使用时间,价格,热度值和状态信息等。同时,管理员可添加,删除,修改礼服信息,若某个礼服状态是不可定制,则该礼服不在婚庆平台用户端显示,不可被用户定制。
(4)婚车定制管理:管理员可查看婚车信息,例如婚车名称,图片展示,婚车简介,使用时间,价格,热度值和状态信息等。同时,管理员可添加,删除,修改婚车信息,若某个婚车状态是不可定制,则该婚车不在婚庆平台用户端显示,不可被用户定制。
8.主题相关管理:管理员登录进入婚庆平台管理员端后,在菜单栏选择“主题相关管理”,可出现4个二级菜单,分别是类别管理、策划师管理、影像团队管理和化妆团队管理。
(1)类别管理:管理员可查看主题的类别信息,例如类别名称等,本婚庆平台的类别主要分为5种:复古婚礼、梦幻婚礼、唯美婚礼、西式婚礼和简洁婚礼。同时,管理员可添加,删除,修改类别信息。
(2)策划师管理:管理员可查看主题的策划师信息,例如策划师姓名,图片展示,手机号码,性别,个人简介,个人宣言,从业时间等。同时,管理员可添加,删除,修改策划师信息。
(3)影像团队管理:管理员可查看主题的影像团队信息,例如影像团队名称,图片展示,手机号码,团队简介,团队宣言,团队成立日期等。同时,管理员可添加,删除,修改影像团队信息。
(4)化妆团队管理:管理员可查看主题的化妆团队信息,例如化妆团队名称,图片展示,手机号码,团队简介,团队宣言,团队成立日期等。同时,管理员可添加,删除,修改化妆团队信息。
9. 平台资讯管理:管理员登录进入婚庆平台管理员端后,在菜单栏选择“平台资讯管理”,可出现3个二级菜单,分别是婚礼攻略管理、婚礼习俗管理、和友情链接管理。
(1)婚礼攻略管理:管理员可查看本婚庆平台提供的婚礼攻略信息,例如文章标题,作者,发表时间,上次修改时间和操作等。同时,管理员可添加,删除,修改婚礼攻略信息。
(2)婚礼习俗管理:管理员可查看本婚庆平台提供的婚礼习俗信息,例如文章标题,作者,发表时间,上次修改时间和操作等。同时,管理员可添加,删除,修改婚礼习俗文章。
(3)友情链接管理:管理员可查看本婚庆平台提供的友情链接信息,例如网站的名称和网站的具体网址等。同时,管理员可添加,删除,修改友情链接信息。
2.2非功能需求
在需求分析时,开发人员相对来说更加关注功能需求,但非功能需求同样重要,它影响了系统的架构设计[11]。如果把非功能需求做好,可以使开发的产品生命周期更长,提高了产品的可靠性和可维护性。本婚庆平台的非功能需求包括环境需求,界面需求,资源使用率,业务量和响应时间。如表2.1所示:
表2.1 非功能需求详情
编号 需求类别 内容
1 环境需求 操作系统:Windows7及以上;
处理器:Core i5以上;
内存>=500MB;
硬盘>=80G;
数据库:MySQL56;
浏览器:Internet Explorer 6.0及以上;
开发工具:IntelliJ IDEA;
2 界面需求 使用Bootstrap模板进行开发,使界面更加简洁与美观
3 资源使用率 CPU占用率<=50%;
内存占用率<=50%;
4 业务量 平均并发用户数为20;
最大并发用户数为50;
5 响应时间 复杂功能响应时间<=400ms;
简单功能响应时间<=200ms;

2.3本章小结
本章以第一章介绍的相关技术为基础,对婚庆平台进行系统分析,主要介绍功能需求和非功能需求2个方面,其中主要功能为:用户可登录婚庆平台查看平台提供的信息,定制婚礼并预约,管理员登录婚庆管理平台,可查看用户的预约信息,对平台上的信息进行管理。

3系统设计

3.1总体设计
3.1.1平台设计原则
应对需求的变化是开发过程中的难点,通常来说,需求的变化是不可预料的,开发人员要为此做好准备。本婚庆平台在设计时也考虑到了这一点,采用了开闭原则、单一职责原则和接口分离原则[12]。
(1)开闭原则:面向对象设计中最基本的设计原则,软件实体(例如类、模块或方法)应该对扩展开放,对修改关闭。本婚庆平台在设计时,采用此原则进行开发,当需求变更,当需求发生变化时,通过扩展代码的行为而不是修改现有的代码来实现变化[13]。此原则的使用让本婚庆平台变得更加稳定与灵活。
(2)单一职责原则:即一个类只负责一个职责。这个原则的使用让类的职责变得更加单一。每个类只需要处理自己的部分,类的复杂性就会降低,代码也变得更容易维护。本婚庆平台在设计时不仅把这个原则作用于类上,还把此原则作用在了接口和方法上,即一个接口或方法,只负责一件事,这样接口将更加简单,方法中的代码将更少、更容易阅读和更容易维护[14]。
(3)接口分离原则:即多个特定的客户端接口比通用的通用接口要好。换句话说就是最好为每个类构建各自的接口,而不是试图为所有要调用的类构建一个非常大的接口。本婚庆平台在设计时采用此原则,没有庞大的接口,每个接口都是小粒度的、有限的接口,即一个接口仅服务于一个业务逻辑。此原则的使用提高了本婚庆平台的内聚性,减少了外部交互,并降低了耦合度[15]。
3.1.2平台功能结构
本婚庆平台的功能结构从角色来划分可分为:用户模块和管理员模块。用户模块的功能包括:用户注册,用户登录,修改基本信息,修改密码,查看预约信息,查看日志信息,反馈建议,查看婚庆资讯,查看和分享爱情故事,查看可定制的婚庆服务,自主定制服务,预约。管理员模块的功能包括:管理员登录,处理预约信息,查看反馈建议,查看管理员登录日志,查看数据统计,用户相关管理,婚礼定制管理,主题相关管理,平台资讯管理。用户模块的功能主要是查看平台提供的内容,提交信息。管理员模块的功能主要是对平台的内容进行管理,查看用户提交的信息。本婚庆平台功能结构如图3.1所示:
在这里插入图片描述

图3.1 婚庆平台功能结构图
3.1.3平台体系结构

本婚庆平台采用B/S架构,即浏览器和服务器架构模式,这种架构有很多优点,例如B/S架构具备通用性,开发成本较低,当需要更新时,直接增加或修改后台代码即可完成更新,而C/S架构则需要对客户端进行升级[16]。本婚庆平台的B/S架构如图3.2所示:
在这里插入图片描述

图3.2 婚庆平台B/S架构图

本婚庆平台基于SSM框架技术进行搭建,主要分为4层:dao层、service层、controller层和view层。通常来说,首先是view层发送请求至controller层,controller层控制业务的流程,然后controller层调用service层,service层处理具体的业务,最后service层用dao层访问数据库信息[17]。如图3.3所示:
在这里插入图片描述

图3.3 婚庆平台分层体系说明图

3.2详细设计
平台详细设计包括数据库设计和核心功能设计2个方面。本婚庆平台一共设计了20张表,用于满足功能需求,核心功能设计主要包括用户分享爱情故事、定制婚礼、预约和管理员处理预约信息、查看数据统计。
3.2.1数据库设计
根据之前章节的需求分析和平台功能设计,形成了可以反应本婚庆平台的数据概念模型,矩形框表示每个实体,椭圆形框表示实体中的属性,菱形表示实体之间的关系。如图3.4所示:
在这里插入图片描述

图3.4 婚庆平台实体关系图
从婚庆平台实体关系图可以看出本婚庆平台的实体数量以及实体之间的关系:共有20个实体,实体之间有10个一对多关系,1个一对一关系。由此可得本婚庆平台的20张表,如表3.1所示:
表3.1 婚庆平台数据库表
序号 表名 说明
1 user 用户表
2 userloginlog 用户登录日志表
3 userpasswordlog 用户密码修改日志表
4 admin 管理员表
5 adminloginlog 管理员登录日志表
6 product 主题表
7 presenter 司仪表
8 clothes 礼服表
9 car 婚车表
10 category 类别表
11 planner 策划师表
12 photographer 影像团队表
13 dresser 化妆团队表
14 order_wed 预约信息表
15 detail 预约详情表
16 story 爱情故事表
17 message 反馈建议表
18 guide 婚礼攻略表
19 custom 婚礼习俗表
20 web 友情链接表

根据婚庆平台实体关系图可以进行数据库表的设计,以用户表和主题表为例,用户表设计如下字段:用户id、用户名、密码、联系方式、性别、出生日期、注册时间、状态、年龄。详情如表3.2所示:

表3.2 婚庆平台用户表详情
列名 数据类型 约束条件 其它说明
id VARCHAR(255) PRIMARY KEY 用户id
username VARCHAR(255) NOT NULL 用户名
password VARCHAR(255) NOT NULL 密码
phone VARCHAR(255) NOT NULL 联系方式
sex VARCHAR(255) NOT NULL 性别
birthday DATE NOT NULL 出生日期
createtime DATE NOT NULL 注册时间
status VARCHAR(255) NOT NULL 状态
age INT(11) NOT NULL 年龄

主题表设计如下字段:主题id、主题名称、价格、热度值、图片路径、主题简介、状态、所属类别id、所属策划师id、所属影像团队id、所属化妆团队id。详情如表3.3所示:
表3.3 婚庆平台主题表详情
列名 数据类型 约束条件 其它说明
id VARCHAR(255) PRIMARY KEY 主题id
name VARCHAR(255) NOT NULL 主题名称
price VARCHAR(255) NOT NULL 价格
hcount INT(11) NOT NULL 热度值
img VARCHAR(255) NOT NULL 图片路径
profile VARCHAR(255) NOT NULL 主题简介
status VARCHAR(255) NOT NULL 状态
cateid VARCHAR(255) NOT NULL 所属类别id
plannerid VARCHAR(255) NOT NULL 所属策划师id
photoid VARCHAR(255) NOT NULL 所属影像团队id
dresserid VARCHAR(255) NOT NULL 所属化妆团队id

3.2.2核心功能设计
本婚庆平台功能完善且数量众多,由于篇幅有限,在此只介绍本婚庆平台的5个核心功能:用户分享爱情故事,定制婚礼,预约和管理员处理预约信息,查看数据统计。
(1)用户分享爱情故事:用户进入婚庆平台用户端,登录后,点击“爱情故事”,进入爱情故事页面,点击“分享我的爱情故事”,进入story_add.jsp页面,输入故事标题和故事内容,点击提交按钮,本页面的信息首先传递到StoryController控制层,接着调用StoryService相关方法处理业务,然后调用StoryDao中的insertStory方法操作数据库,最后返回数据至story_add.jsp页面。如表3.4、图3.5所示:
表3.4 婚庆平台用户分享爱情故事功能描述表
序号 名称 功能描述
1 story_add.jsp 分享爱情故事的页面,负责把用户输入的故事标题和故事内容提交给后台。
2 StoryController 获取story_add.jsp提交的数据,调用StoryService的相关方法。
3 StoryService 对传入的数据进行业务处理,调用StoryDao的相关方法
4 StoryDao 负责数据库的相关操作,完成爱情故事的分享功能,并返回信息。
5 story_add.jsp 分享完成后,跳转至爱情故事列表页面。
在这里插入图片描述

图3.5 婚庆平台用户分享爱情故事时序图

(2)用户定制婚礼:用户可定制主题,司仪,礼服,婚车4种类型的服务。此处以主题定制为例,用户进入婚庆平台用户端,登录后,点击可定制的主题,进入product_made.jsp页面,之后点击“添加到我的定制”,此时MadeController接收到请求,接着调用MadeService相关方法处理业务,此功能不涉及数据库操作,因此不调用dao层方法,最后返回数据至product_made.jsp页面。如表3.5、图3.6所示:

表3.5 婚庆平台用户定制婚礼功能描述表
序号 名称 功能描述
1 product_made.jsp 主题详情展示的页面,显示主题的名称、价格、热度值、图片展示、相关简介和“添加到我的定制”按钮。
2 MadeController 获取product_made.jsp传递的请求,调用MadeService的相关方法。
3 MadeService 进行有关定制婚礼的业务处理,完成定制婚礼功能,并返回信息。
4 product_made.jsp 定制完成后,跳转至定制列表页面。
在这里插入图片描述

图3.6 婚庆平台用户定制婚礼时序图
(3)用户预约:用户进入婚庆平台用户端,登录后,点击“我的定制”,进入made.jsp页面,此页面显示主题、司仪、礼服、婚车4中类型的服务定制情况,点击预约按钮,本页面的信息首先传递到OrderController控制层,接着调用OrderService相关方法处理业务,然后调用OrderDao中的insert方法操作数据库,最后返回数据至made.jsp页面。如表3.6、图3.7所示:
表3.6 婚庆平台用户预约功能描述表
序号 名称 功能描述
1 made.jsp 定制列表的页面,显示用户定制的情况。
2 OrderController 获取made.jsp提交的数据,调用OrderService的相关方法。
3 OrderService 对传入的数据进行业务处理,调用OrderDao的相关方法
4 OrderDao 负责数据库的相关操作,完成预约功能,并返回信息。
5 made.jsp 预约完成后,返回本页面。

在这里插入图片描述

图3.7 婚庆平台用户预约时序图
(4)管理员处理预约信息:管理员登录进入婚庆平台管理员端后,在菜单栏点击“处理预约信息”,进入order.jsp页面,可查看用户的预约信息,并对待处理状态的预约信息进行处理,选定一个预约信息后,点击“处理”,在弹出框中选择接受预约或拒绝预约,之后点击提交按钮,则此信息首先传递到OrderController控制层,接着调用OrderService相关方法处理业务,然后调用OrderDao中的update方法操作数据库,最后返回数据至order.jsp页面。如表3.7、图3.8所示:
表3.7 婚庆平台管理员处理预约信息功能描述表
序号 名称 功能描述
1 order.jsp 处理预约信息的页面,显示用户预约的情况。
2 OrderController 获取order.jsp提交的数据,调用OrderService的相关方法。
3 OrderService 对传入的数据进行业务处理,调用OrderDao的相关方法
4 OrderDao 负责数据库的相关操作,完成处理功能,并返回信息。
5 order.jsp 处理完成后,返回本页面。
在这里插入图片描述

图3.8 婚庆平台管理员处理预约信息时序图
(5)管理员查看数据统计:管理员登录进入婚庆平台管理员端后,在菜单栏点击“平台数据统计”,出现2个二级菜单,分别是用户性别年龄统计和用户预约消费统计。
点击“用户性别年龄统计”,进入userEcharts.jsp页面,可查看用户性别年龄柱状图:请求首先传递到UserController控制层,接着调用UserService相关方法处理业务,然后调用UserDao中的queryUserByAgeAndSex方法操作数据库,最后返回数据至userEcharts.jsp页面。如表3.8、图3.9所示:
表3.8 婚庆平台用户性别年龄统计功能描述表
序号 名称 功能描述
1 userEcharts.jsp 处理预约信息的页面,显示用户预约的情况。
2 UserController 获取userEcharts.jsp传递的请求,调用UserService的相关方法。
3 UserService 对传入的数据进行业务处理,调用UserDao的相关方法。
4 UserDao 负责数据库的相关操作,完成查询功能,并返回信息。
5 userEcharts.jsp 查询成功后,返回本页面。

在这里插入图片描述

图3.9 婚庆平台用户性别年龄统计时序图
点击“用户预约消费统计”,进入orderEcharts.jsp页面,可查看用户预约消费饼状图,此功能执行流程为:请求首先传递到OrderController控制层,接着调用OrderService相关方法处理业务,然后调用OrderDao中的queryOrderEcharts方法操作数据库,最后返回数据至orderEcharts.jsp页面。如表3.9、图3.10所示:
在这里插入图片描述

表3.9 婚庆平台用户预约消费统计功能描述表
序号 名称 功能描述
1 orderEcharts.jsp 处理预约信息的页面,显示用户预约的情况。
2 OrderController 获取orderEcharts.jsp传递的请求,调用OrderService的相关方法。
3 OrderService 对传入的数据进行业务处理,调用OrderDao的相关方法。
4 OrderDao 负责数据库的相关操作,完成查询功能,并返回信息。
5 orderEcharts.jsp 查询成功后,返回本页面。

图3.10 婚庆平台用户预约消费统计时序图
3.5本章小结
本章以之前章节的系统分析为基础,对本婚庆平台进行系统设计。主要介绍总体设计和详细设计2个方面。平台总体设计包括平台设计原则、平台功能结构和平台体系结构3个方面,平台详细设计包括数据库设计和核心功能设计2个方面。

4系统实现

4.1开发环境
本婚庆平台在开发时的硬件环境是Windows 10操作系统,Intel® Core™ i5处理器,8G内存,1T硬盘空间。使用IntelliJ IDEA 2019 作为开发工具,MySQL5.7版本的数据库对数据进行存储,Tomcat 8.0为服务器来进行开发。根据需求分析与实际开发,这些硬件环境和软件环境符合平台的开发条件。
4.2开发规范
本婚庆平台在开发时符合Java的命名规范,主要包括包名、类名、方法名、变量名、参数名等[18]。包名统一使用小写,且具有实际意义,具有区分性。类名使用名词,如果一个类名含有多个单词,则所有单词首字母大写。方法名的首个单词首字母小写,后续单词首字母大写。变量名和参数名也是首个单词首字母小写,后续单词首字母大写。在开发时为了方便,本婚庆平台变量名和参数名一般只使用一个单词[19]。
4.3数据库实现
根据之前章节的数据库设计,得出本婚庆平台的20张表,数据库表使用MySQL的可视化工具Navicat创建,先创建名为wedding的数据库,然后创建各表,最后创建各表字段,如图4.1所示:
在这里插入图片描述

图4.1 婚庆平台数据库表实现图
4.4核心功能实现
4.4.1用户分享爱情故事
用户进入婚庆平台用户端,点击“爱情故事”,进入爱情故事列表页,点击“分享我的爱情故事”,进入爱情故事分享页,输入故事标题和故事内容,故事内容集成了富文本编辑器,用户在输入内容时可以设置文字的样式和内容的段落等,之后点击提交按钮即可完成本功能,分享的爱情故事通过平台审核后方可显示。如图4.2、图4.3所示:
图4.2 婚庆平台分享爱情故事实现图1
在这里插入图片描述

图4.3 婚庆平台分享爱情故事实现图2
在这里插入图片描述
4.4.2用户定制婚礼
用户进入婚庆平台用户端,点击可定制的服务(主题、司仪、礼服、婚车),进入服务详情展示页,该页面主要内容是该服务的名称、价格、热度值、图片展示与相关简介,之后点击“添加到我的定制”,即可把心仪的服务添加到定制列表,定制列表包含主题、司仪、礼服、婚车4种类型,每种类型最多只能定制1个,如果定制列表已有某种服务类型,添加同种类型的其他服务,则会自动替换为新添加的服务。定制列表页面显示用户定制的服务信息以及定制的总金额。如图4.4、图4.5所示:
在这里插入图片描述

图4.4 婚庆平台定制婚礼实现图1
在这里插入图片描述

图4.5 婚庆平台定制婚礼实现图2

部分核心代码展示如下:
Product product = productDao.selectByPrimaryKey(id);
System.out.println(“添加主题:”+product.getPname());
Double productPrice = product.getPrice();
session.setAttribute(“productPrice”, productPrice);//存价格

HashMap<String, Product> productMap = null;
Object obj = session.getAttribute(“productMap”);
if(obj!=null){ //若product类型存在
productMap = (HashMap<String, Product>)obj;
productMap.put(“1”,product);
//计算总价
total(session);
}else { //若product类型不存在,则创建hashmap,并加入该主题
productMap = new HashMap<>();
productMap.put(“1”,product);
session.setAttribute(“productMap”, productMap);
//计算总价
total(session);
}
4.4.3用户预约
用户进入婚庆平台用户端,登录后,点击“我的定制”,进入定制列表页面,此页面显示主题、司仪、礼服、婚车4种类型的服务定制信息以及定制的总金额,输入预约时间,点击预约按钮,弹出确认预约框,点击确定即可完成预约操作,之后用户可在“个人中心-我的预约”中查看预约信息,管理员未处理的预约信息,状态显示为:待处理。如图4.6、图4.7、图4.8所示:
在这里插入图片描述

图4.6 婚庆平台用户预约实现图1
在这里插入图片描述

图4.7 婚庆平台用户预约实现图2

在这里插入图片描述

图4.8 婚庆平台用户预约实现图3

部分核心代码展示如下:
HashMap<String, Product> productMap = null;
Object objproductMap = session.getAttribute(“productMap”);
if(objproductMap!=null){ //若product类型存在,设置名称,价格
productMap = (HashMap<String,Product>)objproductMap;
Product product = productMap.get(“1”);
//修改热度值(每预约一次,热度值加10)
productDao.updateHcount(product.getId(),product.getHcount()+10);
detail.setProductname(product.getPname());
detail.setProductprice(product.getPrice());
}else { //若product类型不存在,设置名称为未定制,价格为0
detail.setProductname(“未定制”);
detail.setProductprice(0.0);
}
String orderno = getOrderno(date);//通过工具类生成预约编号
User user = (User)session.getAttribute(“myUser”);
Order order = new Order();
order.setId(UUID.randomUUID().toString());
order.setTotal(total); //总价
order.setOrderno(orderno);//订单编号
order.setOrdertime(date);//下单时间
order.setDetailid(uid); //订单详情id
order.setUserid(user.getId());//用户id
order.setStatus(“0”);//状态
orderDao.insert(order);
4.4.4管理员处理预约信息
管理员登录进入婚庆平台管理员端后,在菜单栏点击“处理预约信息”,可查看用户的预约信息,对待处理状态的预约信息进行处理,选定一个预约信息后,点击“处理”,在弹出框中选择接受预约或拒绝预约,则用户在“个人中心-我的预约”中查看预约信息时,状态显示为:预约成功或预约失败。如图4.9、图4.10、图4.11所示:
在这里插入图片描述

图4.9 婚庆平台处理预约信息实现图1
在这里插入图片描述

图4.10 婚庆平台处理预约信息实现图2
在这里插入图片描述

图4.11 婚庆平台处理预约信息实现图3
4.4.5管理员查看数据统计
管理员登录进入婚庆平台管理员端后,在菜单栏点击“平台数据统计”,出现2个二级菜单,分别是用户性别年龄统计和用户预约消费统计,此功能结合ECharts技术实现。
点击“用户性别年龄统计”,可查看用户性别年龄柱状图,此柱状图显示用户在各个年龄段的男女分布情况,鼠标悬停在柱状图上方,可显示该年龄区间的具体人数[20]。根据此柱状图,可以推测本婚庆平台用户的大致年龄范围,如图4.12所示:
在这里插入图片描述

图4.12 婚庆平台用户性别年龄柱状图
部分核心代码展示如下:
//echarts:用户性别年龄统计
public Map queryUserByAgeAndSex(){
Map map = new HashMap();
ArrayList manList = new ArrayList();
manList.add(userDao.queryUserByAgeAndSex(“男”,0,20));
manList.add(userDao.queryUserByAgeAndSex(“男”,20,30));
manList.add(userDao.queryUserByAgeAndSex(“男”,30,40));
manList.add(userDao.queryUserByAgeAndSex(“男”,40,120));
ArrayList womenList = new ArrayList();
womenList.add(userDao.queryUserByAgeAndSex(“女”,0,20));
womenList.add(userDao.queryUserByAgeAndSex(“女”,20,30));
womenList.add(userDao.queryUserByAgeAndSex(“女”,30,40));
womenList.add(userDao.queryUserByAgeAndSex(“女”,40,120));
map.put(“man”,manList);
map.put(“women”,womenList);
return map;
}

点击“用户预约消费统计”,可查看用户预约消费饼状图,此饼状图显示用户在各消费区间所占比例,鼠标悬停在饼状图上方,可显示该消费区间的具体人数及所占百分比。根据此饼状图,可以推测本婚庆平台用户的消费水平,如图4.13所示:
在这里插入图片描述

图4.13 婚庆平台用户预约消费饼状图
部分核心代码展示如下:
//echarts:用户订单消费统计
public Map queryOrderEcharts(){
Map map = new HashMap();
ArrayList orderDtoList = new ArrayList();
orderDtoList.add(new OrderDTO(“5000元以下”,orderDao.queryOrderEcharts(0,5000)));
orderDtoList.add(new OrderDTO(“5000元至10000元”,orderDao.queryOrderEcharts(5000,10000)));
orderDtoList.add(new OrderDTO(“10000元至15000元”,orderDao.queryOrderEcharts(10000,15000)));
orderDtoList.add(new OrderDTO(“15000元至20000元”,orderDao.queryOrderEcharts(15000,20000)));
orderDtoList.add(new OrderDTO(“20000元以上”,orderDao.queryOrderEcharts(20000,100000)));
map.put(“orderDtoList”,orderDtoList);
return map;
}
4.5本章小结
本章以之前章节的系统分析和系统设计为基础,开发实现婚庆平台。主要介绍本婚庆平台的开发环境、开发规范、数据库实现和核心功能实现4个方面,其中核心功能实现介绍了用户分享爱情故事,定制婚礼,预约和管理员处理预约信息,查看数据统计共计5个功能。

5系统测试

5.1测试计划
本婚庆平台功能众多且较为复杂,虽然在开发前已进行较为完善的系统分析与系统设计,但是仍有可能存在疏漏。为了使系统测试更加科学与高效,需要制定合理的测试计划:1. 对本婚庆平台的每个功能进行测试,确保功能都能实现,平台正常工作。2. 对本婚庆平台进行性能测试,找到平台中存在的性能瓶颈。
5.2功能测试
功能测试就是对本婚庆平台的基本业务功能进行测试,看看真实结果是否与期望结果相同[21]。本文对用户分享爱情故事,定制婚礼,预约3个功能进行测试,并撰写测试用例。
用户分享爱情故事:用户进入婚庆平台用户端,点击“爱情故事”,进入爱情故事列表页,点击“分享我的爱情故事”,进入爱情故事分享页,输入故事标题和故事内容,点击提交按钮即可完成本功能。测试用例如表5.1所示:
表5.1 用户分享爱情故事测试用例
编号 测试方法 期望结果 真实结果
1 输入故事标题和故事内容,点击提交按钮。 发布成功,跳转至爱情故事列表页。 与期望结果相同
2 未输入故事标题,点击提交按钮。 提示故事标题不能为空。 与期望结果相同
3 未输入故事内容,点击提交按钮。 提示故事内容不能为空。 与期望结果相同

用户定制婚礼:用户进入婚庆平台用户端,点击可定制的服务(主题、司仪、礼服、婚车),进入服务详情展示页,之后点击“添加到我的定制”,即可把心仪的服务添加到定制列表,定制列表包含主题、司仪、礼服、婚车4种类型,每种类型最多只能定制1个,如果定制列表已有某种服务类型,添加同种类型的其他服务,则会自动替换为新添加的服务。测试用例如表5.2所示:
表5.2 用户定制婚礼测试用例
编号 测试方法 期望结果 真实结果
1 用户未登录,在定制列表页面点击“添加到我的定制”。 页面跳转至登录页面。 与期望结果相同
2 用户已登录,定制列表某类型未添加服务时,选择该类型服务点击“添加到我的定制”。 把该服务添加至定制列表,并计算价格。 与期望结果相同
3 若用户已登录,定制列表某类型已添加服务时,选择该类型服务点击“添加到我的定制”。 自动替换为新添加的服务,并重新计算价格。 与期望结果相同

用户预约:用户进入婚庆平台用户端,点击“我的定制”,进入定制列表页面,此页面显示主题、司仪、礼服、婚车4种类型的服务定制信息以及定制的总金额,输入预约时间,点击预约按钮,弹出确认预约框,点击确定即可完成本功能。测试用例如表5.3所示:
表5.3 用户预约测试用例
编号 测试方法 期望结果 真实结果
1 未选择心仪服务定制,进入定制列表页面。 页面提示定制列表为空。 与期望结果相同
2 已选择心仪服务定制,进入定制列表页面,在各类型服务中点击“移除”。 可把已选择的该类型服务移除。 与期望结果相同
3 已选择心仪服务定制,进入定制列表页面,点击“移除所有”。 可把已选择的全部类型服务都移除。 与期望结果相同
4 已选择心仪服务定制,输入合适的预约时间,点击“预约”。 预约成功,定制列表清空,且用户可在“个人中心-我的预约”查看预约信息。 与期望结果相同
5 已选择心仪服务定制,未输入预约时间,点击“预约”。 提示预约时间不可为空。 与期望结果相同
6 已选择心仪服务定制,输入的预约时间小于等于当前时间,点击“预约”。 提示预约时间应大于当前时间。 与期望结果相同
5.3性能测试
性能测试即借助自动化测试工具模拟各种正常、峰值和异常负载条件来测试系统的性能[22]。本婚庆平台使用Jmeter软件软件进行性能测试,流程如下:(1)打开Jmeter软件:找到Jmeter的安装路径,进入bin目录下,双击打开jmeter.bat。如图5.1所示:
在这里插入图片描述

图5.1 婚庆平台性能测试图-打开Jmeter软件
(2)添加线程组:在“Test Plan”上点击鼠标右键,依次选择“添加-线程(用户)-线程组”。之后设置线程属性,包括线程数,启动线程所需时间和循环次数[23]。如图5.2所示:

在这里插入图片描述

图5.2 婚庆平台性能测试图-添加线程组
(3)添加HTTP 请求:在“线程组”上点击鼠标右键,依次选择“添加-取样器-HTTP请求”。如图5.3所示:
在这里插入图片描述

图5.3 婚庆平台性能测试图-添加HTTP请求

(4)设置HTTP 请求:填入使用的Web服务器信息和要发送的HTTP请求信息。本婚庆平台所使用的协议设置为“http”,服务器名称或IP设置为“localhost”,端口号设置为“8080”,HTTP请求方法可设置为GET或POST,最后在路径处填入要发送的请求,如果请求有参数信息,可在“参数”栏添加参数信息[24]。如图5.4所示:
在这里插入图片描述

图5.4 婚庆平台性能测试图-设置HTTP请求
(5)添加监听器:在“线程组”上点击鼠标右键,依次选择“添加-监听器”,然后选择添加聚合报告和图形结果。如图5.5所示:
在这里插入图片描述

图5.5 婚庆平台性能测试图-添加监视器

(6)启动并查看结果:点击“启动”按钮,Jmeter软件开始运行,稍后即可查看测试结果。点击“聚合报告”可看到,本次测试的样本数目是2000,平均响应时间是202毫秒,响应时间的中位数是175毫秒,即50%用户请求的响应时间在175毫秒之下,90%用户请求的响应时间在361毫秒之下,最小响应时间是3毫秒,最大响应时间是1541毫秒,没有发生错误,异常率是0%,吞吐量是68.3/sec,即每秒处理完成的请求数是68.3,每秒接收的数据量是3861.6KB,每秒发送的数据量是9.54KB[25]。如图5.6所示:
在这里插入图片描述

图5.6 婚庆平台性能测试图-聚合报告

点击“图形结果”可看到,本次测试的样本数目是2000,最新样本是28,即最后一次请求的响应时间是28毫秒,平均响应时间是202毫秒,响应时间的中位数是175毫秒,即50%用户请求的响应时间在175毫秒之下,偏离数是166,吞吐量是4100.742/分钟,即每分钟处理完成的请求数是4100.742。如图5.7所示:
在这里插入图片描述
图5.7 婚庆平台性能测试图-图形结果
5.4本章小结
本章对婚庆平台进行系统测试,主要介绍测试计划,功能测试和性能测试3个方面。系统测试的目的是为了使婚庆平台能够尽早的发现BUG并解决,使其稳定运行,提升用户体验。

结 论

婚庆活动是人们在结婚时的重要组成部分,简洁、便利的婚庆服务对于人们选择婚庆平台有重要的意义。为此,本文针对目前人们对婚庆平台的期望,设计并实现了本婚庆平台。本文首先对婚庆行业的前景和现状进行阐述,然后介绍了本婚庆平台所使用的技术,接着对本婚庆平台的设计和实现进行了说明与探讨,最后对本婚庆平台进行功能测试和性能测试。本文所开发的婚庆平台已经具备丰富的功能,可以较好的满足人们对于婚庆平台的业务需求。
本婚庆平台在设计与实现的过程中充分考虑了可扩展性、可维护性以及未来的需求变更等要求,具有代码重用性强,系统可伸缩性好,安全性高等特点,所采用的SSM框架技术保证了平台具有高内聚、低耦合的特点。系统测试的结果说明了本婚庆平台设计的合理性与有效性。
本婚庆平台的设计与实现有效的解决了人们在结婚时遇到的问题,具有便利性、实用性,对于其他的婚庆平台具有广泛的借鉴意义和参考价值。由于项目紧,自己本身技术水平有限,本婚庆平台还存在一定的不足。比如管理员在处理预约信息时,步骤还不够简便,这是将来需要进一步完善的工作。

致 谢

在此首先要感谢我的指导老师即李佳佳老师和倪春雨老师对我的指导,我的毕业论文在老师耐心的指导下修改了很多次,最终得到了完善。其次要感谢我的班主任陈思老师对我的谆谆教诲,我跟随陈思老师不仅学会了课堂上的知识,还学会了如何做人。大三下半学期,陈思老师曾悉心回答了我对未来工作的疑问,让我对未来不再迷茫。然后要感谢在大学期间所有教授过我知识的老师,感谢你们可以让我能够等系统、全面的学习计算机相关知识,你们在工作中勤勤恳恳、兢兢业业的态度值得我去学习。最后要感谢大学期间的所有同学们,感谢你们陪我度过美好的大学生活,同窗之谊,我永远铭记在心。

参考文献

[1]卢益清,李忱.O2O商业模式及发展前景研究[J].企业经济,2013(11):98-101
[2]张晓军.MVC架构模式在Java开发中的应用[J].黑龙江科技信息,2016(29):177-178
[3]聂英豪. 基于Java EE平台的企业级自动化办公系统研究[D].电子科技大学,2019
[4]张自辉. 基于spring MVC框架下的精品课程管理平台设计与实现[D].湖南师范大学,2017
[5]李文杰.基于SSM框架开发平台的教学案例式实践[J].四川水泥,2019(09):268
[6]刘晓光. 基于MySQL的分布式SQL数据库的设计与实现[D].中国科学院大学(工程管理与信息技术学院),2016
[7]王磊.对Mysql数据库的访问方法的研究[J].网络安全技术与应用,2014(04):138-139
[8]郑苗.基于Java的设计模式理解与实现[J].电脑知识与技术,2017,13(32):115-116+125
[9]Bondarenko Vitaliy Ivanovich,Bilousov Vyacheslav Vladimirovich,Nedopekin Fedor Victorovich,Bodriaha Viktor Viktorovich,Antropova Larisa Vitalievna. Using MVC pattern in the software development to simulate production of high cylindrical steel ingots[J]. Journal of Crystal Growth,2019,526:20
[10]常伟. 基于MVC的银监会高管人员信息系统的分析与设计[D].南京航空航天大学,2006
[11]李玥瑢,周炜,欧红梅,邓瑶,郑安文,曹双双.基于SSM框架的高校服务平台的设计[J].信息系统工程,2019(10):52-53
[12]张利琴,朱鹏飞,李伟,于华章.基于开闭原则的网上银行身份认证服务方案[J].网络空间安全,2018,9(09):39-46.Dd
[13]郑朝霞.论开闭原则在JAVA程序设计中的应用[J].电脑知识与技术,2016,12(30):262-264
[14]高广鹏.浅谈软件设计模式中的设计原则[J].电脑迷,2017(05):14
[15]曹森,苏贵斌.软件开发中的设计原则[J].软件导刊,2012,11(01):74-75.X
[16]Jiaqi Huo, Tianyu Zhang, Jiahao Wang. Research on Endowment Insurance Management System Based on BS Architecture[J]. International Journal of Computational and Engineering,2019,4(2):130-131
[17]Zhen Hai Mu. Analysis and Design of MVC-Based Work Flow[J]. Applied Mechanics and Materials,2014,3468:10-11
[18]姜星.计算机软件开发技术的应用研究与趋势[J].信息通信,2018(10):123-124
[19]张龙翔,王海峰.Java课程的工程化教学设计[J].教育现代化,2019,6(33):206-207+210
[20]王菲露,李军,宋杨,胡勇,陈玉峰.基于Ajax技术的ECharts实时图形报表实现[J].黑龙江工业学院学报(综合版),2019,19(12):79-83
[21]Fadel Toure,Mourad Badri,Luc Lamontagne. A metrics suite for JUnit test code: a multiple case study on open source software[J]. Springer Berlin Heidelberg,2014,2(1):20-21
[22]林培杰,朱安南,程树英.Android数据库SQLite性能优化[J].计算机系统应用,2014,23(04):193-196
[23]Dan Rahmel. Testing a Site with ApacheBench, JMeter, and Selenium[M].Apress:2013-06-15:120-121
[24]纪力炜. 基于JMeter工具的性能自动化测试系统设计与实现[D].南京邮电大学,2016
[25]赖歆.浅谈信息化系统中的性能测试[J].信息通信,2018(08):145-147

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spark 实验二 RDD编程初级实践

目录 一. pyspark交互式编程示例&#xff08;学生选课成绩统计&#xff09; 该系总共有多少学生&#xff1b; 该系DataBase课程共有多少人选修&#xff1b; 各门课程的平均分是多少&#xff1b; 使用累加器计算共有多少人选了DataBase这门课。 二.编写独立应用程序实现数…

java Spring boot简述jetcache 并叙述后续文章安排

我们之前 讲了 Spring boot 整合 cache 使用 simple(默认) redis Ehcache memcached的几种方式 但是 始终有人觉得不够完善 提出了一些问题 例如 觉得 当前spring boot 对缓存过期的控制过于松散 不严谨 比较明显的体现就是 memcached过期时间在逻辑代码中控制 Ehcache的过期时…

spring boot 集成 mysql ,mybatisplus多数据源

1、需要的依赖&#xff0c;版本自行控制 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java<…

神经网络 梯度与神经元参数w、b关系;梯度与导数关系

参考&#xff1a;https://blog.csdn.net/weixin_44259490/article/details/90295146 概念 梯度与w的关系可以用梯度下降公式来表示&#xff1a;ww−α ∂ c o s t ∂ w \frac{\partial cost}{\partial w} ∂w∂cost​&#xff0c;其中w表示网络的权重&#xff0c; ∂ c o s t…

练习3-softmax分类(李沐函数简要解析)与d2l.train_ch3缺失的简单解决方式

环境为:练习1的环境 网址为:https://www.bilibili.com/video/BV1K64y1Q7wu/?spm_id_from333.1007.top_right_bar_window_history.content.click 代码简要解析 导入模块 导入PyTorch 导入Torch中的nn模块 导入d2l中torch模块 并命名为d2l import torch from torch import nn…

实现鼠标移动el-select下拉框的label上面显示出table悬浮窗

首先是对vue代码 实现思路就是在el-option里面放一个span来包裹el-popover&#xff0c;里面在放tabe实现悬浮表格 <el-form-item label"原理图编号"><el-select v-model"data.number" placeholder"请选择" clearable multiple collaps…

C语言第三十七弹---文件操作(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 文件操作 1、文件的随机读写 1.1、fseek 1.2、ftell 1.3、rewind 2、文件读取结束的判定 2.1、被错误使用的 feof 3、文件缓冲区 总结 1、文件的随机读写…

阿里云主机地域怎么选择?哪个好?

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

同等学力申硕专业介绍——管理学硕士

同等学力申硕的专业很多。 目前有十三大门类&#xff0c;分别是医学、法学、管理学、工学、教育学、经济学、艺术学、文学、历史学、理学、哲学、农学、军事学等&#xff0c;每个大门类中都有很多的细分专业。 今天为大家介绍同等学力申硕专业——管理学。 专业介绍 管理学是…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…

Spring Boot中Excel数据导入导出的高效实现

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

能量不等式证明

波动方程初值问题能量不等式的证明 Gronwall 不等式 若非负函数 G ( τ ) G(\tau) G(τ) 在 [ 0 , T ] [0,T] [0,T] 上连续可微&#xff0c; G ( 0 ) 0 G(0)0 G(0)0&#xff0c;且对 τ ∈ [ 0 , T ] \tau\in[0,T] τ∈[0,T]满足 d G ( τ ) d τ ≤ C G ( τ ) F ( τ …

Using WebView from more than one process

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、问题过程源码追踪…

Mamba-minimal Mamba的最小限度实现 (一)

文章目录 参数和数据尺寸约定class MambaBlockdef forwarddef __ int__def ssmdef selective_scan johnma2006/mamba-minimal: Simple, minimal implementation of the Mamba SSM in one file of PyTorch. (github.com) manba的简单最小限度实现&#xff0c;和原始论文实现stat…

深入了解Kafka中生产者的神奇力量

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 深入了解Kafka中生产者的神奇力量 前言生产者的基本概念Kafka 生产者的定义&#xff1a;Kafka 生产者的基本原理&#xff1a;为何生产者是 Kafka 消息传递的创造者&#xff1a; 生产者的创建于配置生产…

新版AndroidStudio的Gradle窗口显示task list not built 问题解决

在使用新版AndroidStudio时&#xff0c;会出现&#xff0c;Task List not built 的问题。如果你记得task的名字&#xff0c;当然可以 直接通过命令 gradle taskname 或者 ./gradlew taskName直接执行即可&#xff0c;但是若是记不住&#xff0c;还是把这个任务构建处理比较好用…

智慧文旅|AI数字人导览:让旅游体验不再局限于传统

AI数字人导览作为一种创新的展示方式&#xff0c;已经逐渐成为了VR全景领域的一大亮点&#xff0c;不仅可以很好的嵌入在VR全景中&#xff0c;更是能够随时随地为观众提供一种声情并茂的讲解介绍&#xff0c;结合VR场景的沉浸式体验&#xff0c;让观众仿佛置身于真实场景之中&a…

『python爬虫』requests实战-精易论坛自动签到(保姆级图文+实现代码)

目录 实现效果API命令解析re.findall 匹配内容,用于在我们得到的网页源码中查找指定的内容session.post() 和 session.get() 实现思路库cookie怎么抓取cookie登录如何实现得到FORMHASH参数自动签到自动评分 实现代码后续优化总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续…

Midjourney绘图欣赏系列(七)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

Idea创建Maven项目

Maven安装配置步骤&#xff1a; 解压安装 bin目录 &#xff1a; 存放的是可执行命令。&#xff08;mvn 命令重点关注&#xff09; conf目录 &#xff1a;存放Maven的配置文件。&#xff08;settings.xml配置文件后期需要修改&#xff09; lib目录 &#xff1a;存放Maven依赖的j…