python面向对象版学生管理系统

一、学生管理系统需求分析(面向对象)

1、需求分析

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

① 系统要求:==学员数据存储在文件中==

② 系统功能:==添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统==等功能。

2、角色分析

学员对象(姓名、年龄、电话) => 自身属性,打印学生时,还需要输出学生信息 => __str__()

学生管理系统对象(可以实现对学生进行增、删、改、查)

在面向对象编程思想中,必须找到要具体实现操作的实体。

通过系统实现添加学员操作

通过系统实现删除学员操作

....

最终可以得出一个结论:这个通讯管理系统,其主要的实体就是==通讯录管理系统本身==

注意事项

① 为了方便维护代码,一般一个角色一个程序文件

② 项目要有主程序入口,习惯为main.py

3、创建项目

 

创建类文件 => studentManager.py

创建项目入口文件 => main.py

二、学生管理代码开发

1、学员信息存储代码分析

student_list = [s1, s2, s3]

s1, s2, s3代表由Student学生类创建的对象

学员姓名

学员年龄

学员电话

学员信息(姓名、年龄、电话),可以使用字典来表示。但是我们已经学习了面向对象,其学员信息可以完全用对象来进行实现。

学员(主体) => 属性(姓名、年龄、电话)

2、student.py类文件编写

需求:

学员信息包含:姓名、年龄、电话

添加__str__魔法方法,方便查看学员对象信息

# 定义一个Student类
class Student():
    # 定义魔术方法,用于初始化属性信息
    def __init__(self, name, age, mobile):
        self.name = name
        self.age = age
        self.mobile = mobile
    # 定义魔术方法,用于打印输出学员信息
    def __str__(self):
        return f'{self.name}, {self.age}, {self.mobile}'

 

3、编写studentManager.py代码

studentManager.py

class StudentManager(object):
    # 定义__init__魔术方法,用于初始化操作
    def __init__(self):
        # 定义一个列表,将来用于保存所有学员信息
        self.student_list = []

4、学员管理系统具体功能说明

需求:

存储数据的位置:文件(student.data)

  • 加载文件数据

  • 修改数据后保存到文件

存储数据的形式:列表存储学员对象

系统功能:

① 添加学员信息

② 删除学员信息

③ 修改学员信息

④ 查询学员信息

⑤ 显示所有学员信息

⑥ 保存学员信息

⑦ 退出系统

编写程序代码,用于实现以上的所有功能:

from Student import Student

