c语言编写通讯录.docx
《c语言编写通讯录.docx》由会员分享,可在线阅读,更多相关《c语言编写通讯录.docx(13页珍藏版)》请在冰点文库上搜索。
c语言编写通讯录
沈阳航空工业学院
课程设计
题目:
同学通讯录信息管理
一、课程设计时间
二、课程设计内容
用C语言编写软件完成以下任务:
能够对同学的通讯信息进行数字化管理,人数不少于3人。
通讯信息应保存到文件myfile.dat中。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“同学信息录入”、“同学信息查询(根据姓名,或编号等。
)”、“显示全部同学信息”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段7
四、个人总结10
五、参考文献11
六、源程序11
一、需求分析
本题是一道需要综合运用文件,结构体,循环,函数调用等的题目。
利用文件的读写可方便的完成对同学数据的输入,查询,保存。
利用结构体可将不同类型的数据组成一个有机的整体,以便引用,而结构体数组又可存放多名同学的不同类型的数据,这更方便了对同学相关信息的存取。
要在程序界面一菜单的形式调用各功能函数,就要运用大量的函数调用,从而实现模块化程序设计。
经过对题目的分析可知,整个程序大致分为5个模块,其中每一个模块对应一个函数,它们的功能分别是录入,查询,显示,保存,在这些函数中,录入,查询,保存要严格按照题目要求。
录入:
主要实现程序最处运行时对同学相关数据的录入。
查询:
允许按照姓名对同学相关数据进行查询。
保存:
成功实现对文件的保存。
显示信息:
对保存的信息全部显示。
退出:
成功退出系统。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)录入函数:
图2录入函数流程图
(2)查询函数:
图3查询函数流程图
(3)查找函数(find函数):
图4查找函数流程图
(4)保存函数:
图5保存函数流程图
三、核心技术的实现说明及相应程序段
本程序的关键技术主要有一下几个:
菜单的设计和功能函数调用技术,结构体的输入技术,结构体数组的输出技术以及定义全局变量记录数n等。
程序主要由5个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能,在这些函数中,查询函数,保存函数是程序中较为核心的部分,同时程序使用的find函数为查询,全局变量记录数n也在各函数运行中起了举足轻重的作用。
具体过程技术请看完整的源程序代码。
具体函数段如下
查询函数:
在此函数中,我运用了按姓名查询的方式,定义了字符型数组,为简洁又建立了FIND子定义函数,其中较为核心的技术是STRCMP函数的调用,它实现了对输入名字与原数据的一一对比,并最终得到所查找的值返回给SEARCH函数实现最终的输出。
voidsearch()/*按姓名查询*/
{
chars[20];
inti;
printf("pleaseinputsearchname\n");
scanf("%s",s);
i=find(s);
if(i>n-1)
printf("notfound\n");
else
printf("%s%s%s%s\n",t[i].name,t[i].num,t[i].tele,t[i].sex);
}
intfind(char*s)/*查找函数*/
{
inti;
for(i=0;i{
if(strcmp(s,t[i].name)==0)
break;
}
returni;
}
图6查找功能运行界面
保存函数:
此函数的核心问题是信息的保存和MYFILE.DAT文件的建立,为了达到此目的我定义了一个文件指针:
FILE*FP,并用到FOPEN函数,最终实现目标。
voidsave()/*保存*/
{
inti;
FILE*fp;
if((fp=fopen("myfile.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("\nSavingfile\n");
for(i=0;i{
fprintf(fp,"%-20s%-30s%-10s%-20s",t[i].name,t[i].num,t[i].tele,t[i].sex);
fprintf(fp,"\r\n");
}
fclose(fp);
printf("***************savesuccess***************\n");}
图7保存文件功能运行界面
四、个人总结
通过本次计算机实践训练,使我充分掌握了结构体和文件操作的方法,同时我还实践了建立程序的目录菜单,调用各个子函数,并使其尽可能的人性化。
在实践中,我感受到合作的力量,在共同讨论问题的同时感到了合作的快乐。
通过实践,让我对C语言有了更充分的认识,通过耐心专研掌握很多知识,对各个函数有了更明确的体会,感受到设计程序的快乐,使我对未来充满信心!
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#defineM50
intn;
structclassmate/*定义数据结构*/
{
charname[20];
charnum[30];
chartele[10];
charsex[20];
}t[M];
intenter()/*录入*/
{inti;
{
printf("\npleaseinputnum\n");
scanf("%d",&n);
printf("pleaseinputrecord\n");
printf("namenumbertelephonesex\n");
printf("-------------------------------------------\n");
for(i=0;i{
scanf("%s%s%s%s",t[i].name,t[i].num,t[i].tele,t[i].sex);
printf("------------------------------------------\n");
}
}
}
voidsearch()/*按姓名查询*/
{
chars[20];
inti;
printf("pleaseinputsearchname\n");
scanf("%s",s);
i=find(s);
if(i>n-1)
printf("notfound\n");
else
printf("%s%s%s%s\n",t[i].name,t[i].num,t[i].tele,t[i].sex);
}
intfind(char*s)/*查找函数*/
{
inti;
for(i=0;i{
if(strcmp(s,t[i].name)==0)
break;
}
returni;
}
voidsave()/*保存*/
{
inti;
FILE*fp;
if((fp=fopen("myfile.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("\nSavingfile\n");
for(i=0;i{
fprintf(fp,"%-20s%-30s%-10s%-20s",t[i].name,t[i].num,t[i].tele,t[i].sex);
fprintf(fp,"\r\n");
}
fclose(fp);
printf("***************savesuccess***************\n");
}
voidoutput()/*显示*/
{
inti;
printf("----------------------------------------------\n");
printf("namenumbertelephonesex\n");
printf("----------------------------------------------\n");
for(i=0;i{
printf("%6s%6s%6s%6s\n",t[i].name,t[i].num,t[i].tele,t[i].sex);
}
}
main()
{
inti;
printf("****************MENU********************\n");
printf("0.Enterrecord\n");
printf("1.Searchrecordonname\n");
printf("2.Savethefile\n");
printf("3.outputallmessage\n");
printf("4.Quit\n");
printf("****************************************\n");
while
(1)
switch(getch())
{
case'0':
enter();break;
case'1':
search();break;
case'2':
save();break;
case'3':
output();break;
case'4':
exit(0);
}
}