(赠源码)Java+springboot+MySQL建筑装饰工程公司采购系统小程序39754-计算机毕业设计项目选题推荐

摘  要

随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,建筑装饰工程公司采购系统微信小程序被用户普遍使用,为方便用户能够可以随时进行在线查看建筑装饰工程公司采购系统的数据信息管理,特开发了建筑装饰工程公司采购系统微信小程序。

建筑装饰工程公司采购系统微信小程序的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系统平台后期的可操作性,通过对信息内容的详细了解进行技术的开发。

建筑装饰工程公司采购系统微信小程序的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与建筑装饰工程公司采购系统微信小程序管理的实际需求相结合,讨论了基于建筑装饰工程公司采购系统微信小程序管理的使用。

关键词:建筑装饰工程公司采购系统小程序,Java,MySQL,springboot

Procurement System Mini Program for Building Decoration Engineering Company

Abstract

With the rapid development of China's economy, people's demand for mobile phones is increasing, and various mobile software is also widely used. However, for data information management of mobile phones, various software for mobile phones are also highly favored by users. The procurement system WeChat mini program of building decoration engineering companies is widely used by users, In order to facilitate users to view the data information management of the procurement system of building decoration engineering companies online at any time, a WeChat mini program for the procurement system of building decoration engineering companies has been developed.

The design of the WeChat mini program for the procurement system of a construction and decoration engineering company mainly involves a detailed consideration of the functions to be implemented in the system. After determining the functions to be implemented, the interface design is carried out. In the process, it is also necessary to consider how to better integrate the functions and pages, so that users can easily find the information they need, and the operability of the system platform in the later stage, Develop technology through a detailed understanding of information content.

The development of the WeChat mini program for the procurement system of the architectural decoration engineering company utilizes existing mature technologies as a reference, uses source code as a template, analyzes functional adjustments, and combines them with the actual needs of the management of the WeChat mini program for the procurement system of the architectural decoration engineering company. This paper discusses the use of WeChat mini program management based on the procurement system of the architectural decoration engineering company.

Key words: Procurement system mini program for architectural decoration engineering companies, Java, MySQL, springboot

目  录

摘  要 I

Abstract II

第1章 项目概述 1

1.1 问题描述 1

1.2 项目目标 1

1.3 项目适用范围 1

第2章 需求分析 2

2.1 业务需求 2

2.1.1 业务流程 2

2.2 功能性需求 3

2.3 非功能性需求 7

2.4 项目约束 7

2.5 运行环境 7

第3章 系统设计 9

3.1 技术路线 9

3.2 软件体系结构设计 9

3.2.1 功能结构 9

3.2.2 系统架构 9

3.3 数据库设计 11

3.3.1 概念结构设计 11

3.3.2 表的详细设计 12

3.5 用例实现 19

3.5.1 用户信息用例实现 19

3.5.2 材料信息用例实现 20

第4章 系统实现 23

4.1 核心功能实现 23

4.2 关键技术难点与解决方案 38

第5章 系统测试 39

5.1 功能测试 39

5.2 非功能测试 39

5.3 测试总结 40

第6章 结论与展望 42

参考文献 43

致  谢 44

第1章 项目概述

1.1 问题描述

建筑装饰工程公司采购系统小程序是为了解决该公司在采购过程中所面临的问题而设计的。目前,该公司的采购流程存在一些困扰和瓶颈,如采购信息不透明、沟通效率低下、订单处理繁琐等。

因此,开发一个专门针对该公司的采购系统小程序具有重要意义。该小程序旨在提供一个高效、便捷的平台,帮助该公司更好地管理和执行采购流程。该小程序将实现采购信息的集中管理和共享。采购人员可以通过小程序发布采购需求、查看供应商信息和产品价格,并进行在线询价和比较。同时,供应商也可以通过小程序提交报价和产品信息,实现供需双方的快速对接。采购人员可以通过小程序创建和管理采购订单,包括生成订单、追踪订单进度和确认收货等。供应商可以及时查看订单信息并进行订单处理,提高订单处理效率。

此外,小程序还将提供消息通知和沟通交流的功能,采购人员和供应商可以通过小程序进行实时沟通和协作,减少沟通成本和时间消耗。

通过设计与实现建筑装饰工程公司采购系统小程序,可以提升采购流程的效率和质量,减少人力成本和资源浪费。该小程序的应用将为公司提供一个便捷、高效的采购管理工具,促进供需双方的合作和沟通,推动公司的发展和竞争力提升。

1.2 项目目标

建筑装饰工程公司采购系统小程序的项目目标是为该公司提供一个高效、便捷的采购管理工具,优化采购流程,提升采购效率和质量。通过小程序,采购人员可以方便地发布采购需求、查看供应商信息和产品价格,并进行在线询价和比较。同时,供应商也能够及时提交报价和产品信息,实现供需双方的快速对接,提高采购的准确性和透明度。

