C++课程设计(研究生成绩管理系统)_第1页
C++课程设计(研究生成绩管理系统)_第2页
C++课程设计(研究生成绩管理系统)_第3页
C++课程设计(研究生成绩管理系统)_第4页
C++课程设计(研究生成绩管理系统)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、中南大学面向对象编程C+课程设计报告题 目 研究生成绩管理系统 学生姓名 哈士奇(0903150217) 指导教师 杨希 学 院 信息科学与工程学院_ 专业班级 电子信息工程1502班 二一六 年 七 月目 录1.课程设计内容32.课程设计目的43.背景知识 44.工具/准备工作45.设计步骤、方法等45.1.步骤1:相关类的定义,重载75.2.步骤2:单链表相关函数135.3.步骤3:文件操作函数的声明与定义225.4.步骤4:统计函数的声明与定义265.5.步骤5:菜单函数的书写285.6.步骤6:登录界面(密码),欢迎界面的实现316.设计结果及分析327.设计结论与感想398.对本设计

2、过程及方法、手段的改进建议399.参考文献40程序设计基础实践报告1. 课程设计内容设计一个研究生基本信息管理,实现对不同学制的研究生包括:学术硕士和工程硕士的信息管理。定义一个基本的研究生类,基本信息包括:学号、姓名、性别、年龄、课程成绩。派生出学术硕士类,增加的属性包括:专业,发表论文(名称与级别(1、2、3),可以多篇,最多3篇),论文成绩,总成绩;工程硕士增加的属性包括:领域,参与项目(名称与级别(A,B,C,),项目成绩,总成绩。计算方式如下1) 学术硕士论文成绩计算:各个级别的论文得分为:级别*10,每个学生论文最高90分;假设某研究生发表两篇论文,级别分别为1、2,那么论文成绩=

3、(10/90+20/90)*100,总成绩=课程成绩*0.7+论文成绩*0.3;2) 工程硕士项目成绩计算:每个学生只参与一项项目,各个级别得分:A级90,B级75,C级60,不参与项目得分为0;总成绩=课程成绩*0.5+项目成绩*0.5;基本功能与技术要求1、 数据文件管理功能:利用输入输出流创建新文件、打开文件、保存文件。2、计算与统计功能:采用静态数据成员与成员函数完成记录中相关数据的统计;1)能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:总数、平均值、分段信息),例如:按总成绩得分为100、9099、8089、7079、6069和不及格学生的人数,以

4、及所占百分比。2)计算每个研究生的总成绩。3、记录管理功能:利用继承与派生思想创建不同的类;记录的管理采用链表或者指针数组实现;采用抽象类、虚函数等实现对象与函数的动态关联,体现多态性。1)输入添加/插入记录:利用重载运算符“>>”完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。2)查询、显示记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字查询一个或多个相关联记录的各项信息。利用重载运算符“<<”输出个对象的信息。3)修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录

5、信息进行文件保存。4)删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。2. 课程设计目的课程设计是学习过程的重要环节。通过课程设计,能够进一步加深对C+语言基本知识的理解,提高C+语言综合编程能力与程序调试技巧,为后续课程的学习以及实际问题的解决打下良好的基础。更好的理解以下内容:算法的基本概念;使用常量、变量、运算符与表达式、程序控制结构、数组、函数、编译预处理、指针、类和对象的特征、正确使用类和对象、运算符重载、继承与派生、多态性与虚函数、输入输出流文件操作等C+语言要素进行程序设计;在一种C

6、+语言开发环境下进行C+程序设计的基本步骤。3. 背景知识 C+是近年来国内外广泛使用的现代计算机语言,它既支持基于过程的程序设计,也支持面向对象的程序设计,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活,作为计算机的基础课程,我们应熟练掌握。4. 工具/准备工作自主学习C+语言中输入输出流文件操作相关知识,温习C+语言知识,操作软件Visual Studio 2015。5. 设计步骤、方法等思路:首先,仔细阅读课程设计题目的具体要求(这点很关键),先

