基于Java的合同管理系统的设计与实现 毕业设计-附源码17758

摘要

随着需求的不断增长和商业合作的日益复杂化,合同管理对企业变得尤为重要。传统的人工合同管理方式已无法满足企业庞大的合同数量和复杂的合同流程需求。因此,利用信息技术构建一个基于SpringBoot框架、Java语言和MySQL数据库的合同管理系统,显得至关重要。

本文旨在设计和开发一套功能完善的合同管理系统,基于SpringBoot框架、Java语言和MySQL数据库,并增加数据统计功能。通过该系统,管理员可以实现对合同的全生命周期管理,包括合同申请、归档、模版管理、资金收付等环节,并能进行合同进行统计分析。同时,员工用户可以方便地查询合同信息、提交合同审核等操作。

SpringBoot作为一种快速开发框架,能够提供丰富的功能和简化的配置,使系统的开发和维护更加便捷。Java作为一种广泛应用于企业级软件开发的编程语言,具备良好的可移植性和稳定性,可以为系统提供可靠的基础。MySQL作为一种常用的关系型数据库管理系统,具有稳定性和易用性,能够满足系统对数据存储和管理的需求。

通过本系统的研究,可以为合同管理系统的设计与开发提供有益的参考和指导,提高企业合同管理的效率和水平。同时,借鉴SpringBoot、Java、MySQL等技术的优势,有助于更全面地了解和分析合同管理,提升决策能力和运营效率。

关键词:合同管理系统;Java语言;SpringBoot框架;MySQL数据库

                                                    Abstract

With the continuous growth of demand and the increasing complexity of commercial cooperation, contract management has become particularly important for enterprises. The traditional manual contract management method is no longer able to meet the huge number of contracts and complex contract process requirements of enterprises. Therefore, it is crucial to use information technology to build a contract management system based on the SpringBoot framework, Java language, and MySQL database.

This article aims to design and develop a fully functional contract management system based on the SpringBoot framework, Java language, and MySQL database, with added data statistics functionality. Through this system, administrators can achieve full lifecycle management of contracts, including contract application, archiving, template management, fund collection and payment, and can conduct statistical analysis of contracts. Meanwhile, ordinary users can conveniently query contract information, submit contract reviews, and perform other operations.

As a fast development framework, SpringBoot can provide rich features and simplified configurations, making system development and maintenance more convenient. Java, as a programming language widely used in enterprise software development, has good portability and stability, and can provide a reliable foundation for systems. MySQL, as a commonly used relational database management system, has stability and ease of use, which can meet the system's requirements for data storage and management.

Through the research of this system, useful references and guidance can be provided for the design and development of contract management systems, improving the efficiency and level of enterprise contract management. At the same time, drawing on the advantages of technologies such as SpringBoot, Java, and MySQL can help to have a more comprehensive understanding and analysis of contract management, improve decision-making ability and operational efficiency.

Keywords: Contract management system; Java language; SpringBoot framework; MySQL database

目录

摘要

Abstract

第1章 引 言

1.1 选题背景及意义

1.2 国内外研究概况

1.3 主要研究内容

第2章 系统需求分析

2.1 系统可行性分析

2.1.1 技术可行性分析

2.1.2 经济可行性分析

2.1.3 操作可行性分析

2.2 系统需求分析

2.2.1 功能需求分析

2.2.2 非功能性需求分析

2.3 系统用例分析

第3章 系统设计

3.1 系统功能模块设计

3.2 数据库设计

3.2.1 数据库概念结构设计

3.2.2 数据库逻辑结构设计

3.3 表access_token (登陆访问时长)

3.4 表announcement_information (公告信息)

3.5 表auth (用户权限管理)

3.6 表contract_application (合同申请)

3.7 表contract_archiving (合同归档)

3.8 表contract_template (合同模板)

3.9 表department_information (部门信息)

3.10 表employee_users (员工用户)

