博客
关于我
【Python】面向对象版学员管理系统
阅读量:411 次
发布时间:2019-03-06

本文共 4141 字,大约阅读时间需要 13 分钟。

面向对象版学员管理系统

系统需求

本项目采用面向对象编程思想,完成学员管理系统的开发。系统要求学员数据存储在文件中,提供以下功能:

  • 添加学员
  • 删除学员
  • 修改学员信息
  • 查询学员信息
  • 显示所有学员信息
  • 保存学员信息
  • 退出系统

准备程序文件

项目目录结构

StudentManagerSystem/├── main.py    # 主程序入口├── student.py  # 学员类├── managerSystem.py  # 管理系统主类

创建程序文件

  • main.py:主程序入口,调用其他模块的功能
  • student.py:定义学员类,包含学员基本信息和相关操作
  • managerSystem.py:管理系统核心类,实现系统功能

项目实现

学员类(student.py)

class Student(object):    def __init__(self, name, gender, tel):        self.name = name        self.gender = gender        self.tel = tel    def __str__(self):        return f"{self.name}, {self.gender}, {self.tel}"

管理系统类(managerSystem.py)

class StudentManager(object):    def __init__(self):        self.student_list = []    def run(self):        self.load_student()        while True:            self.show_menu()            menu_num = int(input('请输入您需要的功能序号:'))            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    @staticmethod    def show_menu():        print('请选择如下功能-----------------')        print('1: 添加学员')        print('2: 删除学员')        print('3: 修改学员信息')        print('4: 查询学员信息')        print('5: 显示所有学员信息')        print('6: 保存学员信息')        print('7: 退出系统')    def add_student(self):        name = input('请输入您的姓名:')        gender = input('请输入您的性别:')        tel = input('请输入您的手机号:')        student = Student(name, gender, tel)        self.student_list.append(student)        print('添加学员成功!')    def del_student(self):        del_name = input('请输入要删除的学员姓名:')        for i in self.student_list:            if i.name == del_name:                self.student_list.remove(i)                print('删除学员成功!')                break        else:            print('查无此人!')    def modify_student(self):        modify_name = input('请输入要修改的学员姓名:')        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}')                break        else:            print('查无此人!')    def search_student(self):        search_name = input('请输入要查询的学员姓名:')        for i in self.student_list:            if i.name == search_name:                print(f'姓名{i.name},性别{i.gender},手机号{i.tel}')                break        else:            print('查无此人!')    def show_student(self):        print('姓名\t性别\t手机号')        for i in self.student_list:            print(f'{i.name}\t{i.gender}\t{i.tel}')    def save_student(self):        f = open('student.data', 'w')        new_list = [i.__dict__ for i in self.student_list]        f.write(str(new_list))        f.close()    def load_student(self):        try:            f = open('student.data', 'r')        except:            f = open('student.data', 'w')        else:            data = f.read()            new_list = eval(data)            self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]        finally:            f.close()

主程序(main.py)

from managerSystem import *if __name__ == '__main__':    student_manager = StudentManager()    student_manager.run()

代码解释

  • student.py:定义了一个 Student 类,用于存储和管理学员信息。包含初始化方法和 __str__ 方法,方便输出学员信息。
  • managerSystem.py:定义了 StudentManager 类,负责系统的核心逻辑。包括加载数据、显示功能菜单、执行各种操作等。
  • main.py:作为程序的入口,导入 managerSystem 模块并启动程序。

功能说明

  • 加载数据:系统启动时会尝试读取存储的学员数据文件 student.data,如果文件不存在则创建新文件。
  • 显示功能菜单:用户可以通过输入序号选择不同的操作。
  • 添加学员:用户输入姓名、性别、手机号,系统会创建相应的 Student 对象并存储到列表中。
  • 删除学员:用户输入学员姓名,系统会从列表中移除对应的学员对象。
  • 修改学员信息:用户输入学员姓名,系统会更新该学员的姓名、性别或手机号。
  • 查询学员信息:用户输入学员姓名,系统会输出对应学员的详细信息。
  • 显示所有学员信息:系统会列出当前存储的所有学员信息。
  • 保存学员信息:将修改后的学员信息保存到文件中。
  • 退出系统:用户输入 7 后系统退出。

思考

  • 文件写入的数据是学员对象的内存地址吗?
  • 文件内数据要求的数据类型是什么?

通过 __dict__ 展示实例属性:

class A(object):    a = 0    def __init__(self):        self.b = 1aa = A()print(A.__dict__)  # 类内部属性和方法对应的字典print(aa.__dict__)  # 实例属性和值组成的字典

转载地址:http://qitkz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现perfect square完全平方数算法(附完整源码)
查看>>
Objective-C实现PNG图片格式转换BMP图片格式(附完整源码)
查看>>
Objective-C实现pollard rho大数分解算法(附完整源码)
查看>>
Objective-C实现power iteration幂迭代算法(附完整源码)
查看>>
Objective-C实现powLinear函数和powFaster函数算法 (附完整源码)
查看>>
Objective-C实现qubit measure量子位测量算法(附完整源码)
查看>>
Objective-C实现quick select快速选择算法(附完整源码)
查看>>
Objective-C实现radians弧度制算法(附完整源码)
查看>>
Objective-C实现radix sort基数排序算法(附完整源码)
查看>>
Objective-C实现rayleigh quotient瑞利商算法(附完整源码)
查看>>
Objective-C实现RC4加解密算法(附完整源码)
查看>>
Objective-C实现recursive bubble sor递归冒泡排序算法(附完整源码)
查看>>
Objective-C实现recursive insertion sort递归插入排序算法(附完整源码)
查看>>
Objective-C实现RedBlackTree红黑树算法(附完整源码)
查看>>
Objective-C实现redis分布式锁(附完整源码)
查看>>
Objective-C实现reverse letters反向字母算法(附完整源码)
查看>>
Objective-C实现ripple adder涟波加法器算法(附完整源码)
查看>>
Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
查看>>
Objective-C实现Romberg算法(附完整源码)
查看>>
Objective-C实现round robin循环赛算法(附完整源码)
查看>>