数据结构课程设计、职工信息管理系统

1.	/*   
2.	 * Copyright(c)2016, 烟台大学计算机与控制工程学院   
3.	 * All rights reserved.   
4.	 * 文件名称:Kaka.cpp   
5.	 * 作    者:魏铭阳   
6.	 * 完成日期:2016年12月31日   
7.	 *    
8.	*/   

(1)daima.cpp

#include  
#include  
#include  
#include "head.h"  
 
#define OK 1  
#define ERROR 0  
  



int Initlist(Linklist *L) //初始化单链表  
{    
    (*L)=(Linklist)malloc(sizeof(LNode));    
    if(!(*L))    
        return (0);    
    (*L)->next=NULL;   
    return OK;   
}  
  






int CreatList(Linklist L)//头插法生成单链表  
{  
    Linklist p;  
    p=(Linklist)malloc(sizeof(LNode));  
    if(!p)  
    {  
        return (0);  
    }  
    else  
    {  
        printf("请输入员工信息\n");  
        printf("编号:");  
        scanf("%s",p->data.id);  
        printf("姓名:");  
        scanf("%s",p->data.name);  
        printf("性别:");  
        scanf("%s",p->data.sex);  
        printf("年龄:");  
        scanf("%s",p->data.age);  
        printf("学历:");  
        scanf("%s",p->data.edu);  
        printf("工资:");  
        scanf("%s",p->data.salary);  
        printf("电话:");  
        scanf("%s",p->data.phone);  
        printf("地址:");  
        scanf("%s",p->data.address);  
    }  
    p->next=L->next;  
    L->next=p;  
    return OK;  
}  
 
/*void baocun ()
{
   FILE *fp;
	int b = 100;
	fp = fopen("xxxx.txt", "w");
	fprintf(fp, "%s%d\n", a, b);
	fclose(fp);
}*/
  



void Display(Linklist L)//显示职工信息  
{  
    Linklist p;  
    for(p=L->next;p;p=p->next)  
    {  
        printf("编号:       %s\n",p->data.id);  
        printf("姓名:       %s\n",p->data.name);  
        printf("性别:       %s\n",p->data.sex);  
        printf("年龄:       %s\n",p->data.age);  
        printf("学历:       %s\n",p->data.edu);  
        printf("工资:       %s\n",p->data.salary);  
        printf("电话:       %s\n",p->data.phone);  
        printf("地址:       %s\n",p->data.address);  
        printf("============================\n");  
    }  
}  
  
 






 int SearchID(Linklist L,char id[20])//ID查询  
{  
    LNode *p;  p=L;  
    while(p)  
    {  
        if(strcmp(p->data.id,id)==0)  
        {  
            printf("编号        %s\n",p->data.id);  
            printf("姓名        %s\n",p->data.name);  
            printf("性别        %s\n",p->data.sex);  
            printf("年龄        %s\n",p->data.age);  
            printf("学历        %s\n",p->data.edu);  
            printf("工资        %s\n",p->data.salary);  
            printf("电话        %s\n",p->data.phone);  
            printf("地址        %s\n",p->data.address);  
        }  
        p=p->next;  
    }  
    return OK;  
}  
  





int SearchName(Linklist L,char name[10])//姓名查询  
{  
    LNode *p;  p=L;  
    while(p)  
    {  
        if(strcmp(p->data.name,name)==0)  
        {  
            printf("编号         %s\n",p->data.id);  
            printf("姓名         %s\n",p->data.name);  
            printf("性别         %s\n",p->data.sex);  
            printf("年龄         %s\n",p->data.age);  
            printf("学历         %s\n",p->data.edu);  
            printf("工资         %s\n",p->data.salary);  
            printf("电话         %s\n",p->data.phone);  
            printf("地址         %s\n",p->data.address);  
        }  
        p=p->next;  
    }  
    return OK;  
}  
  
  



void SortID(Linklist L)//编号排序  
{  
    Linklist p,q;  
    struct employee temp;  
    for(p=L->next;p!=NULL;p=p->next)  
     {  
        for(q=p->next;q!=NULL;q=q->next)  
        {  
            if((strcmp(p->data.id,q->data.id)>0))  
            {  
                temp=q->data;  
                q->data=p->data;  
                p->data=temp;  
            }  
        }  
    }  
}  
  




