系统功能设置
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)输入“#”字符结束输入。
显示数据
信息排序
更改信息
删除信息
相关文章推荐
- C#.NET通用权限管理系统组件中数据集权限设置功能增加内部组织机构选项功能
- 邮件系统安全篇:怎样设置GCMail邮件系统中转、信任、阻止功能
- CRM 2013 系统设置新功能一:界面自动保存 及 SDK 中 Xrm.Page.data.entity.save
- iOS 7.1 系统可以设置 button shapes,此功能可让按钮多一条下滑线
- Android4.2 系统设置修改,移除android setting的部分功能
- 邮件服务系统专题4:Turbomail公告功能的设置与使用
- 实现Android4.4系统设置分页滑动浏览功能
- 设置Windows Server 2008系统组策略功能
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)
- Windows 7系统如何设置允许程序或功能通过防火墙?
- android应用程序跳转到系统的各个设置页面和通过Intent action 跳转到系统页面,调用系统功能以及action
- Android 经典系统 HTC One 802d国行电信专版/最新Viper2.6.0/永久root/强大的功能、高级设置/纯净省电ROM
- 系统设置用户密码的功能大全(利用组策略实现)
- 网站快车系统提供了相当丰富的用户权限设置功能
- Android 系统功能设置菜单 LinearLayout与relativeLayout的实现
- Win8系统下保护功能的开启与禁用设置在必要时可修复系统