返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现学生管理系统的完整代码(面向对象)
  • 612
分享到

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

2024-04-02 19:04:59 612人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前言 这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的 file_manager.py """ Project: ClassStudent Creato

前言

这个只是使用面向对象的方法写的 构思和学生管理系统(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 = 'files/'  # 定义一个变量 文件路径

# 读文件的函数
def read_file(file_name):
    try:
        with open(base_dir + file_name, 'r', encoding='utf8') as file:
            content = file.read()
            return content
    except FileNotFoundError:
        print('文件未找到')

def write_file(file_name):
    with open(base_dir + file_name, 'w', encoding='utf8') as file:
        pass

def write_json(file_name, data):
    with open(base_dir + file_name, 'w', encoding='utf8') as file:
        import json
        json.dump(data, file)

def read_json(file_name, default_data):
    try:
        with open(base_dir + file_name, 'r', encoding='utf8') as file:
            import json
            return json.load(file)
    except FileNotFoundError:
        # print('文件未找到')
        return default_data

tools.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-03-04 08:20
IDE: PyCharm
Introduction:Https://blog.csdn.net/Cantevenl/article/details/115439530
"""
# 加密密码
import hashlib
def encrypt_password(passwd, x='zhumaoGouniu'):
    h = hashlib.sha256()
    h.update(passwd.encode('utf8'))
    h.update(x.encode('utf8'))
    return h.hexdigest()

model.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-03-04 08:18
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""

class Teacher(object):
    def __init__(self, name, passWord):
        import tools
        self.name = name
        self.password = tools.encrypt_password(password)

class Student(object):
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __str__(self):
        return f'{self.name},{self.age},{self.gender}'

index.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-03-04 12:08
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
# 1.导入管理系统模块
import sys
import file_manager  # 导入自己写的读取文件模块
import model
import managerSystem

def reGISter():
    # 读取文件,查看文件里是否有数据。如果文件不存在,默认是一个字典
    data = file_manager.read_json('data.json', {})
    while True:
        teacher_name = input('请输入账号(2~6位):')
        if not 2 <= len(teacher_name) <= 6:
            print('账号不符合要求,请重新输入!')
        else:
            break
    if teacher_name in data:
        print('注册失败!该账号已经被注册!')
        return

    while True:
        password = input('请输入密码(6~12位):')
        if not 6 <= len(password) <= 12:
            print('密码不符合要求,请重新输入!')
        else:
            break

    # 用户名密码都已经输入正确以后 将用户名和密码以key:value形式储存
    # 可以创建一个teacher对象
    t = model.Teacher(teacher_name, password)
    data[t.name] = t.password
    file_manager.write_json('data.json', data)

def login():
    # 读取文件,查看文件里是否有数据。如果文件不存在,默认是一个字典
    data = file_manager.read_json('data.json', {})
    teacher_name = input('请输入老师账号:')

    if teacher_name not in data:
        print('登录失败!该账号没有注册!')
        return
    password = input('请输入密码:')
    import tools
    if data[teacher_name] == tools.encrypt_password(password):
        managerSystem.name = teacher_name
        print('登录成功')
        student_manager= managerSystem.StudentManager()
        student_manager.run()

    else:
        print('密码错误,登陆失败!')
def start():
    content = file_manager.read_file('welcome.txt')
    while True:
        operate = input(content + '\n请选择(1-3):')
        if operate == '1':
            print('登录')
            login()
        elif operate == '2':
            print('注册')
            register()
        elif operate == '3':
            print('退出')
            # break   # 把循环退出
            # exit(0)   # 退出整个程序
            sys.exit(0)  # 退出程序
        else:
            print('输入有误!')

# 2.启动管理系统
# 保证是当前文件运行才启动管理系统 : if -- 创建对象 并且调用run方法
if __name__ == '__main__':
    start()

managerSystem.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-03-04 16:12
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
import file_manager
from model import *

