Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—学生管理系统(三)

6.查询/统计模块设计

6.1 查找学生信息功能

*实现查询学生信息功能

从控制台录入学生ID或姓名,到磁盘文件中找到对应的学生信息

业务流程

Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—学生管理系统(三)

具体实现

编写主函数中调用的查找学生信息的函数search()

定义显示查询结果的函数show_student(query_student)

search() 函数:

def search():
    student_query = []
    while True:
        id = ''
        name = ''
        if os.path.exists(filename):
            mode = input('按ID查找请输入1,按姓名查找请输入2:')
            if mode == '1':
                id = input('请输入学生ID:')
            elif mode == '2':
                name = input('请输入学生姓名:')
            else:
                print('您的输入有误,请重新输入')
                search()
            with open(filename, 'r', encoding='utf-8') as rfile:
                student = rfile.readlines()
                for item in student:
                    d = dict(eval(item))
                    if id != '':
                        if d['id'] == id:
                            student_query.append(d)
                    elif name != '':
                        if d['name'] == name:
                            student_query.append(d)
            # 显示查询结果
            show_student(student_query)
            # 清空列表
            student_query.clear()
            answer = input('是否要继续查询?y/n\n')
            if answer == 'y':
                continue
            else:
                break
        else:
            print('暂未保存学生信息')
            return

show_student() 函数:

def show_student(lst):
    if len(lst)==0:
        print('没有查询到学生信息,无数据显示!!!')
        return
    # 定义标题显示格式
    format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
    print(format_title.format('ID', '姓名', '英语成绩', 'Python成绩', 'Java成绩', '总成绩'))
    # 定义内容的显示格式
    format_data='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
    for item in lst:
        print(format_data.format(item.get('id'),
                                 item.get('name'),
                                 item.get('english'),
                                 item.get('python'),
                                 item.get('java'),
                                 int(item.get('english'))
                                 +int(item.get('python'))
                                 +int(item.get('java'))
                                 ))

Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—学生管理系统(三)

6.2 统计学生总人数功能

实现统计学生总人数功能

统计学生信息文件中保存的学生信息个数

业务流程

total() 函数:

def total():
    if os.path.exists(filename):
        with open(filename, 'r', encoding='utf-8') as rfile:
            students = rfile.readlines()
            if students:
                print(f'一共有{len(students)}名学生')
            else:
                print('还没有录入学生信息')
    else:
        print('暂未保存数据信息.....')