C语言课程设计通讯录管理系统文档格式.docx
《C语言课程设计通讯录管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计通讯录管理系统文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
/*号码*/
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<
stdio.h>
stdlib.h>
string.h>
Personpe[80];
intmenu_select()
charc;
do{
system("
cls"
);
printf("
\t\t*****通讯录*****\n"
\t\t┌───────┐\n"
\t\t│1.添加记录│\n"
\t\t│2.显示记录│\n"
\t\t│3.删除记录│\n"
\t\t│4.查询记录│\n"
\t\t│5.修改记录│\n"
\t\t│6.保存记录│\n"
\t\t│0.退出程序│\n"
\t\t└───────┘\n"
\t\t请您选择(0-6):
"
c=getchar();
}while(c<
'
0'
||c>
6'
return(c-'
}
intInput(Personper[],intn)
{
inti=0;
课程设计说明书NO.10
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].age);
\t电话号码:
per[n+i].num);
\t通讯住址:
per[n+i].adds);
\t电子邮箱:
per[n+i].email);
gets(x);
\n\t是否继续添加?
(Y/N)"
\t%c"
sign);
i++;
return(n+i);
}
voidDisplay(Personper[],intn)
{
inti;
printf("
----------------------------------------------------------------------\n"
/*格式*/
编号姓名年龄电话号码通讯地址电子邮箱\n"
for(i=1;
i<
n+1;
i++)
%-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"
\t"
课程设计说明书NO.11
system("
pause"
}
}
printf("
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].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;
\t\t\t已经成功删除!
return(n-1);
voidQuery_a_record(Personper[],intn)
intm;
课程设计说明书NO.12
\t\n请选择查询方式:
\t┌──────┐\n"
\t│1------姓名│\n"
\t│2------电话│\n"
\t│3------地址│\n"
\t│4------返回│\n"
\t└──────┘\n"
请选择:
%d"
m);
while(m!
=1&
m!
=2&
=3&
=4)
输入错误,请重新选择:
if(m==1)
chars[20];
inti=0;
\t请输入想查询的姓名:
while(strcmp(per[i].name,s)!
if(i==n)
return;
\t此人编号:
%d\n"
per[i].score);
\t此人年龄:
%s\n"
per[i].age);
per[i].num);
\t通讯地址:
per[i].adds);
per[i].email);
};
if(m==2)
\t请输入想查询的电话:
while(strcmp(per[i].num,s)!
课程设计说明书NO.13
if(i==n)
\t此人姓名:
per[i].name);
if(m==3)
\t请输入想查询的地址:
while(strcmp(per[i].adds,s)!
{
}
voidChange(Personper[],intn)
inti=0;
\t请输入想修改的记录中的名字:
课程设计说明书NO.14
return;
per[i].score);
\t修改成功!
voidWritetoText(Personper[],intn)
FILE*fp;
/*定义文件指针*/
charfilename[20];
/*定义文件名*/
\t保存到文件\n"
/*输入文件名*/
\t请输入所保存的文件名:
filename);
if((fp=fopen(filename,"
w"
))==NULL)
\t无法打开文件\n"
fprintf(fp,"
******************************************通讯录******************************************\n"
课程设计说明书NO.15
------------------------------------------------------------------------------------------\n"
while(i<
n)
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);
***************************************共有%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"
课程设计说明书NO.16
Query_a_record(pe,n);
/*查找记录*/
case5:
\n\t修改通讯录中的记录\n"
Change(pe,n);
/*修改数据*/
case6:
\n\t保存功能\n"
WritetoText(pe,n);
/*保存数据*/
case0:
\n\t\t谢谢使用,再见!
/*结束程序*/
\n\t\t"
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]。
每次输入结束后,系统输出询问是否继续修改信息,然后执行if语句,如果返回值是“y”,则继续执行修改信息,否则返回主菜单。
修改后,通讯录里的显示记录:
图15.通讯录修改后显示图
课程设计说明书NO.22
3.3.6在主菜单输入6显示保存通讯录界面。
图16.保存通讯录记录界面图
进入保存功能后,系统会调用voidWritetoText(Personper[],intn)函数
并且提示通讯录管理者关于保存的信息进行记录自动保存。
从而便于我们直接查询。
保存后打开tongxunlu.txt文件的截图:
图17.tongxunlu.txt文件显示图
课程设计说明书NO.23
4.设计体会
往事如观流水,来者如昂高山!
转眼间学习C语言也有半年了。
这次的程序实设计实验是对自己进入