3.11 表fund_receipts_and_payments (资金收付)

3.12 表hits (用户点击)

3.13 表information_of_party_b (乙方信息)

3.14 表upload (文件上传)

3.15 表user (用户账户:用于保存用户登录信息)

3.16 表user_group (用户组:用于用户前端身份和鉴权)

4章 关键模块的设计与实现

4.1 登录模块

4.2 个人信息修改模块

4.3 密码修改模块

4.4 用户管理模块

4.5 用户合同申请管理模块

4.6 合同模板管理模块

4.7 合同归档管理模块

4.8 管理员部门信息管理模块

4.9 管理员合同归档管理模块

第5章 系统测试

5.1 测试的目的

5.2 系统部分测试

5.3 系统测试结果

第6章 结语

参考文献

结束语

第1章 引 言

    1. 选题背景及意义

随着全球经济的快速发展和商业活动的不断增加,企业之间的合同往来日益频繁且复杂化,合同管理成为企业管理中不可或缺的一环。传统的人工合同管理方式存在着诸多问题,如合同存档不便、合同审批流程繁琐、合同执行跟踪困难等,已经无法满足现代企业对高效、规范、安全的合同管理需求。

在这种背景下,利用信息技术构建一套高效的合同管理系统显得尤为迫切和必要。通过引入现代化的技术手段,如基于SpringBoot框架、Java语言和MySQL数据库的合同管理系统,可以实现合同的电子化存储、自动化审批流程、实时数据统计分析等功能,极大地提高了合同管理的效率和质量。这不仅可以减少人力资源的浪费和错误率,还能够提升企业的合同管理水平和竞争力。

因此,研究合同管理系统的设计与实现具有重要的现实意义和实践价值。通过深入探讨合同管理系统的开发原理、关键技术和应用场景,可以为企业提供指导和借鉴,促进企业合同管理工作的规范化、智能化和现代化发展,从而推动企业整体管理水平的提升和竞争优势的增强。

    1. 国内外研究概况

国内外关于合同管理系统的研究已经取得了一定的进展。在国外,许多大型企业和跨国公司已经广泛应用各类合同管理系统,以提高合同管理的效率和精确性。一些国外学术界和商业领域的研究机构也对合同管理系统的设计、实施和效果进行了深入研究和案例分析,为该领域的发展提供了宝贵的经验和借鉴。

在国内,随着企业信息化程度的不断提升,合同管理系统也受到了广泛关注。一些大型企业和行业领军企业已经开始尝试引入先进的信息技术来构建合同管理系统,以解决合同管理过程中存在的瓶颈和问题。同时,国内一些高校和科研机构也对合同管理系统进行了研究和探索,试图从技术创新和管理实践的角度,为企业合同管理提供新的思路和解决方案。

总体而言,国内外对于合同管理系统的研究主要集中在系统架构设计、功能模块开发、数据安全性保障、用户体验优化等方面。未来的研究方向可能包括基于人工智能的合同智能识别与分析、区块链技术在合同管理中的应用、合同管理系统与企业其他信息系统的集成等方面的深入探讨和实践。通过国内外研究的比较和借鉴,可以为合同管理系统的发展提供更广阔的视野和更丰富的思路。

    1. 主要研究内容

(1)系统设计与开发:研究合同管理系统的设计和开发,包括系统架构、功能模块、用户界面等。着重考虑系统的易用性、可扩展性和安全性,以满足用户需求和提供良好的使用体验。

(2)数据管理:研究合同管理系统中的数据管理和分析方法。这包括如何收集、存储和处理相关的数据。

(3)用户行为与参与度:研究用户在合同管理系统中的行为习惯和参与度。通过对用户操作行为的分析和用户反馈的收集,了解用户对系统的使用偏好、交互模式和功能需求,以便改进系统设计和提供更好的服务。

