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

职工综合信息管理系统

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


# 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;
}

程序界面:


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

增加员工信息:



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

查询功能:


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

修改员工信息:



显示所有员工信息:


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


删除功能:


删除该员工信息后到显示所有员工信息里确认,确实把员工删除了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值