学生管理系统2.0——面向对象【Python】

要求:

    1、打印提示界面,能够实现学生信息的增删改查
    2、将学生信息存储到文件中
    3、可以进行学生信息的存档与读档
    4、可以重名,且删除时将所有同名信息删除
    5、尽可能完善健壮性

一、创建一个学生类

# 1、定义学生类
class Student:
    def __init__(self, name, gender, age, phno, desc):
        """
        该函数用于初始化学生信息
        :param name: 学生的 姓名
        :param gender: 学生的 性别
        :param age: 学生的 年龄
        :param phno: 学生的 手机号
        :param desc: 学生的 详情
        """
        self.name = name
        self.gender = gender
        self.age = age
        self.phno = phno
        self.desc = desc

    # 2、打印各个属性值
    def __str__(self):
        return f'name:{self.name},gender:{self.gender},age:{self.age},phno:{self.phno},desc:{self.desc}'

# 3、测试代码
if __name__ == '__main__':
    s1 = Student('小林', 23, '女', '111', 'wuhu')
    print(s1)

    stu_dict = s1.__dict__
    print(stu_dict)
    print(type(stu_dict))

二、创建一个学生管理类

# 1、导包
from student import Student
import time

# 2、定义 学生管理业务类
class StudentCMS:

    # 3、初始化属性
    def __init__(self):
        # 采用 列表嵌套字典 的形式,存储具体的学生数据
        self.student_list = []

    # 4、定义函数 show_operator_view,用来打印 操作界面
    # 细节:该函数被所有对象 共享,建议定义为 静态方法
    @staticmethod
    def show_operator_view():
        print('=' * 25)
        print('欢迎来到学生管理系统V2.0')
        print('\t 1.添加学生')
        print('\t 2.修改学生')
        print('\t 3.删除学生')
        print('\t 4.查询单个学生')
        print('\t 5.查询所有学生')
        print('\t 6.保存信息')
        print('\t 0.退出系统')
        print('=' * 25)

    # 6、定义 退出时再次确认 的函数
    def exit_system(self):
        input_str = input('您确定要退出吗?(Y/N)')
        if input_str.lower() == 'y':     # lower函数:将字母转成小写
            exit('感谢您的使用,下次再见!')

    # 7、定义 添加学生信息 函数
    def add_student(self):
        name = input('请输入学生的 姓名:')
        gender = input('请输入学生的 性别:')
        age = eval(input('请输入学生的 年龄:'))
        phno = input('请输入学生的 手机号:')
        desc = input('请输入学生的 描述信息:')

        # 7.1 将上述的信息 封装成 学生对象
        stu = Student(name, gender, age, phno, desc)

        # 7.2 将学生对象 添加到 学生列表中
        self.student_list.append(stu)

        print('添加信息成功!\n')

    # 8、显示所有学生信息
    def show_all_student(self):
        if len(self.student_list) > 0:
            for stu in self.student_list:
                print(stu)
        else:
            print('暂无数据,请添加后再查询\n')

    # 9、删除所有匹配学生
    def delete_student(self):
        # 标记变量
        flag = False
        del_name = input('要删除的学生姓名:')
        # 9.1 遍历学生列表
        i = 0      # 记录索引
        while i < len(self.student_list):
            stu = self.student_list[i]
            # 9.2 判断是否为要删除的学生
            if stu.name == del_name:
                self.student_list.remove(stu)
                # 细节:每删除一次,索引减 1
                i -= 1
                flag = True
            # while循环的控制条件
            i += 1
        # 9.3 根据标记变量,进行响应提示
        print('删除成功!\n' if flag else '查无此人,请重新输入\n')

    # 10、修改学生信息
    def update_student(self):
        upd_name = input('')
        for stu in self.student_list:
            if stu.name == upd_name:
                stu.gender = input('请输入学生的 性别:')
                stu.age = eval(input('请输入学生的 年龄:'))
                stu.phno = input('请输入学生的 手机号:')
                stu.desc = input('请输入学生的 描述信息:')
                print('')
                break
        else:
            print('查无此人,请核对后再修改\n')


    # 11、查询单个学生信息
    def show_student(self):
        show_name = input('要查询信息的学生姓名:')
        for stu in self.student_list:
            if stu.name == show_name:
                print(stu)
                break
        else:
            print('查无此人,请核对后再查询\n')

    # 12、保存学生信息 到文件,格式为:字符串形式的  列表嵌套字典(存档)
    def save_data(self):
        # 12.1 获取目的地文件的对象形式
        dest_f = open('./student.data', mode='w', encoding='utf-8')
        # 12.2 把学生列表,转成字符串形式
        data = str([stu.__dict__ for stu in self.student_list])
        # 12.3 把数据写到文件中
        dest_f.write(data)
        # 12.4 关闭对象,释放资源
        dest_f.close()

    # 13、将文件信息 读取到 学生列表中(读档)
    def load_data(self):

        try:
            src_f = open('./student.data', mode='r', encoding='utf-8')

            # 13.2 从文件中 一次性读取 所有数据
            data = src_f.read()

            # 13.3 若文件内容不为空,将内容设置给student_list
            if len(data) > 0:
                self.student_list = [Student(dict_stu['name'], dict_stu['gender'], dict_stu['age'], dict_stu['phno'], dict_stu['desc'])for dict_stu in eval(data)]

        except:
            # 13.4 只写模式 当文件不存在 自动创建
            src_f = open('./student.data', mode='w', encoding='utf-8')

        # 13.5 关闭对象,释放资源
        src_f.close()

    # 5、定义start()函数,表示具体的 业务逻辑流程
    def start(self):
        # 5.1 模拟用户等待
        time.sleep(2)

        # 5.2 调用读档函数
        self.load_data()

        # 5.3 用死循环包裹,即可反复输入
        while True:
            # 5.4 打印操作界面
            StudentCMS.show_operator_view()

            # 5.5 提示录入并接收
            number = input('请输入您要操作的功能编号:')  # 为了提高代码的健壮性,不做转换

            if number == '1':
                self.add_student()
            elif number == '2':
                self.update_student()
            elif number == '3':
                self.delete_student()
            elif number == '4':
                self.show_student()
            elif number == '5':
                self.show_all_student()
            elif number == '6':
                self.save_data()
            elif number == '0':
                self.exit_system()
            else:
                print('错误操作,请输入0~6的操作编码')

