您的位置:首页 > 其它

系统功能设置

2016-12-31 14:27 218 查看
#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 ;
else
pr->next=p->next ;
free(p);
printf("删除成功!\n");
n--;
}
else
printf("未找到员工信息!\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)输入“#”字符结束输入。



显示数据



信息排序



更改信息




删除信息




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: