c语言课程设计个人通讯录管理系统_第1页
c语言课程设计个人通讯录管理系统_第2页
c语言课程设计个人通讯录管理系统_第3页
c语言课程设计个人通讯录管理系统_第4页
c语言课程设计个人通讯录管理系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

重庆科技学院(个人通讯录管理系统)课程设计报告PAGEPAGE22重庆科技学院《C语言程序设计》课程设计报告学院:_电气与信息工程学院_专业班级:学生姓名:学号:设计地点(单位)________I515__________

设计题目:_________个人通讯录管理系统________________完成日期:指导教师评语:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________成绩(五级记分制):________________

指导教师(签字):________________ 摘要利用VisualC++6.0这个软件来实现个人通讯录管理系统的功能,可以运用多函数模块来实现。个人通讯录管理系统的功能有:1.增加联系人;2.查询联系人,即分别可以利用姓名或号码进行查询联系人;3.读出所有联系人;4.修改联系人的信息;5.删除联系人的信息。在利用软件进行编辑时,对个人通讯系统的功能进行实现,严格按照功能的目的来编写,对各个函数模块要尽可能的优化。关键字:函数模块、结构流程、个人通讯录管理系统

课程设计任务书设计题目:个人通讯录管理系统学生姓名向阳课程名称C语言程序设计课程设计专业班级电自专2011地点I515起止时间2012年12月17日-12月28日设计内容及要求建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求周一:明确设计任务,学习相关基础知识周二:熟悉各知识点,进行基础练习周三:根据题目要求,进行设计和实现周四:根据题目要求,进行设计和实现周五:撰写报告,进行答辩参考资料[1]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年[2]谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年其它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任:指导教师:雷亮2012年12月10日目录摘要 1课程设计任务书 2第一章 软件需求分析说明书 11.1.设计题目的分析 11.2.详细的功能分析 11.3.软件的界面要求 11.4.数据结构要求 1第二章系统分析与设计 22.1.程序的系统界面分析 22.2.程序的数据的系统结构设计 2第三章软件的实现 63.1.程序预处理 63.2.main()主函数的实现 73.3.menu()主菜单的实现 73.4.output(int*len)输出函数的实现 83.5.zengjia(&len)增加联系人函数的实现 83.6.chaxun(int*len)查询联系人的函数的实现 93.6.1.sname()姓名查询函数的实现 103.6.2.snumber()电话查询函数的实现 113.7.xiugai(&len)修改联系人的函数的实现 123.7.1.xname()修改联系人姓名函数的实现 143.7.2.xnumber()修改联系人电话函数的实现 143.7.3.xname()修改联系人地址函数的实现 143.8.shanchu(int*len)删除联系人的函数的实现 14第四章软件测试 174.1.主界面的测试 174.2.增加联系人的测试 174.3.读取联系人的测试 174.4.查找联系人的测试 184.5.修改联系人的测试 184.6.删除联系人的测试 18第五章 总结 22致谢 23参考文献 24第一章 软件需求分析说明书1.1.设计题目的分析根据需设计的个人通讯录管理系统这个题目可以得知如下的信息:①.建立通讯录信息,信息包含姓名、电话、通讯地址等;②.能够提供添加、删除通讯录信息的功能;③.能够提供按不同方式查询的功能;如按姓名、电话等查询;④.能够提供按不同方式修改通讯录里联系人的信息的功能;如对姓名、电话、地址等进行修改;⑤.将通讯录保存在文件中;⑥能够按表格方式输出通讯录信息。1.2.详细的功能分析增加:可以添加通讯录记录,在输入添加的个数后,依次完成输入姓名、电话号码、通讯地址后,会提示你是否已添加成功,最后再在屏幕上显示出来;读取:可以以表格形式输出所有通讯录里的记录;删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容,之后会提示你是否删除成功,最后在输出删除后通讯录里所有的记录;查询:可以选择用姓名、电话两种方式查询;修改:输入欲修改的那个人的名字后,再选择是需要更改输入联系人的什么信息后,再输入修改的姓名或电话号码或通讯地址,这样便可以可完成修改联系人得信息;退出:,即将通讯录信息保存到文件后,再退出通讯管理系统。1.3.软件的界面要求在界面需要一个提示你执行什么操作的标语,且在增加、修改、删除联系人后,需要提示是否已成功的完成该任务,之后需要将通讯录读取出来,检查是否与界面提示的一致,最后再返回首页面。1.4.数据结构要求每一个功能利用多函数模块来实现,并且为了避免程序的繁琐,可以将每个大模块再划分为多个小的模块来实现,尽可能的优化程序的模块。

