当前位置:文档之家› 成绩统计系统c语言

成绩统计系统c语言

成绩统计系统一目的通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C 语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用(时间函数、绘图函数以及文件的读写操作函数等);复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。

二需求分析1、本程序要求输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段0~49, 50~59, 60~69,70~79, 80~89, 90~100的人数及占总人数的百分比。

要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。

输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。

2、本程序采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。

学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。

系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。

程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。

编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。

三概要设计1、本程序包含两个模块:(1)主程序模块:Main(){用switch语句控制菜单功能;Switch语句调用分支函数完成各个功能;}(2)主程序模块调用的个分支函数:menu() 控制菜单的格式输出;input() 输入考试的信息;statistics()输入学生成绩信息,并进行分数段统计;2、程序中抽象数据类型定义:int choice;控制switch语句选择调用个分支函数,完成各个功能;Char date[]存放日期,完成日期的输入输出;char course[20];存放课程名称;int classNO;存放班级号码;char name[100];存放学生姓名,最大存储数量100;int number[100];存放学生学号;int score[100];存放学生考试分数,用于统计数据;程序流程图如下:显示主菜单界面输入choice的Choice=1输入考试信息2输入成绩信息3退出小工具Else 输出考试信息开始輸入學生成績统计分数所在分数段输出统计结果结束四详细设计(1)主程序模块:main(){for(;;) {menu();printf("Please input you choice here:");scanf("%d",&choice);if(choice>=1&&choice<=3) //switch控制菜单界面switch(choice){case 1:input(); break;case 2:statistics(); break;case 3:exit(0);}else printf("Sorry,your choice is not right,please choose again.");printf("\n Press any key to continue...");getch();clrscr(); }}(2)主菜单显示模块:void menu(){ //控制菜单输出样式printf("\n**************************************************************\n" );printf("\n Welcome to Use the tool ");printf("\n 1.Input information ");printf("\n 2.Statistics score ");printf("\n 3.Eixt ");printf("\n**************************************************************");printf("\n");}(3)输入考试信息模块:void input() {printf("\nPlease input date(y-m-d):");//输入日期scanf("%s",&date);printf("Please input the course:");//输入课程名scanf("%s",&course);printf("Please input the classNO:");//输入班级号scanf("%d",&classNO);}(4)分数段统计模块:void statistics(){int i=0,count[6]={0,0,0,0,0,0};int j=0; int A=0,B=0; //局部变量定义printf("**********************");printf("\n课程名称: %s",course);printf("\n考试时间: %s",date);printf("\n学生班号: %d",classNO);printf("\n**********************");printf("\n请输入统计的学生人数:");scanf("%d",&j);printf("\n请输入一个学生的姓名学号 A题分数 B题分数:\n");for(i=0;i<j;i++){scanf("%s%d%d%d",&name[i],&number[i],&A,&B);score[i]=A+B;printf("此学生的总分数是:");printf("%d+%d=%d",A,B,score[i]); //统计各分数段人数if(score[i]>=0&&score[i]<50) count[0]++;Else if(score[i]>=50&&score[i]<60) count[1]++;Else if(score[i]>=60&&score[i]<70) count[2]++;Else if(score[i]>=70&&score[i]<80) count[3]++;Else if(score[i]>=80&&score[i]<90) count[4]++;Else if(score[i]>=90&&score[i]<=100) count[5]++;}printf("\nThe reasult of Statistics score:\n");printf("分数段 0~49统计结果: %d^…^%.1f%%\n",count[0],(float)count[0]/j*100);printf("分数段50~59统计结果: %d^…^%.1f%%\n",count[1],(float)count[1]/j*100);printf("分数段60~69统计结果: %d^…^%.1f%%\n",count[2],(float)count[2]/j*100);printf("分数段70~79统计结果: %d^…^%.1f%%\n",count[3],(float)count[3]/j*100);printf("分数段80~89统计结果: %d^…^%.1f%%\n",count[4],(float)count[4]/j*100);printf("分数段90~100统计结果: %d^…^%.1f%%\n",count[5],(float)count[5]/j*100);system("pause");}五调试分析程序设计调试分析过程中bug出现很多,下面列出几个代表性错误(1)D:\Program Files\Microsoft Visual Studio\MyProjects\zzzzz\zz.cpp(33) : error C2065: 'clrscr' : undeclared identifier执行 cl.exe 时出错.zz.obj - 1 error(s), 0 warning(s)原因分析:c与c++设计时,对语句的使用混淆,clrscr();语句只能在turbo c中使用,当在vc中实现同样效果要调用system("cls");(2)再输入所有学生的各题分数后,跳出运行界面,不运行分数段统计部分的代码,程序出现强行终止.原因分析:printf("分数段 0~49统计结果: %d^…^%.1f%%\n",count[0],(float)count[0]/j*100); 在统计结束输出时,输出类型不匹配,要将百分比输出由整形格式强制转化成双精度型;(3)运行姓名、学号、分数输入语句:scanf("%s,%d,%d,%d",&name[i],&number[i],&A,&B);不能完成姓名后面参数的输入以及后面的传值.原因分析:输入格式控制中的%s后跟的“,”从键盘输入时归并到了名字的字符数组中,也就不能完成学好分数的输入了,由于字符数组输入时会以第一个空格符结束一个字符串,因此输入过程中用空格把输入的每一部分隔开六测试结果经过调试以后程序基本能正常运行(1)菜单界面(2)选择1,输入考试的日期、科目、班级号码(3)选择2,输出考试的日期、科目、班级号码,提示统计学生人数,并提示输入每个学生的姓名、学号、A题型和B题型分数经检测,输出统计结果正确无误七用户使用说明进入小工具界面后,出现以下菜单:*********************************************************欢迎使用分数段统计工具1.输入考试方面信息2.输入统计学生分数3.退出*********************************************************选择1,会依次提示你输入考试日期、科目、班级号码,输入完成跳回菜单界面;选择2,会在开始显示你前面输入的考试日期、科目、班级号码,提示你输入要统计的学生人数,然后要求你依次输入各个学生的姓名、学号、A、B题的得分,并自动求其总分数,输入所有学生的信息后,程序自动得出各分数段统计结果(人数和百分比);选择3,退出小工具。

相关主题