研究生推免(保研)排名统计程序课程设计报告_第1页
研究生推免(保研)排名统计程序课程设计报告_第2页
研究生推免(保研)排名统计程序课程设计报告_第3页
研究生推免(保研)排名统计程序课程设计报告_第4页
研究生推免(保研)排名统计程序课程设计报告_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课设题目题目:研究生推免(保研)排名统计程序具体内容:已知文本文件f1.txt中存放了某校应届大四学生的相关信息(不超过5000人),具体数据及存放格式为:每行存放一个学生的数据,共有7项,依次为:学号、姓名、专业必修课平均成绩、科技活动奖励加分、社会活动奖励加分、是否有专业必修课挂科记录、是否通过大学英语四级。其中,学号为8位数字字符,其中前2位数字表示学生所在的学院,第3位数字表示学生的专业,第4-5位数字表示学生的年级,统一为09,第6位数字表示学生所在年级同专业内的编号,即所称的班号,第7-8位数字表示学生班级内的序号,如学号07509123表示,机电学院(07)通信工程专业(5)09级(09)1班(1)第23号(23)学生;姓名为长度不超过10个的字符;专业必修课平均成果、科技活动奖励加分、社会活动奖励加分均为0-100以内的整数(含0和100);是否有专业必修课挂科记录、是否通过大学英语四级均为0或1两个整型数字,为1分别表示有专业必修课挂科记录或通过大学英语四级,为0分别表示没有专业必修课挂科记录或没有通过大学英语四级。该校的保研政策是:必须没有专业必修课挂科记录且通过大学英语四级考试,在此前提下,划分推免研究生指标。外推指标按专业排名,给予2%的指标,小数部分四舍五入。内推指标按班级排名,给予15%的指标,小数部分四舍五入。如果某班有外推指标,外推指标不占内推指标。排名计算方法:专业必修课成绩占60%,科技活动奖励占30%,社会活动奖励占10%。请编写程序,读出文件f1.txt中的内容,再按保研政策确定每个人的保研状况(0表示没有获得推免资格,1表示获得内推资格,2表示获得外推资格)并存入f2.txt中,并实现以下功能:(1)能够统计某个班所有获得保研资格的学生信息。(2)能够统计某个专业所有获得保研资格的学生信息。(3)能够统计哪个班获得的保研资格的学生人数最多。(4)能够统计全校所有获得外推资格的学生名单,其结果即可屏幕显示,也可存入文件。(5)学生可以根据姓名和学号查询自己是否获得保研资格。说明:=1\*GB3①系统程序要有界面=2\*GB3②存入文件f2.txt中的数据,每行存一个学生的数据,每行之间的不同信息用空格分隔。题目分析该题目要求设计一个研究生推免(保研)排名统计查询系统,导入含有5000个考生信息的txt文本后,能实现统计某个班所有获得保研资格的学生信息;能够统计某个专业所有获得保研资格的学生信息;能够统计哪个班获得的保研资格的学生人数最多;能够统计全校所有获得外推资格的学生名单,其结果即可屏幕显示,也可存入文件;学生根据姓名和学号查询自己是否获得保研资格的功能。要实现这么多功能,就需要一个可供选择的主菜单功能表,每个菜单都要链接到相应的程序实现相应功能,所以,整体就需要建立一个多分支选择结构。除此之外,为了方便用户查询,还要设计一个使考生只要不关闭程序或者按指定输入而结束程序就能一直查询下去的功能。设计思路3.1、设计思想将全局变量和局部变量结合使用,灵活运用。巧用指针,简化数据处理难度。(3)以全局结构来随时定义结构数组。(4)以结构化各个功能模块,函数间的调用精简整个函数。(7)设置循环,实现多次查询。(6)以冒泡方式比较大小排列出学生成绩成绩。(7)以读一个打印一个的思想,实现显示全部信息。(8)以先判断再打印的思想,来实现查找推免状况。3.2、总思路文本读取+排序+统计+查询可分为这样几个模块:读入文件模块、剔除挂科或四级未过者模块、全校成绩排序模块、识别院系模块、外推模块、识别班级(不包括外推者)模块、内推模块、保存文件模块。通过调用这些模块来实现题目要求的五大功能。3.3、图示分析1.按班级查询保研资格信息2.按专业查询保研信息1.按班级查询保研资格信息2.按专业查询保研信息主菜单3.统计保研资格名额最多班级4.统计全校获得外推资格名额5.根据学号查询个人保研信息显示找到的信息7.退出程序6.根据姓名查询个人保研信息 四、各功能模块及其运行结果4.1、菜单和主函数将各个功能模块设计成菜单的选项模式,先输出在屏幕上,再获取用户的键盘输入“v”,由“v”的值进行一个多分枝选择结构,调用相应的功能程序模块。【源代码】voidmain(){ 【函数申明】charINPUT_sub[4],INPUT_cla[7];//要输入的专业号、班号charrec_sub[4],rec_cla[7];//用于识别专业号、班号 charcInputString[10]; charv; load(a); //读取 sort(a); //剔除 sort_1(b); //全校排名 do { printf("\n\n"); printf("/*********欢迎使用保研信息查询系统******/\n\n"); printf("请选择服务》》1.按班级查询保研资格信息****/\n\n"); printf("/******************2.按专业查询保研信息*****/\n\n"); printf("/******************3.统计保研资格名额最多班级/\n\n"); printf("/******************4.统计全校获得外推资格名额/\n\n"); printf("/******************5.根据学号查询个人保研信息/\n\n"); printf("/******************6.根据姓名查询个人保研信息/\n\n"); printf("/******************7.退出程序*****************/\n\n");scanf("%d",&v);【获取键盘输入值v】 getchar();【消除scanf对getchar的影响】 switch(v)【switch多分支选择结构】 { 【输出功能菜单】 case1: { printf("请输入要查询班级的院系编号,如072*\n"); gets(INPUT_sub); printf("请输入要查询班级的班级编号,如072091\n"); gets(INPUT_cla); function_1(INPUT_sub,INPUT_cla,b);break;}【调用功能01函数】 case2:······ 【调用功能02函数】······· default:break; } }while(v<7);}4.2、基础模块4.2.1、读入文件函数这个函数是整个程序更的根本条件,由于一个学生的信息包含多种不同类型的信息且是一个整体,所以要将学生的信息建立一个结构体,每个成员对应相应的变量类型,由于部分学生的学号第一位为0,所以将学号定义为字符串,名字为字符串,成绩是整型,其他都可以用字符型的数组,开始判定文件f1是否存在,存在则执行while循环,从i=0读入文件。【源代码】inti=0;intload(structstudent*a){ FILE*fp1; if((fp1=fopen("f1.txt","r"))==NULL)【判断f1是否存在】{ printf("cannotopenthisfile\n");【不存在的情况】 return0;} while(!feof(fp1)) 【存在就直接执行while循环】{ fscaf······ i++; }【依次读入文件】 return(i);【返回最后一名学生的位置】}4.2.2、剔除挂科或四级未过者这个函数是将全校挂科或者四级未过者(即无资格推免的学生)从总名单中提剔除,进而方便接下来的成绩排名工作,原理是将工作组a[5000]中所有学生资料依次提取,通过判断其中Fclass和CET4对应的数字0/1,来进行剔除,并将有资格保研的学生资料存入工作组b[5000]中。【源代码】intsort(structstudent*a){ intj,k=0; for(j=0;j<i;j++)【通过for循环逐个筛选】 {if((a[j].Fclass==0)&&(a[j].CET4==1))【判断是否挂科或CET4未通过】 { strcpy(b[k].num,a[j].num);【将筛选后的学生放入b[5000]】 ········} } i=k; return(i)}【返回最后一名学生的位置】4.2.3、全校排名函数这个函数是将工作组b[5000]中的所有学生按成绩排名,其原理为“冒泡法”排序,通过for循环将学生按成绩由高到低的顺序排号好。【源代码】voidsort_1(structstudent_1*b){ intj,k=0; floatscore_j,score_k;structstudent_1temp; for(j=0;j<i-1;j++){score_j=(float)((b[j].score_avr)*0.6+(b[j].bonus_sci)*0.3+(b[j].bonus_soc)*0.1);【计算综合成绩】 for(k=j+1;k<i;k++)【冒泡法按成绩排序】{ score_k=(float)((b[k].score_avr)*0.6+(b[k].bonus_sci)*0.3+(b[k].bonus_soc)*0.1); if(score_j<score_k) {temp=b[j]; b[j]=b[k]; b[k]=temp;} } } }4.2.4、识别院系这个函数是在已按成绩完成排序的学生中找到所需学院的学生,其原理为;首先利用strncpy语句将学生学号的前三位拷贝到一个临时定义的字符串数组中,并用strcmp语句将其与所需学院的编号对比,符合条件者存入工作组sub[2000]中,通过for循环逐个挑选。【源代码】intdevide_1(structstudent_1*b,structstudent_1*sub,charINPUT_sub[]){ intj,r=0; intv; for(j=0;j<i;j++) { strncpy(rec_sub,b[j].num,3);【学生学号的前三位拷贝到rec_sub】 if((strcmp(rec_sub,INPUT_sub))==0)【将rec_sub与所需学院编号比较】 { sub[r++]=b[j]; } 【符合条件者存入工作组sub[500]中】} returnr;} 【返回最后一名学生的位置】4.2.5、外推模块这个函数是在已经识别出的学院的学生中按2%的比例确定外推名额,并将外推者资料除存入工作组structstudent_1suc_out[800]中,其原理为将“学院总人数”*2%四舍五入后得到该学院外推总人数j,然后再将sub[2000]中的前j名学生选出即为外推者,并存入工作组suc_out[800]。【源代码】intsuccess_out(structstudent_1*sub,intnum){ intj,k=0;j=(int)(((num)*0.2+5)/10); 【四舍五入】 if(0==j)【如果某学院人数太少则无外推者】 { return0;} for(k=0;k<j;k++)【将学院前j名学生选出】 { suc_out[k]=sub[k];【选出外推者】 suc_out[k].status=2;} returnk;【返回最后一名学生是位置】}4.2.6、识别班级(不包括外推) 这个函数是在同院系除去外推者的学生中找出所需班级的学生,其原理与上述2.4识别院系相似,再次不赘述。【源代码】{ intj,k=0; for(j=numout;j<numsub;j++) {strncpy(rec_cla,sub[j].num,6);【学生学号的前6位拷贝到rec_cla】 if((strcmp(rec_cla,INPUT_cla))==0)【将rec_cla与所需班级编号比较】 {cla[k++]=sub[j];} 【将符合条件者存入cla[1000]】 } returnk;} 【返回最后一名学生的位置】4.2.7、内推模块这个函数是在已经识别班级中除去外推者按15%的名额实施内推,其原理与上述2.5外推模块相似,再次不赘述。【源代码】intsuccess_in(structstudent_1*cla,intnumcla){ intj,k; j=(int)((numcla)*1.5+5)/10; 【四舍五入】 for(k=0;k<j;k++) {suc_in[k]=cla[k];} returnk;}4.3.功能函数4.3.1按班级查询保研资格信息 原理:根据输入的学院、班级编号利用上述基础模块实现题目要求功能,依次输出所查班级的外推者和内推者名单。 【源代码】voidfunction_1(charINPUTsub[],charINPUT_cla[],structstudent_1*b){ intj=0,k=0,m; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 CountSub=devide_1(b,sub,INPUTsub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,INPUT_cla);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 j=CountOut; //外推总数 k=CountIn; //班级内推总数 printf········ //输出本班外推者 for(m=0;m<j;m++) { strncpy(rec_cla,suc_out[m].num,6); if((strcmp(rec_cla,INPUT_cla))==0)printf······· } printf("输出本班内推者\n"); for(m=0;m<k;m++) //输出内推者printf·······}4.3.2按专业查询保研信息原理:根据输入的学院、专业编号利用上述基础模块实现题目要求功能,通过for循环找出要查专业所有班级的保研情况。【源代码】voidfunction_2(charINPUTsub[],structstudent_1*b){ charAllClass[7]; inti; intj=0,k=0,m; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 CountSub=devide_1(b,sub,INPUTsub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 j=CountOut; //外推总数 printf("/***************输出专业保研名单************/\n"); for(m=0;m<j;m++) //输出专业外推者 printf······· printf("输出专业内推者\n"); //输出专业内推者 for(i=0;i<10;i++)//按班级循环依次输出 { ········ for(m=0;m<k;m++) //输出内推者 Printf·······}4.3.3统计保研资格名额最多班级 原理:通过for循环找出要查专业所有班级的保研情况存入工作组中,利用冒泡法按保研人数排名并找出人数最多的班级。【源代码】voidfunction_3(){ charAllClass[7]; charAllSub[4]; intj=0,k=0,m; inti=0; intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0; //班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO; intClassNO; intmax=0; intnumber=0; AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++) {AllSub[0]=AllClass[0]=(SchoolNO/100)+48; AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48; AllSub[3]=0; AllClass[3]=0+48; AllClass[4]=9+48; for(ClassNO=0;ClassNO<9;ClassNO++) { AllClass[5]=ClassNO+48; CountSub=devide_1(b,sub,AllSub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 j=CountOut; //外推总数 for(m=0;m<j;m++) //输出本班外推者 { strncpy(rec_cla,suc_out[m].num,6); if((strcmp(rec_cla,INPUT_cla))==0) { CountClassout++;} } l=i++; CountClassAll=CountClassout+CountIn; strcpy(classNOAll[l].classname,AllClass); classNOAll[l].AllNO=CountClassAll; if(CountClassAll>max) {max=CountClassAll;number=l;} } } Printf······}4.3.4统计全校获得外推资格名额(含存储文件的程序)原理:与原理3.3相似【源代码】voidfunction_4(){ charAllClass[7]; charAllSub[4]; intj=0,k=0,m; inti=0; intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0; //班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO; intClassNO; intmax=0; intnumber=0; FILE*fp; FILE*fp3; if((fp=fopen("f2.txt","w"))==NULL) { printf("Fileopenerror.\n"); exit(0);} if((fp3=fopen("f3.txt","w"))==NULL) { printf("Fileopenerror.\n"); exit(0);} AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++) { AllSub[0]=AllClass[0]=(SchoolNO/100)+48; AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48; AllSub[3]=0;AllClass[3]=0+48; AllClass[4]=9+48; for(ClassNO=0;ClassNO<9;ClassNO++) { AllClass[5]=ClassNO+48; CountSub=devide_1(b,sub,AllSub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 for(m=0;m<CountIn;m++) {fprintf·······} } for(m=0;m<CountOut;m++) {printf································································· fprintf(······· fprintf(·······} } fclose(fp);fclose(fp3); }4.3.5根据学号或姓名查询个人保研信息原理:利用2中的基础模块,并通过for循环实现查询功能【源代码】voidfunction_5(charINPUTid[],intntype){ structstudent_1SUCall[5000]; charAllClass[7]; charAllSub[4]; intj=0,k=0,m; inti=0; intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0; //班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO; intClassNO; intnlookup=0;AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++) { AllSub[0]=AllClass[0]=(SchoolNO/100)+48; AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48;AllSub[3]=0; AllClass[3]=0+48;AllClass[4]=9+48; for(ClassNO=0;ClassNO<9;ClassNO++) {AllClass[5]=ClassNO+48; CountSub=devide_1(b,sub,AllSub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 for(m=0;m<CountIn;m++) { SUCall[i++]=suc_in[m];} } for(m=0;m<CountOut;m++) { SUCall[i++]=suc_out[m];} } for(m=0;m<i;m++) {if(0==ntype) //按学号查询 {if((strcmp(INPUTid,SUCall[m].num))==0) {printf······· if(1==SUCall[m].status){printf("内推\n");} if(2==SUCall[m].status){printf("外推\n");} nlookup=1; } } Else //按姓名查询 {if((strcmp(INPUTid,SUCall[m].name))==0) { printf("学号:%s姓名:%s平均成绩:%d科技活动:%d社会活动:%d",SUCall[m].num,SUCall[m].name,SUCall[m].score_avr,SUCall[m].bonus_sci,SUCall[m].bonus_soc); if(1==SUCall[m].status){ printf("内推\n");} if(2==SUCall[m].status){ printf("外推\n");} nlookup=1; } } } if(0==nlookup) { printf("该考生没有保研资格\n");}}五.课设总结为期4天的课程设计即将结束,在这几天里,我收获颇多。首先,我确实感受到课程设计的重要性。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。但是,我们光学习了课本知识还远远不能胜任复杂多变的实际应用情况。实践是对所学知识是否掌握的最好检测依据。其次,我体会到了编程工作的艰辛。从拿到题目,到构思整体框架,然后分析所需要完成的功能,之后将其分为不同的模块,还要考虑到各模块之间的连接。这些工作完成后就是编写代码。编写代码的过程需要细心谨慎,一点极小的错误就有可能使整个程序不能实现预定的功能,严重的甚至会引起系统瘫痪。再之后,就是复杂的调试过程,如果前面的代码写的不好,很有可能出现几十个甚至上百个错误,修改错误的过程是一个非常复杂的过程,有的大程序好几个星期找不出来错误从而严重影响编程进度。再次,我也充分体会到编程方法和规范化编程的重要性。程序的可读性、可维护性以及稳定性将极大的影响系统的使用。另外,调试的技巧和良好的人机界面也对系统的编写和运行产生很大的影响。最后,此次课程设计让我感觉到人外有人,山外有山,一个人的能力毕竟是有限的,我们要善于在不懂的时候向懂得比较多的老师、同学们请教。在请教的过程中,不仅学会了自己不懂的知识,而且还加强了和他们的交流沟通。未来的编程工作量及其大,光靠自己的力量是不可能完成的,我们要从现在就开始培养我们的团队合作精神,充分发挥大家的长处,来完成自己不可能完成的工作。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于迎刃而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!六.附录(源代码)#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>structstudent{ charnum[9]; charname[10]; intscore_avr; intbonus_sci; intbonus_soc; intFclass; intCET4; };structstudent_1{ charnum[9]; charname[10]; intscore_avr; intbonus_sci; intbonus_soc; intFclass; intCET4; intstatus;};structclassALLNO{ charclassname[7]; intAllNO; };charINPUT_sub[4],INPUT_cla[7];//要输入的专业号、班号charrec_sub[4],rec_cla[7];//用于识别专业号、班号structclassALLNOclassNOAll[5000];structstudenta[5000];structstudent_1b[5000];structstudent_1sub[2000];//一个专业的工作组structstudent_1cla[1000];//一个班级的工作组structstudent_1suc_out[800]; //一个专业外推名额工作组structstudent_1suc_in[2000];//一个班内推名额工作组intnum_sub,num_cla; //一个专业、班级的人数intnum_out;//一个专业外推人数intnum_in;//一个班级内推人数/**********************读取文件***************************/inti=0;/****将i设置成为全局变量,以便于其他子函数直接使用****/intload(structstudent*a){ FILE*fp1; if((fp1=fopen("f1.txt","r"))==NULL){ printf("cannotopenthisfile\n"); return0; } while(!feof(fp1)) { fscanf(fp1,"%s%s%d%d%d%d%d",a[i].num,a[i].name,&a[i].score_avr, &a[i].bonus_sci,&a[i].bonus_soc,&a[i].Fclass,&a[i].CET4); i++; } return(i);}/**************剔除挂科或四级未过者****************/intsort(structstudent*a){ intj,k=0; for(j=0;j<i;j++) { if((a[j].Fclass==0)&&(a[j].CET4==1)) { strcpy(b[k].num,a[j].num);strcpy(b[k].name,a[j].name); b[k].score_avr=a[j].score_avr;b[k].bonus_sci=a[j].bonus_sci; b[k].bonus_soc=a[j].bonus_soc;b[k].Fclass=a[j].Fclass; b[k].CET4=a[j].CET4; b[k++].status=1;} } i=k; return(i);}/*******************全校排名**********************/voidsort_1(structstudent_1*b){ intj,k=0; floatscore_j,score_k; structstudent_1temp; for(j=0;j<i-1;j++) {score_j=(float)((b[j].score_avr)*0.6+(b[j].bonus_sci)*0.3+(b[j].bonus_soc)*0.1);//计算综合成绩 for(k=j+1;k<i;k++) {score_k=(float)((b[k].score_avr)*0.6+(b[k].bonus_sci)*0.3+(b[k].bonus_soc)*0.1); if(score_j<score_k) { temp=b[j]; b[j]=b[k]; b[k]=temp;} } } }/******************识别院系********************/intdevide_1(structstudent_1*b,structstudent_1*sub,charINPUT_sub[]){intj,r=0; intv;for(j=0;j<i;j++) { strncpy(rec_sub,b[j].num,3); if((strcmp(rec_sub,INPUT_sub))==0) { sub[r++]=b[j];} }returnr;}/*******************外推模块********************/intsuccess_out(structstudent_1*sub,intnum){ intj,k=0;j=(int)(((num)*0.2+5)/10); //四舍五入 if(0==j) {return0;} for(k=0;k<j;k++) { suc_out[k]=sub[k];uc_out[k].status=2;} returnk;}/********************识别班级(不包括外推)******************/intdevide_2(structstudent_1*sub,intnumsub,intnumout,charINPUT_cla[]){ intj,k=0; intv; for(j=numout;j<numsub;j++) { strncpy(rec_cla,sub[j].num,6); if((strcmp(rec_cla,INPUT_cla))==0) { cla[k++]=sub[j];} } returnk;} /********************内推模块******************/intsuccess_in(structstudent_1*cla,intnumcla){ intj,k; j=(int)((numcla)*1.5+5)/10; //四舍五入 for(k=0;k<j;k++) { suc_in[k]=cla[k];} returnk;}/*******************功能—01******************/voidfunction_1(charINPUTsub[],charINPUT_cla[],structstudent_1*b){ intj=0,k=0,m; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 CountSub=devide_1(b,sub,INPUTsub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,INPUT_cla);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 j=CountOut; //外推总数 k=CountIn; //班级内推总数 printf("/***************所查班级所有保研信息************/\n"); printf("/**学号**姓名**平均成绩**科技活动**社会活动**是否挂科**CET4**保研状况**/\n"); printf("输出本班外推者\n"); for(m=0;m<j;m++) //输出本班外推者 { strncpy(rec_cla,suc_out[m].num,6); if((strcmp(rec_cla,INPUT_cla))==0) {printf("%s%s%d%d%d%d%d%d\n",suc_out[m].num,suc_out[m].name,suc_out[m].score_avr,suc_out[m].bonus_sci,suc_out[m].bonus_soc,suc_out[m].Fclass,suc_out[m].CET4,suc_out[m].status); } } printf("输出本班内推者\n"); for(m=0;m<k;m++) //输出内推者 { printf("%s%s%d%d%d%d%d%d\n",suc_in[m].num,suc_in[m].name,suc_in[m].score_avr,suc_in[m].bonus_sci,suc_in[m].bonus_soc,suc_in[m].Fclass,suc_in[m].CET4,suc_in[m].status);}}/****************************功能-02**********************************/voidfunction_2(charINPUTsub[],structstudent_1*b){ charAllClass[7]; inti;intj=0,k=0,m; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 CountSub=devide_1(b,sub,INPUTsub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 j=CountOut; //外推总数 printf("/***************输出专业保研名单************/\n"); printf("/**学号**姓名**平均成绩**科技活动**社会活动**是否挂科**CET4**保研状况**/\n"); printf("输出专业外推者\n"); for(m=0;m<j;m++) {printf("%s%s%d%d%d%d%d%d\n",suc_out[m].num,suc_out[m].name,suc_out[m].score_avr,suc_out[m].bonus_sci,suc_out[m].bonus_soc,suc_out[m].Fclass,suc_out[m].CET4,suc_out[m].status); } printf("输出专业内推者\n"); for(i=0;i<10;i++) { strncpy(AllClass,INPUTsub,3); AllClass[3]='0';AllClass[4]='9';AllClass[5]=i+48;AllClass[6]=0; CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 k=CountIn; //班级内推总数 for(m=0;m<k;m++) //输出内推者 {printf("%s%s%d%d%d%d%d%d\n",suc_in[m].num,suc_in[m].name,suc_in[m].score_avr,suc_in[m].bonus_sci,suc_in[m].bonus_soc,suc_in[m].Fclass,suc_in[m].CET4,suc_in[m].status);} }}/****************************功能-03********************************/voidfunction_3(){ charAllClass[7];charAllSub[4];intj=0,k=0,m;inti=0;intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0;//班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO; intClassNO; intmax=0; intnumber=0; AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++){ AllSub[0]=AllClass[0]=(SchoolNO/100)+48;AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48; AllSub[3]=0;AllClass[3]=0+48;AllClass[4]=9+48; for(ClassNO=0;ClassNO<9;ClassNO++) {AllClass[5]=ClassNO+48; CountSub=devide_1(b,sub,AllSub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 j=CountOut; //外推总数 for(m=0;m<j;m++) //输出本班外推者 { strncpy(rec_cla,suc_out[m].num,6); if((strcmp(rec_cla,INPUT_cla))==0) { CountClassout++;} } l=i++; CountClassAll=CountClassout+CountIn; strcpy(classNOAll[l].classname,AllClass); classNOAll[l].AllNO=CountClassAll; if(CountClassAll>max) { max=CountClassAll;number=l;} } }printf("保研人数最多的班级%s保研人数%d\n",classNOAll[number].classname,classNOAll[number].AllNO);}/****************************功能-04*******************************/voidfunction_4(){ charAllClass[7]; charAllSub[4]; intj=0,k=0,m; inti=0; intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0;//班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO;intClassNO; intmax=0; intnumber=0; FILE*fp; FILE*fp3; if((fp=fopen("f2.txt","w"))==NULL) {printf("Fileopenerror.\n");exit(0); } if((fp3=fopen("f3.txt","w"))==NULL) {printf("Fileopenerror.\n");exit(0); } AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++) { AllSub[0]=AllClass[0]=(SchoolNO/100)+48; AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48; AllSub[3]=0; AllClass[3]=0+48; AllClass[4]=9+48; for(ClassNO=0;ClassNO<9;ClassNO++) { AllClass[5]=ClassNO+48; CountSub=devide_1(b,sub,AllSub); //识别院系 CountOut=success_out(sub,CountSub); //确定外推名额 CountClass=devide_2(sub,CountSub,CountOut,AllClass);//识别班级 CountIn=success_in(cla,CountClass); //确定内推名额 for(m=0;m<CountIn;m++) {fprintf(fp3,"%s%s%d%d%d%d%d%d\n",suc_in[m].num,suc_in[m].name,suc_in[m].score_avr,suc_in[m].bonus_sci,suc_in[m].bonus_soc,suc_in[m].Fclass,suc_in[m].CET4,suc_in[m].status);} } for(m=0;m<CountOut;m++) {printf("%s%s%d%d%d%d%d%d\n",suc_out[m].num,suc_out[m].name,suc_out[m].score_avr,suc_out[m].bonus_sci,suc_out[m].bonus_soc,suc_out[m].Fclass,suc_out[m].CET4,suc_out[m].status); fprintf(fp,"%s%s%d%d%d%d%d%d\n",suc_out[m].num,suc_out[m].name,suc_out[m].score_avr,suc_out[m].bonus_sci,suc_out[m].bonus_soc,suc_out[m].Fclass,suc_out[m].CET4,suc_out[m].status); fprintf(fp3,"%s%s%d%d%d%d%d%d\n",suc_out[m].num,suc_out[m].name,suc_out[m].score_avr,suc_out[m].bonus_sci,suc_out[m].bonus_soc,suc_out[m].Fclass,suc_out[m].CET4,suc_out[m].status);} } fclose(fp); fclose(fp3);}/****************************功能-05*******************************/voidfunction_5(charINPUTid[],intntype){ structstudent_1SUCall[5000]; charAllClass[7]; charAllSub[4]; intj=0,k=0,m; inti=0; intl; intCountSub; //学院总数 intCountClass; //班级总数 intCountOut; //学院外推总数 intCountIn; //班级内推总数 intCountClassout=0;//班级外推总数 intCountClassAll; //班级保研总数 intSchoolNO; intClassNO; intnlookup=0; AllClass[6]=0; for(SchoolNO=0;SchoolNO<999;SchoolNO++) { AllSub[0]=AllClass[0]=(SchoolNO/100)+48; AllSub[1]=AllClass[1]=((SchoolNO/10)%10)+48; AllSub[2]=AllClass[2]=(SchoolNO%10)+48; AllSub[3]=0; AllClass[3]=0+48; AllClass[4]=9+48; for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论