美文网首页
学生管理系统2.0

学生管理系统2.0

作者: 2333_11f6 | 来源:发表于2018-11-17 16:41 被阅读0次

mymodule:

def page():
    """
    输出界面
    :return:
    """
    print('=' * 88, '\n❀❀欢迎来到LOL小学生管理系统:\n')
    dict1 = {'      💗 1.': '添加学生', '      💗 2.': '查看学生',
             '      💗 3.': '修改学生信息', '      💗 4.': '删除学生',
             '      💗 5.': '返回', '      💗 6.': '退出'}
    for key in dict1:
        print(key, dict1[key])
    print('=' * 88)


def add_student():
    """
    添加学生信息
    :return:
    """
    global stu_id
    dict0 = {'学号': next(stu_id)}
    value = input('请输入学生姓名:')
    dict0['姓名'] = value
    value = input('请输入学生年龄:')
    dict0['年龄'] = value
    value = input('请输入学生电话:')
    dict0['电话'] = value
    return dict0


def get_students_id():
    """
    生成学生学号
    :return:
    """
    id = 1
    while 1:
        # str1.zfill(n) - 将str1返回为长度n的新字符串,以原字符串右对齐,前面填充0。
        yield 'stu' + str(id).zfill(3)
        id += 1


def tian_jia():
    """
    添加学生
    :return:
    """
    global i
    dict0 = add_student()
    all_students.append(dict0)  # 防止越界,扩展列表长度
    all_students[i] = dict0  # 防止被覆盖
    i += 1
    print('🐕'*16, end='')
    print("""
         ❀❀添加成功!❀❀
         💗 1. 继续
         💗 2. 返回
         ❀❀请选择(1-2):❀❀""")
    print('🐕'*16)
    while 1:
        n = input()
        if n == '2':
            bool3 = False
            return bool3
        elif n == '1':
            bool3 = True
            return bool3
        else:
            print('请输入1-2内的数字。\n1. 继续\n2. 返回')
            continue


def find_student(str1, n):
    """
    在学生总表中查找包含{str1,n}的学生
    :param n: 输入的查找内容
    :param str1: 查找的关键字
    :return:下标列表 or -1
    """
    index_list = []
    for index in range(len(all_students)):
        if n == all_students[index][str1]:  # 找到相应位置
            index_list.append(index)
    return index_list


def show_find_student(index_list: list):
    """
    打印查询到的所有学生,并编号
    :return:
    """
    print('符合条件的学生信息为:')
    print('=' * 32)
    for index in range(len(index_list)):
        print(str(index+1) + ' ', end='')
        for key in all_students[index_list[index]]:
            print(key + ':' + all_students[index_list[index]][key], end=' ')
        print()
        print('=' * 32)


def look_over(str1, n):
    """
    在学生总表中查找并打印出包含{str1,n}的学生
    :param n:输入的查找内容
    :param str1:查找的关键字
    :return:
    """
    print('学生信息如下:')
    print('=' * 32)
    for index in range(len(all_students)):
        if n == all_students[index][str1]:  # 找到相应位置

            for key in all_students[index]:
                print(key + ':' + all_students[index][key], end=' ')
            print()
    print('=' * 32)


def cha_kan():
    """
    查看学生
    :return:
    """
    while 1:
        print('🐱' * 16, end='')
        print("""
        💗 1.查看所有学生
        💗 2.按姓名查找
        💗 3.按学号查找
        💗 4.返回
        ❀❀请选择(1-4):❀❀""")
        print('🐱' * 16)
        n = input()
        if n == '4':
            break
        elif n == '1':
            print('所有学生信息如下:')
            print('=' * 32)
            show_all()
            print('=' * 32)
            continue
        elif n == '2':
            n = input('请输入要查找的学生姓名:')
            str1 = '姓名'
            value = len(find_student(str1, n))
            if value != 0:
                look_over(str1, n)  # 注意自变量
            else:
                print('查无此人!请核对输入信息!!')
            continue
        elif n == '3':
            n = input('请输入要查找的学生的学号:')
            str1 = '学号'
            value = len(find_student(str1, n))
            if value != 0:
                look_over(str1, n)  # 注意自变量
            else:
                print('查无此人!请核对输入信息!!')
            continue
        else:
            print('请输入1-4内的数字。')
            continue


def revise_student(index, index_list):
    """
    依据不同的i值(编号)修改不同的学生
    :param index: 需要修改的学生编号
    :return:
    """
    while 1:
        print('🐘'*22, end='')
        print("""
        请选择要修改的信息:
            💗 1.修改学号
            💗 2.修改姓名
            💗 3.修改年龄
            💗 4.修改电话
            💗 5.修改下一个学生
            💗 6.退出修改
            ❀❀请选择(1-6):❀❀""")
        print('🐘' * 22)
        n = input()
        if n == '5':
            break
        elif n == '6':
            bool2 = False
            return bool2
        elif n == '1':
            n2 = input('请输入修改后的学号:')
            str1 = '学号'
            revise_student1(index_list[index], str1, n2)
            continue
        elif n == '2':
            n2 = input('请输入修改后的姓名:')
            str1 = '姓名'
            revise_student1(index_list[index], str1, n2)
            continue
        elif n == '3':
            n2 = input('请输入修改后的年龄:')
            str1 = '年龄'
            revise_student1(index_list[index], str1, n2)
            continue
        elif n == '4':
            n2 = input('请输入修改后的电话:')
            str1 = '电话'
            revise_student1(index_list[index], str1, n2)
            continue
        else:
            print('请输入1-6内的数字。')
            continue