三、创建一个操作类

# 1、导包
from studentcms import StudentCMS

# 2、定义main函数,用来执行学生管理系统
if __name__ == '__main__':
    stu_cms = StudentCMS()
    stu_cms.start()

在操作类中运行即可。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何使用 Python 制作一个简易的学生信息管理系统。这个系统将使用面向对象编程的方式实现,可以方便地添加、删除和修改学生信息。 首先,我们需要定义一个 `Student` 类,用来表示学生信息。每个学生都有姓名、学号、年龄等基本信息,可以使用类的属性来表示: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age ``` 在 `__init__` 方法中,我们定义了三个属性,分别对应学生的姓名、学号和年龄。接下来,我们需要添加一些方法,来实现学生信息的添加、删除和修改: ```python class Student: def __init__(self, name, student_id, age): self.name = name self.student_id = student_id self.age = age def get_name(self): return self.name def set_name(self, name): self.name = name def get_student_id(self): return self.student_id def set_student_id(self, student_id): self.student_id = student_id def get_age(self): return self.age def set_age(self, age): self.age = age ``` 在上面的代码中,我们定义了六个方法,分别对应获取和设置学生的姓名、学号和年龄。这些方法可以方便地对学生信息进行修改。 接下来,我们可以创建一个 `StudentManager` 类,用来管理所有的学生信息。这个类包含了一个学生列表,可以添加、删除和修改学生信息: ```python class StudentManager: def __init__(self): self.students = [] def add_student(self, student): self.students.append(student) def remove_student(self, student): self.students.remove(student) def get_all_students(self): return self.students def search_student_by_id(self, student_id): for student in self.students: if student.get_student_id() == student_id: return student return None ``` 在上面的代码中,我们定义了四个方法,分别对应添加、删除、获取所有学生和根据学号查找学生。这些方法可以方便地对学生信息进行管理。 现在,我们可以创建一个 `main` 函数,来实现学生信息管理系统的基本功能: ```python def main(): manager = StudentManager() # 添加学生 student1 = Student('张三', '001', 18) manager.add_student(student1) student2 = Student('李四', '002', 19) manager.add_student(student2) student3 = Student('王五', '003', 20) manager.add_student(student3) # 查找学生 s = manager.search_student_by_id('001') print(s.get_name(), s.get_student_id(), s.get_age()) # 修改学生信息 s.set_name('赵六') s.set_age(21) # 删除学生 manager.remove_student(student3) # 打印所有学生信息 students = manager.get_all_students() for student in students: print(student.get_name(), student.get_student_id(), student.get_age()) ``` 在上面的代码中,我们首先创建了一个 `StudentManager` 对象,并添加了三个学生。然后,我们使用 `search_student_by_id` 方法查找学号为 '001' 的学生,并打印出其姓名、学号和年龄。接着,我们使用 `set_name` 和 `set_age` 方法修改了该学生的姓名和年龄。然后,我们使用 `remove_student` 方法删除了一个学生。最后,我们使用 `get_all_students` 方法获取所有学生信息,并打印出来。 这样,一个简易的学生信息管理系统就完成了。您可以根据自己的需求,继续添加其他功能,如文件读写、GUI 界面等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值