职工信息管理系统课程设计.docx
《职工信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
![职工信息管理系统课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/30/8d7dbf38-80f3-4fda-8103-2ee642df3313/8d7dbf38-80f3-4fda-8103-2ee642df33131.gif)
职工信息管理系统课程设计
职工信息管理系统课程设计
D
职工信息管理系统
1.前言
1.1项目背景
职工信息管理系统是一个企业单位不可绝少的部分,它的内容对于企业的决策者和管理者来说都是至关重要的,所以职工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如效率低,保密性差,另外时间一长将产生大量的文件和数据,这对于信息的查找,更新和维护都带来不少困难。
当今社会,信息迅速膨胀,随着各个公司的规模扩大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询,等登记和修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力,物力来进行信息管理。
随着计算机级数的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。
而作为计算机应用的一部分,使用计算机对职工进行信息管理,具有手工管理所无法比拟的优点。
例如检查迅速,查询方便,可靠性高,存储量大,保密性好,寿命长,成本低等。
这些优点能够极大地提高职工信息管理的效率,也是公司的科学化,正规化管理与世界接轨的重要条件,职工信息管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且以达到良好的效果。
1.2问题描述
根据题目要求,由于职工信息是存放在文件中所以应提供文件的输入,输出,查询等操作;在程序中需要浏览职工的信息,应提供显示,查找,更改,删除等功能;另外还提供键盘式选择菜单实现功能选择。
1.3详细要求
(1)问题说明
设计一个简单的职工信息管理系统,按照课程设计的要求,实现对职工信息的添加,查询,修改以及删除操作。
(2)输入要求
由信息管理员输入现有职工和新增职工的以下信息:
姓名(可以重复),工作证号,身份证号,出生日期,家庭住址,联系电话,工资数等信息,并且注意输入时姓名为字符串形式,性别为字符,其余的为长整型数字。
(3)输出要求
系统管理员根据公司的人员流动情况,选择系统提供的各项功能进行操作,并输出相应的结果。
1.4问题分析
(1)具体要求
简单的职工信息管理系统主要实现以下功能:
①新增一名职工:
将新增职工对象按姓名存入职工管理文件中。
②删除一名职工:
从职工管理文件中删除一名职工对象。
③查询:
从职工管理文件中查询符合一些条件的职工。
④修改:
检索某个职工对象,对其某些属性进行修改。
要求:
职工信息包括:
职工姓名、工作证号、身份证号、出生日期、家庭住址、联系电话、工资数等。
(2)实现提示
①有键盘输入职工对象,以文件方式保存。
程序执行时先将文件读入内存。
②对职工对象进行增,删,查询,修改等操作。
2.概要设计
2.1系统总体设计
2.1.1功能描述
①员工信息管理
实现对员工基本信息的管理,如员工基本信息的添加,查询,修改以及删除,员工基本信息主要包括:
姓名,身份证号,工作证号,电话,住址等基本信息情况,可在系统软件中快速查询得到。
②工资管理
包括工资变动,分配及其查询。
③系统管理
主要是对用户和密码的管理。
包括添加系统用户信息及密码的修改,系统启动后首先要做的就是用户登录,若不登陆系统,所有功能都无法使用。
只有用户登陆系统后才可以根据用户权限进行一定的操作。
2.1.2系统操作功能图
2.2系统详细设计
2.2.1数据库设计
目前设计数据库主要采用的是以逻辑数据库设计和物理数据库设计为核心的规范设计方法。
其中逻辑数据库是根据用户要求和特定数据库管理系统的具体特点,以数据库设计理论为依据,设计数据库的全局逻辑结构和每个用户的局部逻辑结构。
物理数据库设计是在逻辑结构确定之后,设计数据库的存储结构及其他实现细节。
各种规范设计方法在设计步骤上存在差别,各有不同。
对职工信息管理系统的分析是建立在UML系统模型基础上的,这里给出UML图分析及其分析。
实际关系图的分析结果非常复杂,一般情况下使用从简到烦的方式进行设计,首先从大的方面设计出各个实体之间的关系,然后在这个关系的基础上进行细化。
UML系统模型图
职工管理系统的实体关系简单图
创建数据库:
列号
数据类型
长度
是否允许为空
姓名
0
身份证号
工作证号
出生日期
家庭住址
联系电话
工资
2.2.2系统主界面设计
打开程序软件首先进入密码页面:
输入密码,进入操作系统主页面:
上图即为职工信息管理系统主页面,根据用户需要,选择操作。
2.2.3模块流程图
①添加模块
3.系统测试
3.1测试举例
举例职工张三的信息:
姓名:
张三;
身份证号:
1234567890;
工作证号:
0987654321;
出生日期:
19931010;
家庭住址:
昌北双港东大街1180号;
联系电话:
187****2008;
工资:
100000;
3.2测试项目及方法
测试职工张三信息的添加,显示,查询,修改。
①添加职工张三信息
进入系统,输入密码123456,进入系统操作页面输入A,添加信息,如下:
确认添加信息,输入Y,进入页面添加信息,进行操作:
输入Y,确认输入后的信息,张三信息添加成功!
②显示职工张三信息
进入系统,如添加信息第一步,输入S,显示所有职工信息,因为只添加了职工张三的信息所以只显示张三的信息,如下:
③查找职工张三的信息
进入操作页面,输入F,进入如下页面:
输入职工张三的姓名,即可查询得其职工信息;
④删除职工张三的信息
进入系统后输入D,进入修改信息页面,输入所需修改职工姓名张三,然后重新输入其要求的新信息,并保存,如下
4.课程设计总结
4.1该课程设计的特点及不足
此课程设计拥有密码保护,保密性高,并且背景颜色可以变换,增加美感,操作方便且简易,但是该软件所保存的信息不多,如员工的考勤情况,惩罚情况,每个月工资的提成与奖金都没有覆盖,所以该程序所存信息不足,有待改善,但该程序适合现阶段面向对象技术初学者的练习作业,能有效的反映出学生的学习情况及其动手能力,也能让学生自己检测出本学期自己所获得的知识掌握情况,是一向很好的课程设计项目。
4.2心得体会
在本系统的开封设计中,由于组是初次开发软件,在知识,经验方面都存在着不足。
另外这个开发的过程比较仓促,因此留下了一些不足与缺陷,因为对职工信息管理的流程不太熟悉,在分析时未能做到完善。
尽管如此,我组还是学到了很多东西。
通过开发这个系统,我组掌握了项目基本开发过程,用到的知识巩固了我组对C++语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学习了设计系统的思维方法,以及同学们之间相互帮助的精神。
这次课程设计也同时让我个人认识到了自己知识的不足,并让我对C++有了全新的认识,也对其产生了浓厚的兴趣,要好好学习C++,充实自己。
为自己加油!
为自己组加油!
5.小组成员分工说明
本组是11机械电子
(2)班第一小组,成员有王永莎,赵晓燕,杨锦其,胡浩然,丁世成,傅旭海。
分工如下:
组长:
王永莎,负责分派任务,督促小组成员完成自己任务。
并完成大量编写任务;
赵晓燕:
编写UML图;
胡浩然:
编写代码,编写UML图;
杨锦其,丁世成,傅旭海:
编写添加,显示,修改,查找四个模块的流程图及其任务描述。
6.附件(源程序)
#include
#include
#include
#include
usingnamespacestd;
classCrew{
public:
voidadd();
voidshow();
voidcheck();
voidchange();
private:
stringname;//职工姓名
stringid1;//工作证号
stringid2;//身份证号
stringbirthday;//出生日期
stringaddress;//家庭住址
stringtelphone;//联系电话
stringsalary;//工资
staticintaccount;
};
intCrew:
:
account=0;
Crewstiff[256];
voidCrew:
:
add(){
stringname,id1,id2,birthday,address,telphone,salary;
cout<<"请输入职工的姓名:
";
cin>>name;
cout<<"请输入职工的身份证号:
";
cin>>id1;
cout<<"请输入职工的工作证号:
";
cin>>id2;
cout<<"请输入职工的出生日期:
";
cin>>birthday;
cout<<"请输入职工的家庭住址:
";
cin>>address;
cout<<"请输入职工的联系电话:
";
cin>>telphone;
cout<<"请输入职工的工资:
";
cin>>salary;
charc;
cout<<"你是否确认输入的信息?
(Y/N)";
cin>>c;
if(toupper(c)=='Y'){
cout<";
stiff[Crew:
:
account].name=name;
stiff[Crew:
:
account].id1=id1;
stiff[Crew:
:
account].id2=id2;
stiff[Crew:
:
account].birthday=birthday;
stiff[Crew:
:
account].address=address;
stiff[Crew:
:
account].telphone=telphone;
stiff[Crew:
:
account].salary=salary;
Crew:
:
account++;
}
else
cout<<"保存信息操作取消!
";
}
voidCrew:
:
show(){
cout<<"姓名"<<"身份证号"<<"工作证号"<<"出生日期";
cout<<"家庭住址"<<"联系电话"<<"工资";
cout<for(inti=0;i<=Crew:
:
account;i++)
{
cout<cout<cout<cout<cout<cout<cout<cout<}
}
voidCrew:
:
check(){
cout<<"请输入你要查找的职工姓名:
";
stringname;
cin>>name;
intflag=1;
for(inti=0;i<=Crew:
:
account;i++){
if(stiff[i].name==name)
{
flag=0;
cout<<"姓名"<<"身份证号"<<"工作证号"<<"出生日期";
cout<<"家庭住址"<<"联系电话"<<"工资";
cout<cout<cout<cout<cout<cout<cout<cout<cout<}break;
}
if(flag)
cout<<"你输入的职工不存在!
";
}
voidCrew:
:
change(){
cout<<"请输入你要修改的职工姓名:
";
stringname1;
cin>>name1;
intflag=1;
for(inti=0;i<=Crew:
:
account;i++)
{
if(stiff[i].name==name1)
{
stringname,id1,id2,birthday,address,telphone,salary;
cout<<"请重新输入"<"<cout<<"姓名";
cin>>name;
cout<<"身份证号";
cin>>id1;
cout<<"工作证号";
cin>>id2;
cout<<"出生日期";
cin>>birthday;
cout<<"家庭住址";
cin>>address;
cout<<"联系电话";
cin>>telphone;
cout<<"工资";
cin>>salary;
cout<<"你确认输入后的信息吗?
(Y/N)";
charc;
cin>>c;
if(toupper(c)=='Y')
{
stiff[i].name=name;
stiff[i].id1=id1;
stiff[i].id2=id2;
stiff[i].birthday=birthday;
stiff[i].address=address;
stiff[i].telphone=telphone;
stiff[i].salary=salary;
cout<<"修改信息完成!
";
}
else
cout<<"信息修改取消!
";
flag=0;
}
}
if(flag)
cout<<"你要修改的职工不存在!
";
}
intmain(intargc,char*argv[]){
for(inti=1;i<28;i++)
cout<<"\003";
cout<<"欢迎访问职工信息管理系统";
for(intj=1;j<28;j++)
cout<<"\003";
cout<cout<<"请输入您的密码(0-9):
";
while
(1)
{
ints1=123456;
ints2;
cin>>s2;
if(s2!
=s1)
cout<<"密码错误请重新输入:
";
else
break;
}//密码的判断
system("cls");//清屏函数
system("color5A");//改变输出窗口颜色的函数
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职工信息(F)\003"<cout<<"\0034.修改职工信息(D)\003"<cout<<"\0035.退出系统(E)\003"<cout<<"";
for(intm=1;m<25;m++)cout<<"\003";
cout<while
(1){
cout<<"请输入你要进行的操作:
";
charch;
cin>>ch;
switch(toupper(ch))
{
case'A':
{
Crewg;
cout<<"您是否要添加职工信息(Y/N)?
";
charc;
cin>>c;
if(toupper(c)=='Y'){
g.add();
system("pause");
system("cls");//清屏函数
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职工信息(F)\003"<cout<<"\0034.修改职工信息(D)\003"<cout<<"\0035.退出系统(E)\003"<cout<<"";
for(intm=1;m<25;m++)cout<<"\003";
cout<}
else
break;
}break;
case'S':
{
Crewg;
cout<<"您是否要显示所有职工信息(Y/N)?
";
charc;
cin>>c;
if(toupper(c)=='Y'){
g.show();
system("pause");
system("cls");//清屏函数
system("color2A");
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职工信息(F)\003"<cout<<"\0034.修改职工信息(D)\003"<cout<<"\0035.退出系统(E)\003"<cout<<"";
for(intm=1;m<25;m++)cout<<"\003";
cout<}
else
break;
}break;
case'F':
{
Crewg;
cout<<"您是否要查找职工信息(Y/N)?
";
charc;
cin>>c;
if(toupper(c)=='Y'){
g.check();
system("pause");
system("cls");//清屏函数
system("color1A");
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职工信息(F)\003"<cout<<"\0034.修改职工信息(D)\003"<cout<<"\0035.退出系统(E)\003"<cout<<"";
for(intm=1;m<25;m++)cout<<"\003";
cout<}
else
break;
}break;
case'D':
{
Crewg;
cout<<"您是否要修改职工信息(Y/N)?
";
charc;
cin>>c;
if(toupper(c)=='Y'){
g.change();
system("pause");
system("cls");//清屏函数
system("color3A");
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职工信息(F)\003"<cout<<"\0034.修改职工信息(D)\003"<cout<<"\0035.退出系统(E)\003"<cout<<"";
for(intm=1;m<25;m++)cout<<"\003";
cout<}
else
break;
}break;
case'E':
{
cout<<"退出系统(Y/N)?
";
charc;
cin>>c;
if(toupper(c)=='N'){
system("pause");
system("cls");//清屏函数
system("color4A");
cout<<"请选择操作"<cout<<"";
for(intn=1;n<25;n++)cout<<"\003";
cout<cout<<"\0031.添加职工信息(A)\003"<cout<<"\0032.显示所有职工信息(S)\003"<cout<<"\0033.查找职