看到回帖

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:53:16
4. 研究生初试录取
问题描述
研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。
基本要求
程序运行时首先要求输入:考生姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。这些原始数据应保存到一个文件中。然后输入:录取的总分要求,各课程的最低分数要求。输出要求:过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。
测试数据
程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。
实现提示
可定义一个考生类存放有关信息和实现相应的操作。分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。
选做内容
初试合格的考生应经过复试才能决定是否录取,复试成绩合格(大于一给定分值)可以录取,否则被淘汰。而录取的顺序假设是按照专业基础课和复试成绩的平均值来确定的(因为这涉及到是计划内还是委培问题)。因此,应首先输入初试合格考生的复试成绩及复试的合格线分数,然后按上面要求排序输出并标明被淘汰的学生。

#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
typedef struct Grade{
float polity;
float math;
float foreign_lang;
float basic_subject;
}Grade, *pGrade;
class Student{
public:
char name[20];
char sid[20];
char subject[20];
char yj;
pGrade grade;

public:
Student(char n[], char s[], char sub[], char yj, pGrade &grade);
Student();
~Student(){
delete [] name;
delete [] sid;
delete [] subject;
delete grade;
}
void saveto(const char* filename);
bool validate(float sum, const pGrade grade);
void input_info();
};

void Student::saveto(const char* filename){
ofstream out;
out.open(filename, ios::ate|ios::app);

out.write(name, strlen(name));
out.write("\t", 1);
out.write(sid, strlen(sid));
out.write("