C语言通讯录设计.docx
《C语言通讯录设计.docx》由会员分享,可在线阅读,更多相关《C语言通讯录设计.docx(24页珍藏版)》请在冰豆网上搜索。
C语言通讯录设计
C语言程序设计课程设计报告
信息通讯录
一:
设计目的
1.掌握结构化程序设计的基本思想;
2.熟练掌握结构及数组的设计和应用;
3.了解综合系统设计的基本原理;
4.提高C语言程序设计的综合应用能力。
二:
基本数据结构设计
一:
程序功能简介
1.实现通讯录系统中,添加新记录、删除记录、显示记录信息、按名字查找信息和退出系统等功能。
2.实现录入人员的编号、姓名、个人邮箱、地址、联系电话。
因此采取结构体来实现这些功能。
如下:
/*定义通讯录*/
typedefstruct
{
charnum[N];
charname[20];
chartele[15];
charadd[20];
charemal[15];
}
三:
系统结构设计
本系统设计的函数是由一个主函数几个子函数组成的。
系统结构设计说明了整个系统的功能模块结构以及调用关系,本设计采用自顶向下的结构化方法,将每个模块自顶向下展开。
系统功能模块图如图1所示:
模块设计:
1.主控模块
在该模块中,提供系统主菜单,用户通过主菜单实现添加新记录、删除记录、显示记录信息、按名字查找信息和退出系统等功能。
2.菜单模块
提供用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:
3.输入通讯录模块
将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。
其流程图如图4所示:
4.显示通讯录模块
显示通讯录通过循环函数将全部的通讯录信息以此显示出来,其流程图如图5所示:
5.find函数模块
find函数通过输入姓名与原通讯录中存储的姓名,两字符串的比较,找到与输入姓名相同的姓名的位置,其流程图如图6所示:
6.删除通讯录
模块删除通讯录通过数组中该位置之后的数据存放位置向前移一位来实现删除功能,其流程图如图7所示:
7.查找通讯录模块
查找通讯录通过find函数找到所查通讯录的位置,再将该位置的通讯录信息显示出来,其流程图如图8所示:
假
真
假
真
图8查找函数流程图
8.修改通讯录模块
修改通讯录通过find函数找到所要修改通讯录位置,显示出信息,确认修改后,即可逐项修改,其流程图如图9所示:
9.添加通讯录模块
在存储未满的情况下,用find函数找到要添加的位置后即可逐项添加通讯录信息,其流程图如图10所示:
10.退出通讯录模块
在使用完通讯录后,按6键便会退出系统,其流程图如图11所示:
四:
测试结果
进入系统后,系统会出现图12所示菜单
图12
输入0可进行输入联系人,按1可显示全部通讯录内容,如图13所示
图13
在主菜单中输入3后,输入要找的姓名。
在系统没有要找信息时,系统会给出提示,确认用户是否继续查找,如图14所示:
图14
在确认修改后,按系统提示依次修改便可修改
在确认修改并输入修改后信息以后,系统便能按用户意愿修改的通讯录信息,如图15所示:
图15
在主菜单中输入2后输入要删除的姓名,再按1键确定,系统便自动删除要删除的通讯录信息,如图15所示:
图15
在主菜单中按6键,便可退出系统,如图16所示:
图16
五:
设计体会
紧紧张张的一个学期即将过去,从刚开始的不只如何下手到最后看到自己的程序按自己的想法运行,心里时不时的有一种喜悦。
通过这几天的实习,我认识到书上和老师教的内容是有限的,要想掌握更多的知识我们必须多动脑,多思考,不断地靠自己去学习,同时我们还应向他人请教,从而了解更多自己不知道的知识。
回头看来,编写这个程序并不像原来想像的那么难,我们要相信自己,无论做什么事,只要我们仔细的思考了,认真的去做了,我们就一定能做好。
通过这周的编程我发现了自己的一些不足,在编写时经常犯一些低级错误,由于自己的马虎而浪费了不少时间。
在不知如何进行的时候有一种不自信,总想别人正在做什么,这些不足既然被发现就得在以后的做事中注意,争取改掉。
经过一周的努力我掌握了一些基本的C语言进行程序设计的技巧,更深的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,同时学会了一些调试一个较长程序的基本方法,提高了书写程序设计开发文档的能力(书写课程设计报告)。
这一周的实践让我受益匪浅,在此我要感谢孜孜不倦指导我们的老师,感谢在我困惑时给我帮助的同学,感谢学校给我们一个这样动手动脑的机会,使我们在理论与实践相结合方面又得到了一次很好的锻炼,让我们得到很大的收获。
六:
附录
#include
#include
#defineN80
/*定义通讯录*/
typedefstruct
{
charnum[N];
charname[20];
chartele[15];
charadd[20];
charemal[15];
}STUDENT;STUDENTstu[N];
intmenu();
intshuru(STUDENTstu[N]);
voidxianshi(STUDENTstu[],intn);
intshanchu(STUDENTstu[],intn);
voidchazhao(STUDENTstu[],intn);
voidxiugai(STUDENTstu[],intn);
inttianjia(STUDENTstu[],intn);
inttuichu();
/*主函数*/
intmain()
{intlength,m=0;
while(m>=0)
{switch(menu())
{case0:
length=shuru(stu);break;
case1:
xianshi(stu,length);break;
case2:
length=shanchu(stu,length);break;
case3:
chazhao(stu,length);break;
case4:
xiugai(stu,length);break;
case5:
length=tianjia(stu,length);break;
case6:
m=tuichu();break;
default:
printf("输入错误,请重新输入\n");}}
}
/*主菜单*/
intmenu()
{intm;
printf("欢迎使用通讯录管理系统\n");
printf("主菜单\n");
printf("\t\t\t0.输入通讯录\n");
printf("\t\t\t1.显示通讯录\n");
printf("\t\t\t2.删除通讯录\n");
printf("\t\t\t3.查找通讯录\n");
printf("\t\t\t4.修改通讯录\n");
printf("\t\t\t5.添加通讯录\n");
printf("\t\t\t6.退出通讯录\n");
do{printf("\t\t\t请输入选项0-6\n");
scanf("%d",&m);}
while(m<0||m>6);
returnm;}
/*输入通讯录*/
intshuru(STUDENTstu[N])
{
inti,n;
printf("\n请输入要加入通讯录的数目\n");
scanf("%d",&n);
printf("请输入信息\n");
for(i=0;i{printf("请输入编号:
\n");
scanf("%s",stu[i].num);
printf("\n请输入姓名:
\n");
scanf("%s",stu[i].name);
printf("\n请输入电话:
\n");
scanf("%s",stu[i].tele);
printf("\n请输入地址:
\n");
scanf("%s",stu[i].add);
printf("\n请输入emal:
\n");
scanf("%s",stu[i].emal);
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\nemal:
%s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);
}
returnn;}
/*显示通讯录*/
voidxianshi(STUDENTstu[],intn)
{inti;
for(i=0;i<=n-1;i++)
{
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\nemal:
%s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);
}
}
/*查找函数*/
intfind(STUDENTstu[],intn)
{inti;
chars[20];
printf("请输入的姓名\n");
scanf("%s",s);
for(i=0;iif(strcmp(s,stu[i].name)==0)
returni;
returni;}
/*删除通讯录*/
intshanchu(STUDENTstu[],intn)
{inti,j,ch;
i=find(stu,n);
if(i>n-1)
{printf("没有找到要删除的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)n=shanchu(stu,n);}
else
{
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\nemal:
%s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);
printf("是否确定要删除:
%d是%2d否\n",1,0);}
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j{
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j-1].tele,stu[j].tele);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j-1].emal,stu[j].emal);
}
n--;
printf("删除成功!
\n");
}returnn;
}
/*查找通讯录*/
voidchazhao(STUDENTstu[],intn)
{inti,ch;
i=find(stu,n);
if(i>n-1)
printf("没有找到要查找的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)chazhao(stu,n);
else
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\nemal:
%s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);
}
/*修改通讯录*/
voidxiugai(STUDENTstu[],intn)
{inti,ch;
i=find(stu,n);
if(i>n-1)
{printf("没有找到要修改的记录,是否重新输入1/0\n");
scanf("%d",&ch);
if(ch==1)xiugai(stu,n);}
else
{
printf("编号:
%s\n姓名:
%s\n电话:
%s\n地址:
%s\nemal:
%s\n",stu[i].num,stu[i].name,stu[i].tele,stu[i].add,stu[i].emal);
printf("是否确定要修改:
%d是%2d否\n",1,0);}
scanf("%d",&ch);
if(ch==1)
{printf("编号:
\n");
scanf("%s",stu[i].num);
printf("\n姓名\n:
");
scanf("%s",stu[i].name);
printf("\n电话:
\n");
scanf("%s",stu[i].tele);
printf("\n地址:
\n");
scanf("%s",stu[i].add);
printf("\nnemal:
\n");
scanf("%s",stu[i].emal);
printf("修改成功!
\n");}}
/*添加通讯录*/
inttianjia(STUDENTstu[],intn)
{inti,j;
if(N<=n+1)
printf("储存已满");
else
{
printf("请输入要插入的位置\n");
scanf("%d",&i);
for(j=n-1;j>=i;j--)
{
strcpy(stu[j+1].name,stu[j].name);
strcpy(stu[j+1].tele,stu[j].tele);
strcpy(stu[j+1].add,stu[j].add);
strcpy(stu[j+1].emal,stu[j].emal);
}
printf("请输入要插入的信息:
\n");
printf("编号:
\n");
scanf("%s",stu[i].num);
printf("\n请输入姓名:
\n");
scanf("%s",stu[i].name);
printf("\n请输入电话:
\n");
scanf("%s",stu[i].tele);
printf("\n请输入地址:
\n");
scanf("%s",stu[i].add);
printf("\n请输入emal:
\n");
scanf("%s",stu[i].emal);
printf("添加成功!
\n");
n++;}
returnn;
}
/*退出通讯录*/
inttuichu()
{
intn;
n=-1;
printf("谢谢使用");
returnn;}