7、写出自己的思路,如何实现各个功能,然后就是分几个大块敲代码,每完成一个函数功能,去调试运行,如果能运行的话说明这块函数大体应该是没有问题了,可以进入下一模块的书写,否则这段代码没有通过。第一次进入:登录界面输入两类研究生相关数据退出函数exit(0)之后进入:登录界面菜单界面6.信息查找2.信息插入3.信息删除4.信息输出5.信息修改7.信息统计8.退出函数9.初始化该系统1.信息录入模块的书写构建顺序:1. 进行类的定义,基类研究生,派生类学术研究生和工程研究生,类中变量的声明,进行重载<<,>>,使之能够实现cin cout 的输入和输出。2. 进行单链表操作的函数

8、的书写,使之能够对两类派生研究生进行链表的建立、输出、插入、修改、删除等基本操作。3. 进行相关文件的操作函数的声明与定义,使程序能够对缓存中的数据读到磁盘中,也可以将磁盘中的数据读取到内存中。4. 统计函数的书写,这部分用到了静态变量和静态函数,程序可以实现基本的统计功能。5. 菜单函数的书写,这部分就是美观,简单大方,cout语句进行图形绘制即可,比较容易。6. 密码,欢迎界面的实现:使程序更加美观,也能够填写正确的用户名和口令方可进入系统。 1->2->3->4->5->6下面进行代码的说明:5.1. 步骤1:相关类的定义,重载 这部分对于整个代码来说相对比

9、较简单,运用c+对类的定义,类中数据成员的声明,重载函数的使用即可实现,这里我着重说明一下重载部分,以学术硕士的>>重载为例(其他相似),重载的过程中输出语句要尽可能的美观,而输入语句的话,我想要能够对用户的误操作进行处理,因为学号为0是退出录入,所以当用户输入0时,if判断语句判断是否为0,若为零,return input结束函数,其他比如说成绩,等级的输入都有限定,同理,if语句判断,若为真,配合goto语句回到输入数据前,重新输入,这么做的好处,用户一旦输入错误一个数据,马上会令用户重新输入(个人认为,相对于一些作品,等待用户将其全部数据输入之后,每个数据进行判断,若有一个不

10、符和要求,即不录入数据好一些),其中浮点型数据的判断比较关键(不能准确的保存数据,判断浮点型数据是否=一个固定的值需要调用fabs函数实现),还有,在输入的过程中有一些数据是通过计算得到,这样的数据我在用户输入一些必要的数据后就会进行赋值,调用计算函数计算赋值,用户一旦输入完毕,相关值便赋值给该对象的数据域。但是也是有缺点的,goto语句用的偏多,这点不利于程序的稳定性,应努力加强。源代码(部分):/重载函数(派生类:学术硕士)istream& operator>>(istream &input, academicGraduateStudent &astu)

