学生管理系统(2)

2020-05-16  本文已影响0人  痞子_4ae7
# coding='utf-8'

# 学生管理系统函数
def stu_manager():
    print('-' * 20)
    print("""学生管理系统:
                1.添加学生 
                2.展示学生
                3.查询学生 
                4.删除学生 
                5.修改学生 
                6.退出系统 """)
    print('-' * 20)

    while True:
        choice = input('请输入您要选择的操作(1-6):')

        # 添加学生
        if choice == '1':
            students = []
            name = input('请输入学生姓名:')
            age = input('请输入学生年龄:')
            ID = input('请输入学生学号:')

            # 学生个人信息列表
            stu = [name, age, ID]
            students.append(stu)
            with open('./stu_manager.txt', 'a+', encoding='utf-8') as f:
                length = len(students)
                for i in range(length):
                    stu_str = '姓名:' + students[i][0] + ' ' * 2 + \
                              '年龄:' + students[i][1] + ' ' * 2 + \
                              '学号:' + students[i][2] + '\n'
                    f.write(stu_str)
            print('添加成功!')

        # 展示学生
        elif choice == '2':
            with open('./stu_manager.txt', 'r', encoding='utf-8') as f:
                content = f.read()
                if content:
                    print(content)
                else:
                    print('学生信息文件为空,请添加学生!')

        # 查询学生
        elif choice == '3':
            name = input('请输入要查询的学生姓名:')
            with open('./stu_manager.txt', 'r', encoding='utf-8') as f:
                lines = f.readlines()
                flag = True
                print('您查询的学生信息为:')

                # 对于读取到的信息列表,循环判断每一行中,要查询的学生是否存在
                for each_line in lines:
                    if name in each_line:
                        # 如果存在,则打印出该行,即该学生信息
                        print(each_line)
                        flag = False
                if flag:
                    print('该学生不存在,请检查!')

        # 删除学生
        elif choice == '4':
            students = []
            name = input('请输入要删除的学生姓名:')
            with open('./stu_manager.txt', 'r', encoding='utf-8') as f:
                lines = f.readlines()
                old_length = len(lines)
                for each_line in lines:
                    # 如果学生信息不存在,则将该行添加到新的全体学生列表中
                    if name not in each_line:
                        students.append(each_line)
                        length = len(students)
                        with open('./stu_manager.txt', 'w', encoding='utf-8') as f2:
                            # 逐行打印新的学生列表中的信息
                            for i in range(length):
                                stu_str = students[i]
                                f2.write(stu_str)
                # 判断原始信息列表和新的学生信息列表长度,如果新列表长度短,代表删除成功
                if length < old_length:
                    print('删除成功!')
                else:
                    print('该学生不存在,请检查!')

        # 修改学生
        elif choice == '5':
            old_name = input('请输入要修改的学生:')
            with open('./stu_manager.txt', 'r', encoding='utf-8') as f:
                lines = f.readlines()
                flag = True
                content = ''
                for each_line in lines:
                    if old_name in each_line:
                        new_name = input('请输入学生姓名:')
                        age = input('请输入学生年龄:')
                        ID = input('请输入学生学号:')
                        each_line = '姓名:' + new_name + ' ' * 2 + \
                                    '年龄:' + age + ' ' * 2 + \
                                    '学号:' + ID + '\n'
                        flag = False
                    else:
                        each_line = each_line
                    content += each_line
                    with open('./stu_manager.txt', 'w+', encoding='utf-8') as new_f:
                        new_f.write(content)
                if flag:
                    print('该学生不存在,请检查!')
                else:
                    print('修改成功!')

        # 退出系统
        elif choice == '6':
            print('即将退出系统,欢迎下次使用!')
            exit()
        else:
            print('您的输入有误,请重新输入!')


if __name__ == '__main__':
    stu_manager()
上一篇下一篇

猜你喜欢

热点阅读