C++课程设计报告(共38页).doc

上传人:飞****2 文档编号:14248172 上传时间:2022-05-03 格式:DOC 页数:31 大小:186KB
返回 下载 相关 举报
C++课程设计报告(共38页).doc_第1页
第1页 / 共31页
C++课程设计报告(共38页).doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《C++课程设计报告(共38页).doc》由会员分享,可在线阅读,更多相关《C++课程设计报告(共38页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 课程设计课程名称:课 程 号: 2013年6月26日 目录专心-专注-专业一、课程设计设计目的及要求1.课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:l 巩固和加深学生对C语言课程的基本知识的理解和掌握l 掌握C语言编程和程序调试的基本技能l 利用C语言进行基本的软件设计l 能够利用所学的基本知识和技能,解决简单的程序设计问题.l 培养学生在项目开发中团队合作精神,创新意识及能力。l 掌握书写程序设计说明文档的能力 2.课程设计要求l 分析课程设计题目的要求

2、l 写出详细设计说明l 编写程序代码,调试程序使其能正确运行l 设计完成的软件要便于操作和使用l 设计完成后提交课程设计报告二、课程设计任务内容2.1背单词软件开发 (学号为单号的必须作)实现功能:l 2.1.1录入单词 China 中国Japan 日本 . 使用文件存放。2.1.2随机测试系统随机显示单词(用户可以选择中译英,或英译中),对回答错误的单词应该可再回答一次。能够统计回答的正确单词的个数。2.1.3顺序测验2.1.4查找单词的汉语或英语意思输入中文查对应的英语意思,输入英文查对应汉语意思2.2学生成绩管理系统 实现功能:l 设计一个功能显示菜单,并有选择提示;l 建立学生信息数据

3、,包括学号、姓名、三门课(语文、数学和英语)的成绩;l 能实现学生信息增加、删除和修改;l 统计每个学生的总分和平均分;l 按照总分从小到大排出名次;l 任意输入一个学好,能够查出该学生在班级中的排名及其考试成绩。l 学生的信息包括学号、姓名、三门课(语文、数学和英语)的成绩,都应该保存在二进制文件里2.2.1背单词系统1)、当前学生信息:通过结构体struct wd 来保存单词的英文意思和中文意思等相关信息,并且通过cin函数输入单词信息;2)、单词录入 :可以随时调用单词录入单词,并用fwrite函数将单词保存在“word.txt” 文件里;3)、随机测试: 运用rand()函数随机产生一

4、个单词的英文, 然后用户输入其对应的中文意思,在文件中查找此单词, 并把输入的中文意思与产生英文单词的中文意思作比较,若一样则输出“回答正确”,否则重新做一遍,然后再判断,能并统计回答的正确单词的个数;若找不到则输出查找失败的信息;4)、顺序测试:从“word.txt”的第一个单词开始逐个测试,测试方法同随机测试;5. 单词查询:输入一个英文单词, 在文件中查找此单词, 若找到则输出此单词的中文意思; 若找不到则输出查找失败的信息;5)、退出系统.(附加说明:系统将来完善的功能有:测试或查找单词时实现双向测试、查找)2.2.2、学生信息管理系统1)、 当前学生信息:通过结构体struct st

5、udent 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息 4)、输出全部学生信息和全部学生成绩。 2)、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。3)、信息插入 :通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。5)、退出系统.第三部分:详细设计3.1系统化可以分为如下模块(即如下函数):3.1.1背单词系统1)、单词录入:其中包括单词的英文和其对

6、应的中文意思;可用函数cin来实现此操作。(调用函数:void luru()) 2)、随机测试:又分为两个模块:(调用函数:suijiceshi() )、英译汉。用rand()来随机产生一个英文单词、汉译英。主要内容同英译汉。3)、顺序测试:对单词进行逐个测试。(调用函数:void shunxuceshi())4)、单词查询:(调用函数:void chazhao() ) 5)、退出系统3.1.2、学生信息管理系统1)、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin来实现此操作。2)、输出模块:输出全部学生全部信息包括学生的语文、数

