学生成绩分布统计_第1页
学生成绩分布统计_第2页
学生成绩分布统计_第3页
学生成绩分布统计_第4页
学生成绩分布统计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

第第页学生成绩分布统计同学成果分布统计

一、课程设计时间

2022年第2学期第15周,即6月13日~6月17日,共计1周,20学时。

二、课程设计内容

用C语言编写软件完成以下任务:

用C语言编写软件模拟数字化成果管理,用户界面中的菜单至少包括“读取数据、”“按学号或姓名查询、”“统计各分数段人数、”“退出”4项;

读取数据:C语言其中考试成果保存在文件file29.te*t中,数据格式为:学号,姓名,成果;

按学号和姓名查询:实现成果查询

统计各分数段人数:分数段指不及格、及格、中等、良好、优秀5种成果,能够统计个分数段的人数。

沈阳航空航天高校设计用纸

目次

一、需求分析1

二、设计分析2

三、主要界面截图7

四、技术要点8

五、个人总结11

六、

一、需求分析

依据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。

1、安全性分析

这个系统涉及到同学的信息比较大,其中包括同学的学号及同学的姓名。是一些比较隐私的信息。能够实现许多同学信息的查询。这里就涉及到同学信息的安全性问题,所以我这个程序要很好的把安全性做好。

2、稳定性分析

这个系统涉及到的信息量比较大,假如操得步骤不正确。那么系统间就会不好用,整个程序就会功亏一篑,所以我们要保证操操作的正确性,整个程序才能正确稳定的进行。

3、经过对程序的分析讨论,可知这个程序有四个功能,读取数据、按学号或姓名查询、统计个分数段人数、退出等

4、读取数据需要一个函数,我把它定义为“duqu”它要实现的是从电脑的磁盘中吧需要的数据读取出来。

5、按学号和姓名的查询,在这里我有需要一个查

询函数,我定义它为“cha*un”,当输入学号或姓名是要有结果。

6、统计各个分数段的人数,需要一个计数函数,她要用到我们所学的“switchcase”循环这里你要统计出不及格、及格、中、良好、优秀的人数

二、设计分析

有分析可知。我所设计的这个程序有四部分组成,每一部分都采纳了一个自定义函数来完成。也就是有三个自定义函数来完成它。最末是退出。

自定义函数duqu,他是的功能是从电脑的磁盘中读取出来所需的数据

自定义函数cha*un是要是想查询的功能,也就是说当输入学号或姓名是能在知道他的成果

自定义函数all是进行人数统计的,也就是,不及格、及格、中、良好、优秀的人数。

1、程序总体结构图

2、N-S结构框图

3、主要功能模块框图

〔1〕读取同学信息

〔2〕同学成果查询

图2同学信息查询

3〕统计同学成果

图3

三、主要界面截图

图1

程序主界面及读取界面

图2成果查询及统计界面

1、结构体的应用来描述同学的基本信息。详细程序段

如下:

structstudent/*定义结构体*/

{charnum[10];

charname[20];

intscore;

}stud[ren];

2、文件的读取

主要就是充分运用老师所给的数据,来完成我的整个程序,那么我是运用已有的函数来打开这个文件的。这个函数是fopen函数。它主要的功能就是从计算机中读取数据。如下就是我的读取文件的程序。在这里指针文件指向我用文件的地址,用来方便查找文件。文件是以只读的形式打开的。

inti;

FILE*fp;/*定义一个变量指向FILE*/

