基于Python实现面向对象版学生管理系统

目录
  • 一、目标
  • 二、系统需求
  • 三、准备程序文件
    • 1. 分析
    • 2. 创建程序文件
  • 四、书写程序
    • 1. student.py
    • 2. 管理系统需求
    • 3. main.py
  • 4. 定义系统功能函数
    • 4.1 添加学生
    • 4.2 删除学生
    • 4.3 修改学生信息
    • 4.5 查询学生信息
    • 4.6 显示所有学生信息
    • 4.7 保存学生信息
    • 4.8 加载学生信息
  • 五、源代码
    • main.py
    • student.py
    • managerSystem.py
  • 六、总结

一、目标

了解面向对象开发过程中类内部功能的分析方法

了解常用系统功能

◦ 添加

◦ 删除

◦ 修改

◦ 查询

二、系统需求

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

系统要求:学生数据存储在文件中

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

三、准备程序文件

1. 分析

角色分析

◦ 学生

◦ 管理系统

工作中注意事项:

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

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

2. 创建程序文件

创建项目目录,例如:StudentManagerSystem

程序文件如下:

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

四、书写程序

1. student.py

需求:

学生信息包含:姓名、性别、手机号

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

程序代码如下

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}'

2. 管理系统需求

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

◦ 加载文件数据

◦ 修改数据后保存到文件

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

系统功能

  • ◦ 添加学生
  • ◦ 删除学生
  • ◦ 修改学生信息
  • ◦ 查询学生信息
  • ◦ 显示所有学生信息
  • ◦ 保存学生信息

定义管理系统类:

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

管理系统框架:

需求:系统功能循环使用,用户输入不同的功能序号执行不同的功能

步骤:

定义程序入口函数

  • ◦ 加载数据
  • ◦ 显示功能菜单
  • ◦ 用户输入功能序号
  • ◦ 根据用户输入的功能序号执行不同的功能

定义系统功能函数,添加、删除学生等

基础程序代码如下

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

    # 显示功能菜单
    @staticmethod
    def show_menu():
        print('请选择如下功能:')
        print('1. 添加学生')
        print('2. 删除学生')
        print('3. 修改学生信息')
        print('4. 查询学生信息')
        print('5. 显示所有学生信息')
        print('6. 保存学生信息')
        print('7. 退出系统')

    # 添加学生
    def add_student(self):
        pass

    # 删除学生
    def del_student(self):
        pass

    # 修改学生信息
    def modify_student(self):
        pass

    # 查询学生信息
    def search_student(self):
        pass

    # 显示所有学生信息
    def show_student(self):
        pass

    # 保存学生信息
    def save_student(self):
        pass

    # 加载学生信息
    def load_student(self):
        pass

3. main.py

# 1. 导入managerSystem模块
from managerSystem import *

# 2. 启动学生管理系统
if __name__ == '__main__':
    student_manager = StudentManager()

    student_manager.run()

4. 定义系统功能函数

4.1 添加学生

需求:用户输入学生姓名、性别、手机号,将学生添加到系统

步骤

  • ◦ 用户输入姓名、性别、手机号
  • ◦ 创建该学生对象
  • ◦ 将该学生对象保存到列表

代码

# 添加学生
    def add_student(self):
    	# 用户输入姓名、性别、手机号
        name = input('请输入学生的姓名:')
        gender = input('请输入学生的性别:')
        tel = input('请输入学生的手机号:')

		# 创建该学生对象
        student = Student(name, gender, tel)

		# 将该学生对象保存到列表
        self.student_list.append(student)

		# 打印提示信息
        print(f'学生【{student.name}, {student.gender}, {student.tel}】添加成功!')

4.2 删除学生

需求:用户输入目标学生姓名、性别、手机号,如果学生存在则删除该学生

步骤:

◦ 用户输入目标学生姓名

◦ 遍历学生数据列表,如果用户输入的学生姓名存在则删除,否则提示该学生不存在

代码

