C程序课程设计报告 通讯录管理系统_第1页
C程序课程设计报告 通讯录管理系统_第2页
C程序课程设计报告 通讯录管理系统_第3页
C程序课程设计报告 通讯录管理系统_第4页
C程序课程设计报告 通讯录管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE课程设计报告课程名称C语言课程设计课题名称通讯录管理系统专业自动化班级学号姓名指导教师

湖南工程学院课程设计任务书课程名称C语言课程设计课题通讯录管理系统专业班级学生姓名学号指导老师审批任务书下达日期任务完成日期设计内容与设计要求设计内容:课题六:通讯录管理系统一、问题描述:通过该系统实现对通讯录信息进行录入、显示、修改、删除、插入、排序、保存等操作的管理。二、功能要求:1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:编号、姓名、电话号码、地址。2、本系统显示这样的菜单:请选择系统功能项:通讯信息录入通讯信息显示通讯信息保存通讯信息删除通讯信息修改通讯信息查询按编号查询按姓名查询按电话号码查询g.退出系统3、执行一个具体的功能之后,程序将重新显示菜单。4、将通讯信息保存到文件中。三、算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。编号姓名电话号码地址charcharcharchar四、测试数据:纪录数20五、其它:对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。

2、设计要求:1,学生从六个题目中任意选择并完成一个题目。要求每个学生能独立思考认真并按时完成本课程设计所包含的所有内容。2,要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给全部源程序,并做出总结。3.设计报告的完整格式应包括以下部分的内容:课题设计内容与主要功能课题分析:分析课程设计项目的实现方法程序实现步骤程序测试结果与结论程序清单总结与体会二、进度安排12月29日到1月4日时间上午下午1-4节(四小时)5-8节(四小时)12月29日布置课题,题目讲解上机编程1月1日查阅资料查阅资料1上机编程查阅资料1月3日上机编程撰写报告1月4日上机编程撰写报告附:课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分表。正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题设计内容与主要功能;二、课题分析;分析课程设计项目的实现方法,并写出类声明与核心算法实现代码。三、主要功能的实现步骤;四、程序测试与结论;应包括课程设计程序的屏幕显示,并加以简单的文字说明。五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。19-目录一、课题设计内容与主要功能············································(1)二、课题分析····························································(2)三、主要功能的实现步骤················································(3)四、程序测试结果与结论················································(6)五、总结·······························································(10)六、附件·······························································(11)评分表································································(19)一、课题设计内容与主要功能1、设计内容课题名称:通讯录管理系统(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:编号、姓名、电话号码、地址。(2)通过该系统实现对通讯录信息进行录入、显示、修改、删除、插入、保存等操作的管理。2、主要功能(1)本系统显示这样的菜单:请选择系统功能项:通讯信息录入通讯信息显示通讯信息保存通讯信息删除通讯信息修改通讯信息查询按编号查询按姓名查询按电话号码查询退出系统(2)执行一个具体的功能之后,程序将重新显示菜单。(3)将通讯信息保存到文件中。二、课题分析1、设计思路已知通讯录一般包括姓名、电话号码、地址三个基本属性,我们应该用结构体数组存储每个人的这三个基本属性。为了使得通讯录更加直观,我们可以加入编号这个属性,由于编号是自然数,因此我们可以定义编号为整型变量。通讯录当然需要存储功能,这个就可以通过visualC++自带的file函数实现。函数之间各种调用使用while和switch函数实现。整体用结构体类型数组。2、结构设计(1)主菜单:显示该系统的主要功能,方便操作(2)通讯信息录入模块:录入需要管理的通讯信息并将信息保存到文件中,以方便日后进行读取、修改、添加等操作;(3)通讯录信息显示模块:将所有通讯录信息或要查询的信息显示于屏幕,用于查看通讯录信息;(4)通讯录信息删除模块:可对有错误的通讯录信息或已经不存在的信息进行删除;(5)通讯录信息修改模块:可对有错误或更换的信息进行修改(6)通讯录信息保存模块:自动保存(7)通讯录信息查询模块:提供姓名查询和电话号码查询两种查询方式,方便找到需要的信息;(8)退出模块:退出该系统。三、主要功能的实现步骤1、主菜单显示用printf函数格式化输出主菜单选项2、主菜单功能的实现主函数voidmain(){……利用switch条件选择语句可以实现主菜单的各项功能switch(n){……case'a':add(message);break;……case'f':exit(0);break;……}}3、通讯信息录入定义信息录入函数intadd(telebooktemp[]){……通过for循环可以实现同时录入100个信息for(i=m;i<(100+m);i++)……若输入编号为0,则可以通过if选择语句实现直接退出信息录if(temp[i].num==0)break;……通过函数fwrite(&temp[i],sizeof(structtele),1,fp)可以实现向fp中写入数据块;……}4、通讯信息显示定义信息显示函数intread(telebooktemp[]){……通过for循环实现读取文件内信息的个数for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++)若文件内没有信息,则可以通过if(count==0)来判断用for循环可以逐一读取文件内的信息for(i=0;i<count;i++)……}5、通讯信息删除定义信息删除函数intdel(telebooktemp[]){……通过for循环查找要删除的信息for(i=0;i<count;i++)……删除找到的信息,通过strcpy函数实现strcpy(temp[j].name,temp[j+1].name);temp[j+1].name复制到temp[j].name中,同理,电话号码、地址也可以这样做。……}6、通讯信息修改定义信息修改函数intchange(telebooktemp[]){……定义新的结构structtelene[10];scanf("%d",&ne[0].num);用for循环查找与新信息相同的信息for(i=0;i<count;i++)。若找到,则用新信息替换if(temp[i].num==ne[0].num);temp[i].num=ne[0].num;替换找到的信息,通过strcpy函数实现strcpy(temp[i].name,ne[0].name);ne[0].name复制到temp[i].name中,同理,电话号码、地址也可以这样做。}7、通讯信息查询定义信息查询函数(姓名查询)intfind1(telebooktemp[]{……read(temp);……scanf("%s",a);用strcmp函数比较字符串temp[i].name与a大小,用if判断二者是否相同,若相同则输出查询到的信息,主要算法结果如下:if(strcmp(temp[i].name,a)==0){……}……}定义信息查询函数(电话号码查询)intfind2(telebooktemp[]){……具体方法同姓名查询……}四、程序测试与结论1、程序测试(1)进入系统的主菜单(2)通讯信息录入界面(3)通讯信息显示(4)通讯信息删除(5)通讯信息修改a.修改成功b.修改失败(6)通讯信息查询a.按姓名查询b.按号码查询2、结论经过测试各项功能均能成功运行,且性能符合要求。五、总结说句实话,我在课堂上并没有学到多少东西,当然最主要的原因归结于自己不认真听讲,也许起初认为它不重要吧?!但是当我知道我高中同学没有《c语言课程设计》这门课时,我才发现它对我们自动化是多么的重要。于是我暗下决心一定要把c语言学好,并学以致用。但是当我看见老师打在屏幕上的500多行代码时,我的心又开始凉了,最后老师还说500行算什么!一个应用软件一般都是几百万行!听到这里,我开始有些彷徨了,我是有这种耐心的人吗?我开始怀疑我自己一直深爱着的“自动化”是不是适合我的专业。课罢,我仔细想着我到底爱“自动化”哪里?我当初为什么要选这个专业?我仔细回想着填志愿的那一天,我终于明白了……理由不在这里多说,我坚信我是适合学“自动化”的。虽然我已下了决心,但是对于一个上课不认真听讲的人来说,写下这么一段代码是很困难的。于是我就从查资料开始,一开始我读别人写好的程序,不懂的就百度。我花了元旦节三天假,借了台电脑,慢慢摸索,就这样慢慢的我开始能读懂一些了。到目前为止,时间大概过了一周了,我也将就将就的把程序写完了,当然不完全是自己的东西,但是毕竟我感觉学到了,而且学到了很多,而且找到了“玩”c语言的快乐,因为我感觉这一周过得很快,而且,现在夜深了,我仍乐此不疲地写着总结!当然,最大感受就是做一个课题真的很不容易,但是只要脚踏实地地做,我相信困难是会迎刃而解的。所以呢,这周的课程设计对于以后的工作也会是一种经验。六、附件程序源代码#include<stdio.h>/*标准输入输出函数库*/#include<string.h>/*字符串函数库*/#include<stdlib.h>/*标准函数库*/#include<conio.h>/*屏幕操作函数库*/#defineheader1"|通讯录|\n"#defineheader2"|编号|姓名|电话号码|地址|\n"#defineheader3"|||||\n"#defineend"|结束|\n"#defineN100/*定义与通讯录有关的数据结构*/typedefstructtele/*标记为tele*/{ intnum;/*编号*/ charname[10];/*姓名*/ charphonenum[15];/*电话号码*/ charaddress[20];/*地址*/}telebook;voidmenu(){ system("cls");/*调用DOS命令,清屏*/ system("colorBD");/*改变控制台颜色*/ printf("\n\n\n");/*格式化输出主菜单*/ printf("\t\t|●●●欢迎进入电话薄管理系统●●●|\n"); printf("\t\t|*********************menu*********************|\n"); printf("\t\t||\n"); printf("\t\t|●a.通讯信息录入|\n"); printf("\t\t||\n"); printf("\t\t|●b.通讯信息显示|\n"); printf("\t\t||\n"); printf("\t\t|●c.通讯信息删除|\n"); printf("\t\t||\n"); printf("\t\t|●d.通讯信息修改|\n");printf("\t\t||\n"); printf("\t\t|●e.通讯信息查询|\n"); printf("\t\t||\n"); printf("\t\t|●(1)按姓名查询|\n"); printf("\t\t||\n"); printf("\t\t|●(2)按电话查询|\n");printf("\t\t||\n"); printf("\t\t|●f.退出系统|\n");printf("\t\t||\n"); printf("\t\t|**********************************************|\n");}voidprintheader()/*格式化输出菜单头*/{ printf(header1); printf(header2); printf(header3);}/*通讯信息录入*/intadd(telebooktemp[]){inti;intm=0;FILE*fp;/*定义文件指针*/system("cls");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL)/*若读写打开二进制文件telebook.txt失败,则显示出错信息*/{printf("打开文件有误!");exit(0);}printf("每次输入一百个人的信息!\n");printf("如果输入0退出输入!\n");for(i=m;i<(100+m);i++){printf("编号:");scanf("%d",&temp[i].num);/*输入编号*/if(temp[i].num==0)/*若输入编号为0,则退出输入*/break;printf("姓名:");scanf("%s",&temp[i].name);/*输入姓名*/printf("电话号码:");scanf("%s",&temp[i].phonenum);/*输入电话号码*/printf("地址:");scanf("%s",&temp[i].address);/*输入地址*/fwrite(&temp[i],sizeof(structtele),1,fp);/*向fp中写入数据块*/}m+=100;fclose(fp);/*关闭文件*/system("cls");return0;}/*通讯信息显示*/intread(telebooktemp[]){intcount,i;FILE*fp;system("cls");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printheader();for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。*/if(count==0)printf("\n\n\n\t\t文件内没有信息!\n\n\n");for(i=0;i<count;i++)/*读取文件内的信息*/printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);printf(end);fclose(fp);return0;}/*通讯信息删除*/intdel(telebooktemp[]){inti,j,count,t=0;charname1[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要删除的人名:");scanf("%s",name1);for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。*/fclose(fp);for(i=0;i<count;i++)/*查找要删除的信息*/{if(strcmp(temp[i].name,name1)==0){for(j=i;j<count;j++){/*删除找到的信息*/t=1;temp[j].num=temp[j+1].num;strcpy(temp[j].name,temp[j+1].name);strcpy(temp[j].phonenum,temp[j+1].phonenum);strcpy(temp[j].address,temp[j+1].address);}count--;printf("\n\n\n\t\t\t删除成功!");}}if(t==0){getchar();printf("\a\n\n\n\t\t\t没有要删除的信息!");return0;}getchar();fp=fopen("D:\\telebook.txt","wb+");for(i=0;i<count;i++)fwrite(&temp[i],sizeof(structtele),1,fp);fclose(fp);return0;}/*通讯信息修改*/intchange(telebooktemp[]){inti,count,t=0;FILE*fp;structtelene[10];system("cls");read(temp);printf("\n");printf("按序号修改\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入新内容:\n");printf("编号:");scanf("%d",&ne[0].num);printf("姓名:");scanf("%s",&ne[0].name);printf("电话号码:");scanf("%s",&ne[0].phonenum);printf("地址:");scanf("%s",&ne[0].address);for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。*/fclose(fp);for(i=0;i<count;i++)/*查找与新信息相同的信息*/{if(temp[i].num==ne[0].num)/*用新信息替换*/{t=1;temp[i].num=ne[0].num;strcpy(temp[i].name,ne[0].name);strcpy(temp[i].phonenum,ne[0].phonenum);strcpy(temp[i].address,ne[0].address);getchar();printf("\n\n\t\t\t修改成功!");}}if(t==0){getchar();printf("\n\n\t\t\t没有要修改的信息!");return0;}fp=fopen("D:\\telebook.txt","wb+");for(i=0;i<count;i++)fwrite(&temp[i],sizeof(structtele),1,fp);fclose(fp);return0;}/*通讯信息查询*/intfind1(telebooktemp[])/*姓名查询*/{inti,count,t=0;chara[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要查找的名字:");scanf("%s",a);getchar();printf("\n\n");printheader();for(count=0;fread(&temp[count],sizeof(structtele),1,fp)==1;count++);/*读取文件内信息的个数。*/for(i=0;i<count;i++){if(strcmp(temp[i].name,a)==0){t=1;printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);/*输出查询到的信息*/}}if(t==0){printf("\a\n\n\t\t没有要查找的信息!\n\n\n");printf(end);return0;}printf(end);fclose(fp);return0;}intfind2(telebooktemp[])/*电话号码查询*/{inti,count,t=0;charn[20];FILE*fp;system("cls");read(temp);printf("\n");if((fp=fopen("D:\\telebook.txt","ab+"))==NULL){printf("打开文件有误!");exit(0);}printf("输入要查找的号码:");scanf("%s",n);printf("\n\n");printheader();getchar();for(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论