其次,目标是简化订单处理过程。采购人员可以通过小程序创建和管理采购订单,包括生成订单、追踪订单进度和确认收货等操作。供应商可以及时查看订单信息并进行订单处理,提高订单处理效率和准确性,减少双方之间的沟通成本和时间消耗。

此外,目标还包括提供实时消息通知和沟通交流功能。通过小程序,采购人员和供应商可以方便地进行实时沟通和协作,解决问题和提供反馈,减少沟通的延迟和不必要的交流环节。

最终的目标是优化整个采购流程,提高采购效率和质量,降低人力成本和资源浪费。通过建筑装饰工程公司采购系统小程序的应用,将为公司提供一个便捷、高效的采购管理工具,促进供需双方的合作和沟通,推动公司的发展和竞争力提升。

1.3 项目适用范围

建筑装饰工程公司采购系统小程序的适用范围涵盖了该公司的整个采购管理流程。该小程序适用于建筑装饰工程公司内部的采购人员和与其合作的供应商。对于建筑装饰工程公司的采购人员而言,该小程序提供了便捷的平台来发布采购需求、查看供应商信息和产品价格,并进行在线询价和比较。他们可以通过小程序创建和管理采购订单,追踪订单进度和确认收货,实现对整个采购流程的有效控制和管理。

同时,该小程序也适用于与建筑装饰工程公司合作的供应商。供应商可以通过小程序及时查看并回复采购人员的需求,提交报价和产品信息,方便快捷地与采购人员进行沟通和协作,实现供需双方的高效对接。

因此,建筑装饰工程公司采购系统小程序的适用范围包括了建筑装饰工程公司的采购部门及相关人员,以及与之合作的供应商。通过该小程序的应用,可以实现采购信息的集中管理和共享,简化订单处理过程,并促进采购人员和供应商之间的高效沟通与合作。


第2章 需求分析

2.1 业务需求

(1)用户注册与角色管理:用户可以通过小程序进行注册,分为管理员和工长用户两种角色。管理员负责对系统进行配置和管理,而工长用户则是进行材料购买的角色。

(2)材料购买功能:工长用户可以选择需要购买的材料,并在线提交购买申请。在购买过程中,工长用户需要选择材料品类、填写相关的材料信息和购买数量等。

(3)材料信息管理:管理员可以对材料信息进行录入、编辑和删除操作。这包括材料的名称、规格、价格等信息,以便于工长用户的选择和购买。

(4)购买申请管理:管理员可以查看和管理所有购买申请,包括已提交的购买申请列表、材料信息和购买数量等。管理员还可以进行审核和处理购买申请。

(5)学习视频功能:系统可以提供学习视频,帮助工长用户了解不同材料的使用方法、特点和注意事项,提升他们的采购决策能力。

(6)材料领取管理:管理员可以记录和管理材料的领取情况,包括确认工长用户的领取资格、领取时间和领取地点等。

通过建筑装饰工程公司采购系统小程序的开发和应用,可以实现材料信息模块的在线购买功能,满足工长用户对材料的需求。同时,管理员能够对购买申请和材料信息进行管理和审核,确保材料的及时供应和有效管理。这将提升用户体验,促进沟通与合作,为公司的材料采购提供便利和支持。

2.1.1 业务流程

管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。

用户权限下的工作流程主要为:用户通过系统提供的注册功能,进行身份验证并注册,而后在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。

建筑装饰工程公司采购系统小程序的业务流程如下图所示。

图2.1 系统业务流程图

2.2 功能性需求

管理员可以通过管理材料信息用例对材料信息、材料领取、购买申请、学习视频进行维护,包括对材料信息的增删改查。管理建筑装饰工程公司采购系统小程序用例图如图2.4所示。

图2.2 系统用例图

表2.2 评论用例描述

用例名称

评论

参与者

用户

描述

用户发表评论

前置条件

用户已登录

后置条件

评论内容不违规

事件流

(1)在评论页输入评论数据,提交评论

(2)更新并显示评论板

补充说明

(a)评论内容不能为空

表2.3 用户管理用例描述

描述项

说明

用例名称

用户操作

用例描述

管理员正确登录后台管理的条件下,对用户进行管理

参与者

管理员

前置条件

管理员登录成功并跳转到后台主界面

后置条件

操作成功

主事件流

管理员跳转用户管理页面,查询用户详情的信息

管理员可以删除用户信息

异常事件流

e1.报500错误

e2.数据库连接异常

表2.4 材料信息管理用例描述

描述项

说明

用例名称

材料信息操作

用例描述

管理员正确登录后台管理的条件下,对材料信息模块进行管理

参与者

管理员

前置条件

管理员成功登录

后置条件

操作成功

主事件流

(1)管理员进入材料信息管理页面,查询材料信息的信息

(2)管理员可以对材料信息进行增删除和编辑材料信息操作

(3)管理员新增材料信息,添加成功跳转到查询页面

异常事件流

e1.报500错误

e2.数据库连接异常

表2.5 学习视频管理用例描述

描述项

说明

用例名称

