文件名称:数据结构课程设计_通讯录的制作.doc
文件大小:851KB
文件格式:DOC
更新时间:2016-07-13 08:12:01
课程设计
数据结构 课程设计 void main() { list *head=NULL;//头指针初始化 FILE *fp;//定义文件指针 int m;//功能代号吗 do{ printf("\n #############################请选择################################\n"); printf(" # 1、信息输入 "); printf(" 2、显示信息 #\n"); printf(" # 3、查找姓名 "); printf(" 4、删除信息 #\n"); printf(" # 5、修改信息 "); printf(" 6、打开通讯录 #\n"); printf(" # 7、添加信息 "); printf(" 8、 保存 #\n"); printf(" # 9、清屏 "); printf(" 0、退出 #"); printf("\n ###################################################################\n"); printf(" 提示:信息输入和添加信息时最好存入字符,否则,在打开存储文件时,可能会出现乱码!\n"); printf("==输入要执行的功能代号:_"); scanf("%d",&m); switch(m) { case 1:enter(head);break; case 2:display(head); break; case 3:search(head); break; case 4:delete_name(head);break; case 5:change(head);break; case 6:load(head);break; case 7:insert(head);break; case 8:save(head,fp);printf("==保存成功==\n");break; case 9:system("cls");break; } } while(m!=0); } 2、信息输入: void enter(list *&head) { list *p0,*p1,*p2;//定义指针 int m;//作为判断是否继续新建的条件 FILE *fp; p0=(list *)malloc(LEN); //开辟一个新单元 p0->next=NULL;//结点指针域为空 head=p0;//第一个结点,即为头结点 printf("请输入信息建立通讯录:\n"); getchar(); scanfdata(p0);//输入数据 p2=p0; printf("是否继续按1输入,按0结束_"); scanf("%d",&m); while(m) { getchar(); p1=(list *)malloc(LEN); //开辟一个新单元 p1->next=NULL; p2->next=p1; scanfdata(p1);//输入数据 p2=p1; head->n = head->n+1;//表长 printf("是否继续按1输入,按0结束_"); scanf("%d",&m); } if(m==0) { save(head,fp);//把信息存到相应文件 } } 3、显示信息 void display(list *head) { list *p; //定义移动指针 int i; char *menu[]={"姓名","城市","电话", "QQ"}; p=head; printf("--------------------------------------------------------------------\n"); for(i=0;i<4;i++) printf("%-20s",menu[i]); printf("\n"); if (head!=NULL) while(p) { printf("%-20s",p->name); printf("%-20s",p->city); printf("%-20s",p->phone); printf("%-20s",p->qq); printf("\n"); p=p->next; } else printf("不好意思,列表为空\n"); printf("--------------------------------------------------------------------\n"); } 4、查找信息: void search(list *head ) { list *p1,*p2;//定义临时指针变量 char check_name[20]; //定义存储查找人的姓名 printf("请输入要查找的姓名\n"); scanf("%s",check_name); //输入要查找的人的姓名 if(head==NULL) { printf("\n不好意思,列表为空\n"); } p1=head; while(p1!=NULL&&strcmp(check_name,p1->name)!=0) //p1指向的不是所要找的结点,后面还有 { p2=p1; p1=p1->next; } //p1后移一个结点 if(p1!=NULL&&strcmp(check_name,p1->name)==0) //找到了用strcmp比较两个字符串 { printf(" 姓名: %s ",p1->name); printf(" 城市: %s ",p1->city); printf(" 电话: %s ",p1->phone); printf(" QQ : %s ",p1->qq); printf("\n"); }//输出结点数据 else printf("\n没有%s的通讯信息\n",check_name);//否则提示没有此人的通讯信息