运用面向对象的部分内容,进行学生信息的增、删、改、查
创建student.py文件
# 定义学生类
class Student(object):
# 添加学生id,姓名,年龄,性别属性
def __init__(self,stu_id,name,age,gender):
# 学生id
self.stu_id = stu_id
# 学生姓名
self.name = name
# 学生年龄
self.age = age
# 学生性别
self.gender = gender
# 输出
def __str__(self):
return f"学生学号:{self.stu_id},学生姓名:{self.name},学生年龄:{self.age},学生性别:{self.gender}"
# 防止别人导入时执行
if __name__ == '__main__':
stu = Student(1, '王', 18, '男')
print(stu)
定义student_manager_system,py文件
# 导入student.py文件
import student
# 创建stu_dicts储存学生信息(可用列表、元组)
class StudentManagerSystem(object):
def __init__(self):
# 定义用于储存学生信息
self.stu_dicts = {}
# 定义为静态方法
@staticmethod
# 定义目录用于进行操作
def show_menu():
print('1.添加学生新生')
print('1.删除学生新生')
print('3.修改学生信息')
print('4.查看指定学生信息')
print('5.查看所有学生信息')
print('6.退出系统')
# 添加学生信息
def insert_student(self):
# input获取学生信息
stu_id = input("请输入学生学号:")
# 代码优化,判断学生信息是否存在,学号是否存在,判断字典key是否存在
if stu_id in self.stu_dicts: # key存在返回True
print('学生信息已存在!')
return
# 输入学生姓名
name = input("请输入学生姓名:")
# 输入学生年龄
age = input("请输入学生年龄:")
# 输入学生性别
gender = input("请输入学生性别:")
# 使用学生信息 ,创建学生对象
stu = student.Student(stu_id, name, age, gender)
# 将学生对象添加到字典中 字典添加数据:字典[key] = 数据值
self.stu_dicts[stu_id] = stu
# 删除学生信息
def remove_student(self):
# 1.使用input输入学号
stu_id = input("请输入学号:")
# 判断是否存在
if stu_id in self.stu_dicts:
# 删除字典中数据
del self.stu_dicts[stu_id]
print("学生已经删除!")
# 不存在输出
else:
print("学生信息不存在,无法删除!")
# 定义修改学生信息
def modify_student(self):
# 1.使用input输入学号
stu_id = input("请输入学号:")
# 判断是否存在
if stu_id in self.stu_dicts:
# 修改对象属性 对象.属性名= 属性值
stu = self.stu_dicts[stu_id]
# 输入修改后的年龄
stu.age = input('请输入新的学生年龄:')
# 输入修改后的学生姓名
stu.name = input("请输入新的学生姓名:")
# 输入修改后的学生性别
stu.gender = input("请输入新的学生性别:")
print("学生已经修改!")
# 如果不存在输出
else:
print("学生信息不存在,无法删除!")
# 定义查找学生信息
def search_student(self):
# 1.使用input输入学号
stu_id = input("请输入学号:")
# 判断是否存在
if stu_id in self.stu_dicts:
# 修改对象属性 对象.属性名= 属性值
stu = self.stu_dicts[stu_id]
print(stu)
else:
print("学生信息不存在,无法删除!")
# 定义查看所有学生信息
def show_all_info(self):
# 循环遍历学生信息
for stu in self.stu_dicts.values():
print(stu)
# 定义文件
def save(self):
# 如果存在student.txt文件则覆盖,没有则创建
f = open('student.txt', 'w', encoding='utf-8')
# 遍历stu_dicts储存到文件中
for stu in self.stu_dicts.values():
f.write(str(stu) + '\n') # str(stu) 调用student类中的__str__方法
# 关闭文件
f.close()
# 防止报错
def load_info(self):
try:
f = open('student.txt', 'r', encoding='utf-8')
# 定义空列表写入
buf_list = f.readlines()
# 循环遍历列表
for buf in buf_list:
buf = buf.strip() # 移除自带的\n(回车符)
info_list = buf.split(',') # 列表类型
# 创建对象
# stu = student.Student(info_list[0],info_list[1],info_list[2],info_list[3])
stu = student.Student(*info_list) # 等价于上一个
# 将对象添加到字典中
stu_id = info_list[0]
self.stu_dicts[stu_id] = stu
# 关闭文件
f.close()
# 不报错跳过
except Exception:
pass
# 定义开始函数
def start(self):
while True:
self.show_menu()
# 输入操作
opt = input("请输入要操作编号:")
if opt == '1':
self.insert_student()
elif opt == '2':
self.remove_student()
elif opt == '3':
self.modify_student()
elif opt == '4':
self.search_student()
elif opt == '5':
self.show_all_info()
elif opt == '6':
self.save()
print('欢迎下次使用本程序')
break
else:
print("输入有误,请再次输入"·)
continue
input("——————————输入回车下一步——————————")
建立main.py文件(主文件,用于运行程序)
# 导入student_manager_system.py文件
import student_manager_system as sms
# 魔法方法
if __name__ == '__main__':
stu_sms = sms.StudentManagerSystem()
stu_sms.start()