您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页Python日常笔记(20) - 基础巩固

Python日常笔记(20) - 基础巩固

来源:爱够旅游网

面向对象学员管理系统

添加
删除
修改
查询

系统需求

使用面向对象编程思想完成学员管理系统的开发
学员数据储存在文件中
系统功能:添加学员信息,删除学员信息,修改学员信息,查询学员信息,显示学员信息,保存学员信息,退出系统
注意:为了方便维护代码,一般一个角色一个程序文件,项目入口程序,习惯为main.py

创建程序文件

Student.py

class Student(object):
   def __init__(self, name, age, no):
       self.name = name
       self.age = age
       self.no = no

   def __str__(self):
       return f"{self.name},{self.age},{self.no}"

功能实现步骤
存储数据的位置:student.data
加载数据
修改数据后保存文件
存储数据形式:列表存储学员对象
系统功能

添加学员
删除学员
修改学员
查询学员
显示所有学员
保存学员

序号功能列表

  1. 输入1表示添加学员功能
  2. 输入2表示删除学员功能
  3. 输入3表示修改学员功能
  4. 输入4表示查询学员功能
  5. 输入5表示显示所有学员
  6. 输入6表示保存学员信息
  7. 输入7表示退出系统

mananagerSystem.py代码如下:

from student import *

class MananagerSystem(object):
   def __init__(self):
       self.studenData = []
   def run(self):

# 加载学员信息
 self.loadStudents()
       while True:
           # 显示功能序号
           self.showNumber()
           # 输入序号
           num = input("请输入功能序号:")

           # 输入1表示添加学员功能
           if num == "1":
               self.addStudent()
           # 输入2表示删除学员功能
           elif num == "2":
               self.delStudent()
           # 输入3表示修改学员功能
           elif num == "3":
               self.updateStudent()
           # 输入4表示查询学员功能
           elif num == "4":
               self.searchStudent()
           # 输入5表示显示所有学员
           elif num == "5":
               self.showStudent()
           # 输入6表示保存学员信息
           elif num == "6":
               self.saveStudent()
           # 输入7表示退出系统
           elif num == "7":
               break

   def showNumber(self):
       print("功能序号描述:")
       print("\t1.添加学员")
       print("\t2.删除学员功能")
       print("\t3.修改学员功能")
       print("\t4.查询学员功能")
       print("\t5.显示所有学员")
       print("\t6.保存学员信息")
       print("\t7.退出系统")

   # 添加学员
   def addStudent(self):
       pass
   # 删除学员功能
   def delStudent(self):
       pass
   # 修改学员功能
   def updateStudent(self):
       pass
   # 查询学员功能
   def searchStudent(self):
       pass
   # 显示所有学员
   def showStudent(self):
       pass
   # 保存学员信息
   def saveStudent(self):
       pass

# 加载学员信息

def loadStudents(self):

pass

后续就开始补全各个功能代码.

添加功能

用户输入姓名,性别,学号
创建学员对象
将该学员对象添加到列表

# 添加学员
def addStudent(self):
   name = input("请输入学员名称:")
   age = input("请输入学员年龄:")
   no = input("请输入学员学号:")
   stu = Student(name, age, no)

删除学员功能
用户输入学员姓名
遍历学员数据列表
如果用户输入的学员姓名存在则删除,如果不存在提示学员不存在

# 删除学员功能
def delStudent(self):
   name = input("请输入学员名称:")
   for stu in self.studenData:
       if stu.name == name:
           self.studenData.remove(stu)
           print("删除成功")
           break
   else:
       print("学员不存在")

修改学员信息

用户输入目标学员姓名,遍历学员数据列表,如果用户学员存在则修改姓名,年龄,学号,否则提示该学员不存在

# 修改学员功能
def updateStudent(self):
   name = input("请输入学员名称:")
   for stu in self.studenData:
       if stu.name == name:
           yes = input(f"需要修改的学员信息:{stu.name},{stu.age},{stu.no},是否继续修改,是:y,否:其它")
           if yes == "y":
               name = input("请输入学员名称:")
               age = input("请输入学员年龄:")
               no = input("请输入学员学号:")
               stu.name = name
               stu.age = age
               stu.no = no
           break
   else:
       print("学员不存在")

查询学员信息

用户输入学员名称,遍历数据列表,如果学员存在则打印,如果不存在则打印学员不存在

# 查询学员功能
def searchStudent(self):
   name = input("请输入学员名称:")
   for stu in self.studenData:
       if stu.name == name:
           print(f"需要修改的学员信息:{stu.name},{stu.age},{stu.no},是否继续修改,是:y,否:其它")
           break
   else:
       print("学员不存在")

显示所有学员信息

遍历列表,循环打印学员信息

# 显示所有学员
def showStudent(self):
   print(f"姓名\t性别\t手机号")
   for stu in self.studenData:
       print(f"{stu.name}\t{stu.age}\t{stu.no}")

保存学员信息

打开文件,文件写入数据,关闭文件,保存文件时可以使用列表推导式将实体对象推到成字典类型,__dict__这个属性是可以将实体对象变为字典类型

# 保存学员信息
def saveStudent(self):
   try:
       f = open("student.data", "w")
   except Exception as error:
       print(error)
   else:
       # 列表推导式将实体对象推到成字典类型
       stu_list = [stu.__dict__ for stu in self.studenData]
       print(stu_list)
       print(str(stu_list))
       # 将列表对象转换成string类型
       f.write(str(stu_list))
   finally:
       f.close()

加载学员

打开文件如果文件不存在则创建文件,如果文件存在,然后读取数据,将数据转换成字典类型的序列,然后展示

# 加载学员信息
def loadStudents(self):
   try:
       # 读取数据
       f = open("student.data", "r")
   except:
       f = open("student.data", "w")
   else:
       stu_list = f.read()
       # 将读取出来的数据转换成字典类型的序列
       new_list = eval(stu_list)
       # 再将字典序列推导式成对象序列展示
       self.studenData = [Student(stu["name"],stu["age"],stu["no"]) for stu in new_list]
   finally:
       f.close()

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务