欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:2384898       资源大小:443KB        全文页数:21页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    中国地质大学(武汉)C语言课程设计报告书姓 名:班 级:班级学号: 指导老师: 一 课设题目高考招生录取成绩已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。假定当年该省的招生计划是:一类本科招生计划为10;二类本科招生计划为15;三类本科招生计划为20;四类高职高专招生计划为25。请编写程序,实现以下功能:1.划定各批次录取分数线,结果可屏幕显示,也可存入文件;2.能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件;3.确定每名学生的录取情况及录取批次;4.考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况;5.系统程序要有界面;6.存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。)二 题目分析该程序题目已经很清楚的表达出要求编好的程序能够简单的实行高考招生功能,首先需要在导入含有一千个考生信息的txt文本,以能达到录取功能。根据该题目我们还可以知道完成数据输入后,不仅要有比较整洁的界面,还要能根据用户要求界面显示出个批次中男女的比例以及录取线、可供用户查询(根据考生姓名或考号)某考生成绩及录取情况。那么我们最好设置一个大循环,使得考生能实现只要不关闭程序或者按指定输入而结束程序就能一直查询下去,并且能用txt文本将个批次中录取的人的一系列信息从程序中生成出来。 但作为艺术生,我的能力有限,只能从网络上寻找已经编好的程序进行理解,降低理解题目的难度。三 设计思路要编题目中要求的程序,就必须先将已经写好的一千个学生的信息的文本文件输入程序。第一步为定义:#include <stdio.h>#include <malloc.h>用结构体的形式将学生的一切信息表达出来:struct DATAint ID;char name4;char sex3;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,"%*nn") length+;/自动计算考生数量然后比较大小,将原来一千个人按成绩高低排好顺序:DATA* data=(DATA*)malloc(length*sizeof(DATA);int* pai=(int*)malloc(length*sizeof(int);rewind(file);for(i=0;i<length;i+)fscanf(file,"%d %s %s %d",&datai.ID,&datai.name,&datai.sex,&datai.score);paii=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=datapaiyiben.score;er=datapaierben.score;san=datapaisanben.score;si=datapaidazhuan.score;设置界面:将“各类招生分数线”、“ 各批次男女比例”、“ 单个学生录取情况”、“ 退出系统输入”、“ 重新打印初试界面”输入指令分别设置为数字“0”“4”:while(1)print();printf("n请输入查询码:");for(input=getchar();input=getchar()if(!(input>='0'&&input<='4')printf("非法输入,请重新输入n请输入:");fflush(stdin);else break;实现“各类招生分数线”即“0”指令:getchar();switch(input)case '0':printf("n一类本科招生线:%dn二类本科招生线:%dn三类本科招生线:%dn高职高专招生线:%dn",yi,er,san,si);printf("是否打印为文件?(y/n):");if(getchar()='y')file1=fopen("各批次录取分数线.txt","w");fprintf(file1,"一类本科招生线:%dn二类本科招生线:%dn三类本科招生线:%dn高职高专招生线:%dn",yi,er,san,si);fclose(file1);fflush(stdin);break;实现“各批次男女比例”即“1”指令:case '1':func1(male,female,data,pai,yiben,erben,sanben,dazhuan);printf("一本类本科招生线男女比例: %d:%dn",male0,female0);printf("二类本科招生线男女比例: %d:%dn",male1,female1);printf("三类本科招生线男女比例: %d:%dn",male2,female2);printf("高职高专招生线招生线男女比例:%d:%dn",male3,female3);printf("是否打印为文件?(y/n):");if(getchar()='y')file1=fopen("各批次录取男女比例.txt","w");fprintf(file1,"一类本科招生线男女比例: %d:%dn",male0,female0);fprintf(file1,"二类本科招生线男女比例: %d:%dn",male1,female1);fprintf(file1,"三类本科招生线男女比例: %d:%dn",male2,female2);fprintf(file1,"高职高专招生线招生线男女比例:%d:%dn",male3,female3);fclose(file1);fflush(stdin);break;实现“单个学生录取情况”即“2”指令:case '2':printf("按考号查询输入0 按姓名查询输入1n请输入查询码:");for(input=getchar();input=getchar()if(input!='0'&&input!='1')printf("非法输入,请重新输入n请输入:");fflush(stdin);else break;getchar();int shuru,j,ss10;/假设最多10个重名的for(j=0;j<10;j+) ssi=0;if(input='0')start1:printf("请输入考号:");for(j=scanf("%d",&shuru);j!=1|shuru/10000!=4211;j=scanf("%d",&shuru)/假设考号开头为4211printf("非法输入,请重新输入n请输入:");fflush(stdin);getchar();j=shuru%10000;/假设考号和序号的关系printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",shuru,dataj.name,dataj.sex,dataj.score);if(dataj.score>=yi) printf("一本n");else if(dataj.score>=er) printf("二本n");else if(dataj.score>=san) printf("三本n");else if(dataj.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");printf("是否继续查询?(y/n):");if(getchar()='y')fflush(stdin);goto start1;elsestart2:printf("请输入姓名:");j=func2(ss,length,data);/查找考生序号if(j=0) printf("查无此人!n");else if(j=1)printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",datass0.ID,datass0.name,datass0.sex,datass0.score);if(datass0.score>=yi) printf("一本n");else if(datass0.score>=er) printf("二本n");else if(datass0.score>=san) printf("三本n");else if(datass0.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");elseprintf("有多个考生姓名为%s,数据如下:n",datass0.name);for(j=j-1;j>=0;j-)printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",datassj.ID,datassj.name,datassj.sex,datassj.score);if(datassj.score>=yi) printf("一本n");else if(datassj.score>=er) printf("二本n");else if(datassj.score>=san) printf("三本n");else if(datassj.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");printf("是否继续查询?(y/n):");if(getchar()='y')fflush(stdin);goto start2;break;实现“退出系统”即“3”指令:case '3':fclose(file);free(data);return;实现“重新打印初始界面”即“4”指令:case '4':print();break;fclose(file);free(data);下面,则开始对开始定义的函数进行填充:根据1000名学生的成绩进行从高到底的排序:void paixu(int* pai,DATA* data,int length)int i,j,temp;for(i=0;i<length;i+)for(j=i+1;j<length;j+)if(datapaii.score<datapaij.score)temp=paii;paii=paij;paij=temp;计算各批次比例的四舍五入:int sishewuru(double l)if(l>1)if(l-(int)l)<0.5) return (int)l;else return (int)l+1;else return 1;各批次男女比例:void func1(int* male,int* female,DATA* data,int* pai,int a,int b,int c,int d)int i;for(i=0;i<4;i+) malei=0;femalei=0;for(i=0;i<=a;i+)if(datapaii.sex0=-60) male0+;else female0+;for(;i<=b;i+)if(datapaii.sex0=-60) male1+;else female1+;for(;i<=c;i+)if(datapaii.sex0=-60) male2+;else female2+;for(;i<=d;i+)if(datapaii.sex0=-60) male3+;else female3+;界面:void print()printf("-高考招生录取程序-n");printf("今年招生计划:一类本科招生计划为 10n 二类本科招生计划为 15n 三类本科招生计划为 20n 四类高职高专招生计划为25n");printf("查询: n各类招生分数线输入 0 各批次男女比例输入1n单个学生录取情况输入2 退出系统输入 3n重新打印初试界面输入4n");根据考生的姓名或考号进行单个学生成绩查询:int func2(int* ss,int length,DATA* data)int i,j=0;char s4;while(1)i=scanf("%s",s);fflush(stdin);if(i!=1) printf("非法输入,请重新输入n请输入:");continue;for(i=0;i<length;i+)if(datai.name0=s0&&datai.name1=s1&&datai.name2=s2)ssj+=i;break;return j;四、实现结果系统界面各类招生录取成绩各批次男女比例五 课设总结在进行几次上机实习后,我感觉c语言真是一门很神奇的学科,它在只借助一台计算机,一个vc+,就能带给人们那么多实用的东西!而且,我对c语言有了全新的认识,以前不知道的东西在上机之后完全了解了,以前一知半解的东西在上机之后感觉分变得更加明了了。很多错误都是始料未及的,往往一点的小差错都会导致整个程序无法运行或者错误运行。在上机实习的前几节课,我感觉有点茫然不知所措,只有将书上的相关知识一遍又一遍地了解。在多次了解后,开始理解编程就顺利多了。六 程序代码#include <stdio.h>#include <malloc.h>struct DATAint ID;char name4;char sex3;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()int length=0,i,yiben,erben,sanben,dazhuan,male4,female4;int yi,er,san,si;char input;FILE* file=fopen("f1.txt","r"),*file1;if(file=NULL)printf("No such file!n");return;while(EOF!=fscanf(file,"%*nn") length+;/自动计算考生数量DATA* data=(DATA*)malloc(length*sizeof(DATA);int* pai=(int*)malloc(length*sizeof(int);rewind(file);for(i=0;i<length;i+)fscanf(file,"%d %s %s %d",&datai.ID,&datai.name,&datai.sex,&datai.score);paii=i;paixu(pai,data,length);/将1-1000的学生按成绩排序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=datapaiyiben.score;er=datapaierben.score;san=datapaisanben.score;si=datapaidazhuan.score;while(1)print();printf("n请输入查询码:");for(input=getchar();input=getchar()if(!(input>='0'&&input<='4')printf("非法输入,请重新输入n请输入:");fflush(stdin);else break;getchar();switch(input)case '0':printf("n一类本科招生线:%dn二类本科招生线:%dn三类本科招生线:%dn高职高专招生线:%dn",yi,er,san,si);printf("是否打印为文件?(y/n):");if(getchar()='y')file1=fopen("各批次录取分数线.txt","w");fprintf(file1,"一类本科招生线:%dn二类本科招生线:%dn三类本科招生线:%dn高职高专招生线:%dn",yi,er,san,si);fclose(file1);fflush(stdin);break;case '1':func1(male,female,data,pai,yiben,erben,sanben,dazhuan);printf("一类本科招生线男女比例: %d:%dn",male0,female0);printf("二类本科招生线男女比例: %d:%dn",male1,female1);printf("三类本科招生线男女比例: %d:%dn",male2,female2);printf("高职高专招生线招生线男女比例:%d:%dn",male3,female3);printf("是否打印为文件?(y/n):");if(getchar()='y')file1=fopen("各批次录取男女比例.txt","w");fprintf(file1,"一类本科招生线男女比例: %d:%dn",male0,female0);fprintf(file1,"二类本科招生线男女比例: %d:%dn",male1,female1);fprintf(file1,"三类本科招生线男女比例: %d:%dn",male2,female2);fprintf(file1,"高职高专招生线招生线男女比例:%d:%dn",male3,female3);fclose(file1);fflush(stdin);break;case '2':printf("按考号查询输入0 按姓名查询输入1n请输入查询码:");for(input=getchar();input=getchar()if(input!='0'&&input!='1')printf("非法输入,请重新输入n请输入:");fflush(stdin);else break;getchar();int shuru,j,ss10;/假设最多10个重名的for(j=0;j<10;j+) ssi=0;if(input='0')start1:printf("请输入考号:");for(j=scanf("%d",&shuru);j!=1|shuru/10000!=4211;j=scanf("%d",&shuru)/假设考号开头为4211printf("非法输入,请重新输入n请输入:");fflush(stdin);getchar();j=shuru%10000;/假设考号和序号的关系printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",shuru,dataj.name,dataj.sex,dataj.score);if(dataj.score>=yi) printf("一本n");else if(dataj.score>=er) printf("二本n");else if(dataj.score>=san) printf("三本n");else if(dataj.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");printf("是否继续查询?(y/n):");if(getchar()='y')fflush(stdin);goto start1;elsestart2:printf("请输入姓名:");j=func2(ss,length,data);/查找考生序号if(j=0) printf("查无此人!n");else if(j=1)printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",datass0.ID,datass0.name,datass0.sex,datass0.score);if(datass0.score>=yi) printf("一本n");else if(datass0.score>=er) printf("二本n");else if(datass0.score>=san) printf("三本n");else if(datass0.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");elseprintf("有多个考生姓名为%s,数据如下:n",datass0.name);for(j=j-1;j>=0;j-)printf("该生考号:%d 姓名:%s 性别:%s 分数:%d 录取情况:",datassj.ID,datassj.name,datassj.sex,datassj.score);if(datassj.score>=yi) printf("一本n");else if(datassj.score>=er) printf("二本n");else if(datassj.score>=san) printf("三本n");else if(datassj.score>=si) printf("高职高专n");else printf("未过线,请继续努力!n");printf("是否继续查询?(y/n):");if(getchar()='y')fflush(stdin);goto start2;break;case '3':fclose(file);free(data);return;case '4':print();break;fclose(file);free(data);void paixu(int* pai,DATA* data,int length)int i,j,temp;for(i=0;i<length;i+)for(j=i+1;j<length;j+)if(datapaii.score<datapaij.score)temp=paii;paii=paij;paij=temp;int sishewuru(double l)if(l>1)if(l-(int)l)<0.5) return (int)l;else return (int)l+1;else return 1;void func1(int* male,int* female,DATA* data,int* pai,int a,int b,int c,int d)int i;for(i=0;i<4;i+) malei=0;femalei=0;for(i=0;i<=a;i+)if(datapaii.sex0=-60) male0+;else female0+;for(;i<=b;i+)if(datapaii.sex0=-60) male1+;else female1+;for(;i<=c;i+)if(datapaii.sex0=-60) male2+;else female2+;for(;i<=d;i+)if(datapaii.sex0=-60) male3+;else female3+;void print()printf("-高考招生录取程序-n");printf("今年招生计划:一类本科招生计划为 10n 二类本科招生计划为 15n 三类本科招生计划为 20n 四类高职高专招生计划为25n");printf("查询: n各类招生分数线输入 0 各批次男女比例输入1n单个学生录取情况输入2 退出系统输入 3n重新打印初试界面输入4n");int func2(int* ss,int length,DATA* data)int i,j=0;char s4;while(1)i=scanf("%s",s);fflush(stdin);if(i!=1) printf("非法输入,请重新输入n请输入:");continue;for(i=0;i<length;i+)if(datai.name0=s0&&datai.name1=s1&&datai.name2=s2)ssj+=i;break;return j;

    注意事项

    本文(c语言课程设计高考录取分数线.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开