今天练了一个综合训练,教务管理系统,可以对之前学习的有一个汇总
1. 综合训练
************欢迎进入海峰考务系统****************
1.添加学生成绩
2.查看所有学生成绩
3.根据学号查看成绩
4.查看成绩最高分和学号
5.查看成绩最低分和学号
6.查看成绩平均分
7.根据学号修改成绩
8.退出
*************************************************
请选择:
我的思路是这样的
#include<stdio.h>
#define INCREASE_SCORE 1
#define SEARCH_ALL 2
#define SEARCH_SCORE 3
#define MAX_SCORE 4
#define MIN_SCORE 5
#define AVE_SCORE 6
#define MODIFY_SCORE 7
#define EXIT 8
int students[10][2] = {0};
int index = 0;//当前学生个数
int menu();
void insertScore();
void searchAll();
void searchScore();
void maxScore();
void minScore();
void aveScore();
void modifyScore();
int main()
{
int option = 1;
while(option != 8)
{
option = menu();
switch(option)
{
case INCREASE_SCORE:
insertScore();
break;
case SEARCH_ALL:
searchAll();
break;
case SEARCH_SCORE:
searchScore();
break;
case MAX_SCORE:
maxScore();
break;
case MIN_SCORE:
minScore();
break;
case AVE_SCORE:
aveScore();
break;
case MODIFY_SCORE:
modifyScore();
break;
case EXIT:
break;
default:
printf("您的输入有误请重新输入\n");
}
}
printf("感谢使用!");
}
int menu()
{
int option;
printf("************欢迎进入海峰考务系统****************\n");
printf(" 1.添加学生成绩\n");
printf(" 2.查看所有学生成绩\n");
printf(" 3.根据学号查看成绩\n");
printf(" 4.查看成绩最高分和学号\n");
printf(" 5.查看成绩最低分和学号\n");
printf(" 6.查看成绩平均分\n");
printf(" 7.根据学号修改成绩\n");
printf(" 8.退出 \n");
printf("*************************************************\n");
printf("请选择:");
scanf("%d",&option);
return option;
}
void insertScore() //添加学生成绩
{
int id, score;
char option = 'y';
while(option == 'y')
{
printf("请输入学号:\n");
scanf("%d", &id);
printf("请输入成绩:\n");
scanf("%d", &score);
if(index >= 10)
{
printf("信息录入已满\n");
}
else
{
students[index][0] = id;
students[index][1] = score;
index++;
printf("添加成功\n");
printf("是否继续添加?(y/n)\n");
getchar();
scanf("%c", &option);
}
}
}
void searchAll() //查看所有学生成绩
{
printf("所有学生的成绩是:\n学号 成绩\n");
for(int i = 0; i < index; i++)
{
printf("%d %d\n", students[i][0], students[i][1]);
}
}
void searchScore() //根据学号查看成绩
{
int id;
printf("请输入您想查找的学号:\n");
scanf("%d", &id);
for(int i = 0; i < index; i++)
{
if(students[i][0] == id)
{
printf("这位同学的成绩是:%d\n", students[i][1]);
}
}
}
void maxScore() //查看成绩最高分和学号
{
int i;
int max = students[0][1];
for(i = 0; i < index; i++)
{
if(max < students[i][1])
{
max = students[i][1];
}
}
printf("这次考试的最高成绩是%d\n", max);
printf("成绩最高的同学是:\n");
for(i = 0; i < index; i++)
{
if(max == students[i][1])
{
printf("%d\n", students[i][0]);
}
}
}
void minScore() //查看成绩最低分和学号
{
int i;
int min = students[0][1];
for(i = 0; i < index; i++)
{
if(min > students[i][1])
{
min = students[i][1];
}
}
printf("这次考试的最低成绩是%d\n", min);
printf("成绩最低的同学是:\n");
for(i = 0; i < index; i++)
{
if(min == students[i][1])
{
printf("%d\n", students[i][0]);
}
}
}
void aveScore() //查看成绩平均分
{
int sum = 0;
for(int i = 0; i < index; i++)
{
sum += students[i][1];
}
printf("这次考试的平均分是:%d\n", sum / index);
}
void modifyScore() //根据学号修改成绩
{
int i;
int id;
int score;
printf("请输入您想修改成绩的人的学号:\n");
scanf("%d", &id);
for(i = 0; i < index; i++)
{
if(students[i][0] == id)
{
break;
}
}
printf("请输入您想修改的成绩:\n");
scanf("%d", &score);
students[i][1] = score;
printf("修改成功\n");
}
总结:
这个综合训练,练到了全局变量、if...else判断、switch选择、while循环,for循环,以及自定义函数,函数的调用、以及宏定义,数组,虽然定义了二维数组,但是对其操作的训练其实还是一维数组的练习,这个练习题很好的巩固了以前的知识,希望以后可以多做一些这样的训练