name = ''
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 = 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.sava_student()
            elif menu_num == '7':
                break
            else:
                print('输入错误')

    # 二。系统功能函数
    # 2.1 显示功能菜单 ---- 这种方法一般需要使用静态方法
    @staticmethod
    def show_menu():
        content = file_manager.read_file('students_page.txt')
        print(content)

    # 增加
    def add_student(self):
        # 1.用户输入信息
        name = input('请输入你的姓名:')
        age = input('请输入你的年龄:')
        gender = input('请输入你的性别:')

        # 2. 创建学员对象 -- 类 先导入student模块,在创建对象
        student = Student(name, age, gender)

        # 3.将该对象添加到学员列表
        self.student_list.append(student)

        print(self.student_list)
        print(student)

    # 删除
    def del_student(self):
        del_name = input('请输入要删除的学生名字:')

        # 遍历列表 有的话就删除没有就提示
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查无此人')

        print(self.student_list)

    # 修改
    def modify_student(self):
        modify_name = input('请输入要修改的学生名字:')

        for i in self.student_list:
            if i.name == modify_name:
                i.name = self.new_input(i.name, '请输入新修改的名字[回车则不修改]:')
                i.age = self.new_input(i.age, '请输入新修改的年龄[回车则不修改]:')
                i.gender = self.new_input(i.gender, '请输入新修改的性别[回车则不修改]:')
                print(f'修改学员信息成功,姓名 {i.name},年龄 {i.age},性别 {i.gender}')
                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.age},性别 {i.gender}')
                break
        else:
            print('查无此人')

    # 显示全部学生
    def show_student(self):
        print('姓名\t\t年龄\t性别')
        for i in self.student_list:
            print(f'{i.name}\t\t{i.age}\t\t{i.gender}')

    # 保存学员信息
    def sava_student(self):
        # 1.打开文件
        file = open('files/student.data', 'w')

        # 2.数据写入文件
        # 2.1 [学员对象] 转换成 [字典]
        # 使用列表推导式
        new_list = [i.__dict__ for i in self.student_list]

        # 2.2 文件写入 字符串数据
        file.write(str(new_list))
        file.close()

    # 加载信息
    def load_student(self):
        try:
            file = open('files/student.data', 'r')
        except FileNotFoundError:
            file = open('files/student.data', 'w')
        else:
            # 1.读取数据
            data = file.read()
            # 2.文件中读取的数据都是字符串且字符串内部为字典数据,
            # 故需要转换数据类型再转换字典为对象后存储到学院列表
            new_list = eval(data)
            # 创建学生类
            self.student_list = [Student(i['name'], i['age'], i['gender']) for i in new_list]
        finally:
            pass
            # 3.关闭文件
        file.close()

    # 重写的input方法
    def new_input(self, old, new):
        input_str = input(new)

        if len(input_str) > 0:
            return input_str
        else:
            return old

执行效果

在这里插入图片描述
在这里插入图片描述

到此这篇关于python实现学生管理系统的完整代码(面向对象)的文章就介绍到这了,更多相关Python学生管理系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现学生管理系统的完整代码(面向对象)

