学完成如下图为主菜单的“学生成绩管理程序”。 学生成绩管理程序 请输入选项编号(0一7) (本实验题目中,输入的数据必需以文件方式保存,实验时输入的数据可为 35条,完成后数据不得少于 30条。每功能完成后必需哲停,后回到主菜单〉
时间: 2024-03-14 16:49:05 浏览: 79
好的,我理解了你的问题。这是一个关于学生成绩管理程序的编程问题。你需要编写一个程序,在其中实现以下功能:
1. 显示主菜单,并要求用户输入选项编号(0-7)。
2. 根据用户输入的选项编号,执行相应的操作,包括添加学生信息、删除学生信息、修改学生信息、查询学生信息、计算总成绩、计算平均成绩、排序、退出程序。
3. 所有输入的数据必须以文件方式保存,并且程序中必须保证数据的完整性和正确性。
4. 在实验时,输入的数据量必须不少于30条,且每个功能完成后必须返回主菜单。
你需要使用编程语言来实现这个程序。你可以选择任何一种你熟悉的编程语言,如C++、Java、Python等。在实现程序之前,你需要设计好程序的整体结构和数据结构,以便于程序的实现和维护。
相关问题
c语言 •设班里有n位同学,每位同学的数据包括以下内容:学号(长整型)、姓名(字符串)、数学成绩(整型)、程序设计(课程名称为:程序设计,整型)。设计程序完成以如下功能 •1) 成绩录入; •2) 显示学生成绩 •3) 按照总分排名(从高到低) •4)输入一个学生的学号能查找到学生的成绩。 注:输入数据时,要求学号不能相同,姓名可以相同。建议采用结构体数组。 •具体要求如下 程序运行时,首先显示主菜单如下 1)学生成绩录入 2)总分排序 3)查询 4)数据显示。 学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息; (提示:查询到满足条件的结果后,查询即可结束)
以下是参考代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
// 学生信息结构体
typedef struct {
long long id; // 学号
char name[20]; // 姓名
int math_score; // 数学成绩
int prog_score; // 程序设计成绩
int total_score; // 总成绩
} Student;
// 全局变量:学生信息数组,学生数量
Student students[MAX_STUDENT_NUM];
int student_num = 0;
// 函数声明
void show_menu();
void input_scores();
void sort_by_total_score();
void search_by_id();
void show_all_scores();
int main() {
// 显示主菜单
show_menu();
return 0;
}
// 显示主菜单
void show_menu() {
int choice;
do {
printf("=== 学生成绩管理系统 ===\n");
printf("1)学生成绩录入\n");
printf("2)总分排序\n");
printf("3)查询\n");
printf("4)数据显示\n");
printf("0)退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores();
break;
case 2:
sort_by_total_score();
break;
case 3:
search_by_id();
break;
case 4:
show_all_scores();
break;
case 0:
printf("Goodbye!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
}
} while (choice != 0);
}
// 录入学生成绩
void input_scores() {
if (student_num >= MAX_STUDENT_NUM) {
printf("学生数量已达最大值,无法继续添加!\n");
return;
}
Student new_student;
printf("请输入学生信息:\n");
printf("学号:");
scanf("%lld", &new_student.id);
for (int i = 0; i < student_num; i++) {
if (new_student.id == students[i].id) {
printf("该学号已存在,请重新输入!\n");
return;
}
}
printf("姓名:");
scanf("%s", new_student.name);
printf("数学成绩:");
scanf("%d", &new_student.math_score);
printf("程序设计成绩:");
scanf("%d", &new_student.prog_score);
new_student.total_score = new_student.math_score + new_student.prog_score;
students[student_num] = new_student;
student_num++;
printf("学生成绩录入成功!\n");
}
// 按总分排序
void sort_by_total_score() {
if (student_num == 0) {
printf("学生数量为0,无法排序!\n");
return;
}
// 使用冒泡排序
for (int i = 0; i < student_num - 1; i++) {
for (int j = 0; j < student_num - i - 1; j++) {
if (students[j].total_score < students[j+1].total_score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
printf("总分排序成功!\n");
}
// 学号查询
void search_by_id() {
if (student_num == 0) {
printf("学生数量为0,无法查询!\n");
return;
}
long long id;
printf("请输入学号:");
scanf("%lld", &id);
for (int i = 0; i < student_num; i++) {
if (students[i].id == id) {
printf("学号:%lld\n", students[i].id);
printf("姓名:%s\n", students[i].name);
printf("数学成绩:%d\n", students[i].math_score);
printf("程序设计成绩:%d\n", students[i].prog_score);
printf("总成绩:%d\n", students[i].total_score);
return;
}
}
printf("找不到该学号对应的学生!\n");
}
// 显示所有学生成绩
void show_all_scores() {
if (student_num == 0) {
printf("学生数量为0,无法显示!\n");
return;
}
printf("学号\t姓名\t数学成绩\t程序设计成绩\t总成绩\n");
for (int i = 0; i < student_num; i++) {
printf("%lld\t%s\t%d\t%d\t%d\n", students[i].id, students[i].name, students[i].math_score, students[i].prog_score, students[i].total_score);
}
}
```
这个程序使用了结构体数组来存储学生信息,菜单上提供了四个选项,分别对应录入学生成绩、按总分排序、学号查询和显示所有学生成绩。其中,录入学生成绩时会检查学号是否已经存在,如果已经存在则要求重新输入;按总分排序使用了冒泡排序算法;学号查询会根据输入的学号查找学生信息并输出,如果找不到则输出提示信息;显示所有学生成绩则会输出表格形式的所有学生信息。
实现一个学生成绩管理软件:假设学生学号从1开始编号,最大的学号不超过100,管理学生学号、语文、数学、英语三科的成绩等信息,提供录入、查询、修改功能。
好的,我可以为您提供一个简单的学生成绩管理软件的实现思路:
1. 定义学生类,包含学号、姓名、语文、数学、英语成绩属性,并实现录入、查询、修改功能的方法。
2. 定义一个学生列表类,包含一组学生对象,并实现对学生列表的增、删、改、查功能。
3. 在主程序中,实例化学生列表对象,提供菜单选项供用户选择相应的操作,如录入、查询、修改、退出等。
以下是示例代码:
```python
class Student:
def __init__(self, id, name="", chinese=0, math=0, english=0):
self.id = id
self.name = name
self.chinese = chinese
self.math = math
self.english = english
def __str__(self):
return f"{self.id}\t{self.name}\t{self.chinese}\t{self.math}\t{self.english}"
def input(self):
self.name = input("请输入学生姓名:")
self.chinese = int(input("请输入语文成绩:"))
self.math = int(input("请输入数学成绩:"))
self.english = int(input("请输入英语成绩:"))
def modify(self):
self.name = input("请输入学生姓名:")
self.chinese = int(input("请输入语文成绩:"))
self.math = int(input("请输入数学成绩:"))
self.english = int(input("请输入英语成绩:"))
class StudentList:
def __init__(self):
self.students = []
def add(self):
id = len(self.students) + 1
student = Student(id)
student.input()
self.students.append(student)
print(f"学生信息已添加:{student}")
def delete(self):
id = int(input("请输入要删除的学生编号:"))
for student in self.students:
if student.id == id:
self.students.remove(student)
print(f"学生信息已删除:{student}")
return
print("未找到该学生")
def modify(self):
id = int(input("请输入要修改的学生编号:"))
for student in self.students:
if student.id == id:
student.modify()
print(f"学生信息已修改为:{student}")
return
print("未找到该学生")
def query(self):
id = int(input("请输入要查询的学生编号:"))
for student in self.students:
if student.id == id:
print(f"查询结果:\n编号\t姓名\t语文\t数学\t英语\n{student}")
return
print("未找到该学生")
def show_all(self):
print("所有学生信息:")
print("编号\t姓名\t语文\t数学\t英语")
for student in self.students:
print(student)
def menu(self):
while True:
print("\n学生成绩管理系统")
print("1. 录入学生信息")
print("2. 删除学生信息")
print("3. 修改学生信息")
print("4. 查询学生信息")
print("5. 显示所有学生信息")
print("0. 退出程序")
choice = input("请选择操作:")
if choice == "0":
print("程序已退出")
break
elif choice == "1":
self.add()
elif choice == "2":
self.delete()
elif choice == "3":
self.modify()
elif choice == "4":
self.query()
elif choice == "5":
self.show_all()
else:
print("无效的选择")
if __name__ == "__main__":
student_list = StudentList()
student_list.menu()
```
在主程序中,我们实例化了一个学生列表对象 student_list,并调用了其 menu 方法,提供了菜单选项供用户选择相应的操作。每个菜单选项对应一个方法,例如录入学生信息对应的是 add 方法,查询学生信息对应的是 query 方法,以此类推。
运行程序后,用户可以选择相应的操作进行学生信息管理,如下所示:
```
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:1
请输入学生姓名:张三
请输入语文成绩:90
请输入数学成绩:85
请输入英语成绩:92
学生信息已添加:1 张三 90 85 92
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:4
请输入要查询的学生编号:1
查询结果:
编号 姓名 语文 数学 英语
1 张三 90 85 92
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:3
请输入要修改的学生编号:1
请输入学生姓名:张三
请输入语文成绩:95
请输入数学成绩:90
请输入英语成绩:96
学生信息已修改为:1 张三 95 90 96
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:2
请输入要删除的学生编号:1
学生信息已删除:1 张三 95 90 96
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:5
所有学生信息:
编号 姓名 语文 数学 英语
学生成绩管理系统
1. 录入学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 显示所有学生信息
0. 退出程序
请选择操作:0
程序已退出
```
阅读全文