1、 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: C+语言课程设计 姓 名: 学 号: 专业班级: 系 ( 院): 计算机工程学院软件工程系 设计时间: 2011.6.82011.6.24 设计地点: 计算机工程学院机房 指导教师评语:签名: 年 月 日成绩:C+课程设计报告 第 2 页,共 37 页1课程设计目的C+课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖 C+的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌
2、握 C+这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用C+程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、编程简练,程序功能齐全,能正确运行4、说明书、流程图要清楚5、课题完成后必须按要求提交课程设计报告任务:设计一个学生成绩排名系统,该系统的主要功能如下:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、
3、姓名、或课程名查询成绩的功能。4)学生成绩应该保存在文件中。C+课程设计报告 第 3 页,共 37 页3课程设计说明书概要设计模块说明:在我设计的程序中一共包括了九个模块,分别是:浏览模块、添加模块、删除模块、查询模块、编辑模块、排序模块、读入文件模块、统计模块、退出系统模块。这九个功能中各个都是独立分开作为子函数的,也就是说为了实现这九个功能我写了九个函数,在主函数中通过 switch 语句,把九个函数联系了起来,同时,为了实现多次使用这九个函数,就在 switch 语句外加了 for 循环。功能机构图:m a i n 函数添加功能 统计功能浏览功能排序功能删除功能编辑功能f o r 循环控
4、制语句读入文件功能查询功能退出功能s w i t c h 语句编辑班级编辑姓名编辑学号编辑成绩s w i t c h 语句按课程查询按姓名查询按学号查询按成绩排序s w i t c h 语句按课程排序按姓名排序按学号排序f o r 循环控制语句统计全班成绩统计个人成绩详细设计 总体流程图:C+课程设计报告 第 4 页,共 37 页开始f o r 循环控制语句输入 ii = 2 , d a t a_ i p u t ( )i = 1 , d a t a_ s h o w ( )i = 5 ,c o m p l i le ( )i = 4 , s e a r c h ( )i = 3 ,d e l
5、 e t e ( )i = 7 ,s a v e ( )i = 6 ,s o r t ( )i = 9 ,e r r o r ( )i = 8 ,h a n d l e ( )结束各功能模块流程图:浏览功能模块流程图 添加功能模块流程图 删除功能模块流程图C+课程设计报告 第 5 页,共 37 页开始输入 1结束开始输入 2结束输入学号 、 班级 、 姓名 、C + + 、 英语 、 数学成绩显示文件中所有学生信息NY开始输入 2结束输入要删除学生的学号显示 “ 删除成功 ”如果存在这样的学号删除该学生的所有信息显示 “ 输入错误 , 请重新输入 ”查询功能模块流程图C+课程设计报告 第 6
6、页,共 37 页开始输入 4输入一个数 rr = 1s e a r c h 1结束R = 2s e a r c h 2R = 3s e a r c h 3R = 4“ g o o d l u c k ”b r e a k修改功能模块流程图C+课程设计报告 第 7 页,共 37 页开始输入 5D a t a _ s h o w ( )输入一个数 rR = 1输入姓名R = 2输入班级R = 4R = 3输入学号输入 C + + 成绩R = 5输入英语成绩R = 7R = 6输入数学成绩结束修改成功排序功能模块流程图C+课程设计报告 第 8 页,共 37 页开始输入 6输入 rr = 2 , s
7、o r t3 ( )r = 1 , s o r t1 ( )r = 6 , s o r t6 ( )r = 5 , s o r t5 ( )r = 4 s o r t4 ( )r = 3 , s o rt 3 ( )r = 7 , “G o o d l u c k !”b r e s k结束读入文件功能模块流程图开始输入 7S a v e ( )“ 资料已保存 ”结束统计功能模块流程图C+课程设计报告 第 9 页,共 37 页NYYN开始输入 8输入 k输入 t输入 rt 是某个学生的学号输出这个学生的总分和平均分e r r o r ( )r = 2 , 输出全班英语的总分 ,平均分和及格率r
8、 = 1 , 输出全班C + + 的总分 , 平均分和及格率r = 3 , 输出全班数学的总分 , 平均分和及格率r = 4 , 输出全班最高分和最低分的信息 k = = 0结束b r e a k退出系统功能模块流程图开始输入 9e r r o r ()结束C+课程设计报告 第 10 页,共 37 页4课程设计成果源代码:#include #include#include#includeusing namespace std;struct lessonfloat cgrade;float egrade;float mgrade;struct man char name10; char clas
9、20; int num;float sum;float average;lesson less;m100;int n=100; static int e=0;void sort();void handle();void search();void error() coutma.num;if(ma.num=0) break;cinma.namema.clasma.less.cgradema.less.egradema.less.mgrade;e+;void data_show() int i;couta;for(int i=0;imi.less.cgrade)minc=mi.less.cgrad
10、e;if(maxcmi.less.egrade)mine=mi.less.egrade;if(maxemi.less.mgrade)minm=mi.less.mgrade;if(maxm(mi.less.cgrade+mi.less.egrade+mi.less.mgrade)min_score=mi.less.cgrade+mi.less.egrade+mi.less.mgrade;min_num=mi.num;strcpy(min_name,mi.name);strcpy(min_class,mi.clas);min_cgrade=mi.less.cgrade;C+课程设计报告 第 14
11、页,共 37 页min_egrade=mi.less.egrade;min_mgrade=mi.less.mgrade;for(j=0;j=60) +count1;sume=sume+mj.less.egrade;if(mj.less.egrade=60) +count2;summ=summ+mj.less.mgrade;if(mj.less.mgrade=60) +count3;pc=count1;pe=count2;pm=count3;coutk;if(k=0)coutt;for(i=0;ir; switch(r) case 1:couta; int bool=0;for(int i=0;
12、ia; int bool=0;for(int i=0;ia; int bool=0;for(int i=0;ir;switch(r) case 1:search1();break; C+课程设计报告 第 19 页,共 37 页case 2:search2();break; case 3:search3();break; case 4:couta; /i-; for(i=0;ir;switch(r) case 1:coutmi.name;break; case 2:coutmi.clas;break; case 3:coutmi.num;break; case 4:coutmi.less.cgr
13、ade;break; case 5:coutmi.less.egrade;break; case 6:coutmi.less.mgrade;break; case 7:cout=0) strcpy(temp1,mj.name); strcpy(temp2,mj.clas);temp4=mj.less.cgrade;temp5=mj.less.egrade;temp6=mj.less.mgrade;temp7=mj.num;strcpy(mj.name,mj+1.name);strcpy(mj.clas,mj+1.clas);mj.less.cgrade=mj+1.less.cgrade;mj.
14、less.egrade=mj+1.less.egrade;mj.less.mgrade=mj+1.less.mgrade;mj.num=mj+1.num;strcpy(mj+1.name,temp1);strcpy(mj+1.clas,temp2);mj+1.less.cgrade=temp4;mj+1.less.egrade=temp5;mj+1.less.mgrade=temp6;mj+1.num=temp7;data_show(); cout=mj+1.less.cgrade) strcpy(temp1,mj.name); strcpy(temp2,mj.clas);temp4=mj.l
15、ess.cgrade;temp5=mj.less.egrade;temp6=mj.less.mgrade;temp7=mj.num;strcpy(mj.name,mj+1.name);strcpy(mj.clas,mj+1.clas);mj.less.cgrade=mj+1.less.cgrade;mj.less.egrade=mj+1.less.egrade;mj.less.mgrade=mj+1.less.mgrade;mj.num=mj+1.num;strcpy(mj+1.name,temp1);strcpy(mj+1.clas,temp2);mj+1.less.cgrade=temp4
16、;mj+1.less.egrade=temp5;mj+1.less.mgrade=temp6;mj+1.num=temp7;data_show(); cout=mj+1.less.mgrade) strcpy(temp1,mj.name); strcpy(temp2,mj.clas);temp4=mj.less.cgrade;temp5=mj.less.egrade;temp6=mj.less.mgrade;temp7=mj.num;strcpy(mj.name,mj+1.name);strcpy(mj.clas,mj+1.clas);mj.less.cgrade=mj+1.less.cgra
17、de;mj.less.egrade=mj+1.less.egrade;mj.less.mgrade=mj+1.less.mgrade;mj.num=mj+1.num;strcpy(mj+1.name,temp1);strcpy(mj+1.clas,temp2);mj+1.less.cgrade=temp4;mj+1.less.egrade=temp5;mj+1.less.mgrade=temp6;mj+1.num=temp7;data_show(); C+课程设计报告 第 26 页,共 37 页cout=mj+1.num) strcpy(temp1,mj.name); strcpy(temp2
18、,mj.clas);temp4=mj.less.cgrade;temp5=mj.less.egrade;temp6=mj.less.mgrade;temp7=mj.num;strcpy(mj.name,mj+1.name);strcpy(mj.clas,mj+1.clas);mj.less.cgrade=mj+1.less.cgrade;mj.less.egrade=mj+1.less.egrade;mj.less.mgrade=mj+1.less.mgrade;mj.num=mj+1.num;strcpy(mj+1.name,temp1);strcpy(mj+1.clas,temp2);mj
19、+1.less.cgrade=temp4;mj+1.less.egrade=temp5;mj+1.less.mgrade=temp6;mj+1.num=temp7;C+课程设计报告 第 27 页,共 37 页data_show(); coutr;switch(r) case 1:sort1();break; case 2:sort2();break; case 3:sort3();break; case 4:sort4();break; case 5:sort5();break; case 6:sort6();break;case 7:coute;for(int i=0;imi.num;inf
20、ilemi.name;infilemi.clas;C+课程设计报告 第 29 页,共 37 页infilemi.less.cgrade;infilemi.less.egrade;infilemi.less.mgrade;infilemi.sum;infilemi.average;void main() load();for(;) couti; cout0continue; case 2:data_input();continue; case 3:dalete();continue; case 4:search();continue; case 5:compile();continue; C+课程设计报告 第 30 页,共 37 页case 6:sort();continue;case 7:save();continue; case 8:handle();continue;case 9:coute“-谢谢使用-n“;exit(0); default:break; coutendl;else error(); 运行结果:一浏览功能:二添加功能