11、cout << "学号: "input >> astu.num;if (astu.num = 0)return input;cout << "姓名:"input >> ;loopse:cout << "性别:"input >> astu.sex;/判断性别是否合法if (!(astu.sex = "男" | astu.sex = "女")cerr << "性别输入有误,请重新输入!&q

12、uot; << endl;goto loopse;cout << "年龄: "input >> astu.age;loopc:cout << "课程成绩: "input >> astu.courseScore;if (astu.courseScore < 0 | astu.courseScore>100)cerr << "课程成绩输入有误,请重新输入!" << endl;goto loopc;cout << "专业:

13、"input >> astu.major;looppn:cout << "发表论文篇数:" << endl;input >> astu.paperNumber;if (!(astu.paperNumber <= 3 && astu.paperNumber>0)cerr << "输入有误,论文篇数范围1 - 3" << endl;goto looppn;if (astu.paperNumber >= 1)cout << "

14、;论文一:"input >> astu.apaper.paper1;loopff:cout << "级别(1,2,3):"input >> astu.apaper.paperLevel1;/判断级别是否合法if (!(astu.apaper.paperLevel1 = 1 | astu.apaper.paperLevel1 = 2 | astu.apaper.paperLevel1 = 3)cerr << "输入的级别有误(级别为1 2 3),请重新输入!" << endl;goto

15、loopff;loopf:cout << "分数一:"input >> astu.apaper.paper1Score;/判断分数是否合法if (astu.apaper.paper1Score < 0 | astu.apaper.paper1Score > 90)cerr << "输入的分数一有误,请重新输入!" << endl;goto loopf;if (astu.paperNumber >= 2)cout << "论文二:"input >>

16、 astu.apaper.paper2;loopss:cout << "级别(1,2,3):"input >> astu.apaper.paperLevel2;if (!(astu.apaper.paperLevel2 = 1 | astu.apaper.paperLevel2 = 2 | astu.apaper.paperLevel2 = 3)cerr << "输入的级别有误(级别为1 2 3),请重新输入!" << endl;goto loopss;loops:cout << "分

17、数二:"input >> astu.apaper.paper2Score;if (astu.apaper.paper2Score < 0 | astu.apaper.paper2Score > 90)cerr << "输入的分数二有误,请重新输入!" << endl;goto loops;if (astu.paperNumber >= 3)cout << "论文三:"input >> astu.apaper.paper3;looptt:cout << &q

18、uot;级别(1,2,3):"input >> astu.apaper.paperLevel3;if (!(astu.apaper.paperLevel3 = 1 | astu.apaper.paperLevel3 = 2 | astu.apaper.paperLevel3 = 3)cerr << "输入的级别有误(级别为1 2 3),请重新输入!" << endl;goto looptt;loopt:cout << "分数三:"input >> astu.apaper.paper3S

19、core;if (astu.apaper.paper3Score < 0 | astu.apaper.paper3Score > 90)cerr << "输入的分数三有误,请重新输入!" << endl;goto loopt;cout << "论文成绩:"astu.paperScore = astu.calculatePaperScore();cout << astu.paperScore << endl;cout << "总成绩:"astu.sumS

20、core = astu.calculateSumScore();cout << astu.sumScore << endl;return input;class graduateStudentpublic:graduateStudent() ;/构造函数graduateStudent() ;/析构函数protected:int num;/学号string name;/姓名string sex;/性别int age;/年龄float courseScore;/课程成绩;/学术硕士class academicGraduateStudent:public graduateSt

21、udentpublic:academicGraduateStudent *paNext;/定义一个指针,链表操作academicGraduateStudent() apaper.paper1Score = 0.0;apaper.paper2Score = 0.0;apaper.paper3Score = 0.0;apaper.paperLevel1 = 0;apaper.paperLevel2 = 0;apaper.paperLevel3 = 0;/构造函数academicGraduateStudent() ;/析构函数int getNum()const return num; /获取学号st

22、ring getName()const return name; /获取姓名float calculatePaperScore();/计算论文分数float calculateSumScore();/计算总成绩/重载函数friend ostream& operator<<(ostream&, academicGraduateStudent&);friend istream& operator>>(istream&, academicGraduateStudent&);/统计函数static void statistical

23、Data(academicGraduateStudent*);protected:static float sumAcademicScore;/学术硕士全体总成绩static int countAcademicNumber;/学术硕士总人数static float averageAcademicScore;/学术硕士平均成绩static int a6;/学术硕士总分分段人数string major;/专业struct paper/发表论文string paper1;float paper1Score;int paperLevel1;string paper2;float paper2Score

24、;int paperLevel2;string paper3;float paper3Score;int paperLevel3;apaper;/apaper代表的是academicGraduateStudent的paperint paperNumber;/发表的论文数float paperScore;/论文成绩float sumScore;/总成绩;/工程硕士class engineeringGraduateStudent :public graduateStudentpublic:engineeringGraduateStudent *peNext;/定义一个指针,链表操作engineer

25、ingGraduateStudent() ;/构造函数engineeringGraduateStudent() ;/析构函数int getNum()const return num; /获取学号string getName()const return name; /获取姓名float calculateSumScore();/计算总分数 /重载函数friend ostream& operator<<(ostream&, engineeringGraduateStudent&);friend istream& operator>>(istr

26、eam&, engineeringGraduateStudent&);/统计函数static void statisticalData(engineeringGraduateStudent*);protected:static float sumEngineeringScore;/工程硕士全体总成绩static int countEngineeringNumber;/工程硕士总人数static float averageEngineeringScore;/工程硕士平均成绩static int e6;/学术硕士总分分段人数string field;/领域struct projec

27、t/参加项目string pName;/项目名称char pLevel;/项目等级A,B,Ceproject;float projectScore;/项目成绩float sumScore;/总成绩;5.2. 步骤2:单链表相关函数这一块代码的书写我的思路:因为有两类派生研究生,而文件操作需要的是告诉计算机字节数的读取,所以,建立两个单链表,分别对学术,工程类的研究生进行操作,链表的优势确实比数组好,可以说,链表就是一个动态的数组,链表的书写过程中是我又复习了一遍上学期学的知识,更加加深了头结点的关键作用(头结点中数据域是没有用的,只有指针域有用),我将两个头结点均声明为全局变量,方便函数的调用

28、使用,下面展示学术类的源代码,工程类的同理。源代码(部分):/学术类研究生普通函数的定义academicGraduateStudent* seekAcademicData(academicGraduateStudent *head)/查找某个学术研究生数据if (head->paNext = NULL)/判断缓存中是否有数据cerr << "错误代码:0x123458!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause"

29、;);exit(0);loop:cout << "学号(1), 姓名(2)?" << endl;int i = 0;cin >> i;if (!(i = 1 | i = 2)cerr << "输入有误,请重新输入!" << endl;goto loop;academicGraduateStudent *p = head->paNext;int targetNum;string targetName;switch (i)case 1:loopnu:cout << "请输

30、入学号:" << endl;cin >> targetNum;while (p->getNum() != targetNum)p = p->paNext;if (p = NULL)cerr << "没有这个数据!请重新输入!" << endl;goto loopnu;return p;break;case 2:loopna:cout << "请输入姓名:" << endl;cin >> targetName;while (p->getName(

31、) != targetName)p = p->paNext;if (p = NULL)cerr << "没有这个数据!请重新输入!" << endl;goto loopna;return p;break;default:cerr << "错误代码:0x123459!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);academicGraduateStud

