您的位置:首页 > 编程语言 > C语言/C++

C++课程设计:职工综合信息管理系统

2014-06-19 20:54 691 查看
职工综合信息管理系统

要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自己理解情况进行增加。

# include <iostream.h>
# include <string.h>
# include <iomanip>

# define  max 1000            //定义最大的数组下标
# define NULL 0               //定义NULL为0

typedef struct node           //定义员工结构体
{
char num[10];             //工号
char name[10];            //姓名
char sex[4];              //性别
char age[4];              //年龄
char degree[20];          //学历
char wage[20];            //工资
char telnum[20];          //电话
char address[100];        //住址
node *next;               //指针域

}employ;

void Create(employ *L,int m)  //创建函数
{
char num[10],name[10],sex[4],age[4],degree[20],wage[20],telnum[20],address[100];//定义编号,姓名,性别,出生年月,学历,职务,电话,住址
int i=0,j=0,k=0;
employ *M;
while(i<m)                //m为输入员工的个数
{
cout<<"请输入第"<<i <<"名员工的信息(用TAB分隔):"<<endl;
cout<<"-----------------------------------------------------------------------------"<<endl;
cout<<"工号    姓名    性别    年龄     学历   工资   电话    住址"<<endl;
cout<<"-----------------------------------------------------------------------------"<<endl;
cin>>num;
cin>>name;
cin>>sex;
cin>>age;
cin>>degree;
cin>>wage;
cin>>telnum;
cin>>address;
M=(employ *)malloc(sizeof(employ));  //分配内存给该结点
strcpy(M->num,num);                  //将姓名值赋给新结点的姓名
strcpy(M->name,name);                //将工号值赋给新结点的编号
strcpy(M->sex,sex);                  //将性别值赋给新结点的性别
strcpy(M->age,age);                  //将年龄值赋给新结点的年龄
strcpy(M->degree,degree);            //将学历值赋给新结点的学历
strcpy(M->wage,wage);                //将工资值赋给新结点的工资
strcpy(M->telnum,telnum);            //将电话值赋给新结点的电话
strcpy(M->address,address);          //将住址值赋给新结点的住址
M->next=NULL;                        //新结点的指针域置为空
L->next=M;                           //将新结点链到单链表上
L=M;                                 //指向新结点
i++ ;
}
}

void Display(employ *L)              //显示函数
{   cout<<"-------------------------------------------------"<<endl;
cout<<"工号 姓名  性别  年龄   学历   工资   电话   住址"<<endl;

while(L->next!=NULL)
{
L=L->next;
cout<<L->num<<"    ";           //输出工号,姓名,性别,年龄,学历,工资,电话,住址
cout<<L->name<<"  ";
cout<<L->sex<<"    ";
cout<<L->age<<"     ";
cout<<L->degree<<"    ";
cout<<L->wage<<"   ";
cout<<L->telnum<<"   ";
cout<<L->address<<endl;

}
cout<<"------------------------------------------------"<<endl;
if(L->next=NULL)
cout<<"当前没有任何员工的信息!"<<endl;
}

void Show(employ *L)                //显示某一个结点函数
{
cout<<"-------------------------------------------------"<<endl;
cout<<"工号 姓名  性别  年龄   学历   工资   电话   住址"<<endl;
cout<<L->num<<"    ";           //输出工号,姓名,性别,年龄,学历,工资,电话,住址
cout<<L->name<<"  ";
cout<<L->sex<<"    ";
cout<<L->age<<"     ";
cout<<L->degree<<"    ";
cout<<L->wage<<"   ";
cout<<L->telnum<<"   ";
cout<<L->address<<endl;
cout<<"------------------------------------------------"<<endl;

}

void Search(employ *L)              //查询函数
{
char num[10],name[10],telnum[20];
employ *p;
p=L;                            //p指向头结点
int x;

while(1)
{

cout<<"1.按工号查找                        2.按姓名查找"<<endl;
cout<<"3.按电话号码查找                    4.退出"<<endl;
cout<<"请选择:(1,2,3,4,)"<<endl;
cin>>x;
L=L->next;                    //指向第一个结点
if(x==1)
{
cout<<"请输入要查找员工的工号:"<<endl;
cin>>num;
while(L!=NULL)
{
if(strcmp(L->num,num)==0)
{
Show(L);                   //显示该结点信息
break;
}
else L=L->next;
}
if(L==NULL)
cout<<"不存在该员工的信息,请重新输入:"<<endl;
L=p;                         //指回头结点
}
else if(x==2)
{
cout<<"请输入要查找员工的姓名:"<<endl;
cin>>name;
while(L!=NULL)
{
if(strcmp(L->name,name)==0)
{
Show(L);
break;
}
else L=L->next;
}
if(L==NULL)
cout<<"不存在该员工的信息,请重新输入:"<<endl;
L=p;                           //指回头结点
}
else if(x==3)
{
cout<<"请输入要查找员工的电话号码:"<<endl;
cin>>telnum;
while(L!=NULL)
{
if(strcmp(L->telnum,telnum)==0)
{
Show(L);               //显示该结点信息
break;
}
else L=L->next;
}
if(L==NULL)
cout<<"查无此人,请重新输入:"<<endl;
L=p;
}
else if(x==4)
break;
else
cout<<"你输入的为非法字符,请重新输入:"<<endl;
}
}

