课程设计报告正文1、目的:1)对C各部分知识的综合应用能力2)提高程序设计的能力3)提升对于较大程序的抽象分析设计能力4)学习调试和测试的技巧2、所做题目的意义:通讯录管理系统在当今这个信息发达的社会是必不可少的,这个通讯录管理系统可以方便的为我们添加、管理联系人,不必一定要记住这些庞大的信息,可以很方便的调用出自己所需要的信息,随时的修改这些信息,这些在这个时代是非常的必要的。3、本人所作的工作:(1)、写出了预习报告。从图书馆搜集了些这方面的资料(2)、想好思路,写出了程序代码(3)、调试程序,找出其中的错误,最终成功的运行出程序(4)、写出课程设计报告4、系统的主要功能:该系统的是一个小型的通讯系统,它具有一般的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其中通讯录包括:姓名,电话,街道,城市,省,邮编。5.、系统的总体设计:系统的基本要求和内容:该系统要求具有查找,添加,修改,删除功能,其中通讯录包括:姓名、电话,街道,城市,省,邮编。但在实际设计中增加了一项,那就是末尾添加,可以在已有的记录末尾再次添加,不必每次都重新添加,方便用户描绘及绘制出系统的功能结构框图、程序设计组成框图,流程图等:此系统共分为九大模块,分别为以下的模块:第一模块:主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。第二模块:quitRec()的功能是:退出选单。第三模块:createRec()的功能是:创建新的通讯录。第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单。第五模块:findRec()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。第六模块:alterRec()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。第七模块:deleteRec()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。第八模块:listRec()的功能是显示通讯录中的所有记录。第九模块:saveRec()的功能是保存某人的信息在某一文件夹里。以上九大模块为此通信系统的就大基本模块,用此模块设计可以清楚表明通信管理系统程序的功能、格局,可以用以下组成框图来表示:(1).系统结构图(功能模块图)和数据变量说明(2)功能模块说明:(1)、主函数输入模块主菜单主函数输入创建信息末尾写入查询信息修改信息删除信息显示记录保存信息退出系统(2)quitRec函数模块(3)createRec函数模块清屏输入返回主程序开始开始输入ii=1i=2i=3查询通讯录创建通讯录添加通讯录i=4i=5I=6输入错误删除通讯录退出通讯录修改通讯录开始保存记录吗保存返回主函数返回主函数(4)addRec函数模块(5)findRec函数模型(7)、deleteRec函数模型(6)、alterRec函数模型开始输入数列显示数据输入数据返回主函数开始输入姓名Str=records[j].name未找到该联系人显示数据返回主函数开始输入想在哪个数列后面加i=-1返回主函数输入新数据保存返回主函数开始输入名字删除数据返回主函数(8)、listRec函数模型(9)、saveRec函数模型(3)、详细设计模块功能说明:第一模块:主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。第二模块:quitRec()的功能是:退出选单。第三模块:createRec()的功能是:创建新的通讯录。第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单。第五模块:findRec()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。第六模块:alterRec()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。开始输入序列号输出数据返回主函数开始打开文件写入数据退出主函数第七模块:deleteRec()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。第八模块:listRec()的功能是显示通讯录中的所有记录。第九模块:saveRec()的功能是保存某人的信息在某一文件夹里。在所有的函数中,main()函数数入口函数,用户输入数据进行整个程序的执行,整个函数的出口是qiut()函数,每一个函数执行完毕后都要退到主函数中,基本每个输入、改动或者是删除的函数都要调用保存函数,而主函数调动所有的函数。(4)、调试与测试:在此次的课程设计中,做困难的一部分便是调试与测试这部分了,在此次调试中最开始是符号标点的问题,有许多都没注意,最终还是慢慢的把这些错误调试出来了;还有一种错误便是库函数的问题,在此次调试中,发现有许多别的软件里的库函数在此软件中不能用,最终还是通过再次编写被调用函数来实现了预期的功能;此外,在函数的调试中,还发现一种问题,在所绘的表格中,无法对齐表格,经过调试,移动表格的位置来实现了表格的工整;还有,在测试中,发现原本应该在两个页面的数据在同一个页面中显示出来了,经过分析,认为这是由于没有清屏的结果,加上清屏后,问题终于解决了。(5)、运行结果:1、主菜单:2、创建新数据:首先输入创建的序号“2”,会进入以下这个界面:输入数据后然后会依次出现下面的条目:,最后返回到先前的主菜单3、查找数据:按了“1”以后,会出现以下菜单:会提示你输入要查找的姓名输入姓名后会出现以下的显示退出到主菜单;4、在末尾添加数据,按了“3”之后,会出现以下:输入想要添加的数列,会出现下面输入数据的界面:按任意键退出后,回到主菜单。5、修改数据:输入“4”之后,会出现以下界面输入位置后,按以下流程输入数据输入Y之后,再将新的数据输入就行了6、删除数据:按下“5”后,会出现这个显示输入姓名后,会删除数据并保存已存的结果。7、退出数据,按下“6”以后会退出,并提示是否保存数据8、载入数据:按下“7”后这个可以载入以前保存的数据,9.保存数据:按下“8”后,可以保存数据以备下次再用(6)源程序#includestdio.h#includemalloc.h#includestdlib.h#includestring.h#includeconio.h#includectype.h#includewindows.hvoidshowTable1();voidshowTable2(int);voidfindRec();voidcreateRec();voidaddRec();voidsaveRec();voidalterRec();voiddeleteRec();voidquit();voidLoadRec();voidlistRec();intsearch(char*,int,int);voidgotoxy(intx,inty){CONSOLE_SCREEN_BUFFER_INFOcsbiInfo;HANDLEhConsoleOut;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);csbiInfo.dwCursorPosition.X=x;csbiInfo.dwCursorPosition.Y=y;SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);}char*mulu[]={*************通讯管理系统**************,│1.查找│,│2.创建│,│3.添加│,│4.修改│,│5.删除│,│6.退出│,│7.载入│,│8.保存│,└──────────────────┘};typedefstructsl{charno[20];charname[10];charscore[10];charstreet[10];charcity[10];charprovince[10];charpostcode[10];}TONGXUN;intmuluxuanze();intJILUSHU=0;TONGXUNrecords[1000];voidmain(){system(cls);gotoxy(2,20);for(;;)switch(muluxuanze()){case1:findRec();break;/*查询通讯录*/case2:createRec();break;/*创建通讯录*/case3:addRec();break;/*添加通讯录*/case4:alterRec();break;/*修改通讯录*/case5:deleteRec();break;/*删除通讯录*/case6:quit();/*退出通讯录*/case7:LoadRec();break;/*载入通讯录*/case8:saveRec();break;/*保存通讯录*/}}intmuluxuanze(){inti;for(i=0;i10;i++){gotoxy(10,i+1);cprintf(%s,mulu[i]);}printf(\n);printf(请输入要做的选项数字(1-8):);scanf(%d,&i);return(i);}voidshowTable1()/*表头一*/{system(cls);gotoxy(10,2);printf(***************************具体数据*******************************);gotoxy(1,3);printf(┌────┬────┬────┬────┬─────┬─────┬─────┐\n);gotoxy(1,4);printf(│数目│姓名│电话│街道│城市│省│邮编│\n);gotoxy(1,5);printf(├────├────├────├────├─────├─────│─────│\n);}voidshowTable2(intn)/*表头二*/{if(n==0)n=1;if(JILUSHU==0)n=-1;gotoxy(1,6+n);printf(└─────────────────────────────────────┘\n);}voidquit()/*退出*/{charstr[5];gotoxy(22,18);printf(保存记录吗?(Y/N));scanf(%s,str);if(str[0]=='Y'||str[0]=='y')saveRec();exit(0);}voidcreateRec()/*创建通讯录*/{inti,sum;system(cls);printf(请输入要添加的通讯记录数目:);scanf(%d,&JILUSHU);for(i=0;iJILUSHU;i++){system(cls);sum=0;gotoxy(20,5);printf(Pleaseinput%dnumber,i+1);gotoxy(20,6);printf(输入序号:);scanf(%10s,records[i].no);gotoxy(20,7);printf(输入姓名:);scanf(%10s,records[i].name);gotoxy(20,8);printf(输入电话:);scanf(%10s,records[i].score);gotoxy(20,9);printf(输入街道:);scanf(%10s,records[i].street);gotoxy(20,10);printf(输入城市:);scanf(%10s,records[i].city);gotoxy(20,11);printf(输入省:);scanf(%10s,records[i].province);gotoxy(20,12);printf(输入邮编:);scanf(