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

略微改进版学生管理系统

作者: ____空白 | 来源:发表于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