学习视频操作

用例描述

管理员正确登录后台管理的条件下,对学习视频模块进行管理

参与者

管理员

前置条件

管理员成功登录

后置条件

操作成功

主事件流

(1)管理员进入学习视频管理页面,查询学习视频的信息

(2)管理员可以对学习视频进行增删除和编辑学习视频操作

(3)管理员新增学习视频,添加成功跳转到查询页面

异常事件流

e1.报500错误

e2.数据库连接异常

表2.6 材料领取管理用例描述

描述项

说明

用例名称

材料领取操作

用例描述

管理员正确登录后台管理的条件下,对材料领取模块进行管理

参与者

管理员

前置条件

管理员成功登录

后置条件

操作成功

主事件流

(1)管理员进入材料领取管理页面,查询材料领取的信息

(2)管理员可以对材料领取进行增删除和编辑材料领取操作

异常事件流

e1.报500错误

e2.数据库连接异常

2.3 非功能性需求

基于上面功能性需求,非功能需求也是项目设计中一项必定考虑进去的工作。首先是安全性的需求,其次是界面必须整洁干净等的需求,再次就是可扩展的需求。除此之外,还有性能、可靠性的需求,具体可以表示在如下表所示。

表2.1 系统非功能需求表

安全性

只有在登录的情况下才能进行相应功能的操作,尤其是管理员功能,防止后台管理端被侵入。

可靠性

系统的功能明确,操作一个功能,不会产生额外的功能影响,操作功能的时候,页面也不会造成额外的跳动。

性能

响应时间尽量控制在1s之内

可扩展性

后台采用自顶向下的开发,利于开发与维护。

易用性

在用户使用上,尽可能使用更多的图标进行功能暗示,提供系统的可阅读性和友好性。

可维护性

前台和后台注意按照模块化开发的原则,对于组件和方法的保存和包的建立需要遵照一般开发原则,以利于维护。

2.4 项目约束

1、时间约束:项目需要在规定的时间内完成开发和部署,并按时交付给用户使用。

2、资源约束:项目开发所需的人力、物力和财力资源应得到合理分配和利用,确保项目的顺利进行。

3、功能约束:小程序的功能应根据实际需求进行界定,不超出项目范围。重点关注材料购买相关功能的实现。

4、安全约束:小程序应具备良好的安全性,保护用户数据的隐私和机密性,防止未授权访问和数据泄露。

5、用户体验约束:小程序应提供简洁、易用的界面设计,确保用户能够顺利进行报名或购买操作,并获得良好的使用体验。

6、平台约束:小程序应在目标平台上运行和展示,如微信小程序等,以便用户能够方便地访问和使用。

7、法律和合规约束:小程序的开发和使用应遵守当地法律法规和相关政策要求,确保合法合规。

2.5 运行环境

1、软件环境:

操作系统:支持Java的操作系统,如Windows、Linux、macOS等。

Java开发环境:JDK 11及以上版本。

数据库:常用的关系型数据库,MySQL。

其他支撑软件:Maven(用于构建和管理项目)、Git(用于版本控制)等。

2、硬件环境:

主机类型:任何能够安装所需软件环境的计算机,可以是个人计算机、服务器等。

网络类型:可以是局域网或互联网,保证网络连接的稳定性和可靠性。

存储器容量:根据系统的规模和并发访问量而定,一般建议具备足够的存储空间用于存储用户数据和系统运行时所需的文件。

其它特殊设备:除了常见的计算机设备外,没有额外的特殊设备要求。

3、典型用户设备分布图及相应软件配置:

用户设备:包括个人电脑、笔记本电脑、平板电脑和智能手机等。

软件配置:用户设备上需要安装最新版本的浏览器(如Chrome、Firefox、Safari等),以便通过浏览器访问建筑装饰工程公司采购系统小程序的Web界面。此外,还需要安装支持Java的操作系统和Java运行时环境(JRE)。


第3章 系统设计

3.1 技术路线

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的SpringBoot框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用SpringBoot作为开发框架,同时集成MyBatis、Redis等相关技术。

3.2 软件体系结构设计

3.2.1 功能结构

建筑装饰工程公司采购系统小程序主要是为用户所服务的,该系统是因他们而存在,要为他们服务,因此,在系统设计时要将他们的需求放在第一位,并且要充分考虑他们的意见。

建筑装饰工程公司采购系统小程序的用户角色有而种,包括管理员,工长用户。管理员在本系统建筑装饰工程公司采购系统小程序中管理材料信息,材料领取,学习视频信息,购买申请。用户所能实现的功能有:修改自己的密码等个人信息,材料信息,查看自己的购买申请信息。

系统功能结构图如下所示。

图3.1系统功能结构图

3.2.2 系统架构

本建筑装饰工程公司采购系统小程序从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。

图3.2系统架构设计图

表现层(UI):又称UI层,主要完成本建筑装饰工程公司采购系统小程序的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本建筑装饰工程公司采购系统小程序时的舒适度。UI的界面设计也要适应不同版本的建筑装饰工程公司采购系统小程序以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。