32、ent* inputAcademicData(academicGraduateStudent *head)/录入学术研究生数据academicGraduateStudent *p, *q;p = q = new academicGraduateStudent;if (p = NULL | q = NULL)/申请内存失败操作cerr << "错误代码:0x123456!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");

33、exit(0);cout << "开始录入数据(学号为零时结束)" << endl;cin >> *p;cout << "录入成功!" << endl;int i = 1;while ( p->getNum() != 0 )if (i = 1)head->paNext = p;elseq->paNext = p;q = p;p = new academicGraduateStudent;if (p = NULL)/申请内存失败操作cerr << "错误代码

34、:0x123457!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);cin >> *p;p->getNum();if (p->getNum() != 0)cout << "录入成功!" << endl;elsecout << "录入结束!" << endl;i+;q->paNext = NULL;retur

35、n head;academicGraduateStudent* insertAcademicData(academicGraduateStudent *head)/插入某个学术研究生数据if (head->paNext = NULL)/判断缓存中是否有数据cerr << "错误代码:0x123458!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);academicGraduateStudent

36、*p, *q;cout << "请输入一个新的数据(学术研究生)" << endl;p = new academicGraduateStudent;if (p = NULL)cerr << "错误代码:0x123458!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);cin >> *p;cout << "录入成功!"

37、; << endl;cout << "请输入插入在哪个数据之后?" << endl;/找到要插入的人q = seekAcademicData(aHead);p->paNext = q->paNext;q->paNext = p;return head;academicGraduateStudent* delAcademicData(academicGraduateStudent *head)/删除某个学术研究生数据if (head->paNext = NULL)/判断缓存中是否有数据cerr << &q

