# include stdio.h # include stdlib.h # include string.htypedefstructphone { charnum [ 30 ]; char name[50]; char sex[10]; char year[50]; char school[50]; char zhiwei[50]; char money[10]; char地址[ 30 ]; char tel[30]; 结构手机*下一步; (}手机; phone *head; void Initiate (; 语音菜单(; phone *Create (; void Find (; void Alter (; void Delete (; 语音列表(; phone *write_in (; phone *write_out (; phone*write_in(phone*head ) {FILE *fp; phone *p; 无法打开if () FP=fopen(d:员工信息. txt (,w ) ) )==NULL ) {printf文件! n '; 退出(0; (}p=head-next; If (头!=null(while(p!=null(fprintf ) FP、' %s%s%s%s%s%s%s ) s '、p-num、p-name、p-sex、p-year、p-school、p-schooood p=p-next; }fclose(FP ); 返回头; }phone *write_out () {FILE *fp; phone *p、*pre、*tail; head=(phone* ) malloc ) sizeof (phone ); strcpy (头编号,'0'; strcpy (头名称,'0'; strcpy (头做爱,'0'; strcpy (头年,'0'; src py (头寸,((0); strcpy(head-Zhiwei,'0'; strcpy (头单元,'0'; strcpy (头地址,' '; src py (头戴尔,'0'; tail=pre=head; FP=fopen(d:员工信息. txt )、(r ); 打开if(FP==null ) {printf ) '文件失败! ' ); 退出(0; (p=(Phone* ) malloc ) sizeof (phone ); p-next=空值; 头下一个=空; while(FP,' % s % s % s % s % s % s % s ',p-num,p-name,p-sex,p-year,p-school,p-zhing=EOF tail-next=p; tail=p; p=(phone* ) malloc ) sizeof (phone ); p-next=空值; }fclose(FP ); 返回头; void Initiate () if ) ) head=(phone* ) malloc ) sizeof (phone ) )==NULL ) exit(1) )1); 头下一个=空; //菜单void Menu () printf(**************员工信息管理系统****************** ' ) ) ) ) ) printf((n ); printf(1.创建信息.n ); printf(2.咨询信息。 n ); printf(3.修改信息。 n ); printf(4.删除信息! n '; printf(5.显示所有信息。 n ); printf(0.退出系统。 n ); //创建通讯录phone *Create () { phone *p1,*p2; int m,I; 请输入printf ('创建个数: ); scanf('%d ',m ); for(I=1; i=m; I ) ) P1=(Phone* ) malloc ) sizeof ) Phone ); printf ('请输入第%d条的信息! n ',I; printf (请输入员工编号:(n ) ); scanf('%s ',p1-num ); printf (姓名:(n ); 扫描(' % s ',p1-name ); printf (性别:(n ) ); scanf("%s",p1->sex); printf("出生年月:n"); scanf("%s",p1->year); printf("学历:n"); scanf("%s",p1->school); printf("职务:n"); scanf("%s",p1->zhiwei); printf("工资:n"); scanf("%s",p1->money); printf("地址:n"); scanf("%s",p1->address); printf("电话:n"); scanf("%s",p1->tel); p1->next=NULL; if(head->next==NULL) head->next = p1; else { for(p2=head;p2->next!=NULL;p2=p2->next); //找到结点尾 p2->next = p1; } } printf("信息已添加!n"); head=write_in(head); return head; //保存到链表}//查找通讯录信息void Find(){ phone *p; char name[50]; if(head->next==NULL) { printf("此系统为空!n"); return; } printf("请输入要查找的姓名:n"); scanf("%s",&name); for(p=head->next;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) { printf("职工号t姓名t性别t出生年月t学历t职务t工资t地址t电话n"); printf("%st%st%st%st%st%st%st%st%sn",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel); } else if(p->next==NULL) printf("无此信息!n"); } head=write_in(head);}//修改通讯录信息void Alter(){ head=write_out(); char name[50]; //先查找 后删除 phone *p=head->next; if (p == NULL) { printf("此系统为空!n"); return; } printf("请输入要修改的姓名:n"); scanf("%s",name); while(p!=NULL) { if(strcmp(p->name,name)==0) { printf("请输入需要插入的信息"); printf("姓名:n"); scanf("%s",p->name); printf("性别:n"); scanf("%s",p->sex); printf("出生年月:n"); scanf("%s",p->year); printf("学历:n"); scanf("%s",p->school); printf("职务:n"); scanf("%s",p->zhiwei); printf("工资:n"); scanf("%s",p->money); printf("地址:n"); scanf("%s",p->address); printf("电话:n"); scanf("%s",p->tel); break; } } printf("修改成功"); head=write_in(head);} //删除通讯录信息void Delete(){ head=write_out(); char name[50]; //先查找 后删除 phone *p = head->next, *p1 =head->next,*p2; if (head->next == NULL) { printf("此通讯录为空!n"); return; } printf("请输入要删除的姓名:n"); scanf(" %s",name); while ((strcmp(p->name,name)!=0 )&& p->next != NULL) { p1=p; p =p->next; } if (strcmp(name, p->name)==0) //输出删除信息 { if (p == head->next&&p->next!=NULL) head->next = p->next; else if(p==head->next&&p->next==NULL) { head->next=p->next; printf("信息已删除,先此通讯录为空!!n"); return; } else p1->next = p->next; } else { printf("此信息不存在!!!n"); return; } printf("此信息已删除!"); printf("职工号t姓名t性别t出生年月t学历t职务t工资t地址t电话n"); for(p2=head->next;p2!=NULL;p2=p2->next) printf("%st%st%st%st%st%st%st%st%sn",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel); head=write_in(head);}//显示所有记录void List(){ head=write_out(); phone *p; if(head->next==NULL) { printf("此系统中无记录!n"); return; } printf("职工号t姓名t性别t出生年月t学历t职务t工资t地址t电话n"); for(p=head->next;p!=NULL;p=p->next) printf("%st%st%st%st%st%st%st%st%sn",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);}int main(){ int choice; char yes_no; Initiate(); do { Menu(); printf("请选择0-5的数字n"); scanf("%d",&choice); printf("n"); switch(choice) { case 1:Create(); break; case 2:Find(); break; case 3:Alter(); break; case 4:Delete(); break; case 5:List(); break; case 0: printf("************感谢您的使用************n"); exit(0); break; default: printf("输入有误!请重新输入n"); break; } printf("是否继续 Y or N? n"); do { scanf("%c",&yes_no); }while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); }while(yes_no=='Y'||yes_no=='y');}