精华内容
下载资源
问答
  • Python——学生管理系统(JSON模块
    千次阅读
    2021-04-05 11:06:49

    构思

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

    因为数据存入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.  返回
    ❀❀                          ❀❀
    ================================
    

    执行效果

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

    更多相关内容
  • 学生信息管理系统 教师权限模块 学生权限模块 学生权限模块含有: 1 .增加 2 .显示 3.追加 4.查找 学生信息功能 教师权限模块含有: 1.增加 2.显示 3.追加 4.查找 5 .修改 6.删除 学生信息功能 用到的主要知识:...
  • 学生信息管理系统后端模块,主要是用来封装学生信息管理系统的后端功能的.
  • 视频演示请移步哔哩哔哩440757580。实现了学生查询成绩、选课,教师增删改成绩、管理员增删改学生教师课程等功能,设登录界面等,交互性高,能给用户带来较好的体验。
  • 学生管理系统登录模块的设计与实现(附详细设计步骤和开发代码已经软件界面截图)
  • ssm学生宿舍管理系统,maven多模块搭建,实现用户分角色登录+分页等技术 项目描述 maven分模块项目+SSM宿舍管理系统+spring mvc+jquery+bootstrap+多模块+svn+分角色登录+分页+拦截器+收邮件。发邮件等。。。。。。 ...
  • 本项目是一套基于JavaWeb的学生成绩管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目...
  • 6.1.3学生页面模块实现 17 6.1.4房间信息页面模块实现 18 6.1.5来访信息页面模块实现 19 6.1.6物品报修信息页面模块实现 20 6.2日志功能模块 21 6.3安装部署 22 第七章 系统测试 23 7.1系统调试的目的和意义 23 7.2...
  • 4.2.1 系统登录管理模块 16 4.2.2 用户管理功能模块 17 4.2.3 实验室管理功能模块 18 4.2.4 实验管理功能模块 20 4.2.5 公告管理功能模块 22 4.2.6 教师登录界面 24 4.2.7 个人信息管理功能模块 26 4.2.8 实验管理...
  • 3.5 学生成绩管理界面 17 3.6 用户信息管理界面 19 3.7 考勤信息操作界面 22 3.8 学生成绩查询界面 24 3.9 学生考勤信息查询界面 第四章 系统测试 4.1 登陆功能测试 4.2查询功能测试 4.3信息更改功能测试 4.4成绩...
  • 系统中的用户有学生、教师和管理员 三类,每类都必须用户名和密码,所以登录系统必须验证两种登录信息,一是 用户名,在本系统中是通过一个名称为“UserName”的文本框控件获得的;二是密码,它同样通过名为...
  • 学生成绩管理系统,分三个模块学生,教师和管理员。 管理员模块:负责学生、老师信息的增删改;发布课程信息的增删改,以便让学生选课;审核老师提交的学生成绩并且打印成绩存档;按照课号查询每个课号的学生成绩...
  • 本项目是一套基于JavaWeb的学生实习管理系统/学生实训管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接...
  • (2)增加学生记录模块,主要实现学生的学号,姓名,性别,家庭住址,各科成绩的录入和添加。 (3)浏览学生记录模块,可按照学生的学号进行搜索浏览。 (4)查询学生记录模块,可以按照学生的学号进行查询。 (5)...
  • JSP+SQL学生考勤管理系统(毕业设计)假系统模块、考勤系统模块、后台管理模块。 系统总体上由三大功能模块:请假系统模块、考勤系统模块、后台管理模块组成。系统涉及到高校三大类用户:学生、任课老师、系统管理员 ...
  • 本系统利用Java Web技术实现了学生信息管理系统,具有简单的学生信息管理功能。 实现了以下功能模块: 院系信息管理模块学生信息管理模块,课程信息管理模块,成绩管理模块 并能根据登入用户的权限自动展示相关...
  • c#学生管理系统

    2019-11-02 18:32:39
    c#学生管理系统,和毕业设计差不多了,大一时做的,里面详细的文档说明,如果觉得可以,请评分 学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。 本文介绍了学生...
  • 学生考试信息管理功能主要包括两大功能模块学生操作模块和教师操作模块。其中学生操作模块分为两个部分,一是账号管理功能(其中包含登录账号、密码修改以及找回密码等),二是信息查询功能。在信息查询部分,学生...
  • 生宿舍管理系统寝室管理,分三个模块学生模块,系统管理员,寝室管理员,可以登陆学生信息,寝室位置、缺勤等管理,界面简约。操作友好
  • 学生学籍管理系统.zip

    2019-12-28 23:34:40
    要求:学生学籍管理系统分为学生信息管理、学生成绩管理、考试管理和用户管理四个功能模块。 (1)学生信息管理模块主要是对学生信息(如学号、姓名、性别、家庭住址等)进行管理。本模块又分为三个子模块: ◇...
  • 该体统分为4个模块,学生学籍管理模块,夜归系统模块,宿舍管理模块,报修系统模块,实现对这4部分的信息管理
  • 参加创新杯的c语言学生成绩管理系统 1.1 程序背景 学生信息管理系统是一个对学生随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,...
  • java学生管理系统.zip

    2021-03-09 13:33:29
    java学生管理系统 该系统主要功能: 学生基本信息和学生成绩的管理 学生基本信息:姓名、学号、专业、班级、所属院系。 各科成绩:高等数学、英语、数据结构、计算机组成原理、面向对象程序设计 系统可以完成对...
  • 能进行简单的学生宿舍管理 用C语言编写。
  • 一个用django开发的学生信息管理系统
  • 学生成绩管理系统模块图,提供整个系统的学生、教师、后台人员的权限及可操作模块,方便开发人员理解系统。
  • 学生信息管理系统C++

    2019-01-13 15:10:46
    学生信息管理系统,包括管理员和学生两大模块,管理员具有班级管理,教师管理,学生管理,课程管理,学生选课,成绩管理六个模块功能,学生具有修改密码,课程浏览,选课浏览,个人选课,成绩查询,个人信息六个模块...
  • 功能简介: 大致分为三个级别,学生主页面,教师主页面及后台管理 1、学生通过该模块注册,以便进入学生主页面提交作业,正确的登陆才能提交作业。 学生上交作业模块,作业成绩查询模块。我要提问模块学生上载...
  • 3.2.4 管理模块 5 第4章 系统设计 6 4.1 总体设计 6 4.2 详细设计 6 4.2.1 各模块设计 6 4.2.2 数据库逻辑结构设计 7 第5章 系统实现与测试 8 5.1 系统实现 8 5.1.1 用户登录模块 8 5.1.2 学生班级模块 9 5.1.3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,845
精华内容 25,538
关键字:

学生管理系统有哪些模块