天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > 通讯录管理系统 指针 链表 学生管理系统 人员管理系统

通讯录管理系统 指针 链表 学生管理系统 人员管理系统

时间:2022-03-26 11:37:40

相关推荐

通讯录管理系统 指针 链表 学生管理系统 人员管理系统

下面只是一个通讯录管理系统,不过增删改查功能都是齐全的,这个只是当做一个模板使用,可以在这个上面作出修改,改成别的什么什么系统,仅做参考

密码:123456

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define LEN sizeof(struct xinxi)struct xinxi{char xingming[30];char chengshi[10];char dianhau[15];char youbian[10];struct xinxi *next;};struct xinxi *chuangjian(){int n=0; struct xinxi *head,*p1,*p2;char a[99]="123";while(strcmp(a,"0")){if(n==0){p1=(struct xinxi *)malloc(LEN);head=p1;}else{p2->next=p1;}printf("请输入姓名:"); scanf("%s",&p1->xingming);printf("请输入城市:");scanf("%s",&p1->chengshi);printf("请输入电话:");scanf("%s",&p1->dianhau);printf("请输入邮政编码:");scanf("%s",&p1->youbian);p2=p1;p1=(struct xinxi *)malloc(LEN);n++;printf("是否要继续输入?继续请输入非零的数据,结束请输入0\n"); scanf("%s",a);}printf("*******************************************\n");printf("结束输入\n结束时别忘了保存到文件哟!!!\n");p2->next=NULL;return head;}void chazhao(struct xinxi *p2){if(p2==NULL){printf("无数据 请创建或导入后查询\n");}else{printf("按名字查找请输入1,按城市查找请输入2,按邮政编码查找请输入3\n\n");char ch[30];scanf("%s",ch);if(strcmp(ch,"1")==0){struct xinxi *a;a=p2;//保留头指针 printf("请输入你要查找的姓名:");char xingming1[30];scanf("%s",xingming1);while(1){if(strcmp(p2->xingming,xingming1)==0){printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("**********************\n");break;}else if(p2->next==NULL){printf("查无此人,是否重新输入?是 请输入不为0的数据 否 请输入0\n");char ch[30];scanf("%s",ch);if(strcmp(ch,"0")!=0){chazhao(a);} else{break;}break;//跳出后来调用的chazhao(a)的while循环 } else {p2=p2->next; }} }else if(strcmp(ch,"2")==0){char chengshi[30];printf("输入你想查找的城市");scanf("%s",chengshi);while(p2!=NULL){if(strcmp(p2->chengshi,chengshi)==0){printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("**********************\n");p2=p2->next; }else{p2=p2->next;}}}else if(strcmp(ch,"3")==0){char youbian[30];printf("输入你想查找的邮政编码");scanf("%s",youbian);while(p2!=NULL){if(strcmp(p2->youbian,youbian)==0){printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("**********************\n");p2=p2->next;}else{p2=p2->next;}}}else{printf("输入错误"); }}}void zengjia(struct xinxi *p3){if(p3==NULL){printf("请创建或导入后再增加\n");}else{struct xinxi *p;while(p3->next!=NULL){p3=p3->next;}char ch[30];while(strcmp(ch,"0")!=0){p=(struct xinxi *)malloc(sizeof(struct xinxi));printf("请输入姓名:"); scanf("%s",&p->xingming);printf("请输入城市:");scanf("%s",&p->chengshi);printf("请输入电话:");scanf("%s",&p->dianhau);printf("请输入邮政编码:");scanf("%s",&p->youbian);p3->next=p;p3=p;printf("是否继续增加 是请输入不为0的数据 否请输入0\n");scanf("%s",ch);}printf("结束时别忘了保存到文件中哟!!!\n"); p3->next=NULL;}}struct xinxi *shanchu(struct xinxi *p2){if(p2==NULL){printf("无数据 请创建或导入后再选择删除\n");}else{struct xinxi *a,*p;p=(struct xinxi *)malloc(sizeof(struct xinxi));a=p2;//保留头指针 printf("请输入你要删除的姓名:");char xingming1[30];scanf("%s",xingming1);if(strcmp(p2->xingming,xingming1)==0){printf("删除成功\n");return p2->next;free(p2);}else{while(1){if(p2->next==NULL){printf("查无此人,是否重新选择删除?是 请输入不为0的数据 否 请输入0\n");char ch[30];scanf("%s",ch);if(strcmp(ch,"0")!=0){shanchu(a);} else{break;}break;//跳出后来调用的chazhao(a)的while循环}else if(strcmp(p2->next->xingming,xingming1)==0){p=p2;free(p2->next);p->next=p->next->next;printf("删除成功\n");return a;break;}else {p2=p2->next;}}}}}void xiugai(struct xinxi *p2){if(p2==NULL){printf("无数据 请创建或导入后修改\n");}else{struct xinxi *a;a=p2;//保留头指针 printf("请输入你要修改的姓名:");char xingming1[30];scanf("%s",xingming1);char n[30],m[30];while(1){if(strcmp(p2->xingming,xingming1)==0){while(strcmp(m,"0")!=0){printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("\n");printf("修改姓名输入1\n修改城市输入2\n修改电话输入3\n修改邮政编码输入4\n");scanf("%s",n);if(strcmp(n,"1")==0){printf("输入新的名字:"); scanf("%s",&p2->xingming);printf("\n");printf("姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("\n");printf("是否继续修改?是请输入不为0的数据,否请输入0\n");scanf("%s",m);break;}else if(strcmp(n,"2")==0){printf("输入新的城市:"); scanf("%s",&p2->chengshi);printf("\n");printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("\n");printf("是否继续修改?是请输入不为0的数据,否请输入0\n");scanf("%s",m);break;}else if(strcmp(n,"3")==0){printf("输入新的电话:"); scanf("%s",&p2->dianhau);printf("\n");printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("\n");printf("是否继续修改?是请输入不为0的数据,否请输入0\n");scanf("%s",m);break;}else if(strcmp(n,"4")==0){printf("输入新的邮政编码:"); scanf("%s",&p2->youbian);printf("\n");printf("新的数据是:\n姓名是:%s\n城市是:%s\n电话是:%s\n邮政编码是:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("\n");printf("是否继续修改?是请输入不为0的数据,否请输入0\n");scanf("%d",m);break;}else{printf("请重新输入\n"); break;}}break;}else if(p2->next==NULL){printf("查无此人,是否重新输入?是 请输入不为0的数据 否 请输入0\n");char ch[30];scanf("%s",ch);if(strcmp(ch,"0")!=0){chazhao(a);} else{break;}break;//跳出后来调用的chazhao(a)的while循环 } else {p2=p2->next;}}}}void paixu(struct xinxi *p2){if(p2==NULL){printf("无数据 请创建或者导入后输出\n"); }else{struct xinxi *p,*p1,*p3;p1=(struct xinxi*)malloc(sizeof(struct xinxi));for(p3=p2;p3!=NULL;p3=p3->next){for(p=p2;p->next!=NULL;p=p->next){if(strcmp(p->dianhau,p->next->dianhau)>0){strcpy(p1->xingming,p->xingming);strcpy(p->xingming,p->next->xingming);strcpy(p->next->xingming,p1->xingming);strcpy(p1->dianhau,p->dianhau);strcpy(p->dianhau,p->next->dianhau);strcpy(p->next->dianhau,p1->dianhau);strcpy(p1->chengshi,p->chengshi);strcpy(p->chengshi,p->next->chengshi);strcpy(p->next->chengshi,p1->chengshi);strcpy(p1->youbian,p->youbian);strcpy(p->youbian,p->next->youbian);strcpy(p->next->youbian,p1->youbian);}}}}while(p2!=NULL){printf("%s的信息如下:\n城市:%s\n电话:%s\n邮政编码:%s\n",p2->xingming,p2->chengshi,p2->dianhau,p2->youbian);printf("**********************\n");p2=p2->next;}} struct xinxi *daoru(){struct xinxi *p2,*p1,*head,*p,*p3;int i=0;FILE *fp;if((fp=fopen("D:\\通讯录.txt","rb"))==NULL){printf("无法打开文件\n");exit(0);}p3=(struct xinxi *)malloc(sizeof (struct xinxi));if(fscanf(fp,"%s\t%s\t%s\t%s\n",p3->xingming,p3->chengshi,p3->dianhau,p3->youbian)!=EOF&&fscanf(fp,"%s\t%s\t%s\t%s\n",p3->xingming,p3->chengshi,p3->dianhau,p3->youbian)==EOF){printf("无数据 请创建后导入");fclose(fp);}else{p2=p1=(struct xinxi *)malloc(sizeof (struct xinxi));head=NULL;strcpy(p1->xingming,p3->xingming);strcpy(p1->chengshi,p3->chengshi);strcpy(p1->dianhau,p3->dianhau);strcpy(p1->youbian,p3->youbian);head=p1;do{p1=(struct xinxi *)malloc(sizeof (struct xinxi));p=p2;p2->next=p1;p2=p1;}while(fscanf(fp,"%s\t%s\t%s\t%s\n",p1->xingming,p1->chengshi,p1->dianhau,p1->youbian)!=EOF);//p3=head;//head=head->next;//free(p3);free(p1);p->next=NULL;fclose(fp);printf("导入成功\n");return head;}}void baocun(struct xinxi *p2){FILE *fp;if(!(fp=fopen("D:\\通讯录.txt","wt+"))){printf("不能打开文件\n"); exit(0);}fputs("姓名\t城市\t电话\t邮政编码\n",fp);while(p2!=NULL){fputs(p2->xingming,fp);fputs("\t",fp);fputs(p2->chengshi,fp);fputs("\t",fp);fputs(p2->dianhau,fp);fputs("\t",fp);fputs(p2->youbian,fp);fputs("\n",fp);p2=p2->next;}fclose(fp);printf("保存成功!");}int main(){printf("请输入密码,共三次机会\n"); int i=1;char mima[30];char ch[30];struct xinxi *p=NULL;for(i=1;i<=3;i++){scanf("%s",mima);if(strcmp(mima,"123456")==0){printf("输入正确!\n");printf("***********************\n");system("cls");printf("\t\t欢迎来到通讯录!\t\t\n");break;}else{printf("输入错误 已错误%d次\n",i);if(i==3){printf("错误3次 系统退出");exit(0);}}}while(1){printf("\t\t\n请输入选择的功能:\n");printf("\t\t创建请输入1(覆盖原有文件创建新的通讯录请谨慎选择)\n");printf("\t\t导入请输入2(把原有文件数据导入到程序中并对其进行操作)\n");printf("\t\t保存请输入3(要想保存对文件的操作 请操作完成后进行保存)\n");printf("\t\t查找请输入4\n");printf("\t\t增加请输入5\n");printf("\t\t删除请输入6\n");printf("\t\t修改请输入7\n");printf("\t\t排序并输出请输入8\n");printf("\t\t退出请输入9\n"); printf("**********************\n");scanf("%s",ch);if(strcmp(ch,"1")==0){p=chuangjian();printf("**********************\n");}else if(strcmp(ch,"4")==0) {chazhao(p);printf("**********************\n");}else if(strcmp(ch,"5")==0){zengjia(p);printf("**********************\n");}else if(strcmp(ch,"6")==0){p=shanchu(p);printf("**********************\n");}else if(strcmp(ch,"7")==0){xiugai(p);printf("**********************\n");}else if(strcmp(ch,"8")==0){paixu(p);printf("**********************\n");}else if(strcmp(ch,"2")==0){p=daoru();}else if(strcmp(ch,"3")==0){baocun(p);}else if(strcmp(ch,"9")==0){exit(0);}else{printf("输入错误,请重新输入");}}}

如果觉得《通讯录管理系统 指针 链表 学生管理系统 人员管理系统》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。