def revise_student1(index, str1, n2):
    """
    在学生总表中找到下标为index的学生字典,并将key为str1的值改为n2
    :param index:
    :param n2:
    :param str1:
    :return:
    """
    all_students[index][str1] = n2
    print("修改成功!修改后的信息为:")
    print('=' * 32)
    for key in all_students[index]:
        print(key + ':' + all_students[index][key], end=' ')
    print()
    print('=' * 32)


def xiu_gai():
    """修改学生"""
    bool2 = True
    while bool2:
        print('🐖'*16, end='')
        print("""
         💗 1.按学号修改
         💗 2.按姓名修改
         💗 3.返回
         ❀❀请选择(1-3):❀❀""")
        print('🐖' * 16)
        n = input()
        if n == '3':
            break
        elif n == '1':
            n1 = input('请输入要修改学生的学号:')  # 学号只有一个
            index_list = find_student('学号', n1)    # 找出需要修改的字典
            #print(index_list)
            if len(index_list) != 0:
                show_find_student(index_list)
                revise_student(0, index_list)
            else:
                print('查无此人!请核对输入信息!!')
                continue
        elif n == '2':
            n1 = input('请输入要修改学生的姓名:')
            index_list = find_student('姓名', n1)
            # print(index_list)
            if len(index_list) != 0:
                show_find_student(index_list)
                n2 = int(input('请选择要修改学生的编号:'))-1
                revise_student(n2, index_list)
            else:
                print('查无此人!请核对输入信息!!')
                continue


def delete_student():
    """
    删除学生
    :return:
    """
    while 1:
        print('🐮' * 16, end='')
        print("""
         💗 1.按学号删除
         💗 2.按姓名删除
         💗 3.返回
         ❀❀请选择(1-3):❀❀""")
        print('🐮' * 16)
        n = input()
        if n == '1':
            n1 = input('请输入要删除学生的学号:')
            str1 = '学号'
            index_list = find_student(str1, n1)
            if len(index_list) != 0:
                show_find_student(index_list)
                print('🐍'*16, end='')
                print("""
         请确认是否删除:
         💗 1.确认删除
         💗 2.返回上一层
         ❀❀请选择(1-2)❀❀""")
                print('🐍' * 16)
                n3 = input()
                if n3 == '1':
                    n2 = int(input('请输入要删除学生的编号:')) - 1
                    all_students.pop(index_list[n2])
                    print('=====删除成功!请继续=====')
                    global i
                    i -= 1
                    continue
                else:
                    continue
            else:
                print('查无此人!请核对输入信息!!')
                continue
        elif n == '2':
            n1 = input('请输入要删除学生的姓名:')
            str1 = '姓名'
            index_list = find_student(str1, n1)
            if len(index_list) != 0:
                show_find_student(index_list)
                print('🐍' * 16, end='')
                print("""
        请确认是否删除:
        💗 1.确认删除
        💗 2.返回上一层
        ❀❀请选择(1-2)❀❀""")
                print('🐍' * 16)
                n3 = input()
                if n3 == '1':
                    n2 = int(input('请输入要删除学生的编号:')) - 1
                    all_students.pop(index_list[n2])
                    print('=====删除成功!请继续=====')
                    i -= 1
                    continue
                else:
                    continue
            else:
                print('查无此人!请核对输入信息!!')
                continue
        elif n == '3':
            break
        else:
            print('请输入1-2内的数字。')
            continue


def show_all():
    """
    打印所有学生信息
    :return:
    """
    for index in range(len(all_students)):
        for key in all_students[index]:
            print(key + ':' + all_students[index][key], end=' ')  # 空格隔开
        print()  # 每输出一个换行


all_students = []
stu_id = get_students_id()
i = 0

程序:

import mymodule
bool1 = True
while bool1:
    # show_all()
    mymodule.page()
    choice = input('请选择(1-6):')
    if choice == '5':
        continue
    elif choice == '6':
        print('谢谢使用,欢迎下次再来!')
        break
    elif choice == '1':
        bool3 = True
        while bool3:
            bool3 = mymodule.tian_jia()
    elif choice == '2':
        mymodule.cha_kan()
    elif choice == '3':
        mymodule.xiu_gai()
    elif choice == '4':
        mymodule.delete_student()
    else:
        print('请输入1-5内的数字。')
        continue

相关文章

网友评论

      本文标题:学生管理系统2.0

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