c语言课程设计报告-保研名额查询

上传人:简****9 文档编号:107902979 上传时间:2019-10-21 格式:DOC 页数:29 大小:340.02KB
返回 下载 相关 举报
c语言课程设计报告-保研名额查询_第1页
第1页 / 共29页
c语言课程设计报告-保研名额查询_第2页
第2页 / 共29页
c语言课程设计报告-保研名额查询_第3页
第3页 / 共29页
c语言课程设计报告-保研名额查询_第4页
第4页 / 共29页
c语言课程设计报告-保研名额查询_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《c语言课程设计报告-保研名额查询》由会员分享,可在线阅读,更多相关《c语言课程设计报告-保研名额查询(29页珍藏版)》请在金锄头文库上搜索。

1、中国地质大学(武汉)C语言课程设计报告书姓 名:专 业:电子信息工程班级学号:指导老师:目 录一、课设题目* 1二、题目分析* 2三、设计思路* 2 3.1、设计思想* 2 3.2、总思路* 2 3.3、图示分析* 3四、各功能模块及其运行结果* 34.1、菜单和主函数* 34.2、基础模块* 44.3、功能函数* 7五课设总结 * * 12六附录(源代码)*14一、 课设题目u 题目:研究生推免(保研)排名统计程序u 具体内容:已知文本文件f1.txt中存放了某校应届大四学生的相关信息(不超过5000人),具体数据及存放格式为:每行存放一个学生的数据,共有7项,依次为:学号、姓名、专业必修课

2、平均成绩、科技活动奖励加分、社会活动奖励加分、是否有专业必修课挂科记录、是否通过大学英语四级。其中,学号为8位数字字符,其中前2位数字表示学生所在的学院,第3位数字表示学生的专业,第4-5位数字表示学生的年级,统一为09,第6位数字表示学生所在年级同专业内的编号,即所称的班号,第7-8位数字表示学生班级内的序号,如学号07509123表示,机电学院(07)通信工程专业(5)09级(09)1班(1)第23号(23)学生;姓名为长度不超过10个的字符;专业必修课平均成果、科技活动奖励加分、社会活动奖励加分均为0-100以内的整数(含0和100);是否有专业必修课挂科记录、是否通过大学英语四级均为0

3、或1两个整型数字,为1分别表示有专业必修课挂科记录或通过大学英语四级,为0分别表示没有专业必修课挂科记录或没有通过大学英语四级。该校的保研政策是:必须没有专业必修课挂科记录且通过大学英语四级考试,在此前提下,划分推免研究生指标。外推指标按专业排名,给予2%的指标,小数部分四舍五入。内推指标按班级排名,给予15的指标,小数部分四舍五入。如果某班有外推指标,外推指标不占内推指标。排名计算方法:专业必修课成绩占60%,科技活动奖励占30,社会活动奖励占10。请编写程序,读出文件f1.txt中的内容,再按保研政策确定每个人的保研状况(0表示没有获得推免资格,1表示获得内推资格,2表示获得外推资格)并存

4、入f2.txt中,并实现以下功能:(1)能够统计某个班所有获得保研资格的学生信息。(2)能够统计某个专业所有获得保研资格的学生信息。(3)能够统计哪个班获得的保研资格的学生人数最多。(4)能够统计全校所有获得外推资格的学生名单,其结果即可屏幕显示,也可存入文件。(5)学生可以根据姓名和学号查询自己是否获得保研资格。u 说明:系统程序要有界面存入文件f2.txt中的数据,每行存一个学生的数据,每行之间的不同信息用空格分隔。二、 题目分析该题目要求设计一个研究生推免(保研)排名统计查询系统,导入含有5000个考生信息的txt文本后,能实现统计某个班所有获得保研资格的学生信息;能够统计某个专业所有获

5、得保研资格的学生信息;能够统计哪个班获得的保研资格的学生人数最多;能够统计全校所有获得外推资格的学生名单,其结果即可屏幕显示,也可存入文件;学生根据姓名和学号查询自己是否获得保研资格的功能。要实现这么多功能,就需要一个可供选择的主菜单功能表,每个菜单都要链接到相应的程序实现相应功能,所以,整体就需要建立一个多分支选择结构。除此之外,为了方便用户查询,还要设计一个使考生只要不关闭程序或者按指定输入而结束程序就能一直查询下去的功能。三 设计思路3.1、设计思想(1) 将全局变量和局部变量结合使用,灵活运用。(2) 巧用指针,简化数据处理难度。(3) 以全局结构来随时定义结构数组。 (4) 以结构化

