c语言程序设计通讯录 2.docx
《c语言程序设计通讯录 2.docx》由会员分享,可在线阅读,更多相关《c语言程序设计通讯录 2.docx(15页珍藏版)》请在冰豆网上搜索。
c语言程序设计通讯录2
长江大学工程技术学院C语言课程设计实习报告
通讯录管理系统
学生姓名:
吴正杰学号:
序号:
19
专业班级:
计科61031
指导老师:
刘旨阳
报告日期:
2015\7\6
1.需求分析
根据题目要求,通讯录保存在文件中,要提供文件的输入和输出
能力;还有就是要提供通讯录添加(个人信息包括姓名、邮编、住址、电话号码、QQ、电子邮件等)、删除、显示、修改等基本功能。
2.概要设计?
系统总体设计是信息的输入、信息的编辑和退出。
系统功能模块如下:
3.详细设计?
1.输出通讯录用于让使用者观看通讯录里所有的信息。
2.通讯录里无信息,所以要添加信息。
用键盘逐个输入通讯录里联系人的信息。
?
?
3.查找通讯录是让使用者可以通过姓名来查找通讯录里的联系人。
?
?
?
4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后?
其作出修改。
5.删除通讯录是用来按照联系人的姓名来单独删除通讯录中一些不想要的联系人。
是
6.排序通讯录联系人来进行开头的首写字母排序。
7.退出通讯录。
4.主要源程序代码
voidmenu();//定义的函数
voidnewrecord();
voidxiugai();
voidshanchuname();
voidchazhaoname();
voidxianshi();
intdaoruwenji();
voidsave();
voidpaixu();
structfriends//定义的数组
{
charname[8];
charaddr[14];
charpc[7];
chare_mail[14];
charQQ[10];
chartel[12];
}frd[500];
intNO=10;//宏定义k定义为删除联系人的个数m定义为添加联系人的个数NO定义为原始通讯录中的联系人的个数
intk,m;
FILE*fp;
voidmenu()//主菜单
{
inta;
printf("\n\t\t|-----------欢迎您使用通讯录管理系统1.0beat版----------|");
printf("\n\t\t|[1]添加联系人;[2]删除联系人;[3]查找联系人|");
printf("\n\t\t|[4]显示联系人;[5]修改联系人;[6]排序联系人[7]退出|");
printf("\n\t\t|---------------------------------------------------------|");
printf("\n\t\t请选择您所所要的服务:
");
scanf("%d",&a);
switch(a)
{
case1:
newrecord();break;
case2:
shanchuname();break;
case3:
chazhaoname();break;
case4:
xianshi();break;
case5:
xiugai();break;
case6:
paixu();break;
case7:
exit(0);
default:
exit(0);
}
}
intmain()//主函数
{
daoruwenji();
while
(1)//1是真的进行死循环
{
menu();
}
return0;
}
voidxianshi()//打印所有的通讯录的人的信息
{
inti;
fp=fopen("jk0119.txt","r");
if(fp==0)
{
printf("\n\n\n\n\t电话簿文件不存在");
exit(0);
}
printf("\n\n********************************欢迎使用通讯录*******************************************");
printf("\n姓名地址邮编e_mailQQ手机号");
for(i=0;i{
fscanf(fp,"%s%s%s%s%s%s",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
}
for(i=0;i{
printf("\t\n%3d",i+1);
printf("%8s%14s%7s%14s%10s%12s",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
}
printf("\n\n*****************************************************************************************");
}
intdaoruwenji()//判断通讯录是否为空和如果为空就新建一个txt文本
{
if((fp=fopen("jk0119.txt","rb"))==0)//打开jk0119.txt文件
{
printf("\n\n\n\n\t电话簿文件不存在");
if((fp=fopen("contact.txt","wb"))==0)//判断文件是否为空
{
printf("\n\t\t\t\t建立失败");
exit(0);
}
else
{
printf("\n\t电话簿已建立");
printf("\n\t按任意键进入主菜单");
getch();
return(0);
}
exit(0);
}
fseek(fp,0L,2);//将读取文件的指针移至文件末端
if(ftell(fp)>0)//统计文件的字节是否为0
{
rewind(fp);
printf("\n\n\n\n\t\t\t\t\t文件导入成功");
printf("\n\t\t\t\t\t按任意键返回主菜单");
fclose(fp);
getch();
return(0);
}
printf("\n\n\n\n\t\t\t文件导入成功");
printf("\n\t\t\t电话簿文件中无任何纪录");
printf("\n\t\t\t按任意键返回主菜单");
fclose(fp);
getch();
return(0);
}
voidsave()//对修改的函数进行保存到txt文本中
{
inti;
if((fp=fopen("jk0119.txt","w"))==0)
{
printf("\n\t\t\t\t打开失败");
}
for(i=0;i{
fprintf(fp,"%s\t%14s%7s%14s%10s%12s\n",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);//打印出文件的信息
}
printf("\n\t保存文件成功");
fclose(fp);
}
voidnewrecord()//新建一个新的联系人
{
printf("\n\t\t******************请输入联系人信息************************");
printf("\n\t\t输入联系人的姓名");
scanf("%s",&frd[NO-k+m].name);
for(inti=0;i{
if(strcmp(frd[NO].name,frd[i].name)==0)
{
printf("\n\n\t姓名重复请重新新建联系人");
newrecord();
}
}
printf("\n\t\t输入联系人的地址");
scanf("%s",&frd[NO-k+m].addr);
printf("\n\t\t输入联系人的邮编");
scanf("%s",&frd[NO-k+m].pc);
printf("\n\t\t输入联系人的e_mail");
scanf("%s",&frd[NO-k+m].e_mail);
printf("\n\t\t输入联系人的QQ");
scanf("%s",&frd[NO-k+m].QQ);
printf("\n\t\t输入联系人的手机号码");
scanf("%s",&frd[NO-k+m].tel);
if(strlen(frd[NO-k+m].tel)==11)
{
printf("输入的电话号码合法");
}
else
{
printf("请重新输入11位合法的数字");
scanf("%s",&frd[NO-k+m].tel);
}
m++;
save();
printf("是否继续添加新联系人(y/n):
");
if(getch()=='y')
{
newrecord();
}
}
voidshanchuname()//对联系人信息进行全部的删除
{
inti,j;
charname[14];
printf("\n\t\t输入联系人的姓名");
fflush(stdin);
scanf("%s",name);
for(i=0;i{
if(strcmp(name,frd[i].name)==0)
{
printf("%8s%14s%7s%14s%10s%12s\n",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
printf("\n\n\t是否删除该联系人的所有信息(y/n):
");
if(getch()=='y')
{
for(j=i;j{
frd[j]=frd[j+1];
}
k++;
printf("\n\t已经删除了该联系人");
save();
printf("\n\t是否继续删除联系人(y/n):
");
if(getch()=='y')
{
shanchuname();
}
}
menu();
}
}
printf("\n\n\t通讯录中不存在该联系人");
}
voidchazhaoname()//查找通讯录里的联系人
{
inti;
charname[14];
printf("\n\t输入联系人的姓名");
fflush(stdin);
scanf("%s",name);
for(i=0;i{
if(strcmp(name,frd[i].name)==0)
{
printf("%8s%14s%7s%14s%10s%11s\n",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
menu();
}
}
}
voidxiugai()//对联系人的部分信息进行修改
{
inti,a;charname[14];
printf("\n\n\t输入联系人的姓名");
fflush(stdin);
scanf("%s",name);
for(i=0;i{
if(strcmp(name,frd[i].name)==0)
{
printf("%8s%14s%7s%14s%10s%13s\n",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
printf("\n\n\t是否确定修改该联系人(y/n):
");
if(getch()=='y')
{
printf("\n\n\t************************************************");
printf("\n\t[1]姓名[2]地址[3]邮编");
printf("\n\t[4]邮箱[5]QQ[6]手机号码[7]返回");
printf("\n\n\t************************************************\n");
printf("\n\t请输入序号");
scanf("%d",&a);
switch(a)
{
case1:
printf("姓名:
");scanf("%s",frd[i].name);break;
case2:
printf("地址:
");scanf("%s",frd[i].addr);break;
case3:
printf("邮编:
");scanf("%s",frd[i].pc);break;
case4:
printf("邮箱:
");scanf("%s",frd[i].e_mail);break;
case5:
printf("QQ:
");scanf("%s",frd[i].QQ);break;
case6:
printf("11位手机号码:
");scanf("%s",frd[i].tel);break;
case7:
menu();
default:
xiugai();
}
printf("\n\t\t您的修改结果为:
");
printf("\n\t姓名:
%s",frd[i].name);
printf("\n\t地址:
%s",frd[i].addr);
printf("\n\t邮编:
%s",frd[i].pc);
printf("\n\t邮箱:
%s",frd[i].e_mail);
printf("\n\tQQ:
%s",frd[i].QQ);
printf("\n\t手机号码:
%12s",frd[i].tel);
save();
return;
}
else
{
menu();
}
}
}
printf("\n\n");
}
voidpaixu()//对联系人进行按字母进行排序
{
structfriendsfr[500];
structfriendst;
inti,j;
for(i=0;ifr[i]=frd[i];
for(i=0;i{
for(j=1;j{
if(strcmp(fr[i].name,fr[j].name)>0)
{
t=fr[i];
fr[i]=fr[j];
fr[j]=t;
}
}
}
printf("\n\n姓名地址邮编e_mailQQ手机号\n");
for(i=0;i{
printf("%8s%20s%7s%14s%10s%12s\n",frd[i].name,frd[i].addr,frd[i].pc,frd[i].e_mail,frd[i].QQ,frd[i].tel);
}
Save();
}
本程序中大量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。
5.调试分析过程描述
1.软件进入界面后按任意键进入主菜单:
2.在软件后面按[4]导入和显示所有的联系人。
3在菜单栏接着按[3]查找通讯录里的任意联系人。
4在菜单栏接着按[5]进行联系人的姓名地址邮编邮箱QQ号手机号码的修改。
5.在菜单栏中选择[2]进行单个联系人删除。
6.在菜单栏中选择[6]进行对所有的联系人进行排序。
7.退出通讯录。
6.课程设计总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.C语言已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为计算机专业的大学来说掌握C语言程序的开发技术是十分重要的。
通过这次编程实践,巩固了c语言的知识,对c语言的内容有了进一步的了解,增强了动手能力,感受到了c语言的奥妙,找到了学习编程的乐趣。
同时在编程过程中,也发现了自身学习态度的问题。
由于课后又没及时时间去复习,造成了许多知识的缺多识不能很好的运用,编写过程面临困难。
事实告诫了我:
今后上课一定要认真听讲,及时复习,多动手去编程,增强实践能力。
指导教师评语:
报告成绩:
指导教师签名:
年月日