业务逻辑层(BLL):主要完成本建筑装饰工程公司采购系统小程序的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。

数据层(DL):由于本建筑装饰工程公司采购系统小程序的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本建筑装饰工程公司采购系统小程序的数据存储和管理功能。

3.3 数据库设计

数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。

3.3.1 概念结构设计

下面是整个建筑装饰工程公司采购系统小程序中主要的数据库表总E-R实体关系图。

图3.3 建筑装饰工程公司采购系统小程序总E-R关系图

3.4.2 表的详细设计

通过对领域对象、业务对象及对象间关联的分析,对本系统的数据库表进行了设计,如表3.1-表3.7所示。本系统数据库管理采用MySQL。

(1)工长用户表(foreman_user)

工长用户信息表主要用于保存系统用户的信息,主要字段包括:工长用户ID、工长姓名、工长性别、工长年龄、审核状态,主要用于用户注册登录。表结构如表3.1所示。

表3.1 工长用户信息表(foreman_user)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

foreman_user_id

int

10

0

N

Y

工长用户ID

2

foremans_name

varchar

64

0

Y

N

工长姓名

3

gender_of_foreman

varchar

64

0

Y

N

工长性别

4

foremans_age

varchar

64

0

Y

N

工长年龄

5

examine_state

varchar

16

0

N

N

已通过

审核状态

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

(2)学习视频表(learning_videos)

学习视频表主要用于保存视频名称、视频类型、视频时长、视频文件、视频描述、封面图片、视频简介。表结构如表3.2所示。

表3.2 学习视频表(learning_videos)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

learning_videos_id

int

10

0

N

Y

学习视频ID

2

video_name

varchar

64

0

Y

N

视频名称

3

video_type

varchar

64

0

Y

N

视频类型

4

video_duration

varchar

64

0

Y

N

视频时长

5

video_file

varchar

255

0

Y

N

视频文件

6

video_description

varchar

64

0

Y

N

视频描述

7

cover_photo

varchar

255

0

Y

N

封面图片

8

video_introduction

text

65535

0

Y

N

视频简介

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

(3)材料领取表(material_collection)

材料领取表主要用于保存材料领取信息,主要字段包括:工长用户、工长姓名、材料名称、材料品类、购买厂家、材料价格、申购数量、领取时间。表结构如表3.3所示。

表3.3 材料领取表(material_collection)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

material_collection_id

int

10

0

N

Y

材料领取ID

2

foreman_user

int

10

0

Y

N

0

工长用户

3

foremans_name

varchar

64

0

Y

N

工长姓名

4

material_name

varchar

64

0

Y

N

材料名称

5

material_categories

varchar

64

0

Y

N

材料品类

6

purchasing_manufacturer

varchar

64

0

Y

N

购买厂家

7

material_prices

int

10

0

Y

N

0

材料价格

8

subscription_quantity

int

10

0

Y

N

0

申购数量

9

collection_time

datetime

19

0

Y

N

领取时间

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

(4)材料信息表(material_information)

材料信息表主要用于保存材料的信息,主要字段包括:材料名称、材料品类、材料作用、材料图片、材料描述。表结构如表3.4所示。

表3.4 材料信息表(material_information)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

material_information_id

int

10

0

N

Y

材料信息ID

2

material_name

varchar

64

0

Y

N

材料名称

3

material_categories

varchar

64

0

Y

N

材料品类

4

material_action

varchar

64

0

Y

N

材料作用

5

material_images

varchar

255

0

Y

N

材料图片

6

material_description

text

65535

0

Y

N

材料描述

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

(5)购买申请表(purchase_application)

购买申请表主要用于保存购买申请的信息,主要字段包括:工长姓名、工长用户、材料名称、材料品类、购买厂家、材料价格、申购金额、申请时间、申请备注。表结构如表3.5所示。

表3.5 购买申请表(purchase_application)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

purchase_application_id

int

10

0

N

Y

购买申请ID

2

foreman_user

int

10

0

Y

N

0

工长用户

3

foremans_name

varchar

64

0

Y

N

工长姓名

4

material_name

varchar

64

0

Y

N

材料名称

5

material_categories

varchar

64

0

Y

N

材料品类

6

purchasing_manufacturer

varchar

64

0

Y

N

购买厂家

7

material_prices

int

10

0

Y

N

0

材料价格

8

subscription_quantity

int

10

0

Y

N

0

申购数量

9

subscription_amount

varchar

64

0

Y

N

申购金额

10

application_time

datetime

19

0

Y

N

申请时间

11

application_remarks

text

65535

0

Y

N

申请备注

12

examine_state

varchar

16

0

N

N

未审核

审核状态

13

examine_reply

varchar

16

0

Y

N

审核回复

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

(6)评论表(comment)

评论表主要用来存放系统中用户提交的评论信息以及回复评论信息。表结构如表3.6所示。

表3.6 评论表(comment)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

