欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    c语言课程设计个人通讯录管理系统.doc

    • 资源ID:2384796       资源大小:579KB        全文页数:28页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言课程设计个人通讯录管理系统.doc

    重庆科技学院C语言程序设计课程设计报告 学 院:_电气与信息工程学院_ 专业班级: 电自专2011-01 学生姓名: 向阳 学 号: 2011630116 设计地点(单位)_I515 _ _设计题目:_ _个人通讯录管理系统_ _ 完成日期: 2012 年12月28日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 摘要利用Visual C+ 6.0这个软件来实现个人通讯录管理系统的功能,可以运用多函数模块来实现。个人通讯录管理系统的功能有:1.增加联系人;2.查询联系人,即分别可以利用姓名或号码进行查询联系人;3.读出所有联系人;4.修改联系人的信息;5.删除联系人的信息。在利用软件进行编辑时,对个人通讯系统的功能进行实现,严格按照功能的目的来编写,对各个函数模块要尽可能的优化。关键字:函数模块、结构流程、个人通讯录管理系统课程设计任务书设计题目:个人通讯录管理系统学生姓名向阳课程名称C语言程序设计课程设计专业班级电自专2011地 点I515起止时间2012年12月17日-12月28日设计内容及要求建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图表方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求周一:明确设计任务,学习相关基础知识周二:熟悉各知识点,进行基础练习周三:根据题目要求,进行设计和实现周四:根据题目要求,进行设计和实现周五:撰写报告,进行答辩参考资料1何钦铭 颜晖.语言程序设计.高等教育出版社.2008年2谭浩强 张基温.语言程序设计教程.高等教育出版社.2006年其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任: 指导教师:雷亮 2012年12月10日目录摘要1课程设计任务书2第一章软件需求分析说明书11.1设计题目的分析11.2详细的功能分析11.3软件的界面要求11.4数据结构要求1第二章 系统分析与设计22.1程序的系统界面分析22.2程序的数据的系统结构设计2第三章 软件的实现63.1程序预处理63.2main()主函数的实现73.3menu()主菜单的实现73.4output(int *len)输出函数的实现83.5zengjia(&len)增加联系人函数的实现83.6chaxun(int *len)查询联系人的函数的实现93.6.1. sname()姓名查询函数的实现103.6.2. snumber ()电话查询函数的实现113.7xiugai(&len)修改联系人的函数的实现123.7.1. xname()修改联系人姓名函数的实现143.7.2. xnumber()修改联系人电话函数的实现143.7.3. xname()修改联系人地址函数的实现143.8shanchu(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查询联系人的流程图YYNNNY图2.2增加联系人的流程图输出修改后所有联系人i=4xiugai(&len)输入修改人的姓名开始判断有无此人return 0Y修改姓名修改电话修改地址b=1?b=2?b=3?没有此人的信息图2.5修改联系人的流程图 -输出删除后所有联系人i=5shanchu(&len)输入删除人的姓名执行删除指定的联系人开始判断有无此人return 0NY图2.6删除联系人的流程图开始i=2duqu(&len)输出信息return 0第三章 软件的实现 本程序主要由14个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当中,按显示菜单的函数、添加联系人函数、读取全部信息函数、查询函数(按姓名查询、按电话查询)、修改联系人函数(姓名修改、电话修改、地址修改)、删除联系人信息函数等是程序中较为核心的部分,下面分别进行说明。3.1程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。#include"stdio.h"#include <stdlib.h>#include"string.h"#define header1 "|-电话簿-|n"#define header2 "| name | phonenum | adress | n"#define header3 "|-|-|-|n"#define end "|-结束-|"typedef struct _CStudentchar szName20; /* 学生姓名 */ double number;/*电话*/char adress100;/*地址*/CStudent;void menu();int duqu(int *len);int zengjia(int *k,int *len);int chaxun(int *len);int xiugai(int *len);int shanchu(int *len);int input(CStudent* p); /* 从键盘输入 */int output(int *len); /* 向屏幕输出 */int search(CStudent p,int *j,CStudent c3,int *len);int sname(CStudent p,int *len);/*姓名查询*/int snumber(CStudent p,int *len);/*电话查询*/void xname(CStudent q100,int i);/*姓名修改*/void xnumber(CStudent q100,int i);/*号码修改*/void xadress(CStudent q100,int i);/*地址修改*/int sput(int *len,CStudent q100);/*删除的处理模块*/3.2main()主函数的实现main()函数主要实现对整个程序的运行控制,以及相关功能模块的调用。main( ) static int len=0;int i,j=0,k=0;while(j=0)menu();doprintf("请选择你需要的服务:n");scanf("%d",&i);while(i<0|i>5);switch(i)case 1:j=zengjia(&k,&len);break;/*增加*/case 2:j=duqu(&len);break;/*读取*/case 3:j=chaxun(&len);break;/*查找*/case 4:j=xiugai(&len);break;/*修改*/case 5:j=shanchu(&len);break;/*删除*/default:printf(" |*欢迎下次使用电话薄管理系统!*|n");j=1;break; 3.3menu()主菜单的实现用户进入通讯录管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被main()函数调用。void menu()system("cls");system("color 1F");printf("nnn");/*输出主菜单*/printf("tt|* * 欢迎进入电话薄管理系统! * *|n");printf("tt|*menu*|n");printf("tt| |n");printf("tt| 1 增加 2 读取 |n");printf("tt| |n");printf("tt| 3 查找 4 修改 |n");printf("tt| |n");printf("tt| 5 删除 0 退出 |n");printf("tt| |n");printf("tt|*|n");3.4output(int *len)输出函数的实现在被其它函数模块调用时,执行int output(int *len)函数对数据文件中的所有联系人进行输出在屏幕上。int output(int *len) /*向屏幕输出*/CStudent p100;int i;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",pi.szName,&pi.number,pi.adress);printf("| %s | %.0lf | %s |n",pi.szName,pi.number,pi.adress); printf("%s",end); printf("n");system("pause"); return 0;3.5zengjia(&len)增加联系人函数的实现调用zengjia(&len)函数,完成在文件中添加新联系人。在刚进入通讯录管理系统时,若默认的数据文件为空,在增加新联系人后,利用int output(int *len)函数输出数据文件中的所有联系人。int zengjia(int *k,int *len)CStudent p100;int i,j;FILE *fp;system("cls");printf("ntt|* 欢迎进入删除联系人界面! *|nn");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",&pi.szName); printf("电话:"); scanf("%lf",&pi.number);printf("地址:"); scanf("%s",pi.adress);for(i=0;i<j;i+)fprintf(fp,"n%s %lf %s ",pi.szName,pi.number,pi.adress);fclose(fp);system("cls");output(len);return 0; 3.6chaxun(int *len)查询联系人的函数的实现调用int chaxun(int *len)函数,完成在snumber(cc,len)或sname(aa,len)函数中对联系人进行查找,如果在数据文件中找到所要查找的联系人时,则将该联系人输出到屏幕;若在数据文件中没有此联系人时,则同样会在屏幕上提醒。int chaxun(int *len)int i;CStudent aa,cc;system("cls");printf("ntt|* 欢迎进入删除联系人界面! *|nn");doprintf("|-查找功能-|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);else if(i=1)printf("请输入号码:n");scanf("%lf",&cc.number);snumber(cc,len);elseprintf("欢迎下次使用电话薄管理系统!n");return 0;3.6.1. sname()姓名查询函数的实现用户在进入查询联系人的界面后,可以根据提示选择按哪种方式进行查询,若选择2则按姓名进行查询,即会在判断该联系人存在于通讯录中后调用sname()姓名查询函数;如下为函数的源代码:int sname(CStudent p,int *len) CStudent c100;int i,flag;flag=search(p,&i,c,len); if (flag=1)printf("%s%s%s",header1,header2,header3);printf("| %s | %.0lf | %s |n",ci.szName,ci.number,ci.adress); printf("%s",end); printf("n"); else printf("Not Foundn");system("pause"); return 0; 3.6.2. snumber ()电话查询函数的实现用户在进入查询联系人的界面后,可以根据提示选择按哪种方式进行查询,若选择1则按姓名进行查询,即会在判断该联系人存在于通讯录中后调用snumber()电话查询函数;如下为函数的源代码:int snumber(CStudent p,int *len)CStudent c100;int i,flag;flag=search(p,&i,c,len); if (flag=2)printf("%s%s%s",header1,header2,header3);printf("| %s | %.0lf | %s |n",ci.szName,ci.number,ci.adress);printf("%s",end); printf("n"); else printf("Not Foundn"); system("pause"); return 0;search(CStudent p,int *j,CStudent c100,int *len)/*查询*/ FILE *fp;int i,flag=0;if(fp=fopen("e:file3","r")=NULL)printf("cannot write filen");return -1; for(i=0;i<*len;i+)fscanf(fp,"%s%lf%s",ci.szName,&ci.number,ci.adress); if(strcmp(ci.szName,p.szName)=0)flag=1;break;if(ci.number=p.number)flag=2;break; *j=i;fclose(fp);return flag;3.7xiugai(&len)修改联系人的函数的实现调用xiugai(&len)函数,完成在输入需要修改的联系人后,进行判断是否有此人,若没有则会有提示,若有则会提示你完成该联系人的信息修改,待输入了修改信息后,会利用int sput(int *len,CStudent q100)函数将修改的文件数据保存到文件中。在完成保存修改联系人后,会利用int output(int *len)函数将修改后数据文件中的所有联系人输出到屏幕上。int xiugai(int *len)CStudent p100,q100,a;int i,j,b;FILE *fp;system("cls");printf("ntt|* * 欢迎进入修改联系人界面! * *|nn");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",pi.szName,&pi.number,pi.adress);for(i=0;i<*len;i+)strcpy(qi.szName,pi.szName);strcpy(qi.adress,pi.adress);qi.number=pi.number;for(i=0;i<*len;i+)if(strcmp(pi.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");doprintf("请输入: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);elseprintf("|*通讯录中没有该人的信息!*|n");system("pause");fclose(fp);output(len);return 0;int sput(int *len,CStudent q100)int i;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 ",qi.szName,qi.number,qi.adress);fclose(fp);return 0;3.7.1. xname()修改联系人姓名函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择1则修改联系人的姓名,即会在判断该联系人存在于通讯录中后调用xname()姓名修改函数。void xname(CStudent q100,int i)printf("姓名重置:"); scanf("%s",qi.szName); 3.7.2. xnumber()修改联系人电话函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择2则修改联系人的电话,即会在判断该联系人存在于通讯录中后调用xnumber()电话修改函数。void xnumber(CStudent q100,int i)/*号码修改*/printf("电话重置:"); scanf("%lf",&qi.number);3.7.3. xname()修改联系人地址函数的实现用户在进入修改联系人的信息的界面后,可以根据提示选择进行修改联系人的哪样信息,若选择3则修改联系人的地址,即会在判断该联系人存在于通讯录中后调用xadress()地址修改函数。void xadress(CStudent q100,int i)/*地址修改*/printf("地址重置:"); scanf("%s",qi.adress);3.8shanchu(int *len)删除联系人的函数的实现调用int shanchu(int *len)函数,完成输入的需要删除的联系人,待输入后,程序会自动判断数据文件中是否有此人的信息,若没有,则会有提示,结束该功能的运用;反之,有该联系人的话,会将其删除后在保存到数据文件中,待保存成功后,调用int output(int *len)函数将删除后的所有联系人输出到屏幕上。int shanchu(int *len)CStudent p100,q100,a;int i,j;FILE *fp;system("cls");printf("ntt|* 欢迎进入删除联系人界面! *|nn");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",pi.szName,&pi.number,pi.adress);for(i=0;i<*len;i+)strcpy(qi.szName,pi.szName);strcpy(qi.adress,pi.adress);qi.number=pi.number;for(i=0;i<*len;i+)if(strcmp(pi.szName,a.szName)=0)j=1;break;if(j=1)for(;i<*len-1;i+)strcpy(qi.szName,qi+1.szName);strcpy(qi.adress,pi.adress);qi.number=qi+1.number;printf("删除成功!n"); (*len)-;sput(len,q);for(i=0;i<*len;i+)fscanf(fp,"%s%lf%s",qi.szName,&qi.number,qi.adress);output(len);elseprintf("|*通讯录中没有该人的信息!*|n"); fclose(fp);return 0;第四章 软件测试 对每一个函数模块、及组装以后的函数进行用例测试其运行的结果。4.1主界面的测试用户进入通讯录管理系统时,其主界面如图4.1所示。此时,系统已经将“e:/file3”文件打开,若文件不为空,则将数据从文件中逐条记录读出,并写入数组中。用户可选择05之间的数值,调用相应功能进行操作。当输入0时,则退出个人通讯录管理系统。图4.1主菜单界面4.2增加联系人的测试当用户输入1时并按Enter键后,即可进入增加联系人的界面。其增加过程如图4.2所示,这是增加3个联系人的记录。4.3读取联系人的测试当用户输入2时并按Enter键后,即可进入读取联系人的界面。其读取过程如图4.3所示。4.4查找联系人的测试当用户输入3时并按Enter键后,即可进入增加联系人的界面。其增加过程如图4.4所示,这是利用姓名查询联系人的记录。4.5修改联系人的测试当用户输入4时并按Enter键后,即可进入修改联系人的界面。4.5.1. 修改姓名的测试当用户进入修改联系人的界面后,根据提示输入要修改那位联系人的信息,再根据界面上的菜单进行选择修改姓名的功能,其过程如图4.5.a所示。4.5.2. 修改电话的测试当用户进入修改联系人的界面后,根据提示输入要修改那位联系人的信息,再根据界面上的菜单进行选择修改电话的功能,其过程如图4.5.b所示。4.5.3. 修改地址的测试当用户进入修改联系人的界面后,根据提示输入要修改那位联系人的信息,再根据界面上的菜单进行选择修改地址的功能,其过程如图4.5.c所示。输入姓名修改联系人的记录。4.6删除联系人的测试当用户输入5时并按Enter键后,即可进入删除联系人的界面。其删除过程如图4.6所示,这

    注意事项

    本文(c语言课程设计个人通讯录管理系统.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开