第二章系统分析与设计2.1.程序的系统界面分析①主菜单选择的界面,选择需要的服务,如:输入1,即进入增加联系人的界面;②增加联系人的界面,按提示进行输入,即进入输出界面;③通讯录的输出界面,即将按任意键返回主菜单界面;④在主菜单中选择查找联系人的功能,如:输入3后进入查询界面,再按姓名或电话查询,如:输入2按姓名查询,输入查询的姓名为xiangyang,即若又该联系人则显示出来,反之则提示你没有该联系人;⑤删除联系人界面,即输入删除人的姓名,再提示你删除成功后紧接着就显示出删除后的所有联系人;⑥修改联系人的界面,即在主菜单中输4,进入修改界面,即输入修改人的姓名即可;⑦退出程序的界面,不需要访问个人通讯录管理系统时,在返回主菜单界面输入0退出程序。2.2.程序的数据的系统结构设计2.2.1.整个软件使用的文件功能、内部的数据格式在通讯管理系统中的文件内部的数据均为文本文件类型的,并且在文本文件里的数据均以一组一组的存放。2.2.2.系统界面结构的设计①画出整个软件的模块图(如图2.1所示)、并对每一个模块图的算法用程序流程图来具体描述。②增加联系人的程序流程图(如图2.2所示);③查询联系人的流程图(如图2.3所示);④读取联系人的流程图(如图2.4所示);⑤修改联系人的流程图(如图2.5所示);⑥删除联系人的流程图(如图2.6所示)。增加增加查询个人通讯录管理系统读取删除修改退出姓名查询电话查询姓名修改电话修改地址修改图2.1.系统的整体模块图图2.3查询联系人的流程图YY图2.3查询联系人的流程图YYNNNY图2.2增加联系人的流程图输出修改后输出修改后所有联系人i=4xiugai(&len)输入修改人的姓名开始判断有无此人return0Y修改姓名修改电话修改地址b==1?b==2?b==3?没有此人的信息图2.5修改联系人的流程图-输出输出删除后所有联系人i=5shanchu(&len)输入删除人的姓名执行删除指定的联系人开始判断有无此人return0NY图2.6删除联系人的流程图开始开始i=2duqu(&len)输出信息return0

第三章软件的实现本程序主要由14个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,按显示菜单的函数、添加联系人函数、读取全部信息函数、查询函数(按姓名查询、按电话查询)、修改联系人函数(姓名修改、电话修改、地址修改)、删除联系人信息函数等是程序中较为核心的部分,下面分别进行说明。3.1.程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。#include"stdio.h"#include<stdlib.h>#include"string.h"#defineheader1"|电话簿|\n"#defineheader2"|name|phonenum|adress|\n"#defineheader3"||||\n"#defineend"|结束|"typedefstruct_CStudent{ charszName[20];/*学生姓名*/doublenumber; /*电话*/ charadress[100]; /*地址*/}CStudent;voidmenu();intduqu(int*len);intzengjia(int*k,int*len);intchaxun(int*len);intxiugai(int*len);intshanchu(int*len);intinput(CStudent*p);/*从键盘输入*/intoutput(int*len);/*向屏幕输出*/intsearch(CStudentp,int*j,CStudentc[3],int*len); intsname(CStudentp,int*len); /*姓名查询*/intsnumber(CStudentp,int*len); /*电话查询*/voidxname(CStudentq[100],inti); /*姓名修改*/voidxnumber(CStudentq[100],inti); /*号码修改*/voidxadress(CStudentq[100],inti); /*地址修改*/ intsput(int*len,CStudentq[100]);/*删除的处理模块*/3.2.main()主函数的实现main()函数主要实现对整个程序的运行控制,以及相关功能模块的调用。main(){ staticintlen=0; inti,j=0,k=0; while(j==0) { menu(); do { printf("请选择你需要的服务:\n"); scanf("%d",&i); } while(i<0||i>5); switch(i) { case1:{j=zengjia(&k,&len);break;}/*增加*/ case2:{j=duqu(&len);break;} /*读取*/ case3:{j=chaxun(&len);break;} /*查找*/ case4:{j=xiugai(&len);break;} /*修改*/ case5:{j=shanchu(&len);break;}/*删除*/ default:{printf("|**欢迎下次使用电话薄管理系统!**|\n");j=1;break;} } }}3.3.menu()主菜单的实现用户进入通讯录管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被main()函数调用。voidmenu(){ system("cls"); system("color1F"); printf("\n\n\n"); /*输出主菜单*/ printf("\t\t|*****欢迎进入电话薄管理系统!*****|\n"); printf("\t\t|********************menu********************|\n"); printf("\t\t||\n"); printf("\t\t|1增加2读取|\n"); printf("\t\t||\n"); printf("\t\t|3查找4修改|\n"); printf("\t\t||\n"); printf("\t\t|5删除0退出|\n"); printf("\t\t||\n"); printf("\t\t|********************************************|\n");}3.4.output(int*len)输出函数的实现在被其它函数模块调用时,执行intoutput(int*len)函数对数据文件中的所有联系人进行输出在屏幕上。intoutput(int*len)/*向屏幕输出*/{ CStudentp[100]; inti; FILE*fp; if((fp=fopen("e://file3","r"))==NULL) { printf("error!\n"); return-1; } printf("%s%s%s",header1,header2,header3); for(i=0;i<*len;i++) { fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); printf("|%s|%.0lf|%s|\n",p[i].szName,p[i].number,p[i].adress); } printf("%s",end); printf("\n"); system("pause"); return0;}3.5.zengjia(&len)增加联系人函数的实现调用zengjia(&len)函数,完成在文件中添加新联系人。在刚进入通讯录管理系统时,若默认的数据文件为空,在增加新联系人后,利用intoutput(int*len)函数输出数据文件中的所有联系人。intzengjia(int*k,int*len){ CStudentp[100]; inti,j; FILE*fp;system("cls"); printf("\n\t\t|*****欢迎进入删除联系人界面!*****|\n\n"); printf("请输入增加的个数:\n"); scanf("%d",&j); k=&j; (*len)+=j; //system("cls"); if((fp=fopen("e://file3","a+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<j;i++) { printf("姓名:"); scanf("%s",&p[i].szName); printf("电话:"); scanf("%lf",&p[i].number); printf("地址:"); scanf("%s",p[i].adress); } for(i=0;i<j;i++) fprintf(fp,"\n%s%lf%s",p[i].szName,p[i].number,p[i].adress); fclose(fp); system("cls"); output(len); return0;}3.6.chaxun(int*len)查询联系人的函数的实现调用intchaxun(int*len)函数,完成在snumber(cc,len)或sname(aa,len)函数中对联系人进行查找,如果在数据文件中找到所要查找的联系人时,则将该联系人输出到屏幕;若在数据文件中没有此联系人时,则同样会在屏幕上提醒。intchaxun(int*len){ inti; CStudentaa,cc; system("cls"); printf("\n\t\t|*****欢迎进入删除联系人界面!*****|\n\n"); do { printf(" |查找功能|\n"); printf(" ||\n"); printf(" |1按电话号码查找|\n"); printf(" ||\n"); printf(" |2按姓名查找|\n"); printf(" ||\n"); printf(" |0退出|\n"); printf(" ||\n"); printf("请输入:\n"); scanf("%d",&i); } while(i>2||i<0); if(i==2) { printf("请输入姓名:\n"); scanf("%s",&aa.szName); sname(aa,len); } elseif(i==1) { printf("请输入号码:\n"); scanf("%lf",&cc.number); snumber(cc,len); } else printf("欢迎下次使用电话薄管理系统!\n"); return0;}3.6.1.sname()姓名查询函数的实现用户在进入查询联系人的界面后,可以根据提示选择按哪种方式进行查询,若选择2则按姓名进行查询,即会在判断该联系人存在于通讯录中后调用sname()姓名查询函数;如下为函数的源代码:intsname(CStudentp,int*len){ CStudentc[100]; inti,flag; flag=search(p,&i,c,len);if(flag==1) { printf("%s%s%s",header1,header2,header3); printf("|%s|%.0lf|%s|\n",c[i].szName,c[i].number,c[i].adress); printf("%s",end); printf("\n"); } else printf("NotFound\n"); system("pause");return0;}3.6.2.snumber()电话查询函数的实现用户在进入查询联系人的界面后,可以根据提示选择按哪种方式进行查询,若选择1则按姓名进行查询,即会在判断该联系人存在于通讯录中后调用snumber()电话查询函数;如下为函数的源代码:intsnumber(CStudentp,int*len){ CStudentc[100]; inti,flag; flag=search(p,&i,c,len);if(flag==2) { printf("%s%s%s",header1,header2,header3); printf("|%s|%.0lf|%s|\n",c[i].szName,c[i].number,c[i].adress); printf("%s",end); printf("\n"); } else printf("NotFound\n"); system("pause");return0;}search(CStudentp,int*j,CStudentc[100],int*len) /*查询*/{FILE*fp; inti,flag=0; if((fp=fopen("e:\\file3","r"))==NULL) { printf("cannotwritefile\n"); return-1; }for(i=0;i<*len;i++) { fscanf(fp,"%s%lf%s",c[i].szName,&c[i].number,c[i].adress);if(strcmp(c[i].szName,p.szName)==0) {flag=1;break;} if(c[i].number==p.number) {flag=2;break;}} *j=i; fclose(fp); returnflag;}3.7.xiugai(&len)修改联系人的函数的实现调用xiugai(&len)函数,完成在输入需要修改的联系人后,进行判断是否有此人,若没有则会有提示,若有则会提示你完成该联系人的信息修改,待输入了修改信息后,会利用intsput(int*len,CStudentq[100])函数将修改的文件数据保存到文件中。在完成保存修改联系人后,会利用intoutput(int*len)函数将修改后数据文件中的所有联系人输出到屏幕上。intxiugai(int*len){ CStudentp[100],q[100],a; inti,j,b; FILE*fp; system("cls"); printf("\n\t\t|*****欢迎进入修改联系人界面!*****|\n\n"); printf("请输入修改人的姓名:\n"); scanf("%s",a.szName); if((fp=fopen("e://file3","r+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); for(i=0;i<*len;i++) { strcpy(q[i].szName,p[i].szName); strcpy(q[i].adress,p[i].adress); q[i].number=p[i].number;} for(i=0;i<*len;i++) { if(strcmp(p[i].szName,a.szName)==0) { j=1; break; } } if(j==1) { printf(" |修改功能|\n"); printf(" ||\n"); printf(" |1修改姓名|\n"); printf(" ||\n"); printf(" |2修改号码|\n"); printf(" ||\n"); printf(" |3修改地址|\n"); printf(" ||\n"); do { printf("请输入:\n"); scanf("%d",&b); if(b==1) xname(q,i); if(b==2) xnumber(q,i); if(b==3) xadress(q,i);} while(b>3||b<1); printf("修改的联系人重新保存!\n"); sput(len,q); } else { printf(" |*****通讯录中没有该人的信息!******|\n"); system("pause"); } fclose(fp); output(len); return0;}intsput(int*len,CStudentq[100]){ inti; FILE*fp; if((fp=fopen("e://file3","w"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fprintf(fp,"%s%lf%s",q[i].szName,q[i].number,q[i].adress); fclose(fp); return0;}3.7.1.xname()修改联系人姓名函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择1则修改联系人的姓名,即会在判断该联系人存在于通讯录中后调用xname()姓名修改函数。voidxname(CStudentq[100],inti){ printf("姓名重置:"); scanf("%s",q[i].szName);}3.7.2.xnumber()修改联系人电话函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择2则修改联系人的电话,即会在判断该联系人存在于通讯录中后调用xnumber()电话修改函数。voidxnumber(CStudentq[100],inti) /*号码修改*/{ printf("电话重置:"); scanf("%lf",&q[i].number);}3.7.3.xname()修改联系人地址函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择3则修改联系人的地址,即会在判断该联系人存在于通讯录中后调用xadress()地址修改函数。voidxadress(CStudentq[100],inti) /*地址修改*/{ printf("地址重置:"); scanf("%s",q[i].adress);}3.8.shanchu(int*len)删除联系人的函数的实现调用intshanchu(int*len)函数,完成输入的需要删除的联系人,待输入后,程序会自动判断数据文件中是否有此人的信息,若没有,则会有提示,结束该功能的运用;反之,有该联系人的话,会将其删除后在保存到数据文件中,待保存成功后,调用intoutput(int*len)函数将删除后的所有联系人输出到屏幕上。intshanchu(int*len){ CStudentp[100],q[100],a; inti,j; FILE*fp;system("cls"); printf("\n\t\t|*****欢迎进入删除联系人界面!*****|\n\n"); printf("请输入删除人的姓名:\n"); scanf("%s",a.szName); if((fp=fopen("e://file3","r+"))==NULL) { printf("error!\n"); return-1; } for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress); for(i=0;i<*len;i++) { strcpy(q[i].szName,p[i].szName); strcpy(q[i].adress,p[i].adress); q[i].number=p[i].number;} for(i=0;i<*len;i++) { if(strcmp(p[i].szName,a.szName)==0) { j=1; break; } } if(j==1) { for(;i<*len-1;i++) { strcpy(q[i].szName,q[i+1].szName); strcpy(q[i].adress,p[i].adress); q[i].number=q[i+1].number; } printf("删除成功!\n"); (*len)--; sput(len,q); for(i=0;i<*len;i++) fscanf(fp,"%s%lf%s",q[i].szName,&q[i].number,q[i].adress); output(len); } else printf(" |*****通讯录中没有该人的信息!******|\n");

温馨提示

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

评论

0/150

提交评论