版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言课程设计》课程设计报告题目通讯录管理系统学号姓名年级专业指导教师完成日期年月日安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformation,Anhui通讯录管理系统=1\*CHINESENUM3一、问题描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。=2\*CHINESENUM3二、基本要求每条记录包括:学号、姓名、专业、家庭住址、联系电话;能够实现添加、删除、修改功能;能够实现按学号、姓名、专业等内容进行查找=3\*CHINESENUM3三、系统分析和设计【需求分析】根据题目要求,通讯录数据以文本文件存储,故应提供文件的输入、输出等操作;还应提供显示、查找、删除等操作;另外还应提供键盘式选择菜单实现功能选择。【总体设计】通过对整个系统的分析,根据上述要求,可以将这个系统的设计分为三个模块(见图1):文件导入、通讯录编辑和退出。通讯录管理系统通讯录管理系统新建菜单浏览菜单修改菜单删除菜单查找菜单图1系统功能模块=4\*CHINESENUM3四、主要流程图(1)主菜单函数此函数功能为提供键盘式选择菜单以调用不同函数。其流程如图2所示。显示一系列功能选项显示一系列功能选项输入n,判断n是否是1~5?根据n的值调用各功能模块函数结束开始n图2主菜单函数流程图(2)新建菜单函数该函数的功能是用户需要新建联系人记录,从键盘输入并逐条写到原来的通讯录文件中,注意采用新建而不是覆盖的方式。其流程如图3所示。开始开始新建联系人是否继续新建?y/n结束ny图3新建函数流程图(3)浏览菜单函数此函数功能为提供浏览所有联系人记录。其流程如图4所示。浏览全部联系人记录浏览全部联系人记录开始结束图4浏览模块流程图(4)查找菜单函数此模块的功能是用户可根据姓名或电话号码查询联系人信息。查询菜单函数功能为提供键盘式选择菜单选择查找方法。其流程如图5所示。开始开始按姓名查找按号码查找结束图5查找函数流程图△按姓名查找函数其流程如图6所示。开始开始输入联系人姓名是否找到此记录?是否查找相同姓名?结束显示此记录提示未找到此记录ynyn图6按姓名查找函数流程图按电话查找函数其流程如图7所示。开始开始输入联系人电话是否找到此记录?显示记录提示未找到结束图7按电话查找函数流程图(5)删除函数此模块功能为用户可根据需要选择删除全部或单个联系人记录,且可按姓名或电话删除单个联系人。其流程如图9所示。△删除菜单函数提供键盘式选择菜单以调用相关函数以实现各功能开始开始删除全部删除单个按姓名删除按电话删除结束图8删除函数模块流程图(6)文件导入函数此模块上导入原文件,若原文件无法打开,则需另行新建。其流程如图2所示开始开始成功打开文件?新建文件文件导入成功结束ny图2文件导入函数流程图=5\*CHINESENUM3五、运行结果文件导入成功界面:主菜单函数:新建菜单:浏览函数:查找函数:修改函数:删除函数:【总结】通过本次课程设计,我了解掌握了模块化程序设计方法,理解和运用结构化程序设计的思路和方法。学习了利用流程图表示算法,很大程度上提高了C语言程序设计能力。我了解到程序设计的过程就是确定就绝问题的详细步骤,即流程。而在程序设计中理清整个问题的流程很重要,然后再采用逐步细化的方法实现整个程序。一个较大的程序,一般不可能一次就设计出一个很完善的系统。通常要先设计出满足基本要求的系统,然后在测试或使用过程中再不断完善。对于我这次课程设计的作品“通讯录管理系统beta”,觉得其拥有思路明了,结构清晰,语言简单易读等优点,能流畅运行以满足题目要求。由于时间仓促,缺少大量调试与优化,故此beta版还有很多有待改进之处,例如不能识别明显的输入错误,当有重复记录时不能自动报警,另外还有界面粗糙等诸多不足,尚待以后日臻完善!【参考书目】谭浩强,C程序设计教程,清华大学出版社,2007年赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年谭浩强编著,《C程序设计》,清华大学出版社,1991年PS:源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>structrecord{charname[20];charphone[20];charadress[40];charnumber[30];}contact[500];intNO=0;FILE*fp;voidmainmenu();voidnewrecord();voidbrowsemenu();voidsearchmenu();voidsearchname();voidsearchphone();voidmodifymenu();voiddeletemenu();voiddeleteall();voiddeletesingle();voiddeletename();voiddeletephone();intloadfile();voidsavefile();voidmain(){printf("\n\t\t:)欢迎使用通讯录管理系统beta");printf("\n\t\t~~~~(>_<)~~~~文件导入中……请稍后……\n\n\n\n\n");system("cls");loadfile();while(1){mainmenu();}}voidmainmenu(){charchoice;system("cls");printf("\n\t\t********************主菜单********************");printf("\n\t\t******************1-新建菜单******************");printf("\n\t\t******************2-浏览菜单******************");printf("\n\t\t******************3-查找菜单******************");printf("\n\t\t******************4-修改菜单******************");printf("\n\t\t******************5-删除菜单******************");printf("\n\t\t******************6-退出******************");printf("\n\t\t************************************************");printf("\n\t\t请选择:");choice=getch();switch(choice){case'1':newrecord();break;case'2':browsemenu();break;case'3':searchmenu();;break;case'4':modifymenu();break;case'5':deletemenu();break;case'6':exit(0);default:mainmenu();}}voidnewrecord(){printf("\n\t\t****************请输入联系人信息****************\n");printf("\n\t\t输入姓名:");scanf("%s",&contact[NO].name);printf("\n\t\t输入电话号码:");scanf("%s",&contact[NO].phone);printf("\n\t\t输入家庭住址:");scanf("%s",&contact[NO].adress);printf("\n\t\t输入学号:");scanf("%s",&contact[NO].number);NO++;savefile();printf("\n\t\t是否继续添加?(y/n):");if(getch()=='y')newrecord();return;}voidbrowsemenu(){inti;system("cls");if(NO!=0){printf("\n\t\t***************以下为通讯录所有信息************");for(i=0;i<NO;i++){printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\t\t");if(i+1<NO){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************");}elseprintf("\n\t\t+_+通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return;}voidsearchmenu(){charchoice;system("cls");printf("\n\t\t*******************查找菜单*******************");printf("\n\t\t*****************1-按姓名查找*****************");printf("\n\t\t*****************2-按电话查找*****************");printf("\n\t\t*****************3-返回主菜单*****************");printf("\n\t\t************************************************");printf("\n\t\t请选择:");choice=getch();switch(choice){case'1':searchname();break;case'2':searchphone();break;case'3':mainmenu();break;}}voidsearchname(){intmark=0;inti;inta=0;charname[20];printf("\n\t\t*****************按姓名查找*******************");printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<NO;i++){if(strcmp(contact[i].name,name)==0){printf("\n\t\t************以下是您查找的联系人信息**********");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;return;}}if(mark==0){printf("\n\t\t没有该姓名的联系人纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}}voidsearchphone(){intmark=0;inti;inta=0;charphone[10];printf("\n\t\t******************按电话查找******************");printf("\n\t\t请输入电话:");scanf("%s",phone);for(i=0;i<NO;i++){if(strcmp(contact[i].phone,phone)==0){printf("\n\t\t*************以下是您查找的联系人信息*********");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;}}if(mark==0){printf("\n\t\t没有该联系人信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}voidmodifymenu(){intmark=0;inti,k;inta=0;intt=0;charchoice;charname[20];structrecordmodify;system("cls");printf("\n\t\t请输入您要修改的姓名:");scanf("%s",name);for(i=a;i<NO;i++){if(strcmp(contact[i].name,name)==0){k=i;mark=1;modify=contact[i];printf("\n\t\t**********以下是您将修改的联系人信息**********");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t是否继续?y/n");if(getch()=='n')modifymenu();else{printf("\n\t\t选择您要修改的选项:");printf("\n\t\t\t(1).姓名"); printf("\n\t\t\t(2).联系电话"); printf("\n\t\t\t(3).家庭住址"); printf("\n\t\t\t(4).学号");printf("\n\t\t\t(5).返回");printf("\n\t\t请选择:");choice=getch();switch(choice){case'1':printf("姓名:");scanf("%s",contact[i].name);break;case'2':printf("联系电话:");scanf("%s",contact[i].phone);break;case'3':printf("家庭住址:");scanf("%s",contact[i].adress);break;case'4':printf("学号:");scanf("%s",contact[i].number);break;case'5':mainmenu();break;default:modifymenu();}printf("\n\t\t您的修改结果为:"); printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t确认修改?y/n"); if(getch()=='n') {contact[i]=modify;printf("\n\t\t修改未保存!"); } elseprintf("\n\t\t+_+修改成功!"); savefile();mark=0;printf("\n\t\t是否继续修改?(y/n)");if(getch()=='y')modifymenu(); }}}if(mark==0){printf("\n\t\t+_+没有该联系人的纪录");printf("\n\t\t是否继续修改?(y/n)");if(getch()=='y')modifymenu();}return;}voiddeletemenu(){charchoice;if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}system("cls");printf("\n\t\t*******************删除菜单*******************");printf("\n\t\t******************1-删除所有******************");printf("\n\t\t******************2-删除单个******************");printf("\n\t\t*****************3-返回主菜单*****************");printf("\n\t\t************************************************");printf("\n\t\t请选择:");choice=getch();switch(choice){case'1':deleteall();break;case'2':deletesingle();break;case'3':mainmenu();break;default:mainmenu();}}voiddeleteall(){printf("\n\t\t确认删除?(y/n)");if(getch()=='y'){if((fp=fopen("contact","w"))==0){printf("\n\t\t+_+不能打开文件,删除失败");loadfile();}NO=0;printf("\n\t\t^_^纪录已删除,按任意键返回主菜单");getch();fclose(fp);return;}elsereturn;}voiddeletesingle(){charchoice;printf("\n\t\t\t1-按姓名删除");printf("\n\t\t\t2-按号码删除");printf("\n\t\t\t3-返回删除菜单");printf("\n\t\t请选择:");choice=getch();switch(choice){case'1':deletename();break;case'2':deletephone();break;case'3':deletemenu();break;}}voiddeletename(){inti,j;intmark=0;charname[20];printf("\n\t\t请输入要删除联系人姓名:");scanf("%s",name);if(NO==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for(i=0;i<NO;i++){if(strcmp(contact[i].name,name)==0){printf("\n\t\t以下是您要删除的联系人纪录:");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t是否删除?(y/n)");if(getch()=='y'){for(j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t^_^删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if(getch()=='y')deletename();return;}elsereturn;}continue;}if(mark==0){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续删除?(y/n)");if(getch()=='y')deletename();return;}}voiddeletephone(){inti,j;intmark=0;charphone[20];printf("\n\t\t请输入要删除联系电话:");scanf("%s",phone);if(NO==0){printf("\n\t\t+_+对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for(i=0;i<NO;i++){if(strcmp(contact[i].phone,phone)==0){printf("\n\t\t以下是您要删除的联系人纪录:");printf("\n\t\t姓名:%s",contact[i].name);printf("\n\t\t联系电话:%s",contact[i].phone);printf("\n\t\t家庭住址:%s",contact[i].adress);printf("\n\t\t学号:%s",contact[i].number);printf("\n\t\t是否删除?(y/n)");if(getch()=='y'){for(j=i;j<NO-1;j++)contact[j]=contact[j+1];NO--;mark++;printf("\n\t\t^_^删除成功");savefile();printf("\n\t\t是否继续删除?(y/n)");if(getch()=='y')deletephone();return;}elsereturn;}continue;}if(mark==0){prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《行政诉讼法》课程教学大纲
- 2024年低价装修月租房合同范本
- 2024年代理拓客合同范本大全
- 2024年冲床加工合伙人协议书模板范本
- 保育员与家长沟通技巧培训
- 动脉硬化的预防与治疗
- 山东省德州市齐河县刘桥乡2024-2025学年度八年级上学期期中考试物理试题(含答案)
- 2024-2025学年福建省福州市福九联盟高一上学期期中考试数学试题(含答案)
- 下雪在学校注意事项和安全
- 员工岗位培训范本
- 小学五年级上册生命.生态.安全全册教案
- 浙江省杭州市2024-2025学年高三上学期期中教学质量检测历史试题(无答案)
- 体育赛事组织与执行手册
- 防性侵安全教育主题班会教案3篇
- 宪法与法律学习通超星期末考试答案章节答案2024年
- 2024年二级工会实施细则范文(三篇)
- (完整版)A4作文格纸可直接打印使用(供参考)
- ISO27001信息安全管理体系培训资料
- 红色经典影片与近现代中国发展学习通超星期末考试答案章节答案2024年
- 2024年法律职业资格考试(试卷一)客观题试卷与参考答案
- 2024年湖北武汉经济技术开发区(汉南区)事业单位专项招聘35人历年高频500题难、易错点模拟试题附带答案详解
评论
0/150
提交评论