3.5 用例实现

3.5.1 用户信息用例实现

管理员添加用户时序图一共分为以个响应,管理员登录后进入到用户管理界面,点击添加用户,系统验证新添用户信息,数据库更新数据,显示注册成功。如图3.8所示。

3.8管理员添加用户时序图

3.5.2 材料信息用例实现

主要是数据信息的展示,包括材料信息展示,这一部分相对来说比较简单,关键只是页面显示效果,在这里可以将首页的部分页面新建一个母版页,这样就会使得整个系统的页面风格比较统一,于此之外,还有就是材料信息显示的样式,我们可以通过运用模板列来编辑样式,除了材料信息显示之外还要设计一个报名界面。如图3.9所示。

3.9管理员添加材料信息时序图

管理员进入登录页面,输入对应的账号密码,即可登录,如表3.1所示。

表3.1登录用例描述

用例名称

登录

参与者

管理员

3.2登录用例描述

用例概述

管理员进入登录页面,输入对应的账号密码,即可登录

前置条件

管理员进入登录页面

后置条件

管理员登录成功

基本事件流

参与者动作

系统响应

1.管理员输入账号密码,并点击登录

2.登陆成功,进入到管理员后台。

备选事件流

2a.账号密码错误,登录失败。

管理员可以查看首页、材料信息、学习视频管理、材料领取、购买申请以及用户管理,如表3.2所示。

表3.3查看数据用例描述

用例名称

查看数据

参与者

管理员

用例概述

管理员可以查看首页、材料信息、学习视频管理、材料领取、购买申请、用户管理

前置条件

管理员登录成功

后置条件

系统显示各类数据

基本事件流

参与者动作

系统响应

1.管理员点击主页

2.系统跳转到首页等各个页面,并显示各个数据。

备选事件流

管理员可以点击学习视频、新增学习视频等各项数据周围的加减按钮进行数据修改,最后点击更新按钮即可完成更新数据,同时也可以对每个地区的学习视频进行修改,也可以进行学习视频的增加,页面下面附有的柱状图也会进行相应的自动变化。如表4.4所示。

表3.4 更新学习视频数据用例描述

用例名称

更新学习视频数据

参与者

管理员

用例概述

管理员添加学习视频及更新学习视频数据

前置条件

管理员登录,并进入学习视频数据修改页面

后置条件

数据被更新

基本事件流

参与者动作

系统响应

1.管理员点击对应的学习视频数据页面

3.管理员点击两侧按钮进行加减,并点击更新按钮

2.页面显示带有修改模式的学习视频数据

4.数据更新成功

备选事件流

数据库连接失败,数据更新失败,不会弹出更新成功。

管理员可以新增、编辑、删除学习视频,如表3.5所示。

表3.5 更新学习视频用例描述

用例名称

更新学习视频

参与者

管理员

用例概述

管理员可以新增、编辑、删除学习视频

前置条件

管理员登录,并进入到学习视频页面

后置条件

系统中添加、编辑、删除了一个学习视频

基本事件流

参与者动作

系统响应

1.管理员点击已有的学习视频进行删除

3.管理员输入活动标题、活动类型、活动时间、活动海报、选择是学习视频并点击上传文件

5.选择本地的文件并提交并点击确定

2.选中的学习视频删除成功

4.系统弹出选择文件的窗口

6.显示增加学习视频成功

备选事件流

4a.上传时需点击是报名按钮,不然会上传失败。

管理员新增、编辑、删除学习视频,如表3.6所示。

表3.6 更新学习视频用例描述

用例名称

更新学习视频

参与者

管理员

用例概述

管理员可以新增、编辑、删除学习视频

前置条件

管理员登录,并进入学习视频页面

后置条件

系统显示学习视频

基本事件流

参与者动作

系统响应

1.管理员点击已有的学习视频进行删除

3.管理员输入视频名称、视频时长、视频文件、封面图片并点击确定

2.已有的学习视频删除成功

4.新学习视频增加成功

备选事件流

管理员新增、编辑、删除用户,如表3.7所示。

表3.7用户管理用例描述

用例名称

用户管理

参与者

管理员

用例概述

管理员可以对用户进行新增、搜索、删除(批量删除)、编辑操作

前置条件

管理员登录,并进入到用户管理页面

后置条件

系统中添加、编辑、查找、删除用户

基本事件流

参与者动作

系统响应

1.管理员点击已有的用户信息删除

3.管理员点击新增

5.填写用户名、密码、邮箱、电话并选择性别,点击确定

7.点击编辑用户信息,进行编辑

9.搜索中输入用户昵称进行查询

2.选中的用户被删除

4.系统弹出新增用户的窗口

6.新增用户成功

8.编辑用户信息成功

10.查询用户信息成功

备选事件流

第4章 系统实现

4.1 核心功能实现

用户登录的验证将不再局限于登录信息和权限的匹配验证,而是另外增加了一个验证码,只有界面上所有的编辑框数据都准确的情况下才能实现登录成功。管理员的登录和前台用户登录是一样的过程,其主要就是利用权限字段来完成对用户或管理员的角色识别。

