学生成绩管理系统(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()
相关推荐
I_ltt_Itw,6 分钟前
Python多线程
服务器·python·pycharm
Hello.Reader8 分钟前
Flink SQL 数据类型从 INT 到 VARIANT 的完整实战指南
python·sql·flink
vi1212323 分钟前
ENVI 地形量化与植被指数反演
开发语言·python
rising start25 分钟前
一、FastAPI入门
python·fastapi·端口
闲人编程30 分钟前
Flask应用工厂模式:构建可扩展的大型应用
后端·python·flask·工厂模式·codecapsule·应用工厂
LitchiCheng38 分钟前
Mujoco 检验 KDL 和 Pinocchio 运动学 FK 是否一致
人工智能·python
ZhengEnCi41 分钟前
P3H1-Python-sys模块完全指南-系统参数与命令行参数处理利器
python
猫头虎42 分钟前
如何解决pip install网络报错SSLError: TLSV1_ALERT_PROTOCOL_VERSION(OpenSSL过旧)问题
网络·python·scrapy·pycharm·beautifulsoup·pip·scipy
帮帮志44 分钟前
05【AI大模型对话/创建项目】通过pycharm创建大模型项目,关联Anaconda环境
ide·人工智能·python·语言模型·pycharm
海边夕阳200644 分钟前
【每天一个AI小知识】:什么是目标检测?
人工智能·python·深度学习·目标检测·机器学习·计算机视觉·目标跟踪