石景山网站制作,网站建设首选亿企联盟,网站建设更新不及时 整改报告,清远市清城区网站建设公司1.系统运行#xff0c;打开如下界面。列出系统帮助菜单#xff08;即命令菜单#xff09;#xff0c;提示输入命令 2.开始时还没有录入成绩#xff0c;所以输入命令 L 也无法列出成绩。应提示“成绩表为空#xff01;请先使用命令 T 录入学生成绩。” 同理#xff0c;当…1.系统运行打开如下界面。列出系统帮助菜单即命令菜单提示输入命令 2.开始时还没有录入成绩所以输入命令 L 也无法列出成绩。应提示“成绩表为空请先使用命令 T 录入学生成绩。” 同理当输入其他的成绩处理命令时也作相应的处理。 3.输入命令 T调用Type子函数录入成绩。界面提示输入学生人数 输入3 后提示输入3名学生的3门课成绩列出成绩单的表头“学号 语文 数学 英语”提示学号1 输入1号学生的3门课成绩用空格间隔回车结束。提示学号2 以此类推直到输入结束 4.输入命令 L 调用List子函数输出成绩表。List子函数调用结束返回。提示输入命令。 5.输入命令 A 调用Average子函数计算平均分提示“平均分已计算。请使用命令L查看。” Average子函数调用结束返回。提示输入命令。 输入命令 L 调用List子函数输出成绩表。List子函数调用结束返回。提示输入命令。 6.输入命令 P 调用Sort子函数将各学生记录按平均分由高到低排序提示“完成排序。请使用命令L查看。” Sort子函数调用结束返回。提示输入命令。 输入命令 L 调用List子函数输出成绩表。List子函数调用结束返回。提示输入命令。 7.输入命令 S 调用Search子函数查询学生成绩提示“输入要查询的学生学号”。 输入3 找到3号学生的成绩并输出。Search子函数调用结束返回。提示输入命令。 8.输入命令C 执行清屏函数语句system(clear); 清除屏幕的所有内容。提示输入命令。 9.输入命令H 调用Help子函数显示帮助菜单。Help子函数调用结束返回。提示输入命令。 10.输入命令Q 则退出系统。
11.构造思想
1输出数组元素时要将学号单独处理输出为整数即保留0位小数。同理在计算成绩时也要将第1列的学号撇开只计算第2列之后的。成绩保留2位小数。
2学生人数n贯穿始终通过n的值判断当前命令的子函数是否能够调用执行。例如当n0时说明还没有录入成绩。而一旦输入命令T也即调用Type子函数录入了成绩则n的值就不再是0。当n0时就可以进行其他的成绩操作。
代码展示
#include stdio.h
#include string.h
#include stdlib.h
struct student // 定义结构体数组用来存放学生信息
{int num;float Chinese;float math;float English;float average;
} stu[32];
void Help(); // 声明函数
int Type(struct student *p, int n);
void List(int n);
void Average(int n);
void paixu(int n);
void Search(int n);
int main(int argc, char const *argv[])
{Help(); // 调用帮助菜单函数char ml;int n 0;while (1) // 重复输入命令{printf(请输入命令);scanf( %c, ml);if (ml C)system(clear); // 输入C时触发清屏函数else if (ml Q)break; // 输入Q时退出程序else if (ml T)n Type(stu, n); // 输入T时调用Type函数录入信息else if (n 0) // 当学生人数为0时无法使用其它命令需要先录入信息printf(成绩表为空!请先使用命令T录入学生成绩\n);else if (n ! 0){if (ml H)Help(); // 当输入H时调用Help函数打开帮助菜单else if (ml L)List(n); // 输入L时调用List函数列出学生信息else if (ml A)Average(n); // 输入A时调用Average函数计算平均分else if (ml P)paixu(n); // 输入P时调用paixu函数进行排序else if (ml S)Search(n); // 输入S时调用Search函数进行查询}getchar(); // 回收垃圾字符}return 0;
}
int Type(struct student *p, int n) // 录入信息函数
{int num;printf(请输入学生人数:);scanf(%d, num);printf(请输入%d个学生的成绩\n, num);printf(学号 语文 数学 外语\n);for (int a n; a n num; a) // for循环遍历录入信息{printf(%d , a 1);stu[a].num a 1;scanf(%f %f %f, stu[a].Chinese, stu[a].math, stu[a].English);}n num n;return n; // 返回学生人数
}
void Help() // 帮助菜单
{printf(**************************************\n);printf(* 学生成绩管理系统————帮助菜单 *\n);printf(**************************************\n);printf(* H显示帮助菜单 *\n);printf(* T成绩录入 *\n);printf(* A计算学生平均分 *\n);printf(* L列出成绩表 *\n);printf(* P按平均成绩由高到低排序 *\n);printf(* S按学号查询学生成绩 *\n);printf(* C清屏 *\n);printf(* Q退出系统 *\n);printf(**************************************\n);printf( Copyright c 2024.08.06 By zhr\n);
}
void List(int n) // 列出学生信息函数
{printf(学生成绩如下:\n);printf(学号 语文 数学 外语 平均分\n);for (int a 0; a n; a) // for循环遍历结构体数组{printf(%d %.2f %.2f %.2f %.2f, stu[a].num, stu[a].Chinese, stu[a].math, stu[a].English, stu[a].average);printf(\n);}
}
void Average(int n) // 计算平均分函数
{for (int a 0; a n; a)stu[a].average (stu[a].Chinese stu[a].English stu[a].math) / 3;printf(平均分已计算,请使用命令L查看\n);
}
void paixu(int n) // 排序函数
{struct student stu1[32];if (stu[0].average 0) // 平均分未计算时无法排序printf(无法排序,请先使用命令A计算平均分\n);else{for (int a 0; a n - 1; a){for (int b 0; b n - 1 - a; b){if (stu[b].average stu[b 1].average){stu1[b] stu[b]; // 通过交换结构体数组进行排序stu[b] stu[b 1];stu[b 1] stu1[b];}}}printf(已完成排序,请使用命令L查看\n);}
}
void Search(int n)
{int num;printf(请输入要查询的学生的学号:);scanf(%d, num);printf(学号 语文 数学 外语 平均分\n);for (int a 0; a n; a)if (stu[a].num num) // 通过学号打印学生信息printf(%d %.2f %.2f %.2f %.2f\n, stu[a].num, stu[a].Chinese, stu[a].math, stu[a].English, stu[a].average);
}