1、C+学生成绩统计管理系统范本模板湖南科技学院课程设计报告课程名称:计算机高级语言(C+)课程设计课程设计题目:学生通讯管理系统系:数学与计算科学系专 业:信息与计算科学年级、班:信计0801姓 名:谭鄱仑学 号:200905002109指导教师:牛志毅职 称:讲师2010年12月课程实验报告-3一、需求分析-3二、概要设计-3 三、程序实现思路-7四、设计总结-7五、参考文献-7六、源代码-8七、运行情况16C+语言程序设计报告一、需求分析用C+编写下面程序学生成绩统计管理系统(*) 要求实现如下功能: 成绩的输入(学号、姓名、英语、数学、C+语言)。 成绩统计(各科平均成绩、各科成绩“优秀、
2、“良好”、“中等”、“及格”、“不及格的人数及其所占比例). 总成绩统计(学生的总成绩、平均成绩及成绩排名)。 成绩的统计结果显示。 学生数据的添加、修改、与删除。 学生数据的读取与存储。二、概要设计主要数据定义以及各程序模块的功能: Student类中:class Studentprivate: int id;/学号 string name;/姓名 double score3; int x;/指示是否存储了数据 double all;/总成绩 int rank;/名次 string dengji;/等级public: Student();/构造函数 void SetStudentID(int
3、);/输入学生学号 int StudentID();/返回学生学号 void SetStudentName(string str);/输入学生姓名 string StudentName();/返回学生姓名 void SetStudentScore(double y,double s,double c);/输入学生成绩 double StudentYscore();/返回学生英语成绩 double StudentSscore();/返回学生数序成绩 double StudentCscore();/返回学生C+成绩 void SetStudentX(int n);/给判定学生数据存在与否的X赋值
4、void Getall();/计算学生总成绩 void SetRank();/给学生名次值加1 int Rank();/返回学生名次值 int StudentX();/返回判定X的值,判定是否修改 void RankClear();/给学生的名次赋值为1 void Setdengji(string dengji);/输入等级 double All();/返回学生总成绩 string StudentDengji();/返回学生等级值;Studentifo类中:class Studentifoprivate: int num;/学生个数 Student stu;/定义指向存储学生类的指针publi
5、c: Studentifo(int n);/构造函数 void LoadID(int n);/输入学生学号 void LoadName(int ,string name);/输入学生姓名 void LoadScore(int ,double,double,double);/输入学生各科成绩 void Setifo();/插入学生数据 void Putifo();/输出所有学生数据 void Clear();/清除所有学生数据 void PutID();/输出指定学生数据 void ClearID();/删除指定学生数据 void MakeRank();/给所有学生排名 void ReSetif
6、o();/修改指定学生数据 void ClearRank();/给指定学生的名次值赋为1 void MakeAll();/计算各个学生的总成绩 void PutifoRank();/按名次输出所有学生数据 int ID(int n);/返回学生学号 double Yscore(int);/返回学生英语成绩 double Sscore(int);/返回学生数学成绩 double Cscore(int);/返回学生C+成绩 double StudentAll(int n);/返回学生总成绩 int StudentRank(int n);/返回学生名次 string Name(int);/返回学生名
7、次 int X(int);/指定X值,确定是否有存储数据 string Dengji(int n);/返回学生等级 void Numadd();/num值加1 void Xfix(int);/将指定学生的X指示值赋为1Studentifo();/析构函数释放new创建的空间;类外:void DoMenu(int n,Studentifo*t);/将类里的各个函数组合起来实现各个功能,按指定数字执行void Load(Studentifo S);/从文件中载入学生信息void Save(Studentifo S);/将学生信息保存到文件void ShowTip(); /显示操作提示void Sh
8、owMenu(); /显示菜单主函数的程序流程图 N Y 三 程序实现思路本程序通过Studentifo类开辟一个Student的类数组用已储存学生数据。通过Studentifo类的公有函数和Student的公有函数进行关联,对Student类里的私有学生数据进行操作,达到输入,处理,输出学生数据的功能。同时利用文件输入输出流在项目文件夹中创建一个date。txt文档进行学生数据的保存与读取。四 设计总结(1)摆正心态,不心浮气躁 刚拿到题目,难免会觉得特别迷茫,无从下手,这时如果心浮气躁则会更加的觉得困难重重。但当我摆正心态,静小心来慢慢思考的时候,一个个的思路不断的的冒出,头脑中的想法远比
9、实践过的多。此时,困难已不是从何下手,而是如何下手会是程序更趋完美。(2)一鼓作气,个个击破一旦开始了编程后,就要一鼓作气的继续下去。选择个个击破,然后将所有的程序在组合起来,很快主程序的雏形就能展现出来,接下来的就只是一点点的修改关联是的小错误了.用不了多久任务即可完成,特有成就感。但是如果断断续续的则会在每次编的时候被冗杂而繁多的定义弄糊涂,从而没有心情继续下去.(3)有目的地修改、完善运行时会出现一些错误,但我发现其实里面的参数并不复杂,只要跟着那个error的提示,一个一个的改下去,其实很简单的。结果事实也是如此,看完书后,只用了一个小时多一点,102个错误全部搞定了。错误几乎为以下三
10、类:1.冒号,分号等符号打错了;2.大小写等造成的对应问题;3.变量的不完全修改。改完以后,在执行时我发现界面不好看,于是我又将主界面略加修改了些。看上去美观了不少。再运行功能,前四个都能顺利运行,但对百分比饼状图我傻眼了。不管我输入数据与否,输入了什么数据,结果都是一样的,相当离谱。我又糊涂了,搞不清是怎么回事。于是,又去问同学,在他们的帮助下,成功解决这个问题,在此真要好好谢谢他们!终于大功告成!欣慰在这次实践中,我不仅弥补了自己在C+课上所落下的内容,尤其是指针那块部分,虽然现在概念搞的还不是很懂,但看见程序是能够理解的.这次C+实践是给我们这一学期来所学知识的一个总复习,总的实践。它让
11、我们把所知道的知识点运用的更好,把不知道的知识点搞得明白了.实践出真知,通过这次实践,我也系统的把课本好好的回顾了下.猛然觉得,C+二级考试也有些把握了。五 参考文献谭浩强。 C+程序设计。 清华大学出版社, 2007。5六 源程序main.cpp/* 课程设计题目:学生信息管理系统 班级:0901 学号:200905002109 姓名:谭鄱仑 */#include”student。h”int main() int i=0; char ok; Studentifo stuifo; Studentifo *ifo=&stuifo; ShowMenu(); couti; system(”cls”)
12、; ShowMenu(); DoMenu(i,ifo); ShowTip(); if(flag) coutok; if(ok=Yok=y) ifo-MakeAll(); ifo-ClearRank(); ifoMakeRank(); Save(ifo); cout”数据已保存.。.按任意键安全退出”; else cout已安全退出。.。按任意键返回”;Student.hifndef STUDENT_H_INCLUDEDdefine STUDENT_H_INCLUDED#includeinclude#includestringincludefstreamincludesstreaminclude
13、iomanipusing namespace std;class Studentprivate: int id;/学号 string name;/姓名 double score3; int x;/指示是否存储了数据 double all;/总成绩 int rank;/名次 string dengji;/等级public: Student();/构造函数 void SetStudentID(int);/输入学生学号 int StudentID();/返回学生学号 void SetStudentName(string str);/输入学生姓名 string StudentName();/返回学生姓
14、名 void SetStudentScore(double y,double s,double c);/输入学生成绩 double StudentYscore();/返回学生英语成绩 double StudentSscore();/返回学生数序成绩 double StudentCscore();/返回学生C+成绩 void SetStudentX(int n);/给判定学生数据存在与否的X赋值 void Getall();/计算学生总成绩 void SetRank();/给学生名次值加1 int Rank();/返回学生名次值 int StudentX();/返回判定X的值,判定是否修改 vo
15、id RankClear();/给学生的名次赋值为1 void Setdengji(string dengji);/输入等级 double All();/返回学生总成绩 string StudentDengji();/返回学生等级值;class Studentifoprivate: int num;/学生个数 Student stu;/定义指向存储学生类的指针public: Studentifo(int n);/构造函数 void LoadID(int n);/输入学生学号 void LoadName(int ,string name);/输入学生姓名 void LoadScore(int ,
16、double,double,double);/输入学生各科成绩 void Setifo();/插入学生数据 void Putifo();/输出所有学生数据 void Clear();/清除所有学生数据 void PutID();/输出指定学生数据 void ClearID();/删除指定学生数据 void MakeRank();/给所有学生排名 void ReSetifo();/修改指定学生数据 void ClearRank();/给指定学生的名次值赋为1 void MakeAll();/计算各个学生的总成绩 void PutifoRank();/按名次输出所有学生数据 int ID(int
17、n);/返回学生学号 double Yscore(int);/返回学生英语成绩 double Sscore(int);/返回学生数学成绩 double Cscore(int);/返回学生C+成绩 double StudentAll(int n);/返回学生总成绩 int StudentRank(int n);/返回学生名次 string Name(int);/返回学生名次 int X(int);/指定X值,确定是否有存储数据 string Dengji(int n);/返回学生等级 void Numadd();/num值加1 void Xfix(int);/将指定学生的X指示值赋为1 Stud
18、entifo();/析构函数释放new创建的空间;void DoMenu(int n,Studentifot);/将类里的各个函数组合起来实现各个功能,按指定数字执行void Load(Studentifo S);/从文件中载入学生信息void Save(Studentifo S);/将学生信息保存到文件void ShowTip(); /显示操作提示void ShowMenu(); /显示菜单#includestudentifo。hendif / STUDENT_H_INCLUDEDStudentifo.h#ifndef STUDENTIFO_H_INCLUDEDdefine STUDENTI
19、FO_H_INCLUDEDbool flag=false ;/数据是否修改过的标志Student:Student() id=0; name=”; score0=0; score1=0; score2=0; x=2; all=0; rank=1; dengji=;void Student::SetStudentID(int n) id=n;void Student::SetStudentName(string str) if(str=”0) string str1; coutstr1; this-name=str1; else thisname=str;void Student::SetStud
20、entScore(double y,double s,double c) if(y!=0|s!=0c!=0) score0=y; score1=s; score2=c; else double a,b,c; couta; coutb; coutc; score0=a; score1=b; score2=c; int Student::StudentID() return id;string Student::StudentName() return name;double Student:StudentYscore() return score0;double Student::Student
21、Sscore() return score1;double Student::StudentCscore() return score2;void Student::SetStudentX(int n) x=n;int Student:StudentX() return x;void Student:Getall() this-all=0; this-all=score0+score1+score2; double n; n=all/3; if(0=nndengji=”不及格”; else if(60dengji=及格”; else if(70=n&n80) thisdengji=”中等”;
22、else if(80dengji=”优秀;double Student::All() return all;void Student::SetRank() rank+=1;int Student:Rank() return rank;void Student::RankClear() rank=1;void Student::Setdengji(string dengji) this-dengji=dengji;string Student::StudentDengji() return dengji;Studentifo::Studentifo(int n=100) num=0; stu=n
23、ew Studentn;Studentifo::Studentifo() delete stu;void Studentifo::Numadd() num+=1;void Studentifo:LoadID(int n) stun.SetStudentID(n);void Studentifo:LoadName(int n,string name) stun.SetStudentName(name);void Studentifo::LoadScore(int n,double y,double s,double c) stun。SetStudentScore(y,s,c);void Stud
24、entifo::Setifo() int n; cout”输入学号:; cinn; if(stun.StudentX()=1|n=0) cout该学号已有或者学号信息错误”endl; else stun。SetStudentID(n); stun.SetStudentName(”0); stun.SetStudentScore(0,0,0); stun。SetStudentX(1); num+; coutendl; void Studentifo:Putifo() int i,s1=0,y1=0,c1=0,y2=0,s2=0,c2=0,y3=0,s3=0,c3=0,y4=0,s4=0,c4=0
25、,y5=0,s5=0,c5=0; double Y=0,S=0,C=0; if(num=0) cout”没有学生数据endl; else cout *学生综合信息*”endl; cout” | 学号”t”姓名”t”英语t”数学”t”C+”t”总成绩”t”名次t等级 |”endl; cout |*|”endl; for(i=1; i=100; i+) if(stui.StudentX()=1) Y+=stui。StudentYscore(); S+=stui。StudentSscore(); C+=stui.StudentCscore(); cout” stui。StudentID()t; coutstui。StudentName()t; coutstui。StudentYscore()t; coutstui。StudentSscore()t; coutstui。StudentCscore()t; stui。Getall(); coutstui。All()t; coutstui.Rank()t; coutstui.StudentDengji(); coutt|”endl; cout” *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1