课程设计报告-C++语言课程设计.doc_第1页
课程设计报告-C++语言课程设计.doc_第2页
课程设计报告-C++语言课程设计.doc_第3页
课程设计报告-C++语言课程设计.doc_第4页
课程设计报告-C++语言课程设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告设计名称: C+语言课程设计 C+课程设计报告 第 27 页,共 27 页1课程设计目的C+课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用C+程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:以本班同学的具体数据为背景,设计一个本班同学通讯录。实现功能:1) 通讯录编辑(添加、删除)。2) 按不同的项进行查找。3) 对已存在的通讯录按不同的项排序。4) 将通讯录写入文件5) 从文件读入通讯录3课程设计说明书概要设计模块说明: 在我设计的程序中一共包括了五个模块,分别是:新增模块、查找模块、删除模块、排序模块,退出系统模块。这五个模块中新增、查找和修改都是独立分开作为子函数的,另外三个则是作为switch语句中的一部分,通过switch语句,把六大模块联系了起来,同时,为了实现多次使用这六大模块,就在switch语句外加了while循环。 模块机构图:详细设计 总体模块图:主菜单新添菜单查询菜单删除菜单排序菜单显示所有学生信息学号查询姓名查询电话查询删除所有删除单个姓名排序学号排序姓名删除学号删除各功能模块流程图:新增信息模块流程图开始 添加内容返回Y保存N查找模块 开始输入学号(电话号,姓名)有对应学号(电话号,姓名)YN输出学生信息输出没有此学生信息 结束,返回菜单 删除信息开始删除所有YN输出“已删除”输入姓名(学号)显示信息Y输出“删除成功”N是否删除结束,返回菜单排序信息 开始输入按姓名(学号)排序输出排序成功的信息Y结束,返回菜单N是否显示4课程设计成果程序代码#include #include #include #include #include struct record char id10; char name20; char phone20; char adress40; char postcode10; char e_mail30; student500; int num=0;/外部变量num为文件中的纪录数 FILE *fp; void readfromfile();/读取文件 void writetofile();/写入文件void mainmenu();/主菜单 void newrecord();/新添纪录 void searchmenu();/查询菜单void showall();/显示所有 void searchbyid();/按学号查询 void searchbyname();/按姓名查询 void searchbyphone();/按电话查询 void deletemenu();/删除菜单 void deleteall();/删除所有 void deleteone();/删除单个 void deletebyname();/按姓名删除 void deletebyid();/按学号删除 void listmenu();/排序菜单void listbyname();/按姓名排序 void listbyid();/按学号排序 void main() readfromfile(); while (1) mainmenu(); void readfromfile()/从文件导入 if(fp=fopen( D:student.gu,rb)=NULL) cout通讯录文件不存在endl; if (fp=fopen(D:student.gu,wb)=NULL) cout建立失败endl; exit(0); else cout通讯录文件已建立endl; cout按任意键进入主菜单0) /*返回当前文件指针,文件不为空*/ rewind(fp); /*文件位置指针移动到文件开始位置*/ for (num=0;!feof(fp) & fread(&studentnum,sizeof(struct record),1,fp);num+); cout文件导入成功endl; cout按任意键返回主菜单endl; getch(); return; cout文件导入成功endl; cout通讯录文件中无任何纪录endl; cout按任意键返回主菜单endl; getch(); return; void mainmenu()/主菜单 char choic; system(cls); cout 主菜单 endl; cout1-新添纪录 2-查询菜单endl; cout3-删除菜单 4-记录排序endl; cout5-保存退出 6-不保存退出endl;cout请选择:endl; choic=getch(); /从控制台读取一个字符,但不显示在屏幕上 switch (choic) case 1:newrecord();break; case 2:searchmenu();break; case 3:deletemenu();break; case 4:listmenu();break; case 5:writetofile();break;case 6:exit(0); default:mainmenu(); void newrecord()/添加纪录 cout请输入学生信息endl; cout输入学号:studentnum.id; cout输入姓名:; cout输入电话号码:studentnum.phone; cout输入地址:studentnum.adress; cout输入邮编:studentnum.postcode; cout输入e-mail:studentnum.e_mail; num+; cout是否继续添加?(Y/N):endl; if (getch()=y) newrecord(); return; void searchmenu()/查询菜单 char choic; system(cls); cout查询菜单endl; cout1-显示所有 2-按学号查询 endl; cout3-按姓名查询 4-按电话查询 endl; cout5-返回主菜单 endl; cout请选择:endl; choic=getch(); switch (choic) case 1:showall();break; case 2:searchbyid();break; case 3:searchbyname();break; case 4:searchbyphone();break; case 5:mainmenu();break; void showall()/显示所有 int i; system(cls); if(num!=0) cout以下为通讯录所有信息endl;for (i=0;inum;i+) cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; cout邮编: studenti.postcodeendl; coute-mail:studenti.e_mailendl; cout endl; if (i+1num) cout_endl; system(pause); cout endl; else cout通讯录中无任何纪录endl; cout按任意键返回主菜单:endl; getch(); return; /按电话查询 void searchbyphone() int mark=0; int i; int a=0; cout按电话查询endl;char phone10; cout请输入学号:phone; for(i=0;inum;i+) if (strcmp(studenti.phone,phone)=0) cout 以下是您查找的学生信息 endl; cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; coute-mail studenti.e_mailendl; cout endl;cout按任意键返回主菜单:endl; mark+; getch(); return; if (mark=0) cout没有改学生的信息endl; cout按任意键返回主菜单endl; getch(); return; void searchbyname()/按姓名查询 int mark=0; int i; int a=0; cout 按姓名查找 endl; char name20; cout请输入姓名:name; for(i=a;inum;i+) if (strcmp(,name)=0) cout 以下是您查找的学生信息endl; cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; coute-mail:studenti.e_mailendl; cout endl;mark+; if (i+1)num) cout是否继续查找相同名字的学生信息:(y/n)endl; if (getch()=y) a=i; continue; else return; else cout按任意键返回主菜单endl; getch(); return; if(mark!=0) cout没有相同姓名的学生纪录endl; cout按任意键返回主菜单endl; getch(); return; else cout没有相同姓名的学生纪录endl; cout按任意键返回主菜单endl; getch(); return; void searchbyid()/按学号查询 int mark=0; int i; int a=0; cout 按学号查找endl; char id10; cout请输入学号:id; for(i=0;inum;i+) if (strcmp(studenti.id,id)=0) cout 以下是您查找的学生信息 endl; cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; coute-mail:studenti.e_mailendl; cout endl; cout按任意键返回主菜单:endl; mark+; getch(); return; if (mark=0) cout没有改学生的信息endl; cout按任意键返回主菜单endl; getch(); return; void deletemenu()/删除菜单 char choic; if(num=0) cout对不起,文件中无任何纪录endl; cout按任意键返回主菜单endl; getch(); return; system(cls);cout删除菜单endl;cout1-删除所有 2-删除单个endl;cout3-返回主菜单 endl; cout endl;cout请选择:endl; choic=getch(); switch (choic) case 1:deleteall();break; case 2:deleteone();break; case 3:mainmenu();break; default:mainmenu();break; void deleteall()/删除所有 cout确认删除?(y/n)endl; if (getch()=y) fclose(fp); if (fp=fopen(D:student.gu,wb)=NULL) cout不能打开文件,删除失败endl; readfromfile(); num=0; cout纪录已删除,按任意键返回主菜单endl; getch(); return; else return; void deleteone()/删除单个 char choic; cout1-按学号删除 2-按姓名删除endl; cout请选择:endl; choic=getch(); switch (choic) case 1:deletebyid();break; case 2:deletebyname();break; void deletebyname()/按姓名删除 int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; cout请输入要删除学生姓名:name; for (i=a;inum;i+) if (strcmp(,name)=NULL) cout以下是您要删除的学生纪录:endl; findmark+; cout_endl; cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; coute-mail:studenti.e_mailendl; cout_endl; cout是否删除?(y/n)endl; if (getch()=y) for (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; cout删除成功endl; if(i+1)num) cout是否继续删除相同姓名的同学信息?(y/n)endl; if (getch()=y) a=i; continue; cout是否继续删除?(y/n)endl; if (getch()=y) deletebyname(); return; if(i+1)num) cout是否继续删除相同姓名的同学信息?(y/n)endl; if (getch()=y) a=i; continue; else continue; if (deletemark=0)&(findmark=0) cout没有该同学的纪录endl; cout是否继续删除?(y/n)endl; if (getch()=y) deletebyid(); return; return; else if (findmark!=0) cout没有重名信息endl; cout没有该同学的纪录endl; cout是否继续删除?(y/n)endl; if (getch()=y) deletebyid(); return; return; void deletebyid()/按学号删除 int i,j; int deletemark=0; char id20; cout请输入要删除学生学号:id; if(num=0) cout对不起,文件中无任何纪录endl; cout按任意键返回主菜单endl; getch(); return; for (i=0;inum;i+) if (strcmp(studenti.id,id)=NULL) cout以下是您要删除的学生纪录:endl; cout学号: studenti.idendl; cout姓名: endl; cout电话: studenti.phoneendl; cout地址: studenti.adressendl; coute-mail:studenti.e_mailendl; cout是否删除?(y/n)endl; if (getch()=y) for (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; cout删除成功endl; cout是否继续删除?(y/n)endl; if (getch()=y) deletebyid(); return; else return; continue; if (deletemark=0) cout没有该同学的纪录endl; cout是否继续删除?(y/n)endl; if (getch()=y) deletebyid(); return; void listmenu()/排序菜单 char choic; if(num=0) cout对不起,文件中无任何纪录endl; cout按任意键返回主菜单endl; getch(); return; system(cls); cout排序菜单endl; cout1-按学号排序 2-按姓名排序endl;cout3-返回主菜单 endl; cout endl;cout请选择:endl; choic=getch(); switch(choic) case 1:listbyid();break; case 2:listbyname();break; case 3:mainmenu();break; default:mainmenu();break; void listbyname()/按姓名排序 int i,j; struct record tmp; for (i=1;inum;i+) if(strcmp(,)0) tmp=studenti; j=i-1; do studentj+1=studentj; j-; while (strcmp(,)=0); studentj+1=tmp; cout排序成功,是否显示?(y/n)endl; if (getch()=y) showall(); return; void listbyid()/按学号排序 int i,j; struct record tmp; for (i=1;inum;i+) if(strcmp(studenti.id,studenti-1.id)0) tmp=studenti; j=i-1; do studentj+1=studentj; j-; while (strcmp(tmp.id,studentj.id)=0); studentj+1=tmp; cout排序成功,是否显示?(y/n)endl; if (getch()=y) showall(); return; void writetofile()/写入文件 int i; if (fp=fopen(D:student.gu,wb)=NULL) cout文件打开失败endl; for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) cout写入文件错误!endl; fclose(fp); cout通讯录文件已

温馨提示

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

评论

0/150

提交评论