# 删除学生
    def del_student(self):
        # 1. 用户输入目标学生姓名
        del_name = input('请输入要删除的学生姓名:')

        # 2. 如果用户输入的学生姓名存在则删除,否则提示学生不存在
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查无此人!')

4.3 修改学生信息

需求:用户输入目标学生姓名,如果学生存在则修改学生信息

步骤

◦ 用户输入目标学生姓名

◦ 遍历学生数据列表,如果用户输入的学生姓名存在则修改学生的姓名、性别、手机号数据,否则提示该学生不存在

代码

# 修改学生信息
    def modify_student(self):
        # 1. 用户输入目标学生姓名
        modify_name = input('请输入要修改的学生姓名:')

        # 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}')
                break
        else:
            print('查无此人!')

4.5 查询学生信息

需求:用户输入目标学生姓名,如果学生存在则打印该学生信息

步骤

◦ 用户输入目标学生姓名

◦ 遍历学生数据列表,如果用户输入的学生姓名存在则打印学生信息,否则提示该学生不存在

代码

# 查询学生信息
    def search_student(self):
        # 1. 用户输入目标学生姓名
        search_name = input('请输入要查询的学生姓名:')

        # 2. 如果用户输入的学生存在,则打印学生信息,否则提示学生不存在
        for i in self.student_list:
            if i.name == search_name:
                print(f'姓名: {i.name}, 性别: {i.gender}, 手机号: {i.tel}')
                break
        else:
            print('查无此人!')

4.6 显示所有学生信息

需求:打印所有学生的信息

步骤

◦ 遍历学生数据列表,打印所有学生信息

代码

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

4.7 保存学生信息

需求:将修改后的学生数据保存到存储数据的文件

步骤

  • ◦ 打开文件
  • ◦ 将数据写入文件
  • ◦ 关闭文件

思考:

文件写入的数据是学生对象的内存地址吗?

文件内数据要求的数据类型是什么?

拓展:__dict__

class A(object):
    a = 0

    def __init__(self):
        self.b = 1

aa = A()
# 返回类内部所有属性和方法的字典
print(A.__dict__)
# 返回实例内部属性和值组成的字典
print(aa.__dict__)

代码

# 保存学生信息
    def save_student(self):
        # 1. 打开文件
        f = open('student.data', 'w')

        # 2. 将学生的信息写入文件
        # 注意1:文件写入的数据不能是学生对象的内存地址,需要把学生数据转换成列表字典数据再做存储
        new_list = [i.__dict__ for i in self.student_list]
        # [ { 'name' : 'aa', 'gender' : '女', 'tel' : '123' } ]
        print(new_list)

        # 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能将数据写入文件
        f.write(str(new_list))

        # 3. 关闭文件
        f.close()

4.8 加载学生信息

需求:每次进入系统后,修改的数据是文件里面的数据

步骤

尝试以 “r” 模式打开学生数据的文件,如果文件不存在则以 “w” 模式打开文件

如果文件存在则读取数据并存储数据

◦ 读取数据

◦ 转换数据类型为列表并转换列表内的字典为对象

◦ 存储学生数据到学生列表

关闭文件

代码

# 加载学生信息
    def load_student(self):
        # 尝试以 “r” 模式打开数据文件,文件不存在则提示用户;文件存在则读取数据并存储数据
        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

# 1. 导入managerSystem模块
from managerSystem import *

# 2. 启动学生管理系统
if __name__ == '__main__':
    student_manager = StudentManager()
    student_manager.run()

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

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:
                # 退出系统 -> 退出循环
                print('感谢您的使用,祝您生活愉快!')
                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(f'学生【{student.name}, {student.gender}, {student.tel}】添加成功!')

    # 删除学生
    def del_student(self):
        # 1. 用户输入目标学生姓名
        del_name = input('请输入要删除的学生姓名:')

        # 2. 如果用户输入的学生姓名存在则删除,反之提示学生不存在
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查无此人!')

    # 修改学生信息
    def modify_student(self):
        # 1. 用户输入目标学生姓名
        modify_name = input('请输入要修改的学生姓名:')

        # 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}')
                break
        else:
            print('查无此人!')

    # 查询学生信息
    def search_student(self):
        # 1. 用户输入目标学生姓名
        search_name = input('请输入要查询的学生姓名:')

        # 2. 如果用户输入的学生存在,则打印学生信息,否则提示学生不存在
        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):
        # 1. 打开文件
        f = open('student.data', 'w')

        # 2. 将学生的信息写入文件
        # 注意1:文件写入的数据不能是学生对象的内存地址,需要把学生数据转换成列表字典数据再做存储
        new_list = [i.__dict__ for i in self.student_list]
        # [ { 'name' : 'aa', 'gender' : '女', 'tel' : '123' } ]
        print(new_list)

        # 注意2:文件内数据要求为字符串类型,故需要先转换数据类型为字符串才能将数据写入文件
        f.write(str(new_list))

        # 3. 关闭文件
        f.close()

    # 加载学生信息
    def load_student(self):
        # 尝试以 “r” 模式打开数据文件,文件不存在则提示用户;文件存在则读取数据并存储数据
        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()

六、总结

知识点

函数

◦ 定义和调用

◦ 参数的使用

面向对象

◦ 定义类

◦ 创建对象

◦ 定义和调用实例属性

◦ 定义和调用实例方法

数据类型

◦ 列表

增加删除数据

列表推导式

◦ 字典

◦ 字符串

文件操作

◦ 打开文件

◦ 读取或写入

◦ 关闭文件

到此这篇关于基于Python实现面向对象版学生管理系统的文章就介绍到这了,更多相关Python学生管理系统内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现学生管理系统的完整代码(面向对象)

    前言 这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的 file_manager.py """ Project: ClassStudent Creator: 猫猫 Create time: 2021-03-04 08:18 IDE: PyCharm Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530 """ base_dir = '

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

    本文实例为大家分享了python面向对象版的学生信息管理系统的具体代码,供大家参考,具体内容如下 功能: 1.能循环输入内容 2.展示功能 -1.新增名片 -2.显示全部 -3.查询名片 -0.退出系统 3.让用户输入希望执行的操作 例如输入1,2,3,0 4.新增列表 提示用户输入姓名, 输入电话 输入qq号 输入邮箱 提示新增名片成功. 5.显示全部 将所有的名片打印出来,格式如下: 姓名    电话       QQ               邮箱 zs       110    133

  • 学生信息管理系统Python面向对象版

    本文实例为大家分享了python学生信息管理系统的具体代码,供大家参考,具体内容如下 """ 程序名称:学生信息管理系统 版本信息:0.1 开发者:飞宇 开始时间:2018.3.23 19:45 版本更新时间:2018.4.2 23:08 格式:IPO OOP面向对象 """ # 学生类 class Student: def __init__(self, stuId, name, age, sex, dept, nation): self.stu

  • Python实现学生管理系统(面向对象版)

    本文实例为大家分享了Python实现学生管理系统的具体代码,供大家参考,具体内容如下 实现从面向过程到面向对象的过度,通过更改前面的学生管理系统实现面向对象,也证明了面向过程可以完美过度到面向对象,从而为以后的程序进步做了进一步优化,方便以后的程序更改. 完整代码如下: student_main模块中的代码 import student_tools class Student(student_tools.StudentT): def __init__(self): self.user=['wan

  • python实现学生信息管理系统(面向对象)

    本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 1.主要内容 python种的.py文件如图所示 第一个文件是用来管理文件中包中各个模块的关系的文件 第二个文件是主函数文件,就是在主函数文件调用其余文件和模块 第三个模块式学生信息管理的模块 第四个文件是用来存放学生数据的文件 第五个文件是学生信息的定义和显示模块 2.实现代码 1)第一个文件是包中的管理文件自动生成且不需要修改 2)main.py文件 from managerSystem import

  • 基于Python实现面向对象版学生管理系统

    目录 一.目标 二.系统需求 三.准备程序文件 1. 分析 2. 创建程序文件 四.书写程序 1. student.py 2. 管理系统需求 3. main.py 4. 定义系统功能函数 4.1 添加学生 4.2 删除学生 4.3 修改学生信息 4.5 查询学生信息 4.6 显示所有学生信息 4.7 保存学生信息 4.8 加载学生信息 五.源代码 main.py student.py managerSystem.py 六.总结 一.目标 了解面向对象开发过程中类内部功能的分析方法 了解常用系统功

  • 基于python制作简易版学生信息管理系统

    一.前言 本篇博客对于文件操作.字典.列表.匿名函数以及sort()等内置函数进行了系统的整理操作,以设计一个学生信息管理系统的形式展示,具体概念方法等会在代码后进行分析讲述,请读者仔细分析每一处解析,对于基础巩固将会有很大的帮助,其中还有每一块代码的设计思路图,逻辑分析会有一定的提升. 二.需求分析 本程序需要用到os模板首先导入,并命名要存储信息的文件 import os File_Object_Name = 'Student_Inforation.txt' 三.主函数 def Main()

  • 详解用python实现基本的学生管理系统(文件存储版)(python3)

    这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后续发布,先来看一下文件存储版,是把学生信息存储到了txt文件中,我这里是默认存储到了students.txt文件中,想更改文件名字根据代码修改即可,代码中注释很详细,我也是python初学者,欢迎大家和我交流! """ 学生管理系统(文件存储版) 再原有功能的基础上添加了如下功能

  • 教你用Python实现简易版学生信息管理系统(含源码)

    一.项目分析 1.首先定义一个存放基础学生信息列表 格式:list = [{学号:姓名,年龄:num,成绩:num },{--}] student1 = [\ {1:"jam",'age':17,'socer':99}, {2:'kol','age':18,'socer':89}, {3:'avlir','age':19,'socer':100}] 2.先搭建框架(主函数main()) if __name__ == '__main__': while True: menu() key

  • 基于Python实现的购物商城管理系统

    完整项目地址: https://github.com/kongxiangchx/Shopping-mall-management-system 简介 本项目使用Python语言编写,实现了顾客端和商家端. 功能 店主功能:注册.登录.修改店铺信息.添加商品.删除商品.修改商品.查找商品.查看交易记录. 顾客功能:注册.登录.修改收货信息.查找商品.购买商品.查看交易记录.取消订单. 商家端 shopMain.py:编写界面上组件的功能,并通过调用send_data.py向服务器发送相应的请求.

  • 基于Python编写简易版的天天跑酷游戏的示例代码

    写出来的效果图就是这样了: 下面就更新一下全部的代码吧 还是老样子先定义 import pygame,sys import random 写一下游戏配置 width = 1200            #窗口宽度 height = 508            #窗口高度 size = width, height    score=None              #分数 myFont=myFont1=None     #字体 surObject=None          #障碍物图片   

  • Java版学生管理系统

    本文实例为大家分享了Java版学生管理系统的具体代码,供大家参考,具体内容如下 学生类 //学生类 public class Student {     //学号     private int sid;     //姓名     private String name;     //年龄     private int age;     //地址     private String address;     //创建构造方法     public Student(){       }    

  • python版学生管理系统

    写一个学生管理系统,最好用python. 我都没学过python呢,只好开始临时抱佛脚,再到网上找找有没有例子看看,下面是我参照另一个博主写的,中间有一些和我不能融合的错误,我已经解决了. input("\n\nPress the enter key to exit.") def functionList(): # 定义功能菜单 print("---------请输入序号选择您要得功能---------") print("") print(&qu

  • python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer): self.data = data self.next = pointer # 创建单链表 class SingleLinkedList(object): def __init__(self): self.head = Node(None, None) self.point = self.hea

随机推荐