用户登录流程图如下所示。

图4.1 用户登录流程图

登录界面如下图所示。

图4.1 登录界面

登录关键代码如下:

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            Duration duration = Duration.ofSeconds(7200L);

            redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

    }

系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。

用户注册流程图如下所示。

图4.3 用户注册流程图

用户注册界面如下图所示。

图4.4 用户注册界面

注册关键代码如下:

 /**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

        query.put("username",user.getUsername());

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}     

用户使用该建筑装饰工程公司采购系统小程序注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。

密码修改流程图如下所示。

图4.5 密码修改流程图

密码修改界面如图所示。

图4.6 密码修改界面

修改密码关键代码如下:

 /**

     * 修改密码

     * @param data

     * @param request

     * @return

     */

    @PostMapping("change_password")

    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

        // 根据Token获取UserId

        String token = request.getHeader("x-auth-token");

        Integer userId = tokenGetUserId(token);

        // 根据UserId和旧密码获取用户

        Map<String, String> query = new HashMap<>();

        String o_password = data.get("o_password");

        query.put("user_id" ,String.valueOf(userId));

        query.put("password" ,service.encryption(o_password));

        int count = service.selectBaseCount(service.count(query, service.readConfig(request)));

        if(count > 0){

            // 修改密码

            Map<String,Object> form = new HashMap<>();

            form.put("password",service.encryption(data.get("password")));

            service.update(query,service.readConfig(request),form);

            return success(1);

        }

        return error(10000,"密码修改失败!");

    }

用户选择相应的学习视频收藏,通过id传参,找到id为此传参的学习视频,在收藏页提交收藏记录表单,生成收藏记录,用户在个人中心管理个人的收藏夹。

学习视频收藏界面如下图所示。

图4.7 学习视频收藏界面

用户执行购买申请,并可以操作相关内容,例如查看,编辑。购买申请的添加操作是建立在材料信息的列表基础上,单击查材料信息下的购买申请链接;然后单击“购买申请”进行添加,添加成功后的信息会载入到购买申请查询列表中。

购买申请流程图如下所示。

图4.8购买申请流程图

购买申请界面如图所示。

图4.9 购买申请界面

用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。

用户管理流程图如下所示。

图4.10 用户管理流程图

用户管理界面如下图所示。

图4.11 用户管理界面

用户管理关键代码如下:

 @PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

public Map<String, Object> addMap(Map<String,Object> map){

    service.insert(map);

     return success(1);

 }

管理员执行材料信息管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加材料信息”,可以通过材料信息添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到材料信息查询列表中,管理员可进行编辑以及修改。

材料信息添加流程图如下所示。

图4.12 材料信息添加流程图

材料信息添加如下图所示。

图4.13 材料信息添加界面

材料信息查询界面如下所示。

图4.14 材料信息查询界面

材料信息管理关键代码如下:

 @RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

    }

    public void delete(Map<String,String> query,Map<String,String> config){

        QueryWrapper wrapper = new QueryWrapper<E>();

        toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

        baseMapper.delete(wrapper);

        log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());

    }

购买申请管理包括删除购买申请、修改购买申请、查询购买申请等,以购买申请查询为例,在视图层请求购买申请信息查询,反馈后,调用业务逻辑层,通过业务逻辑层的接口调用底层的数据逻辑层完成数据库联动操作。

购买申请管理的流程如所示。

图4.15 购买申请管理流程

购买申请管理界面如下所示。

图4.16 购买申请管理界面

购买申请管理关键代码如下:

 @PostMapping("/set")

@Transactional

    public Map<String, Object> set(HttpServletRequest request) throws IOException {

        service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

        return success(1);

    }

4.2 关键技术难点与解决方案

1、数据库设计与管理:

(1)建筑装饰工程公司采购系统小程序需要与数据库进行交互,包括存储采购信息、材料信息等。难点在于设计合适的数据库结构和实现高效的数据管理。

(2)解决方案可以通过使用MySQL等关系型数据库,并采用良好的数据库设计范式,合理划分表结构和建立索引以提升查询性能。

2、权限管理与用户认证:

(1)小程序需要实现不同角色的权限管理和用户认证,例如管理员和工厂用户。难点在于如何实现安全的身份验证和授权机制。

(2)解决方案可以使用Spring Security框架来处理用户认证和授权,并结合JWT(JSON Web Token)或OAuth 2.0等流行的身份验证机制来增强安全性。

3、实时通信与消息推送:

(1)建筑装饰工程公司采购系统小程序可能需要实现实时通信和消息推送功能,例如订单状态更新的实时提醒。难点在于选择合适的实时通信技术和实现消息推送机制。

(2)解决方案可以考虑使用WebSocket协议来实现实时通信,结合消息队列或推送服务(如Firebase Cloud Messaging)来实现消息推送功能。

4、用户体验优化:

