- 需求分析:
1.设计题目:C语言成绩统计系统
2.系统功能需求分析:
因不了解具体系统功能需求,多方询问后了解该系统大概需要输入学生成绩、统计平均成绩、统计及格率、查找学生成绩、修改学生成绩、输出学生成绩清单、退出程序七个模块,因学生信息方面过于繁杂,故我设计为学生学号代表学生,避免了需要输入过多学生信息导致程序混乱的情况。
- 概要设计:
系统总体设计框架:
- 详细设计:
该程序主要运用do-while语句和switch开关语句,结构简单。
- 调试分析过程描述:
- 测试数据:程序1输入五位学生成绩,分别为80、90、70、80、80;程序2统计平均成绩,输出结果为80;程序3统计及格率,输出结果及格率为100%;程序4查找学生成绩,选择查找学号为3的学生,结果为90;程序5修改学生成绩,选择修改学号为4和5的学生,修改为85、75;程序6输出成绩清单,输出清单正确;程序7退出程序,程序结束。
- 测试分析结果:该程序运行结果均正确,程序设计过于简单也存在一方面原因。
程序代码
#include<stdio.h>
void main()
{
int sel,i=0,x,y,n;
double sum,ave=1,count=0,a[999];
do
{
printf("\n");
printf("\t************************************\n");
printf("\t* =========================== *\n");
printf("\t* C语言成绩统计系统 *\n");
printf("\t* =========================== *\n");
printf("\t* *\n");
printf("\t* 输入学生成绩---------1 *\n");
printf("\t* 统计平均成绩---------2 *\n");
printf("\t* 统计及格率-----------3 *\n");
printf("\t* 查找学生成绩---------4 *\n");
printf("\t* 修改学生成绩---------5 *\n");
printf("\t* 输出学生成绩清单-----6 *\n");
printf("\t* 退出系统-------------7 *\n");
printf("\t* *\n");
printf("\t************************************\n");
printf("\t请输入选项(1-7):");
scanf("%d",&sel);
switch(sel)
{
case 1:
printf("执行输入学生成绩命令。\n");
printf("\t请输入学生人数(0-999):");
scanf("%d",&n);
printf("\t\t学号\t成绩\n");
do
{
printf("\t\t[%d]\t",i+1);
scanf("%lf",&a[i]);
i++;
}while(i<n);
break;
case 2:
printf("执行统计平均成绩命令。\n");
sum=0;
for(i=0;i<n;i++)
sum+=a[i];
ave=sum/n;
printf("平均成绩为%.1f\n",ave);
break;
case 3:
printf("执行统计及格率命令。\n");
for(i=0;i<n;i++)
if(a[i]>=60)
count++;
printf("及格率为%.1f%%\n",count/n*100);
break;
case 4:
printf("执行查找学生成绩命令。\n");
do
{
printf("请输入需查找的学生的学号(输入非法数据退出):");
scanf("%d",&x);
if(x>0&&x<=n)
printf("\t[%d]\t%.1f\n",x,a[x-1]);
else
break;
}while(1);
break;
case 5:
printf("执行修改学生成绩命令。\n");
do
{
printf("请输入需修改的学生的学号(输入非法数据退出):");
scanf("%d",&y);
if(y>0&&y<=n)
{
printf("\t[%d]\t%.1f\n",y,a[y-1]);
printf("\t请输入改动后的分数:");
scanf("%lf",&a[y-1]);
}
else
break;
}while(1);
break;
case 6:
printf("执行输出学生成绩清单命令。\n");
for(i=0;i<n;i++)
{
printf("\t\t[%d]\t",i+1);
printf("%.2lf\n",a[i]);
}
break;
case 7:
printf("退出系统。再见!\n");
break;
default:
printf("输入错误!\008\n");
break;
}
}while(sel>0&&sel!=7);
}