c++ 课程设计 研究生初试录取

研究生初试录取

问题描述

研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。

基本要求

程序运行时首先要求输入:考生姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。这些原始数据应保存到一个文件中。

然后输入:录取的总分要求,各课程的最低分数要求。

输出要求:过线考生的姓名,准考证号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。

测试数据

程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。

实现提示

可定义一个考生类存放有关信息和实现相应的操作。分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。

话不多说,上代码:

#include<iostream>
#include<stdio.h>
#include<iomanip>
#include<cstring>
#include<algorithm>
using namespace std;
class candidate            //考生类
{
	friend class scoreline;   //将scoreline声明为友元类
private:
    string name;         //考生姓名
    string number;    //准考证号
    string professional; //报考专业
    string isgraduate;   //是否是应届生
    int policital;        //政治分数
    int math;             //数学分数
    int english;           //英语分数
    int majorclass;        //专业课
    int all;                 //总分
    public:
    int getall()
    {
    	return all;           //获取总分
    }
    void print();        //打印数据
    void input1(string name,string number,string professional,string isgraduate,int policital,int math,int english,int majorclass);
    void zero();            //将类元素置零
    void format();          //格式输出
};
void candidate::print()     //打印
{
    cout<<"考生姓名"<<name<<"准考证号"<<number<<"报考专业"<<professional<<"是否为应届生"<<isgraduate<<"政治"<<policital<<"数学"<<math<<"英语"<<english<<"专业课"<<majorclass<<"总分"<<all<<endl;
}
void candidate::input1(string name,string number,string professional,string isgraduate,int policital,int math,int english,int majorclass)
{
    this->name=name;
    this->number=number;
    this->professional=professional;
    this->isgraduate=isgraduate;
    this->policital=policital;
    this->math=math;
    this->english=english;
    this->majorclass=majorclass;
    this->all=policital+math+english+majorclass;
}
class scoreline   //定义分数线类
{
    private:
    int policeline;        //政治分数线
    int mathline;      //数学分数线
    int englishline;   //英语分数线
    int majorline;       //专业课分数线
    int allline;       //总分数线
    public:
    int judge(candidate a);               //判断是否符合要求
    void input2(int policeline,int mathline,int englishline,int majorline,int alline);  //将输入的值赋值到类成员
};
int scoreline::judge(candidate a)      //判断是否符合要求(考生类的引用)
{
	if(a.all>=allline&&a.policital>=policeline&&a.math>=mathline&&a.english>=englishline&&a.majorclass>=majorline)
	{
		return 1;                  //符合要求返回1
	}
	return 0;                  //否则返回0
}
void scoreline::input2(int policeline,int mathline,int englishline,int majorline,int allline)    //输入分数线类数据
{
	this->policeline=policeline;
	this->mathline=mathline;
	this->englishline=englishline;
	this->majorline=majorline;
	this->allline=allline;
}
void candidate::zero()          //将该考生成绩置零
{
	this->policital=0;
	this->math=0;
	this->english=0;
	this->majorclass=0;
	this->all=0;
}
void candidate::format()
{
    cout<<name<<setw(14)<<number<<setw(12)<<professional<<setw(12)<<isgraduate;
    cout<<setw(6)<<policital<<setw(5)<<math<<setw(5)<<english<<setw(5)<<majorclass<<setw(6)<<all<<setw(3)<<endl;
}
bool cmp(candidate a,candidate b)          //重写sort()的cmp参数
{
	return a.getall()>b.getall();     //按总成绩降序排列
}
int main()
{
    string name;       //学生姓名
    string number;      //准考证号
    string professional;  //报考专业
    string isgraduate;   //是否为应届生
    int policital;      //政治
    int math;         //数学
    int english;         //英语
    int majorclass;        //专业课
    int all;          //总分
    freopen("D://in.txt","r",stdin);        //打开in.txt文件
    freopen("D:\\out.txt","w",stdout); //输出重定向,输出数据将保存在D盘根目录下的out.txt文件中
	cout<<"请输入考生姓名、准考证号、报考专业、是否为应届生、政治、数学、英语、专业课成绩"<<endl; 
    candidate cand[20];          //创建对象数组并分配空间
    for(int i=1;i<=10;i++)       //遍历十个数据 
    {
    	cin>>name>>number>>professional>>isgraduate>>policital>>math>>english>>majorclass;
        cand[i].input1(name,number,professional,isgraduate,policital,math,english,majorclass);
        cand[i].print();
    }
    int policeline;
	int mathline;
	int englishline;
	int majorline;
	int allline;
	cout<<"请输入政治分数线、数学分数线、英语分数线、专业课分数线、以及总分数线"<<endl;
	freopen("D://input.txt","r",stdin);
	cin>>policeline>>mathline>>englishline>>majorline>>allline;       //输入各科分数线
	scoreline line;                                               //定义分数线类变量line
	line.input2(policeline,mathline,englishline,majorline,allline);
	int fitness=0;              //定义合格人数
	for(int i=1;i<=10;i++)
	{
		if(line.judge(cand[i]))
		{
			fitness++;    
		}
		else
		{
			cand[i].zero();    //将不合格的人所有成绩置零,方便排序
		}
	}
	line.input2(policeline,mathline,english,majorline,allline);     //输入line数据
	sort(cand+1,cand+11,cmp);                                     //对数据按总分排序(降序) 
	cout<<"一共有10人报考,有"<<fitness<<"人达到最低分数要求"<<endl;
	cout<<"考生姓名"<<"  准考证号     "<<"报考专业"<<"  是否为应届生"<<" 政治"<<" 数学"<<" 英语"<<" 专业课"<<" 总分"<<endl;
	for(int i=1;i<=fitness;i++)
	{
		cand[i].format();   //格式输出
	}
}
以下in.txt放在D盘根目录下:
 
