C语言集中上机实验报告通讯录管理.docx
- 文档编号:4235641
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:18
- 大小:140.78KB
C语言集中上机实验报告通讯录管理.docx
《C语言集中上机实验报告通讯录管理.docx》由会员分享,可在线阅读,更多相关《C语言集中上机实验报告通讯录管理.docx(18页珍藏版)》请在冰豆网上搜索。
C语言集中上机实验报告通讯录管理
C语言集中上机实验报告
学院:
年级:
班级:
姓名:
学号:
题目
通讯录管理
1、设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
试为通信录数据定义类型和定义通信录变量,实现功能:
存取、显示、删除记录、查询记录等功能。
2、要求:
界面友好,易于操作
一、程序设计
1、主要功能
添加:
添加通讯录记录。
显示:
显示通讯录记录。
删除:
删除通讯录记录。
查询:
查询通讯录记录。
保存:
将信息保存到文件。
2、数据类型定义
typedefstruct
{
charscore;/*编号*/
charname[10];/*姓名*/
charnum[15];/*号码*/
charemail[20];/*邮箱*/
charage[8];/*年龄*/
charadds[20];/*住址*/
}Person;
3、函数的定义
intmenu_select()
intInput(Personper[],intn)
voidDisplay(Personper[],intn)
intDelete_a_record(Personper[],intn)
voidQuery_a_record(Personper[],intn)
voidWritetoText(Personper[],intn)
4、每个函数模板可实现的功能
●添加:
可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。
●显示:
可以以表格形式输出所有通讯录里的记录
●删除:
输入欲删除的那个人的名字后,会自动删除他(她)的记录内容
●查询:
可以选择用姓名、电话、地址三种方式查询
●保存:
输入文件名(带后缀名,如.txt)后,即可将通讯录信息保存到文件
二、流程图
三、
三、程序代码
#include
#include
#include
typedefstruct
{
charscore;/*编号*/
charname[15];/*姓名*/
charnum[15];/*号码*/
charadds[20];/*住址*/
charpost[15];/*邮编*/
charqq[20];/*QQ号*/
}Person;
Personpe[1000];
intmenu_select()
{
charc;
do{
system("cls");
printf("\t***************************************************************\n");
printf("\t***************欢迎进入*******************\n");
printf("\t*----重庆邮电大学通信与信息工程学院2010级学生信息管理系统----*\n");
printf("\t***************************************************************\n");
printf("添加个人信息:
1\n"
"显示个人信息:
2\n"
"删除个人信息:
3\n"
"查询个人信息:
4\n"
"保存个人信息:
5\n"
"退出系统:
0\n");
printf("\t***************************************************************\n");
printf("\t\t请选择(0-5):
");
c=getchar();
}while(c<'0'||c>'5');
return(c-'0');
}
intInput(Personper[],intn)
{
inti=0;
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].num);
printf("\t通讯地址:
");
scanf("\t%s",per[n+i].adds);
printf("\t邮编:
");
scanf("\t%s",per[n+i].post);
printf("\tQQ号:
");
scanf("\t%s",per[n+i].qq);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
voidDisplay(Personper[],intn)
{
inti;
printf("\t***************************************************************\n");
printf("*---编号姓名电话号码通讯地址邮编QQ号--*\n");
printf("\t***************************************************************\n");
for(i=1;i { printf("\t%-5d%-10s%-13s%-15s%-8s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].num,per[i-1].adds,per[i-1].post,per[i-1].qq);/*对长度的定义*/ if(i>1&&i%10==0) { printf("\t***********************************\n"); printf("\t"); system("pause"); printf("\t***********************************\n"); } } printf("\t***************************************************************\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].adds,per[j+1].adds); strcpy(per[j].post,per[j+1].post); strcpy(per[j].qq,per[j+1].qq); per[j].score=per[j+1].score; } printf("\t\t\t已经成功删除! \n"); return(n-1); } voidQuery_a_record(Personper[],intn) { intm; printf("\t*****************\n"); printf("\t请选择查询方式: \n"); printf("\t*****************\n"); printf("\t姓名: 1\n"); printf("\t电话: 2\n"); printf("\t地址: 3\n"); printf("\t邮编: 4\n"); printf("\tQQ号: 5\n"); printf("\t返回: 6\n"); printf("\t*****************\n"); printf("\t请选择: "); scanf("%d",&m); while(m! =1&&m! =2&&m! =3&&m! =4&&m! =5&&m! =6) { 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].name); printf("\t电话号码: %s\n",per[i].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮编: %s\n",per[i].post); printf("\tQQ号: %s\n",per[i].qq); }; if(m==2) { chars[20]; inti=0; printf("\t请输入想查询的电话号码: "); scanf("\t%s",s); while(strcmp(per[i].num,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].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮编: %s\n",per[i].post); printf("\tQQ号: %s\n",per[i].qq); }; 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].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮编: %s\n",per[i].post); printf("\tQQ号: %s\n",per[i].qq); }; if(m==4) { chars[20]; inti=0; printf("\t请输入想查询的邮编: "); scanf("\t%s",s); while(strcmp(per[i].post,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].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮编: %s\n",per[i].post); printf("\tQQ号: %s\n",per[i].qq); }; if(m==5) { chars[20]; inti=0; printf("\t请输入想查询的QQ号: "); scanf("\t%s",s); while(strcmp(per[i].qq,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].num); printf("\t通讯地址: %s\n",per[i].adds); printf("\t邮编: %s\n",per[i].post); printf("\tQQ号: %s\n",per[i].qq); }; } 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,"*编号姓名电话号码通讯地址邮编QQ号*\n"); fprintf(fp,"------------------------------------------------------------------------------------------\n"); /*fprintf函数与scanf函数相仿,都是格式化读写函数,读写对象是磁盘文件*/ while(i { fprintf(fp,"%-3d\t%-6s\t%-13s\t%-20s\t%-8s\t%-20s\n",per[i].score,per[i].name,per[i].num,per[i].adds,per[i].post,per[i].qq); 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"); Query_a_record(pe,n);/*查找记录*/ printf("\t"); system("pause"); break; case5: printf("\n\t保存功能\n"); WritetoText(pe,n);/*保存数据*/ printf("\t"); system("pause"); break; case0: printf("\n\Thankyou! \n");/*结束程序*/ printf("\n\t\t"); system("pause"); exit(0); } } } 四、各功能的效果 初始界面: 添加个人信息: 显示个人信息 删除个人信息 <没有记录> <有记录> 查询个人信息 保存个人信息 五、心得体会 通过本次编程对一些简单的运用加深了了解,因为很久没有编程了,对C语言的很多知识都陌生了,通过参考网上的代码和同学的讲解才完成了本次编程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 集中 上机 实验 报告 通讯录 管理