地大c语言课程设计手机通讯录管理系统方案_第1页
地大c语言课程设计手机通讯录管理系统方案_第2页
地大c语言课程设计手机通讯录管理系统方案_第3页
地大c语言课程设计手机通讯录管理系统方案_第4页
地大c语言课程设计手机通讯录管理系统方案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.PAGE.中国地质大学本科生C语言课程论文报告课程名称C语言课程设计教师姓名本科生姓名本科生学号20101001298本科生专业应用化学所在院系材料与科学学院类别:本科生日期:20XX7月10日目录目录21.课程论文题目22.程序设计思路33.功能模块图34.数据结构设计125.算法设计166.程序代码287程序运行结果338、编程中遇到的困难及解决方法419.总结心得及良好建议4110.致谢411.课程论文题目<1>、题目名称:手机通讯录管理系统<2>、题目要求=1\*GB3①录入人员的编号、姓名、个人邮箱、地址、。=2\*GB3②显示所有人员的信息。=3\*GB3③通过输入姓名查找人员信息。=4\*GB3④通过输入姓名查找到要删除的人员信息,然后可以进行删除,回显当前通讯录信息。=5\*GB3⑤通过输入姓名查找到要修改的人员信息,然后依次进行信息修改。=6\*GB3⑥添加人员信息。2.程序设计思路分析整个系统,根据以上的需求分析及题目要求,可将整个系统的设计分为以下五个模块:保存信息,信息输入、录入比赛结果、查询信息、退出.〔每个功能模块都标注函数名称,如图1A、需求分析:根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。B、总体设计:根据上面的需求分析,可以将这个系统的设计分为1添加模块2显示模块3删除模块4查询模块5修改模块6保存模块。C、数据结构:数据结构采用结构体数组,包括姓名,归属地,号码,邮箱四个结构3.功能模块图本系统设计的函数是由一个主函数几个子函数组成的。首先构思大局编出一个主函数,然后根据要实现的功能逐步细分设计,分别解决输入、显示、查找、删除、修改,退出功能的子函数编程中遇到的问题。首先通过结构体的定义,确定通讯录的项目和大小。首先通过输入函数添加信息,然后再逐步编写和验证其它功能。显示函数的设计利用C语言的循环功能依次输出信息。查找是用一个字符串比较得出两个相同的字符串的方法找出用户要查找的人。删除函数的设计是通过指定位置以后的数组下标减一实现删除目的的,for循环和while循环在这此设计中也起了很大的作用。1概要设计系统功能模块图如图1所示:主菜单主菜单增加记录显示记录查询记录删除记录添加保存退出系统修改记录图1系统功能模块图2系统流程图输入错误,跳回主菜单输入错误,跳回主菜单结束menu<>=7?menu<>=2?menu<>=1??menu<>=3?m>=1?menu<>=6?menu<>=5?menu<>=4?开始intk=0调用输入函数调用显示函数调用查询函数调用退出函数调用保存函数调用删除函数调用修改函数图2主函数流程图真假真假真假真假真假真假真真假假3详细设计〔1菜单函数菜单函数首先标出欢迎使用通讯录管理系,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:iintkK<1||K>7返回k结束开始输入选项1—7—666真假图3菜单函数流程图〔2enter函数将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。其流程图如图4所示:aa=1a<n?i++返回k结束开始输入信息输入数目k真假图4输入函数流程图〔3display函数intaintaa=0a<=n-1?a++结束开始显示a的位置信息真假图5显示函数流程图〔4look函数Look函数通过输入姓名与原通讯录中存储的姓名,两字符串的比较,找到与输入姓名相同的姓名的位置,其流程图如图6所示:aa=0a<n?i++returni结束开始真真找到要找的姓名假假图6look函数流程图aa=0a<n?i++返回display结束开始真真找到要找的号码假假图6look函数流程图〔5change函数修改通讯录通过find函数找到所要修改通讯录位置,显示出信息,确认修改后,即可逐项修改,其流程图如图9所示:结束结束假真输出要修改的信息假Inti,chi>n-1?是否要修改?没有找到要修改的记录是否继续修改进行修改调用修改函数真开始真假图7修改函数流程图〔6del模块图8图8删除函数流程图Inti,j,chi>n-1ch==1returnn调用删除函数是否重新输入j=i+1j<nj++n--j位置数据存放位置前移输出信息结束开始真真假假〔7退出通讯录在使用完通讯录后,按6键便会退出系统,其流程图如图11所示:n=-1n=-1输出谢谢使用结束开始图9退出函数流程图返回n4.数据结构设计#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>structcontacks{charname[10];charworkplace[20];chartele[20];charemail[20];}con[50];intk=0;voidenter<>;voiddisplay<>;voidlook<>;voidchange<>;voiddel<>;voidsave<>;voidmain<>/*主函数*/{inta;do{printf<"\n\n******************************************************************\n">;printf<"*">;printf<"\t\t欢迎进入通讯录管理系统">;printf<"\t\t*">;printf<"\n******************************************************************\n">;printf<"*">;printf<"\t1.增加记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t2.显示记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t3.查询记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t4.修改记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t5.删除记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t6.保存记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t7.退出系统">;printf<"\t\t\t\t\t*\n">;printf<"******************************************************************\n">;printf<"Enteryouchoice:">;scanf<"%d",&a>;switch<a>{case1:printf<"\n">;enter<>;break;case2:printf<"\n">;display<>;break;case3:printf<"\n">;look<>;break;case4:printf<"\n">;change<>;break;case5:printf<"\n">;del<>;break;case6:printf<"\n">;save<>;break;case7:printf<"\n">;exit<0>;break;default:printf<"\nThechoiceisbetween1to6.\n">;}}while<a!=0>;getch<>;}voidenter<>/*增加模块*/{charch[20];printf<"\nenterstudentinformation:\n">;do{printf<"\nname:">;scanf<"%s",con[k].name>;printf<"workplace:">;scanf<"%s",con[k].workplace>;printf<"\ntelephone:">;scanf<"%s",con[k].tele>;printf<"\nemail:">;scanf<"%s",con[k].email>;k++;printf<"\nifwantcontinueinputstudentinformation<y/n>:">;scanf<"%s",ch>;}while<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>;display<>;}display<>/*显示模块*/{inti;printf<"theinformationis:\n">;for<i=0;i<kvoid;i++>{printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\n">;}}voidlook<>/*查找模块*/{inti;chara[20];printf<"\nenteryouwantlookname:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].name,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\nenteryouwantlooktelephone:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].tele,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;}voidchange<>/*修改模块*/{inti;charch[20],a[20];printf<"\nenteryouwantchangename:">;scanf<"%s",a>;for<i=0;i<k;i++>{if<strcmp<con[i].name,a>==0>{printf<"\nyousurewantchangestudentname<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",con[i].name>;}printf<"\nyousurewantchangetelephone<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\ntelephone">;scanf<"%s",con[i].tele>;}}}display<>;}voiddel<>/*删除模块*/{inti,j;charc[20],ch[20];printf<"\nyousurewantdelete<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",c>;for<i=0;i<k;i++>if<strcmp<c,con[i].name>==0>break;for<j=i;j<=2;j++>con[j]=con[j+1];printf<"\t\t\tyouhaddelete%s\n",c>;k--;}display<>;}voidsave<>/*保存模块*/{FILE*fp;inti;if<<fp=fopen<"xinxi.txt","w">>==NULL>{printf<"cannotwritethefile.\n">;exit<0>;} for<i=0;strlen<con[i].name>!=0;i++>fprintf<fp,"%s%s%s%s\n",con[i].name,con[i].workplace,con[i].tele,con[i].email>;fclose<fp>;}5.算法设计〔1主函数主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择。另外菜单部分也可以写成函数。输入错误,跳回主菜单输入错误,跳回主菜单结束menu<>=7?menu<>=2?menu<>=1??menu<>=3?m>=1?menu<>=6?menu<>=5?menu<>=4?开始intk=0调用输入函数调用显示函数调用查询函数调用退出函数调用保存函数调用删除函数调用修改函数图1主函数流程图真假真假真假真假真假真假真真假假voidmain<>{inta;do{printf<"\n\n******************************************************************\n">;printf<"*">;printf<"\t\t欢迎进入通讯录管理系统">;printf<"\t\t*">;printf<"\n******************************************************************\n">;printf<"*">;printf<"\t1.增加记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t2.显示记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t3.查询记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t4.修改记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t5.删除记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t6.保存记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t7.退出系统">;printf<"\t\t\t\t\t*\n">;printf<"******************************************************************\n">;〔1菜单函数菜单函数首先标出欢迎使用通讯录管理系,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图3所示:iintkK<1||K>7返回k结束开始输入选项1—7—666真假图2菜单函数流程图printf<"Enteryouchoice:">;scanf<"%d",&a>;switch<a>{case1:printf<"\n">;enter<>;break;case2:printf<"\n">;display<>;break;case3:printf<"\n">;look<>;break;case4:printf<"\n">;change<>;break;case5:printf<"\n">;del<>;break;case6:printf<"\n">;save<>;break;case7:printf<"\n">;exit<0>;break;default:printf<"\nThechoiceisbetween1to6.\n">;}}while<a!=0>;getch<>;}2enter函数将结构体数组分成几个数组分别对每个数组赋值,用for循环对不同地址的数组分别赋值。其流程图如图4所示:aa=1a<n?i++返回k结束开始输入信息输入数目k真假图3输入函数流程图voidenter<>{charch[20];printf<"\nenterstudentinformation:\n">;do{printf<"\nname:">;scanf<"%s",con[k].name>;printf<"workplace:">;scanf<"%s",con[k].workplace>;printf<"\ntelephone:">;scanf<"%s",con[k].tele>;printf<"\nemail:">;scanf<"%s",con[k].email>;k++;printf<"\nifwantcontinueinputstudentinformation<y/n>:">;scanf<"%s",ch>;}while<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>;display<>;}3display函数intaintaa=0a<=n-1?a++结束开始显示a的位置信息真假图4显示函数流程图display<>{inti;printf<"theinformationis:\n">;for<i=0;i<kvoid;i++>{printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\n">;}}4look函数Look函数通过输入姓名与原通讯录中存储的姓名,两字符串的比较,找到与输入姓名相同的姓名的位置,其流程图如图6所示:aa=0a<n?i++returni结束开始真真找到要找的姓名假假图5look函数流程图aa=0a<n?i++返回display结束开始真真找到要找的号码假假图5look函数流程图voidlook<>{inti;chara[20];printf<"\nenteryouwantlookname:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].name,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\nenteryouwantlooktelephone:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].tele,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;}5change函数修改通讯录通过find函数找到所要修改通讯录位置,显示出信息,确认修改后,即可逐项修改,其流程图如图9所示:结束结束假真输出要修改的信息假Inti,chi>n-1?是否要修改?没有找到要修改的记录是否继续修改进行修改调用修改函数真开始真假图6修改函数流程图voidchange<>{inti;charch[20],a[20];printf<"\nenteryouwantchangename:">;scanf<"%s",a>;for<i=0;i<k;i++>{if<strcmp<con[i].name,a>==0>{printf<"\nyousurewantchangestudentname<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",con[i].name>;}printf<"\nyousurewantchangetelephone<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\ntelephone">;scanf<"%s",con[i].tele>;}}}display<>;}6del函数图7删除函数流程图Int图7删除函数流程图Inti,j,chi>n-1ch==1returnn调用删除函数是否重新输入j=i+1j<nj++n--j位置数据存放位置前移输出信息结束开始真真假假voiddel<>{inti,j;charc[20],ch[20];printf<"\nyousurewantdelete<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",c>;for<i=0;i<k;i++>if<strcmp<c,con[i].name>==0>break;for<j=i;j<=2;j++>con[j]=con[j+1];printf<"\t\t\tyouhaddelete%s\n",c>;k--;}display<>;}7save函数在使用完通讯录后,按6键便会退出系统,其流程图如图11所示:n=-1n=-1输出谢谢使用结束开始图8退出函数流程图返回nvoidsave<>{FILE*fp;inti;if<<fp=fopen<"xinxi.txt","w">>==NULL>{printf<"cannotwritethefile.\n">;exit<0>;} for<i=0;strlen<con[i].name>!=0;i++>fprintf<fp,"%s%s%s%s\n",con[i].name,con[i].workplace,con[i].tele,con[i].email>;fclose<fp>;6.程序代码voidchange<>{inti;charch[20],a[20];printf<"\nenteryouwantchangename:">;scanf<"%s",a>;for<i=0;i<k;i++>{if<strcmp<con[i].name,a>==0>{printf<"\nyousurewantchangestudentname<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",con[i].name>;}printf<"\nyousurewantchangetelephone<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\ntelephone">;scanf<"%s",con[i].tele>;}}}display<>;}#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>structcontacks{charname[10];charworkplace[20];chartele[20];charemail[20];}con[50];intk=0;voidenter<>;voiddisplay<>;voidlook<>;voidchange<>;voiddel<>;voidsave<>;voidmain<>{inta;do{printf<"\n\n******************************************************************\n">;printf<"*">;printf<"\t\t欢迎进入通讯录管理系统">;printf<"\t\t*">;printf<"\n******************************************************************\n">;printf<"*">;printf<"\t1.增加记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t2.显示记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t3.查询记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t4.修改记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t5.删除记录">;printf<"\t\t\t\t\t*\n">;printf<"*">;printf<"\t6.保存记录">;printf<"\t\t\t\t*\n">;printf<"*">;printf<"\t7.退出系统">;printf<"\t\t\t\t\t*\n">;printf<"******************************************************************\n">;printf<"Enteryouchoice:">;scanf<"%d",&a>;switch<a>{case1:printf<"\n">;enter<>;break;case2:printf<"\n">;display<>;break;case3:printf<"\n">;look<>;break;case4:printf<"\n">;change<>;break;case5:printf<"\n">;del<>;break;case6:printf<"\n">;save<>;break;case7:printf<"\n">;exit<0>;break;default:printf<"\nThechoiceisbetween1to6.\n">;}}while<a!=0>;getch<>;}voidenter<>{charch[20];printf<"\nenterstudentinformation:\n">;do{printf<"\nname:">;scanf<"%s",con[k].name>;printf<"workplace:">;scanf<"%s",con[k].workplace>;printf<"\ntelephone:">;scanf<"%s",con[k].tele>;printf<"\nemail:">;scanf<"%s",con[k].email>;k++;printf<"\nifwantcontinueinputstudentinformation<y/n>:">;scanf<"%s",ch>;}while<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>;display<>;}display<>{inti;printf<"theinformationis:\n">;for<i=0;i<kvoid;i++>{printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\n">;}}voidlook<>{inti;chara[20];printf<"\nenteryouwantlookname:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].name,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;printf<"\nenteryouwantlooktelephone:">;scanf<"%s",a>;for<i=0;i<k;i++>if<strcmp<con[i].tele,a>==0>printf<"%-10s%-20s%-20s%-20s",con[i].name,con[i].workplace,con[i].tele,con[i].email>;}voidchange<>{inti;charch[20],a[20];printf<"\nenteryouwantchangename:">;scanf<"%s",a>;for<i=0;i<k;i++>{if<strcmp<con[i].name,a>==0>{printf<"\nyousurewantchangestudentname<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\nname:">;scanf<"%s",con[i].name>;}printf<"\nyousurewantchangetelephone<y/n>:">;scanf<"%s",ch>;if<strcmp<ch,"y">==0||strcmp<ch,"Y">==0>{printf<"\ntelephone">;scanf<"%s",con[i].tele>;}}}display<>;}voiddel<>{inti,j;charc[20],ch[20];printf<"\nyousurewantdelete<y/n>:">;scanf<"%s",c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论