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()
学生管理系统--面向对象
最新推荐文章于 2024-03-18 22:39:56 发布
1444

被折叠的 条评论
为什么被折叠?



