主要界面
建议跟着框架自行完成功能需求,最下面有完整带注释版本,学生信息会存到当前目录下data.txt文本中,没有则会自行创建
涉及到的知识点
- 面向对象
- 列表, 字典
- for, if, input…
- 文件操作
需求分析
开始 -> 循环调用主程序 ->不同的功能->退出保存
1.基本框架搭建
student.py 学生类
class Student:
def __init__(self, name, gender, age, mobile, des):
'''
初始化学生属性信息
:param name:
:param gender:
:param age:
:param mobile:
:param des: 描述信息
'''
self.name = name
self.gender = gender
self.age = age
self.mobile = mobilec
self.des = des
def __str__(self):
return f'Student: 姓名: {self.name},性别: {self.gender},年龄: {self.age},手机号: {self.mobile},描述信息: {self.des}'
student_cms 类创建
from Student import Student
class cms:
def __init__(self):
# 定义空间用来临时存储学生数据
self.students = []
#show_info 通过静态方法实现
@@staticmethod
def show_info(self):
# 打印基本提示信息
pass
def add_student(self):
# 往students列表中添加新学生
pass
def del_student(self):
# 删除students列表中指定name的学生
pass
def update_student(self):
# 在students列表中找到指定name的学生并修改其属性
pass
def get_student_info(self):
# 在students列表中找到指定name的学生并返回其信息
pass
def get_students_info(self):
# 列出students列表中所有学生的基本信息
pass
def save_info(self):
# 持久化students列表中的学生数据到本地
pass
def load_info(self):
# 从本地读取学生数据并重新加载到students列表中
pass
def run(self):
# 主函数,循环执行功能
pass
2.功能实现
1.show_info()
def show_info():
'''
显示操作界面
:return:
'''
print('-' * 30)
print('\t学生信息管理系统')
print('\t1. 添加学生信息')
print('\t2. 更新学生信息')
print('\t3. 删除学生信息')
print('\t4. 查询学生信息')
print('\t5. 显示所有学员信息')
print('\t6. 保存信息')
print('\t0. 退出系统')
print('-' * 30)
2.add_student()
def add_student(self):
'''
添加学生信息
:return:
'''
print('-' * 30)
name = input('请输入姓名: ')
gender = input('请输入性别: ')
age = int(input('请输入年龄: '))
mobile = input('请输入手机号: ')
des = input('请输入描述信息: ')
s = Student(name, gender, age, mobile, des)
self.students.append(s)
print(f'添加学生 {name} 信息成功')
3.update_student()
def update_student(self):
'''
更新学生信息
:return:
'''
n = input('请输入你要修改学生的姓名')
if not self.students:
print('没有找到该学生!')
return
for s in self.students:
if s.name == n:
print('-' * 30)
name = input('请输入姓名: ')
gender = input('请输入性别: ')
age = int(input('请输入年龄: '))
mobile = input('请输入手机号: ')
des = input('请输入描述信息: ')
s.name = name
s.gender = gender
s.age = age
s.mobile = mobile
s.des = des
print(f'修改学生 {n} 信息成功')
return
print('没有找到该学生!')
4.delete_Student()
def delete_student(self):
'''
删除学生信息
:return:
'''
n = input('请输入要删除学生的名字: ')
if not self.students:
print('没有找到该学生!')
return
for s in self.students:
if s.name == n:
self.students.remove(s)
print(f'删除学生 {n} 信息成功')
return
print('没有找到该学生!')
5.get_Student_info()
def get_student_info(self):
'''
查询单个学生信息
:return:
'''
n = input('请输入你要查询信息的学生名字')
if not self.students:
print('没有找到该学生!')
return
flag = False
for s in self.students:
if s.name == n:
print('-' * 30)
print(s)
flag = True
if not flag:
print('-' * 30)
print('没有找到该学生!')
6.get_students_info
def get_students_info(self):
'''
查询所有学生信息
:return:
'''
if not self.students:
print('当前没有任何学生信息!')
return
for i in self.students:
print(i)
7 save_info():
def save_info(self):
w = open('data.txt', 'w')
for s in self.students:
# w.write(f'{s.name},{s.gender},{s.age},{s.mobile},{s.des}\n')
data = s.__dict__
w.write(str(data) + '\n') # 转为json字符串
w.close()
print('信息已保存!')
8.load_info()
def load_info(self):
if not os.path.isfile('data.txt'):
n = open('data.txt', 'w')
n.close()
r = open('data.txt', 'r')
for line in r:
line = eval(line)
name, gender, age, mobile, des = line['name'], line['gender'], line['age'], line['mobile'], line['des']
s = Student(name, gender, int(age), mobile, des)
self.students.append(s)
print('信息已读取')
r.close()
9.run()
def run(self):
'''
主函数
:return:
'''
self.load_info() # 读取数据
while True:
time.sleep(1)
self.show_info()
choice = input('请选择操作(0-6): ')
if choice == '0':
n = input('你确定要退出吗,y确定 : ')
if n.lower() == 'y':
print('已退出系统!')
break
elif choice == '1':
self.add_student()
elif choice == '2':
self.update_student()
elif choice == '3':
self.delete_student()
elif choice == '4':
self.get_student_info()
elif choice == '5':
self.get_students_info()
elif choice == '6':
self.save_info()
else:
print('输入有误,请重新输入!')
完整带注释版本
import os
import time
from Student import Student
# 学生信息管理系统类
class StudentCMS:
def __init__(self):
# 初始化一个空的学生列表
self.students = []
@staticmethod
def show_info():
'''
显示操作界面
:return:
'''
# 打印系统界面信息
print('-' * 30)
print('\t学生信息管理系统')
print('\t1. 添加学生信息')
print('\t2. 更新学生信息')
print('\t3. 删除学生信息')
print('\t4. 查询学生信息')
print('\t5. 显示所有学员信息')
print('\t6. 保存信息')
print('\t0. 退出系统')
print('-' * 30)
def add_student(self):
'''
添加学生信息
:return:
'''
# 打印添加学生信息的提示
print('-' * 30)
# 获取用户输入的学生信息
name = input('请输入姓名: ')
gender = input('请输入性别: ')
age = int(input('请输入年龄: '))
mobile = input('请输入手机号: ')
des = input('请输入描述信息: ')
# 创建学生对象并添加到学生列表中
s = Student(name, gender, age, mobile, des)
self.students.append(s)
# 提示用户添加成功
print(f'添加学生 {name} 信息成功')
def update_student(self):
'''
更新学生信息
:return:
'''
# 获取用户输入的要更新的学生姓名
n = input('请输入你要修改学生的姓名')
# 如果学生列表为空,提示没有找到学生并返回
if not self.students:
print('没有找到该学生!')
return
# 遍历学生列表,找到要更新的学生
for s in self.students:
if s.name == n:
# 打印更新学生信息的提示
print('-' * 30)
# 获取用户输入的更新后的学生信息
name = input('请输入姓名: ')
gender = input('请输入性别: ')
age = int(input('请输入年龄: '))
mobile = input('请输入手机号: ')
des = input('请输入描述信息: ')
# 更新学生对象的属性
s.name = name
s.gender = gender
s.age = age
s.mobile = mobile
s.des = des
# 提示用户更新成功
print(f'修改学生 {n} 信息成功')
return
# 如果没有找到学生,提示没有找到
print('没有找到该学生!')
def delete_student(self):
'''
删除学生信息
:return:
'''
# 获取用户输入的要删除的学生姓名
n = input('请输入要删除学生的名字: ')
# 如果学生列表为空,提示没有找到学生并返回
if not self.students:
print('没有找到该学生!')
return
# 遍历学生列表,找到要删除的学生
for s in self.students:
if s.name == n:
# 从学生列表中删除该学生
self.students.remove(s)
# 提示用户删除成功
print(f'删除学生 {n} 信息成功')
return
# 如果没有找到学生,提示没有找到
print('没有找到该学生!')
def get_student_info(self):
'''
查询单个学生信息
:return:
'''
# 获取用户输入的要查询的学生姓名
n = input('请输入你要查询信息的学生名字')
# 如果学生列表为空,提示没有找到学生并返回
if not self.students:
print('没有找到该学生!')
return
flag = False
# 遍历学生列表,找到要查询的学生
for s in self.students:
if s.name == n:
# 打印查询到的学生信息
print('-' * 30)
print(s)
flag = True
# 如果没有找到学生,提示没有找到
if not flag:
print('-' * 30)
print('没有找到该学生!')
def get_students_info(self):
'''
查询所有学生信息
:return:
'''
# 如果学生列表为空,提示当前没有学生信息并返回
if not self.students:
print('当前没有任何学生信息!')
return
# 遍历学生列表,打印所有学生信息
for i in self.students:
print(i)
def save_info(self):
# 打开
w = open('data.txt', 'w')
# 遍历学生列表,将每个学生的信息写入文件
for s in self.students:
# 将学生对象转换为字典,然后转换为字符串写入文件
data = s.__dict__
w.write(str(data) + '\n')
w.close()
# 提示用户保存成功
print('信息已保存!')
def load_info(self):
# 判断文件是否存在,如果不存在则创建一个空文件
if not os.path.isfile('data.txt'):
n = open('data.txt', 'w')
n.close()
# 打开文件,读取学生信息
r = open('data.txt', 'r')
for line in r:
# 将字符串转换为字典,然后创建学生对象并添加到学生列表中
line = eval(line)
name, gender, age, mobile, des = line['name'], line['gender'], line['age'], line['mobile'], line['des']
s = Student(name, gender, int(age), mobile, des)
self.students.append(s)
# 提示用户读取成功
print('信息已读取')
r.close()
def run(self):
'''
主函数
:return:
'''
# 读取学生信息
self.load_info()
while True:
# 等待用户输入操作
time.sleep(1)
self.show_info()
choice = input('请选择操作(0-6): ')
if choice == '0':
n = input('你确定要退出吗,y确定 : ')
if n.lower() == 'y':
print('已退出系统!')
break
elif choice == '1':
self.add_student()
elif choice == '2':
self.update_student()
elif choice == '3':
self.delete_student()
elif choice == '4':
self.get_student_info()
elif choice == '5':
self.get_students_info()
elif choice == '6':
self.save_info()
else:
print('输入有误,请重新输入!')
if __name__ == '__main__':
cms = StudentCMS()
cms.run()