(4)用户体验与服务质量:研究合同管理系统的用户体验和服务质量。通过用户调研和反馈收集,评估系统的易用性、响应速度、信息准确性等方面,以改进用户界面设计和功能优化,提供更好的用户体验和服务质量。

第2章 系统需求分析

合同管理系统存储所使用的是Mysql数据库以及开发中所使用的是IDEA、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用SpringBoot框架进行开发,使系统的可扩展性和维护性更佳,减少Java配置代码,简化编程代码,目前SpringBoot框架也是很多用户选择的框架之一。

      1. 经济可行性分析

在开发合同管理系统中所使用的开发软件像IDEA开发工具、Tomcat服务器、MySQL数据库、Photoshop图片处理软件等,这些都是开源免费的,这些环境在学校都进行了系统的学习,自己能够独立操作完成,不需要额外花费,而且系统的开发工具从网上都可以直接下载,因此在经济方面是可行的。

      1. 操作可行性分析

此次项目设计的时候我参考了很多类似系统的成功案例,对它们的操作界面以及功能都进行了系统的分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。

    1. 系统需求分析
      1. 功能需求分析

合同管理系统的功能分析包括管理员和员工用户两个角色。管理员可以统计合同信息,管理用户权限,审核合同,跟踪归档情况,管理部门、乙方信息、资金收付等。员工用户可以查询合同信息,下载合同模版、提交合同申请管理合同归档、查看公告信息管理等。通过对合同管理系统功能的详细分析,可以为系统的设计和开发提供指导和建议,提高合同管理的效率和准确性。具体如下:

员工用户端:

  1. 后台首页:展示用户合同管理等基本信息,方便员工用户修改个人信息、了解当前的合同情况。

(2) 公告信息管理:员工用户可以浏览最新公告列表,根据标题或发布时间搜   索具体公告,可重置搜索条件以便重新查找信息,查看公告详细内容包括文本和附件等,并可在详情页面下载相关文件。

(3)合同模板管理:员工用户可以查询现有合同模板信息,进行条件筛选以快速找到所需模板,重置查询条件以重新搜索,查看模板详细信息包括模板类型、适用范围等,同时在模板详情页面可下载相关模板附件。

(4)合同申请管理:员工用户能够查看当前合同申请列表,填写合同申请并上传必要文件,提交给管理员审核,查看已归档合同的具体细节,包括合同内容、签署时间等重要信息,以便跟踪合同进展和归档情况。

(5)合同归档管理:员工用户可浏览合同归档列表,了解已完成的合同归档情况,查看合同归档的基本信息,如合同名称、归档日期等,以便及时了解企业合同执行情况和历史记录。

(6)资金收付管理:员工用户可以查看资金收付列表,包括查询、重置、删除操作,并查看详细的资金收付信息,包括支付情况和日期,以便了解个人支付情况和财务记录。

管理员端:

  1. 后台首页:管理员主页是整个系统的核心页面,展示用户合同统计和合同签署统计,方便管理员了解合同相关数据。
  2. 系统用户管理:包括管理员和员工用户的权限控制与管理,确保系统安全性。
  3. 公告信息管理:管理员可以查看公告信息列表,包括标题和发布时间,并

权限添加新公告内容,包括标题、正文和附件,确保员工及时了解公司重要通知和信息。

(4)合同模板管理:管理员可以查看现有合同模板列表,包括模板名称和类型,同时可以添加新的合同模板,进行查询、重置、删除操作,并查看模板详细信息,包括内容和附件,以便员工使用和下载。

(5)部门信息管理:管理员可以浏览部门信息列表,了解部门名称和负责人等关

键信息,也可以添加新的部门信息并进行查询、重置、删除操作,以维护公司部门组织结构的完整性和准确性。

(6)乙方信息管理:管理员可以查看乙方信息列表,包括乙方名称和联系人等关键信息,可以添加新的乙方信息,进行查询、重置、删除操作,同时查看乙方详细信息,包括合作内容和历史记录,以便进行商务合作管理。