class StudentManager(object):
    # 4、定义一个属性,用于保存所有学员信息 => [s1, s2, s3],注:s1,s2,s3都是Student类对象
    def __init__(self):
        self.students = []

    # 封装一个menu()方法,用于打印系统功能菜单
    @staticmethod
    def menu():
        print('-' * 40)
        print('欢迎使用学生管理系统V2.0')
        print('【1】添加学员信息')
        print('【2】删除学员信息')
        print('【3】修改学员信息')
        print('【4】查询学员信息')
        print('【5】遍历所有学员信息')
        print('【6】保存数据到文件')
        print('【7】退出系统')
        print('-' * 40)

    # 5、定义一个add_student()方法,用于实现添加学员信息
    def add_student(self):
        # 接收要添加的学员信息
        name = input('请输入要添加学员的姓名:')
        age = int(input('请输入要添加学员的年龄:'))
        mobile = input('请输入要添加学员的电话:')
        # 把name/age/mobile => 组装成一个学生对象
        self.students.append(Student(name, age, mobile))  # [s1, s2, s3]
        print('恭喜您,信息已录入成功!')

    # 6、定义一个show_students()方法,用于展现所有学员信息
    def show_students(self):
        for i in self.students:  # [s1, s2, s3]
            print(i)  # print(s1)

    # 7、定义一个del_student()方法,用于删除所有学员信息
    def del_student(self):
        # ① 提供要删除学员的名称
        name = input("请输入要删除学员的名称:")
        # ② 对整个self.students列表进行遍历,查看哪个学员与name同名
        for i in self.students:  # [s1, s2, s3]
            if i.name == name:
                # 找到了这个同学,把整个对象从列表中移除
                self.students.remove(i)
                print('恭喜您,信息已成功移除!')
                break
        else:
            # ③ 如果在整个循环过程中,都没有执行break,则代表循环正常结束,没有找到同学
            print('很抱歉,您要移除的同学信息未找到!')

    # 8、定义一个edit_student()方法,用于实现修改学员信息
    def edit_student(self):
        # ① 提供要修改学员的姓名
        name = input('请输入您要修改学员的姓名:')
        # ② 遍历整个self.students列表,找是否有与之同名的学员信息
        for i in self.students:  # [s1, s2, s3]   对象修改属性   s1.属性 = 新的属性值
            if i.name == name:
                # 找到了要修改的同学,修改其自身属性 => name/age/mobile
                i.name = input('请输入修改后的学员姓名:')
                i.age = int(input('请输入修改后的学员年龄:'))
                i.mobile = input('请输入修改后的学员电话:')
                print('恭喜您,信息已修改成功!')
                break
        else:
            print('很抱歉,您要修改同学的信息未找到!')

    # 9、定义一个find_student()方法,用于查找学员信息
    def find_student(self):
        # ① 接收要查找学员的名称
        name = input('请输入要查找学员的姓名:')
        # ② 对整个self.students列表进行遍历
        for i in self.students:
            if i.name == name:
                print(i)  # 直接打印学员信息
                break
        else:
            print('很抱歉,您要查找的同学信息未找到!')

    # 10、定义一个save_data_to_file()方法,用于保存数据到文件
    def save_data_to_file(self):
        # 文件操作三步走 => ① 打开文件 ② 读写文件 ③ 关闭文件
        f = open('students.txt', 'w', encoding='utf-8')
        data = [i.__dict__ for i in self.students]  # [s1, s2, s3] == [{}, {}, {}]
        f.write(str(data))  # 特别注意:f.write()只能把字符串类型的数据写入到文件, [s1, s2, s3]
        f.close()
        print('恭喜您,数据已成功保存!')

    # 11、定义一个load_data()方法,用于加载文件中的数据到系统
    def load_data(self):
        f = open('students.txt', 'r', encoding='utf-8')
        content = f.read()
        f.close()
        if not content:
            return
        # 如果数据不为空,则替换self.students列表
        data = eval(content)  # [{'name': '张三', 'age': 23, 'mobile': '10086'}] == [s1]
        self.students = [Student(i['name'], i['age'], i['mobile']) for i in data]

    # 定义一个启动方法,运行系统
    def start(self):
        # 加载load_data方法,用于加载文件中的数据到系统
        self.load_data()
        # 1、给系统添加一个while True,让系统可以一直运行下去
        while True:
            # 2、打印系统功能菜单 => 输出自身信息,输出可以实现的相关功能
            self.menu()
            # 3、提示用户输入要执行的功能编号
            user_num = int(input('请输入您要执行的功能编号:'))
            # 添加if...elif...else多分支判断结构
            if user_num == 1:
                # 在类中创建一个add_student()方法,用于添加学员
                self.add_student()
            elif user_num == 2:
                # 删除学员功能实现
                self.del_student()
            elif user_num == 3:
                # 修改学员功能实现
                self.edit_student()
            elif user_num == 4:
                self.find_student()
            elif user_num == 5:
                # 遍历所有学员信息
                self.show_students()
            elif user_num == 6:
                # 保存数据到文件
                self.save_data_to_file()
            elif user_num == 7:
                print('退出系统成功,感谢您使用传智教育学生管理系统V2.0!')
                break
            else:
                print('很抱歉,您输入的编号有误,请重新输入')

main.py

# 导入StudentManager文件中的StudentManager类
# from 模块名称(文件名称) import 类名
from StudentManager import StudentManager

# 定义程序的入口 => 一段模块测试代码
if __name__ == '__main__':
    # 启动项目,运行项目中的代码
    sm = StudentManager()
    sm.start()

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python面向对象学生信息管理系统是一个用于管理学生信息的程序。它可以完成添加学生、删除学生、修改学生信息、查询学生信息、显示所有学生信息、保存学生信息以及退出系统等功能。该系统使用面向对象编程思想进行开发,主要由两个角色组成:学生和管理系统。 首先,你需要新建一个Python项目来实现这个学生信息管理系统。在项目中,你可以创建一个名为managerSystem的模块。 接下来,你可以导入managerSystem模块,并在main.py文件中启动学生管理系统。你可以通过创建一个名为student_manager的学生管理器的实例,并调用run()方法来启动系统。 在managerSystem模块中,你可以定义一个名为StudentManager的类。这个类将用于处理学生信息的增删改查操作。你可以在这个类中定义相应的方法来实现系统的各个功能。 总结起来,你可以按照以下步骤来编写这个Python面向对象学生信息管理系统: 1. 新建一个Python项目。 2. 创建managerSystem模块。 3. 导入managerSystem模块,并在main.py文件中启动学生管理系统。 4. 在managerSystem模块中定义一个StudentManager类。 5. 在StudentManager类中定义方法来实现学生信息的添加、删除、修改、查询、显示和保存等功能。 6. 运行程序,测试学生信息管理系统的各个功能。 这样,你就可以通过这个Python面向对象学生信息管理系统来管理学生的信息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值