学生管理系统--面向对象

import json
import os


# 学生管理系统
class StudentManager(object):

    def __init__(self):
        # 有一些全局化的变量 可以在这里声明
        # 有些独立的功能可以单独写一个函数
        pass

    def main(self):
        # 开启系统
        while True:
            self.show_menu()
            opt = input("请告诉我你的选择是:")
            if opt == "1":
                print("======= 执行添加学生信息 =======")
                self.insert_student()
            elif opt == "2":
                print("======= 执行删除学生信息 =======")
                self.remove_student()
            elif opt == "3":
                print("======= 执行修改学生信息 =======")
                self.modify_student()
            elif opt == "4":
                print("======= 执行查询单个学生信息 =======")
                self.show_single_info()
            elif opt == "5":
                print("执行查询所有学生信息")
                self.show_all_info()
            elif opt == "6":
                print("============ 执行退出系统 =============")
                break
            else:
                print("===== 您输入的数字有误,请重新输入 =====")
                continue

    def show_menu(self):
        print("1.添加学生信息")
        print("2.删除学生信息")
        print("3.修改学生信息")
        print("4.查询单个学生信息")
        print("5.查询所有学生信息")
        print("6.退出系统")

    def insert_student(self):
        # 1.输入学生信息
        name = input("请输入需要添加的学生姓名:")
        age = int(input("请输入需要添加的学生年龄:"))
        gender = input("请输入需要添加的学生性别:")
        # 2.生成一个学生字典
        # {"name": "麻宏", "age": 20, "gender": "man"}
        student_dict = {"name": name, "age": age, "gender": gender}
        # 3.将学生信息添加到列表中
        with open("stu.txt", "a+", encoding="utf-8") as f:
            # 将字典转换为字符串
            student_str = json.dumps(student_dict) + "\n"
            print(student_str, type(student_str))
            f.write(student_str)
            print("===================== 添加学生信息成功 =====================")

    def remove_student(self):
        # 1.输入需要删除的学生姓名
        name = input("请输入需要删除的学生姓名:")
        # 读取学生文件内容
        with open("stu.txt", "r+", encoding="utf-8") as f:
            student_list = f.readlines()
            print(student_list, type(student_list))

        for stu_str in student_list:
            # 因为stu是一个字符串 所以需要改写成列表
            # stu_str 必须是字典或者列表等python数据类型
            stu_dict = json.loads(stu_str)
            # 学生信息存在的情况
            if stu_dict["name"] == name:
                # 执行删除学生信息
                student_list.remove(stu_str)
                print("==================== 删除学生信息成功 ===================")
                break
        else:
            print("======= 学生信息不存在 =======")

        # 删除原有文件
        os.remove("stu.txt")

        # 删除掉指定的学生信息之后 插入新的学生列表
        for stu_str in student_list:
            # 3.将学生信息添加到列表中
            with open("stu.txt", "a+", encoding="utf-8") as f:
                f.write(stu_str)

    def modify_student(self):
        # 1.输入需要修改的学生姓名
        name = input("请输入需要修改的学生姓名:")

        # 2.读取学生文件内容
        with open("stu.txt", "r+", encoding="utf-8") as f:
            student_list = f.readlines()
            print(student_list, type(student_list))

        # 声明一个空列表stu_list
        stu_list = []

        # 3.判断该学生是否存在
        for stu in student_list:
            # 将字符串转换为字典
            stu_dict = json.loads(stu)
            # 如果学生存在 则进行修改
            if stu_dict["name"] == name:
                # 请输入需要修改的学生信息
                print("请输入需要修改的学生信息:1.姓名 2.年龄 3.性别")
                opt1 = input("请输入修改编号:")
                if opt1 == "1":
                    stu_dict["name"] = input("请输入新的姓名:")
                elif opt1 == "2":
                    stu_dict["age"] = int(input("请输入新的年龄:"))
                else:
                    stu_dict["gender"] = input("请输入性别:")
                stu_str = json.dumps(stu_dict) + "\n"
                stu_list.append(stu_str)
                print("===================== 修改学生信息成功 =====================")
                continue
            # 不是需要修改的学生 则直接加入即可
            stu_list.append(stu)

        # 删除原有文件
        os.remove("stu.txt")

        # 删除掉指定的学生信息之后 插入新的学生列表
        for stu_str in stu_list:
            # 3.将学生信息添加到列表中
            with open("stu.txt", "a+", encoding="utf-8") as f:
                f.write(stu_str)

    def show_single_info(self):
        # 读取学生文件内容
        with open("stu.txt", "r+", encoding="utf-8") as f:
            student_list = f.readlines()

        # 1、请输入需要查询的学生姓名
        name = input("请输入需要查询的学生姓名:")
        # 2、判断该学生是否存在
        for stu in student_list:
            # 将字符串转变为字典
            stu_dict = json.loads(stu)
            if stu_dict["name"] == name:
                print(stu[:-1])
                print("======================= 查询单个学生信息成功 =======================")
                break
        else:
            print("================== 学生信息不存在 ===================")

    def show_all_info(self):
        # 读取学生文件内容
        with open("stu.txt", "r+", encoding="utf-8") as f:
            student_list = f.readlines()
            # print(student_list, type(student_list))

        # 1.检查学生列表是否为空
        if len(student_list) > 0:
            for stu in student_list:
                print(stu[:-1])
            print("===================== 查询所有学生信息成功 ====================")

        else:
            print("======= 目前还没有学生信息 =======")


if __name__ == '__main__':
    # 实例化一个学生管理系统类的对象
    sm = StudentManager()
    sm.main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值