(7)合同申请管理:管理员可以查看合同申请列表,审核员工提交的合同申请,可以添加新的合同申请,进行查询、重置、删除操作,查看合同申请详情,并管理合同归档,确保合同申请流程顺利进行。

(8)合同归档管理:管理员可以查看已归档合同列表,进行查询、重置、删除操      作,查看已归档合同的详细信息,包括合同内容和归档日期,同时可以管理资金收付,确保合同执行和财务流程顺利进行。

(8)资金收付管理:管理员可以查看资金收付列表,进行查询、重置、删除操作,查看详细的资金收付信息,包括支付情况和日期,同时对支付进行管理,确保资金安全和支付准确性。

      1. 非功能性需求分析

合同管理系统的非功能性需求比如合同管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:

2.1 合同管理系统非功能需求表

安全性

主要指合同管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指合同管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响合同管理系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着合同管理系统的页面展示内容进行操作,就可以了。

可维护性

合同管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

    1. 系统用例分析

合同管理系统中用户角色用例图如图2.1所示:

图2.1用户角色用例图

合同管理系统中管理员用户用例图如图2.2所示:

图2.2 管理员用例图

  1. 系统设计
  • 2 章
    1. 系统功能模块设计

系功能模块分成了管理员和员工用户两个模块,每个模块登录进去对应相应的功能,具体的功能模块图如图3.1所示。

图3.1 合同管理系统功能模块图

    1. 数据库设计

数据库的设计承载者系统的各种数据,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。

      1. 数据库概念结构设计

下面是整个合同管理系统中主要的数据库表总E-R实体关系图。

图3.2 合同管理系统总E-R关系图

      1. 数据库逻辑结构设计