本文链接: https://lsjlt.com/news/123095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现学生管理系统的完整代码(面向对象)
    前言 这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的 file_manager.py """ Project: ClassStudent Creato...
    99+
    2024-04-02
  • Python实现学生管理系统(面向对象版)
    本文实例为大家分享了Python实现学生管理系统的具体代码,供大家参考,具体内容如下 实现从面向过程到面向对象的过度,通过更改前面的学生管理系统实现面向对象,也证明了面向过程可以完美...
    99+
    2024-04-02
  • python实现学生信息管理系统(面向对象)
    本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 1.主要内容 python种的.py文件如图所示 第一个文件是用来管理文件中包中各个模块的关...
    99+
    2024-04-02
  • 基于Python实现面向对象版学生管理系统
    目录一、目标二、系统需求三、准备程序文件1. 分析2. 创建程序文件四、书写程序1. student.py2. 管理系统需求3. main.py4. 定义系统功能函数4.1 添加学生...
    99+
    2024-04-02
  • python面向对象怎么实现学生信息管理系统
    今天小编给大家分享一下python面向对象怎么实现学生信息管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.主要内容...
    99+
    2023-06-30
  • python实现学员管理系统(面向对象版)
    前言 使用面向对象编程思想完成学员管理系统的开发,具体如下: 系统要求:使用面向对象的方法系统功能:添加学员、删除学员、修改学员信息、查询学员信息、显示所有学员信息、保存学员信息及退...
    99+
    2024-04-02
  • python面向对象版学生信息管理系统
    本文实例为大家分享了python面向对象版的学生信息管理系统的具体代码,供大家参考,具体内容如下 功能: 1.能循环输入内容 2.展示功能 -1.新增名片 -2.显示全部 -3.查询...
    99+
    2024-04-02
  • python面向对象如何实现学员管理系统
    本文小编为大家详细介绍“python面向对象如何实现学员管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“python面向对象如何实现学员管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言使用面向对...
    99+
    2023-06-30
  • Python实现一个完整学生管理系统
    目录前言创建入口函数新增学生insert展示学生show查找学生find删除学生delete加入存档读档存档读档打包成exe程序发布代码前言 功能 新增学生显示学生查找学生删除学生存...
    99+
    2023-01-29
    Python学生管理系统 Python学生管理系统设计
  • 实现Python面向对象版学员管理系统的示例
    这篇“实现Python面向对象版学员管理系统的示例”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“实现Python面向对象版学员管理系统的示例”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家...
    99+
    2023-06-06
  • python如何实现完整学生成绩管理系统
    这篇文章主要介绍“python如何实现完整学生成绩管理系统”,在日常操作中,相信很多人在python如何实现完整学生成绩管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何实现完整学生成绩管...
    99+
    2023-06-29
  • python超详细实现完整学生成绩管理系统
    目录学生成绩管理系统简介源代码students.txtmain.pyLogin.pydb.pyMenuPage.pyview.py学生成绩管理系统简介 一个带有登录界面具有增减改查功...
    99+
    2024-04-02
  • python学生信息管理系统实现代码
    python实现学生信息管理系统,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding:utf-8 -*- import re impo...
    99+
    2024-04-02
  • python代码实现学生信息管理系统
    本文实例为大家分享了python实现学生信息管理系统的具体代码,含代码注释、增删改查、排序、统计显示学生信息,供大家参考,具体内容如下 运行如下: 具体代码如下: # _*_ co...
    99+
    2024-04-02
  • C++实现学生信息管理系统(完整版)
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 实现功能 上面的功能基本完全实现 目前的程序其实还存在两个问题: 1、无法从文件中读取信息,我感...
    99+
    2024-04-02
  • Java 实现完整功能的学生管理系统实例
    目录一、前言二、学生管理系统主要功能在学生类下在学生总部类下:main方法:登录密码验证:打印菜单:增加学生信息:查看学生信息:删除学生信息:修改学生信息:查找学生信息:代码效果演示...
    99+
    2024-04-02
  • C#面向对象实现图书管理系统
    本文实例为大家分享了C#面向对象实现图书管理系统的具体代码,供大家参考,具体内容如下 这个系统需要两个类:class Book,class BookManager首先先进行对Book...
    99+
    2024-04-02
  • C语言不用链表完成学生管理系统(完整代码)
    目录1.课程设计目的2.基本要求3.任务完成情况4.设计报告4.1需求分析4.3详细设计4.4详细代码4.5使用说明4.6测试结果与分析4.7参考文献1.课程设计目的 1.更好的理...
    99+
    2024-04-02
  • Python实现学生管理系统的代码(JSON模块)
    构思 学生管理系统 应该包含老师注册登录 管理学生信息(增删改查)还有数据持久化 因为数据存入JSON文件 增删改查都需要读取和修改文件 所以需要一个读写文件的方法文件 file_m...
    99+
    2024-04-02
  • Python实现GUI学生管理系统的示例代码
    目录序 言代码解析一、登录页面二、主页面显示三 、页面显示四、查询数据五、删除数据六、修改数据七、关于部分八、数据保存,保存信息序 言 哈喽兄弟们,好久不见!最近实在太忙了,所以又双...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作