C++课程设计之同学通讯录.docx
C+ 课程设计之同学通讯录#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define ID struct id struct id char name20; char tele20; ID *next; ; int pc=0;/全局变量 ID *creat /创建链表 ID *p1,*p2,*head; char str20; p1=p2=head=NULL; printf("tt请开始输入记录(当输入#时结束 )!n"); while(1) printf("请输入姓名:n");scanf("%s",str);getchar; if(strcmp(str,"#")=0) break; p1=(ID*)malloc(sizeof(ID); strcpy(p1->name,str); printf("请输入电话号码");scanf("%s",p1->tele);getchar; if(head=NULL) head=p1; p2=p1; else p2->next=p1; p2=p1; pc+; p2->next=NULL; return(head); /*输入/添加记录*/ ID *insert(ID *head) ID *temp,*p1,*p2; printf("插入操作开始!n"); temp=(ID *)malloc(sizeof(ID); printf("请输入姓名:n");scanf("%s",temp->name);getchar; printf("请输入电话号码:n");scanf("%s",temp->tele);getchar; if (head=NULL) head=temp; temp->next=NULL; else p1=head; while(p1!=NULL) p2=p1; p1=p1->next; p2->next=temp; temp->next=p1; printf("插入成功"); pc+; return (head); /*删除记录*/ ID *delet(ID *head) ID *p1,*p2; char str20; printf("请输入要删除的姓名:");scanf("%s",str);getchar; p1=head; if (head=NULL) printf("没有记录n"); goto end; while(p1!=NULL && strcmp(p1->name,str) p2=p1;p1=p1->next; if(p1=NULL) printf("未找到符合记录!n"); else if(strcmp(p1->name,str)=0) if (p1=head) head=p1->next; else p2->next=p1->next; printf("删除成功!n"); pc-; end:return head; /*查找记录*/ ID *search(ID *head) ID *p1,*p2; int flag=0; char c; printf("请输入姓名的首字:");scanf("%c",&c);getchar; p1=head; while( p1!=NULL) if(p1->name0=c) printf("姓名:%st电话号码:%sn",p1->name,p1->tele); flag=1; p2=p1;p1=p1->next; if(flag=0) printf("未找到符合记录!n"); return head; /*修改记录*/ ID *modify(ID *head) ID *p1,*p2; int mode; char str20; printf("请输入要修改的记录姓名:");scanf("%s",str);getchar; p1=head; while( p1!=NULL) if(strcmp(p1->name,str)=0) printf("1.姓名:%st2.电话号码:%sn",p1->name,p1->tele); printf("请选择要修改选项:n"); printf("1.修改姓名n2.修改电话号码n"); scanf("%d",&mode);getchar; if(mode=1) printf("请输入修改后的姓名n"); scanf("%s",p1->name);getchar; else if(mode=2) printf("请输入修改后的电话号码n"); scanf("%s",p1->tele);getchar; else printf("输入有误!n"); break; p2=p1;p1=p1->next; if(p1=NULL) printf("未找到符合要求的记录!n"); return head; /*显示结果函数*/ void print(ID *head) ID *p; p=head; printf("ttt*n"); printf("显示结果是:n"); printf("姓名电话号码n"); if(head!=NULL) do printf("%st%sn",p->name,p->tele); p=p->next; while(p!=NULL); void main ID *head=NULL; int choise; printf("tt* * * * C语言课程设计之同学电话薄管理系统 * * * *nnnnn"); printf("ttttt -计科0805田凯 n"); while(1) printf("n"); printf("t 菜单: n"); printf("tt 1.输入 n"); printf("tt 2.显示 n"); printf("tt 3.查找 n"); printf("tt 4.插入 n"); printf("tt 5.删除 n"); printf("tt 6.修改 n"); printf("tt 0.退出 n"); printf("n"); printf("n"); printf("请选择(0-6):"); scanf("%d",&choise); getchar; switch(choise) case 1: head=creat; /*如果输入1,则指针指向creat函数*/ break; case 2: print(head); /*如果输入2,则指针指向print函数*/ break; case 3: head=search(head); /*如果输入3,则指针指向search函数*/ break; case 4: head=insert(head); /*如果输入4,则指针指向insert函数*/ break; case 5: head=delet(head);/*如果输入5,则指针指向delet函数*/ break; case 6: head=modify(head);/*如果输入6,则指针指向delet函数*/ break; case 0: exit(0); /*如果输入0,则退出程序*/ break; default :printf("输入错误,请重新输入!n"); /若输入其他则显示输入错误 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define ID struct id struct id char name20; char tele20; ID *next; ; int pc=0;/全局变量 ID *creat /创建链表 ID *p1,*p2,*head; char str20; p1=p2=head=NULL; printf("tt请开始输入记录(当输入#时结束 )!n"); while(1) printf("请输入姓名:n");scanf("%s",str);getchar; if(strcmp(str,"#")=0) break; p1=(ID*)malloc(sizeof(ID); strcpy(p1->name,str); printf("请输入电话号码");scanf("%s",p1->tele);getchar; if(head=NULL) head=p1; p2=p1; else p2->next=p1; p2=p1; pc+; p2->next=NULL; return(head); /*输入/添加记录*/ ID *insert(ID *head) ID *temp,*p1,*p2; printf("插入操作开始!n"); temp=(ID *)malloc(sizeof(ID); printf("请输入姓名:n");scanf("%s",temp->name);getchar; printf("请输入电话号码:n");scanf("%s",temp->tele);getchar; if (head=NULL) head=temp; temp->next=NULL; else p1=head; while(p1!=NULL) p2=p1; p1=p1->next; p2->next=temp; temp->next=p1; printf("插入成功"); pc+; return (head); /*删除记录*/ ID *delet(ID *head) ID *p1,*p2; char str20; printf("请输入要删除的姓名:");scanf("%s",str);getchar; p1=head; if (head=NULL) printf("没有记录n"); goto end; while(p1!=NULL && strcmp(p1->name,str) p2=p1;p1=p1->next; if(p1=NULL) printf("未找到符合记录!n"); else if(strcmp(p1->name,str)=0) if (p1=head) head=p1->next; else p2->next=p1->next; printf("删除成功!n"); pc-; end:return head; /*查找记录*/ ID *search(ID *head) ID *p1,*p2; int flag=0; char c; printf("请输入姓名的首字:");scanf("%c",&c);getchar; p1=head; while( p1!=NULL) if(p1->name0=c) printf("姓名:%st电话号码:%sn",p1->name,p1->tele); flag=1; p2=p1;p1=p1->next; if(flag=0) printf("未找到符合记录!n"); return head; /*修改记录*/ ID *modify(ID *head) ID *p1,*p2; int mode; char str20; printf("请输入要修改的记录姓名:");scanf("%s",str);getchar; p1=head; while( p1!=NULL) if(strcmp(p1->name,str)=0) printf("1.姓名:%st2.电话号码:%sn",p1->name,p1->tele); printf("请选择要修改选项:n"); printf("1.修改姓名n2.修改电话号码n"); scanf("%d",&mode);getchar; if(mode=1) printf("请输入修改后的姓名n"); scanf("%s",p1->name);getchar; printf("修改后的记录为:n姓名:%st电话号码:%sn",p1->name,p1->tele); else if(mode=2) printf("请输入修改后的电话号码n"); scanf("%s",p1->tele);getchar; printf("修改后的记录为:n姓名:%st电话号码:%sn",p1->name,p1->tele); else printf("输入有误!n"); break; p2=p1;p1=p1->next; if(p1=NULL) printf("未找到符合要求的记录!n"); return head; /*显示结果函数*/ void print(ID *head) ID *p; p=head; printf("ttt*n"); printf("显示结果是:n"); printf("姓名电话号码n"); if(head!=NULL) do printf("%st%sn",p->name,p->tele); p=p->next; while(p!=NULL); void main ID *head=NULL; int choise; printf("tt* * * * C语言课程设计之同学电话薄管理系统 * * * *nnnnn"); printf("ttttt -计科0805田凯 n"); while(1) printf("n"); printf("t 菜单: n"); printf("tt 1.输入 n"); printf("tt 2.显示 n"); printf("tt 3.查找 n"); printf("tt 4.插入 n"); printf("tt 5.删除 n"); printf("tt 6.修改 n"); printf("tt 0.退出 n"); printf("n"); printf("n"); printf("请选择(0-6):"); printf(" 如果您第一次使用,请先建立通讯录请输入1 n"); scanf("%d",&choise); getchar; switch(choise) case 1: head=creat; /*如果输入1,则指针指向creat函数*/ break; case 2: print(head); /*如果输入2,则指针指向print函数*/ break; case 3: head=search(head); /*如果输入3,则指针指向search函数*/ break; case 4: head=insert(head); /*如果输入4,则指针指向insert函数*/ break; case 5: head=delet(head);/*如果输入5,则指针指向delet函数*/ break; case 6: head=modify(head);/*如果输入6,则指针指向delet函数*/ break; case 0: exit(0); /*如果输入0,则退出程序*/ break; default :printf("输入错误,请重新输入!n"); /若输入其他则显示输入错误