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实现学生管理系统的完整代码(面向对象)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容