《高级语言程序设计》课程设计报告——电话簿管理系统
1
一、课程设计题目:电话簿管理系统
二、课程设计目的和要求
目的:电话簿管理程序,具有加入、删除、显示和查询电话号码的功能。
要求:1. 除有加入、删除、显示和查询功能外,还允许修改用户姓名、电话。
2. 具有缺省查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电
话资料均在屏幕上显示出来。
三、系统
与设计
(一) 系统总体设计
通过对整个系统的分析,根据上述要求,可以将这个系统的设计分为三个模块(见图1):
文件导入、通讯录编辑和退出。
通讯录管理系统
删除菜单 新建菜单 浏览菜单 查找菜单 修改菜单
图1 系统功能模块 (二) 系统详细设计
? 主函数
主函数一般设计得比较简洁,只提供部分提示语及部分功能模块函数的调用。 [程序]
void main()
{printf("\n\t\t :)欢迎使用通讯录管理系统beta"); printf("\n\t\t~~~~(>_<)~~~~ 文件导入中……请稍后……\n\n\n\n\n"); system("cls");
loadfile();
while (1)
{
mainmenu();
}
}
? 各功能模块设计
(1)主菜单函数
2
此函数功能为提供键盘式选择菜单以调用不同函数。其流程如图2所示。
开始
显示一系列功能选项
n 输入n,判断n是否是1~ 5?
根据n的值调用各功能模块函数
结束
图2 主菜单函数流程图
[程序]
void mainmenu()
{
char choice;
system("cls");
printf("\n\t\t******************** 主菜单 ********************"); printf("\n\t\t****************** 1-新建菜单 ******************"); printf("\n\t\t****************** 2-浏览菜单 ******************"); printf("\n\t\t****************** 3-查找菜单 ******************"); printf("\n\t\t****************** 4-修改菜单 ******************"); printf("\n\t\t****************** 5-删除菜单 ******************"); printf("\n\t\t****************** 6-退 出 ******************"); printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choice=getch();
switch (choice)
{
case '1':newrecord();break;
case '2':browsemenu();break;
case '3':searchmenu();;break;
case '4':modifymenu();break;
case '5':deletemenu();break;
case '6':exit(0);
default:mainmenu();
3
}
}
(2) 新建菜单函数
该函数的功能是用户需要新建联系人记录,从键盘输入并逐条写到原来的通讯录文件
中,注意采用新建而不是覆盖的方式。其流程如图3所示。
开始
新建联系人
y
是否继续新建?y/n
n
结束
图3 新建函数流程图
[程序]
void newrecord()
{
printf("\n\t\t**************** 请输入联系人信息 ****************\n"); printf("\n\t\t输入姓名:");
scanf("%s",&contact[NO].name);
printf("\n\t\t输入电话号码:");
scanf("%s",&contact[NO].phone);
printf("\n\t\t输入工作单位:");
scanf("%s",&contact[NO].adress);
printf("\n\t\t输入E-mail:");
scanf("%s",&contact[NO].e_mail);
NO++;
savefile();
printf("\n\t\t是否继续添加?(y/n):");
if (getch()=='y')
newrecord();
return;
4
}
(3) 浏览菜单函数
此函数功能为提供浏览所有联系人记录。其流程如图4所示。
开始
浏览全部联系人记录
结束
图4 浏览模块流程图
[程序]
void browsemenu()
{
int i;
system("cls");
if(NO!=0)
{
printf("\n\t\t*************** 以下为通讯录所有信息************");
for (i=0;i
方法。其流程如图5所示。
开始
按姓名查找 按号码查找
结束
图5 查找函数流程图
[程序]
void searchmenu()
{
char choice;
system("cls");
printf("\n\t\t******************* 查找菜单 *******************"); printf("\n\t\t***************** 1-按姓名查找 *****************"); printf("\n\t\t***************** 2-按电话查找 *****************"); printf("\n\t\t***************** 3-返回主菜单 *****************"); printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choice=getch();
switch (choice)
{
case '1':searchname();break;
case '2':searchphone();break;
case '3':mainmenu();break;
}
}
?按姓名查找函数。其流程如图6 所示。
6
开始
输入联系人姓名
n
是否找到此记录?
y
提示未找到此记录 显示此记录
y n
是否查找相同姓名?
结束
图6 按姓名查找函数流程图
[程序]
void searchname()
{
int mark=0;
int i;
int a=0;
char name[20];
printf("\n\t\t***************** 按姓名查找 *******************"); printf("\n\t\t请输入姓名:");
scanf("%s",name);
for(i=a;i
_<)~~~~电话簿文件不存在");
if ((fp=fopen("contact.txt","wb"))==0)
{
printf("\n\t\t\t\t%>_<%建立失败");
exit(0);
}
else
{
printf("\n\t\t\t ^_^电话簿已建立"); printf("\n\t\t\t 按任意键进入主菜单"); getch();
return(NO);
}
exit(0);
}
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)>0) /*文件不为空*/
{
16
rewind(fp); /*文件位置指针移动到文件开始位置*/ for (NO=0;!feof(fp) && fread(&contact[NO],sizeof(struct record),1,fp);NO++);
printf("\n\n\n\n\t\t\t\t :)文件导入成功"); printf("\n\t\t\t\t 按任意键返回主菜单"); getch();
return(NO);
}
printf("\n\n\n\n\t\t\t :)文件导入成功"); printf("\n\t\t\t+_+电话簿文件中无任何纪录"); printf("\n\t\t\t 按任意键返回主菜单"); getch();
return(NO);
}
(2) 文件保存函数
[程序]
void savefile()
{
int i;
if ((fp=fopen("student.txt","wb"))==0)
{
printf("\n\t\t+_+文件打开失败!\n");
}
for (i=0;i书 本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实
际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起
来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的
能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过
各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得
不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过
的知识重新温故。
经过短短一周的课程设计,我才算真正了解C语言的基本知识。运用C语言可以解决许
21
多实际问题。C语言作为一门高级和计算机编程语言,有其强大的功能。同样了解到C语言
程序设计时所需的一种严谨和认真的精神,只有这样,才能更好的适应这个日新月异的飞速
发展的社会。
七、参考书目
1、《C语言程序设计题典》 李春葆 张植民 肖忠付 清华大学出版社 2002
2、《C程序设计习题解答与上机指导》 谭浩强 清华大学出版社 2005
3、《C语言程序设计》 廖 雷 高等教育出版社 2006
八、附录(源文件) #include