C语言集中上机实验报告通讯录管理Word格式.docx
《C语言集中上机实验报告通讯录管理Word格式.docx》由会员分享,可在线阅读,更多相关《C语言集中上机实验报告通讯录管理Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
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<
stdio.h>
stdlib.h>
string.h>
charname[15];
charpost[15];
/*邮编*/
charqq[20];
/*QQ号*/
Personpe[1000];
intmenu_select()
charc;
do{
system("
cls"
);
printf("
\t***************************************************************\n"
printf("
\t***************欢迎进入*******************\n"
printf("
\t*----重庆邮电大学通信与信息工程学院2010级学生信息管理系统----*\n"
printf("
添加个人信息:
1\n"
"
显示个人信息:
2\n"
删除个人信息:
3\n"
查询个人信息:
4\n"
保存个人信息:
5\n"
退出系统:
0\n"
printf("
\t\t请选择(0-5):
"
c=getchar();
}while(c<
'
0'
||c>
5'
return(c-'
}
intInput(Personper[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='
n'
&
sign!
N'
)
\t编号:
scanf("
\t%d"
&
per[n+i].score);
\t姓名:
\t%s"
per[n+i].name);
\t手机号码:
per[n+i].num);
\t通讯地址:
per[n+i].adds);
\t邮编:
per[n+i].post);
\tQQ号:
per[n+i].qq);
gets(x);
\n\t是否继续添加?
(Y/N)"
\t%c"
sign);
i++;
return(n+i);
}
{
inti;
*---编号姓名电话号码通讯地址邮编QQ号--*\n"
for(i=1;
i<
n+1;
i++)
\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"
\t"
system("
pause"
}
system("
intDelete_a_record(Personper[],intn)
chars[20];
inti=0,j;
\t请输入想删除记录中的名字:
scanf("
%s"
s);
while(strcmp(per[i].name,s)!
=0&
n)i++;
if(i==n)
{
\t通讯录中没有此人!
\n"
return(n);
for(j=i;
j<
n-1;
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;
\t\t\t已经成功删除!
return(n-1);
voidQuery_a_record(Personper[],intn)
intm;
\t*****************\n"
\t请选择查询方式:
\t姓名:
1\n"
\t电话:
2\n"
\t地址:
3\n"
\t邮编:
4\n"
\tQQ号:
5\n"
\t返回:
6\n"
\t请选择:
scanf("
%d"
m);
while(m!
=1&
m!
=2&
=3&
=4&
=5&
=6)
输入错误,请重新选择:
}
if(m==1)
chars[20];
inti=0;
\t请输入想查询的姓名:
while(strcmp(per[i].name,s)!
if(i==n)
\t对不起!
通讯录中没有此人!
return;
%d\n"
per[i].score);
%s\n"
per[i].name);
\t电话号码:
per[i].num);
per[i].adds);
per[i].post);
per[i].qq);
};
if(m==2)
\t请输入想查询的电话号码:
while(strcmp(per[i].num,s)!
if(m==3)
\t请输入想查询的地址:
while(strcmp(per[i].adds,s)!
{
if(m==4)
\t请输入想查询的邮编:
while(strcmp(per[i].post,s)!
if(m==5)
\t请输入想查询的QQ号:
while(strcmp(per[i].qq,s)!
}
FILE*fp;
/*定义文件指针*/
charfilename[20];
/*定义文件名*/
\t保存到文件\n"
/*输入文件名*/
\t请输入所保存的文件名:
filename);
if((fp=fopen(filename,"
w"
))==NULL)
\t无法打开文件\n"
return;
fprintf(fp,"
******************************************通讯录******************************************\n"
*编号姓名电话号码通讯地址邮编QQ号*\n"
------------------------------------------------------------------------------------------\n"
/*fprintf函数与scanf函数相仿,都是格式化读写函数,读写对象是磁盘文件*/
while(i<
n)
%-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);
***************************************共有%d条记录****************************************\n"
n);
fclose(fp);
/*关闭文件*/
保存成功!
voidmain()/*主函数*/
intn=0;
for(;
;
switch(menu_select())
case1:
\n\t添加记录到通讯录\n"
/*添加记录*/
n=Input(pe,n);
break;
case2:
\n\t\t\t通讯录记录表\n"
/*显示记录*/
Display(pe,n);
case3:
\n\t从通讯录中删除记录\n"
n=Delete_a_record(pe,n);
/*删除记录*/
case4:
\n\t在通讯录中查找个人信息\n"
Query_a_record(pe,n);
/*查找记录*/
case5:
\n\t保存功能\n"
WritetoText(pe,n);
/*保存数据*/
case0:
\n\Thankyou!
/*结束程序*/
\n\t\t"
exit(0);
四、各功能的效果
初始界面:
添加个人信息:
显示个人信息
删除个人信息
<
没有记录>
有记录>
查询个人信息
保存个人信息
五、心得体会
通过本次编程对一些简单的运用加深了了解,因为很久没有编程了,对C语言的很多知识都陌生了,通过参考网上的代码和同学的讲解才完成了本次编程。