7、学、英语成绩。3)、插入模块:可用fwrite函数来实现。其中通过学号的大小来比较的,并且以此来排序。4)、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语相关成绩,同时也可以分别通过studi-1来输出语文、数学、英语平均分数。5)、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。3.2系统主模块结构图背单词系统: 背 单 词 系 统单词录入随机测试顺序测试单词查询退出系统汉译英英译汉学生信息管理系统:学生成绩管理系统增加信息模块显示信息模块排序信息模块查询信息模块增添信息模块修改信息模块删除信息模块主菜单模块写入文件

8、模块3.2.1 界面设计(1)背单词系统:(2)学生信息管理系统3.2.2数据结构设计:程序设计中用到的结构体类型:背单词系统结构体类型:struct wd char chinese20; char english20;wdN;学生信息管理系统中结构体类型:typedef struct char class_020; /*班级*/ int number; /*学号*/ char name20; /*姓名*/ float english; /*大学英语成绩*/ float math; /*高等数学成绩*/ float chinese; /*语文成绩*/ float average; /*平均分*

9、/Student;二、程序模块1、背单词系统: 录入模块:void luru() FILE *fp; int flag; if(fp=fopen(d:word.txt,ab+)=NULL) cout打开失败endl; exit(0); while(1) cout请输入第p+1个汉语意思:wdp.chinese; cout请输入对应的英语单词:wdp.english; p+; fwrite(&wd,sizeof(wd),p,fp); coutflag; if(flag=0|p=10) break; fclose(fp); 测试模块:void suijiceshi() int k; cout(1)

10、汉译英endl(2)英译汉k; while(k=1) int d; char a20,b20; srand(time(0); d=rand()%p; coutwdd.chinesena; if(strcmp(a,wdd.english)=0)r+;s+; cout恭喜你!答对了!n;else s+; cout很遗憾,答错了!;coutb; if(strcmp(b,wdd.english)=0) r+; cout恭喜你!答对了!n;else cout很遗憾,答错了!;cout正确个数rt总个数sp) cout没有相应的英语单词endl;break; while(k=2) int n; char

11、c20,d20;srand(time(0);n=rand()%p; coutwdn.englishnc; if(strcmp(c,wdn.chinese )=0) r+; s+; cout恭喜你!答对了!n; else s+; cout很遗憾,答错了!;coutd; if(strcmp(d,wdn.chinese )=0) r+; cout恭喜你!答对了!n; else cout很遗憾,答错了!; cout正确个数rt总个数sp) cout没有相应的汉语endl;break;void shunxuceshi() for(i=0;ip;i+) char a20,b20; cout第i+1个汉语w

12、di.chinesena;if(strcmp(a,wdi.english)=0)r+;s+; cout恭喜你!答对了!n;else s+; cout很遗憾,答错了!;coutb; if(strcmp(b,wdi.english)=0)r+; cout恭喜你!答对了!n;else cout很遗憾,答错了!;cout正确个数rt总个数sp) cout没有相应的英语单词endl; 查询模块:void chazhao() char a20; couta; for(i=0;ip;i+) if(strcmp(a,wdi.chinese )=0) cout对应英语是wdi.english; else if(

13、strcmp(a,wdi.english )=0) cout对应汉语是wdi.chinese ; 2、学生信息管理系统:、数据录入模块:int Input(Student stud,int n) /*输入若干条记录*/ int i=0; char sign,x10; /*x10为清除多余的数据所用*/ while(sign!=n&sign!=N) /*判断*/ coutstudn+i.class_0; coutstudn+i.number; coutstudn+i.name; coutstudn+i.english; coutstudn+i.math; coutstudn+i.chinese;

14、 studn+i.average=(studn+i.english+studn+i.math+studn+i.chinese)/3; cout平均分为:studn+i.averageendl; gets(x); /*清除多余的输入*/ coutsign; /*输入判断*/ i+; return(n+i); 、显示学生信息模块:void Display(Student stud,int n) /*显示所有记录*/ int i; if(!stud)cout没有记录; else cout*endl; /*格式头*/ cout班别setw(10)学号setw(10)姓名setw(10)英语setw(1

15、0)数学setw(10)语文setw(10)平均分endl; for(i=1;in+1;i+) /*循环输入*/ studn-1.average=(studn-1.english+studn-1.math+studn-1.chinese)/3; coutstudi-1.class_0setw(10)studi-1.numbersetw(10)studi-1.namesetw(10)studi-1.englishsetw(10) studi-1.mathsetw(10)studi-1.chinesesetw(10)studi-1.averageendl; couttttendl; system(

16、pause); 、删除学生成绩信息模块:int Delete(Student stud,int n) /*按学号查找,删除一条记录*/ int s; int i=0,j; cout输入需要删除学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout提示:对不起,无法找到改学号endl; /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /*删除操作*/ strcpy(studj.class_0,studj+1.class_0); studj.number=studj+1.number; strcp

