面向对象:编程思想.偷懒
对象=管理系统类()
对象.start()
----------------
管理系统类
类名:StudentMangerSystem
属性:
所有学生信息
学生列表=[]
学生字典={‘学号’:一个学生对象,}
方法:增删改查 显示菜单信息
学生:字典
类名:student
属性:
姓名 name
年龄 age
性别 gender
学生学号 std_id
方法:
__init__
__str__
1.一个类作为一个 python 文件
2.定义一个 main.py 作为程序代码的启动文件
---------------------------
代码文件的组成:
student.py # 定义 Student类
main.py # 作为程序的启动代码
注意:这里需要使用三个python文件
1.运行代码(文件一)
import student_manger as sms
if __name__ == '__main__':
stu_sms = sms.StudentManger()
stu_sms.start()
管理系统类代码(文件二)
class StudentManger(object):
def __init__(self):
self.student_dict = {}
@staticmethod
def show_menu():
print('1.添加学生')
print('2.删除学生')
print('3.修改学生信息')
print('4.查询单个学生信息')
print('5.查询所有的学生信息')
print('6.退出系统')
def start(self):
while True:
self.show_menu()
opt = input('选择要进行的标号:')
if opt == '1':
print('1.添加学生')
# insert_studet()
elif opt == '2':
print('2.删除学生')
# stud_remove()
elif opt == '3':
# stud_modify()
print('3.修改学生信息')
elif opt == '4':
print('4.查询单个学生信息')
# stud_single()
elif opt == '5':
print('5.查询所有的学生信息')
# show_all_stud()
elif opt == '6':
print('6.退出系统')
break
else:
print('输入有误,请重新输入')
continue
input('-----请按回车键在进行操作-------')
3.学生属性(文件三)
class Student(object):
def __init__(self, name, age, gender, std_id):
self.name = name
self.age = age
self.gender = gender
self.std_id = std_id
def __str__(self):
return f'学生姓名{self.name},年龄{self.age},性别{self.gender}'
if __name__ == '__main__':
student = Student('小明', 12, '男', 1)
print(student)
1.使用input 获取学生的信息
2.使用学生的信息,创建学生对象
3.将学生对象添加到字典中
import student
class StudentManger(object):
def __init__(self):
self.student_dict = {}
@staticmethod
def show_menu():
print('1.添加学生')
print('2.删除学生')
print('3.修改学生信息')
print('4.查询单个学生信息')
print('5.查询所有的学生信息')
print('6.退出系统')
def insert_student(self):
# 使用input获取学生信息
std_id = input('输入学生的学号:')
# 代码优化,判断学生信息是否存在,学号是否存在,判断字典key是否存在
if std_id in self.student_dict:
print('学生信息存在,不需要再次添加')
return
name = input('输入学生的名字:')
age = input('输入学生的年龄:')
gender = input('输入学生的性别:')
# 使用学生信息,创建学生对象 学生类(参数)
stu = student.Student(std_id, name, age, gender)
# 将学生对象添加的字典中,字典['key']=数据值
self.student_dict[std_id] = stu
def remove(self):
stu_id = input('输入学生学号:')
if stu_id in self.student_dict:
del self.student_dict[stu_id]
print('学生已经删除')
else:
print('学生信息已经删除了')
def modify_student(self):
stu_id = input('输入学生的学号:')
if stu_id in self.student_dict:
# 修改对象的属性 对象.属性名=属性值
stu = self.student_dict[stu_id] # 字典[key]
stu.age = input('请输入新的年龄:')
stu.name = input('请输入新的名字:')
print('信息修改完毕')
else:
print('学生信息不存在,无法删除')
def search_student(self):
stu_id = input('输入学号:')
if stu_id in self.student_dict:
stu = self.student_dict[stu_id]
print(stu)
else:
print('学生信息不存在,无法删除')
def show_all(self):
for i in self.student_dict.values():
print(i)
def start(self):
while True:
self.show_menu()
opt = input('选择要进行的标号:')
if opt == '1':
self.insert_student()
# insert_studet()
elif opt == '2':
self.remove()
# stud_remove()
elif opt == '3':
# stud_modify()
self.modify_student()
elif opt == '4':
self.search_student()
elif opt == '5':
self.show_all()
elif opt == '6':
print('6.退出系统')
break
else:
print('输入有误,请重新输入')
continue
input('-----请按回车键在进行操作-------')
{'11':对象,'22':对象}
{'11':0*100,'22':0*200}
str({'11':0*100,'22':0*200}
把具体的学生信息保存到文件中
11,aa,,18,m
22,bb,16,f
for x in {}.values():
pass
读取文件,一行内容就是一个学生信息
readlines 读取所有行
将列表中的每一项数据转换位对象
Student(id,name,age,gender)
import student
class StudentManger(object):
def __init__(self):
self.student_dict = {}
@staticmethod
def show_menu():
print('1.添加学生')
print('2.删除学生')
print('3.修改学生信息')
print('4.查询单个学生信息')
print('5.查询所有的学生信息')
print('6.退出系统')
def insert_student(self):
# 使用input获取学生信息
std_id = input('输入学生的学号:')
# 代码优化,判断学生信息是否存在,学号是否存在,判断字典key是否存在
if std_id in self.student_dict:
print('学生信息存在,不需要再次添加')
return
name = input('输入学生的名字:')
age = input('输入学生的年龄:')
gender = input('输入学生的性别:')
# 使用学生信息,创建学生对象 学生类(参数)
stu = student.Student(std_id, name, age, gender)
# 将学生对象添加的字典中,字典['key']=数据值
self.student_dict[std_id] = stu
def remove(self):
stu_id = input('输入学生学号:')
if stu_id in self.student_dict:
del self.student_dict[stu_id]
print('学生已经删除')
else:
print('学生信息已经删除了')
def modify_student(self):
stu_id = input('输入学生的学号:')
if stu_id in self.student_dict:
# 修改对象的属性 对象.属性名=属性值
stu = self.student_dict[stu_id] # 字典[key]
stu.age = input('请输入新的年龄:')
stu.name = input('请输入新的名字:')
print('信息修改完毕')
else:
print('学生信息不存在,无法删除')
def search_student(self):
stu_id = input('输入学号:')
if stu_id in self.student_dict:
stu = self.student_dict[stu_id]
print(stu)
else:
print('学生信息不存在,无法删除')
def show_all(self):
for i in self.student_dict.values():
print(i)
def save(self):
f = open('student.txt', 'w', encoding='utf-8')
for i in self.student_dict.values():
f.write(str(i) + '\n') # str(i) 调用student类中的方法
f.close()
def load_info(self):
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)
# 将对象添加到字典中
stu_id=info_list[0]
self.student_dict[stu_id]=stu
f.close()
def start(self):
while True:
self.show_menu()
opt = input('选择要进行的标号:')
if opt == '1':
self.insert_student()
# insert_studet()
elif opt == '2':
self.remove()
# stud_remove()
elif opt == '3':
# stud_modify()
self.modify_student()
elif opt == '4':
self.search_student()
elif opt == '5':
self.show_all()
elif opt == '6':
print('6.退出系统')
break
else:
print('输入有误,请重新输入')
continue
input('-----请按回车键在进行操作-------')