python面向对象课程设计: 基于Python的学生管理系统

该代码创建了一个学生管理系统的命令行界面,包括添加、更新、删除、查找和分析学生信息的功能。系统使用类来表示学生对象,并提供了模糊搜索和数据分析统计年龄及性别比例的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境: python3.10

lightly在线预览

import re
class Student:
    def __init__(self, name, age, gender, student_id):
        self.name = name
        self.age = age
        self.gender = gender
        self.student_id = student_id

    def __str__(self):
        return f"{self.name}, {self.age}, {self.gender}, {self.student_id}"

class StudentManagementSystemCLI:
    def __init__(self):
        self.student_list = []

    def menu(self):
        print("\n学生管理系统菜单:")
        print("1. 添加学生")
        print("2. 更新学生信息")
        print("3. 删除学生")
        print("4. 查找学生")
        print("5. 显示所有学生")
        print("6. 模糊搜索学生")
        print("7. 数据分析")
        print("8. 退出")

    def add_student(self):
        name = input("请输入姓名:")
        age = input("请输入年龄:")
        gender = input("请输入性别:")
        student_id = input("请输入学号:")

        new_student = Student(name, age, gender, student_id)
        self.student_list.append(new_student)
        print("学生已成功添加到系统!")

    def update_student(self):
        student_id = input("请输入要更新的学生学号:")
        for student in self.student_list:
            if student.student_id == student_id:
                student.name = input("请输入新的姓名:")
                student.age = input("请输入新的年龄:")
                student.gender = input("请输入新的性别:")
                print("学生信息已更新!")
                break
        else:
            print("未找到该学生,请检查学号。")

    def delete_student(self):
        student_id = input("请输入要删除的学生学号:")
        for index, student in enumerate(self.student_list):
            if student.student_id == student_id:
                self.student_list.pop(index)
                print("学生已从系统中删除!")
                break
        else:
            print("未找到该学生,请检查学号。")

    def search_student(self):
        student_id = input("请输入要查找的学生学号:")
        for student in self.student_list:
            if student.student_id == student_id:
                print(f"学生信息:姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
                break
        else:
            print("未找到该学生,请检查学号。")

    def display_students(self):
        print("\n所有学生信息:")
        for student in self.student_list:
            print(f"姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
    def search_student_fuzzy(self):
        keyword = input("请输入要查找的关键词(支持模糊搜索):")
        pattern = re.compile(keyword, re.IGNORECASE)
        found = False
        for student in self.student_list:
            if pattern.search(student.name) or pattern.search(student.student_id):
                print(f"学生信息:姓名:{student.name},年龄:{student.age},性别:{student.gender},学号:{student.student_id}")
                found = True
        if not found:
            print("未找到与关键词匹配的学生。")

    def analyze_data(self):
        age_count = {}
        gender_count = {"M": 0, "F": 0}
        for student in self.student_list:
            age = int(student.age)
            if age in age_count:
                age_count[age] += 1
            else:
                age_count[age] = 1
            if student.gender.upper() == "M":
                gender_count["M"] += 1
            elif student.gender.upper() == "F":
                gender_count["F"] += 1

        print("\n年龄分布:")
        for age, count in age_count.items():
            print(f"{age} 岁:{count} 人")
        print("\n性别比例:")
        print(f"男生:{gender_count['M']} 人")
        print(f"女生:{gender_count['F']} 人")

    def run(self):
        while True:
            self.menu()
            choice = input("\n请选择功能(输入数字):")

            if choice == "1":
                self.add_student()
            elif choice == "2":
                self.update_student()
            elif choice == "3":
                self.delete_student()
            elif choice == "4":
                self.search_student()
            elif choice == "5":
                self.display_students()
            elif choice == "6":
                self.search_student_fuzzy()
            elif choice == "7":
                self.analyze_data()
            elif choice == "8":
                print("谢谢使用,再见!")
                break
            else:
                print("无效的输入,请重新选择。")

if __name__ == "__main__":
    app = StudentManagementSystemCLI()
    app.run()

私我可定制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值