Python学习笔记(二十三)面向对象版学员管理系统

article/2025/11/11 12:57:14

Python学习笔记(二十三)面向对象版学员管理系统

一、系统需求

使用面向对象编程思想完成学员管理系统的开发,具体如下:

  • 系统要求:学员数据存储在文件中
  • 系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息以及退出系统等功能。

二、准备程序文件

2.1 分析
  • 角色分析
    • 学员
    • 管理系统

工作中注意事项

  1. 为了方便维护代码,一般一个角色一个程序文件
  2. 项目要有主程序入口习惯为main.py
2.2 创建程序文件

创建项目目录,例如:StudentManagerSystem
程序文件如下:

  • 程序入口文件:main.py
  • 学员文件:student.py
  • 管理系统文件:managerSystem.py

三、书写程序

3.1 student.py

需求:

  • 学员信息包含:姓名、性别、手机号;
  • 添加__str__魔法方法,方便查看学员对象信息

3.1.2 程序代码

class Student():def __init__(self,name,gender,tel):# 姓名、性别、手机号self.name = nameself.gender = genderself.tel = teldef __str__(self):return f'{self.name},{self.gender},{self.tel}'
3.2 managerSystem.py

在这里插入图片描述
3.2.1 定义类

class StudentManager(object):def __init__ (self):# 存储数据所用的列表self.student_list = [ ]

3.2.2 管理系统框架

在这里插入图片描述

class StudentManager(object):def __init__(self):# 存储学员数据 -- 列表self.stdent_list = []# 一、程序入口函数,启动程序后执行的函数def run(self):# 1. 加载学员信息self.load_student()while True:# 2. 显示功能菜单self.show_menu()# 3. 用户输入功能序号menu_num = int(input('请输入您需要的功能序号'))# 4. 根据用户输入的功能序号执行不同的功能if menu_num == 1:# 添加学员self.add_student()elif menu_num == 2:# 删除学员self.del_student()elif menu_num == 3:# 修改学员self.modify_student()elif menu_num == 4:# 查询学员信息self.search_student()elif menu_num == 5:# 显示所有学员信息self.show_student()elif menu_num == 6:# 保存学员信息self.save_student()elif menu_num == 7:# 退出系统 = 退出循环break# 二、系统功能函数# 2.1 显示功能菜单 -- 打印序号的功能对应函数 -- 静态@ staticmethoddef show_menu():print('请选择如下功能:')print('1.添加学员')print('2.删除学员')print('3.修改学员信息')print('4.查询学员信息')print('5.显示所有学员信息')print('6.保存学员信息')print('7.退出系统')# 2.2 添加学员def add_student(self):print('添加学员')# 2.3 删除学员def del_student(self):print('删除学员')# 2.4 修改学员信息def modify_student(self):print('修改学员信息')# 2.5 查询学员信息def search_student(self):print('查询学员信息')# 2.6 显示所有学员信息def show_student(self):print('显示所有学员信息')# 2.7 保存学员信息def save_student(self):print('保存学员信息')# 2.8 加载学员信息def load_student(self):print('加载学员信息')
3.3 main.py
# 1. 导入managerSystem模块
from managerSystem import *# 2, 启动学员管理系统
if __name__ == '__main__':student_manager = StudentManager()student_manager.run()
3.4 定义系统功能函数

3.4.1 添加功能
在这里插入图片描述
代码如下:

# 添加学员函数内部需要创建学员对象,故先导入student模块
from student import*# 2.2 添加学员
def add_student(self):print('添加学员')# 2.2.1 用户输入姓名、性别、手机号name = input('请输入您的姓名:')gender = input('请输入您的性别:')tel = input('请输入您的电话:')# 2.2.2 创建学员对象 -- 类 -- 类在student文件里面 -- 先导入student模块,在创建对象stu =Student(name,gender,tel)# 2.2.3 将对象添加到列表self.student_list.append(student)# 2.2.4 打印学员列表,验证添加功能print(self.student_list)

3.4.2 删除学员
在这里插入图片描述
代码如下:

 def del_student(self):print('删除学员')# 2.3.1 用户输入要删除的目标学员的姓名del_name = input('输入要删除的目标学员的姓名:')# 2.3.2 如果用户输入的目标学员存在则删除,否则提示学员不存在for i in self.student_list:if i.name == del_name:self.student_list.remove(i)breakelse:  # for 正常结束运行的代码print('查无此人!')# 2.3.3 打印学员列表,验证删除功能print(self.student_list)

