• 学生管理系统


    import os
    # 学生类
    class Student(object):
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    # 定义学生管理系统类, 顶级函数和顶级类都要有两个换行
    class StudentManagerSystem(object):
    
        def __init__(self):
            # 用于存储学生信息
            self.student_list = []
    
        # 显示功能菜单
        @staticmethod
        def show_menu():
            print("-----学生管理系统V1.0-------")
            print("1. 添加学生")
            print("2. 删除学生")
            print("3. 修改学生")
            print("4. 查询学生")
            print("5. 查询所有学生")
            print("6. 退出")
    
        # 添加学生
        def append_student(self):
            print("添加学生")
            # 接收学生信息
            name = input("请输入学生的姓名:")
            age = input("请输入学生的年龄:")
            sex = input("请输入学生的性别:")
    
            # # 创建空的字典
            # student_dict = {}
            # # 给字典添加键值对
            # student_dict["name"] = name
            # student_dict["age"] = age
            # student_dict["sex"] = sex
    
            # 创建学生对象
            student = Student(name, age, sex)
    
            # 把学生字典添加到学生列表里面
            self.student_list.append(student)
    
        # 显示所有的学生信息
        def show_all(self):
            print("查询所有学生")
            for index, student in enumerate(self.student_list):
                print("学号: %d 姓名: %s 年龄: %s 性别: %s" % (index + 1,
                                                       student.name,
                                                       student.age,
                                                       student.sex))
    
        # 删除学生
        def remove_student(self):
            print("删除学生")
            # 接收用户输入的学号
            student_no = int(input("请输入要删除学生的学号:"))
            # 把学号转成下标
            index = student_no - 1
    
            # 判断下标是否合法
            if index >= 0 and index < len(self.student_list):
                # 根据下标删除对应的学生
                del self.student_list[index]
            else:
                print("您要删除的学生不存在!")
    
        # 修改学生信息
        def modify_student(self):
            print("修改学生")
            # 获取要修改学生的学号
            student_no = int(input("请输入要修改学生的学号:"))
            # 把学号转成下标
            index = student_no - 1
            # 判断下标是否合法
            if index >= 0 and index < len(self.student_list):
                # 根据下标获取要修改学生的字典信息
                student = self.student_list[index]
                # 接收用户输入修改后的信息
                new_name = input("请输入修改后姓名:")
                new_age = input("请输入修改后的年龄:")
                new_sex = input("请输入修改后的性别:")
                # # 修改字典里面的信息
                # student_dict["name"] = new_name
                # student_dict["age"] = new_age
                # student_dict["sex"] = new_sex
    
                # 修改对象属性
                student.name = new_name
                student.age = new_age
                student.sex = new_sex
    
            else:
                print("您要修改的学生不存在!")
    
        # 查询学生
        def query_student(self):
            print("查询学生")
            # 接收用户输入的姓名
            name = input("请输入您要查询的学生姓名:")
    
            # 遍历学生列表,判断姓名是否相同
            for index, student in enumerate(self.student_list):
                if student.name == name:
                    print("找到了,信息如下:")
                    print("学号: %d 姓名: %s 年龄: %s 性别: %s" % (index + 1,
                                                           student.name,
                                                           student.age,
                                                           student.sex))
                    break
            else:
                print("对不起,没有找到该学生")
    
        # 保存数据
        def save_data(self):
            # 打开文件
            file = open("students.data", "w", encoding="utf-8")
    
            # [{"name": "张三"}, person2]
            # 把列表对象转成列表字典存储到文件里面,因为字典是数据,可以根据字典创建后续使用的学生对象
            # 1. 列表推导式  2. map
            new_list = [student.__dict__ for student in self.student_list]
            # 列表转成字符串
            student_list_str = str(new_list)
    
            print("写入文件的数据:", student_list_str)
            # 写入数据,把学生列表写入文件
            file.write(student_list_str)
            # 关闭文件
            file.close()
    
        # 加载文件中的数据
        def load_data(self):
    
            print("读取文件中的数据")
            # 判断数据文件是否存在
            if os.path.exists("students.data"):
    
                # 打开文件
                file = open("students.data", "r", encoding="utf-8")
                # 读取数据, 这里的数据是字符串
                file_data = file.read()
    
                # "[{'name': '张三', 'age': '20', 'sex': '男'}]"
    
                new_student_list = eval(file_data)
    
                # 把列表字典转成列表学生对象
                new_list = [Student(student_dict["name"],
                                     student_dict["age"],
                                     student_dict["sex"])
                                     for student_dict in new_student_list]
    
                print("读取文件的数据:", new_list)
    
                # 1. 把数据直接赋值给student_list 这个全局变量
                # global student_list
                # student_list = new_student_list
                # print("load_data:", student_list)
    
                # 2. 把文件读取到的数据添加到学生列表里面来
                self.student_list.extend(new_list)
                # 关闭文件
                file.close()
            else:
                print("还没有本地文件数据")
    
        # 程序的入口函数,程序启动后执行的函数
        def run(self):
    
            # 加载文件中的数据,只加载一次
            self.load_data()
    
            while True:
    
                # 显示功能菜单
                self.show_menu()
                # 接收用户输入的功能选项
                menu_option = int(input("请输入功能选项:"))
                if menu_option == 1:
                    # 添加学生
                    self.append_student()
                elif menu_option == 2:
                    # 删除学生
                    self.remove_student()
                elif menu_option == 3:
                    # 修改学生
                    self.modify_student()
                elif menu_option == 4:
                    # 查询学生
                    self.query_student()
                elif menu_option == 5:
                    self.show_all()
                elif menu_option == 6:
                    # 在程序退出之前,保存学生列表中的数据到文件
                    self.save_data()
                    print("程序退出了")
                    break
    if __name__ == '__main__':
        # 创建学生管理系统对象
        system = StudentManagerSystem()
        # 让系统运行起来
        system.run()
    
    python
  • 相关阅读:
    自定义Visual Studio调试器中的对象显示方式
    Visual Studio中的主题定制变得更加容易
    宣布Visual Studio Code Installer for Java
    在Visual Studio 2019中开启预览功能
    .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
    C#连接SQL Anywhere 12 数据库
    数据库导出脚本
    python http请求及多线程应用
    记录 Ext 日历月份选择控件bug解决过程结果
    js浮点数运算封装, 起因财务部分精确计算
  • 原文地址:https://www.cnblogs.com/bky20061005/p/14693477.html
Copyright © 2020-2023  润新知