设计一个学生成绩管理系统,要求有以下功能:1.输入基本信息(学号、姓名、课程名、各科成绩等);2、排序(按照总分、平均分大小)3、显示所有信息并按要求输出信息(按学号、姓名、某门课程分数、总分)查询(按学号、姓名)。采用模块化程序设计思想,通过不同函数实现菜单选择,数据要使用结构体类型,数据均通过键输入,使用c语言。
时间: 2023-07-04 19:26:49 浏览: 140
学生成绩管理系统课程设计报告(武汉东湖学院...)
好的,您的要求已经记录下来了。我会尽力回答您的问题。
关于学生成绩管理系统,我可以给您一些设计思路。首先,我们可以定义一个结构体类型来存储每个学生的信息,包括学号、姓名、课程名、各科成绩等,具体定义如下:
```c
struct student {
char id[20]; // 学号
char name[20]; // 姓名
char course[20]; // 课程名
float score; // 成绩
};
```
然后,我们可以编写一些函数来实现不同的功能,比如输入学生信息、排序、查询等。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char id[20]; // 学号
char name[20]; // 姓名
char course[20]; // 课程名
float score; // 成绩
};
struct student stu[100]; // 存储学生信息的数组
int n = 0; // 学生数量
// 输入学生信息
void input() {
printf("请输入学生信息(学号 姓名 课程名 成绩):\n");
scanf("%s%s%s%f", stu[n].id, stu[n].name, stu[n].course, &stu[n].score);
n++;
}
// 按总分排序
void sort_by_total() {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (stu[j].score + stu[j+1].score < stu[j+1].score + stu[j+2].score) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
// 按平均分排序
void sort_by_average() {
int i, j;
struct student temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (stu[j].score < stu[j+1].score) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
// 显示所有信息并按要求输出信息
void show() {
int i;
printf("学号\t姓名\t课程名\t成绩\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].course, stu[i].score);
}
}
// 按学号查询
void search_by_id() {
char id[20];
int i, flag = 0;
printf("请输入要查询的学号:");
scanf("%s", id);
for (i = 0; i < n; i++) {
if (strcmp(stu[i].id, id) == 0) {
printf("学号\t姓名\t课程名\t成绩\n");
printf("%s\t%s\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].course, stu[i].score);
flag = 1;
}
}
if (!flag) {
printf("未找到该学生!\n");
}
}
// 按姓名查询
void search_by_name() {
char name[20];
int i, flag = 0;
printf("请输入要查询的姓名:");
scanf("%s", name);
for (i = 0; i < n; i++) {
if (strcmp(stu[i].name, name) == 0) {
printf("学号\t姓名\t课程名\t成绩\n");
printf("%s\t%s\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].course, stu[i].score);
flag = 1;
}
}
if (!flag) {
printf("未找到该学生!\n");
}
}
// 按课程名查询
void search_by_course() {
char course[20];
int i, flag = 0;
printf("请输入要查询的课程名:");
scanf("%s", course);
for (i = 0; i < n; i++) {
if (strcmp(stu[i].course, course) == 0) {
printf("学号\t姓名\t课程名\t成绩\n");
printf("%s\t%s\t%s\t%.2f\n", stu[i].id, stu[i].name, stu[i].course, stu[i].score);
flag = 1;
}
}
if (!flag) {
printf("未找到该课程!\n");
}
}
// 菜单函数
void menu() {
printf("********************************************\n");
printf("* 学生成绩管理系统 *\n");
printf("* 1. 输入学生信息 *\n");
printf("* 2. 按总分排序 *\n");
printf("* 3. 按平均分排序 *\n");
printf("* 4. 显示所有信息并按要求输出信息 *\n");
printf("* 5. 按学号查询 *\n");
printf("* 6. 按姓名查询 *\n");
printf("* 7. 按课程名查询 *\n");
printf("* 0. 退出程序 *\n");
printf("********************************************\n");
}
int main() {
int choice;
while (1) {
menu();
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
input();
break;
case 2:
sort_by_total();
break;
case 3:
sort_by_average();
break;
case 4:
show();
break;
case 5:
search_by_id();
break;
case 6:
search_by_name();
break;
case 7:
search_by_course();
break;
case 0:
exit(0);
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
```
以上是一个简单的学生成绩管理系统的设计,可以根据您的需要进行修改和完善。
阅读全文