3.4.3 修改学员信息
在这里插入图片描述

# 2.4 修改学员信息
def modify_student(self):print('修改学员信息')# 2.4.1 用户输入目标学员姓名modify_name = input('请输入要修改的学员的姓名')# 2.4.2 如果用户输入的目标学员存在则修改姓名、性别、手机号等数据,否则提示学员不存在for i in self.student_list:if i.name == modify_name:i.name = input('请输入学员姓名:')i.gender = input('请输入学员性别:')i.tel = input('请输入学员手机号')print(f'修改该学员信息成功,姓名:{i.name},性别:{i.gender},手机号:{i.tel}')breakelse:print('查无此人')# 2.4.3 打印学员列表,验证修改功能print(self.student_list)

3.4.4 查询学员信息
在这里插入图片描述

def search_student(self):print('查询学员信息')# 2.5.1 用户输入目标学员姓名search_name = input('请输入要查询的学员的姓名')# 2.5.2 如果用户输入的目标学员存在则查询姓名、性别、手机号等数据信息,否则提示学员不存在for i in self.student_list:if i.name == search_name:print(f'该学员姓名:{i.name},性别{i.gender},电话号码{i.tel}')breakelse:print('查无此人')

3.4.5 显示所有学员信息

  • 打印所有学员信息
  • 步骤
    • 遍历学员数据列表,打印所有学员信息

代码如下:

def show_student(self):print('显示所有学员信息')print('姓名\t性别\t手机号')for i in self.student_list:print(f'{i.name}\t{i.gender}\t{i.tel}')

3.4.6 保存学员信息
在这里插入图片描述

  • 拓展__dict__
# 1. 定义类
class A(object):a = 0def __init__(self):self.b = 1# 2.创建对象		
aa = A()	
# 返回类内部所有的属性和方法对应的字典
print(A.__dict__)
# 返回实例属性和值组成的字典
print(aa.__dict__)

结果截图:
在这里插入图片描述

保存学员信息函数代码如下:

# 2.7 保存学员信息
def save_student(self):print('保存学员信息')# 1. 打开文件f = open('student.data','w')# 2. 文件写入学员数据# 注意1:文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储new_list = [i.__dict__ for i in self.student_list]# [{'name':'aa'.'gender':'女','tel':'111'}]print(new_list)# 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能写入数据f.write(str(new_list))# 3. 关闭文件f.close()

此时,新建了一个文件student.data,并把学员的数据存储进去了。

3.4.7 加载学员信息
在这里插入图片描述
代码如下:

# 2.8 加载学员信息
def load_student(self):print('加载学员信息')# 尝试以"r"模式打开数据文件,文件不存在则提示用户;文件存在(没有异常)则读取数据try:f = open('student.data','r')except:f = open('student.data','w')else:# 1. 读取数据data = f.read()# 2. 文件中读取的数据都是字符串且字符串内部为字典数据,故需要转换数据类型再转换字典为对象后存储到学员列表new_list = eval(data)self.student_list = [Student(i['name'],i['gender'],i['tel']) for i in self.student_list]# 3. 关闭文件f.close()
3.5 完整代码

在这里插入图片描述
main.py 文件:

# 1. 导入managerSystem模块
from managerSystem import *# 2, 启动学员管理系统
if __name__ == '__main__':student_manager = StudentManager()student_manager.run()

managerSystem.py 文件:

from student import *
class StudentManager(object):def __init__(self):# 存储学员数据 -- 列表self.student_list = []# 一、程序入口函数,启动程序后执行的函数def run(self):# 1. 加载学员信息self.load_student()while True:# 2. 显示功能菜单self.show_menu()# 3. 用户输入功能序号menu_num = int(input('请输入您需要的功能序号:'))# 4. 根据用户输入的功能序号执行不同的功能if menu_num == 1:# 添加学员self.add_student()elif menu_num == 2:# 删除学员self.del_student()elif menu_num == 3:# 修改学员self.modify_student()elif menu_num == 4:# 查询学员信息self.search_student()elif menu_num == 5:# 显示所有学员信息self.show_student()elif menu_num == 6:# 保存学员信息self.save_student()elif menu_num == 7:# 退出系统 = 退出循环break# 二、系统功能函数# 2.1 显示功能菜单 -- 打印序号的功能对应函数 -- 静态@ staticmethoddef show_menu():print('请选择如下功能:')print('1.添加学员')print('2.删除学员')print('3.修改学员信息')print('4.查询学员信息')print('5.显示所有学员信息')print('6.保存学员信息')print('7.退出系统')# 2.2 添加学员def add_student(self):print('添加学员')# 2.2.1 用户输入姓名、性别、手机号name = input('请输入您的姓名:')gender = input('请输入您的性别:')tel = input('请输入您的电话:')# 2.2.2 创建学员对象 -- 类 -- 类在student文件里面 -- 先导入student模块,在创建对象stu =Student(name,gender,tel)# 2.2.3 将对象添加到列表self.student_list.append(stu)# 2.2.4 打印学员列表,验证添加功能print(self.student_list)# 2.3 删除学员def del_student(self):print('删除学员')# 2.3.1 用户输入要删除的目标学员的姓名del_name = input('输入要删除的目标学员的姓名:')# 2.3.2 如果用户输入的目标学员存在则删除,否则提示学员不存在for i in self.student_list:if i.name == del_name:self.student_list.remove(i)breakelse:  # for 正常结束运行的代码print('查无此人!')# 2.3.3 打印学员列表,验证删除功能print(self.student_list)# 2.4 修改学员信息def modify_student(self):print('修改学员信息')# 2.4.1 用户输入目标学员姓名modify_name = input('请输入要修改的学员的姓名')# 2.4.2 如果用户输入的目标学员存在则修改姓名、性别、手机号等数据,否则提示学员不存在for i in self.student_list:if i.name == modify_name:i.name = input('请输入学员姓名:')i.gender = input('请输入学员性别:')i.tel = input('请输入学员手机号')print(f'修改该学员信息成功,姓名:{i.name},性别:{i.gender},手机号:{i.tel}')breakelse:print('查无此人')# 2.4.3 打印学员列表,验证修改功能print(self.student_list)# 2.5 查询学员信息def search_student(self):print('查询学员信息')# 2.5.1 用户输入目标学员姓名search_name = input('请输入要查询的学员的姓名')# 2.5.2 如果用户输入的目标学员存在则查询姓名、性别、手机号等数据信息,否则提示学员不存在for i in self.student_list:if i.name == search_name:print(f'该学员姓名:{i.name},性别{i.gender},电话号码{i.tel}')breakelse:print('查无此人')# 2.6 显示所有学员信息def show_student(self):print('显示所有学员信息')for i in self.student_list:print(f'{i.name}\t{i.gender}\t{i.tel}')# 2.7 保存学员信息def save_student(self):print('保存学员信息')# 1. 打开文件f = open('student.data','w')# 2. 文件写入学员数据# 注意1:文件写入的数据不能是学员对象的内存地址,需要把学员数据转换成列表字典数据再做存储new_list = [i.__dict__ for i in self.student_list]# [{'name':'aa'.'gender':'女','tel':'111'}]print(new_list)# 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能写入数据f.write(str(new_list))# 3. 关闭文件f.close()# 2.8 加载学员信息def load_student(self):print('加载学员信息')# 尝试以"r"模式打开数据文件,文件不存在则提示用户;文件存在(没有异常)则读取数据try:f = open('student.data','r')except:f = open('student.data','w')else:# 1. 读取数据data = f.read()# 2. 文件中读取的数据都是字符串且字符串内部为字典数据,故需要转换数据类型再转换字典为对象后存储到学员列表new_list = eval(data)self.student_list = [Student(i['name'],i['gender'],i['tel']) for i in self.student_list]# 3. 关闭文件f.close()

student.py 文件

class Student():def __init__(self,name,gender,tel):# 姓名、性别、手机号self.name = nameself.gender = genderself.tel = teldef __str__(self):return f'{self.name},{self.gender},{self.tel}'

结果截图:

