C语言课程设计通讯录管理系统.docx
- 文档编号:3280865
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:26
- 大小:305.08KB
C语言课程设计通讯录管理系统.docx
《C语言课程设计通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计通讯录管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
C语言课程设计通讯录管理系统
课程设计说明书NO.1
通讯录信息管理系统设计——韩秀鹏
1.课程设计的目的
为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。
通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。
此外通过课程设计提高逻辑思考能力和解决实际问题的能力。
程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
其次课程设计有利于治学态度的培养。
程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。
因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。
这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。
通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。
本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。
程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。
可运用于小的管理软件。
软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。
通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。
沈阳大学
课程设计说明书NO.2
2.设计方案论证
2.1设计思路
建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。
主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。
在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。
图1.通讯录信息管理系统
沈阳大学
课程设计说明书NO.3
2.2程序设计
2.2.1根据图1定义数据类型建立函数
typedefstruct
{
charscore;/*编号*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charage[8];/*年龄*/
charadds[20];/*住址*/
}Person;
2.2.2主函数及其流程图
定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序的功能。
每次使用都会调用主函数。
主函数主要是利用switch语句对数据进行处理,流程图如下:
沈阳大学
课程设计说明书NO.4
图2.主函数流程图
沈阳大学
课程设计说明书NO.5
2.2.3增加函数及其流程图
2.2.3.1.添加通讯录记录流程图:
图3.添加通讯录记录流程图
沈阳大学
课程设计说明书NO.6
2.2.3.2.显示通讯录记录流程图:
图4.显示通讯录记录流程图:
沈阳大学
课程设计说明书NO.7
2.2.3.3.删除通讯录记录流程图:
2.2.3.4.查询通讯录记录流程图:
图6.查询通讯录记录流程图
图5.删除通讯录记录流程图
沈阳大学
课程设计说明书NO.8
2.2.3.5.修改通讯录记录流程图:
图7.修改通讯录记录流程图
沈阳大学
课程设计说明书NO.9
2.3源程序
#include
#include
#include
typedefstruct
{
charscore;/*编号*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charage[8];/*年龄*/
charadds[20];/*住址*/
}Person;
Personpe[80];
intmenu_select()
{
charc;
do{
system("cls");
printf("\t\t*****通讯录*****\n");
printf("\t\t┌───────┐\n");
printf("\t\t│1.添加记录│\n");
printf("\t\t│2.显示记录│\n");
printf("\t\t│3.删除记录│\n");
printf("\t\t│4.查询记录│\n");
printf("\t\t│5.修改记录│\n");
printf("\t\t│6.保存记录│\n");
printf("\t\t│0.退出程序│\n");
printf("\t\t└───────┘\n");
printf("\t\t请您选择(0-6):
");
c=getchar();
}while(c<'0'||c>'6');
return(c-'0');
}
intInput(Personper[],intn)
{
inti=0;
沈阳大学
课程设计说明书NO.10
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t编号:
");
scanf("\t%d",&per[n+i].score);
printf("\t姓名:
");
scanf("\t%s",per[n+i].name);
printf("\t年龄:
");
scanf("\t%s",per[n+i].age);
printf("\t电话号码:
");
scanf("\t%s",per[n+i].num);
printf("\t通讯住址:
");
scanf("\t%s",per[n+i].adds);
printf("\t电子邮箱:
");
scanf("\t%s",per[n+i].email);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
voidDisplay(Personper[],intn)
{
inti;
printf("----------------------------------------------------------------------\n");/*格式*/
printf("编号姓名年龄电话号码通讯地址电子邮箱\n");
printf("----------------------------------------------------------------------\n");
for(i=1;i { printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email); if(i>1&&i%10==0) { printf("\t-----------------------------------\n"); printf("\t"); 沈阳大学 课程设计说明书NO.11 system("pause"); printf("\t-----------------------------------\n"); } } printf("----------------------------------------------------------------------\n"); system("pause"); } intDelete_a_record(Personper[],intn) { chars[20]; inti=0,j; printf("\t请输入想删除记录中的名字: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return(n); } for(j=i;j { strcpy(per[j].num,per[j+1].num); strcpy(per[j].name,per[j+1].name); strcpy(per[j].age,per[j+1].age); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].email,per[j+1].email); per[j].score=per[j+1].score; } printf("\t\t\t已经成功删除! \n"); return(n-1); } voidQuery_a_record(Personper[],intn) { intm; 沈阳大学 课程设计说明书NO.12 printf("\t\n请选择查询方式: \n"); printf("\t┌──────┐\n"); printf("\t│1------姓名│\n"); printf("\t│2------电话│\n"); printf("\t│3------地址│\n"); printf("\t│4------返回│\n"); printf("\t└──────┘\n"); printf("请选择: "); scanf("%d",&m); while(m! =1&&m! =2&&m! =3&&m! =4) { printf("输入错误,请重新选择: "); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t请输入想查询的姓名: "); scanf("\t%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人年龄: %s\n",per[i].age); printf("\t电话号码: %s\n",per[i].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t请输入想查询的电话: "); scanf("\t%s",s); while(strcmp(per[i].num,s)! =0&&i 沈阳大学 课程设计说明书NO.13 if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人姓名: %s\n",per[i].name); printf("\t此人年龄: %s\n",per[i].age); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); }; if(m==3) { chars[20]; inti=0; printf("\t请输入想查询的地址: "); scanf("\t%s",s); while(strcmp(per[i].adds,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t此人编号: %d\n",per[i].score); printf("\t此人姓名: %s\n",per[i].name); printf("\t此人年龄: %s\n",per[i].age); printf("\t电话号码: %s\n",per[i].num); printf("\t电子邮箱: %s\n",per[i].email); }; } voidChange(Personper[],intn) { chars[20]; inti=0; printf("\t请输入想修改的记录中的名字: "); scanf("%s",s); 沈阳大学 课程设计说明书NO.14 while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t编号: "); scanf("\t%d",&per[i].score); printf("\t姓名: "); scanf("\t%s",per[i].name); printf("\t年龄: "); scanf("\t%s",per[i].age); printf("\t电话号码: "); scanf("\t%s",per[i].num); printf("\t通讯住址: "); scanf("\t%s",per[i].adds); printf("\t电子邮箱: "); scanf("\t%s",per[i].email); printf("\t修改成功! "); } voidWritetoText(Personper[],intn) { inti=0; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("\t保存到文件\n");/*输入文件名*/ printf("\t请输入所保存的文件名: "); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t无法打开文件\n"); system("pause"); return; } fprintf(fp,"******************************************通讯录******************************************\n"); fprintf(fp,"编号姓名年龄电话号码通讯地址电子邮箱\n"); 沈阳大学 课程设计说明书NO.15 fprintf(fp,"------------------------------------------------------------------------------------------\n"); while(i { fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email); i++; } fprintf(fp,"------------------------------------------------------------------------------------------\n"); fprintf(fp,"***************************************共有%d条记录****************************************\n",n); fclose(fp);/*关闭文件*/ printf("保存成功! \n"); } voidmain()/*主函数*/ { intn=0; for(;;) { switch(menu_select()) { case1: printf("\n\t添加记录到通讯录\n");/*添加记录*/ n=Input(pe,n); break; case2: printf("\n\t\t\t通讯录记录表\n");/*显示记录*/ Display(pe,n); break; case3: printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(pe,n);/*删除记录*/ printf("\t"); system("pause"); break; case4: printf("\n\t在通讯录中查找记录\n"); 沈阳大学 课程设计说明书NO.16 Query_a_record(pe,n);/*查找记录*/ printf("\t"); system("pause"); break; case5: printf("\n\t修改通讯录中的记录\n"); Change(pe,n);/*修改数据*/ printf("\t"); system("pause"); break; case6: printf("\n\t保存功能\n"); WritetoText(pe,n);/*保存数据*/ printf("\t"); system("pause"); break; case0: printf("\n\t\t谢谢使用,再见! \n");/*结束程序*/ printf("\n\t\t"); system("pause"); exit(0); } } } 沈阳大学 课程设计说明书NO.17 3.设计结果与分析 3.1运行程序 将源程序编译、链接后生成可执行文件,运行该文件会看到如图8所示界面。 图8.菜单函数界面 运行主函数时,首先调用函数menu();,该函数主要是利用输出函数printf进行输出,其结图所示。 3.2增加信息 3.2.1输入1显示添加通讯录界面。 图9.添加通讯录界面图 这一函数实现了对字符串赋值的功能[1]。 系统提示通讯录使用者输入相应信息, 沈阳大学 课程设计说明书NO.18 然后用scanf函数获取输入数据。 每次输入结束后,系统输出询问是否继续添加的信息,然后执行switch语句,如果返回值是“y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。 3.2.2输入2显示显示通讯录界面。 图10.显示通讯录界面图 这一函数实现了对字符串赋值的功能[2]。 系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。 ,然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。 3.2.3在主菜单输入3显示删除通讯录界面。 图11.选择删除通讯录记录显示图图12.成功删除通讯录记录显示图 沈阳大学 课程设计说明书NO.19 在主菜单界面输入数字“3”,执行deletecard()函数删除用户。 当通讯录执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出。 然后征求确认。 每次删除成功后系统会询问是否继续删除,然后执行相应操作。 删除后,通讯录里的显示记录显示: 图13.删除后通讯录显示记录图 删除通讯录记录时首先选择出名字,其次在显示删除后程序才真正的删除,再进入显示界面就不会再显示原来所谓信息 沈阳大学 课程设计说明书NO.20 3.2.4在主菜单输入4显示查询通讯录界面。 图13.查询通讯录记录界面图 这一函数提示通讯录管理人员可以有姓名、电话、地址三种输入方式,调用scanf函数获取输入信息,然后执行if语句,则会显示查询用户信息信息;此外在此操作过程中选择1、2、3、分别可以按照姓名、电话号码、家庭住址进行快速查询。 沈阳大学 课程设计说明书NO.21 3.3.5在主菜单输入5显示修改通讯录界面。 图14.通讯录选择修改记录图 这一函数实现了对字符串赋值的功能[5]。 系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。 每次输入结束后,系统输出询问是否继续修改信息,然后执行if语句,如果返回值是“y”,则继续执行修改信息,否则返回主菜单。 修改后,通讯录里的显示记录: 图15.通讯录修改后显示图 沈阳大学 课程设计说明书NO.22 3.3.6在主菜单输入6显示保存通讯录界面。 图16.保存通讯录记录界面图 进入保存功能后,系统会调用voidWritetoText(Personper[],intn)函数 并且提示通讯录管理者关于保存的信息进行记录自动保存。 从而便于我们直接查询。 保存后打开tongxunlu.txt文件的截图: 图17.tongxunlu.txt文件显示图 沈阳大学 课程设计说明书NO.23 4.设计体会 往事如观流水,来者如昂高山! 转眼间学习C语言也有半年了。 这次的程序实设计实验是对自己进入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计 通讯录管理系统 语言 课程设计 通讯录 管理 系统