void SortName(Linklist L)//姓名排序  
{  
    Linklist p,q;  
    struct employee temp;  
    for(p=L->next;p!=NULL;p=p->next)  
    {  
        for(q=p->next;q!=NULL;q=q->next)  
        {  
            if((strcmp(p->data.name,q->data.name)>0))  
            {  
                temp=q->data;  
                q->data=p->data;  
                p->data=temp;  
            }  
        }  
    }  
}  
  
  



 
int Ins(Linklist L, char id[20])//插入信息  
{  
    LNode *pre,*s;  
    pre=L;  
    while(pre->next!=NULL)  
    {  
        pre=pre->next;  
        if((strcmp( pre->data.id,id))==0)  
        {  
            s=(LNode*)malloc(sizeof(LNode));  
            printf("请输入要插入员工信息\n");  
            printf("编号:");  
            scanf("%s",s->data.id);  
            printf("姓名:");  
            scanf("%s",s->data.name);  
            printf("性别:");  
            scanf("%s",s->data.sex);  
            printf("年龄:");  
            scanf("%s",s->data.age);  
            printf("学历:");  
            scanf("%s",s->data.edu);  
            printf("工资:");  
            scanf("%s",s->data.salary);  
            printf("电话:");  
            scanf("%s",s->data.phone);  
            printf("地址:");  
            scanf("%s",s->data.address);  
            s->next=pre->next;  
            pre->next=s;  
            printf("插入员工信息成功!\n");  
        }  
    }  
    return OK;  
}  
  
  





