学生管理系统
发布日期:2021-06-27 21:40:12 浏览次数:4 分类:技术文章

本文共 5531 字,大约阅读时间需要 18 分钟。

学生管理系统

# 学生类import osclass 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("程序退出了")                breakif __name__ == '__main__':    # 创建学生管理系统对象    system = StudentManagerSystem()    # 让系统运行起来    system.run()

转载地址:https://blog.csdn.net/weixin_45523107/article/details/116053363 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Ubuntu 20.04安装指导
下一篇:django 命令行创建项目app

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月18日 18时50分51秒