学生成绩分布统计
更新时间:2023-07-24 08:15:01 阅读量: 实用文档 文档下载
学生成绩分布统计
一、课程设计时间
2011年第2学期第15周,即6月13日~6月17日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
用C语言编写软件模拟数字化成绩管理,用户界面中的菜单至少包括“读取数据、”“按学号或姓名查询、”“统计各分数段人数、”“退出”4项;
读取数据:C语言其中考试成绩保存在文件file29.text中,数据格式为:学号,姓名,成绩;
按学号和姓名查询:实现成绩查询
统计各分数段人数:分数段指不及格、及格、中等、良好、优秀5种成绩,能够统计个分数段的人数。
沈阳航空航天大学设计用纸
目录
一、需求分析 ........................... 1
二、设计分析 ........................... 2
三、主要界面截图 ....................... 7
四、技术要点 ........................... 8
五、个人总结 .......................... 11
六、参考文献 .......................... 11
七、源程序 ............................ 12
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
1、安全性分析
这个系统涉及到学生的信息比较大,其中包括学生的学号及学生的姓名。是一些比较隐私的信息。能够实现很多学生信息的查询。这里就涉及到学生信息的安全性问题,所以我这个程序要很好的把安全性做好。
2、 稳定性分析
这个系统涉及到的信息量比较大,如果操作者得步骤不正确。那么系统间就会不好用,整个程序就会功亏一篑,所以我们要保证操作者操作的正确性,整个程序才能正确稳定的进行。
3、经过对程序的分析研究,可知这个程序有四个功能,读取数据、按学号或姓名查询、统计个分数段人数、退出等
4、读取数据需要一个函数,我把它定义为“duqu”它要实现的是从电脑的磁盘中吧需要的数据读取出来。
5、 按学号和姓名的查询,在这里我有需要一个查
询函数,我定义它为“chaxun”,当输入学号或姓名是要有结果。
6、统计各个分数段的人数,需要一个计数函数,她要用到我们所学的“switch case”循环这里你要统计出不及格、及格、中、良好、优秀的人数
二、设计分析
有分析可知。我所设计的这个程序有四部分组成,每一部分都采用了一个自定义函数来完成。也就是有三个自定义函数来完成它。最后是退出。
自定义函数duqu,他是的功能是从电脑的磁盘中读取出来所需的数据
自定义函数chaxun是要是想查询的功能,也就是说当输入学号或姓名是能在知道他的成绩
自定义函数all是进行人数统计的,也就是,不及格、及格、中、良好、优秀的人数。
1 、程序总体结构图
2、N-S结构框图
3、主要功能模块框图
(1)读取学生信息
(2)学生成绩查询
图2学生信息查询
3)统计学生成绩
图3
三、主要界面截图
图1
程序主界面及读取界面
图2成绩查询及统计界面
1、 结构体的应用来描述学生的基本信息。具体程序段
如下:
struct student/*定义结构体*/
{ char num[10];
char name[20];
int score;
}stud[ren];
2、 文件的读取
主要就是充分运用老师所给的数据,来完成我的整个程序,那么我是运用已有的函数来打开这个文件的。这个函数是fopen函数。它主要的功能就是从计算机中读取数据。如下就是我的读取文件的程序。在这里指针文件指向我用文件的地址,用来方便寻找文件。文件是以只读的形式打开的。
int i;
FILE *fp; /*定义一个变量指向FILE*/
fp=fopen("d:\\file29.txt","r"); /*以只读的形式打开文件*/ for(i=0;i<ren;i++)
{ fscanf(fp,"%s\t%s\t%d\n",stud[i].num,stud[i].name,&stud[i].score);
printf("%s\t%s\t%d\n",stud[i].num,stud[i].name,stud[i].score); }fclose(fp)
3、 成绩的查询
在这里主要的功能是实现对学生成绩的查询,在这里由两种方法可以查询成绩,第一种通过数日学生的学号对成绩的查询,另一种方法是通过输入学生的姓名对成绩进行查询。这两种方法是独立的,是不互相影响的,在这里我只要运用的是switch ..case多分枝结构选择的运用。那么下面就是我的程序,在这里可以实现对学生成绩的学号查询和姓名查询。这样也是程序更加的合理化,更加的简单,明了。
{int i,flag=0,a;char b[100],x[20];
printf("请选择:1.学号 2.姓名\n");
scanf("%d",&a);
switch(a) /*选择语句*/
{ case 1:printf("输入学号:\n");scanf("%s",x);
for(i=0;i<25;i++)
if(strcmp(stud[i].num,x)==0)
{ printf("分数:%d\n",stud[i].fen);
flag=1;
}
if(flag==0) printf("没有此人!\n");break;
case 2:printf("输入姓名:\n"); scanf("%s",b);
for(i=0;i<25;i++)
if (strcmp(stud[i].name,b)==0)
{ printf("%d\n",stud[i].fen);
flag=1;break;
}
if(flag==0) printf("没有此人!\n");break;
}
4、 成绩的统计
我要统计该班级有多少人是优秀,多少人是良好,多少人是中等,多少人及格,多少人不及格。这样是班级的成绩更加明了,但是这一步也是非常的麻烦,一不小心就会出错,所以这部我选择了比较保险的步骤,if .else结构。这样我的程序就是顺次向下执行,如果成绩符合大于90那么优秀的人增加一个,否则继续向下执行,知道判断玩这个人在进行下一个人的判断,直到最后出现我要的结果。下面就是我的程序
int i,a=0,b=0,c=0,d=0,e=0;
for(i=0;i<25;i++)
{ if(stud[i].score>=90) a++;
else if(stud[i].score>=80) b++;
else if(stud[i].score<80) c++;
else if(stud[i].score<70) d++;
else if(stud[i].score<60) e++;
}
printf(">=90 优秀的人数:\t%d\n<90,>=80良好的人数:
\t%d\n<80,>=70中等的人数:\t%d\n<70,>=60几个的人数:\t%d\n<60 不及格的人数:\t%d\n",a,b,c,d,e);
这样下来我的程序基本就完成了,整个过程我运用了最基本的c语言知识,其中包括for循环,switch case分支结构,if else选择语句。
五、个人总结
通过这一周的C语言课程设计,我又进一步的学习了C语言知识,也学会了真正的去编写一个实际应用的程序,真正的吧课堂学到的东西运用到现实生活中,虽然编程的过程很困难,很愁人,但是当我真的编写出来、运行出来心里那份满足感是无法用语言来形容的,说不出来,但是真的很开心。当然在这个过程中我也遇到了很多的困难,有的也真是我自己解决不了的,在这里也费城感谢那些给我帮助的老师同学。有了你们我的课设才会这么顺利。
六、参考文献
1 谭浩强.C程序设计.北京:清华大学出版社,2005 2 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006
七、源程序
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define ren 25
struct student/*定义结构体*/
{ char num[10];
char name[20];
int score;
}stud[ren];
void duqu() /*读取函数*/
{ int i;
FILE *fp; /*定义一个变量指向FILE*/
fp=fopen("d:\\file29.txt","r"); /*以只读的形式打开文件*/ for(i=0;i<ren;i++)
{ fscanf(fp,"%s\t%s\t%d\n",stud[i].num,stud[i].name,&stud[i].score); printf("%s\t%s\t%d\n",stud[i].num,stud[i].name,stud[i].score); }fclose(fp);
}
void chaxun() /*查询函数*/
{ int i,flag=0,a;char b[100],x[20];
printf("请选择:1.学生学号 2.学生姓名\n");
scanf("%d",&a);
switch(a) /*选择语句*/
{ case 1:printf("输入学生学号:\n");scanf("%s",x);
for(i=0;i<25;i++)
if(strcmp(stud[i].num,x)==0)
{ printf("分数:%d\n",stud[i].score);
flag=1;
}
if(flag==0) printf("查询没有此人!\n");break;
case 2:printf("输入学生姓名:\n"); scanf("%s",b);
for(i=0;i<25;i++)
if (strcmp(stud[i].name,b)==0)
{ printf("%d\n",stud[i].score);
flag=1;break;
}
if(flag==0) printf("查询没有此人!\n");break;
}
}
void all() /*统计函数*/
{ int i,a=0,b=0,c=0,d=0,e=0;
for(i=0;i<25;i++)
{ if(stud[i].score>=90) a++;
else if(stud[i].score>=80) b++;
else if(stud[i].score<80) c++;
else if(stud[i].score<70) d++;
else if(stud[i].score<60) e++;
}
printf(">=90 优秀的人数:\t%d\n<90,>=80良好的人数:\t%d\n<80,>=70中等的人数:\t%d\n<70,>=60几个的人数:\t%d\n<60 不及格的人数:\t%d\n",a,b,c,d,e);
}
void main() /*主函数*/
{ printf("************************************************\n"); printf("***&&&*** 欢迎您进入学生成绩分布系 ***&&&***\n"); printf("***&*&*** 1:读取数据 ***&*&***\n"); printf("***&&&*** 2:按学号或姓名查询成绩***&&&***\n"); printf("***&&&*** 3:统计各分数段人数 ***&&&***\n"); printf(" 4:退出系统 \n");
printf("************************************************\n"); while(1)
{ int ch;
printf("输入你的选择:\n");
scanf("%d",&ch);
switch(ch) /*选择语句*/ { case 1:duqu();break;
case 2:chaxun ();break;
case 3:all ();break;
case 4:exit (0);break;
default: printf("错误,请按任意键继续!\n");break; }
}
}
正在阅读:
学生成绩分布统计07-24
长沙旅游资源开发策略探讨05-12
2010届《高考风向标》(理科)数学 第十九章 推理与证明04-15
【2015——2016学年上学期期末考试数学试题】2015-2016学年人教版七年级上期末测试数学试题及答案05-29
2016年西南财经大学435考研真题(完整版)凯程首发08-12
典故歇后语02-19
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 分布
- 成绩
- 统计
- 学生
- 甲级单位编制印刷鞋跟项目可行性报告(立项可研+贷款+用地+2013案例)设计方案
- 我国汽车财务公司发展问题及对策研究_吕娟
- 酶解速溶保健南瓜粉加工技术研究
- 申报中学体育高级教师述职报告
- 第7章 标准件与齿轮
- 第1章 图像处理基础知识
- 临沂移动代维培训考试题目
- 人教版数学二年级上册教学总结
- 2017年云南省中考物理学业水平试卷
- CPA考试会计科目学习笔记-第十一章收入、费用和利润05
- 铝合金铸件的金属型铸造
- 泰安市基础教育教学工作基本规程
- 山西内蒙古煤炭企业
- 初二数学上册第二章实数
- DQ4.7.2.1 防雷引下线及接闪器安装检验批质量验收记录
- 经典推荐红烧肉的15种经典做法
- 确保文明施工的技术组织措施(幕墙工程超全)
- 2012高考地理冲刺--宇宙中的地球_专题复习
- Book7Unit1-writing(基础写作建议信)
- 02第二讲:随机过程概念及数字特征