(1)建筑装饰工程公司采购系统小程序的用户体验对于提高用户满意度和使用率至关重要。难点在于如何设计简洁、直观的界面,并优化系统响应速度和交互流畅性。

(2)解决方案可以通过合理的页面布局和导航设计,使用前端框架如Vue.js或React等来提升用户界面的交互性能,并进行系统性能调优和缓存机制的应用。

第5章 系统测试

建筑装饰工程公司采购系统小程序的测试本着及早接入的原则,因此早在需求阶段测试人员就对需求的覆盖度、数据模型的正确性都进行了相应的验证测试,在系统开发过程中进行了单元测试,在集成阶段进行了集成测试,在整个系统开发完成后又针对功能性方面进行了系统测试。由于篇幅的限制,下面主要围绕功能测试用例、性能测试和测试总结三个方面进行说明。

5.1 功能测试

用户登录功能测试:

表5.1 用户登录功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

用户登录模块测试

用户登录成功的情况

点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。

登录成功并调整到用户界面

正确

材料信息添加功能测试:

表5.2 材料信息添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

材料信息添加模块测试

材料信息添加成功的情况

在材料信息的页面中将点击添加,输入材料相关信息,输入正确的信息后然后点击“提交”按钮。

提示添加成功

正确

材料信息添加模块测试

材料信息添加失败的情况

在材料信息页面中不填写的材料名称或者材料图片,其他信息正常输入“提交”按钮。

提示“添加失败,信息不能为空”

正确

查询学习视频功能模块测试:

表5.3 查询学习视频功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

查询学习视频信息功能测试

查询成功的情况

在学习视频界面输入视频名称进行查询

查询成功

正确

5.2 非功能测试

1、安全性:测试系统的安全性,包括用户身份验证、数据加密传输、权限控制等。确保系统能够有效地防止未经授权的访问和数据泄露,并保护用户隐私信息的安全。

2、可靠性:测试系统的可靠性和稳定性,包括对系统的异常情况进行模拟和测试,如网络中断、数据库故障等。确保系统在各种不可控因素下能够正常运行并保持稳定。

3、性能:测试系统的性能,包括响应时间、吞吐量、并发用户数等方面。通过压力测试和负载测试等手段,评估系统的性能瓶颈和潜在问题,并针对性地进行优化和调整,以保证系统在高负载环境下也能够正常运行。

5、可扩展性:测试系统的可扩展性,即在需求增加或用户规模扩大时,系统能够保持良好的性能和可用性。通过模拟增加用户数量和请求量等方式,评估系统的扩展能力,并进行必要的优化和调整。

6、易用性:测试系统的易用性,包括界面设计、交互流程、操作指引等方面。通过用户体验测试和专家评估,评估系统是否符合用户习惯和期望,并提供友好的使用体验。

7、可维护性:测试系统的可维护性,包括代码结构清晰、可读性高、易于修改和扩展等方面。通过代码审查和重构,评估系统的可维护性,并确保系统能够快速响应需求变化和进行日常维护工作。

5.3 测试总结

总测试用例数量:100个

功能性测试用例:70个

登录验证、角色权限、材料信息、材料领取等功能的测试。

性能测试用例:15个

针对系统的响应时间、吞吐量和并发用户数进行压力测试。

兼容性测试用例:10个

在不同设备和操作系统上测试系统的兼容性。

后台测试用例:5个

对数据库连接、数据存取和查询等后台功能进行测试。

其中,我们重点关注了以下核心测试用例的执行和结果:

登录验证功能测试:

测试目的:验证用户登录时的身份验证和权限控制功能。

测试结果:所有测试用例成功通过,系统正确识别用户身份并限制其访问权限。

材料信息功能测试:

测试目的:验证工长用户能否成功发布材料信息。

测试结果:所有测试用例成功通过,材料信息顺利发布到系统,并能够正常显示。

经过测试过程中发现了一些缺陷,并及时进行了修复。我们对每个缺陷进行了记录和分析,针对性地进行修改和优化。通过修复这些缺陷,系统的质量得到了显著提升。

总体而言,经过测试和修复缺陷后,建筑装饰工程公司采购系统小程序的质量有了明显的改善。系统在功能性和非功能性方面均得到有效验证,并且核心功能模块经过充分测试和优化,保证了系统的稳定性和可靠性。

第6章 结论与展望

建筑装饰工程公司采购系统小程序的设计与实现为公司的采购管理提供了便捷、高效的解决方案。通过材料信息、材料领取、购买申请和学习视频等功能的支持,小程序有效地提升了采购流程的效率和透明度。然而,还存在一些可以改进和发展的方面。

在结论方面,建筑装饰工程公司采购系统小程序已经成功满足了核心需求,并取得了显著的成果。材料信息管理功能使得采购人员能够快速选择合适的材料,材料领取功能帮助公司更好地控制库存和使用情况,购买申请功能简化了采购流程,学习视频功能提供了便捷的学习资源。这些优点都为公司的采购过程带来了显著的便利和效益。

