1、 面向对象程序设计课程设计报告 企业人事管理系统 目录 一、 软件需求分析 二、 总体方案设计 三、 详细设计 四、 程序的调试与运行结果说明 五、 课程设计总结 六、 附录 一、软件需求分析 一、需求分析 1、 实现人员信息的增、删、改操作,并实现按姓名、工号进行查询功能,按照部门、工资统计、排序功能能够实现人员的部门间的调动功能 2、 源文件采用多文件的工程结构 3、 数据存储采用多文件形式 4、 标准的C++输入输出 二、 操作手册 运行程序后,按
2、1键进入系统,要实现多种操作只需按照功能菜单上的提示输入相应的数字选择即可 二、总体方案设计 一、系统总共能模块 显示记录 查找记录 按编号 按姓名 按编号 按姓名 追加信息 新建记录 按编号 按姓名 企业人员信息表 企业人员信息表 二、定义的函数及说明 void deldate() //删除指定的单个员工的资料 void adperson() //将输入的资料赋值给相映的数据 void pprintn() //输出所有员工的资料 people *que
3、ry() //将系统中的编号与输入的编号比较 people *qu() //将系统中的姓名与输入的姓名比 void disp() //输出所有员工的资料 void disp2() //输出指定的单个员工的资料 void peopledata(); //主要功能实现函数 void main() //主函数 void jiemian1() //界面1,进入程序时输出 void jiemian3() //界面3,程序结束后输出 qiye() //qiye类的构
4、造函数 三、 详细设计 以下为我完成的具体功能函数及函数的详细分析和所用算法: 1、 void deldate()函数 该函数是删除指定的单个员工的资料,以后在其他程序模块如删除、修改等都需要调用 void deldate() { kg=1; } 2、void adperson()函数 该函是数将输入的资料赋值给相映的数据 void people::addperson(int b,int a,long int t,char *na,char *dizhi,char *zhiwei) { kg=0; bh=b; s
5、trcpy(name,na);
strcpy(adr,dizhi);
strcpy(duty,zhiwei);
ID_num=a;
salary=t;
}
3、void pprintn()函数
该函数是输出所有员工的资料的函数在如查询、修改等功能模块中通过调用该函数可实现显示所有员工资料的功能
void pprintn()
{
if(Getkg()==0)
cout< 6、y< 7、i;}
}
return NULL;
}
5、people *qu()函数
该函数实现的是将系统中的姓名与输入的姓名比较功能在新增、删除和修改模块中调用该函数可实现判断该员工是否已经存在而在查询模块在调用该函数可实现在已存在的记录中查找该成员的作用
people *qw(char na[])
{
for(int i=0;i<=top;i++)
{
if(strcmp(man[i].GetName(),na)==0&&man[i].Getkg()==0)
{
return &man[i];in=i;
8、 }
}
return NULL;
}
5、 void disp()函数
该函数在新增模块中使用,该函数通过循环判断输出所有员工资料
void disp()
{
for(int i=0;i<=top;i++)
{
if(man[i].Getkg()==0)
if(i%5==0)
cout< 9、
cout< 11、 cout<<" 2:显示"< 12、< 13、 cout<<"1.新建"< 14、
cin>>chi;
switch(chi)
{
case 'Y'|'y':clear();
break;
case 'N'|'n':goto loop_1b;
default:cout<<"输入错误,请重新输入!"< 15、 }
if(ch1!='1'&&ch1!='2')
{
cout<<"输入错误,请重新输入!"< 16、bh);
if(w!=NULL)
cout<<"错误:该编号资料已存在,请重新输入。"< 17、<"职位:"< 18、
cout<<"是否还要继续录入(Y/N)?";
cin>>ch;
}
while(ch=='y'||ch=='Y');
loop_1b:
break;
case '2':
cout< 19、位"< 20、1.按编号查找:"< 21、t<<"该员工不存在!"< 22、 break;
case '2':
cout<<"请输入姓名:";
cin>>na;
w=qu(na);
if(w==NULL)
{
cout<<"该员工不存在!"< 23、etw(10)<<"姓名"< 24、< 25、
cout<<"2.按员工姓名修改:"< 26、 27、w!=NULL)
cout<<"该编号资料已存在,请重新输入。"< 28、cin>>dutyt;
cout<<"工资:"< 29、 cin>>ch;
}
while(ch=='y'||ch=='Y');
break;
case '2':
cout<<"请输入员工姓名:";
cin>>peoplen;
w=qw(peoplen);
if(w==NULL)
{
cout<<"该员工资料不存在!"< 30、w();
w->pprintn();
w->deng();
do
{
do
{
cout< 31、 }
while(w!=NULL);
cout<<"请输入员工姓名:"< 32、ndl;
cin>>k;
cout<<"籍贯:"< 33、h=='Y');
default:
{
cout<<"输入错误,请重新输入!"< 34、\t'<<"★欢迎进入删除系统!★"< 35、
}
w->deldate();
cout<<"删除成功"< 36、
cout<<"不删除!"< 37、
}
}
8、void jiemian1()函数
界面1,进入程序时输出
void jiemian1()
{
cout< 38、 cout<<"\n"<<"\n"<<"\n"<<"\n";
}
9、void jiemian3()函数
界面3,程序结束后输出
void jiemian3()
{
cout< 39、1;
fstream file("people.dat",ios::in);
while(1)
{
file.read((char *)&s,sizeof(s));
if(!file)
break;
top++;
man[top]=s;
}
file.close();
}
11、~qiye()函数
qiye类的析构函数,作用:释放空间,并将数据存入文件中
~qiye()
{
fstream file("people.dat",ios::out);
for(int i=0;i<=t 40、op;i++)
if(man[i].Getkg()==0)
file.write((char *)&man[i],sizeof(man[i]));
file.close();
}
四、程序的运行结果及说明
1、运行程序后可如界面显示输入1后进入系统
2、进入系统可如图显示菜单界面可通过数字选择进行相应的操作,例如选择1进行公司人员信息的录入
3、按1进入新增系统后如图所示可选择1、新建2、增加,新建将删除原有记录
4、选择1确认新建再输入员工信息,如图所示
5、退出新建按2进入增加选项输入员工信息
41、
6、退出增加,进入菜单界面,选择2,显示所有员工信息
五、课程设计总结
本次课设基本上满足了题目的要求,比如说修改及删除职工信息等功能都能实现,但从实验中我仍然发现了自己的许多不足之处,例如审题不清、逻辑混乱、程序可读性较差等问题。通过这次课设,不管是在动手能力还是在程序理解能力上我都得到了很大的提高,我很高兴可以学到如此多的知识,总的来说,这次课设对我来说还是相当成功的
六、附录
全部代码
#include "stdafx.h"
#include 42、
#include 43、 int Getkg()
{
return kg;
}
int GetNo()
{
return bh;
}
int Getsalary()
{
return salary;
}
int GetID_num()
{
return ID_num;
}
char *GetAdr()
{
return adr;
}
char *Getduty()
{
return duty;
}
void SetNum(int num)
{
bh=num;
44、
}
void SetID_num(int pxid)
{
pxid=ID_num;
}
void SetName(char na[])
{
strcpy(name,na);
}
void SetAdr(char dizhi[])
{
strcpy(adr,dizhi);
}
void Setduty(char zhiwei[])
{
strcpy(duty,zhiwei);
}
void deldate()
{
kg=1;
}
void 45、 addperson(int b,int a,long int t,char *na,char *dizhi,char *zhiwei);
void printw()
{
cout< 46、tw(10)< 47、alary=t;
}
class qiye// qiye类
{
int top,in;
people man[1000];
public:
qiye();
void clear()
{
top=-1;
}
int addperson(int n,int m,int k,char *na,char *dizhi,char *zhiwei)
{
people *p=query(n),*q=query(m),*j=query(k);
if(p==NULL)
{
top++;
man[top].a 48、ddperson(n,m,k,na,dizhi,zhiwei);
return 1;
}
return 0;
}
people *query(int personid)
{
for(int i=0;i<=top;i++)
{
if(man[i].GetNo()==personid&&man[i].Getkg()==0)
{
return &man[i];in=i;}
}
return NULL;
}
people *qu(char na[])
{
for(int i=0;i<=top 49、i++)
{
if(strcmp(man[i].GetName(),na)==0&&man[i].Getkg()==0)
{
return &man[i];in=i;
}
}
return NULL;
}
people *qw(char na[])
{
for(int i=0;i<=top;i++)
{
if(strcmp(man[i].GetName(),na)==0&&man[i].Getkg()==0)
{
50、return &man[i];in=i;
}
}
return NULL;
}
people *pq(int qxid)
{
for(int i=0;i<=top;i++)
{
if(man[i].GetID_num()==qxid&&man[i].Getkg()==0)
{
cout<






