C++课程设计 员工管理.docx
《C++课程设计 员工管理.docx》由会员分享,可在线阅读,更多相关《C++课程设计 员工管理.docx(24页珍藏版)》请在冰豆网上搜索。
C++课程设计员工管理
淮阴工学院
C++程序设计课程设计报告
选题名称:
员工管理
系(院):
计算机工程学院
专业:
软件工程
班级:
软件1111
姓名:
周淼学号:
1111315217
指导教师:
于长辉
学年学期:
2011~2012学年第1学期
2012年1月6日
设计任务书
课题
名称
员工管理
设计
目的
1.调研并熟悉幻方的基本功能、数据流程与工作规程;
2.学习与幻方相关的参考资料和基于VC++集成环境的编程技术;
3.通过实际编程加深对基础知识的理解,提高实践能力;
4.学习开发资料的收集与整理,学会撰写课程设计报告。
实验
环境
1.微型电子计算机(PC);
2.安装Windows2000以上操作系统,VisualC++6.0开发工具。
任务
要求
1.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;
2.在第16周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;
3.本课题主要实现添加、修改、删除、读出、写入、查找、排序等。
4.结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。
工作进度计划
序号
起止日期
工作内容
1
2012.1.2~2012.1.3
在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。
2
2012.1.3~2012.1.4
设计总体方案,构建、绘制流程框图,编写代码,上机调试。
3
2012.1.4~2012.1.5
测试程序,优化代码,增强功能,撰写设计报告。
4
2012.1.5~2012.1.6
提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。
指导教师(签章):
年月日
摘要:
随着经济的快速发展,一个好的员工管理系统在企业及用人单位扮演者重要角色。
因此,本次我设计的课题是员工管理系统。
为了设计一个功能完善的的员工管理系统,我查阅图书,搜集了许多有关C++方面的资料,学会了switch语句的使用、全局对象数组(Person[100])的定义、函数调用机制的实现等诸多技能,并且将一部分课外的知识运用于我的代码,例如:
使程序运行稍作停顿(Sleep(1000))。
在具体编程时,我没有使用链表结构,而是直接定义了一批全局对象数组,把员工信息通过函数储存在定义的全局对象数组中。
也因为这样,使得编译时候错误发生的减少了很多。
然而,在初步设计好该系统后,我发现这样的系统只能储存有限数目的员工信息,无法做到员工信息储存的不限量。
但是考虑到实际应用,只要定义的全局对象数组达到200个就会足够企业使用。
关键词:
员工管理;全局对象数组;编程经验
目录
1课题综述-5-
1.1课题来源-5-
1.2课题意义-5-
1.3预期目标-5-
1.4面对的问题-5-
1.5需要解决的关键技术-5-
2总体方案-5-
3系统设计-5-
3.1.1算法描述-6-
3.1.2实现方法-6-
3.1.3详细设计-7-
3.2员工管理系统程序模块设计-8-
4代码编写-8-
5程序调试-21-
6问题与解决办法-22-
总结-23-
致谢-24-
参考文献-25-
1课题综述
1.1课题来源
现代社会经济发展迅速,不同类型人才在公司企业间的流动十分频繁,传统的纸质员工管理系统已不适合现阶段的实际情况。
为此,必须通过设计新的更为便捷、操作简单、不受时空限制的员工管理系统来管理员工信息。
否则既浪费时间,又不能适应经济社会发展。
1.2课题意义
设计一款新的员工管理系统,在实现系统添加、删除、查找、修改保存、排序等功能的同时,既锻炼了我实践操作能力,又增加了我对C++语言的熟悉程度,同时还初步了解了公司企业对员工的管理制度、增加了团队协作能力。
1.3预期目标
设计一个员工管理系统:
①定义一组全局对象数组;
②对部分全局对象数组进行操作;
③实现数据的输入、输出、查找、修改、删除、排序等。
1.4面对的问题
对VC环境下的系统编制程序不够熟悉,有的功能无法找到合适的代码,对部分临界数据的处理不够精确,代码的注释不能让他人完全理解。
1.5需要解决的关键技术
对部分全局对象数组进行操作,不影响其他已储存的数据。
同时,要设计相应程序实现把数据储存在系统中,即使从新打开系统也要让数据存在。
使用switch()语句实现函数的调用,最终实现系统的协调运作。
2总体方案
使用C++语言设计员工管理系统,通过函数调用方式使其能完成对员工的信息管理,对员工信息的任意添加(add())、查询(find())、删除(dele())、修改(modify())、保存(save())及排序(index())
3系统设计
3.1.1算法描述
在主界面上选择相应操作项,通过运用switch语句来判断相应指令,实现对以下功能的选择1:
add()添加员工信息2:
modify()修改员工信息3:
dele()删除员工信息4:
index()排序员工信息5:
find()查询员工信息6:
save()保存员工信息。
并用六个函数来实现各个部分的功能:
voidadd();voidfind();voiddele();voidmodify();voidsave()和voidindex()。
在执行完每一次数据操作后,通过判断程序,来判断是否返回等。
如返回,则操作同开始,否则执行其他操作。
3.1.2实现方法
共同的基类person包含如下信息:
classPerson
{
public:
Person(){}//构造函数
voidsetPerson(char*num1,char*name1,char*sex1,char*birth1,char*tel1,char*salary1);//成员数据的修改函数;
friendvoidadd();//声明为Person的友元,函数功能为:
1.员工信息输入
friendvoidmodify();//声明为Person的友元,函数功能为:
2.员工信息修改
friendvoiddele();//声明为Person的友元,函数功能为:
3.员工信息删除
friendvoidindex();//声明为Person的友元,函数功能为:
4.员工信息排序
friendvoidfind();//声明为Person的友元,函数功能为:
5.员工信息查找
friendvoidsave();//声明为Person的友元,函数功能为:
6.员工信息保存
friendvoidread();
private:
//声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量
charnum[15];
charname[15];
charsex[5];
charbirth[15];
chartel[15];
charsalary[15];
在主函数中运用Switch(choice)选择需要的功能:
switch(choice)
{
case1:
add();//1.员工信息输入
break;
case2:
modify();//2.员工信息修改
break;
case3:
dele();//3.员工信息删除
break;
case4:
index();//4.员工信息排序
break;
case5:
find();//5.员工信息查找
break;
case6:
save();//6.员工信息保存
break;
default:
run=0;
break;
}
3.1.3详细设计
1.员工档案管理系统构建框架
◆1、添加员工信息
◆2、修改员工信息
◆3、删除员工信息
◆4、员工信息排序
◆5、查找员工信息
◆6、保存员工信息
◆7、退出管理系统
3.2员工管理系统程序模块设计
模块一:
头文件,变量定义,函数的声明
对系统所使用的变量进行定义,对函数进行声明
模块二:
员工信息的添加
voidadd()//1.添加员工信息
模块三:
员工信息修改
voidmodify()//2.员工信息修改
模块四:
员工信息删除
voiddele()//3.员工信息删除
模块五:
员工信息排序
voidindex()//4.员工信息排序
模块六:
员工信息查找
voidfind()//5.员工信息查找
模块七:
员工信息保存
voidsave()//6.员工信息保存
4代码编写
#include
#include
#include
#include
#include
#include//字符转浮点atof()
usingnamespacestd;
intNUM=0;//计数员工的个数
intsaveCtrl=1;//该变量用于检测数据的修改后是否保存的情况
classPerson
{
public:
Person(){}//构造函数
voidsetPerson(char*num1,char*name1,char*sex1,char*birth1,char*tel1,char*salary1);//成员数据的修改函数;
friendvoidadd();//1.员工信息输入
friendvoidmodify();//2.员工信息修改
friendvoiddele();//3.员工信息删除
friendvoidindex();//4.员工信息排序
friendvoidfind();//5.员工信息查找
friendvoidsave();//6.员工信息保存
private:
//声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量
charnum[15];
charname[15];
charsex[5];
charbirth[15];
chartel[15];
charsalary[15];
};
PersonPer[500];//声明全局Person对象数组
voidPerson:
:
setPerson(char*num1,char*name1,char*sex1,char*birth1,char*tel1,char*salary1)
{
strcpy(num,num1);
strcpy(name,name1);
strcpy(sex,sex1);
strcpy(birth,birth1);
strcpy(tel,tel1);
strcpy(salary,salary1);
}
voidmenu()//主菜单
{
cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<<"请选择(0~6):
";
cout<:
left)<<"请输入选择项(0~6):
"<}
voidadd()//1.添加员工信息
{charnum[15];//编号
charname[15];//姓名
charsex[5];//性别
charbirth[15];//生日
chartel[15];//电话
charsalary[15];//工资
charp;//用于选择判断
system("cls");//清屏
while
(1)//控制信息添加多次的循环
{
cout<<"输入员工信息:
"<cout<<"编号"<<"姓名"<<"性别"<<"生日"<<"电话"<<"工资"<cin>>num;
cin>>name>>sex>>birth>>tel>>salary;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
cout<<"该编号的已经存在"<system("pause");//按任意键继续……
return;
}
}
p=0;
cout<<"请选择:
"<<'\t'
<<"1.确认添加数据"<<'\t'
<<"2.重新输入"<<'\t'
<<"3.返回主菜单"<cin>>p;//控制是否确认添加数据
if(p<'1'||p>'3')
{cout<<"没有这个选项!
"<<'\n'
<<"请重新输入:
"<continue;
}
if(p=='2')//重新输入数据
{
continue;
}
if(p=='3')//返回主菜单
{
return;
}
Per[NUM].setPerson(num,name,sex,birth,tel,salary);
cout<<"添加数据成功!
"<saveCtrl=0;
NUM++;
cout<<"是否返回主菜单(y/n)";
cin>>p;//返回主菜单
if(p=='y'||p=='Y')
{
return;
}
}
}
voidmodify()//2.员工信息修改
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"没有任何员工记录。
"
<<"即将返回主菜单";
Sleep(1000);
return;
}
charnum[15];
cout<<"编号"<<"姓名"<<"性别"<<"生日"<<"电话"<<"工资"<for(inti1=0;i1{
cout<<<<<<}
cout<<"请输入要修改的员工的编号:
";
cin>>num;
intchoice;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
do{
system("cls");//清屏
cout<<"编号"<<"姓名"<<"性别"<<"生日"<<"电话"<<"工资"<cout<<<<<<cout<cout<cout<cout<cout<cout<cout<cout<cout<<"请选择(0~7):
";
cout<<"请选择:
";
cin>>choice;
if(choice<0||choice>7)
continue;
switch(choice)
{
case1:
cout<<"请输入新的员工编号:
";
cin>>Per[i].num;
saveCtrl=0;
break;
case2:
cout<<"请输入新的员工姓名:
";
cin>>Per[i].name;
saveCtrl=0;
break;
case3:
cout<<"请输入新的员工性别:
";
cin>>Per[i].sex;
saveCtrl=0;
break;
case4:
cout<<"请输入新的员工生日:
";
cin>>Per[i].birth;
saveCtrl=0;
break;
case5:
cout<<"请输入新的员工电话:
";
cin>>Per[i].tel;
saveCtrl=0;
break;
case6:
cout<<"请输入新的员工工资:
";
cin>>Per[i].salary;
saveCtrl=0;
break;
case7:
return;
}
}while(choice<7);
}
}
}
voiddele()//3.员工信息删除
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"没有任何员工记录。
"
<<"即将返回主菜单"<Sleep(1000);
return;
}
cout<<"编号"<<"姓名"<<"性别"<<"生日"<<"电话"<<"工资"<for(inti1=0;i1{if(Per[i1].num!
=NULL)
cout<<<<<<}
charnum[15];
Persontemp;
cout<<"请输入要删除的员工的编号"<cin>>num;
for(inti=0;i{
if(strcmp(Per[i].num,num)==0)
{
temp=Per[i];
for(intj=i;jPer[j]=Per[j+1];
NUM--;
break;
}
}
cout<<"删除成功!
"<system("pause");//按任意键继续……
saveCtrl=0;
}
voidindex()//4.员工信息排序
{
system("cls");//清屏
if(NUM==0)//判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数
{
cout<<"没有任何员工记录。
"<cout<<"即将返回主菜单"<Sleep(1000);
return;
}
Persont;
intk=0;
intchoice;
cout<<"请选择:
"<<'\t'
<<"1.按编号排序"<<'\t'
<<"2.按工资排序"<cin>>choice;
if(choice==1)
{for(inti=0;i{k=i;
for(intj=i+1;jif(atof(Per[k].num)>atof(Per[j].num))
k=j;
t=Per[k];
Per[k]=Per[i];
Per[i]=t;
}
cout<<"按员工的编号排序结果"<}
elseif(choice==2)
{
for(inti1=0;i1