![点击分享此内容可以赚币 分享](/master/images/share_but.png)
c语言通讯录专业课程设计报告模板.doc
《c语言通讯录专业课程设计报告模板.doc》由会员分享,可在线阅读,更多相关《c语言通讯录专业课程设计报告模板.doc(34页珍藏版)》请在咨信网上搜索。
c语言通讯录专业课程设计报告模板 青岛工学院 C语言课程设计报告书 题 目 通讯录管理系统 学生姓名 指导教师 姜琴 学 院 信息工程学院 专业班级 软件工程2012级1班 组内分工 姓名 主要任务 占系统比例 程序的总体构思,写主函数,程序的调试 25% 写visit函数,分析程序代码结构,调试程序 25% 分析程序需求功能,写modifymenu函数调试程序 25% 写found函数,收集资料解决难点,调试程序 25% 目 录 1 前言 1 2 需求分析 2 3 模块设计图 3 4 NS流程图清单 4 5 存储结构及函数说明 5 6 课程设计结果································································8 7 实践心德体验·······························································9 8 源代码···························································10 1 前言 随着互联网的蓬勃与移动设备的发展,越来越多的联系人信息需要我们储存。不管是个人,还是企业,都需要一个功能齐全,稳定,快捷的通讯录系统来管理联系人资料。 现在我们要用c语言写一个简易的通讯录管理系统,实现通讯录的基本功能。由于我们学识浅薄,我们只能把程序简单化,太复杂的功能也无法实现。在此程序中只实现了创建、修改、删除的基本功能;在修改于删除里面带有查询功能,来查询需要修改于删除的对象。而且我们还参考了《c语言程序设计与应用》 与百度上的一些资料。 程序功能有限,又不好的地方尽请谅解。 2 需求分析 首先进入系统检测文件夹中是否有相关txt文档,有进入通讯录系统,没有创建一个txt文档用来存储联系人姓名; 建立一个通讯录,包括联系人姓名、电话号码、号,并保存在txt文档中; 能够根据联系人姓名来修改和删除联系人的所有信息,并修改保存在txt文档中的联系人; 可从主界面直接退出系统,下次使用时可导入上次存储的联系人信息、并进行操作。 3 模块设计图 此为通讯录重要函数流程: 通讯录管理系统 创建、读取文件函数loadfile() 创建通讯录系统found() 浏览通讯录系统visit() 推出通讯录系统exit(0) 删除通讯录系统deleted() 修改通讯录系统modifymenu() menu() Lodefile() Menu() exit(0) case5 case4 case3 case2 case1 deleted() modifymenu() visit() found() 4 NS流程图清单 : File *fp,打开该文件 是 是否有tellnfo 否 导入文件里面 创建一个文件 的联系人 关闭文件 2. found函数 输入联系人信息 NO++ 调用savefile函数 是 是否继续 否 调用found函数 getsch(); menu(); 5 存储结构及函数说明 头文件有: #include<> #include<> #include <> #include <> struct record 定义一个结构体,用来存储联系人的信息 { char name[20]; char tel[20]; char [20]; }TelInfo[500]; int NO; 定义变量NO,用来记入联系人的编号 FILE *fp; 定义文件指针 int loadfile(); 创建、读取文件 void savefile(); 保存创建的联系人到文件中 void menu(); 主菜单函数 void found(); 创建联系人函数 void modifymenu(); 修改联系人信息函数 void deleted(); 删除联系人函数 void visit(); 游览联系人函数 (1) 主函数main():调用loadfile()(/*创建文件,读取文件*/)函数;创建一个永真的条件while(1)以便循环使用;调用menu()(主菜单函数); (2) 创建、读取文件函数loadfile():定义一个文件指针,把0赋给NO;先判断电脑里是否有此文件,如果没有创建一个文件,如果有导入此文件中的信息; (3) 主菜单函数menu():在住界面显示所有功能,包括创建、游览、修改、删除、退出系统;用switch语句来控制我们的选择并进入相应的函数; (4) 创建联系人函数found():输入联系人的姓名、电话号码、号码,每输入一个联系人的资料NO就加一,并调用savefile()函数存储此联系人; (5) 保存创建的联系人函数savefile():用fwrite语句来存储已建的联系人; (6) 游览联系人函数visit():先判断NO是否为0,如果为0,则没有联系人,如果不为0,则依次按存储顺序输出联系人信息; (7) 修改联系人函数modifymenu():定义一个数组name[20];判断NO是否为0,不为0则显示所有联系人的姓名,然后输入要修改联系人的姓名,用strcmp语句来找到你需要修改的联系人并显示出来;确定修改此联系人后用swtich语句来控制需要修改的地方,包括姓名、电话号码、号码;调用savefile()函数存储; (8) 删除联系人函数deleted():定义一个数组name[20];判断NO是否为0,不为0则显示所有联系人的姓名,然后输入要删除联系人的姓名,用strcmp语句来找到你需要删除的联系人并显示出来;确定删除后,把此联系人以后的联系人的NO编号都向前移一位,从而把此联系人删除,用循环控制语句为“TelInfo[j]=TelInfo[j+1];”; 6 课程设计结果 在写程序时,我们尽力做到美观、可操作性强。每一个函数都有它的功能,并做到通用函数的循环调用,减小了程序的复杂度,让程序看上去结构层次分明。我们用文件形式来存储联系人信息,并保存,方便下次的使用,认程序更稳定。 程序虽然简陋,但能完美运行,一下为程序的部分界面: 7 实践心得体会 · 通过这次通讯录的设计,我对很多的函数有了新的认识,也学会了运用多种函数,明白了写软件的基本过程和基本方法。 · 在设计的过程中遇到了很多的困难,有程序上的也有实验报告上的,尤其是软件在一次一次的调试失败后,对我们打击很大。但最后我们还是咬牙让自己坚持了下来,通过小组的不断试验和讨论以及同学们的帮助,我们总算顺利的完成了程序设计。虽然在调试过程中遇到了许多困难,但当调试成功时那种喜悦的感觉,没有什么东西可以代替。在编写过程中我们都发现我们有许多的知识漏洞和缺陷,需要进一步努力来不断完善自己。 · 总之,此次过程不仅给我很多好的经验,同时加深了同学间的关系,增强了团队解决问题的能力。 8 源代码 #include<> #include<> #include <> #include <> struct record { char name[20]; char tel[20]; char [20]; }TelInfo[500]; int NO; FILE *fp; int loadfile(); void savefile(); void menu(); void found(); void modifymenu(); void deleted(); void visit(); int main() { loadfile(); while(1) menu(); } int loadfile() /*创建文件,读取文件*/ { FILE *fp; if((fp=fopen("","r"))==0) { printf("\n\n\n\n\n\t\t\t 电话簿文件不存在"); if ((fp=fopen("","wb"))==0) { printf("\n\t\t\t\t建立失败"); exit(0); } else { printf("\n\n\t\t\t 电话簿已建立"); printf("\n\n\t\t\t 按任意键进入主菜单"); getch(); NO=0; return(NO); } exit(0); } fseek(fp,0,2); /**/ if (ftell(fp)>0) { rewind(fp); for(NO=0;!feof(fp)&&fread(&TelInfo[NO],sizeof(struct record),1,fp);NO++); printf("\n\n\n\n\n"); printf("\n\t\t 文件导入成功!!! "); printf("\n\n\t\t\t\t按任意键返回主菜单"); getch(); return(NO); } else { printf("\n\t\t 没有可以访问的数据!!! "); printf("\n\n\t\t\t 按任意键返回主菜单进行添加"); getch(); NO=0; return(NO); } } void menu() /*主菜单*/ { int choice; system("cls"); printf("\n\n\t ********************欢迎使用通讯录系统********************\n"); printf("\n\t\t **********创建通讯录请按:1**********\n"); printf("\n\t\t **********游览通讯录请按:2**********\n"); printf("\n\t\t **********修改通讯录请按:3**********\n"); printf("\n\t\t **********删除联系人请按:4**********\n"); printf("\n\t\t **********退出通讯录请按:5**********\n"); printf("\n\t ********************这是通讯录的主菜单********************\n"); printf("\n\n\t\t 请输入你的选择[ ]\b\b"); scanf("%d",&choice); switch(choice) { case 1: found(); break; case 2: visit(); break; case 3: modifymenu(); break; case 4: deleted(); break; case 5: system("cls"); printf("\n\n\n\n\n\n\n\t\t 谢谢使用此通讯录系统,( ^_^ )/~~拜拜!!\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); exit(0); default: menu(); } } void found() /*创建通讯录*/ { system("cls"); printf("\n\t\t**************** 请输入联系人信息 ****************\n"); printf("\n\t\t 输入姓名:"); scanf("%s",&TelInfo[NO].name); printf("\n\t\t 输入联系电话:"); scanf("%s",&TelInfo[NO].tel); printf("\n\t\t 输入号码:"); scanf("%s",&TelInfo[NO].); NO++; savefile(); printf("\n\t\t 是否继续添加(y/n):[ ]\b\b"); if(getch()=='y') found(); else system("cls"); printf("\n\n\n\n\n\n\n\n\t\t\t 已成功保存所有联系人\n\n\t\t\t 请按任意键返回主菜单"); getch(); menu(); } void savefile() { int i; if((fp=fopen("","wb"))==0) printf("\n\t\t文件打开失败!\n"); for(i=0;i<NO;i++) if(fwrite(&TelInfo[i],sizeof(struct record),1,fp)!=1) printf("\n\t\t写入文件错误!\n"); fclose(fp); } void visit() /*游览通讯录*/ { int i; system("cls"); if(NO!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for(i=0;i<NO;i++) { printf("\n\n\t\t %d):",i+1); printf("\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); } printf("\n\t\t************************************************"); } else printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } void modifymenu() /*修改通讯录*/ { int mark=0; int i,k; int a=0; int t=0; char choice; char name[20]; struct record modify; system("cls"); if(NO!=0) { printf("\n\n\n\t\t以下为所有联系人的姓名:\n\n"); printf("\t\t************************************************\n\n"); for(i=1;i<=NO;i++) { printf("\t\t%s\n",TelInfo[i-1].name); } printf("\n\t\t************************************************\n"); printf("\n\t\t请输入您要修改的姓名:"); scanf("%s",name); system("cls"); for(i=a;i<NO;i++) { if(strcmp(TelInfo[i].name,name)==0) { k=i; mark=1; modify=TelInfo[i]; system("cls"); printf("\n\t\t********** 以下是您将修改的联系人信息 **********"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 是否继续?y/n[ ]\b\b"); if(getch()=='n') menu(); else { printf("\n\t\t 选择您要修改的选项:"); printf("\n\n\t\t\t(1)姓 名"); printf("\n\t\t\t(2)联系电话"); printf("\n\t\t\t(3)号码"); printf("\n\t\t\t(4)返 回\n\n"); choice=getch(); switch(choice) { case '1': printf("\n\t\t\t请输入姓 名:"); scanf("%s",TelInfo[i].name); break; case '2': printf("\n\t\t\t请输入联系电话:"); scanf("%s",TelInfo[i].tel); break; case '3': printf("\n\t\t\t请输入号码:"); scanf("%s",TelInfo[i].); break; case '4': modifymenu(); break; default: modifymenu(); } system("cls"); printf("\n\t\t 您的修改结果为:"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 确认修改?y/n[ ]\b\b"); if(getch()=='n') { TelInfo[i]=modify; printf("\n\t\t 修改未保存!\n"); } else { printf("\n\t\t 修改成功!\n"); savefile(); } mark++; printf("\n\t\t 是否继续修改(y/n)\n"); if(getch()=='y') modifymenu(); else menu(); } } } if(mark==0) { printf("\n\n\n\t\t\t\t没有该联系人的纪录"); printf("\n\n\t\t\t\t是否继续修改(y/n)[ ]\b\b"); if(getch()=='y') modifymenu(); } } else { printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } } void deleted() /*删除联系人*/ { int i,j; int mark=0; char name[20]; system("cls"); if(NO!=0) { printf("\n\n\n\t\t以下为所有联系人的姓名:\n\n"); printf("\t\t************************************************\n\n"); for(i=1;i<=NO;i++) { printf("\t\t%s\n",TelInfo[i-1].name); } printf("\n\t\t************************************************\n"); printf("\n\t\t 请输入要删除联系人姓名:"); scanf("%s",name); system("cls"); for(i=0;i<NO;i++) { if(strcmp(TelInfo[i].name,name)==0) { printf("\n\t\t 以下是您要删除的联系人纪录:"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 是否删除(y/n)[ ]\b\b"); if(getch()=='y') { for(j=i;j<NO-1;j++) TelInfo[j]=TelInfo[j+1]; NO--; mark++; printf("\n\t\t 删除成功\n"); savefile(); printf("\n\t\t 是否继续删除(y/n)[ ]\b\b"); if(getch()=='y') deleted(); else menu(); } else menu(); } continue; } if(mark==0) { printf("\n\n\n\t\t\t\t没有该联系人的纪录"); printf("\n\n\t\t\t\t是否继续修改(y/n)[ ]\b\b"); if(getch()=='y') deleted(); } } else { printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 通讯录 专业课程 设计 报告 模板
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文