void Update(employ *L)          //修改函数
{
char num[10];
int x;
char name[10],sex[4],age[4],degree[20],wage[20],telnum[20],address[100];
cout<<"请输入要更新员工的工号:"<<endl;
cin>>num;
L=L->next;
while(L!=NULL)
{
if(strcmp(L->num,num)==0)
{
Show(L);
break;
}
else L=L->next;
}
if(L==NULL)
cout<<"查无此人,请重新输入:"<<endl;
else
{
while(1)
{

cout<<"1.更新数据            2.退出"<<endl;

cout<<"请选择:(1,2)"<<endl;
cin>>x;
if(x==1)
{
cout<<"请输入新数据:"<<endl;;
cin>>num;                  //输入工号
cin>>name;                 //输入姓名
cin>>sex;                  //输入性别
cin>>age;                  //输入年龄
cin>>degree;               //输入学历
cin>>wage;                 //输入工资
cin>>telnum;               //输入电话
cin>>address;              //输入住址
strcpy(L->num,num);        //将姓名值赋给新结点的姓名
strcpy(L->name,name);      //将工号值赋给新结点的工号
strcpy(L->sex,sex);        //将性别值赋给新结点的性别
strcpy(L->age,age);        //将年龄值赋给新结点的年龄
strcpy(L->degree,degree);  //将学历值赋给新结点的学历
strcpy(L->wage,wage);      //将工资值赋给新结点的工资
strcpy(L->telnum,telnum);  //将电话值赋给新结点的电话
strcpy(L->address,address);//将住址值赋给新结点的住址
cout<<"更新后的数据为:"<<endl;
Show(L);
}
else if(x==2) break;
else
cout<<"你输入的为非法字符,请重新输入:"<<endl;
}
}
}

void Delete(employ *L)//删除函数
{
char num[10];
int x;
employ *p,*q,*w;
cout<<"请输入要删除员工的工号:"<<endl;
cin>>num;
w=L;
L=L->next;
while(L!=NULL)
{
if(strcmp(L->num,num)==0)
{
Show(L);
break;
}
else
{
w=L;
L=L->next;
}
}
if(L==NULL)
cout<<"查无此人,请重新输入:"<<endl;
else
{
p=w;
while(1)
{
cout<<"1.删除数据            2.退出 "<<endl;
cout<<"请选择:(1,2)"<<endl;
cin>>x;
if(x==1)
{
q=p->next;
p->next=q->next;
free(q);
break;
}
else if(x==2)
break;
else
cout<<"你输入的为非法字符,请重新输入:"<<endl;
}
}
}

int main()
{
int x,m;
employ *L;                           //建立新结点,并分配内存空间
L=(employ *)malloc(sizeof(employ));
L->next=NULL;
cout<<"                * * * * * * * * * * * * * * * * * * * * * * * *"<<endl;
cout<<"                *                                             *"<<endl;
cout<<"                *        欢 迎 进 入 员 工 管 理 系 统        *"<<endl;
cout<<"                *                                             *"<<endl;
cout<<"                * * * * * * * * * * * * * * * * * * * * * * * *"<<endl;
while(1)
{
cout<<"              --------------------------------------------------- "<<endl;
cout<<"             |        1.创 建                 2.查 询            |"<<endl;
cout<<"             |                                                   |"<<endl;
cout<<"             |        3.修 改                 4.显 示            |"<<endl;
cout<<"             |                                                   |"<<endl;
cout<<"             |        5.删 除                 6.退 出            |"<<endl;
cout<<"             |                                                   |"<<endl;
cout<<"              --------------------------------------------------- "<<endl;
cout<<"请选择:";
cin>>x;
if(x==1)
{
cout<<"请输入员工数目:"<<endl;
cin>>m;
Create(L,m);
}
else if(x==2)
{
if(L->next==NULL)
cout<<"当前没有任何员工的信息,不能进行查询!"<<endl;
else
Search(L);
}
else if(x==3)
{
if(L->next==NULL)
cout<<"当前没有任何员工的信息,不能进行修改!"<<endl;
else
Update(L);//调用修改函数
}

else if(x==4)
{
if(L->next==NULL)
cout<<"当前没有任何员工的信息!"<<endl;
else
{
cout<<"该员工管理系统的所有信息:"<<endl;
Display(L);          //显示函数
}
}
else if(x==5)
{
if(L->next==NULL)
cout<<"当前没有任何员工的信息,不能进行删除!"<<endl;
else
Delete(L);           //删除函数
}
else if(x==6)
{
cout<<"          ·*·*·*·*·*·*·谢谢您的使用!!·*·*·*·*·*·"<<endl;
break;
}
else
cout<<"您输入的为非法字符,请重新输入:"<<endl;
}
return 0;
}


程序界面:



查询、修改、显示及删除功能均要有员工信息才可以使用。
增加员工信息:



输入信息之后就可以使用查询功能了。
查询功能:



查询功能可以通过工号、姓名、电话号码查询员工信息,当然也可以选择其他查找方式,因为不太清楚员工究竟实际用到哪些信息,这里就找最常用的意思意思下,可以按实际情况于源程序中添加更精确的查找功能。
修改员工信息:



显示所有员工信息:



可以看到上面的修改功能正常运作,也可以显示所有的员工信息了

删除功能:



删除该员工信息后到显示所有员工信息里确认,确实把员工删除了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: