iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现学生管理系统的代码(JSON模块)
  • 937
分享到

Python实现学生管理系统的代码(JSON模块)

2024-04-02 19:04:59 937人浏览 独家记忆

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

摘要

构思 学生管理系统 应该包含老师注册登录 管理学生信息(增删改查)还有数据持久化 因为数据存入JSON文件 增删改查都需要读取和修改文件 所以需要一个读写文件的方法文件 file_m

构思

学生管理系统 应该包含老师注册登录 管理学生信息(增删改查)还有数据持久化

因为数据存入JSON文件 增删改查都需要读取和修改文件
所以需要一个读写文件的方法文件 file_manager
密码加密可以用到哈希模块文件 tools
老师和学生的类文件 model
程序入口(主页)文件index
核心增删改查文件 student_manager

file_manager.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-02-25 20:23
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_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-02-25 20:24
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-02-25 20:24
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, s_id, name, age, gender, tel):
        self.s_id = s_id
        self.name = name
        self.age = age
        self.gender = gender
        self.tel = tel

index.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-02-25 20:25
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
import sys
import file_manager  # 导入自己写的读取文件模块
import model
import student_manager

def reGISter():
    # 读取文件,查看文件里是否有数据。如果文件不存在,默认是一个字典
    data = file_manager.read_json('data.json', {})
    while True:
        teacher_name = input('请输入账号(3~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):
        student_manager.name = teacher_name
        print('登录成功')
        student_manager.show_manager()
    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('输入有误!')

if __name__ == '__main__':
    start()

student_manager.py


"""
Project: ClassStudent
Creator: 猫猫
Create time: 2021-02-25 20:26
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
import file_manager
import model

name = ''


# 添加
def add_student():
    x = file_manager.read_json(name + '.json', {})
    if not x:
        students = []
        num = 0
    else:
        students = x['all_student']
        # s_id通过json字典里的num来生成
        num = int(x['num'])
    while True:
        s_name = input('请输入学生姓名:')
        s_age = input('请输入年龄:')
        s_gender = input('请输入性别:')
        s_tel = input('请输入电话号码:')

        num += 1
        # 字符串的zfill方法,在字符串的前面补0
        s_id = 'student_id_' + str(num).zfill(3)

        # 创建一个Student对象
        s = model.Student(s_id, s_name, s_age, s_gender, s_tel)

        students.append(s.__dict__)
        # 拼接字典
        data = {'all_student': students, 'num': len(students)}
        # 把数据写入到文件里 以老师名字.json 把data写进去
        file_manager.write_json(name + '.json', data)
        choice = input('添加成功!\n1.继续\n2.返回\n请选择(1-2):')
        if choice == '2':
            break


# 显示 查找
def show_student():
    choice = input('1.查看所有学生\n2.根据姓名查找\n3.根据学号查找\n其他:返回\n请选择:')
    students = file_manager.read_json(name + '.json', {})
    
    all_students = students.get('all_student', [])  # get拿列表里的数据,拿不到默认是一个空列表[]
    if not all_students:
        print('该老师没有学生,请添加学生')
        return

    if choice == '1':  # 查看所有学生
        pass
    elif choice == '2':  # 根据姓名查看
        s_name = input('请输入学生的姓名:')
        all_students = filter(lambda s: s['name'] == s_name, all_students)  # students就只保留了指定名字的学生
    elif choice == '3':  # 学号查找
        s_id = input('请输入学生的学号:')
        all_students = filter(lambda s: s['s_id'] == s_id, all_students)
    else:
        return

    if not students:
        print('未找到学生')
        return

    for student in all_students:
        print('学号:{s_id},姓名:{name},性别:{gender},年龄{age},电话号码{tel}'.fORMat(**student))


# 修改
def modify_student():
    key = value = ''
    m = file_manager.read_json(name + '.json', {})
    all_students = m.get('all_student', [])

    if not all_students:
        print('该老师没有学生,请添加学生')
        return

    modify = input('1.根据姓名修改\n2.根据学号修改\n其他:返回\n请选择:')
    if modify == '1':
        value = input('请输入要修改的学生名字:')
        key = 'name'

    elif modify == '2':
        value = input('请输入要修改的学生学号:')
        key = 's_id'

    else:
        return

    students = list(filter(lambda s: s[key] == value, all_students))
    if not all_students:
        print('没有找到对应的学生')
        return

    for i, student in enumerate(students):
        print('{xiabiao} 学号:{s_id},姓名:{name},性别:{gender},年龄{age},电话号码{tel}'.format(xiabiao=i, **student))

    n = int(input('请输入需要修改的学生的标号(0~{}),q-->返回:'.format(len(students) - 1)))

    if not 0 <= n <= len(students):
        print('输入的内容错误')
        return

    all_students.remove(students[n])

    students[n]['s_id'] = new_input((students[n]['s_id']), "请输入修改后的学生学号[回车则不修改]:")
    students[n]['name'] = new_input((students[n]['name']), "请输入修改后的学生姓名[回车则不修改]:")
    students[n]['gender'] = new_input((students[n]['gender']), "请输入修改后的学生性别[回车则不修改]:")
    students[n]['age'] = new_input((students[n]['age']), "请输入修改后的学生年龄[回车则不修改]:")
    students[n]['tel'] = new_input((students[n]['tel']), "请输入修改后的学生电话号码[回车则不修改]:")
    all_students.append(students[n])
    print(all_students)
    m['all_student'] = all_students
    file_manager.write_json(name + '.json', m)


# 删除
def delete_student():
    y = file_manager.read_json(name + '.json', {})
    all_students = y.get('all_student', [])
    key = value = ''

    if not all_students:
        print('该老师没有学生,请添加学生')
        return

    num = input('1.按照姓名删除\n2.按照学号删除\n其他:返回\n请选择:')
    if num == '1':
        key = 'name'
        value = input('请输入要删除的学生名字:')

    elif num == '2':
        key = 's_id'
        value = input('请输入要删除的学生学号:')
    else:
        return

    students = list(filter(lambda s: s.get(key, '') == value, all_students))
    if not students:
        print('没有找到对应的学生')
        return

    for i, student in enumerate(students):
        print('{xiabiao} 学号:{s_id},姓名:{name},性别:{gender},年龄{age},电话号码{tel}'.format(xiabiao=i, **student))

    n = input('请输入需要删除的学生的标号(0~{}),q-->返回:'.format(len(students) - 1))

    if not n.isdigit() or not 0 <= int(n) <= len(students):
        print('输入的内容错误')
        return

    # 将学生从all_students里删除
    # all_students.pop(n)
    all_students.remove(students[int(n)])

    # 更新新的名单
    y['all_student'] = all_students
    file_manager.write_json(name + '.json', y)


# 显示管理页面
def show_manager():
    content = file_manager.read_file('students_page.txt') % name
    while True:
        print(content)
        operate = input('请选择(1-5):')
        if operate == '1':
            add_student()
        elif operate == '2':
            show_student()
        elif operate == '3':
            modify_student()
        elif operate == '4':
            delete_student()
        elif operate == '5':
            break
        else:
            print('输入错误!')


# 修改时用的input方法
def new_input(old, new):
    input_str = input(new)

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

美化文本

通过自己写的读取文件方法可以直接读取文本(类似界面)

welcome.txt


================================
    ** 欢迎来到学生管理系统**

           1. 登    录
           2. 注    册
           3. 退    出
    **                    **
================================

students_page.txt


================================
❀❀ 欢迎%s老师进入学生管理系统:

         1.  添加学生
         2.  查看学生
         3.  修改学生信息
         4.  删除学生
         5.  返回
❀❀                          ❀❀
================================

执行效果

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

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

--结束END--

本文标题: Python实现学生管理系统的代码(JSON模块)

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现学生管理系统的代码(JSON模块)
    构思 学生管理系统 应该包含老师注册登录 管理学生信息(增删改查)还有数据持久化 因为数据存入JSON文件 增删改查都需要读取和修改文件 所以需要一个读写文件的方法文件 file_m...
    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
  • Python实现GUI学生管理系统的示例代码
    目录序 言代码解析一、登录页面二、主页面显示三 、页面显示四、查询数据五、删除数据六、修改数据七、关于部分八、数据保存,保存信息序 言 哈喽兄弟们,好久不见!最近实在太忙了,所以又双...
    99+
    2024-04-02
  • python实现学生管理系统源码
    本文实例为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下 一.面向过程版 import os stu_list = [] def show_me...
    99+
    2024-04-02
  • Python实现学生信息管理系统的示例代码
    目录前言正文一、新手小白的福利——零基础学生信息管理系统二、GUI界面化版本——Tkinter学生信息管理系统前言 夏天是用来告别的季...
    99+
    2023-02-15
    Python实现学生信息管理系统 Python学生信息管理系统 Python信息管理系统
  • C++代码实现学生信息管理系统
    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 编译环境: Microsoft Visual Studio 2019 3个头文件: Fileope...
    99+
    2024-04-02
  • 学生信息管理系统 python实现(含全部代码)
    学生信息管理系统笔记python 一、需求分析 应具备的功能: 添加学生信息及成绩信息将学生信息保存在文件中修改和删除学生信息查询学生信息根据学生成绩进行排序统计学生总分 二、系统设计 学生信息管理系...
    99+
    2023-09-09
    python pycharm 开发语言
  • Python实现学生管理系统的完整代码(面向对象)
    前言 这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的 file_manager.py """ Project: ClassStudent Creato...
    99+
    2024-04-02
  • C语言代码实现学生成绩管理系统
    某班有最多不超过 30 人(具体人数由键盘输人)参加期未考试,考试科目 最多不超过 6 门(具体门数由键盘输入,但不少于 3 门),学生成绩管理系统是一 个非常实用的程序,如果能够把...
    99+
    2024-04-02
  • C#实现学生管理系统
    本文实例为大家分享了C#实现学生管理系统的具体代码,供大家参考,具体内容如下 添加3个类,分别实现 IComparer接口,实现对Student类的三个字段的排序。 1、学生类:学号...
    99+
    2022-11-13
    C#学生管理系统 C#学生系统 C#学生管理
  • JavaWeb实现学生管理系统
    JavaWeb实现学生管理系统 一、项目介绍二、项目结构三、前期准备1.配置maven环境,在pom.xml配置文件中配置项目所依赖的jar包2.在MySql数据库中,创建登录注册表login和学生信息表student(1)登录注册...
    99+
    2023-08-16
    servlet java 数据库
  • C语言模拟实现学生学籍管理系统
    学生学籍管理系统的C语言模拟实现是对链表、指针、结构体、文件操作等知识点的综合运用,需要实现的功能主要包含:输入学生信息、显示学生信息、查询学生信息、新增学生信息、删除学生信息、修改...
    99+
    2024-04-02
  • springboot实现学生管理系统
    本文实例为大家分享了SpringBoot实现学生管理系统,供大家参考,具体内容如下 一、创建springboot项目 点击下一步 点击下一步,选择要添加的依赖 点击下一步,...
    99+
    2024-04-02
  • python tkinter实现学生信息管理系统
    本文实例为大家分享了python tkinter实现学生信息管理系统的具体代码,供大家参考,具体内容如下 初学python,代码写的比较繁杂,系统功能还有完善的空间 系统使用了mys...
    99+
    2024-04-02
  • 用python实现学生信息管理系统
    用Python实现学生信息管理系统,供大家参考,具体内容如下 系统功能有: 1.录入,查找,删除,修改学生信息2.学生成绩排名3.显示全部学生信息 代码如下: filename = ...
    99+
    2024-04-02
  • python mysql实现学生成绩管理系统
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就...
    99+
    2024-04-02
  • Java学生管理系统的代码怎么写
    这篇文章主要介绍“Java学生管理系统的代码怎么写”,在日常操作中,相信很多人在Java学生管理系统的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java学生管理系统的代码怎么写”的疑惑有所帮助!...
    99+
    2023-07-02
  • 怎么使用C++代码实现学生信息管理系统
    今天小编给大家分享一下怎么使用C++代码实现学生信息管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。编译环境:Micr...
    99+
    2023-06-30
  • Python实现功能全面的学生管理系统
    本文实例为大家分享了Python实现学生管理系统的具体代码,供大家参考,具体内容如下 功能描述 1.分为两个界面:(1)登录和注册界面 (2)学生管理系统界面2.登录功能和之前发布的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作