班级通讯录管理系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级通讯录管理系统课
程设计报告
Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】
高级语言程序设计(1)课程设计
专业班级学号
姓名完成日期指导教师:
1.程序设计说明书
【设计题目】班级通讯录管理系统
【问题描述】
信息1002班上学生的通讯基本信息包含姓名、电话号码、QQ号和宿舍号。
对信息1002班学生的基本通讯信息进行统一整理,并可以按电话号码或姓名等查到学生个人基本通讯信息。
可以显示所有的通讯记录,并对现有的通讯记录进行修改和增删等处理。
【基本要求】
1.通过此软件可以直接录入各个学生的基本通讯信息,并且会将所有信息自动保存
到磁盘上。
2.通过此软件可以直接对已录入的各个学生的通讯基本信息进行修改,并且修改完
成后会将更改后的信息情况自动保存到原磁盘文件中。
3.通过此软件可以直接对信息1002班每个同学的基本信息情况进行查询。
【算法思想】
1.根据要求,通讯录数据以文本文件存放在文件中:
2.需要提供文件的输入输出的等操作:
3.还需要保存记录已进行修改,删除,查找的操作:
4.另外还需提供键盘式选择菜单实现功能的选择。
图1系统功能模块图
【详细设计】
主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
【程序】
图2.主函数流程图
Voidmenu()/*主界面*/
{
intn,w1;
voidenter();voidadd();voidmodify();voidbrowse();voiddelete();voidsearch(); do
{
puts("\t*******菜单**************\t\n\n");
puts("\t\t\t\t1.新建联系人");
puts("\t\t\t\t2.添加联系人");
puts("\t\t\t\t3.修改");
puts("\t\t\t\t4.删除");
puts("\t\t\t\t5.浏览");
puts("\t\t\t\t6.查找");
puts("\t\t\t\t7.退出");
puts("\n\n\t*****信息1002班通讯录*************\t\n");
printf("请选择服务种类(1-7):[]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{w1=1;getchar();}
elsew1=0;
}while(w1==1);
switch(n)
{
case1:enter();break;/*输入模块*/
case2:add();break;/*添加模块*/
【模块流程图】
main函数
delete函数
search函数
2.按照程序提示,分别输入信息1002班所有同学的通讯基本信息。
(注:这里默认
为信息1002班有30名同学,可以通过宏定义进行修改。
)
3.输入成功后,自动返回主界面。
输入“5”,进入通讯录预览,程序自动将各个已
录入同学的基本通讯信息输出到屏幕上。
4.输入“2”返回主界面。
输入“3”,进入基本通讯信息修改,按照提示进行输
入。
5.输入成功后,输入“1”浏览输入信息,输入“2”返回主界面。
输入“4”,进行
删除根据提示操作。
6.输入“6”进行查找,根据提示“1”按姓名查找,“2”按电话号码查找。
7.输入“1”浏览所查找信息,“2”返回主界面。
输入“7”退出程序。
2.程序上机调试报告
【语法错误及其排除】
1、单词拼写错误,导致出现没有定义的变量。
2、宏定义时在末尾处加上了分号,应该不加分号。
3、菜单输出时不整齐。
【算法错误及其排除】
1、逐个检查,用查找替换等。
2、在修改个人通讯信息时,不小心将姓名删除。
3.程序测试结果
1.新建联系人;图一
2.添加联系人;图二
3.修改,删除联系人信息;图三
4.浏览,查找。
图四
图一
图二
图三
图四
【收获及体会】
通过为期十多天的设计,我对《C语言》这门有了更深一步的了解。
它是程序设计的重要理论技术基础,在我们专业的学习中占据着十分重要的地位。
同时也使我们知道,要学好这门,仅学习书本上的知识是不够的,还要有较强的实践能力。
因为我们学习知识就是为了实践。
而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
运用《C语言》中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理。
通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。
4.源程序代码
#defineN30ame,stu[i].phone,stu[i].QQnum,stu[i].dorm);}
voidprintf_n(intn)
{intj;
for(j=0;j<n;j++)
{if((j!=0)&&(j%10==0)){printf("\n\nPressanykeytocontinue...:");getchar();puts(" \n\n");}
printf_one(j);
}getchar();
intload()
{FILE*fp;
inti;
if((fp=fopen("file","rb"))==NULL)
{printf("\nCannotopenfile\n");
exit(0);
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(structstudent),1,fp);
fclose(fp);
return(i-1);
}
intmodify_data(inti,intn)
{intc,w1;voidinput(inti);voidmenu();
do
{puts("\n修改选项=>\n\n1).姓名2).电话号码3).QQ号4).宿舍号5).所有数据6).取消并返回");
printf("请选择:[]\b\b");
scanf("%d",&c);
if(c>6||c<1){puts("\nChooseerror!Pleaseagain!");getchar();}
}while(c>6||c<1);
do
{switch(c)
{case1:printf("name:");scanf("%s",stu[i].name);break;
case2:printf("phone:");scanf("%s",stu[i].phone);break;
case3:printf("QQnum:");scanf("%s",stu[i].QQnum);break;
case4:printf("dorm:");scanf("%s",stu[i].dorm);break;
case5:input(i);break;
case6:menu();
}
puts("\nNow:\n");
printf_face();printf_one(i);
printf("\n确定\n\n\t1).是2).不,重新修改3).返回不保存[]\b\b");
scanf("%d",&w1);
}while(w1==2);
return(w1);
}
voidinput(inti)
{printf_face();printf("\t");
scanf("%s\t%s\t%s\t%s",stu[i].name,stu[i].phone,stu[i].QQnum,stu[i].dorm);} voidsave(intn)
{FILE*fp;inti;
if((fp=fopen("file","wb"))==NULL)
{printf("\nCannotopenfile\n");
exit(0);
for(i=0;i<n;i++)
if(stu[i].name[0]!='\0')
if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)
printf("filewriteerror\n");
fclose(fp);
}
voidprintf_back()
{
intw;voidbrowse();voidmenu();
printf("\n\n\t^_^.Successful.^_^\n\n");
printf("Whatdoyouwanttodo\n\n\t1).浏览所有\t2).返回:[]\b\b");
scanf("%d",&w);
if(w==1)browse();
elsemenu();
}
voidmain()
{
voidmenu();建联系人*******************");
puts("\t\t*******************2.添加联系人*******************"); puts("\t\t*******************3.修改*******************");
puts("\t\t*******************4.删除*******************");
puts("\t\t*******************5.浏览*******************");
puts("\t\t*******************6.查找*******************");
puts("\t\t*******************7.退出*******************");
puts("\n\n\t**************信息1002班通讯录*********************"); printf("请选择服务种类(1-7):[]\b\b");
scanf("%d",&n);
if(n<1||n>7)
{w1=1;getchar();}
elsew1=0;
}while(w1==1);
switch(n)
{
case1:enter();break;
case2:add();break;
case3:modify();break;
case4:delete();break;
case5:browse();break;
case6:search();break;
case7:exit(0);
}
}
voidenter()n",i+1);
input(i);
}
printf_back();
}
voidadd()n",i-n+1);input(i);}
save(k);printf_back();
}
voidmodify()ame)==0){k=i;s=stu[i];}
if(k==-1)printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face();printf_one(k);
w1=modify_data(k,n);
if(w1==1){printf("\n\t^_^.Successful^_^.\n\n是否继续\n\n\t1).是2).保存返回\t[]\b\b");
scanf("%d",&w0);w2=1;}
else
{w0=0;if(w2==0)stu[k]=s;}
if((w0!=1)&&(w2==1))save(n);
}while(w0==1);menu();
}
voidbrowse()n",n);
printf("\nPressanykeytoback...");
getchar();
menu();
}
voidsearch()名2).电话号码[]\b\b");
scanf("%d",&w1);if(w1<1||w1>2){printf("输入错误!请重新输入!\n");w2=1;}
}while(w2==1);
if(w1==1)
{do
{k=-1;
do
{printf("\n\nEnternamethattouwanttosearch!\nName:");
scanf("%s",;
for(i=0;i<n;i++)
if(strcmp,stu[i].name)==0){k=i;s=stu[i];}
if(k==-1)printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face();printf_one(k);
printf("\nWhatdoyouwanttodo\n\t1).继续2).返回菜单[]\b\b");
scanf("%d",&w0);
}while(w0==1);
menu();
}
else
{do
{k=-1;
{printf("\n\nEnterphonenumberthattouwanttosearch!\nphone:"); scanf("%s",;
for(i=0;i<n;i++)
if(strcmp,stu[i].phone)==0){k=i;s=stu[i];}
if(k==-1)printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face();printf_one(k);
printf("\nWhatdoyouwanttodo\n\t1).继续2).返回菜单[]\b\b"); scanf("%d",&w0);
}while(w0==1);
menu();
}
}
voiddelete()ame)==0){k=i;s=stu[i];}
if(k==-1)printf("\n\n没有记录请重新输入!");
}while(k==-1);
printf_face();printf_one(k);
printf("\n确定\n\t1).是2).返回[]\b\b");
scanf("%d",&w0);
if(w0==1){stu[k].name[0]='\0';save(n);}elsebreak;
printf("\n\t^_^.Successful^_^.\n");
printf("Whatdoyouwanttodo\n\t1).继续2).返回[]\b\b");
scanf("%d",&w1);
}while(w1==1);
menu();
}。