C语言课程设计报告—手机电话薄管理系统毕业论文.doc
《C语言课程设计报告—手机电话薄管理系统毕业论文.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告—手机电话薄管理系统毕业论文.doc(22页珍藏版)》请在咨信网上搜索。
C程序课程设计报告 --手机通讯录管理系统 组长:曾闯 学院:电子信息工程 学号:10071050 班级:电二 成员:晶,鄂跃宇,金迪 景飞,兴 一 课程设计目的和容概述 1.目的:加深对《C语言》课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。 2.容:设计一个简易的手机通讯录管理系统。该题目要求在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以与文件的读写操作等。 其中结构体,函数的调用,算法的设计是尤为重要的。 二 题目 手机通讯录管理系统。 [问题描述] 该系统模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 [基本要求] 要能提供以下几种功能: (1)查看功能:选择此功能时,列出下列三类选择: A:办公类 B:个人类 C:商务类 (2)当选中某类时,显示出此类所有数据中的和 (3)添加数据功能:能录入新数据,每个结点包括:,,分类(可能选项有:w为办公类 p为个人类 b为商务类),电子。 例如: 春 商务类 chuny126. 当录入重复的和时,则提示数据录入重复并取消录入;当通讯录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (4)修改功能:选中某个人的时,可对此人的相应数据进行修改。 (5)删除功能:选中某个人的时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 三 程序设计 1.总体设计 首先,因为每个个体有多种信息,所以要建立结构体来储存和整合各个信息。然后利用模块来分别实现程序的各个功能。各个模块用函数来实现。在通过通过主函数来判断输入字母,从而调动函数,实现所需功能。最后将输入的文件保存在文件里,以便重复使用。 2.详细设计 根据功能需要建立显示,添加,查看,删除,修改,保存五个模块。在模块过调用各个函数来实现功能。详细设计如下: (1)构建结构体,写入文件 FILE *fp; int i; struct address { char a[40]; //email地址 }; struct ffriend { int num; char name[20]; char kind[20]; long telephone; struct address address; } friends[50]; void Load() { int j,k; fp=fopen("friend.txt","a+"); if(fp!=NULL) { for(k=0;k<50;k++) { j=fgetc(fp); if(j==EOF) { i=k-1; return; } fseek(fp,k*sizeof(struct ffriend),SEEK_SET); fread(&friends[k],sizeof(struct ffriend),1,fp); } } else { fp=fopen("friend.txt","w"); i=1; } system("cls"); } (2)构造函数与模块 构造显示模块,增加模块,删除模块,修改模块,查询模块。程序如下: void Show(int j) { system("cls"); //实现分屏操作的函数 printf("\n\n\t编号-Nnumber: %3d",friends[j].num); printf("\n\t-Name:%-20s",friends[j].name); printf("\n\t性别-kind:%s",friends[j].kind); printf("\n\t联系-Telephone:%-13ld",friends[j].telephone); printf("\n\temail-address:%-40s",friends[j].address.a); } void Append(int j) { system("cls"); friends[j].num=j; printf("\n\t\t\t序号-Number : %d",j); printf("\n\t\t\t-Name : "); scanf("%s",friends[j].name); printf("\t\t\t类别-kind : "); scanf("%s",&friends[j].kind); printf("\t\t\t联系-telephone : "); scanf("%ld",&friends[j].telephone); while(friends[j].telephone<0||friends[j].telephone>) { printf("不合法!请重新输入 : "); scanf("%ld",&friends[j].telephone); } printf("\t\t\temail-Address : "); scanf("%s",friends[j].address.a); getchar(); } void Delete() { int k;int j; system("cls"); printf("\n\tDelete 序号-Number : "); scanf("%d",&k); if(k-1<=i) { for(j=k-1;j<i+1;j++) /*插入位置后的元素顺序后移*/ { strcpy(friends[j].name,friends[j+1].name); /*交换元素容*/ strcpy(friends[j].kind,friends[j+1].kind); friends[j].telephone=friends[j+1].telephone; strcpy(friends[j].address.a,friends[j+1].address.a); } i--; } else { printf("输入的序号太大!"); } } void Modify(int j) { system("cls"); Append(j); } void Save() { int k,j; system("cls"); printf("\n\n\t\t请耐心等待,信息正在保存!\n"); printf("\n\n\n\n\t\t\tSaving"); for(k=0;k<20;k++) { Sleep(300); printf("."); } printf("\n\n信息已经保存成功!\n"); fp=fopen("friend.txt","w"); for(j=0;j<=i;j++) { fwrite(&friends[0],sizeof(struct ffriend),1,fp); } fclose(fp); } (3)主函数调用各个模块 用switch语句判断输入者要使用的功能,然后调用函数,模块实现功能。程序如下: void main() { int j;char a;char x; char grade; char searchkind[20]; char searchname[20]; load(); system("cls"); do { printf("\n\n\t\t\t=========================================\n"); printf("\t\t\t\t手机通讯录 \n"); printf("\t\t\t\t功能选择 \n"); //输出主界面 printf("\t\t\t=========================================\n"); printf("\t\t\t A.查看 *\n"); printf("\t\t\t B.增添 *\n"); printf("\t\t\t C.删除 *\n"); printf("\t\t\t D.查询 *\n"); printf("\t\t\t E.修改 *\n"); printf("\t\t\t F.保存 *\n"); printf("\t\t\t=========================================\n"); printf("\t\t\n请选择(Choice)\n\n\t\t注:输入a~h或A~H的字母:"); scanf("%c",&grade); switch(grade) //用switch判断使用者要选择的功能 { case 'a': case 'A': j=0; while(getchar()!=0x1b&&j<=i) { Show(j++); printf("\n\n请按回车键继续!"); } while(getchar()==0x1b||j>i) { if(j==0)printf("\n\t空文档,无任何记录-Empty Note\n"); else printf("\n\t记录已全部显示\n"); printf("\n\n请按回车键继续!"); getchar(); break; } printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'b': case 'B': while(i<50) { i++; Append(i); printf("\t是否继续增加?(y/n)"); a=getchar(); if(a=='n') break; } if(i==50) printf("\n\t文档已满,无法增加记录-note full"); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); getchar(); break; case 'c': case 'C': Delete(); if(i<1) printf("\n没有记录-No records\n"); printf("\n\n请按回车键继续!"); getchar(); getchar(); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'd': case 'D': system("cls"); printf("\n\t请输入要查询记录的相关类别: p.个人类 b.商务类 w.办公类"); scanf("%s",searchkind); for(j=0;j<=i;j++) { if(strcmp(searchkind,friends[j].kind)==0) { Show(j); getchar(); } } break; case 'e': case 'E': printf("\n\t请输入要修改记录的相关:"); gets(searchname); scanf("%s",searchname); for(j=0;j<=i;j++) { if(strcmp(searchname,friends[j].name)==0) { Modify(j); } } if(i<1) { printf("\n 没有您所要修改的记录-No records"); printf("\n 请按回车键继续!"); getchar(); getchar(); } printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'f': case 'F': system("cls"); Save(); getchar(); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; default: printf("\n\t输入有误,请输入正确的序列号!"); printf("\n请按回车键继续!"); getchar(); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); } }while(1); } 上述三部分实现整个程序的功能。 四 程序源代码 #include <stdlib.h> #include <string.h> #include <stdio.h> #include <windows.h> FILE *fp; int i; struct address { char a[40]; }; struct ffriend { int num; char name[20]; char kind[20]; long telephone; struct address address; } friends[50]; void Load() { int j,k; fp=fopen("friend.txt","a+"); if(fp!=NULL) { for(k=0;k<50;k++) { j=fgetc(fp); if(j==EOF) { i=k-1; return; } fseek(fp,k*sizeof(struct ffriend),SEEK_SET); fread(&friends[k],sizeof(struct ffriend),1,fp); } } else { fp=fopen("friend.txt","w"); i=1; } system("cls"); } void Show(int j) { system("cls"); printf("\n\n\t编号-Nnumber: %3d",friends[j].num); printf("\n\t-Name:%-20s",friends[j].name); printf("\n\t性别-kind:%s",friends[j].kind); printf("\n\t联系-Telephone:%-13ld",friends[j].telephone); printf("\n\temail-address:%-40s",friends[j].address.a); } void Append(int j) { system("cls"); friends[j].num=j+1; printf("\n\t\t\t类别:p.个人类 b.商务类 w.办公类"); printf("\n\t\t\t序号-Number : %d",j+1); printf("\n\t\t\t-Name : "); scanf("%s",friends[j].name); printf("\t\t\t类别-kind : "); scanf("%s",&friends[j].kind); printf("\t\t\t联系-telephone : "); scanf("%ld",&friends[j].telephone); while(friends[j].telephone<0||friends[j].telephone>) { printf("不合法!请重新输入 : "); scanf("%ld",&friends[j].telephone); } printf("\t\t\temail-Address : "); scanf("%s",friends[j].address.a); getchar(); } void Delete() { int k;int j; system("cls"); printf("\n\tDelete 序号-Number : "); scanf("%d",&k); if((k-1)<=i) { for(j=k-1;j<i+1;j++) { strcpy(friends[j].name,friends[j+1].name); strcpy(friends[j].kind,friends[j+1].kind); friends[j].telephone=friends[j+1].telephone; strcpy(friends[j].address.a,friends[j+1].address.a); } i--; } else { printf("输入的序号太大!"); } } void Modify(int j) { system("cls"); Append(j); } void Save() { int k,j; system("cls"); printf("\n\n\t\t请耐心等待,信息正在保存!\n"); printf("\n\n\n\n\t\t\tSaving"); for(k=0;k<20;k++) { Sleep(300); printf("."); } printf("\n\n信息已经保存成功!\n"); fp=fopen("friend.txt","w"); for(j=0;j<=i;j++) { fwrite(&friends[j],sizeof(struct ffriend),1,fp); } fclose(fp); } void main() { int j;char a;char x; char grade; char searchkind[20]; char searchname[20]; Load(); system("cls"); do { printf("\n\n\t\t\t=========================================\n"); printf("\t\t\t\t手机通讯录 \n"); printf("\t\t\t\t功能选择 \n"); printf("\t\t\t=========================================\n"); printf("\t\t\t A.查看 *\n"); printf("\t\t\t B.增添 *\n"); printf("\t\t\t C.删除 *\n"); printf("\t\t\t D.查询 *\n"); printf("\t\t\t E.修改 *\n"); printf("\t\t\t F.保存 *\n"); printf("\t\t\t g.推出 *\n"); printf("\t\t\t=========================================\n"); printf("\t\t\n请选择(Choice)\n\n\t\t注:输入a~h或A~H的字母:"); scanf("%c",&grade); switch(grade) { case 'a': case 'A': j=0; while(getchar()!=0x1b&&j<=i) { Show(j++); printf("\n\n请按回车键继续!"); } while(getchar()==0x1b||j>i) { if(j==0)printf("\n\t空文档,无任何记录-Empty Note\n"); else printf("\n\t记录已全部显示\n"); printf("\n\n请按回车键继续!"); getchar(); break; } printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'b': case 'B': while(i<50) { i++; Append(i); printf("\t是否继续增加?(y/n)"); a=getchar(); if(a=='n') break; } if(i==50) printf("\n\t文档已满,无法增加记录-note full"); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); getchar(); break; case 'c': case 'C': Delete(); if(i<0) printf("\n没有记录-No records\n"); printf("\n\n请按回车键继续!"); getchar(); getchar(); printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'd': case 'D': system("cls"); printf("\n\t请输入要查询记录的相关类别: p.个人类 b.商务类 w.办公类"); scanf("%s",searchkind); getchar(); for(j=0;j<=i;j++) { if(strcmp(searchkind,friends[j].kind)==0) { Show(j); printf("\n\t按回车请继续"); getchar(); } } break; case 'e': case 'E': printf("\n\t请输入要修改记录的相关:"); gets(searchname); scanf("%s",searchname); for(j=0;j<=i;j++) { if(strcmp(searchname,friends[j].name)==0) { Modify(j); } } if(i<0) { printf("\n 没有您所要修改的记录-No records"); printf("\n 请按回车键继续!"); getchar(); getchar(); } printf("\n\t\t\t\t\t\t\t此次操作结束"); printf("\n\t------------------------------------------------------------\t\t\n"); break; case 'f': case 'F': system("cls"); Save();- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 手机 电话薄 管理 系统 毕业论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文