学生成绩管理系统(python实现)

学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。

python 复制代码
import json

# 初始化系统
students = []

# 结构体
class Student:
    def __init__(self, ID, Name, Mark):
        self.ID = ID
        self.Name = Name
        self.Mark = Mark
        self.Total = sum(Mark)
        self.Average = self.Total / len(Mark)

# 录入
def inputt():
    global students
    ID = input("请输入学号:")
    Name = input("请输入姓名:")
    Marks = []
    for subject in ["数学", "英语", "语文"]:
        mark = float(input(f"请输入{subject}成绩:"))
        Marks.append(mark)

    student = Student(ID, Name, Marks)
    students.append(student)
    print("录入成功。")

# 删除
def deletee():
    global students
    ID = input("请输入要删除的学生学号:")
    found = False
    for student in students:
        if student.ID == ID:
            students.remove(student)
            found = True
            print("删除成功。")
            break
    if not found:
        print(f"未找到学号为{ID}的学生。")

# 修改
def modfiy():
    global students
    ID = input("请输入要修改的学生学号:")
    found = False
    for student in students:
        if student.ID == ID:
            Marks = []
            for subject in ["数学", "英语", "语文"]:
                mark = float(input(f"请输入新的{subject}成绩:"))
                Marks.append(mark)
            student.Mark = Marks
            student.Total = sum(Marks)
            student.Average = student.Total / len(Marks)
            found = True
            print("修改成功。")
            break
    if not found:
        print(f"未找到学号为{ID}的学生。")

# 插入
def insert():
    global students
    position = int(input("请输入要插入的位置(1-{}):".format(len(students) + 1)))
    if 1 <= position <= len(students) + 1:
        ID = input("请输入学号:")
        Name = input("请输入姓名:")
        Marks = []
        for subject in ["数学", "英语", "语文"]:
            mark = float(input(f"请输入{subject}成绩:"))
            Marks.append(mark)

        student = Student(ID, Name, Marks)
        students.insert(position - 1, student)
        print("插入成功。")
    else:
        print("插入位置无效。")

# 排序
def sort():
    global students
    students.sort(key=lambda x: x.Average, reverse=True)
    print("排序完成。")

# 显示
def display():
    global students
    if not students:
        print("暂无学生信息。")
    else:
        print("学号\t姓名\t数学\t英语\t语文\t总分\t平均分")
        for student in students:
            print(f"{student.ID}\t{student.Name}\t{student.Mark[0]}\t{student.Mark[1]}\t{student.Mark[2]}\t{student.Total:.2f}\t{student.Average:.2f}")

# 查询
def Student_SearchByIndex():
    global students
    ID = input("请输入要查询的学生学号:")
    found = False
    for student in students:
        if student.ID == ID:
            print("学号\t姓名\t数学\t英语\t语文\t总分\t平均分")
            print(f"{student.ID}\t{student.Name}\t{student.Mark[0]}\t{student.Mark[1]}\t{student.Mark[2]}\t{student.Total:.2f}\t{student.Average:.2f}")
            found = True
            break
    if not found:
        print(f"未找到学号为{ID}的学生。")

# 主函数
def main():
    while True:
        print("\n学生成绩管理系统")
        print("1. 录入学生信息")
        print("2. 删除学生信息")
        print("3. 修改学生成绩")
        print("4. 插入学生成绩")
        print("5. 排序学生成绩")
        print("6. 显示学生成绩")
        print("7. 查询学生成绩")
        print("8. 退出系统")

        choice = input("请选择操作(1-8):")

        if choice == "1":
            inputt()
        elif choice == "2":
            deletee()
        elif choice == "3":
            modfiy()
        elif choice == "4":
            insert()
        elif choice == "5":
            sort()
        elif choice == "6":
            display()
        elif choice == "7":
            Student_SearchByIndex()
        elif choice == "8":
            break
        else:
            print("无效的选择,请重新输入。")

if __name__ == "__main__":
    main()
相关推荐
草莓熊Lotso13 分钟前
【LangChain】聊天模型实战:结构化输出完全指南(从原理到落地)
数据库·python·langchain·软件工程
lili001214 分钟前
AI编程三件套CI集成与质量门禁:从“看起来对“到“证据确凿“
java·人工智能·python·ci/cd·ai编程
原来是猿17 分钟前
性能测试(1)
运维·服务器·python·压力测试
AIFQuant27 分钟前
外汇交易平台技术栈深度解析:行情 API、清算、风控、前端一体化方案
前端·python·websocket·金融·restful
花酒锄作田6 小时前
[python]argparse 包在聊天机器人中的应用
python
NiceCloud喜云9 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI玫瑰助手9 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_468466859 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
小糖学代码10 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨10 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python