6、各个功能模块,函数间的调用精简整个函数。(7) 设置循环,实现多次查询。(6) 以冒泡方式比较大小排列出学生成绩成绩。(7) 以读一个打印一个的思想,实现显示全部信息。 (8) 以先判断再打印的思想,来实现查找推免状况 。3.2、总思路文本读取+排序+统计+查询可分为这样几个模块:读入文件模块、剔除挂科或四级未过者模块、全校成绩排序模块、识别院系模块、外推模块、识别班级(不包括外推者)模块、内推模块、保存文件模块。通过调用这些模块来实现题目要求的五大功能。3.3、图示分析1.按班级查询保研资格信息2.按专业查询保研信息主菜单3.统计保研资格名额最多班级4.统计全校获得外推资格名额5.根据学号查

7、询个人保研信息显示找到的信息7.退出程序6.根据姓名查询个人保研信息 四、各功能模块及其运行结果 4.1、菜单和主函数 将各个功能模块设计成菜单的选项模式,先输出在屏幕上,再获取用户的键盘输入“v”,由“v”的值进行一个多分枝选择结构,调用相应的功能程序模块。【源代码】void main() 【函数申明】 char INPUT_sub4,INPUT_cla7; /要输入的专业号、班号 char rec_sub4,rec_cla7; /用于识别专业号、班号char cInputString10; char v;load(a); /读取sort(a);/剔除sort_1(b);/全校排名dopri

8、ntf(nn);printf(/*欢迎使用保研信息查询系统*/nn);printf(请选择服务-1.按班级查询保研资格信息*/nn);printf(/*2.按专业查询保研信息*/nn);printf(/*3.统计保研资格名额最多班级/nn);printf(/*4.统计全校获得外推资格名额/nn);printf(/*5.根据学号查询个人保研信息/nn);printf(/*6.根据姓名查询个人保研信息/nn);printf(/*7.退出程序*/nn); scanf(%d,&v); 【获取键盘输入值v】getchar(); 【消除scanf对getchar的影响】switch(v) 【switch多

9、分支选择结构】 【输出功能菜单】case 1:printf(请输入要查询班级的院系编号,如072 *n);gets(INPUT_sub);printf(请输入要查询班级的班级编号,如072091n);gets(INPUT_cla);function_1(INPUT_sub,INPUT_cla,b); break; 【调用功能01函数】case 2: 【调用功能02函数】 default: break; while(v7);4.2、基础模块4.2.1、读入文件函数这个函数是整个程序更的根本条件,由于一个学生的信息包含多种不同类型的信息且是一个整体,所以要将学生的信息建立一个结构体,每个成员对应相

10、应的变量类型,由于部分学生的学号第一位为0,所以将学号定义为字符串,名字为字符串,成绩是整型,其他都可以用字符型的数组,开始判定文件f1是否存在,存在则执行while循环,从i=0读入文件。【源代码】int i=0;int load(struct student *a)FILE *fp1;if(fp1=fopen(f1.txt,r)=NULL) 【判断f1是否存在】 printf(cannot open this filen); 【不存在的情况】return 0; while(!feof(fp1) 【存在就直接执行while 循环】fscaf i+; 【依次读入文件】return(i); 【返回最后一名学生的位置】 4.2.2、剔除挂科或四级未过者这个函数是将全校挂科或者四级未过者(即无资格推免的学生)从总名单中提剔除,进而方便接下来的成绩排名工作,原理是将工作组a5000中所有学生资料依次提取,通过判断其中Fclass和CET4对应的数字0/1,来进行剔除,并将有资格保研的学生资料存入工作组b5000中。【源代码】int sort(struct student *a)int j,k=0;for(j=0;ji;j+) 【通过for循环逐个筛选】 if(aj.Fclass=0)&(aj.CET4=1) 【判断是否挂科或CET4未通过】 str

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号