# ckck **Repository Path**: xin-xue/ckck ## Basic Information - **Project Name**: ckck - **Description**: 用于提交软件工程小组作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-09-02 - **Last Updated**: 2024-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #1.问题描述 ##1.1项目链接 https://gitee.com/xin-xue/ckck ##1.2题目内容与要求 人事管理系统,是为了迎合现在人们的工作而设计的。随着网络的覆盖面的增广,上网的人们也就越来越多了,人事管理的对象是一个单位或若干单位种的员工的基本信息。这些信息是在变化的,人事管理系统能够为用户提供充足的信息和快捷的查询手段。使用计算机对大事资料进行管理,会给应用者带来很多方便。例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事管理的效率,同时,这也是企业的科学化、正规化管理以及与世界先进管理技术接轨的重要条件。人事管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件。 人事管理系统可以用于支持企业完成劳动人事管理工作,有如下三个方面的目标。 (1)支持企业实现规范化的管理。 (2)支持企业高效率完成劳动人事管理的日常业务。 (3)支持企业进行劳动人事管理及其相关方面的科学决策。 ##1.3需求分析 编写目的: 随着时代的不断的变化,经济的快速前进,带动了各行业公司的迅速发展。国内中小企业4000万家,占企业总数的99%,贡献了中国60%的国内生产总值、50%的税收和80%的城镇就业。但近年来,大量中小企业的管理还处于手工操作阶段,不仅效果不高,还存在诸多不足。要知道公司拥有非常复杂和主要的信息,包括部门信息、岗位信息、员工信息和交流信息,如何安全、高效、廉价地管理这些信息?这家公司一直想扩大业务。随着同一家公司的发展,公司的数量会越来越多。显然,公司的管理已经成为当务之急。公司前期的记录信息基本上是一种专门的纸质记录,然后归档保存。随着同一科学技术的飞速发展,出现了许多具有互联网的计算机。高信息电子技术可以借用高精度、高效率、低消耗的特点。主要的选择是处理大量复杂而重复的信息。近年来,无论是大公司还是小公司,都有一套基于b/S模式的信息管理系统CRM系统,该系统具有多种工作方式,可以对下属部门、岗位、员工、交流等信息进行管理。此外,信息和信息保存在数据库中。记录时间短,相对安全。因此,制度在社会中的地位越来越重要。 #2.概要设计 ##2.1总体关系图 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ##2.2文件结构 后端项目文件: 后端项目文件主要分为Controllers包、Service包、Dao包和main包。 Control包里的项目文件的主要作用是实现前后端数据的连接处理,接收前端发来的请求,转换后发送给Service层,并将从Service层获取的信息返回给前端。 Service包里的项目文件主要作用是连接Controllers层和Dao层,进行函数的封装。 Dao包里面的项目文件的主要作用是后端往数据库发送请求,获取数据库中的数据,并将获取的数据返回给Service层。 具体文件如下图: ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ##2.3系统主要执行逻辑设计 本系统主要执行逻辑如下所示: ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) #3.详细设计 ##3.1用户交互界面设计 ###1.登录界面 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###2.欢迎界面 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###3.部门管理 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###4.岗位管理 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###5.入职管理 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###6.离职管理 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###7.#人事报表#入职报表#离职报表 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ##3.2 功能性需求 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 整体业务流程 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###3.2.1组织单元管理 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 数据描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###3.2.2岗位管理 需求描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 业务流程描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 数据描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###3.2.3员工入职管理 需求描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 业务流程图 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) 业务说明: 员工入职是外部人员进入到系统内部的一个重要入口,通过入职的员工意味着该员工已经被系统所管理。 在员工入职之前必须收集员工基本信息,然后确定员工被分配到哪个部门和哪个岗位上。 数据描述 员工基本信息 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ###3.2.4员工离职管理 需求描述 ![输入图片说明](%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%94%A8%E5%9B%BEimage.png) ##3.3数据库设计 /*岗位表*/ Create table Posts( pid Varchar(20), pname Varchar(20), ptype Varchar(20) not null, pweave Varchar(20), PRIMARY KEY(pid,pname) ); /*部门表*/ Create table Department( did Varchar(20), dname Varchar(20), dtype Varchar(20) not null, dphone Varchar(20) not null, ddate Varchar(20) not null, PRIMARY KEY(did,dname) ); /*入职表*/ Create table employee( eid Varchar(20), ename Varchar(20), egender Varchar(20) not null, eidcard Varchar(20) not null, ebirth Varchar(20) not null, ephone Varchar(20) not null, edepartment Varchar(20) not null, eposition Varchar(20) not null, edate Varchar(20) not null, esource Varchar(20) not null, edegree Varchar(20) not null, PRIMARY KEY(eid,ename) ); create unique index in_empname on employee(ename); create unique index in_empid on employee(eid); /*离职表*/ create table Leavejob( lid Varchar(20), lname Varchar(20), ldepartment Varchar(20) not null, lpost Varchar(20) not null, ldate Varchar(20) not null, lworkdate Varchar(20) not null, lreason Varchar(20) not null, PRIMARY KEY(lid,lname) ); /*离职报表*/ /*新聘报表*/ create view newemp(newid,newdepartment,newpost,newname,newgender,newdate,newdegree) AS select eid,edepartment,eposition,ename,egender,edate,edegree from employee order by eid ASC; /*离职报表*/ create view leaveemp(leid,ledepartment,lepost,lename,leleavedate,lereason) AS select lid,ldepartment,lpost,lname,ldate,lreason from leavejob order by lid ASC; !!!!!!!!!!!! /*人事报表*/ /*人事月报*/ create view emp(部门名,月初人数,月末人数,新人入职人数,离职人数,研究生,大专,高中及以下) AS select emp_department,count(emp_id) where eid = '00' union all select count(emp_id), DELETE from employee where eid = '00'; !!!!!!!!! /*触发器*/ create or replace function leave() returns trigger as $$ begin DELETE from employee where employee.eid = new.lid; return new; end; $$ language plpgsql; create trigger del_while_insert after insert on leavejob for each row execute procedure leave(); drop trigger del_while_insert on leavejob; drop function leave(); ##3.4核心算法设计 ###1.堆排序: 是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 ###2.哈希算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更 改该段落的一个字母,随后的哈希都将产生不同的值。要找到撒列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。 ###3.二分查找 二分查找算法 ,也称 折半搜索算法、对数搜索算法 ,是一种在 有序数组 中查找某一特定元素的搜索 算法 。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。 #4总结感言 ###辛雪: 本次项目是我进入本专业以来第一次进入的两人以上项目组,第一次完成了从软件立项开始的软件开发。通过一系列文档的编写养成了平时文档规范化的习惯,通过一次次会议体验到了小组合作的重要性。从0到软件的诞生,乍听起来是十分困难的事情,但将大任务逐渐拆分成一个个阶段,再将一个个阶段拆分成小任务分配给小组成员,大家互相合作,用自身长处弥补彼此的短处,曾经认为不可能完成的任务好像也没有那么令人生畏。在项目进行时对课本内容有了更好的理解,理论与实践相结合比只阅读书本要有益的多。这次项目的完成将会对我以后参与项目组有很大的帮助。 ###刘德美: 通过本次软件工程项目,我学会了制作一个软件的完整流程。之前我以为实现一个软件只需要编写代码,通过上软件工程课,我才知道还有很多比编写代码更重要的部分。我们小组在完成项目的过程中用了很多时间来写需求分析等文档,完善文档就是对软件功能的完善。根据需求分析来编写代码就会更有条理。有时候上课讲过的东西,需要自己动手实践才能理解。比如数据流图的绘制。在课上,我仿佛听明白了,但是其实还是一点也不会。在小组成员的帮助下以及自己画了很多个图之后,我才明白了怎样画数据流图才是有效的。在本次项目中,我也感受到了团队合作的重要性。很多困难的任务在项目经理的带领下,被分成相对容易的几部分给每个人,看上去不可能完成的任务就在团队合作下完成了。通过这次实验,我又学到了一些Java的知识,也学会了怎样写好文档。 ###刘妍杉: 软件工程的学习已接近尾声,通过这半学期的学习,我也受益良多。整本书内容逻辑清晰明了,第一章从整体分析软件工程这门学科的发展和所处的社会环境,接着后面几章深入分析了软件开发过程和模式,软件项目管理,计算机工程,需求分析,结构化分析建模以及基于UML面向对象分析等。 老师的多元化教课也十分有效,让我们边学习理论的同时投身实践。在课程初期,老师就给我们布置了最后的实验作业并自行组队,随着理论课程的推进,我们的实验也一步步走向成熟,学以致用,不至于学理论的时候不知所云,做实验的时候又无从下手。在我看来,软件工程更多的是一种思想,它教我们如何分析处理问题,最后的实验也体现了这种思想,把实验的流程细节通过图示,表格等一一罗列出来,使我们的思维更加清晰,做实验的时候按照计划来,循序渐进。我们小组也通过不断查询资料,修改文档,共同合作完成了最后的停车场管理系统。 感谢王颖老师这半学期的悉心教导与陪伴,教给我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容,我们毕业之后,进行软件开发工作,也要从需求分析开始,有条理的进行各种工作直到产品的出炉。 ###韦定访:   经过一个学期的软件工程的学习,我学到了很多新的知识,也对于一个软件的产生有了新的不一样的认知。首先我从定义上从新认识了软件,软件的特性以及软件的演化过程。最重要的是我了解并掌握了一个软件开发的全部过程,在学软件工程这门课之前,我认为以个软件的开发最重要的是编码的过程,学过这门课之后才了解到编码在一个软件的开发过程中只占了一小部分,软件的开发也不只是有编码这一个重要的步骤。通过需求分析的学习我们了解了一个软件项目如何开始,通过结构化分析、设计和测试的学习学习到了如何为一个软件建立模型,更是通过后续的学习了解到了软件的测试与维护,这些都是在一个软件的开发过程中不可缺少的重要步骤。通过小组作业我真切的体会到了一个软件系统开发的全过程,通过与小组成员的协作共同完成了我们小组的项目工程,这不仅是一个提高自己能力的过程,也是能为今后的学习以及工作打下坚实的基础的过程,我非常的感谢这次软件工程的学习,让我有这么多的收获和进步。 #5项目分工 前端:刘妍杉、韦定访 后端:刘德美、辛雪 数据库:刘德美、辛雪 测试:刘妍杉、韦定访 项目报告:刘妍杉、韦定访