系统功能设置

来源:互联网 发布:腰包 知乎 编辑:程序博客网 时间:2024/05/21 21:45

#include "stdio.h"#include "stdlib.h"#include "windows.h "     //清屏函数头文件#include "string.h"typedef struct Stuff{ char number[10];      //编号 char name[10];        //姓名 char sex[8];          //性别 char birthday[10];    //生日 char degree[20];      //学历 char business[20];    //职务 char phone[15];       //电话 char place[50];       //住址 char con[50];         //判断关键字 struct Stuff *next;  }Stuff;char          Menu();                             //菜单函数Stuff         *App(Stuff *head);                  //添加函数void          Sort(Stuff *head);                  //排序函数Stuff         *Search(Stuff *head);               //查找函数Stuff         *Change(Stuff *head,char n[10]);    //更改函数void          Scpy(char *p,char *q);              //排序中用于交换员工信息Stuff         *Del(Stuff *head,char n[10]);       //删除函数int           Sel(char ch,Stuff *p,Stuff *q);     //判断排序及关键字专用函数void          Show(Stuff *head);                  //输出函数void          Fre(Stuff *head);                   //释放函数int           n=1;                                //定义全局变量,实现人数统计//菜单函数char Menu(void){int ch;    printf("---------------------------菜单-------------------------\n");    printf("                     1.添加员工信息\n");    printf("                     2.员工信息排序\n");    printf("                     3.查找员工信息\n");    printf("                     4.输出员工信息\n");    printf("                     5.更改员工信息\n");     printf("                     6.删除员工信息\n");     printf("                     0.退出\n");printf("--------------------------------------------------------\n");printf("请选择你的操作:");         scanf(" %d",&ch);    return ch;}//添加成员函数Stuff *App(Stuff *head){Stuff *p=NULL,*q=head;    while(n){p=(Stuff *)malloc(sizeof(Stuff));      //申请结构体空间        if(p==NULL){printf("空间不足,自动退出系统!\n");            exit(0);}        p->next =NULL;                                        //指针域为空        printf("请输入第%d名员工:\n",n);        printf(" 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :\n");        getchar();        scanf("%s",p->number );        if(strcmp(p->number,"#")){++n;scanf("%s%s%s%s%s%s%s",p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );            p->con[0]='\0';                       //防止后面判断出现随机值            if(head==NULL)head=p;            else{while(q->next !=NULL)                    q=q->next ;                   q->next =p;}            q=p;                                             //尾插法}if(!strcmp(p->number ,"#")){free(p);                         //完成添加,释放多余空间            break;}}    return head;}//排序函数void Sort(Stuff *head){char ch;    Stuff *p,*q,*r;    while(1){printf("请选择排序条件:1.编号|2.姓名|0.退出\n");getchar();        scanf("%c",&ch);        if(ch=='0')        break;        if(ch<'1'||ch>'2'){printf("输入错误,请重新输入!\n");            continue;}        p=head;        while(p->next!=NULL)                                 //选择排序{q=p->next;            r=p;            while(q!=NULL){if(Sel(ch,r,q))                             //调用判断函数r=q;                q=q->next;}            if(r!=p)                                        //交换信息{Scpy(r->number,p->number);                Scpy(r->name,p->name);                Scpy(r->sex,p->sex);Scpy(r->birthday,p->birthday);                Scpy(r->degree,p->degree);                Scpy(r->business,p->business);                Scpy(r->phone,p->phone);                Scpy(r->place,p->place);}            p=p->next;}         Show(head);                                          //输出}}//交换函数void Scpy(char *p,char *q){char c[50];    strcpy(c,p);    strcpy(p,q);    strcpy(q,c);}//判断函数int Sel(char ch,Stuff *p,Stuff *q){switch(ch)                                  //实现各个关键字查找{case '1':return strcmp(q->number ,p->number )<0||strcmp(q->con ,p->number )==0 ;    case '2':        return strcmp(q->name ,p->name )<0||strcmp(q->con ,p->name  )==0 ;    default :        exit(0);}} //查找函数Stuff *Search(Stuff *head){Stuff *p=NULL,*q;    int          flag;                                     //查找判断    char         ch,sh;                                    //两个控制变量    while(1){printf("请输入要查找的条件:1.编号2.姓名0.退出\n");          scanf(" %c",&ch);        if(ch=='0')          break;        if(ch<'1'||ch>'2'){printf("输入错误,请重新输入!\n");continue;}getchar();printf("请输入:");    gets(q->con);p=head;                                                //指向表头flag=0;while(p!=NULL){if(strcmp(q->con,p->number)==0||strcmp(q->con,p->name)==0){printf("员工信息如下:\n");printf(" 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 \n%s  \t%s  \t%s  \t%s  \t%s  \t%s  \t%s  \t%s\n",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("是否需要:1.更改 2.删除 3.继续\n");scanf(" %c",&sh);if(sh=='1')Change(head,p->number);                    //调用更改函数else if(sh=='2')head=Del(head,p->number);             //调用删除函数flag=1;break;}p=p->next ;}if(flag==0)printf("没有找到该员工信息!\n");}return head;}//更改函数Stuff *Change(Stuff *head,char n[10]){Stuff *p=head;int flag=0;if(head==NULL)printf("信息表为空,请先建立信息表!\n");else{while(p!=NULL){if(!strcmp(p->number,n)){printf("找到员工,请输入新的信息:\n 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 \n");scanf("%s%s%s%s%s%s%s%s",p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("员工信息如下:\n");flag=1;}p=p->next;}if(flag==0)printf("未找到该员工信息!\n");}Show(head);    return head;}//删除函数Stuff *Del(Stuff *head,char n[10]){Stuff *p,*pr;int flag;flag=0;p=head,pr=head;if(head==NULL)printf("未找到员工信息!\n");else{while(strcmp(p->number ,n)&&p->next !=NULL){pr=p;p=p->next ;}if(!strcmp(p->number ,n)){if(p==head)head=p->next ;elsepr->next=p->next ;free(p);printf("删除成功!\n");n--;}elseprintf("未找到员工信息!\n");}Show(head); return head;}//输出函数void Show(Stuff *head){Stuff *p=head;int i=1;if(head!=NULL){printf("员工信息如下:\n");    while(p!=NULL){printf("%d. %s  %s  %s  %s  %s  %s  %s  %s\n",i++,p->number ,p->name ,p->sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place);    p=p->next ;}}else{printf("信息为空!\n");}}//释放函数void Fre(Stuff *head){Stuff *p;while(head!=NULL){p=head;head=head->next ;free(p);}} void main(){char Index[10];    Stuff *head=NULL;                       //链表头指针定义    printf("---------------欢迎使用《员工信息管理系统》-------------\n");    Sleep(1000);    while(1){switch(Menu()){case 1:printf("请输入员工信息,直接输入'#'结束\n");            head=App(head);            break;        case 2:            Sort(head);            break;        case 3:            head=Search(head);            break;        case 4:            Show(head);            break;        case 5:            printf("请输入员工编号:");            scanf("%s",Index);            Change(head,Index);            break;        case 6:            printf("请输入员工编号:");            scanf("%s",Index);            head=Del(head,Index);            break;        case 0:            printf("-------------------欢迎下次光临!-----------------\n");Sleep(2000);            exit(0);break;        default:            printf("输入错误,请重新输入!\n");}        printf("按Enter键继续~");        getchar();getchar();        system("cls");          //清屏效果}    Fre(head);}   //结束


系统菜单

 

输入数据

(1)输入操作字符1;  

(2)输入员工信息;

(3)输入“#”字符结束输入。

                                                             

                   

示数据

                     

信息排序

                    

更改信息

 

删除信息

 



0 0
原创粉丝点击