模块设计
本通讯录管理系统功能模块共包括9个部分:1.输入数据、2.显示数据、
3.插入数据、4.删除数据、5.查看数据、6.修改数据、7.保存数据、
8.返回主菜单、9.退出系统.
一.总体设计
通讯录的每一条信息包括:姓名、性别、住址、联系电话。
- 输入数据:可以一次完成若干条信息的输入.
- 显示数据:完成全部通讯录信息的显示.
- 插入数据:可完成对数据的添加.
- 删除数据:完成按姓名删除一条通讯信息.
- 查看数据:完成按姓名查找通讯信息并显示.
- 修改数据:修改一条通讯录信息.
- 保存数据:把所有输入的的信息保存好.
- 返回主菜单:在执行其他步骤时可以立即跳回主菜单页面.
- 退出系统:执行完各操作退出系统.
- 详细设计
- 主函数:
void main()
{int i;system("color f0");screen();Sleep(3000);print();while(1){printf("请输入你的选择(1~9):");loop:scanf("%d",&i);if(i<1||i>9){printf("输入有误,请在1~9中进行选择:");goto loop;}switch(i){case 1:inputdata();break;case 2:lookdata(head);break;case 3:insert();break;case 4:deleted();break;case 5:find(head);break;case 6:update(head);break;case 7:save(head);break;case 8:print();break;case 9:exit(1);break;}}
}
进入菜单页面
3.输入数据:
void input(stu *p1) //输入相关数据
{printf("姓名:");scanf("%s",&p1->name);printf("性别:");scanf("%s",&p1->sex);printf("手机号:");scanf("%s",&p1->phone);printf("住址:");scanf("%s",&p1->address);
}stu * inputdata() //数据输入的函数
{stu *p1,*p2;int i=1;p1=(stu *)malloc(sizeof(stu));if(p1!=NULL){head=p1;printf("\n\t\t\t☆☆☆输入数据☆☆☆\n");printf("------------------------------------------------------------------\n");printf("在姓名处输入“ok”代表输入数据结束\n");while(i){printf("姓名:");scanf("%s",&p1->name);if(strcmp(p1->name,"ok")==0){printf("\n输入完毕!\n");printf("========================================================================\n");i=0;p2->next=NULL;free(p1);p1=p2;}else{printf("性别:");scanf("%s",&p1->sex);printf("手机号:");scanf("%s",&p1->phone);printf("住址:");scanf("%s",&p1->address);printf("=====================================\n");p2=p1;p1=(stu *)malloc(sizeof(stu));if(p1!=NULL){p2->next=p1;}}}return(p1->next);}
}
4.显示数据:
stu * lookdata(stu *p1) //查看数据的函数
{printf("\n\t\t\t☆☆☆显示数据☆☆☆\n");printf("----------------------------------------------------------------------\n");while(p1!=NULL){printf("姓名:%s\n",p1->name);printf("性别:%s\t",p1->sex);printf("手机号:%s\t",p1->phone);printf("住址:%s\n",p1->address);printf("======================================================================\n");p1=p1->next;}return p1;
}
5.插入数据:
void insert() //插入数据
{int i;char named[20];stu *p1,*p2,*p3;p1=head;p3=(stu *)malloc(sizeof(stu));p3->next=NULL;printf("\n\t\t\t☆☆☆插入数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入插入者的资料:\n");input(p3);printf("\n插入选项\n");printf("1.首位置插入\t2.尾位置插入\t3.前插\n");printf("请输入你的选择:");scanf("%d",&i);switch(i){case 1:p3->next=p1;head=p3;break;case 2:while(p1->next!=NULL){p2=p1;p1=p1->next;}p1->next=p3;break;case 3:printf("请输入姓名(前插):");scanf("%s",named);while(strcmp(named,p1->name)!=0){p2=p1;p1=p1->next;}p2->next=p3;p3->next=p1;break;}printf("插入成功!\n");printf("======================================================================\n");return;
}
6.删除数据:
void deleted() //删除数据
{stu *p1,*p2;char Name[20]; //想要删除的人的姓名printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入要删除的姓名:");scanf("%s",Name);p1=head;if(head==NULL){printf("内存空空神马都没有!\n");printf("======================================================================\n");return;}if(strcmp(Name,p1->name)==0){head=p1->next;printf("删除成功!\n");printf("======================================================================\n");return;}while(p1!=NULL&&(strcmp(Name,p1->name)!=0)){p2=p1;p1=p1->next;}if(p1==NULL){printf("此人不存在!\n");printf("======================================================================\n");return;}if(p1->next!=NULL){p1=p1->next;p2->next=p1;printf("删除成功!\n");printf("======================================================================\n");return;}else{p2->next=NULL;printf("删除成功!\n");printf("======================================================================\n");return;}
}
7.查看数据:
find(stu *p2) //通过姓名查找查看数据的函数
{char name[20];int b=0;printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入您想查找人的姓名:");scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("你要找到的数据\n");printf("姓名:%s\n",p2->name);printf("性别:%s\t",p2->sex);printf("手机号:%s\t",p2->phone);printf("住址:%s\n",p2->address);printf("======================================================================\n");b=1;}p2=p2->next;}if(b==0){printf("\n您要查找的人不存在!\n");}
}
8.修改数据:
update(stu *p2) //通过姓名查找修改数据
{char name[20];int b=0,i;printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改人的姓名:");scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("该同学的基本信息\n");printf("姓名:%s\n",p2->name);printf("性别:%s\t",p2->sex);printf("手机号:%s\t",p2->phone);printf("住址:%s\n",p2->address);printf("\n请选择要修改的信息\n");printf("\t1.姓名\t2.性别\t3.手机号\t4.住址\n");printf("\n您的选择是(1~4):");scanf("%d",&i);printf("请输入修改之后的内容\n");switch(i){case 1:printf("姓名:");scanf("%s",&p2->name);break;case 2:printf("性别:");scanf("%s",&p2->sex);break;case 3:printf("手机号:");scanf("%s",&p2->phone);break;case 4:printf("住址:");scanf("%s",&p2->address);break;}printf("\n修改成功!\n");printf("=========================================================================\n");b=1;}p2=p2->next;}if(b==0){printf("没有找到该人的资料!\n");}
}
9.保存数据:
save(stu *p2) //保存数据
{FILE *fp;char file[15];printf("\n\t\t\t☆☆☆保存数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("输入文件名:");scanf("%s",file);if((fp=fopen(file,"w"))==NULL){printf("cannot open this file\n");exit(0);}fprintf(fp,"姓名\t性别\t手机号\t住址\n");while(p2!=NULL){fprintf(fp,"%s\t",p2->name);fprintf(fp,"%s\t",p2->sex);fprintf(fp,"%s\t",p2->phone);fprintf(fp,"%s\n",p2->address);p2=p2->next;}printf("\n保存成功!\n");printf("======================================================================\n");fclose(fp);
}
10.屏幕显示
void screen()
{int i;char s[251]={"欢迎使用由空心木偶制作通讯录管理系统,\n\n\t\t\t本系统用于通讯录管理----排序,打印\n\n\n\t\tWelcome to use produced by 计科214 class address book\n\n\t\t management system,sorting,printing"};printf("\n================================================================================\n");printf("\n\n\n\t\t\t");for(i=0;s[i]!=0;i++){Sleep(30);printf("%c",s[i]);}printf("\n\n\n\n\n\n\n\n\t\t ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您旅途愉快~ ~\n");printf("================================================================================\n");}11.返回主菜单:
void main()
{int i;system("color 4e");screen();Sleep(3000);print();while(1){printf("请输入你的选择(1~9):");loop:scanf("%d",&i);if(i<1||i>9){printf("输入有误,请在1~9中进行选择:");goto loop;}switch(i){case 1:inputdata();break;case 2:lookdata(head);break;case 3:insert();break;case 4:deleted();break;case 5:find(head);break;case 6:update(head);break;case 7:save(head);break;case 8:print();break;case 9:exit(1);break;}}
}
- 三、各模块的功能介绍,参数说明。
第五部分:调试结果
- 代码输入完成后对其进行编译,无错误后进行调试运行,运行之后会进入主菜单,系统界面就会显示在桌面,然后按照前面提示的内容输入数字对其进行操作。
好了到这次,此次的大作业就基本结束了,按照代码依次加入到运行环境就可以运行了。偶然翻U盘看到大一写的小系统,拿出来分享给大家,祝大家早日完成期末大作业,轻松放假!!!期待你的关注与收藏。
如果有问题也可以留言,一起探讨。