38、uot;错误代码:0x123458!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);academicGraduateStudent *p, *q;loop:cout << "学号(1), 姓名(2)?" << endl;int i = 0;cin >> i;if (!(i = 1 | i = 2)cerr << "输入有误,请重新输入!"

39、; << endl;goto loop;p = head->paNext;q = head;int targetNum;string targetName;switch (i)case 1:loopnu:cout << "请输入学号:" << endl;cin >> targetNum;while (p->getNum() != targetNum)q = p;p = p->paNext;if (p = NULL)cerr << "没有这个数据!请重新输入!" <<

40、 endl;goto loopnu;break;case 2:loopna:cout << "请输入姓名:" << endl;cin >> targetName;while (p->getName() != targetName)q = p;p = p->paNext;if (p = NULL)cerr << "没有这个数据!请重新输入!" << endl;goto loopna;break;default:cerr << "错误代码:0x123459!&quo

41、t; << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);i = 0;loopq:cout << "是否确定删除?是(1), 否(2)" << endl;cin >> i;if (i = 1)q->paNext = p->paNext;else if (i = 2)cerr << "取消成功!" << endl;elsecout

42、<< "输入有误,请重新输入!" << endl;goto loopq;return head;void printAcademicData(academicGraduateStudent *head)/输出学术研究生数据academicGraduateStudent *p = head->paNext;if (head->paNext = NULL)cerr << "错误代码:0x156456(链表中无数据)" << endl;cerr << "请联系管理员处理!&quo

43、t; << endl;system("pause");exit(0);while (p != NULL)cout << *p << endl;p = p->paNext;return;void modifyAcademicData()/修改学术研究生的数据academicGraduateStudent *p, *q;p = seekAcademicData(aHead);q = new academicGraduateStudent;q->paNext = p->paNext;if (q = NULL)cerr <

44、< "错误代码0x156112" << endl;cerr << "请联系管理员解决!" << endl;system("pause");exit(0);cin >> *q;int i = 0;loop:cout << "是否确定修改 是(1), 否(2)?" << endl;cin >> i;if (i = 1)*p = *q;cout << "修改成功" << endl;else

45、 if (i = 2)cout << "取消成功!" << endl;delete q;elsecerr << "输入有误, 请重新输入!" << endl;goto loop;return;5.3. 步骤3:文件操作函数的声明与定义文件操作是一个程序很关键的部分,数据是不可能长期的保存在缓存中的,所以我们需要对缓存中的数据存盘操作,这部分是13章的内容,相对来说比较繁琐(因为是自学的),需要注意的细节比较多(二进制文件,文本文件操作的不同,打开文件,关闭文件等等),但是只是一些细节需要注意,思维上的难度并

46、不是很大,严格按照文件操作的步骤即可,从内存中将文件读到磁盘问题相对简单,而将磁盘中的数据读到内存,不光要读,读完还需操作,所以,这里我的思路是建立一个单链表,这个链表不是用户输入数据,而是读取文件输入数据(思维一样的),之后内存中有了数据,就可以进行相关的操作了,之后保存即可。源代码(部分):/保存数据到磁盘void saveAcademicStudentData(academicGraduateStudent *head)/保存学术研究生数据到磁盘/建立一个txt文本文件academicGraduateStudent *p = head->paNext;ofstream outfil

47、e("AcademicStudentData.txt", ios:out);if ( !outfile )cerr << "文件打开失败!" << endl;cerr << "错误代码0x125158" << endl;cerr << "请联系管理员处理" << endl;system("pause");exit(0);while (p != NULL)outfile << *p;p = p->paNext

48、;outfile.close();/建立一个dat二进制文件,方便以后读取p = head->paNext;/重新赋值ofstream outfiled("AcademicStudentData.dat", ios:out|ios:binary);if (!outfiled)cerr << "文件打开失败!" << endl;cerr << "错误代码0x125158" << endl;cerr << "请联系管理员处理" << endl

