C语言通讯录管理程序设计实验报告.docx
- 文档编号:2866811
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:9
- 大小:54.46KB
C语言通讯录管理程序设计实验报告.docx
《C语言通讯录管理程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言通讯录管理程序设计实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
C语言通讯录管理程序设计实验报告
C语言集中上机
实验报告
学院:
通信与信息工程
班级:
0101009
学号:
**********
******
********
一.实验目的
为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
二、实习基本要求
(1)上机实习时间一周;周五检查程序,最迟下周一提交报告。
(2)学生从后面参考题中选取一道题目来做,自己选题的学生必需经指导老师的同意方可,否则视为无效选题。
限1人选的题目只能由1人单独完成,限2人选的题目可由1-2人完成。
(3)模块化程序设计
(4)锯齿型书写格式
(5)必须上机调试通过
三.实验内容
题目二:
通讯录管理(限最多1人完成)
1、设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
试为通信录数据定义类型和定义通信录变量,实现功能:
存取、显示、删除记录、查询记录等功能。
2、要求:
界面友好,易于操作
四.流程图
五.设计过程与思想
1.定义一个结构体,储存每个联系人的基本信息,并定义一个结构体数组,最多储存80个人
typedefstruct
{
charname[10];//姓名
charnum[15];//号码
charadds[20];//住址
charyoubian[7];//邮政编码
}Person;
Personpe[80];
2.定义一个登陆函数.
调用system("pause");前面需调用#include
system是一个系统调用;pause是一个系统操作;
整体作用是让窗口等待一个回车,这样可以方便查看程序输出。
logon()
{
printf("\n\n\n\t\t\t通讯录管理系统\n\n");
system("pause");
}
3.定义一个输出菜单并进行选择的函数,功能包括添加记录,显示记录,删除记录,查询记录,退出系统.采用do-while循环,使用户可进行多次操作,并在每次操作完成后又回到菜单这个页面,在用户输入不正确时重新输入.
intmenu()
{
charc;
logon();
do{
system("cls");//清屏
printf("\n\n");
printf("\t\t\t*****通讯录*****\n");printf("\t\t\t┌───────┐\n");
printf("\t\t\t│1.添加记录│\n");
printf("\t\t\t│2.显示记录│\n");
printf("\t\t\t│3.删除记录│\n");
printf("\t\t\t│4.查询记录│\n");
printf("\t\t\t│0.退出程序│\n");
printf("\t\t\t└───────┘\n");
printf("\t\t\t请您选择(0-4):
");
c=getchar();
}while(c<'0'||c>'4');
return(c-'0');
}
4.定义一个添加记录的函数,传递的参数是结构体数组和数组中元素的个数,采用while循环可让用户重复输入,将每次输入的内容储存在结构体数组中,使用变量i记录用户添加记录的个数,返回结构体数组的元素个数为原来的加上i.当用户选择不再添加时退出循环.
intInput(Personper[],intn)
{
inti=0;
charsign;
while(sign!
='n'&&sign!
='N')
{
printf("\t姓名:
");
scanf("\t%s",per[n+i].name);
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].youbian);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
5.定义显示记录的函数,传递的参数是结构体数组和数组中元素的个数.
voidDisplay(Personper[],intn)
{
inti;
printf("---------------------------------------------------------------------------\n");
printf("姓名电话号码通讯地址邮政编码\n");
printf("---------------------------------------------------------------------------\n");
for(i=1;i { printf("%10s%15s%18s%15s\n",per[i-1].name,per[i-1].num,per[i-1].adds,per[i-1].youbian); } printf("------------------------------------------------------------------\n"); system("pause"); } 6.定义删除函数,传递的参数是结构体数组和数组中元素的个数.先让用户输入想要删除人的姓名,采用while循环在结构体数组中找到此人,若没有找到,则输出通讯录中没有此人! 若找到了,则采用for循环依次把结构体数组中每个元素后面字符串变量的值赋给前一个,达到删除效果,然后输出已经成功删除! 并返回结构体数组的元素个数为原来的减去1. intDelete(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].adds,per[j+1].adds); strcpy(per[j].youbian,per[j+1].youbian); } printf("\t\t\t已经成功删除! \n"); return(n-1); } 7.定义查询函数,传递的参数是结构体数组和数组中元素的个数.先让用户输入想要查询人的姓名,采用while循环在结构体数组中找到此人,若没有找到,则输出通讯录中没有此人! 若找到了,组输出该人的信息. voidQuery(Personper[],intn) { chars[20]; inti=0; printf("\t请输入想查询的姓名: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t电话号码: %s\n",per[i].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮政编码: %s\n",per[i].youbian); } 8.主函数,先定义一个变量n来记录每次操作后结构体数组中的元素个数,采用无条件的for循环让用户可进行多次操作,for循环中采用switch选择语句,根据用户在菜单中的选择来具体调用以上函数,每次调用完成后使用break退出switch选择语句,由于menu()函数中有do-while循环,所以每次退出switch选择语句时又会输出主菜单供用户进行选择,而主函数中的for循环又将执行switch选择语句,直到用户在主菜单中选择0退出通讯录管理系统. voidmain() { intn=0; for(;;) { switch(menu()) { 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(pe,n); printf("\t"); system("pause"); break; case4: printf("\n\t在通讯录中查找记录\n"); Query(pe,n); printf("\t"); system("pause"); break; case0: printf("\n\t\t谢谢使用,再见! \n"); printf("\n\t\t"); system("pause"); exit(0);//正常退出 } } } 心得体会 写算法之前需要对题的要求掌握的清楚明了,知道应该运用哪些知识来解决问题,在写算法时要注意细节,对每一步要分析到位,否则可能出现错误。 通过上机编写算法了解到熟练掌握知识是很重要的,如果不能熟练掌握,就会对题目感到无从下手。 有时在程序设计中,不一定非要全部采用自己编写的源代码;如果想要较好地利用某种编程语言自带的库函数,则必须充分的理解该编程语言库函数的功能,特点,否则无法引用。 我总结了学习中遇到的一些问题,最为突出的,书本上的知识与老师的讲解都比较容易理解,但是当自己采用刚学的知识点编写程序时却感到十分棘手,有时表现在想不到适合题意的算法,有时表现在算法想出来后,只能将书本上原有的程序段誊写到自己的程序中再加以必要的连接以完成程序的编写。 针对这一情况,我会严格要求自己,熟练掌握算法思想,尽量独立完成程序的编写与修改工作,只有这样,才能够提高运用知识,解决问题的能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯录 管理 程序设计 实验 报告