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

面向对象学员管理系统

添加
删除
修改
查询

系统需求

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

创建程序文件

创建目录名称:StudentManangerSystem
程序文件名称:入口文件-main.py,学员文件-student.py,管理系统文件-mananagerSystem.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. 加载数据
  2. 显示功能菜单
  3. 用户输入功能序号执行不同的功能
  4. 定义系统功能函数,添加,删除学员等

序号功能列表

  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()

作者:阿超
原创公众号:『Python日常笔记』,专注于 Python爬虫等技术栈和有益的程序人生,会将一些平时的日常笔记都慢慢整理起来,也期待你的关注和阿超一起学习,公众号回复【csdn】优质资源。

发布了55 篇原创文章 · 获赞 16 · 访问量 9510

猜你喜欢

转载自blog.csdn.net/duchaochen/article/details/105054705
今日推荐