摘 要
随着信息技术的快速发展和企业规模的持续扩大,传统的手工管理方式已经无法满足现代企业对员工信息管理的需求。因此,开发一套高效、稳定且易于维护的公司人员管理系统成为了企业信息化的重要任务之一。C++作为一种成熟、高效的编程语言,以其强大的面向对象特性和广泛的应用领域,成为了开发此类系统的理想选择。
本文旨在探讨基于C++的公司人员管理系统的设计与实现过程。通过对公司人员管理的实际需求进行深入分析,我们设计了一个功能完善、操作简便的系统框架。该系统能够实现对员工基本信息的录入、查询、修改和删除等操作。
在开发过程中,我们采用了面向对象的设计方法,将系统划分为多个独立的模块,以提高系统的可维护性和可扩展性。同时,我们还特别注重系统的安全性和数据完整性,通过引入权限管理和数据校验机制,确保数据的准确性和系统的稳定运行。
本文将对系统的整体架构、关键技术的实现以及实际应用效果进行详细介绍,以期为类似系统的开发提供参考和借鉴。
关键词:公司人员管理系统;C++编程语言;整体架构
With the rapid development of information technology and the continuous expansion of enterprise scale, traditional manual management methods can no longer meet the needs of modern enterprises for employee information management. Therefore, developing an efficient, stable, and easy to maintain company personnel management system has become one of the important tasks of enterprise informatization. C++, as a mature and efficient programming language, has become an ideal choice for developing such systems due to its powerful object-oriented features and wide application areas.
This article aims to explore the design and implementation process of a company personnel management system based on C++. Through in-depth analysis of the actual needs of personnel management in the company, we have designed a fully functional and easy-to-use system framework. This system can perform operations such as entering, querying, modifying, and deleting basic employee information.
During the development process, we adopted an object-oriented design approach, dividing the system into multiple independent modules to improve its maintainability and scalability. At the same time, we also pay special attention to the security and data integrity of the system. By introducing permission management and data verification mechanisms, we ensure the accuracy of data and the stable operation of the system.
This article will provide a detailed introduction to the overall architecture, implementation of key technologies, and practical application effects of the system, in order to provide reference and inspiration for the development of similar systems.
Key words:Company personnel management system; C++programming language; Overall architecture
目 录
1.1研究背景和意义
随着企业规模的扩大和市场竞争的加剧,企业对人员管理的需求也日益复杂和多样化。传统的手工管理方式不仅效率低下,而且容易出现数据错误和信息不一致等问题。因此,开发一套高效、稳定且易于维护的公司人员管理系统成为了企业提升管理水平和竞争力的关键。
C++作为一种功能强大的编程语言,具有高效性、灵活性和可扩展性等特点,非常适合用于开发企业级的管理系统。基于C++的公司人员管理系统不仅能够实现员工信息的快速录入、查询和修改,为企业决策者提供有力支持。
此外,随着信息技术的不断发展,企业对系统的安全性和数据完整性的要求也越来越高。基于C++的系统设计可以通过引入先进的加密技术和权限管理机制,确保员工信息的安全性和准确性,有效防止数据泄露和非法访问。
综上所述,基于C++的公司人员管理系统的设计与实现具有重要的研究背景和意义。它不仅能够满足企业对员工信息管理的实际需求,提升管理效率和数据安全性,还能为企业的可持续发展和信息化建设提供有力支撑。同时,该系统的开发和实现过程也有助于推动C++编程语言在企业级应用中的进一步发展和普及。
1.2国内外研究现状
国内研究现状:
在国内,随着企业信息化建设的不断推进,基于C++的公司人员管理系统得到了广泛的应用和研究。许多企业和研究机构都投入了大量的人力物力,致力于开发更加高效、稳定、安全的人员管理系统。例如,一些大型企业和软件开发公司都拥有自主研发的团队,不断推出符合企业实际需求的系统解决方案。同时,国内的高等院校和科研机构也在该领域进行了大量的研究和探索,为系统的进一步发展和优化提供了理论支持和技术保障。
国外研究现状:
在国外,尤其是在欧美等发达国家,基于C++的公司人员管理系统已经得到了广泛的应用和认可。许多知名的软件开发公司和企业都投入了大量的研发资源,致力于开发更加先进、高效、安全的管理系统。这些系统不仅功能强大、操作简便,而且注重用户体验和数据安全性。同时,国外的许多高校和研究机构也在该领域进行了深入的研究和探索,为系统的创新和发展提供了源源不断的动力。
总体而言,无论是国内还是国外,基于C++的公司人员管理系统的研究与应用都在不断发展和进步。随着信息技术的不断创新和企业需求的不断变化,未来该领域的研究将更加深入和广泛,为企业的信息化建设和人员管理提供更加全面、高效、安全的解决方案。
1.3开发工具介绍
1.3.1 C++ 语言
C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。 C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。 C++几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等。 甚至用于其他编程语言的库和编译器也使用C++编写。C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
1.3.2 .NET技术框架
.NET技术框架是一种现如今在软件系统开发中被大量使用的一种全新的软件系统架构。采用了模块化和组件的方式运行和开发,是现如今大多数软件系统开发人员所掌握的一种全新的软件系统开发技术框架。
.NET的最大特点就是在软件系统开发过程中可以实现对多种软件系统设计语言的支持,无论采用C语言还是C++语言、C#语言、J#语言对软件系统进行开发,在软件系统的运行和编译过程中都被同样的编译成一种通用的中间程序语言,不应影响软件系统的运行效率,是一种全新的多语言支持的先进开发框架。.NET软件系统框架不是简单的对ASP程序设计开发技术的升级,ASP程序开发技术不具备多种语言进行开发的特点,同时也没有一个整体的综合开发平台来对ASP进行良好的支持。
综上所述,.NET技术框架是一种非常优秀的软件系统开发框架,现如今已经大量使用的一种先进的开发框架。它可以提供对网络软件系统的开发的支持。开发本文的基于c++的公司人员管理系统我们就采用.NET框架来进行开发。
1.3.3 B/S架构
B/S这一结构模式和互联网的发展密不可分,它是对C/S的改进,因为以前的C/S结构需要在电脑上进行安装,比如我们最常使用的QQ、杀毒软件、办公软件等等,都是C/S结构开发的,但是随着互联网的发展,人们已经不满足于C/S这种结构,更想要一种能够实现信息数据共享的结构体系,鉴于人们需求的变化,诞生了B/S这一结构,改不了以往需要直接访问服务器的方式(即C/S模式),让用户通过浏览器就可以去实现访问服务器。这种体系结构不仅使得开发出的程序访问更为便捷,而且还减少了更新维护成本,提高交互性。
这个基于c++的公司人员管理系统就是采用B/S这一结构来开发的,让用户以及留个言只要能联网,通过浏览器就可以使用,使管理员以及用户在使用方面变得更加方便。
1.3.4 SQL Server数据库
SQL Server是一种开放源代码的关系型数据库管理系统(RDBMS),关系数据库将数据保存在不同的表中,提高了灵活性,它使用最常用的结构化查询语言(SQL)进行数据库管理。SQL Server因其具有速度快、体积小、总体拥有成本低和开放源码的优点而备受关注[7]。特点:
(1)支持多种操作系统。
(2)为多种编程语言提供了API。
(3)支持多线程,充分利用CPU资源。
(4)SQL Server性能卓越、服务稳定,很少出现异常宕机。
(5)原生JSON支持。
(6)优化SQL查询算法,有效地提高查询速度。
2.1系统概述
通过对开发的基于c++的公司人员管理系统进行的可行性分析,可以明确系统是否可以值得开发,同时还可以帮助开发人员明确开发的方向和目标,以下是对本基于c++的公司人员管理系统进行的可行性调研分析。
2.2可行性分析
2.2.1技术可行性
技术可行性方面,基于C++的公司人员管理系统具有显著的优势。C++作为一种成熟、高效且广泛应用的编程语言,拥有强大的面向对象特性和丰富的标准库支持,为开发复杂的企业级管理系统提供了坚实的基础。此外,C++在性能优化、内存管理和系统级编程等方面具有显著优势,能够确保系统的高效运行和稳定性。现代软件开发工具和技术,如模块化设计、代码重用、自动化测试等,也为基于C++的公司人员管理系统的开发提供了有力的支持。因此,从技术角度来看,基于C++的公司人员管理系统是完全可行的,并有望为企业提供高效、稳定且易于维护的人员管理解决方案。
2.2.2经济可行性
经济可行性方面,基于C++的公司人员管理系统同样展现出明显的优势。C++作为一种开源且广泛应用的编程语言,其学习成本和开发成本相对较低,企业无需投入大量资金购买昂贵的开发工具和许可证。C++具有高效的性能和稳定性,能够确保系统的长期稳定运行,减少因系统崩溃或数据丢失带来的经济损失。基于C++的系统通常具有较好的可扩展性和可维护性,企业可以根据实际需求进行系统的定制和升级,而无需完全重新开发,从而节省了大量的开发成本和时间成本。综上所述,从经济角度来看,基于C++的公司人员管理系统具有显著的经济可行性,能够帮助企业实现成本节约和效益提升。
2.2.3操作可行性
操作可行性方面,基于C++的公司人员管理系统注重用户体验和易用性。系统界面设计简洁明了,操作流程直观易懂,用户无需专业的计算机知识即可快速上手。同时,系统提供了丰富的帮助文档和用户指南,方便用户随时查阅和解决问题。因此,从操作角度来看,基于C++的公司人员管理系统完全具备操作可行性,能够满足企业员工的日常操作需求,提高工作效率和便利性。
2.3系统功能需求
2.3.1功能需求分析
基于c++的公司人员管理系统的功能主要分为员工用户根据自己的需求进行登录,主要可以浏览通知公告管理、工资信息管理、考勤打卡管理等。系统管理员因职责的不同,主要对系统用户、通知公告管理、部门信息管理、岗位信息管理、员工信息管理、工资信息管理、考勤打卡管理进行处理。管理员拥有最高权限。
员工用户用例图如下所示。
图2-1 员工用户用例图
管理员用例图如下所示。
图2-2管理员用例图
2.4系统性能需求
基于C++的公司人员管理系统在设计和实现时,必须满足一系列系统性能需求,以确保系统的高效运行和用户的满意体验。
系统应具备高效的数据处理能力,能够快速完成大量数据的录入、查询、修改和删除等操作,同时保证数据的准确性和一致性。
系统还应具备稳定的运行性能,能够在高并发、大数据量的情况下保持稳定运行,避免出现系统崩溃或数据丢失等问题。
为了满足这些性能需求,在系统的设计和实现过程中,需要采用高效的算法和数据结构,优化系统的代码和数据库结构,提高系统的运行效率和稳定性。同时,还需要进行充分的性能测试和调优,确保系统在实际应用中能够满足企业的性能需求。
2.5开发环境
(1)开发工具:使用C++开发语言,采用Visual Studio等集成开发环境进行编码和调试。
(2)前端技术:HTML、CSS、JavaScript等前端技术,使用Bootstrap等框架和工具进行前端界面设计。
(3)后端技术:使用ASP.NET开发后端服务,利用其高性能和可扩展性实现系统的各项功能。
(4)数据库:使用SQL Server等数据库管理系统存储平台所需数据,确保数据的安全性和可靠性。
(5)团队协作:建立团队合作机制,明确分工和任务,确保项目的顺利进行和高效完成。
3.1系统总体架构设计
MVC 是指 Model、View 和 Controller,翻译成中文分别是模型层、视图层和控制层。MVC 模式是一种设计模式,它强制性的把应用程序的输入、输出和处理全部分开,将其分为三个核心部分,这三个部分分别有不同的功能。
系统架构图如图3-1所示。
图3-1 系统架构图
视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。
模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。由于 Model 的主要内容是数据、方法和行为,其也是 MVC 中逻辑最为复杂,代码量最多的部分,其中包含了许多应用中需要用到的业务逻辑,因此模型层的开发也变得尤为重要,后期一般不会对模型层进行大规模改动,也是 MVC 中最稳定的部分。
控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操作来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。
3.2功能模块设计
3.2.1整体功能模块设计
根据对系统的功能进行分析可以总结基于c++的公司人员管理系统的具体功能模块包括下面的几个主要的功能模块:该系统主要从两大模块进行设计的,首先就是用户参与操作需要的模块,此外还需要有管理员用到的模块,两者之间不是互相独立的,他们之间有着密切的联系,同数据库表中的数据连接起来进行操作。每个模块访问相同的数据库,但访问的表不同。系统的各个功能模块是根据所收集的资料研究得到的。在以上分析功能的基础上,系统模块分为多个模块。
本系统的功能模块图如图3-2所示。
图3-2 整体功能模块设计
3.2.2部门信息管理模块设计
部门信息管理部门信息管理模块是基于C++的公司人员管理系统中不可或缺的一部分。该模块负责实现对公司内部各个部门的全面管理,包括部门的创建、信息的编辑、查询以及删除等功能。通过部门信息管理模块,企业可以方便地维护部门结构,确保员工与部门之间的关联准确无误,从而支持更高效的人员调配和组织管理。为企业的决策分析提供有力支持。如下图:
图3-3 部门信息管理模块结构图
3.2.3 岗位信息管理模块设计
岗位信息管理模块是公司人员管理系统中用于管理公司内部各个岗位的关键部分。这个模块允许用户创建、修改、查询和删除岗位信息。通过岗位信息管理模块,企业可以清晰地掌握每个岗位的设置情况,确保人员配置与岗位需求相匹配,从而优化人力资源配置,提高组织效率。具体的结构图如下:
图3-4 岗位信息管理模块结构图
3.2.4员工信息管理模块设计
员工信息管理模块是公司人员管理系统的核心部分,负责全面管理员工的个人信息和相关数据。该模块允许用户录入员工的基本信息,并提供便捷的查询和修改功能。此外,员工信息管理模块还能跟踪员工的岗位变动、薪资调整等动态信息,确保员工数据的实时更新和准确性。通过该模块,企业可以更加全面地了解员工情况,为人力资源管理提供有力支持,促进企业的稳定发展和员工的个人成长。其模块功能结构,具体的结构图如下:
图3-5 员工信息管理模块结构图
3.2.5工资信息管理模块设计
工资信息管理工资信息管理模块是公司人员管理系统中负责管理员工薪资信息的关键部分。该模块允许用户录入、查询、修改和删除员工的薪资数据,包括基本工资、津贴、奖金等各个组成部分。通过工资信息管理模块,企业可以确保薪资数据的准确性和及时性,实现薪资发放的自动化管理,提高薪资管理的效率和准确性。通过工资信息管理模块,企业可以更加便捷地管理薪资信息,优化人力资源管理流程,提升企业的整体运营效率。其模块功能结构,具体的结构图如下:
图3-6 工资信息管理模块结构图
3.3数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1概念结构设计
在数据库概念模型设计的时候,一般都采用E-R实体图进行展示,在实体图中可以展示出数据库表中的所有字段名称。下面是整个基于c++的公司人员管理系统中主要的数据库表总E-R实体关系图。
图3-7 数据库总体E-R图
3.3.2逻辑结构设计
在数据库表中我们会看到系统的表名、主键、外键等信息,我们通过数据库表的主键、外键把每个表关联起来,然后在界面中展示,本基于c++的公司人员管理系统的主要的数据库表如下:
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | attendance_clock_in_id | int | 10 | 0 | N | Y | 考勤打卡ID | |
2 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
3 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
4 | job_title | varchar | 64 | 0 | Y | N | 岗位名称 | |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
7 | check_in_date | date | 10 | 0 | Y | N | 打卡日期 | |
8 | clock_in_type | varchar | 64 | 0 | Y | N | 打卡类型 | |
9 | check_in_remarks | varchar | 64 | 0 | Y | N | 打卡备注 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
表department_information (部门信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | department_information_id | int | 10 | 0 | N | Y | 部门信息ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
3 | department_headcount | int | 10 | 0 | Y | N | 0 | 部门人数 |
4 | creation_date | date | 10 | 0 | Y | N | 创建日期 | |
5 | department_location | varchar | 64 | 0 | Y | N | 部门位置 | |
6 | department_introduction | 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_information_id | int | 10 | 0 | N | Y | 员工信息ID | |
2 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
3 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
4 | job_title | varchar | 64 | 0 | Y | N | 岗位名称 | |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | employee_gender | varchar | 64 | 0 | Y | N | 员工性别 | |
7 | employee_phone_number | varchar | 64 | 0 | Y | N | 员工电话 | |
8 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
9 | date_of_employment | date | 10 | 0 | Y | N | 入职日期 | |
10 | employee_remarks | text | 65535 | 0 | Y | N | 员工备注 | |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | employee_users_id | int | 10 | 0 | N | Y | 员工用户ID | |
2 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
3 | job_title | varchar | 64 | 0 | Y | N | 岗位名称 | |
4 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
5 | employee_gender | varchar | 64 | 0 | Y | N | 员工性别 | |
6 | employee_phone_number | varchar | 16 | 0 | Y | N | 员工电话 | |
7 | employee_id | varchar | 64 | 0 | N | N | 员工工号 | |
8 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
9 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | job_information_id | int | 10 | 0 | N | Y | 岗位信息ID | |
2 | job_title | varchar | 64 | 0 | Y | N | 岗位名称 | |
3 | number_of_positions | varchar | 64 | 0 | Y | N | 岗位人数 | |
4 | on_duty_list | text | 65535 | 0 | Y | N | 在岗名单 | |
5 | job_introduction | text | 65535 | 0 | Y | N | 岗位介绍 | |
6 | job_remarks | 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 | 更新时间 |
表notification_announcement (通知公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notification_announcement_id | int | 10 | 0 | N | Y | 通知公告ID | |
2 | announcement_number | varchar | 64 | 0 | Y | N | 公告编号 | |
3 | announcement_title | varchar | 64 | 0 | Y | N | 公告标题 | |
4 | announcement_date | date | 10 | 0 | Y | N | 公告日期 | |
5 | announcement_image | varchar | 255 | 0 | Y | N | 公告图片 | |
6 | announcement_content | 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 | salary_information_id | int | 10 | 0 | N | Y | 工资信息ID | |
2 | employee_users | int | 10 | 0 | Y | N | 0 | 员工用户 |
3 | department_name | varchar | 64 | 0 | Y | N | 部门名称 | |
4 | job_title | varchar | 64 | 0 | Y | N | 岗位名称 | |
5 | employee_name | varchar | 64 | 0 | Y | N | 员工姓名 | |
6 | employee_gender | varchar | 64 | 0 | Y | N | 员工性别 | |
7 | employee_phone_number | varchar | 64 | 0 | Y | N | 员工电话 | |
8 | employee_id | varchar | 64 | 0 | Y | N | 员工工号 | |
9 | salary_month | varchar | 64 | 0 | Y | N | 工资月份 | |
10 | salary_amount | int | 10 | 0 | Y | N | 0 | 工资金额 |
11 | salary_details | text | 65535 | 0 | Y | N | 工资详情 | |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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_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 | | 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 | 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.1员工用户功能模块
4.1.1 用户登录界面
提供员工用户登录功能,确保只有授权的员工用户可以访问系统,保障系统的安全性。用户登录界面如下图所示。
图4-1用户登录界面图
登录的逻辑代码如下所示。
static int Login(Document& doc, Document& query, const Request& req, Response& res, acl::db_handle* db, const char* tableName)
{
std::set<std::string> set = getColType(*db, acl::string().format("SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = '%s'", tableName));
acl::string sql;
std::string username = doc["username"].GetString();
sql.format("select * from `user` where username = '%s';", username.c_str());
const acl::db_row* one = getOneRow(*db, sql);
if (one == NULL) {
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string state((*one)["state"]);
std::string password((*one)["password"]);
std::string user_id((*one)["user_id"]);
std::string tokenstring = user_id + ";" + username + ";" + password;
string token = EncryptionAES(tokenstring);
const char* user_group = (*one)["user_group"];
acl::db_handle* db2 = pool->peek_open();
if (db2 == NULL)
{
FailedJson(res, "peek db2 connection error");
return -1;
}
sql.format("select * from `user_group` where name = '%s';", user_group);
const acl::db_row* one2 = getOneRow(*db2, sql);
if (one2 == NULL)
{
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string source_table((*one2)["source_table"]);
if (source_table.length() > 0) {
sql.format("select * from `%s` where user_id = '%s';", source_table.c_str(), user_id.c_str());
one2 = getOneRow(*db2, sql);
if (one2 == NULL)
{
FailedJson(res, utf8_encode(s2ws("账号不存在!")));
return -1;
}
std::string examine_state((*one2)["examine_state"]);
if (examine_state == utf8_encode(s2ws("未通过"))) {
FailedJson(res, utf8_encode(s2ws("账户未通过审核!")), 70000);
return -1;
}
else if (examine_state == utf8_encode(s2ws("未审核"))) {
FailedJson(res, utf8_encode(s2ws("账户未审核!")), 70000);
return -1;
}
pool->put(db2);
}
4.1.2通知公告管理界面
允许员工查看公司发布的通知公告,包括公司活动、重要通知、政策变动等,确保员工能及时了解公司的最新动态。通知公告管理界面如下图所示。
图4-2通知公告展示界面图
4.1.3工资信息管理界面
提供员工查看个人工资信息的功能,包括工资月份、薪资结构、奖惩情况等,保障员工对个人工资情况的了解。工资信息管理界面如下图所示。
图4-3工资信息管理界面图
提供员工进行考勤打卡的功能,记录员工的上下班时间、迟到早退情况等,方便公司进行考勤管理和工资结算。考勤打卡管理界面如下图所示。
图4-4考勤打卡列表界面图
图4-5考勤打卡添加单界面图
4.2管理员功能模块
4.2.1后台首页界面
管理人员可以查看后台首页、系统用户、通知公告管理、部门信息管理、岗位信息管理、员工信息管理、工资信息管理、考勤打卡管理,并且根据需要进行相应的操作。管理员后台首页界面如下图所示。
图4-6后台首页界面图
4.2.2系统用户界面
基于c++的公司人员管理系统中的管理人员在“系统用户”这一菜单是中可以对员工用户以及管理员进行管控。界面如下图所示。
图4-7系统用户管理界面图
管理员发布、编辑、删除通知公告的功能,确保员工能及时了解公司的最新动态和重要信息。界面如下图所示。
图4-8通知公告管理界面图
4.2.4部门信息管理界面
管理员可以添加、编辑、删除部门信息的功能,确保部门架构的准确性和完整性。
部门信息管理界面如下图所示。
图4-9部门信息管理界面图
4.2.5岗位信息管理界面
管理员可以添加、编辑、删除岗位信息的功能,确保岗位设置的合理性和完整性。岗位信息管理界面如下图所示。
图4-10岗位信息管理界面图
管理员可以查看、重置、删除员工工资信息的功能,包括工资月份、工资金额等,确保工资管理的准确性。工资信息管理界面如下图所示。
图4-11工资信息管理界面图
第5章 系统测试
5.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
基于c++的公司人员管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在基于c++的公司人员管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
5.2系统测试方法
在对基于c++的公司人员管理系统进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让基于c++的公司人员管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个基于c++的公司人员管理系统开发所牵扯的该问题都必须一一解决,提高基于c++的公司人员管理系统的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
用户登录测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除分类测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
删除分类模块 | 分类名:最新通知 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,基于c++的公司人员管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
结论
随着信息技术的飞速发展和互联网的广泛应用,数据管理成为各行各业的核心需求。特别是在公司人员管理领域,一个高效、稳定、用户友好的管理系统显得尤为重要。本文重点探讨了基于C++的公司人员管理系统的设计与实现,旨在满足企业对于员工信息管理的迫切需求。
该系统以Visual Studio为开发平台,运用C++作为主要编程语言,并结合ASP.NET技术,实现前后端的有效交互。为了确保数据的快速访问和高效管理,我们选择了SQL Server数据库作为数据存储和处理的核心。在系统开发过程中,我们深入分析了企业的实际需求,明确了系统的功能模块和性能要求,进行了详细的设计规划,并进行了严格的测试和优化。
该系统实现了员工信息的录入、查询、修改、删除等基本功能,同时提供了员工薪资管理、部门岗位管理等扩展功能。通过友好的用户界面和符合常规逻辑的操作流程,使得用户能够轻松上手,高效完成员工信息的管理工作。此外,系统还具备高度的可扩展性和可维护性,方便企业根据实际需求进行系统的定制和升级。
然而,由于我们在系统开发过程中对部分知识和技术的掌握不够深入,以及开发经验的不足,导致系统在某些方面的功能还不够完善,可能存在一些潜在的问题和不足。因此,我们将继续对系统进行优化和改进,以提高系统的稳定性和实用性。同时,我们也期待更多的专业人士和同行能够提出宝贵的意见和建议,共同推动公司人员管理系统的发展和完善。
谢 辞
本次设计历时3个月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。
经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。
最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。
参考文献
[1]King Y J M .Build AI-Enhanced Audio Plugins with C++[M].Taylor and Francis:2024-01-09.
[2]DeLozier C .How Close Is Existing C/C++ Code to a Safe Subset?[J].Journal of Cybersecurity and Privacy,2023,4(1):1-22.
[3]V. F ,A. V ,P. M , et al.EE317 Microsimulation Model in Obesity: A Feasibility Study Using Object-Oriented C++ Code[J].Value in Health,2023,26(12S):S112-S112.
[4]Zeng G .Performance analysis of parallel programming models for C++[J].Journal of Physics: Conference Series,2023,2646(1):
[5]Déaglán C ,Mel Ó .Energy efficiency of the Visitor Pattern: contrasting Java and C++ implementations[J].Empirical Software Engineering,2023,28(6):
[6]彭昌旺.货运铁路客户关系管理系统的设计与实现[D].北京交通大学,2023.DOI:10.26944/d.cnki.gbfju.2023.001903.
[7]李飞.MTS出海人员动态跟踪管理系统升级研究与实践[J].现代信息科技,2023,7(10):33-36.DOI:10.19850/j.cnki.2096-4706.2023.10.009.
[8]付星月.应急管理作业人员资格考核管理系统的设计[J].集成电路应用,2023,40(05):268-270.DOI:10.19339/j.issn.1674-2583.2023.05.123.
[9]赵敬业.基于卷积神经网络的J企业车间人员定位管理与系统开发[D].中国矿业大学,2023.DOI:10.27623/d.cnki.gzkyu.2023.003004.
[10]崔森,闫国玉,张捷.基于智能脚垫的人员管理系统[J].工业控制计算机,2023,36(03):77-78+81.
[11]李亮,唐红侠.企业铁路施工人员安全管理信息平台的研发与设计[J].信息系统工程,2023,(01):86-88.
[12]俞申亮.港区集中居住人员管理系统的网络安全设计[J].网络安全和信息化,2023,(01):140-142.
[13]赵瑞,黄思怡,韩朝桂,等.新冠疫情下社区人员管理系统的设计与实现[J].现代信息科技,2022,6(24):14-17+22.DOI:10.19850/j.cnki.2096-4706.2022.24.004.
[14]汤琰.基于分层架构模型的医疗机构离退休人员管理系统设计[J].自动化技术与应用,2022,41(12):161-164.DOI:10.20033/j.1003-7241.(2022)12-0161-04.
[15]蒋维,张亮,张源,等.移动定位技术支持下的基建施工作业人员管理系统[J].大众标准化,2022,(23):70-72.
[16]宋文星,贺秦禄,胡海龙,等.基于Android系统的环卫人员管理系统[J].电子测试,2021,(04):83-84+28.DOI:10.16520/j.cnki.1000-8519.2021.04.032.
[17]陈海山.大数据模式下企业外来人员管理系统的应用[J].无线互联科技,2020,17(24):93-94+97.
[18]杨源,阳熹,汪少勇,等.海上风电场智能船舶调度及人员管理系统[J].南方能源建设,2020,7(01):47-52.DOI:10.16516/j.gedi.issn2095-8676.2020.01.007.
[19]陈思健.电信公司外包人员信息管理系统的设计与实现[D].广东工业大学,2019.DOI:10.27029/d.cnki.ggdgu.2019.000485.
[20]赵静,赵金煜,张硕凯.基于BIM-RFID的建筑工地人员管理系统研究[J].价值工程,2019,38(08):12-14.DOI:10.14018/j.cnki.cn13-1085/n.2019.08.004.
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~