课程设计说明书No1沈阳大学1.课程设计的目的C语言程序设计课程设计是计算机科学与技术(信息安全、电子商务)专业一门重要的专业技术基础课程,也是一门核心课程。本课程设计的目的是为了配合C语言程序设计课程的开设,使学生能够较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧,并能够培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机的专业知识打下基础。课程设计说明书No2沈阳大学2.设计方案论证2.1设计思路:【设计思路】根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。【总体设计】通讯录管理系统数据输入数据修改删除数据添加查找浏览图1系统功能模块图2.2程序设计根据所构想的功能及模块设计出与之相对算法并建立函数来实现系统运行[1]1首先调用函数menu();,该函数主要是利用输出函数printf进行输出2然后用scanf函数获取输入数据。每次输入结束后,系统输出询问是否继续添加的信息,然后执行switch语句,如果返回值是“y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。3进入保存功能后,系统会调用voidWritetoText(Personper[],intn)函数并且提示通讯录管理者关于保存的信息进行记录自动保存。从而便于我们直接查询。课程设计说明书No3沈阳大学显示一系列功能选项输入n,判断n是否是1~7?根据n的值调用各功能模块函数结束开始n图2.主函数流程图课程设计说明书No4沈阳大学2.3.源程序#defineN50#includestdio.h#includestring.hstructpeople{charname[20];charcompany[50];charnum[15];charmail[20];}peop[N];voidprintf_face(){printf(\n\t姓名\t单位\t电话号码\t邮箱\n);}voidprintf_one(inti){printf(\t%s\t%s\t%s\t%s\n,peop[i].name,peop[i].company,peop[i].num,peop[i].mail);}voidprintf_n(intn){intj;for(j=0;jn;j++){if((j!=0)&&(j%10==0)){printf(\n\nPressanykeytocontinue...:);getchar();puts(\n\n);}printf_one(j);}getchar();}intload(){FILE*fp;inti;if((fp=fopen(file,rb))==NULL){printf(\nCannotopenfile\n);exit(0);}for(i=0;!feof(fp);i++)fread(&peop[i],sizeof(structpeople),1,fp);fclose(fp);return(i-1);}intmodify_data(inti,intn){intc,w1;voidinput(inti);voidmenu();do{puts(\n修改选项=\n\n1).姓名2).单位3).电话号码4).邮箱5).所有数据6).取消并返回);printf(请选择?:[]\b\b);scanf(%d,&c);if(c6||c1){puts(\nChooseerror!Pleaseagain!);getchar();}}while(c6||c1);课程设计说明书No5沈阳大学do{switch(c){case1:printf(name:);scanf(%s,peop[i].name);break;case2:printf(company:);scanf(%s,peop[i].company);break;case3:printf(number:);scanf(%s,peop[i].num);break;case4:printf(e-mail:);scanf(%s,peop[i].mail);break;case5:input(i);break;case6:menu();}puts(\nNow:\n);printf_face();printf_one(i);printf(\n确定?\n\n\t1).是2).不,重新修改3).返回不保存[]\b\b);scanf(%d,&w1);}while(w1==2);return(w1);}voidinput(inti){printf_face();printf(\t);scanf(%s\t%s\t%s\t%s,peop[i].name,peop[i].company,peop[i].num,peop[i].mail);}voidsave(intn){FILE*fp;inti;if((fp=fopen(file,wb))==NULL){printf(\nCannotopenfile\n);exit(0);}for(i=0;in;i++)if(peop[i].name[0]!='\0')if(fwrite(&peop[i],sizeof(structpeople),1,fp)!=1)printf(filewriteerror\n);fclose(fp);}voidprintf_back(){intw;voidbrowse();voidmenu();printf(\n\n\t^_^.Successful.^_^\n\n);printf(Whatdoyouwanttodo?\n\n\t1).浏览所有\t2).返回:[]\b\b);scanf(%d,&w);if(w==1)browse();elsemenu();}课程设计说明书No6沈阳大学voidmain(){voidmenu();menu();}voidmenu(){intn,w1;voidenter();voidadd();voidmodify();voidbrowse();voiddeleter();voidsearch();do{puts(\t************************菜单************************);puts(\t\t*******************1.新建联系人*******************);puts(\t\t*******************2.添加联系人*******************);puts(\t\t*******************3.修改*******************);puts(\t\t*******************4.删除*******************);puts(\t\t*******************5.浏览*******************);puts(\t\t*******************6.查找*******************);puts(\t\t*******************7.退出*******************);puts(\n\n\t********************通讯录*********************);printf(请选择服务种类(1-7):[]\b\b);scanf(%d,&n);if(n1||n7){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case1:enter();break;case2:add();break;case3:modify();break;case4:deleter();break;case5:browse();break;case6:search();break;case7:exit(0);}}voidenter(){inti,n;printf(Howmanypeople(0-%d)?:,N-1);scanf(%d,&n);课程设计说明书No7沈阳大学printf(请输入数据:\n);for(i=0;in;i++){printf(\n输入第%d个记录.\n,i+1);input(i);}if(i!=0)save(n);printf_back();}voidadd(){inti,n,k,t;n=load();printf(Howmanypeopledoyouwanttoadd(0-%d)?:,N-n-1);scanf(%d,&t);k=n+t;for(i=n;ik;i++){printf(\n输入第%d个记录.\n,i-n+1);input(i);}save(k);printf_back();}voidmodify(){structpeoples;inti,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();printf_n(n);do{printf(\n\nEnternamethatyouwanttomodify!\nName:);scanf(%s,s.name);for(i=0;in;i++)if(strcmp(s.name,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf(\n\n没有记录请重新输入!);}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf(\n\t^_^.Successful^_^.\n\n是否继续?\n\n\t1).是2).保存返回\t[]\b\b);scanf(%d,&w0);w2=1;}else{w0=0;if(w2==0)peop[k]=s;}if((w0!=1)&&(w2==1))save(n);}while(w0==1);menu();}voidbrowse(){intn;n=load();printf_face();printf_n(n);课程设计说明书No8沈阳大学printf(\t共有%d记录.\n,n);printf(\nPressanykeytoback...);getchar();menu();}voidsearch(){intw0,k,i,n,w1,w2;structpeoples;n=load();do{printf(请选择查找类别:1).姓名2).电话号码[]\b\b);scanf(%d,&w1);if(w11||w12){printf(输入错误!请重新输入!\n);w2=1;}}while(w2==1);if(w1==1){do{k=-1;do{printf(\n\nEnternamethattouwanttosearch!\nName:);scanf(%s,s.name);for(i=0;in;i++)if(strcmp(s.name,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf(\n\n没有记录请重新输入!);}while(k==-1);printf_face();printf_one(k);printf(\nWhatdoyouwanttodo?\n\t1).继续2).返回菜单[]\b\b);scanf(%d,&w0);}while(w0==1);menu();}else{do{k=-1;do{printf(\n\nEnternumberthattouwanttosearch!\nNum:);scanf(%s,s.num);for(i=0;in;i++)if(strcmp(s.num,peop[i].num)==0){k=i;s=peop[i];}if(k==-1)printf(\n\n没有记录请重新输入!);}while(k==-1);printf_face();printf_