关于C语言的通讯录课程设计.docx
- 文档编号:5410189
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:31
- 大小:165.45KB
关于C语言的通讯录课程设计.docx
《关于C语言的通讯录课程设计.docx》由会员分享,可在线阅读,更多相关《关于C语言的通讯录课程设计.docx(31页珍藏版)》请在冰豆网上搜索。
关于C语言的通讯录课程设计
软件学院
课程设计报告
设计名称:
C语言课程设计
选题名称:
通讯录系统
姓名:
宋汉鼎学号:
1415935054
专业班级:
网安一班
系(院):
软件学院
设计时间:
2012.12.22~2012.12.26
设计地点:
实验室15#204
1.课程设计目的
(1)巩固和加深学生对C语言的基本知识的理解和掌握;
(2)掌握C语言编程和程序调试的基本技能;
(3)利用C语言进行简单软件设计的基本思路和方法;
(4)提高运用C语言解决实际问题的能力;
(5)掌握书写程序设计说明文档的能力。
2.课程设计任务与要求:
任务
设计题目从任务书所列选题表中选取,每人1题。
要求:
1、在处理每个题目时,要求从分析题目的需求入手,进行合理的模块设计,定义正确函数和自定义数据类型(如结构体类型)、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
2、设计的题目要求达到一定工作量(200行以上代码),并具有一定的深度。
3、程序设计语言推荐使用C,程序书写规范,源程序需加必要的注释并且缩进一致。
4、每位同学需提交可独立运行的程序;
5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书
一需求分析
利用C语言编写出通讯录程序,并且实现一个通讯录所拥有的基本功能,加强了C语言学习者将所学知识与生活实践相结合的能力,既能检验学习成果,又能发现C语言的应用市场,通讯录应用广泛,在日常生活中随处可见,最基本的通讯录至少应该满足以下要求:
1.读出功能
?
列出所有记录(每项记录只列出姓名、序列、电话号码,邮箱);
2.查询功能(姓名匹配查询;根据序列号查询;)
3.修改功能
4.增加功能(增加一个新的记录;)
5.删除功能(删除一条联系人记录;)
6.保存功能(保存所输入的项)
通讯录系统的使用很好的解决了日常生活中对联系人保存和信息修改的难题,方便了生活。
简单,易操作。
二系统设计
主要利用了C语言完成了这个小型的通讯录程序。
本程序主要实现了输入并存储联系人的通讯信息、输入所有联系人的信息、按照姓名或编号查找输入的联系人信息、修改输入的联系人信息、输出所有联系人的通讯信息、增加联系人、保存输入信息的功能。
基本功能:
1、输入密码进入系统:
通过调用字符串函数strcmp,将键入字符串与源程序中的字符串进行比较,如果吻合,出现“欢迎进入系统”字样,按任意键进入系统,反之,出现“密码错误“字样,按任意键,结束进程。
2、输入并存储联系人的信息:
通过输入联系人的编号、姓名、和电话号码,电子邮箱,然后就可以把数据保存在建立的list文件里面。
3、打印联系人的所有信息:
通过一个printf语句就可以把所有输入的联系人的信息打印在屏幕上。
4、通过编号和姓名查找联系人:
这个功能通过strcmp比较输入的字符串和保存的字符串是否有一致的,然后将吻合的字符串所在的联系人信息条目输出到屏幕上。
5、删除信息有误或信息变动的联系人信息:
这个功能通过调用字符串函数strcmp和strcpy来实现,以下一条信息来覆盖错误的信息,从而达到删除目的效果。
6、修改某条联系人的信息:
这个功能仍然要通过字符串函数strcmp函数去比较键入字符串和已输入字符串,如果有相同的,就将所在的这一条联系人信息加以修改,如果没有则直接输出“没有此联系人”。
7、存入所输入信息功能:
这个功能通过使用文件操作,定义文件指针,将输入信息存放在文件夹内,方便下次查看
系统的结构图,如图:
有功能模块图和流程图
三详细设计
1、首先写入头文件
#include
#include
#include
2、定义一个结构体存储联系人的信息
typedefstruct
{
charscore[10];//联系人序列
charname[20];//联系人姓名
charsex[8];//联系人性别
charnum[15];//联系人号码
charemail[20];//联系人邮箱
}Person;
3、然后写入定义一个菜单函数,用于介绍通讯系统所具有的所有功能选项,以及输入数字实现选择功能。
intmenu_select()//选择菜单函数
{
charc;
do
{
system("cls");//清屏
printf("\t\t@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\t\t@#通讯录@@@\n");
printf("\t\t@#1.添加联系人@@@\n");
printf("\t\t@#2.显示信息@@@\n");
printf("\t\t@#3.删除信息@@@\n");
printf("\t\t@#4.查询信息@@@\n");
printf("\t\t@#5.修改信息@@@\n");
printf("\t\t@#6.保存信息@@@\n");
printf("\t\t@#0.退出通讯录@@@\n");
printf("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("\t\t*************************\n");
printf("\t\t请您选择(0-6):
");
c=getchar();
}
while(c<'0'||c>'6');
return(c-'0');
}
4、输入信息函数(包括:
序列、名字、性别、手机号码、电子邮箱等。
)以及选择是否需要继续添加信息。
intInput(Personper[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t序列:
");
scanf("\t%s",&per[n+i].score);
printf("\t姓名:
");
scanf("\t%s",per[n+i].name);
printf("\t性别:
");
scanf("\t%s",per[n+i].sex);
printf("\t号码:
");
scanf("\t%s",per[n+i].num);
printf("\t邮箱:
");
scanf("\t%s",per[n+i].email);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
6、显示函数(显示所输入的所有联系人信息)
fvoidDisplay(Personper[],intn)
{
inti;
printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");/*格式*/
printf("序列姓名性别号码电子邮箱\n");
printf("--------------------------------------------------------------------------------------------------------------------\n");
for(i=1;i { printf("%-9s%-10s%-15s%-20s\n",per[i-1].score,per[i-1].name,per[i-1].sex,per[i-1].num,per[i-1].email); } system("pause"); } 7、删除目标联系人函数 intDelete_a_news(Personper[],intn) { chars[20]; inti=0,j; printf("\t请输入想删除记录中的名字: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t没有此联系人! \n"); return(n); } for(j=i;j { strcpy(per[j].score,per[j+1].score); strcpy(per[j].name,per[j+1].name); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); } printf("\t\t\t已经成功删除! \n"); return(n-1); } 8、查询信息函数函数(分为姓名查询和序列号码查询) voidQuery_a_record(Personper[],intn) { intm; printf("\t\n请选择查询方式: \n"); printf("\t********************\n"); printf("\t*1.联系人姓名*\n"); printf("\t*2.联系人序列号*\n"); printf("\t********************\n"); printf("请选择: "); scanf("%d",&m); while(m! =1&&m! =2) { printf("输入错误,请重新选择: "); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t请输入想查询联系人的姓名: "); scanf("\t%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t记录中没有此联系人! \n"); return; } printf("\t联系人序列: %s\n",per[i].score); printf("\t联系人姓名: %s\n",per[i].name); printf("\t联系人性别: %s\n",per[i].sex); printf("\t联系人号码: %s\n",per[i].num); printf("\t联系人邮箱: %s\n",per[i].email); }; if(m==2) { chars[20]; inti=0; printf("\t输入查询联系人序列: "); scanf("\t%s",s); while(strcmp(per[i].score,s)! =0&&i if(i==n) { printf("\t系统中没有此记录! \n"); return; } printf("\t联系人序列: %s\n",per[i].score); printf("\t联系人姓名: %s\n",per[i].name); printf("\t联系人性别: %s\n",per[i].sex); printf("\t联系人号码: %s\n",per[i].num); printf("\t联系人邮箱: %s\n",per[i].email); }; } 9、联系人信息修改函数 fvoidChange(Personper[],intn) { chars[20]; inti=0; printf("\t请输入想修改的联系人的名字: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t系统中没有此联系人! \n"); return; } printf("\t序列: "); scanf("\t%s",&per[i].score); printf("\t姓名: "); scanf("\t%s",per[i].name); printf("\t性别: "); scanf("\t%s",per[i].sex); printf("\t号码: "); scanf("\t%s",per[i].num); printf("\t邮箱: "); scanf("\t%s",per[i].email); printf("\t修改成功! "); } 3、写一个存储函数来把数据保存到文件中。 voidWritetoText(Personper[],intn) { inti=0; FILE*fp;/*定义文件指针*/ charfilename[20];/*定义文件名*/ printf("\t保存到文件\n");/*输入文件名*/ printf("\t请输入所保存的文件名: "); scanf("\t%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("\t无法打开文件\n"); system("pause"); return; } fprintf(fp,"***************************通讯录********************************\n"); fprintf(fp,"序列姓名性别号码电子邮箱\n"); fprintf(fp,"---------------------------------------------------------------------------------------------------\n"); while(i { fprintf(fp,"%-2s\t%-10s\t%-15d\t%-20d\t\n",per[i].score,per[i].name,per[i].sex,per [i].num,per[i].email); i++; } fprintf(fp,"---------------------------------------------------------------------------\n"); fprintf(fp,"**************共有%d条联系人信息**************\n",n); fclose(fp);/*关闭文件*/ printf("保存成功! \n"); } 密码函数(进入系统前先输对密码) voidmima() { charmm[8]; charshishu[]="123456"; printf("\t\t\t\t请输入您的密码: \n"); gets(mm); if(strcmp(mm,shishu)==0) {printf("\t\t\t欢迎进入系统! ! ! \n"); printf("请按任意键进入系统,谢谢……\n"); system("pause"); } else { printf("\t\t\t\t您的密码错误\n"); printf("按任意键自动退出程序\n"); exit(0); } } 10、写出主函数,调用所有自定义函数。 voidmain()/*主函数*/ { voidmima(); intn=0; mima(); for(;;) { switch(menu_select()) { case1: printf("\n\t添加联系人到系统\n");/*添加*/ n=Input(pe,n); break; case2: printf("\n\t联系人记录表\n");/*显示记录*/ Display(pe,n); break; case3: printf("\n\t从系统中删除信息\n"); n=Delete_a_news(pe,n);/*删除记录*/ printf("\t"); system("pause"); break; case4: printf("\n\t在系统中查找信息\n"); Query_a_record(pe,n);/*查找记录*/ printf("\t"); system("pause"); break; case5: printf("\n\t修改系统信息\n"); Change(pe,n);/*修改数据*/ printf("\t"); system("pause"); break; case6: printf("\n\t保存功能\n"); WritetoText(pe,n);/*保存数据*/ printf("\t"); system("pause"); break; case0: printf("\t┌────────-\n"); printf("\t│gameover│\n"); printf("\t│谢谢使用,再见! │\n"); printf("\t└────────┘\n");/*结束程序*/ printf("\n\t\t"); system("pause"); exit(0); } } } 四设计与调试分析 1、选择菜单操作的核心步骤: c=getchar(); } while(c<'0'||c>'6'); return(c-'0'); 2、输入信息的核心步骤: printf("\t序列: "); scanf("\t%s",&per[n+i].score); printf("\t姓名: "); scanf("\t%s",per[n+i].name); printf("\t性别: "); scanf("\t%s",per[n+i].sex); printf("\t号码: "); scanf("\t%s",per[n+i].num); printf("\t邮箱: "); scanf("\t%s",per[n+i].email); 3、显示信息的核心代码如下: printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");/*格式*/ printf("序列姓名性别号码电子邮箱\n"); printf("----------------------------------------------------------------------\n"); for(i=1;i { printf("%-9s%-10s%-15s%-20s\n",per[i-1].score,per[i-1].name,per[i-1].sex,per[i-1].num,per[i-1].email); } 在程序的设计中,我写的代码的错误很多。 刚开始不知道为什么然后根据错误查找方法找到了。 有的时候,忘了将中英文切换,将中英文标点混为一谈;用if……else时else找不到对应的if;调用函数时调用语句不规范等。 做完这个程序,并修正所有错误后,觉得除了一些低级错误意外,又从错误中学到了很多,觉得有进步了一点。 五系统运行与演示 1、密码输入界面: 2、主菜单界面: 2、输入1得到输入联系人信息的界面,如图。 3、输入2得到的打印所有联系人的信息的界面,如图。 4、选择3得到的运行界面如下图。 4、输入4得到不及格的学生如下图。 5、输入5修改信息,如图。 6、输入6得到界面如下图。 7、选择0退出系统。 七、附录(代码) #include #include #include typedefstruct { charscore[10];//联系人序列 charname[20];//联系人姓名 charsex[8];//联系人性别 charnum[15];//联系人号码 charemail[20];//联系人邮箱 }Person; Personpe[100]; intmenu_select()//选择菜单函数 { charc; do { system("cls");//清屏 printf("\t\t@@@@@@@@@@@@@@@@@@@@@@@@@\n"); printf("\t\t@#通讯录@@@\n"); printf("\t\t@#1.添加联系人@@@\n"); printf("\t\t@#2.显示信息@@@\n"); printf("\t\t@#3.删除信息@@@\n"); printf("\t\t@#4.查询信息@@@\n"); printf("\t\t@#5.修改信息@@@\n"); printf("\t\t@#6.保存信息@@@\n"); printf("\t\t@#0.退出通讯录@@@\n"); printf("\t\t^^^^^^^^^^^^^^^^^^^^^^^^^\n"); printf("\t\t*************************\n"); printf("\t\t请您选择(0-6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 语言 通讯录 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)