49、;system("pause");exit(0);while (p != NULL)outfiled.write(char*)p, sizeof(*p);p = p->paNext;outfiled.close();return;/读取磁盘数据到内存academicGraduateStudent* getAcademicStudentData(academicGraduateStudent *head)/获取磁盘中学术研究生数据到缓存loop:ifstream infile("AcademicStudentData.dat", ios:in | i

50、os:binary);if (!infile)cerr << "欢迎您第一次使用该系统,您首先要做的录入数据!" << endl;cerr << "警告:如果您不是第一次使用该系统,错误代码0x125158(请联系管理员处理)" << endl;firstInputData();saveStudentData();exit(0);goto loop;infile.seekg(0, ios:beg);/重置指针的位置academicGraduateStudent *p, *q;p = q = new acad

51、emicGraduateStudent;if (p = NULL | q = NULL)/申请内存失败操作cerr << "错误代码:0x123456!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);infile.read(char*)p, sizeof(*p);int i = 1;while (!infile.eof()if (i = 1)head->paNext = p;elseq->

52、paNext = p;q = p;p = new academicGraduateStudent;if (p = NULL)/申请内存失败操作cerr << "错误代码:0x123457!" << endl;cerr << "异常错误!(请上报管理员处理)" << endl;system("pause");exit(0);infile.read(char*)p, sizeof(*p);i+;q->paNext = NULL;infile.close();return head;/追

53、加函数void addAcademicStudentData(academicGraduateStudent *head)/追加学术研究生数据/建立一个txt.dat文件academicGraduateStudent *p = head->paNext;academicGraduateStudent *q = NULL;if (p = NULL)cerr << "错误代码0x1566(链表 缓存中无数据)" << endl;cerr << "请联系管理员处理!" << endl;system(&quo

54、t;pause");exit(0);ofstream outfile("AcademicStudentData.txt", ios:app);if (!outfile)cerr << "文件打开失败!" << endl;cerr << "错误代码0x125158" << endl;cerr << "请联系管理员处理" << endl;system("pause");exit(0);ofstream outfiled

55、("AcademicStudentData.dat", ios:app);if (!outfiled)cerr << "文件打开失败!" << endl;cerr << "错误代码0x125158" << endl;cerr << "请联系管理员处理" << endl;system("pause");exit(0);/开始寻找链表末尾while (p != NULL)q = p;p = p->paNext;/寻找完毕c

56、out << "开始添加!" << endl;q = inputAcademicData(q);while (q != NULL)outfile << *q;outfiled.write(char*)q, sizeof(*q);q = q->paNext;cout << "添加成功" << endl;outfile.close();outfiled.close();return;5.4. 步骤4:统计函数的声明与定义 这部分运用静态数据变量和静态函数的相关知识,因为比如说总人数等数据不需要

57、再每一个对象中均声明定义,这部分完成的较快,将头结点当做实参传给函数形参,对每一个节点的数据进行判断,最后进行输出统计出的结果,cout语句,注意美观,整洁,细节。源代码(部分):/学术类静态变量赋初值float academicGraduateStudent:sumAcademicScore = 0.0;int academicGraduateStudent:countAcademicNumber = 0;float academicGraduateStudent:averageAcademicScore = 0.0;int academicGraduateStudent:a6 = 0,0,

58、0,0,0,0 ;/统计函数void academicGraduateStudent:statisticalData(academicGraduateStudent *head)if (head->paNext = NULL)cerr << "错误0x456121" << endl;cerr << "请联系管理员解决(链表中无数据)" << endl;system("pause");exit(0);academicGraduateStudent *p = head->paNe

59、xt;while (p != NULL)countAcademicNumber+;sumAcademicScore = (float)(sumAcademicScore + p->sumScore);if (fabs(p->sumScore - 100) < 0.00001)/注意说明a0+;else if (p->sumScore >= 90.0000 && p->sumScore <= 99.0000)a1+;else if (p->sumScore >= 80.0000 && p->sumScor

60、e <= 89.0000)a2+;else if (p->sumScore >= 70.0000 && p->sumScore <= 79.0000)a3+;else if (p->sumScore >= 60.0000 && p->sumScore <= 69.0000)a4+;else if (p->sumScore < 60.0000)a5+;p = p->paNext;averageAcademicScore = (float)( (sumAcademicScore)*1.0 / countAcadem

温馨提示

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

评论

0/150

提交评论