完成学员管理系统
- 1.最基本的增删改查
- 2.实现模块化
- 3.用面向对象进行编写
- 4.将学员信息进行保存,保存文键student.data
面向对象的抽离
学生模块 ------- 操作系统模块------主函数模块
- 学生模块
-
class Student():
def __init__(self,name,gender,telphone):#添加外部属性 姓名,性别,电话号码
#实例化属性
self.name=name
self.gender=gender
self.telphone=telphone
def __str__(self):#调用___str___()魔法方法,调用实例返回如下一些字符
return f"{self.name},{self.gender},{self.telphone}"
- 操作系统模块
-
from student import *
class StudentManager(object):
def __init__(self):
self.student_list = []
def run(self):
self.load_student()
self.b = 0
self.c = 0
while True:
if self.b == 0:
self.show_func()
if self.c == 0:
fun_num = eval(input("请输入序号:"))
print("-------------")
else:
self.fun_num = 7
self.c = 0
if fun_num == 1: # 添加学员
self.b = 1
self.add_student()
print("-------------")
elif fun_num == 2: # 删除学员
self.b = 1
self.del_student()
print("-------------")
elif fun_num == 3: # 修改学员信息
self.b = 1
self.modify_student()
print("-------------")
elif fun_num == 4: # 查询学员信息
self.b = 1
self.search_student()
print("-------------")
elif fun_num == 5: # 显示所有学员信息
self.b = 1
self.show_student()
print("-------------")
elif fun_num == 6: # 保存学员信息
self.b = 1
self.save_student()
print("-------------")
elif fun_num == 7: # 退出系统
self.s = input("是否退出系统:(Y.是,F.否):")
if self.s == "F":
self.b = 0
print("-------------")
continue
elif self.s == "Y":
print("-------------")
break
else:
print("输入的字符不在范围内,请重新输入")
self.c = 1
self.b = 1
print("-------------")
continue
elif fun_num == 8: # 返回上一级
self.b = 0
continue
else:
print("输入的序号不在范围内,请重新输入!!!")
self.b = 0
print("-------------")
continue
print("系统已退出!")
print("-------------")
@staticmethod
def show_func():
print("请选择以下功能:")
print("""************************************************
1:添加学员
2:删除学员
3:修改学员
4:查询学员
5:显示所有学员信息
6:保存学员信息
7:退出系统
8:返回主菜单""")
print("*************************************************")
def load_student(self):
try:
file = open('student.data', 'r', encoding='gbk')
except:
file = open('student.data', 'w', encoding='gbk')
else:
data = file.read()
new_list = eval(data) # 将字符串中的引号去了,就是字典
self.student_list = [Student(i['name'], i['gender'], i['telphone']) for i in new_list]
finally:
file.close()
def add_student(self):
name = input("请输入学生姓名:")
gender = input("请输入学生性别:")
telphonge = input("请输入学生电话号码:")
student = Student(name, gender, telphonge)
self.student_list.append(student)#将实例添加到列表中
# print(self.student_list)
if len(name) >= 4 or name.isdigit():
print("输入的名字不能超过4位,而且不能为数字")
elif gender != '男' and gender != '女':
print('性别输入有误')
elif len(telphonge) != 11 or not telphonge.isdigit():
return print("手机号码长度必须为11位,并且必须是纯数字")
print(student)
def del_student(self): # 删除学员
del_name = input("请输入你要删除的学员姓名:")
for student in self.student_list:
if del_name == student.name:
self.student_list.remove(student)
print("操作成功")
break
else:
print("没有这个学员的姓名")
print(self.student_list)
def modify_student(self): # 修改学员信息
modify_name = input("请输入你要修改学员的姓名:")
for student in self.student_list:
if modify_name == student.name:
student.name = input("姓名:")
student.gender = input('性别:')
student.telphone = input("电话号码:")
print("操作成功:", student)
break
else:
print("并没有这个学员!!!!")
def search_student(self):
search_name = input("请输入你要查找的学员姓名:")
for student in self.student_list:
if student.name == search_name:
print(student)
break
else:
print("并没有这个学员!!!")
def save_student(self):
file_name = open(r"student.data", 'w', encoding='gbk')
new_list = [student.__dict__ for student in
self.student_list] # student.__dict__ 是一个魔法方法 返回self.name:name(你输入的name)
file_name.write(str(new_list))
file_name.close()
print("操作成功")
def show_student(self):
print("姓名\t性别\t手机号码")
for student in self.student_list:
print('{}\t{}\t*2{}'.format(student.name, student.gender, student.telphone))
- 主函数模块
-
from 基础小项目.managersystem import *
if __name__ == '__main__':
student_manager=StudentManager()
student_manager.run()
运行效果:
D:\PycharmProjects\untitled11\venv\Scripts\python.exe D:/PycharmProjects/untitled11/基础小项目/main.py
请选择以下功能:
************************************************
1:添加学员
2:删除学员
3:修改学员
4:查询学员
5:显示所有学员信息
6:保存学员信息
7:退出系统
8:返回主菜单
*************************************************
请输入序号:1
-------------
请输入学生姓名:马云
请输入学生性别:男
请输入学生电话号码:15126459874
马云,男,15126459874
-------------
请输入序号:5
-------------
姓名 性别 手机号码
任正非 男 *215198754712
柳传志 男 *215745693241
马云 男 *215232456321
马化腾 男 *215245678956
董明珠 女 *215245687423
马云 男 *215126459874
-------------
请输入序号:
4
-------------
请输入你要查找的学员姓名:并没有这个学员!!!
-------------
请输入序号:4
-------------
请输入你要查找的学员姓名:马化腾
马化腾,男,15245678956
-------------
请输入序号: