//模拟高考平行志愿投档
//要求:
/*
1.在输入每个考生的成绩、志愿,学校的招生计划情况下能完成模拟平行志愿方式的高考志愿投档,
后输出每个学生的投档学校。如果考生不能投到某个学校,则输出“NO”
说明:
1.成绩总分由语文、数学、英语和综合四门课程组成,成绩排名先按总分,再按语文、数学、英语和
综合进行。
2.学生志愿可选择3个学校,如果学校名称输错则该考生无法投档。
3.平行志愿投档规则为:平行志愿按分数优先原则投档。即首先将同一科类批次线上的“自由可投”的
考生按投档成绩从高分到低分排序投档,当遇到多名考生特征成绩相同时,依次按语、数、外、综合科
目的成绩从高分到低分排序投档;对单个考生投档时,根据考生填报的平行志愿中的院校志愿顺序,投
档到排序相对在前且有计划余额的院校。*/
#include<stdio.h>
#include<math.h>
#include<String.h>
typedef struct Record{ //成绩表结构体定义
int S_numble; //学生准考证号
float S_literature; //语文
float S_math; //数学
float S_english; //英语
float S_synthesize; //综合
float S_all; //总分
int S_first; //第一平行志愿
int S_second; //第二平行志愿
int S_third; //第三平行志愿
char S_enroll; //=1被录取=0没录取
}Srecord;
typedef struct Enroll{ //招生表结构体定义
int N_numble; //招生人数
float N_grade; //最低分数线
int code; //学校代号
}E_college;
void Rank( Record srt[5],int rry[],int h)
{ int i,j,temp;
for(i=1;i<h;i++)
{
for(j=i+1;j<h+1;j++)
{
if(srt[rry[i]].S_all<srt[rry[j]].S_all)
{
temp=rry[i];
rry[i]=rry[j];
rry[j]=temp;
}
else if(srt[rry[i]].S_all==srt[rry[j]].S_all)
{
if(srt[rry[i]].S_literature<srt[rry[j]].S_literature) //总分相同,
{
temp=rry[i];
rry[i]=rry[j];
rry[j]=temp;
break;
}
else if(srt[rry[i]].S_literature==srt[rry[j]].S_literature) //语文分数相同,判断数学是否相同
{
if(srt[rry[i]].S_math<srt[rry[j]].S_math )
{
temp=rry[i];
rry[i]=rry[j];
rry[j]=temp;
break;
}
else if(srt[rry[i]].S_math==srt[rry[j]].S_math) //语文,数学分数相同,判断英语分数是否相同
{
if(srt[rry[i]].S_english<srt[rry[j]].S_english)
{
temp=rry[i];
rry[i]=rry[j];
rry[j]=temp;
break;
}
else if(srt[rry[i]].S_english==srt[rry[j]].S_english) //语文,数学,英语分数相同,判断综合分数是否相同
{
if(srt[rry[i]].S_all<srt[rry[j]].S_all)
{
temp=rry[i];
rry[i]=rry[j];
rry[j]=temp;
}
}
}
}
}
}
}
}
void Disply(Record S[100],int ry[5],int m,int n,int p,int t)
{ int c;
for(c=1;c<=p&&c<n;c++)
{
if(ry[c]>0&&ry[c]<10)
{
S[ry[c]].S_enroll=1;
printf("准考证号为%d——第%d平行志愿录取——录取学校代号%d----录取分数%f\n",S[ry[c]].S_numble,t,m,S[ry[c]].S_all);
}
}
for(c=1;c<n;c++)
{
ry[c]=0;
}
}
void main()
{
int MM,i,j,k,p,grade,w;
int arry[5];
printf("******************录取学校名称用学校代号显示********************\n");
printf("*****************************************************************\n");
printf("北京大学(200901)——限2人——最低分 627分\n清华大学(200902)——限3人——最低分 609分 \n南开大学(200903)——限2人——最低分 589分\n东北大学(200904)——限4人——最低分 545分\n四川大学(200905)——限5人——最低分 555分\n南京大学(200906)——限3人——最低分 578分\n贵州大学(200907)——限5人——最低分 545分 \n");
printf("*****************************************************************\n");
Srecord srecord[100];
E_college Ecollege[10];
printf("请输入学生个数");
scanf("%d",&MM);
for(i=1;i<=MM;i++)
{
printf("请输入学生准考证号(4位):");
scanf("%d",&srecord[i].S_numble);
printf("请输入学生 语文成绩:");
scanf("%f",&srecord[i].S_literature);
printf("请输入学生 数学成绩:");
scanf("%f",&srecord[i].S_math);
printf("请输入学生 英语成绩:");
scanf("%f",&srecord[i].S_english);
printf("请输入学生 综合成绩:");
scanf("%f",&srecord[i].S_synthesize);
srecord[i].S_all=srecord[i].S_literature+srecord[i].S_math+srecord[i].S_english+srecord[i].S_synthesize;
printf("请输入学生 第一志愿学校代号(20090**):");
scanf("%d",&srecord[i].S_first);
printf("请输入学生 第二志愿学校代号(20090**):");
scanf("%d",&srecord[i].S_second);
printf("请输入学生 第三志愿学校代号(20090**):");
scanf("%d",&srecord[i].S_third);
srecord[i].S_enroll=0;
}
j=200900;
k=1;
for(i=1;i<10;i++)
{
Ecollege[i].code=j+i;
}
Ecollege[1].N_numble=2;
Ecollege[1].N_grade=627;
Ecollege[2].N_numble=3;
Ecollege[2].N_grade=609;
Ecollege[3].N_numble=2;
Ecollege[3].N_grade=589;
Ecollege[4].N_numble=4;
Ecollege[4].N_grade=545;
Ecollege[5].N_numble=5;
Ecollege[5].N_grade=555;
Ecollege[6].N_numble=3;
Ecollege[6].N_grade=578;
Ecollege[7].N_numble=5;
Ecollege[7].N_grade=545;
j=j+1;
w=1;
////////////////////////选择第一志愿同一学校的学生查询
while(j<200908)
{
for(i=1;i<=MM;i++)
{
if(j==srecord[i].S_first)
if(srecord[i].S_all >=Ecollege[j-200900].N_grade)
if(srecord[i].S_enroll==0)
{
arry[k]=i;
k++;
}
}
Rank(srecord,arry,k);
p=Ecollege[j-200900].N_numble;
Disply(srecord,arry,j,k,p,w);
j++;
}
///////////////////////////////////// 选择第二志愿同学校的学生查询
j=200901;
k=1;
w=2;
while(j<200908)
{
for(i=1;i<=MM;i++)
{
if(j==srecord[i].S_second)
if(srecord[i].S_all >=Ecollege[j-200900].N_grade)
if(srecord[i].S_enroll==0)
{
arry[k]=i;
k++;
}
}
Rank(srecord,arry,k);
p=Ecollege[j-200900].N_numble;
Disply(srecord,arry,j,k,p,w);
j++;
}
///////////////////////// //选择第三志愿同一学校的学生查询
w=3;
j=200901;
k=1;
while(j<200908)
{
for(i=1;i<=MM;i++)
{
if(j==srecord[i].S_third)
if(srecord[i].S_all>=Ecollege[j-200900].N_grade)
if(srecord[i].S_enroll==0)
{
arry[k]=i;
k++;
}
}
Rank(srecord,arry,k);
p=Ecollege[j-200900].N_numble;
Disply(srecord,arry,j,k,p,w);
j++;
}
}
相关推荐
//模拟高考平行志愿投档 //要求: /* 1.在输入每个考生的成绩、志愿,学校的招生计划情况下能完成模拟平行志愿方式的高考志愿投档, 后输出每个学生的投档学校。如果考生不能投到某个学校,则输出“NO” 说明: 1....
图说平行志愿投档流程.doc
平行志愿填报是高考录取中的一个重要环节,它与传统的顺序志愿有很大的不同。在平行志愿的模式下,考生可以填报多个志愿,这些志愿被视为平等的,没有优先级之分。山东省高考平行志愿填报表的设计旨在帮助考生更科学...
【作品名称】:基于Java SSM+Mysql 实现的高考平行志愿模拟录取系统【课程设计】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...
2011年,浙江省艺术类高考志愿填报迎来了一次重要的变革,即实行了第三批首轮平行志愿投档方式。这种方式不仅影响了考生的志愿填报策略,也深刻改变了艺术类院校录取的规则和流程。本文将对2011年浙江省艺术类第三批...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。...模拟高考志愿填报系统源码+项目说明.zip
湖南省高考本科二批平行一志愿投档分数线文科.pdf
《山东省高考平行志愿填报表》是一个非常重要的文档,对于山东省的高考生来说,它关乎着他们的未来升学之路。平行志愿填报是近年来我国高考录取中的一种常见方式,旨在提高考生志愿匹配度,降低落榜风险。下面,我们...
2024年河北省普通高校招生本科批-物理科目组合平行志愿投档情况统计
2024年河北省普通高校招生本科批-历史科目组合平行志愿投档情况统计
3. **位次优先**:在平行志愿模式下,考生根据高考总分(原始分)加上政策性加分(如特长生加分等)计算出的投档分进行排序,按照位次依次进行投档。 4. **遵循志愿**:投档时,按照考生填报的院校自然顺序依次检索...
山东省2022年普通类常规批第一次志愿投档情况表
《高考志愿填报系统——艺考志愿填报源码详解》 高考志愿填报是每位艺考生人生中的重要环节,而高效、精准的志愿填报系统则成为他们的得力助手。本系统名为“高考志愿填报系统-高考艺考志愿填报源码”,专为全国艺...
平行投档是一种高考录取方式,它按照考生的分数和志愿顺序,依次将考生档案投放到志愿高校,确保公平公正。 【温州医科大学】作为省重点建设高校,其临床药学专业的分数线为9553,意味着考生需达到这个分数才有机会...
基于SSM实现的高考平行志愿模拟录取系统源码+项目说明(数据库课程设计).zip基于SSM实现的高考平行志愿模拟录取系统源码+项目说明(数据库课程设计).zip 项目技术栈 **前端主要涉及技术** - 前端三件套 - Html, Css,...
数据库课程设计-平行志愿模拟录取系统_admission
1. **平行志愿填报**:山东省实施的是平行志愿填报制度,意味着考生可以同时填报多个院校志愿,每个院校下又可填报多个专业志愿。这种制度降低了高分落榜的风险,增加了考生被心仪学校录取的机会。 2. **志愿批次**...
在山东省的高考志愿填报中,采用平行志愿的方式,意味着考生可以填报多个志愿,这些志愿被视为平等的,没有优先级之分,按照“分数优先、遵循志愿”的原则进行投档。 在2020年的山东省平行志愿填报表中,每个考生...
湖南省2024年普通高校招生本科提前批采用平行志愿的其他类院校征集志愿投档分数线(普通类).xlsx
【作品名称】:基于 Java+Mysql 实现的平行志愿模拟录取系统【数据库课程设计】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...