fp=fopen(d:\\file29.t*t,r);/*以只读的形式打开文件*/for(i=0;iren;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多分枝结构选择的运用。那么下面就是我的程序,在这里可以实现对同学成果的学号查询和姓名查询。这样也是程序更加的合理化,更加的简约,明白。

{inti,flag=0,a;charb[100],*[20];

printf(请选择:1.学号2.姓名\n);

scanf(%d,a);

switch(a)/*选择语句*/

{case1:printf(输入学号:\n);scanf(%s,*);

for(i=0;i25;i++)

if(strcmp(stud[i].num,*)==0)

{printf(分数:%d\n,stud[i].fen);

flag=1;

}

if(flag==0)printf(没有此人!\n);break;

case2:printf(输入姓名:\n);scanf(%s,b);

for(i=0;i25;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那么优秀的人增加一个,否那么继续向下执行,知道判断玩这个人在进行下一个人的判断,直到最末涌现我要的结果。下面就是我的程序

inti,a=0,b=0,c=0,d=0,e=0;

for(i=0;i25;i++)

{if(stud[i].score=90)a++;

elseif(stud[i].score=80)b++;

elseif〔stud[i].score80)c++;

elseif(stud[i].score70)d++;

elseif(stud[i].score60)e++;

}

printf(=90优秀的人数:\t%d\n90,=80良好的人数:

\t%d\n80,=70中等的人数:\t%d\n70,=60几个的人数:\t%d\n60不及格的人数:\t%d\n,a,b,c,d,e);

这样下来我的程序基本就完成了,整个过程我运用了最基本的c语言知识,其中包括for循环,switchcase分支结构,ifelse选择语句。

五、个人总结

通过这一周的C语言课程设计,我又进一步的学习了C语言知识,也学会了真正的去编写一个实际应用的程序,真正的吧课堂学到的东西运用到现实生活中,虽然编程的过程很困难,很愁人,但是当我真的编写出来、运行出来心里那份满意感是无法用语言来形容的,说不出来,但是真的很快乐。当然在这个过程中我也遇到了许多的困难,有的也真是我自己解决不了的,在这里也费城感谢那些给我援助的老师同学。有了你们我的课设才会这么顺当。

六、

七、源程序

#includestdio.h

#includestring.h

#includestdlib.h

#defineren25

structstudent/*定义结构体*/

{charnum[10];

charname[20];

intscore;

}stud[ren];

voidduqu()/*读取函数*/

{inti;

FILE*fp;/*定义一个变量指向FILE*/

fp=fopen(d:\\file29.t*t,r);/*以只读的形式打开文件*/for(i=0;iren;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);

}

voidcha*un()/*查询函数*/

{inti,flag=0,a;charb[100],*[20];

printf(请选择:1.同学学号2.同学姓名\n);

scanf(%d,a);

switch(a)/*选择语句*/

{case1:printf(输入同学学号:\n);scanf(%s,*);

for(i=0;i25;i++)

if(strcmp(stud[i].num,*)==0)

{printf(分数:%d\n,stud[i].score);

flag=1;

}

if(flag==0)printf(查询没有此人!\n);break;

case2:printf(输入同学姓名:\n);scanf(%s,b);

for(i=0;i25;i++)

if(strcmp(stud[i].name,b)==0)

{printf(%d\n,stud[i].score);

flag=1;break;

}

if(flag==0)printf(查询没有此人!\n);break;

}

}

voidall()/*统计函数*/

{inti,a=0,b=0,c=0,d=0,e=0;

for(i=0;i25;i++)

{if(stud[i].score=90)a++;

elseif(stud[i].score=80)b++;

elseif(stud[i].score80)c++;

elseif(stud[i].score70)d++;

elseif(stud[i].score60)e++;

}

printf(=90优秀的人数:\t%d\n90,=80良好的人数:\t%d\n80,=70中等的人数:\t%d\n70,=60几个的人数:\t%d\n60不及格的人数:\t%d\n,a,b,c,d,e);

}

voidmain()/*主函数*/

{printf(************************************************\n);printf(******欢迎您进入同学成果分布系******\n);printf(*******1:读取数据*******\n);printf(******2:按学号或姓名查询成果******\n);printf(******3:统计各分数段人数******\n);printf(4:退出系统\n);

printf(************************************************\n);while(1)

{intch;

printf(输入你的选择:\n);

scanf(%d,ch);

switch(ch)/*选择语句*/{case1:duqu();break;

case2:cha*un();break;

case3:all();break;

case4:e*it(0);break;

default:printf(错误,请按任意键继续!\n);break;}

}

}

同学成

温馨提示

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

评论

0/150

提交评论