1、c语言课程设计c语言课程设计1、目的:1对C各部分知识的综合应用能力2提高程序设计的能力3提升关于较大程序的抽象分析设计能力4学习调试和测试的技巧2、所做题目的意义:通讯录治理系统在当今那个信息发达的社会是必不可少的,那个通讯录治理系统能够方便的为我们添加、治理联系人,不必一定要记住这些庞大的信息,能够专门方便的调用出自己所需要的信息,随时的修改这些信息,这些在那个时代是专门的必要的。3、本人所作的工作:1、写出了预习报告。从图书馆搜集了些这方面的资料2、想好思路,写出了程序代码3、调试程序,找出其中的错误,最终成功的运行出程序4、写出课程设计报告4、系统的要紧功能: 该系统的是一个小型的通讯
2、系统,它具有一样的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其中通讯录包括:姓名, ,街道,都市,省, 。5、系统的总体设计:系统的差不多要求和内容:该系统要求具有查找,添加,修改,删除功能,其中通讯录包括:姓名、 ,街道,都市,省, 。但在实际设计中增加了一项,那确实是末尾添加,能够在已有的记录末尾再次添加,不必每次都重新添加,方便用户描画及绘制出系统的功能结构框图、程序设计组成框图,流程图等:此系统共分为九大模块,分别为以下的模块:第一模块:主函数main()的功能是:依照选单的选项调用各函数,并完成相应的功能。第二模块:quitRec()的功能是:退出选单。第三模块:cr
3、eateRec()的功能是:创建新的通讯录。第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单。第五模块:findRec()的功能是:查询某人的信息,假如找到了,那么显示该人的信息,假如未找到,那么提示通讯录中没有此人的信息,并返回选单。第六模块:alterRec()的功能是:修改某人的信息,假如未找到要修改的人,那么提示通讯录中没有此人的信息,并返回。第七模块:deleteRec()的功能是:删除某人的信息,假如未找到要删除的人,那么提示通讯录中没有此人的信息,并返回选单。第八模块:listRec()的功能是显示通讯录中的所有记录。第九模块:saveRec() 的功能
4、是储存某人的信息在某一文件夹里。以上九大模块为此通信系统的就大差不多模块,用此模块设计能够清晰说明通信治理系统程序的功能、格局,能够用以下组成框图来表示:1系统结构图功能模块图和数据变量说明主菜单主函数输入创建信息末尾写入查询信息修改信息删除信息显示记录储存信息退出系统 2功能模块说明:1、主函数输入模块开始输入ii=1i=2i=3查询通讯录创建通讯录添加通讯录i=4i=5I=6输入错误删除通讯录退出通讯录修改通讯录2quitRec函数模块 3createRec函数模块开始储存记录吗储存返回主函数返回主函数清屏输入返回主程序开始4addRec函数模块 5findRec函数模型开始输入想在哪个数
5、列后面加i=-1返回主函数输入新数据储存返回主函数开始输入姓名Str=recordsj.name未找到该联系人显示数据返回主函数 7、deleteRec函数模型开始输入名字删除数据返回主函数6、alterRec函数模型开始输入数列显示数据输入数据返回主函数 8、listRec函数模型 9、saveRec函数模型开始打开文件写入数据退出主函数开始输入序列号输出数据返回主函数 3、详细设计模块功能说明: 第一模块:主函数main()的功能是:依照选单的选项调用各函数,并完成相应的功能。第二模块:quitRec()的功能是:退出选单。第三模块:createRec()的功能是:创建新的通讯录。第四模块
6、:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单。第五模块:findRec()的功能是:查询某人的信息,假如找到了,那么显示该人的信息,假如未找到,那么提示通讯录中没有此人的信息,并返回选单。第六模块:alterRec()的功能是:修改某人的信息,假如未找到要修改的人,那么提示通讯录中没有此人的信息,并返回。第七模块:deleteRec()的功能是:删除某人的信息,假如未找到要删除的人,那么提示通讯录中没有此人的信息,并返回选单。第八模块:listRec()的功能是显示通讯录中的所有记录。第九模块:saveRec() 的功能是储存某人的信息在某一文件夹里。在所有的函数中,ma
7、in()函数数入口函数,用户输入数据进行整个程序的执行,整个函数的出口是qiut()函数,每一个函数执行完毕后都要退到主函数中,差不多每个输入、改动或者是删除的函数都要调用储存函数,而主函数调动所有的函数。4、调试与测试:在此次的课程设计中,做困难的一部分便是调试与测试这部分了,在此次调试中最开始是符号标点的问题,有许多都没注意,最终依旧慢慢的把这些错误调试出来了;还有一种错误便是库函数的问题,在此次调试中,发觉有许多别的软件里的库函数在此软件中不能用,最终依旧通过再次编写被调用函数来实现了预期的功能;此外,在函数的调试中,还发觉一种问题,在所绘的表格中,无法对齐表格,通过调试,移动表格的位置
8、来实现了表格的工整;还有,在测试中,发觉原本应该在两个页面的数据在同一个页面中显示出来了,通过分析,认为这是由于没有清屏的结果,加上清屏后,问题终于解决了。5、运行结果:1、主菜单:2、创建新数据:第一输入创建的序号2,会进入以下那个界面: 输入数据后然后会依次显现下面的条目:,最后返回到先前的主菜单3、 查找数据:按了1以后,会显现以下菜单:会提示你输入要查找的姓名输入姓名后会显现以下的显示退出到主菜单;4、在末尾添加数据,按了3之后,会显现以下: 输入想要添加的数列,会显现下面输入数据的界面:按任意键退出后,回到主菜单。5、修改数据:输入4之后,会显现以下界面输入位置后,按以下流程输入数据
9、输入Y之后,再将新的数据输入就行了6、删除数据:按下5”后,会显现那个显示输入姓名后,会删除数据并储存已存的结果。7、退出数据,按下6以后会退出,并提示是否储存数据8、载入数据:按下7后那个能够载入往常储存的数据,9.储存数据:按下8”后,能够储存数据以备下次再用6源程序 #include#include#include#include#include#include#includevoid showTable1();void showTable2(int);void findRec(); void createRec();void addRec();void saveRec();void a
10、lterRec();void deleteRec();void quit();void LoadRec();void listRec();int search(char*,int,int);void gotoxy(int x,int y) CONSOLE_SCREEN_BUFFER_INFO csbiInfo; HANDLE hConsoleOut; hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo); csbiInfo.dwCursorPosition
11、.X=x; csbiInfo.dwCursorPosition.Y=y; SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition); char *mulu= *通讯治理系统*, 1.查找 , 2.创建 , 3.添加 , 4.修改 , 5.删除 , 6.退出 , 7.载入 , 8.储存 , ;typedef struct sl char no20; char name10; char score10; char street10; char city10; char province10; char postcode10;TO
12、NGXUN;int muluxuanze();int JILUSHU=0;TONGXUN records1000;void main() system(cls); gotoxy(2,20); for(;) switch(muluxuanze() case 1:findRec();break; /*查询通讯录*/ case 2:createRec();break; /*创建通讯录*/ case 3:addRec();break; /*添加通讯录*/ case 4:alterRec();break; /*修改通讯录*/ case 5:deleteRec();break; /*删除通讯录*/ cas
13、e 6:quit(); /*退出通讯录*/ case 7:LoadRec();break; /*载入通讯录*/ case 8:saveRec();break; /*储存通讯录*/ int muluxuanze() int i; for(i=0;i10;i+) gotoxy(10,i+1); cprintf(%s,mului); printf(n); printf(请输入要做的选项数字(1-8):); scanf(%d,&i); return(i);void showTable1() /*表头一*/ system(cls); gotoxy(10,2); printf(*具体数据*); gotox
14、y(1,3); printf(n); gotoxy(1,4); printf( 数目 姓名 街道 都市 省 n); gotoxy(1,5); printf(n);void showTable2(int n) /*表头二*/ if (n=0)n=1; if(JILUSHU=0)n=-1; gotoxy(1,6+n); printf(n); void quit() /*退出*/ char str5; gotoxy(22,18); printf(储存记录吗?(Y/N); scanf(%s,str); if(str0=Y|str0=y) saveRec(); exit(0);void createRe
15、c() /*创建通讯录*/ int i,sum; system(cls); printf(请输入要添加的通讯记录数目:); scanf(%d,&JILUSHU); for(i=0;iJILUSHU;i+) system(cls); sum=0; gotoxy(20,5);printf(Please input %d number,i+1); gotoxy(20,6);printf(输入序号:);scanf(%10s,recordsi.no); gotoxy(20,7);printf(输入姓名:);scanf(%10s,recordsi.name); gotoxy(20,8);printf(输入
16、 :);scanf(%10s,recordsi.score); gotoxy(20,9);printf(输入街道:);scanf(%10s,recordsi.street); gotoxy(20,10);printf(输入都市:);scanf(%10s,recordsi.city); gotoxy(20,11);printf(输入省:);scanf(%10s,recordsi.province); gotoxy(20,12);printf(输入 :);scanf(%10s,recordsi.postcode); printf(请按任意键返回!); getch(); system(cls);vo
17、id listRec() /*显示所有通讯录*/ int i=0; showTable1(); printf(输入所查数据的序号:); scanf(%d,&JILUSHU); for(i=0;iJILUSHU;i+) gotoxy(1,6+i); printf( %10s%10s%10s%10s%10s%10s%10sn,recordsi.no,recordsi.name,recordsi.score,recordsi.street,recordsi.city,recordsi.province,recordsi.postcode); showTable2(i); printf(请按任意键返回
18、!); getch();void saveRec() /*储存通讯记录*/ FILE *fp1,*fp2; if(fp1=fopen(e:cc.txt,wb)=NULL) printf(不能打开那个文件); exit(1); if(fp2=fopen(e:cc1.txt,wb)=NULL) printf(不能打开那个文件); exit(1); printf(n储存文件n); fwrite(&JILUSHU,sizeof(JILUSHU),1,fp1); fwrite(records,sizeof(records),JILUSHU,fp2); fclose(fp1);fclose(fp2); p
19、rintf(n文件储存成功!n);Sleep(1000); printf(n请按任意键退出n); getch(); system(cls);void LoadRec() /*载入通讯记录*/ FILE *fp1,*fp2; if(fp1=fopen(e:cc.txt,rb)=NULL) printf(不能打开那个文件); exit(1); if(fp2=fopen(e:cc1.txt,rb)=NULL) printf(不能打开那个文件); exit(1); printf(n载入文件n); fread(&JILUSHU,sizeof(JILUSHU),1,fp1); fread(records,
20、sizeof(records),JILUSHU,fp2); fclose(fp1);fclose(fp2); printf(n文件载入成功!n);Sleep(1000); printf(n请按任意键退出n); getch(); system(cls);void findRec() /*查询通讯记录*/ char str20; int i,j; system(cls); printf(请输入您要找的人的姓名:); scanf(%s,str); for(j=0,i=0;jJILUSHU;j+) if(strcmp(str,recordsj.name)=0) showTable1(); printf
21、( %10s%10s%10s%10s%10s%10s%10sn,recordsi.no,recordsj.name,recordsj.score,recordsj.street,recordsj.city,recordsj.province,recordsj.postcode); printf(n); showTable2(i); break; else printf(未找到该联系人); printf(Press any key to return!); getch(); system(cls);void deleteRec() /*删除通讯记录*/ int i,j; char str20;
22、system(cls); printf(请输入您想删除的人的姓名:); scanf(%s,str); for(i=0;iJILUSHU;i+) if(strcmp(str,recordsi.name)=0) for(j=i;jJILUSHU;j+) recordsj=recordsj+1; else printf(没有找到该联系人); JILUSHU-; saveRec(); system(cls);int search(char*target,int tarType,int from) int i; for(i=from;iJILUSHU;i+) if(tarType=1&strcmp(ta
23、rget,recordsi.no)=0)|tarType=2&strcmp(target,recordsi.no)=0) return(i); return(-1);void alterRec() /*修改通讯录*/ int i,j; char no20,str8; system(cls); printf(请输入你想要修改的数据位置数:); scanf(%d,no); i=search(no,1,0); showTable1(); printf(n); printf( %10s%10S%10s%10s%10s%10s%10s,recordsi.no,recordsi.name,recordsi
24、.score,recordsi.street,recordsi.city,recordsi.province,recordsi.postcode); printf( n); gotoxy(10,10); printf(你想要修改这些数据吗(Y/N):); scanf(%s,str); if(str0=y|str0=Y) system(cls); printf(输入序号:);scanf(%10s,recordsi.no); printf(输入姓名:);scanf(%10s,recordsi.name); printf(输入 :);scanf(%10s,recordsi.score); print
25、f(输入街道:);scanf(%10s,recordsi.street); printf(输入都市:);scanf(%10s,recordsi.city); printf(输入省:);scanf(%10s,recordsi.province); printf(输入 :);scanf(%10s,recordsi.postcode); saveRec(); printf(请按任意键返回!); getch(); system(cls);void addRec() /*在通讯录的末尾加上新的信息*/ int i,sum=0; char str8; for(;) system(cls); printf(
26、请输入您想要增加的序列:); scanf(%s,str); i=search(str,1,0); if(i=-1)break; else printf(那个数据是错误的!); getch(); strcpy(recordsJILUSHU.no,str); printf(输入序号:);scanf(%10s,recordsi.no); printf(输入姓名:);scanf(%10s,recordsi.name); printf(输入 :);scanf(%10s,recordsi.score); printf(输入街道:);scanf(%10s,recordsi.street); printf(输入都市:);scanf(%10s,recordsi.city); printf(输入省:);scanf(%10s,recordsi.province); printf(输入 :);scanf(%10s,recordsi.postcode); JILUSHU+; saveRec();7、使用说明:此程序的运行环境并无太大的要求,一样的电脑都能运行;使用方法:进入了主菜单后,只需按照每个功能所对应的数字按下就能操作。8、设计小结:此次的设计是我第一次独立的设计一个程序,同时