美文网首页
略微改进版学生管理系统

略微改进版学生管理系统

作者: ____空白 | 来源:发表于2018-07-28 17:17 被阅读0次
# 声明所有的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()

相关文章

网友评论

      本文标题:略微改进版学生管理系统

      本文链接:https://www.haomeiwen.com/subject/awnomftx.html