通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:

    1. 表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

    1. 表announcement_information (公告信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

announcement_information_id

int

10

0

N

Y

公告信息ID

2

announcement_title

varchar

64

0

Y

N

公告标题

3

release_time

date

10

0

Y

N

发布时间

4

publisher

varchar

64

0

Y

N

发布人

5

announcement_content

text

65535

0

Y

N

公告内容

6

related_documents

varchar

255

0

Y

N

相关文件

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

    1. 表contract_application (合同申请)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

contract_application_id

int

10

0

N

Y

合同申请ID

2

employee_users

int

10

0

Y

N

0

员工用户

3

employee_no

varchar

64

0

Y

N

员工工号

4

employee_name

varchar

64

0

Y

N

员工姓名

5

contract_number

varchar

64

0

Y

N

合同编号

6

contract_name

varchar

64

0

Y

N

合同名称

7

contract_party_a

varchar

64

0

Y

N

合同甲方

8

contract_party_b

varchar

64

0

Y

N

合同乙方

9

contract_amount

varchar

64

0

Y

N

合同金额

10

contract_content

text

65535

0

Y

N

合同内容

11

appendices_of_a_contract

varchar

255

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

更新时间

    1. 表contract_archiving (合同归档)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

contract_archiving_id

int

10

0

N

Y

合同归档ID

2

employee_users

int

10

0

Y

N

0

员工用户

3

employee_no

varchar

64

0

Y

N

员工工号

4

employee_name

varchar

64

0

Y

N

员工姓名

5

contract_number

varchar

64

0

Y

N

合同编号

6

contract_name

varchar

64

0

Y

N

合同名称

7

contract_party_a

varchar

64

0

Y

N

合同甲方

8

contract_party_b

varchar

64

0

Y

N

合同乙方

9

contract_amount

varchar

64

0

Y

N

合同金额

10

contract_content

text

65535

0

Y

N

合同内容

11

filing_date

date

10

0

Y

N

归档日期

12

archived_type

varchar

64

0

Y

N

归档类型

13

archive_instructions

text

65535

0

Y

N

归档说明

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表contract_template (合同模板)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

contract_template_id

int

10

0

N

Y

合同模板ID

2

contract_template

varchar

64

0

Y

N

合同模板

3

type_of_contract

varchar

64

0

Y

N

合同类型

4

release_date

date

10

0

Y

N

发布日期

5

contract_party_a

varchar

64

0

Y

N

合同甲方

6

contract_party_b

varchar

64

0

Y

N

合同乙方

7

contract_content

text

65535

0

Y

N

合同内容

8

template_attachment

varchar

255

0

Y

N

模板附件

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表department_information (部门信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

department_information_id

int

10

0

N

Y

部门信息ID

2

department_name

varchar

64

0

Y

N

部门名称

3

department_head

varchar

64

0

Y

N

部门主管

4

department_headcount

varchar

64

0

Y

N

部门人数

5

department_personnel

text

65535

0

Y

N

部门人员

6

department_responsibilities

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

更新时间

    1. 表employee_users (员工用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

employee_users_id

int

10

0

N

Y

员工用户ID

2

employee_no

varchar

64

0

N

N

员工工号

3

employee_name

varchar

64

0

Y

N

员工姓名

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表fund_receipts_and_payments (资金收付)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

fund_receipts_and_payments_id

int

10

0

N

Y

资金收付ID

2

employee_users

int

10

0

Y

N

0

员工用户

3

employee_no

varchar

64

0

Y

N

员工工号

4

employee_name

varchar

64

0

Y

N

员工姓名

5

contract_number

varchar

64

0

Y

N

合同编号

6

contract_name

varchar

64

0

Y

N

合同名称

7

contract_party_a

varchar

64

0

Y

N

合同甲方

8

contract_party_b

varchar

64

0

Y

N

合同乙方

9

contract_amount

varchar

64

0

Y

N

合同金额

10

contract_content

text

65535

0

Y

N

合同内容

11

filing_date

date

10

0

Y

N

归档日期

12

payment_amount

varchar

64

0

Y

N

收付金额

13

payment_date

date

10

0

Y

N

收付日期

14

payment_instructions

text

65535

0

Y

N

收付说明

15

pay_state

varchar

16

0

N

N

未支付

支付状态

16

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

17

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

    1. 表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

    1. 表information_of_party_b (乙方信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

information_of_party_b_id

int

10

0

N

Y

乙方信息ID

2

name_of_party_b

varchar

64

0

Y

N

乙方名称

3

personnel_of_party_b

varchar

64

0

Y

N

乙方人员

4

party_bs_phone_number

varchar

64

0

Y

N

乙方电话

5

address_of_party_b

varchar

64

0

Y

N

乙方地址

6

number_of_collaborations

varchar

64

0

Y

N

合作次数

7

cooperation_amount

varchar

64

0

Y

N

合作金额

8

collaboration_content

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

更新时间

    1. 表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

    1. 表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

    1. 表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

4章 关键模块的设计与实现

  • 3 章
    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.select(map, new HashMap<>()).getResultList();

        }

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

            map.put("email", email);

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

        }

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

            map.put("phone", phone);

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

        }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.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

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

        }

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

        //查询用户审核状态

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

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            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());

            tokenService.save(accessToken);

            // 返回用户信息

            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, "账号或密码不正确");

        }

}

    1. 个人信息修改模块

当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,必须由管理员进行添加,当用户进入系统后,可以对个人资讯里的个人信息进行修改等,其主界面展示如下图所示。

图4.2 个人信息修改界面图

个人信息修改代码如下:

server:

  port: 5000

  servlet:

    context-path: /api

spring:

  datasource:

    url: jdbc:mysql://127.0.0.1:3306/CS725260_20211101091736?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8

    username: root

    password: root

    driver-class-name: com.mysql.cj.jdbc.Driver

  jackson:

    property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES

    default-property-inclusion: ALWAYS

    time-zone: GMT+8

    date-format: yyyy-MM-dd HH:mm:ss

  servlet:

    multipart:

      max-file-size: 100MB

      max-request-size: 100MB

    1. 密码修改模块

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

