学生成绩管理系统C++语言课程设计报告书+_第1页
学生成绩管理系统C++语言课程设计报告书+_第2页
学生成绩管理系统C++语言课程设计报告书+_第3页
学生成绩管理系统C++语言课程设计报告书+_第4页
学生成绩管理系统C++语言课程设计报告书+_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 学生成绩系统 姓 名: 学 号: 专业班级: 系 (院): 设计时间: 设计地点:计算机工程学院机房、教室、学生宿舍、图书馆 成绩:指导教师评语: 签名: 年 月 日C+课程设计报告 第 29 页,共 29 页1课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完C+程序设计课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C+课程的基本知识的理解和掌握;(2)掌握C+编程和程序调试的基本技能;(3)利用C+进行简单软件设计的基本思路和方法;(4)提高运用C+解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。本次课程设计利用C+程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。2课程设计任务与要求:要求:1) 设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括模块说明、模块结构图和系统流程图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 源程序代码及设计成果:完整源程序清单和设计成果;5)总结: 调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C+和本次课程设计的认识等内容.;任务:设计一个学生成绩排名系统,该系统的主要功能如下:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、姓名、或课程名查询成绩的功能。4)学生成绩应该保存在文件中。备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。3课程设计说明书概要设计一、模块说明在本次程序设计中我设计了7个大模块,分别是(1)浏览学生的成绩记录。(2)添加学生的成绩记录。(3)删除学生的成绩记录。(4)对学生成绩进行排序。(5)查询学生的成绩。(6)对成绩的统计。(7)保存数据。8个小模块,分别是(1) 按学号查询(2) 按姓名查询(3) 按课程名查询(4) 按数学成绩排名(5) 按英语成绩排名(6) 按语文成绩排名(7) 按平均成绩排名(8) 按总分排名。其中按学号查询,按姓名查询,按课程名查询这三个小模块作为查询学生成绩的子模块。按数学成绩排名,按英语成绩排名,按语文成绩排名,按平均成绩排名,按总分排名这五个小模块作为对学生成绩进行排序的子模块。在对成绩的统计中所有不同的统计都放在其中,利用switch实现选择输出。在整个过程中利用for语句进行循坏,利用switch语句实现用户的选择,break控制程序的返回。二、模块结构图按学号查询按姓名查询按课程名查询按数学成绩排名按英语成绩排名按语文成绩排名按平均成绩排名按总分排名学生成绩排名系统浏览学生成绩记录添加学生记录删除学生的成绩记录对学生成绩进行排序查询学生的成绩对成绩的统计保存数据开始用户进行选择输入rr=1r=4r=3r=2r=6r=5r=7浏览学生成绩记录添加学生记录对学生成绩进行排序删除学生的成绩记录对成绩的统计查询学生的成绩保存数据r=0输入rr=1r=2r=3r=4r=5按数学成绩排名按英语成绩排名按语文成绩排名按平均成绩排名按总分排名输入rr=1r=2r=3r=0r=0按学号查询按姓名查询按课程名查询结束三、系统流程图详细设计各功能模块设计思路及流程图:(1) 浏览学生成绩记录设计思路及流程图。简单的用个for语句依次输出数据。并用setw()控制字符数。开始m=0mn学生人数输出学生的信息m+结束yn(2)添加学生成绩记录设计思路及流程图。开始m=n输入学生的成绩信息n+sm.num(输入的学号)=0否结束是用一个for语句进行从第n(现有学生人数)开始输入学生各成绩的信息,同时每输入一个学生的成绩信息,n将加一,由此循环,输入0时结束。(3)删除学生的成绩记录设计思路及流程图。输入一个数,如果这个数与所给数据库里某一学号相等,就把从这个学号的下一个学号开始,把之后的每个学生数据都向上一个学生数据覆盖掉,同时,学生人数减1,当输入a时结束。i+jn-1strcpy(,sj+1.name);strcpy(sj.grade,sj+1.grade);sj.num=sj+1.num;sj.cl.egrade=sj+1.cl.egrade;sj.cl.lgrade=sj+1.cl.lgrade;sj.cl.mgrade=sj+1.cl.mgrade;j+n-按顺序输出学生信息结束j=i开始输入aa=0否i=0ina=si.num是否是否是(4)对成绩进行排序设计及流程图。运用冒泡排序法进行排序,因为这里需要根据很多不同的方面进行排序,大同小异,因此以根据数学成绩排序为例。把所有第i的数据与第i+1的数据交换j=0jn-1i=0i=n-jsi.cl.mgradesi+1.cl.mgradei+j+是是否按顺序输出学生信息结束开始否(5)对成绩的统计的设计思路及流程图在这个模块,我设计了四个不同方式的查询,但是方法类似,由此,举按数学成绩最高分为例。首先定义一个最高分m_max另它为第一个人的成绩,依次往后面学生的成绩相比较,如果比他大,则他们的信息交换,最后就找到了最高分,输出。开始m_max=s0.cl.mgradei=0inm_maxsi.cl.mgradem_max=si.cl.mgradei+是否是输出最高分否结束(6)查询学生成绩的设计思路与流程图在这个模块,我设计了三个根据不同的类型查询,方法类似,这里举一个通过学号来查询。开始输入abool=0i=0ina=0a=si.num输出这个学生的成绩信息,bool=1i+是否是否否是bool=1否结束输出“无该学生”首先输入一个数,如果这个数等于0的话则结束即返回上一层。同时令bool=0这个用处是提醒用户没有所要查询的学号。接着进入一个循环,如果输入的值等于学号中的某一个时,则输出这个学号所有的学生成绩信息。4课程设计成果(1) 程序代码。#include #include #include #include using namespace std;struct Class float mgrade; float egrade; float lgrade;struct Studentchar grade20;int num;char name20;float sum;float average;Class cl;s50;void refer(); void show() cout*endl; cout*-(1)浏览学生的成绩记录-*endl; cout*-(2添加学生的成绩记录-*endl; cout*-(3)删除学生的成绩记录-*endl; cout*-(4)对学生成绩进行排序-*endl; cout*-(5)查询学生的成绩-*endl; cout*-(6)对成绩的统计-*endl; cout*-(7)保存数据-*endl; cout*-(0)结束程序-*endl; cout*endl; static int n=0; void input() cout添加学生的成绩记录endl; cout请依次输入学号 班级 姓名 数学 英语 语文。当输入0时返回endl; for(int m=n;msm.num; if(sm.num=0) break; sm.cl.mgradesm.cl.egradesm.cl.lgrade; n+; void all_show()int m;for(int i=0;i80;i+)cout*;coutendl;coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学setw(5)英语setw(5)语文setw(15)三门平均成绩setw(15)三门总成绩; for(m=0;mn;m+) sm.average=(sm.cl.egrade+sm.cl.lgrade+sm.cl.mgrade)/3;sm.sum=sm.cl.egrade+sm.cl.lgrade+sm.cl.mgrade;coutsetiosflags(ios:left)setw(15)sm.numsetw(10)sm.gradesetw(10)setw(5)sm.cl.mgradesetw(5)sm.cl.egradesetw(5)sm.cl.lgradesetw(15)sm.averagesetw(15)sm.sum; coutendl; for(int j=0;j80;j+)cout*;void delet()int a;for(;)all_show();coutendl;cout请输入要删除的学生成绩信息的学号,输入0时返回a;if(a=0)break;for(int i=0;in;i+)if(a=si.num)for(int j=i;jn-1;j+)strcpy(,sj+1.name);strcpy(sj.grade,sj+1.grade);sj.num=sj+1.num;sj.cl.egrade=sj+1.cl.egrade;sj.cl.lgrade=sj+1.cl.lgrade;sj.cl.mgrade=sj+1.cl.mgrade;n-;coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学setw(5)英语setw(5)语文setw(15)三门平均成绩setw(15)三门总成绩; for(int m=0;mn;m+) sm.average=(sm.cl.egrade+sm.cl.lgrade+sm.cl.mgrade)/3;sm.sum=sm.cl.egrade+sm.cl.lgrade+sm.cl.mgrade;coutsetiosflags(ios:left)setw(15)sm.numsetw(10)sm.gradesetw(10)setw(5)sm.cl.mgradesetw(5)sm.cl.egradesetw(5)sm.cl.lgradesetw(15)sm.averagesetw(15)sm.sum;void refer1()int a;for(;)cout输入要查询学生成绩的学号,输入0时返回上一级a;if(a=0)break;int bool=0;for(int i=0;in;i+)if(a=si.num)coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学setw(5)英语setw(5)语文endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5) si.cl.lgradeendl;bool=1; if(bool=0)cout无该学生纪录endl;void refer2()string a;for(;)cout输入要查询学生成绩的姓名,输入0时返回上一级a;if(a=0)break;int bool=0;for(int i=0;in;i+)if(a=)coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学setw(5)英语setw(5)语文endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5) si.cl.lgradeendl;bool=1; if(bool=0)cout无该学生纪录endl;void refer3()string a;for(;)cout输入要查询学生成绩的课程名a;if(a=0)break;int bool=0;for(int i=0;in;i+)if(a=数学)coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) setw(5)si.cl.mgradeendl;bool=1;if(a=英语)coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)英语endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) setw(5)si.cl.egradeendl;bool=1;if(a=语文)coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)语文endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) setw(5)si.cl.lgradeendl;bool=1; if(bool=0)cout无该学生纪录endl; void refer()int r;for(;)all_show();cout1.根据学号查找endl; cout2.根据姓名查找endl; cout3.根据课程名查找endl;cout0.返回上一级r;if(r=0)break;switch(r)case 1:refer1();continue;case 2:refer2();continue;case 3:refer3();continue;default:couterror!endl;break;void sort1()int t;float t2;char p110,p210;cout按数学成绩排名endl; for(int j=0;jn-1;j+) for(int i=0;i=n-j;i+) if(si.cl.mgradesi+1.cl.mgrade) t=si.cl.mgrade;si.cl.mgrade=si+1.cl.mgrade;si+1.cl.mgrade=t;t=si.cl.egrade;si.cl.egrade=si+1.cl.egrade;si+1.cl.egrade=t; t=si.cl.lgrade;si.cl.lgrade=si+1.cl.lgrade;si+1.cl.lgrade=t;t2=si.average;si.average=si+1.average;si+1.average=t2;t=si.sum;si.sum=si+1.sum;si+1.sum=t;t=si.num;si.num=si+1.num;si+1.num=t;strcpy(p1,si.grade);strcpy(si.grade,si+1.grade);strcpy(si+1.grade,p1);strcpy(p2,);strcpy(,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)数学setw(5)英语setw(5)语文setw(15)三门平均成绩setw(15)三门总成绩; for(int i=0;in;i+) si.average=(si.cl.egrade+si.cl.lgrade+si.cl.mgrade)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5)si.cl.lgradesetw(15)si.averagesetw(15)si.sum;void sort2()int t;float t2;char p110,p210;cout按英语成绩成绩排名endl; for(int j=0;jn-1;j+) for(int i=0;i=n-j;i+) if(si.cl.egradesi+1.cl.egrade) t=si.cl.mgrade;si.cl.mgrade=si+1.cl.mgrade;si+1.cl.mgrade=t;t=si.cl.egrade;si.cl.egrade=si+1.cl.egrade;si+1.cl.egrade=t;t=si.cl.lgrade;si.cl.lgrade=si+1.cl.lgrade;si+1.cl.lgrade=t;t2=si.average;si.average=si+1.average;si+1.average=t2;t=si.sum;si.sum=si+1.sum;si+1.sum=t;t=si.num;si.num=si+1.num;si+1.num=t;strcpy(p1,si.grade);strcpy(si.grade,si+1.grade);strcpy(si+1.grade,p1);strcpy(p2,);strcpy(,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10) 姓名setw(5)数学setw(5)英语setw(5)语文setw(15) 三门平均成绩setw(15)三门总成绩; for(int i=0;in;i+) si.average=(si.cl.egrade+si.cl.lgrade+si.cl.mgrade)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5)si.cl.lgradesetw(15)si.averagesetw(15)si.sum;void sort3()int t;float t2;char p110,p210; cout按语文成绩排名endl; for(int j=0;jn-1;j+) for(int i=0;i=n-j;i+) if(si.cl.lgradesi+1.cl.lgrade) t=si.cl.mgrade;si.cl.mgrade=si+1.cl.mgrade;si+1.cl.mgrade=t;t=si.cl.egrade;si.cl.egrade=si+1.cl.egrade;si+1.cl.egrade=t;t=si.cl.lgrade;si.cl.lgrade=si+1.cl.lgrade;si+1.cl.lgrade=t;t2=si.average;si.average=si+1.average;si+1.average=t2;t=si.sum;si.sum=si+1.sum;si+1.sum=t;t=si.num;si.num=si+1.num;si+1.num=t;strcpy(p1,si.grade);strcpy(si.grade,si+1.grade);strcpy(si+1.grade,p1);strcpy(p2,);strcpy(,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10) 姓名setw(5)数学setw(5)英语setw(5)语文setw(15) 三门平均成绩setw(15)三门总成绩; for(int i=0;in;i+) si.average=(si.cl.egrade+si.cl.lgrade+si.cl.mgrade)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5)si.cl.lgradesetw(15)si.averagesetw(15)si.sum;void sort4()int t,min;float t2;char p110,p210; cout按平均成绩排名endl; for(int i=0;in;i+) min=i; for(int j=i+1;jsj.average) t=sj.cl.mgrade;sj.cl.mgrade=smin.cl.mgrade;smin.cl.mgrade=t;t=sj.cl.egrade;sj.cl.egrade=smin.cl.egrade;smin.cl.egrade=t;t=sj.cl.lgrade;sj.cl.lgrade=smin.cl.lgrade;smin.cl.lgrade=t;t2=sj.average;sj.average=smin.average;smin.average=t2;t=sj.sum;sj.sum=smin.sum;smin.sum=t;t=sj.num;sj.num=smin.num;smin.num=t;strcpy(p1,sj.grade);strcpy(sj.grade,smin.grade);strcpy(smin.grade,p1);strcpy(p2,);strcpy(,);strcpy(,p2); coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名 setw(5)数学setw(5)英语setw(5)语文setw(15)三门平均成绩 setw(15)三门总成绩; for(i=0;in;i+) si.average=(si.cl.egrade+si.cl.lgrade+si.cl.mgrade)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5)si.cl.lgradesetw(15)si.averagesetw(15)si.sum;void sort5()int t;float t2;char p110,p210; cout按总分排名endl; for(int j=0;jn-1;j+) for(int i=0;i=n-j;i+) if(si.sumsi+1.sum) t=si.cl.mgrade;si.cl.mgrade=si+1.cl.mgrade;si+1.cl.mgrade=t;t=si.cl.egrade;si.cl.egrade=si+1.cl.egrade;si+1.cl.egrade=t;t=si.cl.lgrade;si.cl.lgrade=si+1.cl.lgrade;si+1.cl.lgrade=t;t2=si.average;si.average=si+1.average;si+1.average=t2;t=si.sum;si.sum=si+1.sum;si+1.sum=t; t=si.num;si.num=si+1.num;si+1.num=t;strcpy(p1,si.grade);strcpy(si.grade,si+1.grade);strcpy(si+1.grade,p1);strcpy(p2,);strcpy(,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10) 姓名setw(5)数学setw(5)英语setw(5)语文setw(15) 三门平均成绩setw(15)三门总成绩; for(int i=0;in;i+) si.average=(si.cl.egrade+si.cl.lgrade+si.cl.mgrade)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)setw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5)si.cl.lgradesetw(15)si.averagesetw(15)si.sum;void sort()int r;for(;)all_show();cout输入排名类型endl;cout1.数学成绩排名endl;cout2.英语成绩排名endl;cout3.语文成绩排名endl;cout4.平均成绩排名endl;cout5.总分排名endl;cout输入0返回上一级r;if(r=0) break;switch(r)case 1:sort1();continue;case 2:sort2();continue;case 3:sort3();continue;case 4:sort4();continue;case 5:sort5();continue;default:couterrorn;break;void statistics() float a1=0,a2=0,a3=0; float s1=0,s2=0,s3=0,s4;float m_max=s0.cl.mgrade,m_min=s0.cl.mgrade,e_max=s0.cl.egrade,e_min=s0.cl.egrade,l_max=s0.cl.lgrade,l_min=s0.cl.lgrade;float m_average,e_average,l_average,average;float mpass,epass,lpass;for(int i=0;in;i+)if(m_maxsi.cl.mgrade)m_min=si.cl.mgrade;if(e_maxsi.cl.egrade) e_min=si.cl.egrade;if(l_maxsi.cl.lgrade)l_min=si.cl.lgrade;if(si.cl.mgrade=60)+a1;if(si.cl.egrade=60)+a2;if(si.cl.lgrade=60)+a3;s1=s1+si.cl.mgrade;s2=s2+si.cl.egrade;s3=s3+si.cl.lgrade;mpass=a1/n;epass=a2/n;lpass=a3/n;m_average=s1/n;e_average=s2/n;l_average=s3/n;s4=s1+s2+s3;average=s4/(n*3);int r;for(;)coutendl;for(int i=0;i80;i+)cout*;cout1.数学成绩的信息。endl;cout2.英语成绩的信息。endl;cout3.语文成绩的信息。endl;cout4.所有同学的成绩的平均分。endl;cout0.返回上一级endl;for(int j=0;j80;j+)cout*;coutr;if(r=0)break;switch(r)case 1:cout数学的最高分为:m_max 最低分为:m_min 平均分为:m_average 及格率为:mpassendl;continue;case 2:cout英语的最高分为:e_max 最低分为:e_min 平均分为:e_average 及格率为:epassendl;continue;case 3:cout语文的最高分为:l_max 最低分为:l_min 平均分为:l_average 及格率为:lpassendl;continue;case 4:cout所有同学的成绩的平均分:averageendl;continue;default:couterror!;break;void save(

温馨提示

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

评论

0/150

提交评论