c语言电话薄管理系统的设计说明.doc
《c语言电话薄管理系统的设计说明.doc》由会员分享,可在线阅读,更多相关《c语言电话薄管理系统的设计说明.doc(32页珍藏版)》请在咨信网上搜索。
学号 理工大学华夏学院 课 程 设 计 课程名称 C语言课程设计 题 目 通讯录管理系统的设计 专 业 软件工程 班 级 软件工程1121班 姓 名 邓燕蓉 成 绩 指导教师 王绪梅 2013年2月25日至2013年3月1 日 课程设计任务书 学生: 邓燕蓉 专业班级: 软件工程1121班 指导教师:王绪梅 工作单位: 理工大学华夏学院 设计题目:通讯录管理系统的设计 要求完成的主要任务: 1. 任务描述 设计一个管理通讯录的程序。 完成:1、数据的插入、删除、修改和显示功能; 2、实现按人名或进行查询的功能; 3、提供键盘式选择菜单以实现功能选择。 提示:信息记录要求放到文件中,因而要实现文件的输入输出操作,整个系统可以设计为多模块结构,由数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块组成。 2. 本课程涉与的知识点 变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。 3. 要求完成的任务 ⑴ 完成整个规定任务的设计与调试,最后得出正确结果,并经教师检查与答辩; ⑵ 写出规的课程设计报告,在设计思想描述时一定要画出程序算法流程图; ⑶ 课程设计结束后交设计说明书等文档和设计容: ⑷从2月26日起,学生每天至少要到设计教室半天以上; 设计报告撰写格式要求: 设计报告的主要容是详细写出在设计过程中所用到的主要技术或方法; 课程设计报告按通用格式书写,具体要求见资料:“课程设计说明书的书写容与格式” 时间安排: 第一天: 学生先在实验室集中,由指导教师介绍课程设计的目的、布置任务后选题; 第二天-第四天:学生在实验室完成设计,经教师检查并回答提问,确认设计完成; 第五天: 教师在计算机上先检查设计报告、学生修改后打印提交 指 导 教 师 签字: 2013年2月20日 系 主 任 签 字: 2013年2月23日 目 录 1.设计题目3 2.开发环境3 2.1硬件环境3 2.2软件环境3 3. 开发工具3 4.完成时间3 5. 设计思想3 6.设计过程与设计步骤 4 6.1需求分析 4 6.2系统设计4 6.3详细设计5 7. 测试运行13 8. 评价与修订13 9. 设计体会13 10. 参考文献14 1 设计题目 通讯录管理系统的设计 2 开发环境 2.1硬件环境 微机系列,存在1G以上 2.2软件环境 Microsoft Windows XP 3 开发工具 Word 2003; VC++6.0 4 完成时间 2013.2.25----2013.3.1 5 设计思想 根据要求,薄以文本文件存放在文件中,故需要提供文件的输入,输出等操作;还需要保存记录进行添加,修改,删除,查找等操作;另外还应该提供键盘式选择菜单以实现功能选择:设计一个函数,使其弹出界面 **************欢迎使用通讯录系统**************" 1.创建通讯录。 2.插入信息。 3.查询记录。 4.修改记录。 5.删除记录。 6.显示所有记录。 7.保存记录到文件。 0.退出通讯录。 请输入0~7。 6 设计过程与设计步骤 6.1 需求分析 (1)信息记录要存放到文件中去,因而要实现文件的输入输出操作; (2)要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作; (3)要实现按人名或进行查询的功能,因而要提供查找操作; (4)另外还应该提供键盘式选择菜单以实现功能选择整个系统可以设计为数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块。 6.2 系统设计 系统的主模块结构如图6-1所示。 6 0 7 5 4 3 2 1 choice switch Choice=? Add() 插入信息 Find() 查询信息 Create() 创建通讯录 Alter() 修改信息 Delete() 删除信息 List() 显示信息 ******感谢您的使用****** Save() 保存到文件 图6-1.系统主模块流程图 开 始 结 束 6.3详细设计 采用结构体数组。结构体数组定义如下: Struct { Char name[20]; //人名 Int tel; //固定 Int mobile1; //移动1 Int mobile2; //移动1 Char email[20]; //email地址 ………………} (1)数据插入模块 输入数据,然后采用追加方式写文件。 (2)数据修改模块 通过菜单选择修改、。可以把要修改的或存储在临时变量里面,然后读文件,找到要修改的记录,把该记录重新以新的值写入。 (3)数据删除模块 删除一条记录,则输入要删除的人名,然后读文件,把文件中读出来的记录的人名与待删除的人名比较,如果不匹配,则重新写入文件;否则舍弃不再写入文件。 (4)数据显示模块 采用分屏显示,每屏10条记录。读文件,输出结果。 (5)数据查询模块 用基本查找算法对簿实现按人名或的查询(读文件,把读出记录得相应字段与输入的查询字段比较),并把结果输出。 (6)用Word绘图工具绘制出与之对应的清晰直观的程序流程图,根据流程图写出程序并运用软件VC++6.0验证所编写的程序是否正确,并做出改正,直到程序正确为止。 图6-2.系统创建模块流程图 系统的创建模块结构如图6-2所示。 N Y Y 开 始 TEL*p1[100],*p2,m,i 输入m i=1 i<=m? p1[i]=(TEL *)malloc(sizeof(TEL)) *)malloc(sizeof(TEL)) p1[i]->next=NULL head->next==NULL? head->next=p1[i] p2=head p2->next!=NULL p2->next=p1[i] p2=p2->next i++ return 结 束 N Y 输出信息已添加! 输入p1[i]->name, p1[i]->sex, p1[i]->tel, p1[i]->city, p1[i]->eip 系统的插入模块结构如图6-3所示。 N Y Y 开 始 TEL *p,*q (q=(TEL*)malloc(sizeof(TEL)))==NULL? exit(1) p=head p->next!=NULL p->next=q p=p->next q->next=NULL return 结 束 输入q->name, q->sex,, q->tel, q->city, q->eip 输出此信息已添加! 图6-3.系统插入模块流程图 系统的查询模块结构如图6-4所示。 N N N Y Y Y 开 始 TEL *p,name[50] head->next==NULL? return p=head->next p=p->next p!=NULL? strcmp(p->name,name)==0? p->next==NULL? Y 输出此通讯录为空! 次通讯录为空! ! 输入name 次通讯录为空! ! 输出无此信息! 次通讯录为空! ! 输出p->name,p->sex,p->city,p->eip,p->tel 结 束 图6-4.系统查询模块流程图 图6-5.系统修改模块流程图 系统的修改模块结构如图6-5所示。 N Y N Y Y N Y 开 始 TEL *p, *p1,name[50] head->next==NULL? 输出此通讯录为空! 次通讯录为空! ! return 输入name 次通讯录为空! ! p=head->next p!=NULL? strcmp(p->name,name)==0? break p->next==NULL? 输出无此信息! 次通讯录为空! ! p=p->next p1=(TEL *)malloc(sizeof(TEL)) strcpy(p->name,p1->name); strcpy(p->sex,p1->sex); strcpy(p->tel,p1->tel); strcpy(p->city,p1->city); strcpy(p->eip,p1->eip); 输出p->name,p->sex,p->city,p->eip,p->tel 结 束 图6-6.系统删除模块流程图 系统的删除模块结构如图6-6所示。 N Y Y Y Y N N Y 开 始 TEL *p = head->next, *p1 =head->next,*p2,name[50] head->next==NULL? 输出此通讯录为空! 次通讯录为空! ! return 输入name 次通讯录为空! ! strcmp(p->name,nam)!=0?&&p->next!= NULL Y p==head->next&&p->next!=NULL p1=p; p =p->next p =p->next; strcmp(name,p->name)==0? head->next = p->next p==head->next&&p->next==NULL head->next = p->next p1->next= p->next N 输出p2->name,p2->sex,p2->city,p2->eip,p2->tel 结 束 系统的显示模块结构如图6-7所示。 Y Y 结 束 开 始 TEL *p head->next==NULL 输出通讯录中无记录! 次通讯录为空! ! return N p=head->next p=p->next N p!=NULL 输出p->name,p->sex,p->city,p->tel,p->eip 图6-7.系统显示模块流程图 系统的保存模块结构如图6-8所示。 Y 开 始 TEL*p,i,n,name[50] fclose(fp) fclose(fp) fclose(fp) fp=fopen(name,"w")==NULL 输出t[i].name, t[i].sex,t[i].city ,t[i].eip, t[i].tel Y N i=0 exit(1) i<n? i++ N 输出保存成功! 次通讯录为空! ! 结 束 图6-8.系统保存模块流程图 7 测试运行 运用软件VC++6.0,Word2003等不断测试,不断修改后,程序符合要求,设计的通讯录功能基本能正常运行,到存入系统中的功能,因为自己对文件程序的编写方面不够成熟所以程序中的保存功能并没有达到存入系统中的功能。 8 评价与修订 在设计过程中,在对C语言的循环结构的运用方面存在很多的问题,不够灵活,不仅浪费了我的很多时间,又降低了我对此次课程设计的热情,通过询问同学和老师得到解决。通过同学们的交流,询问老师,我知道我有很多方面不足需要得到有效的改善,所以在以后的日子里,自己应该多搞一些实际操作,多运用,才能更加熟悉各种开发软件。 9 设计体会 这次的课程设计是我们进入大学以来学习C语言结果的一次大考验。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的的知识在实践中暴露,经过不断的思考,查阅书籍和上网查资料与上机运行,解决了大部分的问题,还有一些小问题。但是,我相信在今后的学习中,一定能把它解决好。当今计算机应用在生活中可以说是无处不在。因此作为二十一世纪的大学生来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言程序设计是十分必要的。我不仅巩固了C语言程序设计的容,掌握设计的基本方法,强化了上机动手能力,还进一步掌握了以下知识:数据类型,分支控制,循环控制,结构体与数组,指针,文件操作,编译预处理等;通过课程设计,掌握了程序的局部测试,调试方法,建立程序系统调试,测试的基本概念和思想,学会较大程序的系统测试和调试方法。当我选择通讯录管理系统时,首先系统分析主要思路和框架哦,与同学讨论,联系所学的知识。我知道书上和老师讲的有限,所以上网搜也是一种利用资源的表现。在编程中,特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体把课本上的知识点看了一遍,知识点也基本上掌握了,所以下一步就是开始正式的编程序了。当读懂了C语言编程的基本过程和方法,经过一波三折,终于开始正式编程。 通过这次的课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的知识与实际结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力。 在课程设计过程中,收获知识,提高能力的同时,我也学到了很多的人生哲理,懂得了怎么去制定计划,怎么去实现这个计划,并掌握了在执行的过程中怎样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定把课程设计的精神带到生活中,使生活变得更好。 10 参考文献 [1] 詹春华,沙·C语言程序设计教程··科学,2011年8月 [2]王敬华,林萍,静·C语言程序设计··清华大学,2007年10月 [3] 谭浩强·C++程序设计·:清华大学·2004 [4]董志民,建平,肖利娜.《C语言程序设计》教学改革探索与实践[J].电脑, [5] 王路明•C语言程序设计教程•:邮电大学,2005年5月 [6]严蔚敏,吴伟民.数据结构(C语言版)[M].:清华大学,1997. [7]詹春华,沙. 《C语言程序设计教程》 科学,2011.8 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct Telephone { char name[50]; char sex[30]; char tel[30]; char city[30]; char eip[30]; struct Telephone *next; }TEL; TEL *head; void Initiate(); void Menu(); void Create(); void Add(); void Find(); void Alter(); void Delete(); void List(); void save (TEL t[],int n); int main() { int choice; char YN; Initiate(); do { system("cls"); Menu(); printf("请选择0-7的数字\n"); scanf("%d",&choice); printf("\n"); switch(choice) { case 1:Create();break; case 2:Add();break; case 3:Find();break; case 4:Alter();break; case 5:Delete();break; case 6:List();break; case 7:save();break; case 0:printf("************感您的使用************\n"); exit(0);break; default:printf("输入有误!请重新输入\n");break; } printf("是否继续 Y or N? \n"); do { scanf("%c",&YN); }while(YN!='Y'&&YN!='y'&&YN!='N'&&YN!='n'); }while(YN=='Y'||YN=='y'); } //初始化 void Initiate() { if((head=(TEL *)malloc(sizeof(TEL)))==NULL) exit(1); head->next=NULL; } //显示菜单 void Menu() { printf("**************欢迎使用通讯录系统**************"); printf("\n"); printf("\n"); printf(" 1.创建通讯录。\n"); printf(" 2.插入信息。\n"); printf(" 3.查询记录。\n"); printf(" 4.修改记录。\n"); printf(" 5.删除记录。\n"); printf(" 6.显示所有记录。\n"); printf(" 7.保存记录到文件。\n"); printf(" 0.退出通讯录。\n"); printf(" 请输入0~7 \n"); } //创建通讯录 void Create() { TEL *p1[100],*p2; int m,i; scanf("%d",&m); for(i=1;i<=m;i++) { p1[i]=(TEL *)malloc(sizeof(TEL)); printf("请输入第%d条信息!\n",i); scanf("%s",&p1[i]->name); scanf("%s",&p1[i]->sex); scanf("%s",&p1[i]->tel); scanf("%s",&p1[i]->city); scanf("%s",&p1[i]->eip); p1[i]->next=NULL; if(head->next==NULL) head->next=p1[i]; else { for(p2=head;p2->next!=NULL;p2=p2->next); p2->next=p1[i]; } } printf("信息已添加!\n"); return; } //添加通讯录信息 void Add() { TEL *p,*q; if((q=(TEL *)malloc(sizeof(TEL)))==NULL) exit(1); printf("请输入要添加的信息!\n"); scanf("%s",&q->name); scanf("%s",q->sex); scanf("%s",q->tel); scanf("%s",q->city); scanf("%s",q->eip); for(p=head;p->next!=NULL;p=p->next) ; p->next=q; q->next=NULL; printf("此信息已添加!"); return; } //查找通讯录信息 void Find() { TEL *p; char name[50]; if(head->next==NULL) { printf("此通讯录为空!\n"); return; } scanf("%s",&name); for(p=head->next;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) { printf("\t性别\t城市\t \t\n"); printf("%s\t%s\t%s\t%s\t%s\n",p->name,p->sex,p->city,p->eip,p->tel); } else if(p->next==NULL) printf("无此信息!\n"); } } //修改通讯录信息 void Alter() { char name[50]; TEL *p, *p1; if (head->next == NULL) { printf("此通讯录为空!\n"); return; } scanf("%s",name); for(p=head->next;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) break; else if(p->next==NULL) { printf("无此信息!\n"); return; } } p1=(TEL *)malloc(sizeof(TEL)); scanf("%s",p1->name); strcpy(p->name,p1->name); scanf("%s",p1->sex); strcpy(p->sex,p1->sex); scanf("%s",p1->tel); strcpy(p->tel,p1->tel); scanf("%s",p1->city); strcpy(p->city,p1->city); scanf("%s",p1->eip); strcpy(p->eip,p1->eip); printf("此信息已修改!\n"); printf("\t性别\t城市\t \t\n"); printf("%s\t%s\t%s\t%s\t%s\n",p->name,p->sex,p->city,p->eip,p->tel); free(p1); } //删除通讯录信息 void Delete() { char name[50]; TEL *p = head->next, *p1 =head->next,*p2; if (head->next == NULL) { printf("此通讯录为空!\n"); return; } scanf(" %s",name); while ((strcmp(p->name,name)!=0 )&& p->next != NULL) { p1=p; p =p->next; } if (strcmp(name, p->name)==0) { if (p == head->next&&p->next!=NULL) head->next = p->next; else if(p==head->next&&p->next==NULL) { head->next=p->next; printf("信息已删除,先此通讯录为空!!\n"); return; } else p1->next = p->next; } else { printf("此信息不存在!!!\n"); return; } printf("此信息已删除!"); printf("\t性别\t城市\t \t\n"); for(p2=head->next;p2!=NULL;p2=p2->next) printf("%s\t%s\t%s\t%s\t%s\n",p2->name,p2->sex,p2->city,p2->eip,p2->tel); } //显示所有记录 void List() { TEL *p; if(head->next==NULL) { printf("此通讯录中无记录!\n"); return; } printf("\t性别\t城市\t \t\n"); for(p=head->next;p!=NULL;p=p->next) printf("%s\t%s\t%s\t%s\t%s\n",p->name,p->sex,p->city,p->tel,p->eip); } //保存信息到文件 void save(TEL t[],int n) { int i=0; TEL *fp; char name[50]; printf("\n 保存文件\n"); scanf(“\t%s”,name); fp=fopen(name,"w") ; if(fp==NULL) { printf("\t不能打开文件\n"); exit(1); } fprintf(fp,"**************通讯录系统**************\n"); fprintf(fp,"%d",n); fprintf(fp," \t性别\t城市\t \t\n"); for(i=0;i<n;i++) fprintf(fp,"%-3s\t%-6s\t%-3s\t%-20s\t%-20s\n",t[i].name, t[i].sex, t[i].city ,t[i].eip, t[i].tel); fprintf(fp,"**************共有%d记录**************"); fclose(fp); printf("保存成功!\n"); } 设计过程中现场提问(或答辩)记载: 1.提问:怎样设计所给的要求? 答:先建一个文件,包含插入模块,查询模块,显示模块,修改模块,删除模块,保存模块。 2.提问:怎样画流程图? 答:先设计一个总流程图,结束,然后再按模块画出各个流程图,如图 3.提问:要用到哪些函数? 答:打开文件,关闭文件 指导教师评语: 成绩评定等级: 指导教师(签名): 2013年 3月 7日 31 / 32- 配套讲稿:
如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。
关于本文