17、y(studj.name,studj+1.name); studj.english=studj+1.english; studj.math=studj+1.math; studj.chinese=studj+1.chinese; cout已成功删除!endl; /*返回成功信息*/ return(n-1); 、修改学生信息模块:void Modify(Student stud,int n) int s; int i=0; cout输入需要修改成绩学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout对不起,无该学生的成绩e

18、ndl; /*输入失败信息*/ return; cout该学生的信息endl; /*格式头*/ cout班别setw(10)学号setw(10)姓名setw(10)英语setw(10)数学setw(10)语文setw(10)平均分endl; cout*endl; studi.average=(studi.english+studi.math+studi.chinese)/3; coutstudi-1.class_0setw(10)studi-1.numbersetw(10)studi-1.namesetw(10)studi-1.englishsetw(10) studi-1.mathsetw(

19、10)studi-1.chinesesetw(10)studi-1.averageendl; cout请输入学生的班别:studn+i.class_0; cout请输入学生的学号:studn+i.number; cout请输入学生的姓名:studn+i.name; cout请输入英语成绩:studn+i.english; cout请输入数学成绩:studn+i.math; cout请输入语文成绩:studn+i.chinese; studi.average=(studi.english+studi.math+studi.chinese)/3; cout平均分为:studi.average;、查

20、找学生信息模块:void Search(Student stud,int n) /*查找并显示一个记录*/ int s; int i=0; cout输入需要查找学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout对不起,无法找到该学生的信息!endl; /*输入失败信息*/ return; cout-endl; cout班别:studi.class_0endl; /*输出该学生信息*/ cout学号:studi.numberendl; cout姓名:studi.nameendl; cout英语:studi.english

21、endl; cout数学:studi.mathendl; cout语文:studi.chineseendl; cout平均分:studi.averageendl;void Modify(Student stud,int n) int s; int i=0; cout输入需要修改成绩学生的学号:s; while(studi.number-s)!=0&in) i+; /*查找判断*/ if(i=n) cout对不起,无该学生的成绩endl; /*输入失败信息*/ return; cout该学生的信息endl; /*格式头*/ cout班别setw(10)学号setw(10)姓名setw(10)英语

22、setw(10)数学setw(10)语文setw(10)平均分endl; cout*endl; studi.average=(studi.english+studi.math+studi.chinese)/3; coutstudi-1.class_0setw(10)studi-1.numbersetw(10)studi-1.namesetw(10)studi-1.englishsetw(10) studi-1.mathsetw(10)studi-1.chinesesetw(10)studi-1.averageendl; cout请输入学生的班别:studn+i.class_0; cout请输入

23、学生的学号:studn+i.number; cout请输入学生的姓名:studn+i.name; cout请输入英语成绩:studn+i.english; cout请输入数学成绩:studn+i.math; cout请输入语文成绩:studn+i.chinese; studi.average=(studi.english+studi.math+studi.chinese)/3; cout平均分为:studi.average;、排序模块:void Sort(Student stud,int n) /*按平均分排序*/ int i,j,k; float s; char t20; for(i=0;i

24、n-1;i+) /*冒泡法排序*/ for(j=0;jn-1-i;j+) if(studj.averagestudj+1.average) strcpy(t,studj+1.class_0); strcpy(studj+1.class_0,studj.class_0); strcpy(studj.class_0,t); k=studj+1.number; studj+1.number=studj.number; studj.number=k; strcpy(t,studj+1.name); strcpy(studj+1.name,studj.name); strcpy(studj.name,t

25、); s=studj+1.english; studj+1.english=studj.english; studj.english=s; s=studj+1.math; studj+1.math=studj.math; studj.math=s; s=studj+1.chinese; studj+1.chinese=studj.chinese; studj.chinese=s; s=studj+1.average; studj+1.average=studj.average; studj.average=s; cout*endl; /*格式头*/ cout班别setw(10)学号setw(1

26、0)姓名setw(10)英语setw(10)数学setw(10)语文setw(10)平均分endl; for(i=1;in+1;i+) /*循环输入*/ studi-1.average=(studi-1.english+studi-1.math+studi-1.chinese)/3; coutstudi-1.class_0setw(10)studi-1.numbersetw(10)studi-1.namesetw(10)studi-1.englishsetw(10) studi-1.mathsetw(10)studi-1.chinesesetw(10)studi-1.averageendl;