C:\Users\YSH\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/YSH/Desktop/test/StudentManagerSystem/main.py
加载学员信息
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:1
添加学员
请输入您的姓名:aa
请输入您的性别:女
请输入您的电话:111
[<student.Student object at 0x01988110>]
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:1
添加学员
请输入您的姓名:bb
请输入您的性别:男
请输入您的电话:222
[<student.Student object at 0x01988110>, <student.Student object at 0x019880B0>]
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:6
保存学员信息
[{'name': 'aa', 'gender': '女', 'tel': '111'}, {'name': 'bb', 'gender': '男', 'tel': '222'}]
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:6
保存学员信息
[{'name': 'aa', 'gender': '女', 'tel': '111'}, {'name': 'bb', 'gender': '男', 'tel': '222'}]
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:4
查询学员信息
请输入要查询的学员的姓名bb
该学员姓名:bb,性别男,电话号码222
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:5
显示所有学员信息
aa	女	111
bb	男	222
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:3
修改学员信息
请输入要修改的学员的姓名aa
请输入学员姓名:cc
请输入学员性别:男
请输入学员手机号333
修改该学员信息成功,姓名:cc,性别:男,手机号:333
[<student.Student object at 0x01988110>, <student.Student object at 0x019880B0>]
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:5
显示所有学员信息
cc	男	333
bb	男	222
请选择如下功能:
1.添加学员
2.删除学员
3.修改学员信息
4.查询学员信息
5.显示所有学员信息
6.保存学员信息
7.退出系统
请输入您需要的功能序号:7
Process finished with exit code 0
3.6 总结

在这里插入图片描述


http://chatgpt.dhexx.cn/article/iXTkvZpS.shtml

相关文章

基于C# SQLServer开发学员管理系统

.Net-基于C# SQLServer开发学员管理系统喜科堂中级项目实战 课程简介 本课程手把手讲解基于C#和SQLServer数据库开发的学员信息管理系统&#xff0c;通过课程学习可以熟练掌握数据库应用程序开发核心技能&#xff0c;并且独立开发类似项目。 本课程系统讲解项目所有功能点&am…

java/php/net/python驾校学员管理系统设计

本系统带文档lw万字以上答辩PPT查重 如果这个题目不合适&#xff0c;可以去我上传的资源里面找题目&#xff0c;找不到的话&#xff0c;评论留下题目&#xff0c;或者站内私信我&#xff0c; 有时间看到机会给您发 系统体系结构 架构设计的目的是反映一个结构和其他元素之间的…

Python基础(十八):学员管理系统应用

文章目录 学员管理系统应用 一、系统简介 二、步骤分析 三、需求实现

python学习之编写学员管理系统

学习了python基础后&#xff0c;来实际操作一下吧&#xff01;下面是一个学员管理系统&#xff1a;该系统可存储学员信息&#xff08;包括 姓名、手机号、微信、qq、成绩&#xff09;&#xff0c;存储在txt文件中。系统有四个核心操作 &#xff1a;学员新增&#xff0c;学员删除…

学员管理系统(完整版附带源码)

学员管理系统是刚接触python时算是一个比较难的小项目&#xff0c;毕竟第一次接触这样的思维逻辑&#xff0c;不过用心学起来还是很有趣的&#xff0c;发现乐在其中&#xff0c;也就不觉得难了。下面给大家分享一下学员管理系统较为完整的代码 1.主程序 import sys ,datetime …

使用python创建学员管理系统

使用面向对象完成了学员管理系统&#xff0c;实现了添加、删除、修改、查询、保存读取等功能&#xff0c;将学员、学员管理后台、开始入口分为了3个py文件&#xff0c;分别是Student.py、Student_management.py、main.py。保存文件名叫student.txt文件。内含注释&#xff0c;我…

分享一款教育培训机构学员信息管理系统

平台入口:http://edu.abc168.online 学员是培训机构的运营主体&#xff0c;对培训机构来说&#xff0c;做好学员管理&#xff0c;往往能直接反映出机构的管理水平和教师的教学水平&#xff0c;是机构建立形象和口碑的关键。以往&#xff0c;培训学校普遍使用手工登记的方式来管…

【shell案例】学员管理系统

前言 学员管理系统涉及到学员的增删改查,这是一个综合性比较强的项目,在所有的编程语言里都会有不同版本的学员信息管理系统,难度适中 效果截图 学员管理系统源码 #!/bin/bash## 随机点名册while true doecho

学员管理系统