图4.3 密码修改界面图

密码修改代码如下:

/**

     * 修改密码

     * @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,"密码修改失败!");

    }

    1. 用户管理模块

管理员可以对系统中所有的用户角色进行管控,包含了管理员、员工用户两种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。界面如下图所示。

图4.4 用户管理界面图

代码如下:

  @RequestMapping("/get_obj")

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

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

    }

    1. 用户合同申请管理模块

用户合同申请管理:允许员工用户、员工工号、员工姓名、用户合同编号,包括合同名称、合同甲方、合同乙方、合同金额、合同金额、合同内容等。界面如下图所示。

图4.5用户合同申请界面图

管理员合同申请管理:记录用户合同的合同申请信息,如员工工号、姓名、合同编号、合同甲方、合同乙方、合同金额、合同金额、合同内容等,方便管理和查询和对合同归档进行管理。界面如下图所示。

图4.6管理员合同申请管理界面图

    1. 合同模板管理模块

合同模板管理:工用户可以查询现有合同模板信息,进行条件筛选以快速找到所需模板,重置查询条件以重新搜索,查看模板详细信息包括模板类型、适用范围等,同时在模板详情页面可下载相关模板附件。界面如下图所示。

图4.7 合同模板界面图

    1. 合同归档管理模块

合同归档管理:员工用户可浏览合同归档列表,了解已完成的合同归档情况,查看合同归档的基本信息,如合同名称、归档日期等,以便及时了解企业合同执行情况和历史记录。界面如下图所示。

图4.8合同签署界面图

    1. 管理员部门信息管理模块

管理员部门信息管理:管理员可以浏览部门信息列表,了解部门名称和负责人等关键信息,也可以添加新的部门信息并进行查询、重置、删除操作,以维护公司部门组织结构的完整性和准确性。界面如下图所示。

图4.9 管理员部门信息界面图

    1. 管理员合同归档管理模块

管理员合同归档管理:管理员可以查看已归档合同列表,进行查询、重置、删除操作,查看已归档合同的详细信息,包括合同内容和归档日期,同时可以管理资金收付,确保合同执行和财务流程顺利进行。界面如下图所示。

图4.10管理员合同归档界面图

  1. 系统测试
  • 4 章
    1. 测试的目的

通过前面章节的介绍,我们可以看到合同管理系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。

    1. 系统部分测试

用户登录功能测试:

表5.1 用户登录功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

用户登录模块测试

用户登录成功的情况

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

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

正确

合同信息添加功能测试:

表5.2 合同信息添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

合同信息添加模块测试

合同信息添加成功的情况

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

提示添加成功

正确

合同信息添加模块测试

合同信息添加失败的情况

在合同信息页面中不填写的合同名称,其他信息正常输入“提交”按钮。

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

正确

查询公告信息功能模块测试:

表5.3 查询公告信息功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

查询公告信息功能测试

查询成功的情况

在公告信息界面输入信息标题进行查询

查询成功

正确

合同模板添加功能测试:

表5.4 合同模板添加功能测试表

测试名称

测试功能

操作过程

预期结果

测试结果

合同模板添加模块测试

合同模板添加成功的情况

在合同模板添加管理的页面中,输入评价信息,输入正确的信息后然后点击“提交”按钮。

提示添加成功

正确

合同模板添加模块测试

合同模板添加失败的情况

在合同模板页面中不填写评价内容,其他信息正常输入“提交”按钮。

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

正确

    1. 系统测试结果

通过编写合同管理系统的测试用例,已经检测完毕用户的登录模块、合同信息添加模块、公告信息查看模块、合同模板添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。

                                                                  结语

在开发合同管理系统之前我胸有成竹,觉得很简单,但在实际的开发中我发现了自身的很多问题,许多编程思想和方法都还没有掌握牢靠,比如Bootsatrp、Jquery、AJAX 、SpringBoot等许多Java Web开发技术,通过开发这个合同管理系统我成长了很多,懂得了做什么事情都要脚踏实地,不能眼高手低,在本次合同管理系统的开发中我逐渐掌握逐渐熟悉的技术。

同时,在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。

                                                             参考文献

[1]于汇. 探析国有企业合同管理中的风险与防范措施 [J]. 支点, 2024, (03): 85-87.

[2]张娣. 住宅建筑工程项目合同预算管理与成本控制 [J]. 居舍, 2024, (08): 173-176.

[3]赵彩霞,张栽培,杨璇. 基于Java编程导航学习平台开发设计的研究 [J]. 家电维修, 2024, (03): 62-64.

[4]车钰佳,万琳. 基于内部控制的行政单位经济合同管理分析 [J]. 财政监督, 2024, (05): 96-100.

[5]Prabawani B ,Hadi P S ,Fisher R M , et al. Socioeconomic perspective of agroforestry development in Central Java [J]. Environmental and Sustainability Indicators, 2024, 22 100354-.

[6]周雪媛. 浅谈对加强国有企业全生命周期合同管理工作的思考 [J]. 铁路采购与物流, 2024, 19 (02): 64-66.

[7]徐春玲. 大数据时代高校合同档案管理工作的分析 [J]. 文化学刊, 2024, (02): 197-200.

[8]宋书勇,龙昭成,关宇等. 合同管理下的采购业务风险控制 [J]. 中国市场, 2024, (05): 191-194.

[9]王诗涵. 铁路工程合同管理的优化策略 [J]. 投资与合作, 2024, (02): 150-152.

[10]李萍英. 公立医院经济合同内部控制审计探讨 [J]. 中国农业会计, 2024, 34 (03): 71-73.

[11]袁明国. 从合同经营管理视角浅谈生态环境治理项目的安全生产管理 [J]. 工程建设与设计, 2024, (03): 223-225.

[12]魏子翔. 浅谈供用电合同管理的含义及过程 [J]. 农村电工, 2024, 32 (02): 17-18.

[13]张栋. 浅析合同能源管理模式在轨道交通行业的应用 [J]. 交通科技与管理, 2024, 5 (03): 142-144.

[14]亢娟娜. 基于B/S结构的人力资源管理系统设计研究 [J]. 网络安全和信息化, 2024, (02): 107-110.

[15]卢静. 国有企业合同风险管理及防控对策分析 [J]. 投资与创业, 2024, 35 (02): 141-143+147.

[16]刘畅,王陈. MySQL数据库课程的教学评价体系设计 [J]. 电子技术, 2024, 53 (01): 393-395.

[17]陈蓓蕾,洪年松. 基于SpringBoot的数据库接口设计 [J]. 信息与电脑(理论版), 2023, 35 (16): 181-183.

[18]周瑞高,刘泽华. EPC工程项目合同管理与监控流程设计 [J]. 黑龙江交通科技, 2023, 46 (08): 147-149.

[19]孙金芝. 基于内部控制视角的M软件公司合同管理优化研究[D]. 山东财经大学, 2023.

[20]Hejing W . Commerce Middle Office Management System Based on Springboot [J]. International Journal of Advanced Network, Monitoring and Controls, 2022, 7 (2): 32-45.

                                                           结束语

至此论文结束,感谢您的阅读。在此我要特别的感谢我的导师,虽然我在实习期间很忙,论文撰写的时候经常是停停改改,但是我的导师依旧十分的负责,时不时的询问我的任务进展情况,跟进我的论文进度,在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识和经验,这些知识和经验令我受益匪浅。同时我也从导师身上看到了自己的不足,不论是在技术层面上还是在对待工作的态度上,导师如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于SpringBoot框架方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就花上了一个圆满的句号了。

                                                  点赞+收藏+关注 → 私信领取本源代码、数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值