大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
使用面向对象完成了学员管理系统,实现了添加、删除、修改、查询、保存读取等功能,将学员、学员管理后台、开始入口分为了3个py文件,分别是Student.py、Student_management.py、main.py。保存文件名叫student.txt文件。内含注释,我也是给初学者,可能有些地方解释不清楚。
Student.py代码如下
# 定义学生的类
class Student(object):
def __init__(self, name, gender, number):
self.name = name # 表示学生姓名
self.gender = gender # 表示学生性别
self.number = number # 表示学生手机号
def __str__(self): # 打印学生状态
return f'姓名:{self.name}\t性别:{self.gender}\t手机号:{self.number}'
Student_management.py代码
开始函数:
def run(self):
# 读取文件
self.du_qu()
while True:
# 打印菜单
self.cai_dan()
# 用户选择
xuan_ze = input('请输入你的选择:')
if xuan_ze == '1':
self.xuan_ze1()
elif xuan_ze == '2':
self.xuan_ze2()
elif xuan_ze == '3':
self.xuan_ze3()
elif xuan_ze == '4':
self.xuan_ze4()
elif xuan_ze == '5':
self.xuan_ze5()
elif xuan_ze == '6':
self.xuan_ze6()
elif xuan_ze == '7':
print('你以成功退出!')
break
else:
print('你的选择出错,请重新输入:')
加载数据函数
def du_qu(self):
# 读取文件
# 设置一个异常,第一次运行时如果没有该文件则会报错运行w模式进行创建
try:
f = open('student.txt', mode='r')
except:
f = open('student.txt', mode='w')
else:
new_student = f.read()
# print(new_student) # 测试
# 将读取的字符串当中表达式进行有效的表达式进行计算并返回值
# 在这里的作用是将读取的字符串转换为列表格式,因为保存时是以列表的格式转换为字符串的类型进行保存,
# 所以在文件中还保留着列表的中括号,在这里当中有效的表达式进行计算就可以返回一个列表
student_list = eval(new_student) # 列表类型,内部每个学员是字典类型
for i in student_list:
# 迭代将列表的数据读取出来保存到学员管理的学员列表中,将数据传入Student可以让他们的格式统一
self.student_list.append(Student.Student(i['name'], i['gender'], i['number']))
# print(self.student_list) # 测试
finally:
f.close() #关闭文件
菜单函数:
def cai_dan(self):
print('1、添加学员')
print('2、删除学员')
print('3、修改学员')
print('4、查询学员')
print('5、显示全部学员')
print('6、保存学员')
print('7、退出系统')
添加学员函数
def xuan_ze1(self):
# 添加学员
name = input('请输入你要添加的学员姓名:')
gender = input('请输入你要添加的学员性别:')
number = input('请输入你要添加的学员手机号:')
# 添加到学员系统模块
student = Student.Student(name, gender, number) # 传入名字、性别、手机号
# 在添加到列表中方便保持
self.student_list.append(student)
# print(self.student_list) # 测试
# print(student) # 测试
# for i in self.student_list: #测试
# print(i)
删除学员函数
def xuan_ze2(self):
# 删除学员
name = input('请输入你要删除的学员名字:')
for i in self.student_list: # 迭代查找要删除的对象
if name == i.name: # 如果相同的话
self.student_list.remove(i) # 删除
break
else:
# 如果没有找到的话
print('查无此人!')
print(self.student_list) # 测试
修改学员函数
def xuan_ze3(self):
# 修改学员
name = input('请输入你要修改的学员姓名:')
for i in self.student_list: # 迭代查找要修改的学员
if name == i.name: # 如果相同的话
i.name = input('请输入修改后的学员姓名:')
i.gender = input('请输入修改后的学员性别:')
i.number = input('请输入修改后的学员手机号:')
print(f'修改后为:姓名:{i.name},性别:{i.gender},手机号:{i.number}')
break
else:
print('查无此人!')
查询学员函数
def xuan_ze4(self):
# 查询学员
name = input('请输入你要查询的学员姓名:')
for i in self.student_list: # 迭代查找查询学员姓名
if name == i.name: # 如果找到的话
print(f'该学员姓名为{i.name},性别为{i.gender},手机号为{i.number}')
break
else:
print('查无此人!')
显示全部学员函数
def xuan_ze5(self):
# 显示全部学员信息
print('%-4s\t%s\t%s' % ('姓名', '性别', '手机号')) # 格式化输出标头
for i in self.student_list:
print('%-4s\t%s\t%s' % (i.name, i.gender, i.number)) # 格式化
保存学员函数
def xuan_ze6(self):
# 获取句柄
f = open('student.txt', mode='w')
new_list = [] # 保存的列表
# 转换为字典进行保存,所以保存后数据未外层一个列表,如何内部为一个数据一个字典
for i in self.student_list:
new_list.append(i.__dict__)
# 下面的为上面的推导式,效果一样
# new_list =[i.__dict__ for i in self.student_list]
# 写入文件中,保存时还需要将字典转换为字符串
f.write(str(new_list))
# 关闭文件
f.close()
有需要完整代码的下面链接。
https://download.csdn.net/download/HHYZBC/85055822https://download.csdn.net/download/HHYZBC/85055822
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192838.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...