"刘一" "20162398" "信息工程" "是" 23 45 67 88
"邓二" "20153849" "信息计算" "否" 60 99 60 98
"张三" "20163834" "计算机"  "是" 43 45 12 15
"李四" "20163487" "大数据"  "是" 45 100 65 87
"王五" "20163874" "云计算"  "是" 40 65 40 65
"赵六" "20153288" "计算机"  "否" 34 65 23 32
"田七" "20152389" "软件"    "否" 56 90 45 100
"段八" "20153844" "动物科学" "否" 23 64 23 90
"于九" "20163984" "信息管理"   "是" 78 78 60 120
"付十" "20162387" "会计"  "是"  66 107 45 121

以下input.txt放在D盘根目录下:

 
40 65 40 65 310

以下为D盘根目录下out.txt文件输出结果:

请输入考生姓名、准考证号、报考专业、是否为应届生、政治、数学、英语、专业课成绩
考生姓名"刘一"准考证号"20162398"报考专业"信息工程"是否为应届生"是"政治23数学45英语67专业课88总分223
考生姓名"邓二"准考证号"20153849"报考专业"信息计算"是否为应届生"否"政治60数学99英语60专业课98总分317
考生姓名"张三"准考证号"20163834"报考专业"计算机"是否为应届生"是"政治43数学45英语12专业课15总分115
考生姓名"李四"准考证号"20163487"报考专业"大数据"是否为应届生"是"政治45数学100英语65专业课87总分297
考生姓名"王五"准考证号"20163874"报考专业"云计算"是否为应届生"是"政治40数学65英语40专业课65总分210
考生姓名"赵六"准考证号"20153288"报考专业"计算机"是否为应届生"否"政治34数学65英语23专业课32总分154
考生姓名"田七"准考证号"20152389"报考专业"软件"是否为应届生"否"政治56数学90英语45专业课100总分291
考生姓名"段八"准考证号"20153844"报考专业"动物科学"是否为应届生"否"政治23数学64英语23专业课90总分200
考生姓名"于九"准考证号"20163984"报考专业"信息管理"是否为应届生"是"政治78数学78英语60专业课120总分336
考生姓名"付十"准考证号"20162387"报考专业"会计"是否为应届生"是"政治66数学107英语45专业课121总分339
请输入政治分数线、数学分数线、英语分数线、专业课分数线、以及总分数线
一共有10人报考,有3人达到最低分数要求
考生姓名  准考证号     报考专业  是否为应届生 政治 数学 英语 专业课 总分
"付十"    "20162387"      "会计"        "是"    66  107   45  121   339
"于九"    "20163984"  "信息管理"        "是"    78   78   60  120   336
"邓二"    "20153849"  "信息计算"        "否"    60   99   60   98   317

欢迎指教!!!

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值