欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    C语言通讯录专项训练报告-通讯录程序设计.docx

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

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

    C语言通讯录专项训练报告-通讯录程序设计.docx

    C语言专项训练报告题 目: 设 计 者:专业班级:学 号:指导教师: 题目:通讯录程序设计 一、设计目的(1)本课程设计为学生提供了一个既动手又动脑,自学,查资料,独立实践的机会。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解。(2)C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统,提高编程能力,体会软件程序的开发过程。 二、方案设计: (1)根据所学知识,运用结构体数组编辑一个简单实用的小型通讯录程序,使之具有添加、删除和查询功能等。(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告,直到编译成功为止。(3)执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。三、需求分析根据查询通讯录的实际需要,建立一个“小型通讯录程序”,程序将具有对通讯的查询、添加、删除、更改等基本操作,以方便对通讯录的各项管理工作。每一条记录包括一个人的姓名,籍贯,电话号码1,电话号码2和电子邮箱等,姓名和电话号码均可由字符和数字组成。可将通讯记录保存到文件中,并根据需要从文件中读取出来。并通过菜单界面来调用各个功能。本程序通过多次使用函数调用等来实现各种功能。共分为7个模块,分别为:信息录入;信息浏览;信息查询;信息修改;信息添加;信息删除和系统退出等功能。每做完一个模块,会有信息的提示,方便实用。以下为该系统要测试的数据:1、 信息录入模块:(输入五个人的通讯信息)Name add num1 num2 E-mail a 鲁济南 0531-8765432 18765879031 138794233163.comb 鲁济南 0531-8234765 15098876532 590362777163.com c 鲁德州 0534-5871299 18760253999 521738006163.com d 鲁济南 0531-8377999 13258643799 837124815163.com e 鲁德州 0534-7071129 15036258764 804123825163.com 2.信息查询模块:按姓名查找 3.信息修改模块:(修改b的电话号码) (输入)1(修改num)(输入) 4.信息添加模块:(再增加一条信息) X 鲁德州 0534-5864633 15806871965 236834075163.com 5.信息删除模块:(删除C的基本信息) C(输入姓名即可删除)四、概要设计(1)主函数结构图选择choice修改记录查询记录添加记录删除记录退出主程序(2)数据类型结构体类型Struct jilu /*结构体类型*/ char name; /*结构体数组,用来定义姓名*/ char add; /*结构体数组,用来定义籍贯*/ char num1; /*结构体数组,用来定义号码1*/ char num2; /*结构体数组,用来定义号码2*/ char E_mail; /*结构体数组,用来定义电子邮箱*/ ;(3) 模块功能说明: 1.添加模块:此模块可以连续添加记录,并把记录存入Data1.txt文件中。 2.修改模块:输入要修改记录的人姓名,即可根据所需进行修改。 3.删除模块:输入要删除的人的姓名即可。 4.查询五、详细设计及运行模块:输入姓名查询。五、详细设计主要函数之间相互调用如下:void main() int choice; readRecord(); while(1) /*主菜单*/ printf("n 通讯录系统nn"); printf(" 1.添加通讯记录n"); printf(" 2.修改通讯记录n"); printf(" 3.删除通讯记录n"); printf(" 4.按姓名查找n"); printf(" 5.浏览全部记录n"); printf(" 6.退出n"); printf(" 请选择(1-6):"); scanf("%d",&choice); getchar(); system("cls"); /清空屏幕内容 switch(choice) case 1: insert(); break; case 2: modify(); break; case 3: deletepeople(); break; case 4: searchByName(); break; case 5: list(); break; case 6: exit(0); break; writeRecord(); 删除模块调用 添加模块调用 void deletepeople() void insert() while(1) int i; while(1) printf("请输入姓名: n"); scanf("%s",&peoplen.name); char name10; printf("请输入籍贯: n"); int index; scanf("%s",&peoplen.add); printf(" 请输入要删除的记录人的姓名:"); printf("请输入号码1: n"); scanf("%s",&name); scanf("%s",&peoplen.num1); getchar(); printf("请输入号码2: n"); index=intByName(name); scanf("%s",&peoplen.num2); if(index=-1) printf("请输入E-mail: n"); scanf("%s",&peoplen.E_mail); printf("此人记录不存在!n"); getchar(); writeRecord(); Else printf("是否继续添加记录?(y/n) "); char yn=getchar(); if(yn='n'|'N') printf("你要删除的记录为: n"); break; display(index); printf("是否真的要删除此记录?(y/n)"); char yn=getchar(); if(yn='y'|yn='Y') for(i=index;i<n-1;i+) peoplei=peoplei+1; getchar(); printf("是否要继续删除记录?(y/n)"); char yn=getchar(); if(yn='n'|yn='N') break; 六、调试情况:1测试数据: 在菜单中选择要进行的功能(以添加为例):选择1进入添加模块,根据提示分别输入要添加的数据,完成后可通过键盘的”y”或”n”确定是否继续添加。2调试情况:一开始没有添加文件保存模块,导致文件无法保存,后来知道是没在主程序中加保存模块,添加后就可以了。但是文件仍然无法打开。七、源程序清单:#include"stdio.h"#include"string.h"#include"stdlib.h"#define n 100struct jilu/*定义结构体*/ char name20; char add20; char num111; char num211; char E_mail20;people100;/*通过姓名返回数组下标*/ int intByName(char nam) int i; for(i=0;i<n;i+) if(strcmp(peoplei.name,nam)=0) return i; return -1; /*按数组下标显示通讯记录*/void display(int index) while(1) printf("%10s%10s%10s%10s%10sn","姓名","籍贯","电话号码1","电话号码2","邮箱"); printf("-n"); printf("%10s%10s%10s%10s%10sn",peopleindex.name,peopleindex.add,peopleindex.num1,peopleindex.num2,peopleindex.E_mail);/*显示所有记录的信息*/void list() int i; printf("n%15s%15s%15s%15s%15sn","姓名","籍贯","电话号码1","电话号码2","邮箱"); for(i=0;i<n;i+) printf("%15s%15s%15s%15s%15sn",peoplei.name,peoplei.add,peoplei.num1,peoplei.num2,peoplei.E_mail); /*将记录从文件读出*/ void readRecord() FILE *fp; int i; if(fp=fopen("Data1.txt","rb")=NULL) /*以只读方式打开文件*/ printf("文件打开失败!n"); return; if(fread(&peoplen,sizeof(int),1,fp)!=1) printf("文件打开失败!n"); else for(i=0;i<n;i+) fread(&peoplen,sizeof(struct jilu),1,fp); fclose(fp); /*将记录写入文件*/ void writeRecord() FILE *fp; int i; if(fp=fopen("Data1.txt","wb")=NULL) /*以只写方式打开文件*/ printf("文件打开失败!n"); return; if(fwrite(&peoplen,sizeof(int),1,fp)!=1) printf("写入文件错误!n"); for(i=0;i<n;i+) if(fwrite(&peoplen,sizeof(struct jilu),1,fp)!=1) printf("写入文件错误!n"); fclose(fp); /*添加记录*/void insert() while(1) printf("请输入姓名: n"); scanf("%s",&peoplen.name); printf("请输入籍贯: n"); scanf("%s",&peoplen.add); printf("请输入号码1: n"); scanf("%s",&peoplen.num1); printf("请输入号码2: n"); scanf("%s",&peoplen.num2); printf("请输入E-mail: n"); scanf("%s",&peoplen.E_mail); getchar(); writeRecord(); printf("是否继续添加记录?(y/n) "); char yn=getchar(); if(yn='n'|'N') break; /*修改记录信息*/void modify() while(1) char nam10; int index; int choice; printf("请输入要修改的姓名: "); scanf("%s",&nam); getchar(); index=intByName(nam); if(index=-1) printf("此人记录不存在!n"); printf("是否继续修改记录?(y/n)"); char yn=getchar(); if(yn='n'|'N') break; else printf("你要修改的姓名的信息记录是:n"); display(index); printf("-请输入新的记录-n"); printf(" 1.修改籍贯 n"); printf(" 2.修改号码1 n"); printf(" 3.修改号码2 n"); printf(" 4.修改E_mail n"); printf("请选择(1-4):"); scanf("%d",&choice); getchar(); switch(choice) case 1: getchar(); scanf("%s",&peopleindex.add); break; case 2: getchar(); scanf("%s",&peopleindex.num1); break; case 3: getchar(); scanf("%s",&peopleindex.num2); break; case 4: getchar(); scanf("%s",&peopleindex.E_mail); break; printf("是否继续修改记录?(y/n)"); char yn=getchar(); if(yn='n'|'N') break; /*删除通讯记录信息*/void deletepeople() int i; while(1) char name10; int index; printf(" 请输入要删除的记录人的姓名:"); scanf("%s",&name); getchar(); index=intByName(name); if(index=-1) printf("此人记录不存在!n"); else printf("你要删除的记录为: n"); display(index); printf("是否真的要删除此记录?(y/n)"); char yn=getchar(); if(yn='y'|yn='Y') for(i=index;i<n-1;i+) peoplei=peoplei+1; getchar(); printf("是否要继续删除记录?(y/n)"); char yn=getchar(); if(yn='n'|yn='N') break; /*按姓名查找记录函数*/void searchByName() while(1) char name10; int index; printf("请输入要查询的姓名:"); scanf("%s",&name); getchar(); index=intByName(name); if(index=-1) printf("无此人的记录!n"); else printf("你要查询的记录为:n"); display(index); printf("是否继续查询记录?(y/n)"); char yn=getchar(); if(yn='n'|yn='N') break; /*主函数*/ #include"stdio.h"#include"string.h"#include"stdlib.h"void main() int choice; readRecord(); while(1) /*主菜单*/ printf("n 通讯录系统nn"); printf(" 1.添加通讯记录n"); printf(" 2.修改通讯记录n"); printf(" 3.删除通讯记录n"); printf(" 4.按姓名查找n"); printf(" 5.浏览全部记录n"); printf(" 6.退出n"); printf(" 请选择(1-6):"); scanf("%d",&choice); getchar(); system("cls"); /清空屏幕内容 switch(choice) case 1: insert(); break; case 2: modify(); break; case 3: deletepeople(); break; case 4: searchByName(); break; case 5: list(); break; case 6: exit(0); break; writeRecord();

    注意事项

    本文(C语言通讯录专项训练报告-通讯录程序设计.docx)为本站会员(哈尼dd)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开