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

下载本文档

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

文档简介

C语言课程设计报告书 题 目: 通讯录管理系统 学 院: 计算机工程学院 专 业: 计算机科学与技术 班 级: 姓 名: 学 号: 2011年 6 月 25日目录1 引言22 设计的目地和要求22.1 实验目的22.2 实验要求23 设计说明34 程序使用方法55 程序源代码96 设计总结161 引言由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!2 设计的目的和要求2.1 实验目地(1) 巩固和加深对C语言基础知识的理解和掌握(2) 掌握C语言编程和程序调试的基本技能(3) 掌握利用C语言进行简单软件设计的基本思路和方法(4) 提高运用C语言解决实际问题的能力(5) 掌握书写实验设计说明文档的能力2.2 实验要求设一个通讯录由以下几项数据信息构成: 数据项 类型 姓名 字符串 住址 字符串 邮政编码 字符串 电话号码 字符串通讯录信息存储在文件中。(一)功能要求:(1)能输入新的通讯录词条(2)能按姓名或电话号码进行信息查询(3)能按姓名或电话号码删除相关信息,如姓名相同能给出提示,进行选择删除(4)能显示出所有信息(5) 能对输入的信息进行修改(6) 能对已存储的信息进行读出(二)其它要求:(1)源程序要有适当的注释,使程序容易阅读(2)体现结构化设计风格,函数功能划分清晰(3)各功能入口采用文本菜单界面(4)学生可自动增加新功能模块,视具体实现情况另外加分(5)写出课程设计报告,具体要求见相关说明文档3 设计说明3.1 算法设计本程序函数中通过switchcase语句来实现选择功能,用户可以通过需要来进行选择在屏幕上输出菜单,提示用户输入数字选择功能根据输入的数字选择相应的功能子函数执行,输入0则退出程序根据子函数的提示用户输入相应的内容显示相应信息在程序中用一个全局变量number记录输入信息的条数,并将其存放在D:/条数.txt中。便于在读取文件时使用。程序通过一个结构体数组来存储数据,在数据有更新后将其输入到文本文件中保存。下次运行时可将文件中的数据读出使用。程序的整体结构图如图1main函数输入(由shuru()函数实现)如图2清空(由qingkong()函数实现)读取(由duru()函数实现)修改(由xiugai()函数实现)查看(由chakan()函数实现)删除(由shanchu()函数实现)如图4查找(由chazhao()函数实现)如图3图1输入子函数 让用户输入新的联系人信息,其中在输入人名是如与前面输入的联系人同名会给出同名提示,有用户决定是否重新输入。输入好的新的联系人将追加到程序中,并在文件中保存,如图2查找子函数 通过一个新的数组在记录要查找的信息,让其中的每个元素与姓名或电话号码作比较,把符合条件的联系人输出。如图3删除子程序 先输入要查找联系人的姓名(姓氏)或电话并将查找到的信息显示在屏幕上,并为其标上编码,由用户自行选择要删除的联系人编码,进行选择性删除。最后将删除后的信息重新写入文件。如图4查看联系人 将所有联系人信息全部显示在屏幕上。修改联系人 执行修改时先调用chakan()函数,将全部联系人显示在屏幕上,并为其标上编码,由用户选择要修改联系人的编码对其进行修改。读取联系人 将文件中已有的联系人读入到结构体中。清空联系人 通过重新写入将文件中所有联系人清空。在结构体的姓名和电话号码中截取度为n的字符串与a数组比较是否相等在a数组中输入要查询的姓名(姓氏)或电话号码For(i=0;inumber;i+)输出姓名输出地址输出邮政编码测试a的长度为nYN输出电话号码printf(“%d ”,i+1);图3图4图2在a数组中输入要查询的姓名(姓氏)或电话号码For(i=0;inumber;i+)输出姓名输出地址输出邮政编码测试a的长度为nYN输出电话号码printf(“%d ”,i+1);printf(“请输入要删除联系人的编号:”)scanf(“%d”,&n);For(i=n,p=i+1;i=number;i+,p+)reni=renp;number-;在结构体的姓名和电话号码中截取度为n的字符串与a数组比较是否相等将删除后的联系人重新写入文件printf(确认输入新的联系人请按“1”,否则请按“0”:”);scanf(%d,&n);while(n=1)printf(请输入联系人姓名)scanf(%s,)判断输入的姓名是否与前面的相同YN重新输入继续输入printf(请输入联系人地址:)scanf(%s,rennumber.add);printf(请输入邮政编码:)scanf(%s,rennumber.post);判断输入的邮编是否都是数字YNprintf(请输入电话号码:);scanf(%s,rennumber.telep);判断输入的邮编是否都是数字YN重新输入把输入的信息写入文件printf(继续输入请按1,否则请按0:)scanf(%d,&n);4 程序使用方法运行程序进入菜单界面,按下相应的键,选择不同的功能。如下图按“1”键 进入输入新联系人界面,提示“确认输入新的联系人请按“1”,否则请按“0”:”如需输入请按1 ,根据提示输入相应的值。如果输入的人名是如与前面输入的联系人同名时会给出同名提示是否重新输入,由用户决定是否重新输入;邮编和电话号码如输入的不正确,会提示重新输入。如下图按“2”键 进入查询界面,用户可以直接输入姓名或姓氏或电话号码进行查询联系人。如下图按“3”键 进入删除界面,用户需根据提示输入要删除的联系人的姓名或电话号码,系统会显示出全部查找到的信息,用户选择相应的编码进行删除。如找到两个或更多的结果时,也可进行选择性删除。如下图按“4”键 程序直接显示出全部联系人信息。如下图按“5”键 进入修改界面,程序会自动显示出全部联系人信息,再选择要修改的联系人编码,进行重新输入联系人信息。如下图按“6”键 读取文件中已有的联系人信息到程序中按“7”键 清空文件中联系人信息按“0”键 退出程序5 程序源代码#include#includevoid shuru();void chazhao();void shanchu();void chakan();void xiugai();void duru();void qingkong();struct tongxunchar name10;char add50;char post10;char telep15;ren100;int number=0;void main()char n;FILE *fp1;doprintf(t- -n);printf(t|* 通讯录管理系统 *|n);printf(t| |n);printf(t|*菜单*|n);printf(t|* 1、输入新的联系人 *|n);printf(t|* 2、查找联系人 *|n);printf(t|* 3、删除联系人 *|n);printf(t|* 4、查看全部联系人 *|n);printf(t|* 5、修改联系人 *|n);printf(t|* 6、读取已有联系人 *|n);printf(t|* 7、清空已有联系人 *|n);printf(t|* 0、退出系统 *|n);printf(t-n);printf(t您操作完的结果将会保存到D:/通讯录.txt。nnn);aa:printf(t请选择:);scanf(%s,&n);switch (n)case 1:shuru();break;case 2:chazhao();break;case 3:shanchu();break;case 4:chakan();break;case 5:xiugai();break;case 6:duru();break;case 7:qingkong();break;case 0:break;default:printf(t输入错误n);goto aa;while(n!=0);fp1=fopen(D:/条数.txt,w+);fprintf(fp1,%d,number);fclose(fp1);void shuru() /*输入*/int n,a,i,k=1,b;FILE *fp;fp=fopen(D:/通讯录.txt,a+);printf(确认输入新的联系人请按“1”,否则请按“0”:);scanf(%d,&n);while(n=1)doprintf(请输入联系人姓名:);scanf(%s,);b=0;k=0;for(i=0;inumber;i+)if(strcmp(,)=0)k=1;printf(%st,);printf(%st,reni.add);printf(%st,reni.post);printf(%st,reni.telep);printf(n);if(k=1)printf(输入的姓名与上面的信息重复,是否重新输入(1(是)/0(否)):);scanf(%d,&b);while(b=1);printf(请输入联系人地址:);scanf(%s,rennumber.add);printf(请输入邮政编码:);do /*判断邮政编码输入是否正确*/ scanf(%s,rennumber.post); a=strlen(rennumber.post); for(i=0;ia;i+) if(rennumber.posti=0) k=1; else k=0; printf(输入错误请重新输入:); break; while(k=0);printf(请输入电话号码:); do /*判断电话号码输入是否正确*/ scanf(%s,rennumber.telep); a=strlen(rennumber.telep); for(i=0;ia;i+) if(rennumber.telepi=0) k=1; else k=0; printf(输入错误请重新输入:); break; while(k=0); fprintf(fp,%st%st%stt%sn,,rennumber.add,rennumber.post,rennumber.telep); number+; printf(继续输入请按1,否则请按0:); scanf(%d,&n);fclose(fp);void chazhao() /*查找*/int i,j,k,n,p=0,q=0;char a15;if(number=0)printf(通讯录为空n);elseprintf(请输入要查找的姓名(姓氏)或电话号码:);scanf(%s,a);n=strlen(a);for(i=0;inumber;i+)k=0;for(j=0;jn;j+)if(aj!=j&aj!=reni.telepj)k=1; if(k=0) p=1; /*p是是否查找到的标志*/if(q=0)printf(编号t姓名t地址t邮政编码t电话号码n);q=1;printf(%dt,i);printf(%st,);printf(%st,reni.add);printf(%st,reni.post);printf(%st,reni.telep);printf(n);if(p=0)printf(没有查找到相关信息n);void shanchu()/*删除*/int n,i,j,p,k,l=0,q;char a10;FILE *fp;if(number=0)printf(通讯录为空n);elseprintf(请输入要删除的姓名(姓氏)或电话号码:);scanf(%s,a);n=strlen(a);for(i=0;inumber;i+)k=0;for(j=0;jn;j+)if(aj!=j&aj!=reni.telepj)k=1; if(k=0) l=1; /*l是是否查找到的标志*/if(q=0)/*q是用来控制printf的输出一次*/printf(编号t姓名t地址t邮政编码t电话号码n);q=1;printf(%dt,i);printf(%st,);printf(%st,reni.add);printf(%st,reni.post);printf(%st,reni.telep);printf(n);if(l=0)printf(没有查找到相关信息n);elseprintf(请输入要删除联系人的编号:);scanf(%d,&n);for(i=n,p=i+1;i=number;i+,p+)reni=renp;number-;printf(删除成功!n);fp=fopen(D:/通讯录.txt,w+); /*将删除后的通讯录重新写入文件*/for(i=0;inumber;i+)fprintf(fp,%st%st%stt%sn,,reni.add,reni.post,reni.telep);fclose(fp);void xiugai()/*修改*/int n,i,a,k;FILE *fp;if(number=0)printf(通讯录为空!n);elsechakan();printf(请输入要修改的联系人编号:);scanf(%d,&n);printf(请输入联系人姓名:);scanf(%s,);printf(请输入联系人地址:);scanf(%s,renn.add);printf(请输入邮政编码:);doscanf(%s,renn.post);a=strlen(renn.post);for(i=0;ia;i+)if(renn.posti=0) k=1;else k=0; printf(输入错误请重新输入:); break;while(k=0);printf(请输入电话号码:);doscanf(%s,renn.telep);a=strlen(renn.telep);for(i=0;ia;i+)if(renn.telepi=0) k=1;else k=0;printf(输入错误请重新输入:);break;while(k=0);printf(修改成功!);fp=fopen(D:/通讯录.txt,w+);for(i=0;inumber;i+)fprintf(fp,%st%st%stt%sn,,reni.add,reni.post,reni.telep);fclose(fp);void chakan() /*查看全部联系人*/int i;if(number=0)printf(通讯录为空!n);elseprintf(编号t姓名t地址t邮政编码t电话号码n);for(i=0;inumber;i+)printf(%dt,i);printf(%st,);printf(%st,reni.add);printf(%stt,reni.post);printf(%st,reni.tele

温馨提示

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

评论

0/150

提交评论