27、三、程序中出现的问题1、 在程序编译的时候有时候会出现,unclear definition等字样解决办法:检查定义变量或头文件是否丢失;2、 在程序编译的时候有时候会出现unexpect file end解决办法:检查花括号是否缺失(小技巧:编程中写花括号时,尽量一次性把两个花括号写齐,这样会避免花括号丢失!);3、 读取文件中结构体内数组里的内容时,应直接读取数组,如:fread(&Wi,sizeof(word),1,fp)而不应该是:fread(&Wi.english,sizeof(word),1,fp);4、 Case应该和break组合;四、心得体会三周的C语言程序课程设计,我进步很

28、多,上机的实践操作,让我把书上的知识理解的更加透彻。在课程设计中得到了运用和实践。虽然,在课程设计开始的时候,我感到很艰难,不知道该怎么做,就去看书照着做,但是后来,在同学和老师的指点和帮助下和在上网查看了大量的资料之后终于慢慢的知道我该做什么、怎么做。一次次的出错,一次次的改正。当我看到自己的程序能够正常运行的时候,我的多么的高兴和欣慰,因为在此期间,我为课程设计付出了只记得心血和汗水!正应了那句古语:“宝剑锋从磨砺出,梅花香自苦寒来”。虽然对编程不太感兴趣,但是通过这门课程的学习,我认为在当下社会还是非常有益的。用处之广,作用之大。三星期中最后,想说两句,这次设计,让我重新认识到了C语言的

29、重要性,而且还得到了用C语言解决实际问题的宝贵经验! 在这三周中,非常感谢老师的相伴指导。所以,我对程老师要表示深深的感谢! 这就是我整个课程设计中的的心得体会!五参考资料: 1C程序设计 清华大学出版社 谭浩强2C+程序设计教程 清华大学出版社 钱能3.C/C+程序设计面向过程分册电子工业出版社 郑秋生 4.C语言程序设计题典 清华大学出版社 李春葆等六、附录:程序清单#include#include#include#include#include#define N 10int r=0,s=0,i=0,p=0;struct wd char chinese20; char english20;

30、wdN;void menu() cout欢迎进入背单词系统n; cout1:录入单词n; cout2:随机测试n; cout3:顺序测试n; cout4:查找单词n; cout0:退出n;void luru() FILE *fp; int flag; if(fp=fopen(d:word.txt,ab+)=NULL) cout打开失败endl; exit(0); while(1) cout请输入第p+1个汉语意思:wdp.chinese; cout请输入对应的英语单词:wdp.english; p+; fwrite(&wd,sizeof(wd),p,fp); coutflag; if(flag

31、=0|p=10) break; fclose(fp);void suijiceshi() int k; cout(1)汉译英endl(2)英译汉k; while(k=1) int d; char a20,b20; srand(time(0); d=rand()%p; coutwdd.chinesena; if(strcmp(a,wdd.english)=0)r+;s+; cout恭喜你!答对了!n;else s+; cout很遗憾,答错了!;coutb; if(strcmp(b,wdd.english)=0) r+; cout恭喜你!答对了!n;else cout很遗憾,答错了!;cout正确

32、个数rt总个数sp) cout没有相应的英语单词endl;break; while(k=2) int n; char c20,d20;srand(time(0);n=rand()%p; coutwdn.englishnc; if(strcmp(c,wdn.chinese )=0) r+; s+; cout恭喜你!答对了!n; else s+; cout很遗憾,答错了!;coutd; if(strcmp(d,wdn.chinese )=0) r+; cout恭喜你!答对了!n; else cout很遗憾,答错了!; cout正确个数rt总个数sp) cout没有相应的汉语endl;break;void sh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