在展望方面,可以进一步改进和拓展建筑装饰工程公司采购系统小程序。例如,可以引入更智能化的技术,以提升材料领取和库存管理的精确性和效率。同时,可以增加更多的功能模块,如供应商管理、质量检验等,以进一步完善采购管理的全过程。

在运营方面,可以通过推广和宣传,提高建筑装饰工程公司采购系统小程序的知名度和使用率。同时,加强用户培训和支持,帮助用户更好地了解和使用小程序,提升其价值和效果。

建筑装饰工程公司采购系统小程序在目前已取得了显著的成果,并具有良好的发展潜力。通过不断改进和拓展,我们将为公司的采购管理提供更全面、智能化的解决方案,并致力于提供更好的用户体验和服务质量。

参考文献

[1]韩小龙,司珍,吕晓峰等. 基于面向对象编程的Java语言程序设计方法分析 [J]. 集成电路应用, 2024, 41 (01): 228-229.

[2]Xiao J ,Zhou H ,Lei Q , et al. Attention-Mechanism-Based Face Feature Extraction Model for WeChat Applet on Mobile Devices [J]. Electronics, 2024, 13 (1):

[3]Wu J ,Chen N ,Xia H , et al. Design and application of a game‐based WeChat mini‐program for screening cognitive impairments in Chinese older adults [J]. Alzheimer's & Dementia, 2023, 19 (S11):

[4]Wu J ,Chen N ,Xia H , et al. Design and development of the intelligent voice recognition‐based cognitive assessment WeChat mini‐program [J]. Alzheimer's & Dementia, 2023, 19 (S11):

[5]李刚. 基于JAVA语言代码质量模糊测试系统及方法[P]. 北京市: CN116501604B, 2023-10-10.

[6]夏健强, 基于Java语言的在线网络视频聊天系统V1.0. 湖北省, 武汉东湖学院, 2021-11-01.

[7]王学琴,何菊香. 图书馆数字资源标准化采购系统功能设计 [J]. 图书情报工作, 2020, 64 (08): 49-56.

[8]梅海波,高峰,贠文辉. 基于人工智能的供应链优化采购系统 [J]. 中国物流与采购, 2020, (07): 28-29.

[9]梅海波,高峰,贠文辉. 基于大数据分析的智能采购系统设计与实现 [J]. 电信技术, 2019, (12): 133-136.

[10]冯海斌,郑绍钰,张千宇等. 装备基地级维修服务PPP采购系统分析 [J]. 装甲兵工程学院学报, 2019, 33 (02): 38-45.

[11]SJ/T 11683-2019, Java语言源代码缺陷控制与测试指南[S].

[12]张玉婷. 基于Java语言和MySQL数据库的固体废弃物数据管理系统的创建[D]. 内蒙古师范大学, 2019.

[13]胡成杰,宫云战,金大海. Java语言基于函数摘要的全局分析静态测试方法[C]// 中国计算机学会,中国计算机学会容错计算专业委员会. 第六届中国测试学术会议论文集. 北京邮电大学网络技术研究院;, 2019: 5.

致  谢

在整个建筑装饰工程公司采购系统小程序的毕业设计过程中,我要向导师和相关人员表达我的衷心感谢。在毕业设计的各个阶段,他们给予了我悉心指导和耐心帮助,对我进行了细致的指导和不断的鼓励。

首先,我要感谢我的导师xxx老师。在整个设计过程中,他给予了我宝贵的建议和指导,帮助我明确设计目标、制定合理的计划,并在项目实施中给予了及时的反馈和指导。他的专业知识和严谨的态度使我受益匪浅。

此外,我还要感谢xxx老师和xxx高级工程师。他们在设计过程中提供了许多宝贵的意见和建议,帮助我解决了遇到的问题,并给予了我很大的支持和鼓励。他们的经验和专业能力对我的毕业设计起到了重要的推动作用。

在这个毕业设计中,我不仅学习到了Spring Boot框架的应用和开发技巧,还培养了自己的问题分析和解决能力。通过与团队成员的合作,我体会到了协作和沟通的重要性,也提升了自己的团队合作能力。

通过这个毕业设计,我更加深入地了解了软件开发的整个流程,从需求分析到设计实现再到测试部署,每一个环节都对我产生了深刻的影响。同时,我也认识到学习是一个不断进步和积累的过程,要不断充实自己的知识储备,跟上技术的发展和变化。

对于未来,我希望能够继续深入学习软件开发的相关知识,不断提升自己的技能水平。我希望能够在实际工作中应用所学的知识,解决真实的问题,并为社会和行业做出贡献。我也希望能够与更多的优秀人才一起合作,共同探索和创新,推动科技的发展和进步。

最后,再次感谢导师和相关人员的悉心指导和支持,在他们的帮助下,我顺利完成了这个建筑装饰工程公司采购系统小程序的毕业设计,受益匪浅。

关注+点赞+收藏+私信博主,免费领取项目源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值