目录
一、函数
# 定义学生列表,保存所有的学生信息 stu_list = [] def show_menu(): print('1. 添加学生') print('2. 删除学生') print('3. 修改学生信息') print('4. 查询单个学生信息') print('5. 查询所有的学生信息') print('6. 退出系统') def insert_student(): # 1. 通过 input 函数获取学生的信息, 姓名, 年龄, 性别 name = input('请输入学生名字:') # [{}, {}, {}] 判断的是字典中的 value 是否存在 for stu in stu_list: if stu['name'] == name: print('----------学生信息存在---------') return # 结束函数的执行 age = input('请输入学生年龄:') gender = input('请输入学生性别:') # 2. 将学生信息转换为字典进行保存 stu_dict = {'name': name, 'age': int(age), 'gender': gender} # 3. 将这个学生字典添加的列表中 stu_list.append(stu_dict) print('==============学生信息添加成功====================') def remove_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 stu_list.remove(stu) # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在,无法删除**************') def modify_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 stu['age'] = int(input('请输入新的年龄:')) # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在,无法修改**************') def search_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 print(f'姓名:{stu["name"]}, 年龄:{stu["age"]}, 性别:{stu["gender"]}') # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在**************') def show_all_info(): if len(stu_list) > 0: for stu in stu_list: print(f'姓名:{stu["name"]}, 年龄:{stu["age"]}, 性别:{stu["gender"]}') # print(stu) else: print('目前没有学生信息') def main(): while True: show_menu() opt = input('请输入用来选择的操作编号:') if opt == '1': # print('1. 添加学生') insert_student() elif opt == '2': # print('2. 删除学生') remove_student() elif opt == '3': # print('3. 修改学生信息') modify_student() elif opt == '4': # print('4. 查询单个学生信息') search_student() elif opt == '5': # print('5. 查询所有的学生信息') show_all_info() elif opt == '6': print('欢迎下次使用本系统......') break else: print('输入有误,请再次输入') continue input('...... 回车键继续操作.......') main()
二、面向对象
1、main.py
import student_manager_system as sms
if __name__ == '__main__':
stu_sms = sms.StudentManagerSystem()
stu_sms.start()
2、管理类
import student
class StudentManagerSystem(object):
def __init__(self):
self.stu_dicts = {}
@staticmethod
def __show_menu():
print('1. 添加学生')
print('2. 删除学生')
print('3. 修改学生信息')
print('4. 查询单个学生信息')
print('5. 查询所有的学生信息')
print('6. 退出系统')
def __insert_student(self):
# 1. 使用 input 获取学生的信息
stu_id = input('请输入学生学号:')
# 代码优化, 判断学生信息是否存在, 学号是否存在. 判断字典的key是否存在
if stu_id in self.stu_dicts: # key存在返回True
print('学生信息已经存在, 不需要再次添加.........')
return
name = input('请输入学生名字:')
age = input('请输入学生年龄:')
gender = input('请输入学生性别:')
# 2. 使用学生信息,创建学生对象 学生类(参数)
stu = student.Student(stu_id, name, age, gender)
# 3. 将学生对象添加的字典中 字典['key'] = 数据值
self.stu_dicts[stu_id] = stu
def __remove_student(self):
# 1. 使用 input 输入学生学号
stu_id = input('请输入学号:')
# 2. 判断学生信息是否存在
if stu_id in self.stu_dicts:
# 3. 存在进行操作, 删除字典中的数据, del 变量[key]
del self.stu_dicts[stu_id]
print('学生已经删除')
else:
print('学生信息不存在,无法删除.....')
def __modify_student(self):
# 1. 使用 input 输入学生学号
stu_id = input('请输入学号:')
# 2. 判断学生信息是否存在
if stu_id in self.stu_dicts:
# 修改对象的属性 对象.属性名 = 属性值
stu = self.stu_dicts[stu_id] # 字典[key]
stu.age = input('请输入新的年龄:')
print('信息已经修改完毕.....')
else:
print('学生信息不存在,无法删除.....')
def __search_student(self):
# 1. 使用 input 输入学生学号
stu_id = input('请输入学号:')
# 2. 判断学生信息是否存在
if stu_id in self.stu_dicts:
# 修改对象的属性 对象.属性名 = 属性值
stu = self.stu_dicts[stu_id] # 字典[key]
print(stu)
else:
print('学生信息不存在,无法删除.....')
def __show_all_info(self):
for stu in self.stu_dicts.values():
print(stu)
def __save(self):
f = open('student.txt', 'w', encoding='utf-8')
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):
self.__load_info()
while True:
self.__show_menu()
opt = input('请输入用来选择的操作编号:')
if opt == '1':
# print('1. 添加学生')
self.__insert_student()
elif opt == '2':
# print('2. 删除学生')
self.__remove_student()
elif opt == '3':
# print('3. 修改学生信息')
self.__modify_student()
elif opt == '4':
# print('4. 查询单个学生信息')
self.__search_student()
elif opt == '5':
# print('5. 查询所有的学生信息')
self.__show_all_info()
elif opt == '6':
self.__save()
print('欢迎下次使用本系统......')
break
else:
print('输入有误,请再次输入')
continue
input('...... 回车键继续操作.......')
3、学生类
class Student(object):
def __init__(self, stu_id, name, age, gender):
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, 'aa', 18, 'm')
print(stu)