c语言高考成绩录取,c语言课程设计-高考录取分数线.doc

PAGE

PAGE 14

中国地质大学(武汉)

C语言课程设计报告书

姓 名:

班 级:

班级学号:

指导老师:

一 课设题目

高考招生录取成绩

已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。

假定当年该省的招生计划是:一类本科招生计划为10%;二类本科招生计划为15%;三类本科招生计划为20%;四类高职高专招生计划为25%。

请编写程序,实现以下功能:

1.划定各批次录取分数线,结果可屏幕显示,也可存入文件;

2.能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件;

3.确定每名学生的录取情况及录取批次;

4.考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况;

5.系统程序要有界面;

6.存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。)

二 题目分析

该程序题目已经很清楚的表达出要求编好的程序能够简单的实行高考招生功能,首先需要在导入含有一千个考生信息的txt文本,以能达到录取功能。根据该题目我们还可以知道完成数据输入后,不仅要有比较整洁的界面,还要能根据用户要求界面显示出个批次中男女的比例以及录取线、可供用户查询(根据考生姓名或考号)某考生成绩及录取情况。那么我们最好设置一个大循环,使得考生能实现只要不关闭程序或者按指定输入而结束程序就能一直查询下去,并且能用txt文本将个批次中录取的人的一系列信息从程序中生成出来。

但作为艺术生,我的能力有限,只能从网络上寻找已经编好的程序进行理解,降低理解题目的难度。

三 设计思路

要编题目中要求的程序,就必须先将已经写好的一千个学生的信息的文本文件输入程序。

第一步为定义:

#include

#include

用结构体的形式将学生的一切信息表达出来:

struct DATA

{

int ID;

char name[4];

char sex[3];

int score;

};

定义各个函数:

void paixu(int*,DATA*,int);

int sishewuru(double);

void func1(int*,int*,DATA*,int*,int,int,int,int);//统计男女比例

int func2(int*,int,DATA*);//查找考生序号

void print();

void main()

再应该从f1.txt中向程序导入将每一个人的学号、姓名、性别、分数,并自动计算考生数量:

FILE* file=fopen("f1.txt","r"),*file1;

if(file==NULL)

{

printf("No such file!\n");

return;

}

while(EOF!=fscanf(file,"%*[^\n]\n")) length++;//自动计算考生数量

然后比较大小,将原来一千个人按成绩高低排好顺序:

DATA* data=(DATA*)malloc(length*sizeof(DATA));

int* pai=(int*)malloc(length*sizeof(int));

rewind(file);

for(i=0;i

{

fscanf(file,"%d %s %s %d",&data[i].ID,&data[i].name,&data[i].sex,&data[i].score);

pai[i]=i;

}

paixu(pai,data,length);//将1-1000的学生按成绩排序

对1000名学生的成绩分别按比例进行计算并四舍五入为整数,可得出各批次最低成绩,即各批次的录取成绩。要划出各批次的录取成绩,就要将压线的那个分数计算出来。在这里,特别考虑的是:压线分数上人数有多个,所以,我们不能单纯的将N乘以各个批次的百分点。编写程序如下:

yiben=sishewuru(length*0.1)-1;//分别按比例进行计算并四舍五入为整数

erben=yiben+sishewuru(length*0.15);

sanben=erben+sishewuru(length*0.2);

dazhuan=sanben+sishewuru(length*0.25);

yi=data[pai[yiben]].score;er=data[pai[erben]].score;

san=data[pai[sanben]].score;si=data[pai[dazhuan]].score;

设置界面:将“各类招生分数线”、“ 各批

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值