1、基本需求:
需求:根据操作流程以及系统需求,完成面向对象版学生管理系统项目开发
l
a.可以显示基本的版本信息和操作界面;
b.可以通过键盘输入信息来完成基本功能,例如选择序号、确认退出、添加学生、修改信息等;
c.学生属性信息有姓名、性别、年龄、联系方式、描述信息等;
d.使用系统可对学生信息进行添加、修改、删除、查询等操作;
e.可以使用文件对学生信息进行加载、保存等;
f.可重复对学生进行增删查改操作,当确认退出系统后,则直接退出系统;
g.请使用面向对象的编程思想完成项目的升级处理。
2、角色分析
角色:学生管理系统 和 学员 2个类
但是由于学生管理系统操作对象为学员,为了方便后期扩展,我们把学员也封装为一个角色。
注意事项
① 为了方便维护代码,一般一个角色一个程序文件
② 项目要有主程序入口,习惯为`main.py`
3、项目文件规划
创建项目目录,例如:" StudentManagerSystem "程序文件如下:
4、具体代码
程序入口文件:
main.py
# 导入 StudentCms 类
from studentcms import StudentCms
# 判断当前文件是否为主程序
if __name__ == '__main__':
# 创建 StudentCms 类的实例对象
student_cam = StudentCms()
# 调用实例对象的 start 方法
student_cam.start()
学员文件:
student.py
class Student():
def __init__(self,name,age,gender,phone,des):
self.name = name
self.age = age
self.gender = gender
self.phone = phone
self.des = des
def __str__(self):
return f' 姓名:{self.name} 年龄:{self.age} 性别:{self.gender} 手机号:{self.phone} 描述信息:{self.des}'
管理系统文件:
studentcms.py
# 导包
import time
from student import Student
import os
# 定义学生管理系统类
class StudentCms(object):
# 定义初始化属性.
def __init__(self):
self.student_list = []
@staticmethod
def show_operate_view():
'''
定义函数,打印提示信息
:return:无
'''
print("-" * 30)
print('***** 学生管理系统V2.0 *****')
print('\t1.添加学生;')
print('\t2.修改学生;')
print('\t3.删除学生;')
print('\t4.查询某个学生;')
print('\t5.显示所有学生;')
print('\t6.保存信息;')
print('\t0.退出系统;')
print("-" * 30)
def start(self):
self.load_student()
while True:
time.sleep(1)
StudentCms.show_operate_view()
num = input("请输入你要操作的序号:")
if num == '1':
print("--------1.修改学生--------")
self.add_student()
elif num == '2':
print("--------2.修改学生--------")
self.update_student()
elif num == '3':
print("--------3.删除学生--------")
self.delete_student()
elif num == '4':
print("--------4.查询某个学生--------")
self.query_student()
elif num == '5':
print("--------5.显示所有学生--------")
self.show_all_student()
elif num == '6':
print("--------6.保存信息--------")
self.save_student()
elif num == '0':
print("--------0.退出系统--------")
out_str = input("您是否真的确认退出(Y/N):")
if out_str.lower() == "y":
time.sleep(1)
print("感谢使用,下次再见!")
break
else:
print("您选中的序号暂不存在,敬请期待")
def add_student(self):
'''
定义函数,添加学生信息
:return:
'''
name = input("请输入要添加的姓名:")
age = input("请输入要添加的年龄:")
gender = input("请输入要添加的性别:")
phone = input("请输入要添加的手机号:")
des = input("请输入要添加的信息:")
student = Student(name, age, gender, phone, des)
self.student_list.append(student)
print(f'学生{name}信息已添加成功\n')
def update_student(self):
'''
定义函数,修改学生信息
:return:
'''
name = input("请输入你要修改的学生姓名:")
for student in self.student_list:
if student.name == name:
student.age = input('请输入新的年龄:')
student.gender = input('请输入新的性别:')
student.phone = input('请输入新的手机号:')
student.des = input('请输入新的信息:')
print('学生信息已修改成功\n')
break
else:
print('您要修改的学生不存在\n')
def delete_student(self):
'''
定义函数, 删除学生信息
:return:
'''
delete_name = input('请输入要删除的学生姓名:')
for student in self.student_list:
if student.name == delete_name:
self.student_list.remove(student)
print(f'学生{student.name}信息已删除成功.\n')
break
else:
print('您要删除的学生不存在\n')
def query_student(self):
'''
定义函数, 查询学生信息
:return:
'''
name = input("请输入你要查询的学生姓名:")
for student in self.student_list:
if student.name == name:
print(student)
print()
break
else:
print('您要查询的学生不存在\n')
def show_all_student(self):
'''
定义函数, 显示所有学生信息
:return:
'''
if len(self.student_list) <= 0:
print('暂无任何学生信息\n')
else:
for student in self.student_list:
print(f'姓名:{student.name} 年龄:{student.age} 性别:{student.gender} 手机号:{student.phone} 信息:{student