python实现一个简单的学生管理系统

"""

编写学员实体类,对应属性包含:学号、姓名、性别。

编写学员名单管理类,实现添加学员方法、查询学员方法。

学员实体类添加一个属性成绩,要求实现对应的 getter 和 setter。

添加学员时,把学员信息写入文件中;

查看学员时,通过工厂设计的方式实现两种查看方式,从文件中或者从维护的列表中读取成员信息。

自定义异常类:添加学员传入参数不合理时抛出自定义异常。

"""

from dataclasses import dataclass, field

@dataclass
class Student:
    """
    自己根据题目要求实现
    """
    number : int
    name : str
    gender : str
    grades : float
    def grades_get(self):
        print(f"学号为{self.number}的学生成绩为{self.grades}分")
    def grades_set(self, new_grade:float):
        self.grades = new_grade

class Myexception(Exception):
    def __init__(self, msg):
        print(msg)

class StudentList:
    s_list = []
    def get(self, data):
        if type(data) == str:
            self.getfromfile(data)
        elif type(data) == int:
            self.getfromlist(data)
        else:
            raise Myexception


    def getfromfile(self, student_id: str):
        """
        根据 student_id 查询信息
        """
        f = open("student.demo", "r", encoding="UTF-8")
        for line in f:
            list = line.split("\t")
            if list[0] == student_id:
                print(f"学号为{student_id}的学生的学生信息为:{line}")
                f.close()
                break
    def getfromlist(self, student_id: int):
        for i in self.s_list:
            if i.number == student_id:
                print(i)
                break

    def save(self, student: Student):
        """
        添加新学生
        """
        try:
            self.s_list.append(student)
            f = open("student.demo", "a", encoding="UTF-8")
            f.write(f"{student.number}\t{student.name}\t{student.gender}\t{student.grades}\n")
        except:
            raise Myexception("出现了参数异常")
        finally:
            f.close()


if __name__ == '__main__':

    s1 = Student(1, "张三", "男", 50)
    s2 = Student(2, "李四", "男", 60)
    s3 = Student(3, "李四", "男", 60)
    slist = StudentList()
    slist.save(s1)
    slist.save(s2)
    slist.save(s3)
    slist.get(2)
    slist.get("2")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值