目录
一、项目需求
基本需求:完成系统的增、删、改、查功能
增加需求:1.使用面向对象的思想开发;2.把学生信息存储到外部文件中
二、分析
学生类:
属性:
包含三个参数姓名(name)、年龄(age)、电话(tel);其中年龄age为int类型
方法:
__init__ 学生类的初始化方法
管理系统类:
属性:
学生列表 user_list
方法:
1.__init__ 管理系统初始化方法
2.增加学生
3.删除学生
4.修改学生
5.查询全部学生
6.查询单个学生
7.加载数据
8.保存数据
9.打印目录方法
数据文件:
文件名:stu_data.txt
三、优化
对于本项目,学生的信息在文件中存储是以列表套字典的格式进行存储,具体格式如图:
而在学生列表中则是以实例对象的方式进行存储,以减少内存占用,格式如图:
四、项目方法构造
学生类:
class Student(object):
def __init__(self, _name='', _age=0, _tel=''):
self.name = _name
self.age = _age
self.tel = _tel
self.stu_dict = {'name': self.name, 'age': self.age, 'tel': self.tel}
分析:学生类中使用 __init__ 方法定义三个学生属性参数;stu_dict 用来把学生对象转换成字典的形式保存
管理系统类:
1、载入数据
def data_into(self):
"""载入数据"""
# 判断文件是否存在 若不存在则退出
if not os.path.exists('./stu_data.txt'):
return
# 如果存在则对数据进行提取、载入,并以实例对象的形式保存到user_liast中
with open('stu_data.txt', 'r') as f:
# data_list 为临时变量, 临时保存数据列表
data_list = eval(f.read())
if data_list:
for each in data_list:
self.user_list.append(Student(each['name'], each['age'], each['tel']))
2、导出数据
def save_data(self):
"""导出数据"""
with open('stu_data.txt', 'w') as f:
data_list = []
# 把类对象的字典形式提取出来并转为str形式保存
# data_list为临时变量,临时保存列表
for each in self.user_list:
data_list.append(each.stu_dict)
f.write(str(data_list))
3、打印目录
@staticmethod
def show_menu():
print('-' * 20)
print('= 1. 添加学生')
print('= 2. 删除学生')
print('= 3. 修改学生')
print('= 4. 查询全部学生')
print('= 5. 查询某个学生')
print('= 6. 保存信息')
print('= 7. 退出系统')
print('-' * 20)
4、增加学生信息
def add_stu(self):
"""添加学生"""
name = input('请输入要添加学生的姓名: ')
# 如果学生姓名重复则重新输入