day13-学生管理系统


一、创建工程

  • 按照下图创建好工程项目,其中:
    files文件夹:存放管理系统用到的各种文件
    module文件夹:存放封装的模块
    main_page.py:主页,显示登录注册的界面
    student_manager:登录后,显示学生管理系统页面


    工程项目列表

二、封装文件读写操作

  • 在module文件夹下,创建files_manager.py文件,用于封装操作文件相关的功能,文件内容如下:
import json


# 普通文本文件的读操作
def text_read(file_name: str):
    """
    普通文本文件的读操作
    :param file_name: 要读的文件的名字
    :return: 读到的内容
    """
    try:
        with open('./files/'+file_name, encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        print('%s文件不存在' % (file_name))
        return None


# 将文本写入指定的文件中
def text_write(file_name: str, content: str):
    """
    将文本写入指定的文件中
    :param file_name: 文件名
    :param content: 要写入到文件中的内容
    :return: 是否写入成功
    """
    with open('./files/'+file_name, 'w', encoding='utf-8') as f:
        f.write(content)
        return True


# 读json文件中的内容
def json_read(file_name: str):
    """
    获取json文件中的内容
    :param file_name: 文件名
    :return: python类型的数据
    """
    try:
        with open('./files/'+file_name, encoding='utf-8') as f:
            return json.load(f)
    except FileNotFoundError:
        # print('%s文件不存在!' % file_name)
        return None


def json_write(file_name: str, content):
    """
    将内容写入文件中
    :param file_name:
    :param content:
    :return: 写入是否成功
    """
    try:
        with open('./files/'+file_name, 'w', encoding='utf-8') as f:
            json.dump(content, f)
            return True
    except:
        # print('写入失败')
        return False


三、登录注册模块(main_page)

1.数据设计

  • a.用一个字典来保存所有的账号和密码,账号:密码 --> {用户名:密码}
  • b.将保存所有的账号和密码对应的字典存到一个文件中 --> 选json文件

2.显示界面

用一个TXT文件保存界面,执行程序时读出来。方便界面修改

=================================
     欢迎来到千锋学生管理系统

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

3.导入的模块

# 操作文件的模块
import module.file_manager as file_manager
# 显示欢迎界面的模块
import student_manager

4.展示界面函数

def show_main_page():
    """
    显示主页
    """
    while True:
        # 显示页面
        print(file_manager.text_read('main_page.txt'))
        # 选择
        value = input('请选择(1-3):')
        # 根据不同的选择做出不同的反应
        if value == '1':
            # 登录功能函数
            login()
        elif value == '2':
            # 注册功能函数
            register()
        elif value == '3':
            return
        else:
            print('输入有误!')

5.注册功能函数

  • 创建一个名为all_user的json文件,用来存储账号密码对应的字典,初始为空
def register():
    """注册"""
    # 控制输入账号
    while True:
        # 1.输入账号
        user_name = input('请输入账号(3~6位):')
        # 2.检测账号的位数是否符合要求
        if not 3 <= len(user_name) <= 6:
            print('账号有误!请重新输入!')
            continue
        else:
            break

    # 控制输入密码
    while True:
        # 3.在账号输入成功的前提下输入密码
        pass_word = input('请输入密码(6~12位):')
        # 4.检测密码是否合格
        if not 6 <= len(pass_word) <= 12:
            print('密码有误!请重新输入!')
            continue
        else:
            break

    # 检测账号是否已经注册过!

    # 1.获取之前注册过的所有的账号信息
    all_user = file_manager.json_read('all_user.json')

    # 2.判断输入成功的账号是否存在
    if user_name in all_user:
        print('注册失败!该用户名已经被注册了!')
        return

    # 3.账号可用,将账号信息添加到所有的用中
    all_user[user_name] = pass_word

    # 4.更新本地文件
    re = file_manager.json_write('all_user.json', all_user)
    if re:
        print('注册成功!')
    else:
        print('注册失败!')

6.登录功能函数

def login():
    # 1.输入账号和密码
    user_name = input('请输入账号:')
    pass_word = input('请输入密码:')
    # 2.检测账号是否已经注册过
    # 获取系统所有的用户
    all_user = file_manager.json_read('all_user.json')
    # 判断账号是否存在
    if user_name not in all_user:
        print('登录失败! 账号不存在!')
        return
    # 账号存在就先通过账号去获取正确的密码
    pass_word_old = all_user[user_name]
    if pass_word == pass_word_old:
        print('登录成功!')
        # 登录成功后要做什么,写在这儿....
        student_manager.show_manager_page(user_name)

    else:
        print('登录失败!密码错误!')

四、管理学生模块(student_manager)

1.数据结构

  • 数据结构:
    • a.账号和账号管理的学生要一一对应
      aaa stu1, stu2
      bbb stu3

    • b.一个账号要管理多个学生

    • c.一个学生要存储多个信息。每个学生存储的信息数量一样

  • 采取方案:
    一个账号对应一个json文件,每个json文件中就是一个列表
    json文件名和账号名一一对应
   aaa.json :
{
    "count":0,  # 当前系统已经添加的学生数目
    "all_students":[{'name': name1,'age': age, 'tel':tel1, 'id':id1},...]
}

2.显示界面

用一个TXT文件保存界面,执行程序时读出来。方便界面修改

====================================
欢迎%s:

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

3.导入的模块


import module.file_manager as file_manager

4.展示界面函数


# 全局变量用来保存当前登录成功的用户名
current_user = None

# 通过全局变量保存常用的key
key_count = 'count'
key_all_students = 'all_students'
key_name = 'name'
key_age = 'age'
key_tel = 'tel'
key_id = 'id'


def show_manager_page(user_name):
    """
    显示学生管理页面首页
    :return:
    """
    # 1.保存登录成功的用名
    global current_user
    current_user = user_name

    # 2.显示页面
    while True:
        content = file_manager.text_read('manager_page.txt')
        print(content % user_name)

        # 3.做选择
        value = input('请选择(1-5):')
        if value == '5':
            return
        elif value == '1':
            add_student()
        elif value == '2':
            # print('查看学生')
            find_student()
        elif value == '3':
            print('修改学生信息')
        elif value == '4':
            # print('删除学生')
            delete_student()
        else:
            print('输入有误!')

你可能感兴趣的:(day13-学生管理系统)