模块设计
本通讯录管理系统功能模块共包括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盘看到大一写的小系统,拿出来分享给大家,祝大家早日完成期末大作业,轻松放假!!!期待你的关注与收藏。
如果有问题也可以留言,一起探讨。