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('输入有误!')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 把登陆注册与学生管理分为两个模块: 1.界面设置: 在项目下新建一个文件夹files,在文件夹下新建txt文件ma...
    烟雨江畔丶阅读 291评论 0 1
  • 把登陆注册与学生管理分为两个模块: 1.界面设置: 在项目下新建一个文件夹files,在文件夹下新建txt文件ma...
    _桑心人阅读 192评论 0 0
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_x阅读 15,967评论 3 119
  • 食物过敏与食物不耐受 过敏和不耐受都跟免疫有关的疾病,过敏可引起荨麻疹、红肿、哮喘、鼻炎等典型的疾病。 不耐受有乳...
    嫣看海阅读 172评论 1 1
  • 马上要毕业了,毕业了想做互联网产品专员,现在正在紧张的准备着。 有时候,活得好累的赶脚有木有? 每天感觉时间不够用...
    乱雪飘飘阅读 328评论 1 1