大家在学习编程语言的时候&#xff0c;有时候会遇到让编程一个简单的系统等的问题。比如我在学习python的时候&#xff0c;就让编程如下一样的一个学员管理信息的系统&#xff1a; 一个可以添加学员信息&#xff0c;删除学员信息&#xff0c;修改学员信息&#xff0c;查询学员信…

【Python实现】学员管理系统(详细解析)

目录 1、总体要求2、需求分析3、框架设计4、细节设计4.1 程序入口4.2 学员管理类4.2.1 初始化4.2.2 登录认证4.2.3 功能菜单4.2.4 文件操作4.2.5 新增学员4.2.6 删除学员4.2.7 修改学员4.2.8 查找学员4.2.9 显示全部学员4.2.10 学员数据统计4.2.11 清空系统数据 5、总结 1、总体…

[Java] 学员管理系统(服务器—客户端模式)

目录 学员管理系统&#xff08;服务器—客户端模式&#xff09;1. 项目演示a. 打开项目b. 运行项目 2. 项目说明a. 所采用的知识点b. 业务交互模式图示 3. 案例代码a. 客户端i. 创建实体类 Studentii. 创建主类 MainApp b. 服务器端i. 创建实体类 Studentii. 创建服务器端线程类…

java 中 Scanner 输入

因为涉及到 io 流输入问题&#xff0c;如果不关闭会一直占用资源。所以使用过后要及时关闭&#xff0c;防止资源一直被占用。 Scanner在使用前要导入 java.util.Scanner 包 1.整数 描述: 输入一个整数&#xff0c;输出这个整数。 输入描述&#xff1a; 输入一个整数&#xff0c…

Java之键盘输入语句Scanner

文章目录 键盘输入语句1. 介绍2. 步骤3. 案例演示 键盘输入语句 1. 介绍 在编程中&#xff0c;需要接收用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是 Scanner 2. 步骤 导入该类的所在包, java.util.*创建该类对象&a…

Java的常用输入输出语句

一、概述 输入输出可以说是计算机的基本功能。作为一种语言体系,java中主要按照流(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的数据流叫做输出流(outputStream)。 Java语言体系中,对数据流…

java中输入语句是怎么写的

java中用户输入语句的写法是&#xff1a; 1、【Scanner sc new Scanner(System.in); 】&#xff1b; 2、【String input sc.next();】。 (视频教程推荐&#xff1a;java视频) 具体代码如下&#xff1a;import java.util.Scanner; public class Number { /** * param a…

java基础之java输入输出语句

1、使用Scanner 使用时需要引入包importjava.util.Scanner;首先定义Scanner对象 Java基础学习&#xff1a;java输入输出语句 比如&#xff1a; Java基础学习&#xff1a;java输入输出语句 2、使用BufferedReader 用前需要引入importjava.io.Reader; Java基础学习&#xff1…

java 键盘输入语句怎么写

java 键盘输入语句写法 第一种&#xff1a; public class shuRu{ public static void main(string arg[]){ system.out.println(arg[1]); } } 第二种&#xff1a; import java.util.scanner; public class shuRu{ public static void main(string arg[]){ scanner i…

java语言输入语句是_java中的输入语句怎么写?

java中的输入语句怎么写&#xff1f; 发布时间&#xff1a;2020-05-20 15:19:52 来源&#xff1a;亿速云 阅读&#xff1a;206 作者&#xff1a;鸽子 java中用户输入语句的写法是&#xff1a; 1、【Scanner sc new Scanner(System.in); 】&#xff1b; 2、【String input sc.…

java 输入语句_java怎样输入语句

java输入语句的方法:1、输入单个字符【char c=(char)System.in.read()】;2、输入整数或者字符串【int a=cin.nextInt()】;3、可以用BufferedReader类输入。 java输入语句的方法: 如果你要进行输入,请一定加上两个包import java.util.*; import java.io.*; 请看下面例子用于…

java输入语句怎么写

壹哥在前面给大家讲过&#xff0c;Java中给咱们提供了有三个标准的“流”&#xff0c;他们被统称为standard streams。除了负责输出的流之外&#xff0c;还有一个负责输入的标准流&#xff0c;Java中对应的API是System.in。 与标准输出相比&#xff0c;标准输入则复杂的多。尤…