• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 = '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学生管理系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python实现学生管理系统源码
    • 基于python制作简易版学生信息管理系统
    • 使用python实现学生信息管理系统
    • python实现学生信息管理系统源码
    • python实现简单的学生管理系统
    • 利用Python实现学生信息管理系统的完整实例
    • 基于Python实现简单学生管理系统
    • 用python实现学生管理系统
    • python实现学生管理系统开发
    • python实现简单学生信息管理系统
    • python学生管理系统的实现
    • Python实战之实现简易的学生选课系统
    上一篇:pycharm中django框架连接mysql数据库的方法
    下一篇:Python实现学生管理系统的代码(JSON模块)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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