略微改进版学生管理系统

# 声明所有的key值
import json
key_all_student = 'students'  # 所有学生
key_name = 'student_name'
key_age = 'age'
key_tel = 'tel'
key_id = 'id'

# 系统容器
# 当前已经添加过的学生人数
number = 0

#登陆界面
def main1():
    while True:
        print('-' * 10, '欢迎来到千峰学生信息管理系统', '-'*10)
        print(' ' * 20, '1.登陆 ')
        print(' ' * 20, '2.注册 ')
        print(' ' * 20, '3.退出 ')
        n = input('请输入您的选择:')
        if n == '1':
            login()  #登陆
        elif n == '2':
            register()  #注册
        elif n == '3':
            exit() #退出

#登陆函数
def login():

    number = input('username:')
    password = input('password:')
    with open('./userinfo.json', 'r', encoding='utf-8') as f:
        context = json.load(f)
    if  not context.get(number):
        print('用户名不存在')
        return False
    else:
        if password == str(context[number]):
            print('登陆成功')
            main2()
        return True


#注册函数
def register():
    print('-'*10,'欢迎来到登陆界面','-'*10)
    number = input('请输入小主想注册的账号:')
    with open('./userinfo.json', 'r', encoding='utf-8') as f:
        content = json.load(f)

    if  not content.get(number):
        print('用户名可用哦')
        password = input('输入小主的密码吧:')
        content[number] = password
        with open('./userinfo.json', 'w', encoding='utf-8') as f:
            json.dump(content,f)
            print('注册成功了哦,小主')
        main1()

    else:
        print('用户名已经有啦,小主')




#登陆完成后的主界面
def main2():
    while True:
        print('-' * 10, '欢迎来到千峰学生信息管理系统', '-' * 10)
        print(' ' * 20, '1.添加学生信息 ')
        print(' ' * 20, '2.查找学生信息 ')
        print(' ' * 20, '3.删除学生信息 ')
        print(' ' * 20, '4.显示学生信息 ')
        print(' ' * 20, '5.返回上一级 ')
        n = input('请输入您的选择:')
        if n == '1':
            addstu()
        elif n == '2':
            selectinfo()
        elif n == '3':
            delinfo()
        elif n == '4':
            display()
        elif n == '5':
            main1()
        elif n == '5':
            exit()

#添加学生功能,将学生信息保存在本地
def addstu():
    global number
    while True:
        print('==添加学生==')
        # 输入信息
        add_name = input('姓名:')
        add_age = input('年龄:')
        add_tel = input('电话:')
        # 产生学号

        number += 1
        add_id = 'py1805' + str(number).rjust(3, '0')

        # 创建学生(一个学生就是一个字典)
        add_student = {key_name: add_name, key_age: add_age, key_tel: add_tel, key_id: add_id}
        with open('./stuinfo.json','r',encoding='utf-8') as f:
            content = json.load(f)
        # 获取存学生的容器
        all_students = content.get(key_all_student)
        # 将学生添加到容器中
        all_students.append(add_student)
        content[key_all_student] = all_students
        # print(system_info)
        #将数据写入json文件
        with open('./stuinfo.json','w',encoding='utf-8') as f:
            json.dump(content,f)
        print('添加学生 %s 成功' % add_name)



        # 给出选择
        print('1.继续添加\n其他:返回上一层')
        add_input = input('>>>')
        if add_input != '1':
            break
        continue

def display():
    with open('stuinfo.json','r') as f:
        content = f.read()
        print(content)

#删除学生信息
def delinfo():
    # ============删除学生==============
    while True:
        print('1.按姓名删除')
        print('2.返回')
        del_input = input('请输入(1,2,3):')

        with open('stuinfo.json','r')as f:
            content = json.load(f)
        # 把所有的学生拎出来

        all_students = content.get(key_all_student)
        if (not all_students) or (not len(all_students)):
            print('该系统没有学生!')
            break

        if del_input == '1':
            del_name = input('输入要删除的学生的姓名:')
            del_students = []
            # 找到所有可能要删除的学生
            for student in all_students:
                if del_name == student[key_name]:
                     # 保存可能要删除的学生
                    del_students.append(student)

            # 判断是否找到
            if not len(del_students):
                print('没有找到相关的学生信息!')
                continue
            # 打印所有可能需要删除的学生
            index = 0
            for student in del_students:
                print(index, student)
                index += 1

            del_num = input('请选择要删除的学生的编号:')
            del_student = del_students[int(del_num)]
            # 从系统中删除这个学生
            content[key_all_student].remove(del_student)
            with open('stuinfo.json','w',encoding='utf-8') as f:
                json.dump(content,f)
            print('删除成功!')

        if del_input == '2':
            main2()




        continue

#查询学生信息
def selectinfo():
    """给出选择"""
    print('=查看学生=')
    print('1.根据姓名查看学生信息')
    print('2.根据学号查看学生信息')
    print('3.返回上一层')
    find_input = input('请输入(1,2,3):')

    # 直接回到上一层
    #continue
    #  先看有没有学生
    with open('./stuinfo.json' , 'r' , encoding='utf-8') as f:
        content = json.load(f)
    """拿到所有的学生"""
    all_students = content.get(key_all_student)

    """系统还没有添加过学生"""
    """
    or和and的短路操作:
        表达式1 or 表达式2:如果表达式1的值是True,那么不会执行表达式2,结果直接为True
        表达式1 and 表达式2:如果表达式1的值是False,那么不会执行表达式2,结果直接是False
        None []
    """

    if (not all_students) or (not len(all_students)):
        print('系统中还没有学生!!')
        #continue
    # ==根据姓名找
    elif find_input == '1':
        find_name = input('请输入要查看的学生的名字:')
        flag = True  # 表示是否找不到
        for student in all_students:
            # 如果学生的名字和输入的名字相同,就打印这个学生的信息
            if find_name == student[key_name]:
                print(student)
                flag = False
        if flag:
            print('找不到该学生信息!')

    # ==根据学号找
    elif find_input == '2':
        find_id = input('请输入要查看的学生的学号:')
        flag = True
        for student in all_students:
            if find_id == student[key_id]:
                print(student)
                flag = False
                break
        if flag:
            print('找不到该学生信息!')

    if find_input == '3':
        main2()
    #continue

    # for student in all_students:
    #     print('姓名:%s,年龄:%s,电话:%s,学号:%s' % \
    #           (student[key_name], student[key_age], student[key_tel], student[key_id]))



#调用主函数

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

推荐阅读更多精彩内容

  • 孩子会观察生活中的一切,从观察中得出自己的结论,并据此找到自己的行为方向。从童年起,孩子们就必须学习如何调整自己以...
    平儿李阅读 272评论 0 0
  • 这两天碰到了完全两队不同风格的搭伙伙伴,让我思考了工作上伙伴之间配合的重要性。 A组的伙伴比较融洽,因为本身看起来...
    Gwenduly_W2016阅读 675评论 0 0
  • 我正儿八紧写诗的时候喜欢吃樱桃。 小小的樱桃,红红紫黑的, 火热沉郁的,清甜甘美的, 像初恋情人,曾经变换的, 唇...
    兰郡子阅读 395评论 22 16
  • 时光荏苒,不觉间在青椒平台坚持学习已经有八个多月的时间。 记得刚开始学校说让每一名教师都要积极参与...
    陕县1868兀春娜阅读 190评论 0 0