学生成绩标准管理系统C语言专业课程设计汇报文书.doc

上传人:小飞机 文档编号:1628159 上传时间:2022-12-12 格式:DOC 页数:39 大小:452KB
返回 下载 相关 举报
学生成绩标准管理系统C语言专业课程设计汇报文书.doc_第1页
第1页 / 共39页
学生成绩标准管理系统C语言专业课程设计汇报文书.doc_第2页
第2页 / 共39页
学生成绩标准管理系统C语言专业课程设计汇报文书.doc_第3页
第3页 / 共39页
学生成绩标准管理系统C语言专业课程设计汇报文书.doc_第4页
第4页 / 共39页
学生成绩标准管理系统C语言专业课程设计汇报文书.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《学生成绩标准管理系统C语言专业课程设计汇报文书.doc》由会员分享,可在线阅读,更多相关《学生成绩标准管理系统C语言专业课程设计汇报文书.doc(39页珍藏版)》请在三一办公上搜索。

1、学生成绩标准管理系统C语言专业课程设计汇报文书 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 学生成绩系统 姓 名: 学 号: 专业班级: 系 (院): 设计时间: 设计地点:计算机工程学院机房、教室、学生宿舍、图书馆 成绩:指导教师评语: 签名: 年 月 日1课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完C+程序设计课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C+课程的基本知识的理解和掌握;(2)掌握C+编程和程序调试的基本技能;(3)利用C+进行简单软件设计的基本思路和方法;(4)提高运用C+解决实际问题的能力

2、;(5)掌握书写程序设计说明文档的能力。本次课程设计利用C+程序设计课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。2课程设计任务与要求:要求:1) 设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括模块说明、模块结构图和系统流程图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 源程序代码及设计成果:完整源程序清单和设计成果;5)总结: 调试分析过程描述:包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等

3、)包括课程设计过程中的学习体会与收获、对C+和本次课程设计的认识等内容.;任务:设计一个学生成绩排名系统,该系统的主要功能如下:1) 具备对成绩的管理功能(添加、删除、排序)2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)3) 具备按学号、姓名、或课程名查询成绩的功能。4)学生成绩应该保存在文件中。备注:成绩记录以下信息:班级,学号,姓名,课程名,成绩(百分制)。可以用能表示学生成绩的结构体数组存储数据。3课程设计说明书概要设计一、模块说明在本次程序设计中我设计了7个大模块,分别是(1)浏览学生的成绩记录。(2)添加学生的成绩记录。(3)删除学生的成绩记录。(4)对学生成绩进行排

4、序。(5)查询学生的成绩。(6)对成绩的统计。(7)保存数据。8个小模块,分别是(1) 按学号查询(2) 按姓名查询(3) 按课程名查询(4) 按数学成绩排名(5) 按英语成绩排名(6) 按语文成绩排名(7) 按平均成绩排名(8) 按总分排名。其中按学号查询,按姓名查询,按课程名查询这三个小模块作为查询学生成绩的子模块。按数学成绩排名,按英语成绩排名,按语文成绩排名,按平均成绩排名,按总分排名这五个小模块作为对学生成绩进行排序的子模块。在对成绩的统计中所有不同的统计都放在其中,利用switch实现选择输出。在整个过程中利用for语句进行循坏,利用switch语句实现用户的选择,break控制程

5、序的返回。二、模块结构图按学号查询按姓名查询按课程名查询按数学成绩排名按英语成绩排名按语文成绩排名按平均成绩排名按总分排名学生成绩排名系统浏览学生成绩记录添加学生记录删除学生的成绩记录对学生成绩进行排序查询学生的成绩对成绩的统计保存数据开始用户进行选择输入rr=1r=4r=3r=2r=6r=5r=7浏览学生成绩记录添加学生记录对学生成绩进行排序删除学生的成绩记录对成绩的统计查询学生的成绩保存数据r=0输入rr=1r=2r=3r=4r=5按数学成绩排名按英语成绩排名按语文成绩排名按平均成绩排名按总分排名输入rr=1r=2r=3r=0r=0按学号查询按姓名查询按课程名查询结束三、系统流程图详细设计

6、各功能模块设计思路及流程图:(1) 浏览学生成绩记录设计思路及流程图。简单的用个for语句依次输出数据。并用setw()控制字符数。开始m=0mn学生人数输出学生的信息m+结束yn(2)添加学生成绩记录设计思路及流程图。开始m=n输入学生的成绩信息n+sm.num(输入的学号)=0否结束是用一个for语句进行从第n(现有学生人数)开始输入学生各成绩的信息,同时每输入一个学生的成绩信息,n将加一,由此循环,输入0时结束。(3)删除学生的成绩记录设计思路及流程图。输入一个数,如果这个数与所给数据库里某一学号相等,就把从这个学号的下一个学号开始,把之后的每个学生数据都向上一个学生数据覆盖掉,同时,学

7、生人数减1,当输入a时结束。i+jn-1strcpy(sj.name,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

8、的数据交换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)查询学生成绩的设计思路与流程图在这个模块,我设计了三个根据不

9、同的类型查询,方法类似,这里举一个通过学号来查询。开始输入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 e

10、grade; 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)

11、保存数据-*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; cinsm.gradesm.namesm.cl.mgradesm.cl.egradesm.cl.lgrade; n+; void all_show()int m;for(int i=0;i80;i+)cout*;coutendl;coutsetiosfl

12、ags(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)sm.namesetw(5)sm.cl.mgr

13、adesetw(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.name,sj+1.name);strcpy(sj.grade,sj+1.grade);

14、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.

15、egrade+sm.cl.lgrade+sm.cl.mgrade;coutsetiosflags(ios:left)setw(15)sm.numsetw(10)sm.gradesetw(10)sm.namesetw(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)

16、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) si.namesetw(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输入要查询学生成绩的姓名,

17、输入0时返回上一级a;if(a=0)break;int bool=0;for(int i=0;in;i+)if(a=si.name)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) si.namesetw(5)si.cl.mgradesetw(5)si.cl.egradesetw(5) si.cl.lgradeendl;bool=1; if(b

18、ool=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) si.namesetw(5)si.cl.mgradeendl;bool=1;if(a=英语)co

19、utsetiosflags(ios:left)setw(15)学号setw(10)班级setw(10)姓名setw(5)英语endl; coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10) si.namesetw(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.gr

20、adesetw(10) si.namesetw(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;b

21、reak;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.lgrad

22、e;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,si.name);strcpy(si.name,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(io

23、s: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)si.namesetw(5)si.cl.mgrad

24、esetw(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.

25、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,si.name

26、);strcpy(si.name,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(io

27、s:left)setw(15)si.numsetw(10)si.gradesetw(10)si.namesetw(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.mgr

28、ade=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

29、);strcpy(si.grade,si+1.grade);strcpy(si+1.grade,p1);strcpy(p2,si.name);strcpy(si.name,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.mgrad

30、e)/3;si.sum=si.cl.egrade+si.cl.lgrade+si.cl.mgrade;coutsetiosflags(ios:left)setw(15)si.numsetw(10)si.gradesetw(10)si.namesetw(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;

31、 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=

32、sj.num;sj.num=smin.num;smin.num=t;strcpy(p1,sj.grade);strcpy(sj.grade,smin.grade);strcpy(smin.grade,p1);strcpy(p2,sj.name);strcpy(sj.name,smin.name);strcpy(smin.name,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+) s

33、i.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)si.namesetw(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

34、; 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,si.name);strcpy(si.name,si+1.name);strcpy(si+1.name,p2); coutsetiosflags(ios:left)se

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号