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