int Alter(Linklist L,char id[20])//更改信息  
{  
    int c;  
    LNode *p;  
    p=L;  
    while(p)  
    {  
        if(strcmp(p->data.id,id)==0)  
        {  
            printf("请输入要修改的选项(1编号,2姓名,3性别,4出生年月\n");  
            printf("            5学历,6职务,7电话,8地址):");  
            scanf("%d",&c);  
            switch(c)  
            {  
            case 1:  
                {  
                    printf("请输入修改员工编号(原编号是%s):",p->data.id);  
                    scanf("%s",p->data.id);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 2:  
                {  
                    printf("请输入员工修改姓名(原姓名是%s):",p->data.name);  
                    scanf("%s",p->data.name);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 3:  
                {  
                    printf("请输入员工修改性别原(性别是%s):",p->data.sex);  
                    scanf("%s",p->data.sex);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 4:  
                {  
                    printf("请输入员工修改年龄(原年龄是%s):",p->data.age);  
                    scanf("%s",p->data.age);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 5:  
                {  
                    printf("请输入员工修改学历(原学历是%s):",p->data.edu);  
                    scanf("%s",p->data.edu);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 6:  
                {  
                    printf("请输入员工修改工资(原工资是%s):",p->data.salary);  
                    scanf("%s",p->data.salary);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 7:  
                {  
                    printf("请输入员工修改电话(原电话是%s):",p->data.phone);  
                    scanf("%s",p->data.phone);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            case 8:  
                {  
                    printf("请输入员工修改地址(原地址是%s):",p->data.address);  
                    scanf("%s",p->data.address);  
                    printf("修改员工信息成功!\n");  
                    break;  
                }  
            }  
        }  
        p=p->next;  
    }  
    return OK;  
 }  
  
  





int Del(Linklist L,char id[20])//按ID删除  
{  
    LNode *p;  LNode *r;  
    p=L->next;  r=L;  while(!(strcmp(p->data.id,id)==0)&&p)  
    {  
        r=p;  
        p=p->next;  
    }  
    if(!p)  
        printf("\n删除位置不合理\n");  
    else  
    {  
        r->next=p->next;  
        free(p);  
        printf("删除成功!\n");  
    }  
    return OK;  
}  
(2)head.h

#ifndef HEAD_H_INCLUDED  
#define HEAD_H_INCLUDED  
  
struct employee  
{  
    char id[20];//工号  
    char name[20];//姓名  
    char sex[20];//性别  
    char age[20];//年龄  
    char edu[20];//学历  
    char salary[20];//工资  
    char phone[30];//电话  
    char address[30];//地址  
};  
  
//存储结构  
typedef struct LNode  
{  
    struct employee data;  
    struct LNode* next;  
}LNode,*Linklist;  
  
int Initlist(Linklist *L);//初始化单链表  
int CreatList(Linklist L);//头插法生成单链表  
void Display(Linklist L);//显示职工信息  
int SearchID(Linklist L,char id[20]);//ID查询  
int SearchName(Linklist L,char name[10]);//姓名查询  
void SortID(Linklist L);//编号排序  
void SortName(Linklist L);//姓名排序  
int Ins(Linklist L, char id[20]);//插入信息  
int Alter(Linklist L,char id[20]);//更改信息  
int Del(Linklist L,char id[20]);//按ID删除  


//void baocun ();

#endif // HEAD_H_INCLUDED  
(3)main.cpp

#include  
#include  
#include  
#include "head.h"  

 
#define OK 1  
#define ERROR 0  
  
 
int main()//主函数  
{  

    system("color 3E");

    Linklist L;  
    int a,b;  
    int x=1;  
    int y;  
    char m;  
    char name[10];  
    char id[20];  
    Initlist(&L);//初始化单链表  
    while(x)  
    {  
        printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");  
        printf("◆        欢迎使用职工信息管理系统      ◆\n");  
        printf("◆                                      ◆\n");  
        printf("◆              【菜单】                ◆\n");  
        printf("◆          1.录入职工信息              ◆\n");  
        printf("◆          2.查询职工信息              ◆\n");  
        printf("◆          3.职工信息排序              ◆\n");  
        printf("◆          4.插入职工信息              ◆\n");  
        printf("◆          5.浏览职工信息              ◆\n");  
        printf("◆          6.修改职工信息              ◆\n");  
        printf("◆          7.删除职工信息              ◆\n");  
        printf("◆          【8】退出系统               ◆\n");  
        printf("◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");  
  
        printf("请选择操作序号并按回车:");  
        scanf("%d",&y);  
        switch(y)  
        {  
        case 1:  
            {  
                printf("*********************录入********************\n");  
                CreatList(L);//头插法生成单链表  
                do  
                {  
                    printf("是否继续输入?(y/n):");  
                    getchar();  
                    scanf("%c",&m);  
                    if(m=='y')  
                    {  
                        CreatList(L);//显示职工信息  
                    }  
                }  
                while(m!='n');  
                printf("*******************录入******************\n");  
                break;  
            }  
        case 2:  
            printf("*********************查询********************\n");  
            printf("请输入查询方式(1按编号查询,2按姓名查找):");  
            scanf("%d",&a);  
            if(a==1)  
            {  
                printf("请输入查询职工编号:");  
                scanf("%s",&id);  
                SearchID(L,id);//ID查询  
            }  
            if(a==2)  
            {  
                printf("请输入查询职工姓名:");  
                scanf("%s",&name);  
                SearchName(L,name);//姓名查询  
            }  
            printf("*******************查找******************\n");  
            break;  
        case 3:  
            printf("*********************排序********************\n");  
            printf("请输入排序方式(1按编号排序,2按姓名排序):");  
            scanf("%d",&b);  
            if(b==1)  
            {  
                printf("按编号排序为:\n");  
                SortID(L);//编号排序  
                Display(L);  
            }  
            if(b==2)  
            {  
                printf("按姓名排序为:\n");  
                SortName(L);//姓名排序  
                Display(L);//显示职工信息  
            }  
            printf("*******************排序******************\n");  
            break;  
        case 4:  
            printf("*********************插入********************\n");  
            printf("请输入要插入查找的职工号:");  
            getchar();  
            scanf("%s",&id);  
            Ins(L,id);//插入信息  
            printf("*******************插入******************\n");  
            break;  
        case 5:  
            printf("*********************显示********************\n");  
            printf("所有职工信息如下所示\n");  
            Display(L);//显示职工信息  
            printf("*******************显示******************\n");  
            break;  
        case 6:  
            printf("*********************修改********************\n");  
            printf("请输入要修改员工编号:");  
            getchar();  
            scanf("%s",&id);  
            Alter(L,id);//更改信息  
            printf("******************修改*******************\n");  
            break;  
        case 7:  
            printf("*********************删除********************\n");  
            printf("请输入删除员工编号:");  
            getchar();  
            scanf("%s",&id);  
            Del(L,id);//按ID删除  
            printf("******************删除*******************\n");  
            break;  
        case 8: x=0;  
            printf("****************退出员工管理系统*****************\n");  
            break;  
        default:  
            printf("请输入正确序号!\n");  
            break;  
        }  
    }  
    return 0;
}  




你可能感兴趣的:(数据结构)