Python实现学生信息管理,可增加学生信息

Python实现学生信息管理,可增加学生信息

实现学生的个性发展

student.py
class Student():
    def __init__(self, name, id, gender, **addmessage):
        self.name = name
        self.id = id
        self.gender = gender
        # 后面用到json文件,此处可以不用字典来增加信息,**addmessage不用传实参
        # 定义一个空字典,用于以后增加信息
        # self.addmessage = addmessage

    def __str__(self):
        return f'该学生的姓名是{self.name},学号是{self.id},性别是{self.gender}'

# student = Student("Jane", 123, "nv")
# print(student)
main.py
from StudentManagerSystem.managerSystem import *

if __name__ == '__main__':
    # 定义一个菜单
    print("1、---添加   学员---")
    print("2、---增加学员信息---")
    print("3、---修改学员信息---")
    print("4、---删除学员信息---")
    print("5、---查找   学员---")
    print("6、---加载所有学员---")
    print("7、---退出   系统---")
    manager_system = ManagerSystem()
    manager_system.run()

managerSystem.py
from StudentManagerSystem.student import *
import time
import json

class ManagerSystem():
    def __init__(self):
        self.student_list = []

    # 定义一个菜单
    # def show_menu(self):
    #     print("1、---添加   学员---")
    #     print("2、---增加学员信息---")
    #     print("3、---修改学员信息---")
    #     print("4、---删除学员信息---")
    #     print("5、---查找   学员---")
    #     print("6、---加载所有学员---")
    #     print("7、---退出   系统---")

    # def save_student(self):
    #     new_dict = student.__dict__
    #     print(new_dict)
        # data = json.loads(str(new_list))
        # with open("student.json", 'w', encoding='utf-8') as file:
        #     file.write(json.dump(data, file, indent=2, ensure_ascii=False))
        # f = open("student.data", 'a')
        # new_list = [i.__dict__ for i in self.student_list]
        # f.write(str(new_list))
        # f.close()

    def add_student(self):
        name = input("请输入姓名:")
        id = int(input("请输入学号:"))
        gender = input("请输入性别:")
        student = Student(name.strip(), id, gender.strip())

        # dict魔法方法,返回实例化对象的属性和对应的值,为一个字典
        new_dict = student.__dict__
        # 不同的对象有不同的字典,放入一个列表中
        self.student_list.append(new_dict)

        json_dict = json.dumps(self.student_list, indent=4,ensure_ascii=False)
        try:
            with open('student.json', 'r') as file:
                student_json = json.load(file)
                student_json.append(new_dict)
            with open('student.json', 'w') as file:
                json.dump(student_json, file, indent = 4, ensure_ascii=False)
        except FileNotFoundError:
            with open('student.json', 'w') as f:
                f.write(json_dict)

        print(new_dict)
        # print(self.student_list)

    def add_message(self):

        # 注意此处学号为整型
        try:
            id_message = int(input("请输入你要增加信息的学生学号:"))
        except Exception:
            print("输入信息有误!")
        with open("student.json", 'r+', encoding='utf-8') as f:
            student_python_dict = json.load(f)
        for message in student_python_dict:
        # for message in self.student_list:
            if message['id'] == id_message:
                add_message = input("请输入你要增加的信息:")
                add_message_key = input()
                message[add_message] = add_message_key
                print(student_python_dict)
                # with open("student.json", 'r', encoding='utf-8') as f:
                #     student_dict = json.load(f)
                #     student_dict[add_message] = add_message_key
                with open('student.json', 'w', encoding='utf-8') as f:
                    # json_dict = json.dumps(student_python_dict, indent=4, ensure_ascii=False)
                    # f.write(json_dict)
                    json.dump(student_python_dict, f, indent=4, ensure_ascii=False)
                time.sleep(1.5)
                print("信息增加成功!")
                break
        #如果查询不到,则没有该生  !!!注意与for 循环对齐  这是for查不到时
        else:
            print("没有该生信息!")

        # 用for循环可以直接用每个学生的属性,用while循环利用列表
        # while True:
        #     i = 0
        #     if self.student_list[i].id == id_message:
        #         add_message = input("请输入你要增加的信息:")
        #         add_message_key = input()
        #         self.student_list[i].dict[add_message] = add_message_key
        #         print("信息增加成功!")
        #         break
        #     i += 1

    def modify_student(self):
        id_message = int(input("请输入你要修改信息的学生学号:"))
        with open('student.json', 'r') as file:
            self.student_list = json.load(file)
        for message in self.student_list:
            if message['id'] == id_message:
                modify_message = input("请输入你要修改的信息:")
                if modify_message == 'id':
                    print("不能修改学号!")
                    break
                modify_message_key = input("请输入你要修改的值:")
                message[modify_message] = modify_message_key
                for key, value in message.items():
                    print(f'{key} : {value}')
                break
        else:
            print("没有该学生信息!")


    def del_student(self):
        del_message = int(input("请输入你要删除信息的学生学号:"))
        with open('student.json', 'r') as file:
                    self.student_list = json.load(file)
        for message in self.student_list:
            if message['id'] == del_message:
                self.student_list.remove(message)
                with open('student.json', 'w') as file:
                    json.dump(self.student_list, file, indent=4, ensure_ascii=False)
                time.sleep(1.5)
                print("删除成功!")
                break
            id_list = []
            id_list.append(message['id'])
        else:
            print("没有该生信息!")

    def find_student(self):
        find_message = int(input("请输入你要查找信息的学生学号:"))
        with open('student.json', 'r') as file:
            student_python_list = json.load(file)
        for message in student_python_list:
            if find_message == message['id']:
                for key, value in message.items():
                    print(f'{key}:{value}')
                break
        else:
            print("没有该生信息!")


    def load_student(self):
        # print(f'姓名\t学号\t性别')
        # for messaeg in self.student_list:
        #     f'{messaeg.name}\t{messaeg.id}\t{messaeg.gender}'
        with open('student.json', 'r') as f:
            student_dict = json.load(f)
            print(student_dict)
        # try:
        #     f = open("student.data", 'r')
        # except:
        #     f = open("student.data", 'w')
        # else:
        #     data = f.read()
        #     new_list = eval(data)
        #     self.student_list = [Student(i['name'], i['id'], i['gender']) for i in new_list]
        #     for message in self.student_list:
        #         print(f'姓名:{message.name}\t学号:{message.id}\t性别:{message.gender}', end='\t')
        #         for key, value in message.addmessage.items():
        #             print(f'{key}:{value}')
        # finally:
        #     f.close()


    # 程序入口
    def run(self):
        while True:
            # 调用内部函数要注意加self
            # 显示菜单
            # self.show_menu()
            # 根据用户输入的序号实现功能
            user_num = int(input("\n请输入你的功能序号:"))

            if user_num == 1:
                self.add_student()

            elif user_num == 2:
                self.add_message()

            elif user_num == 3:
                self.modify_student()

            elif user_num == 4:
                self.del_student()

            elif user_num == 5:
                self.find_student()

            elif user_num == 6:
                self.load_student()

            elif user_num == 7:
                break



  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值