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

简介: 学生管理系统

5.学生信息维护模块设计

5.1 录入学生信息功能

实现录入学生信息功能

从控制台录入学生信息,并且把它们保存到磁盘文件中

业务流程

image.png

具体实现

save(student)函数,用于将学生信息保存到文件

insert()函数,用于录入学生信息

因为我们要反复用到保存信息的磁盘文件,故我们在代码最开始定义一个变量:

filename = 'student.txt'

insert() 函数:

def insert():
    student_list = []
    while True:
        id = input('请输入ID(如1001):')
        if not id:
            break
        name = input('请输入姓名:')
        if not name:
            break
        try:
            englist = int(input('请输入英语成绩:'))
            python = int(input('请输入Python成绩:'))
            java = int(input('请输入Java成绩:'))
        except:
            print('输入无效,不是整数类型,请重新输入')
            continue
        #将录入的学生信息保存到字典中
        student={'id':id, 'name':name, 'english':englist, 'python':python, 'java':java}
        #将学生信息添加到列表中
        student_list.append(student)
        answer=input('是否继续添加?y/n\n')
        if answer=='y':
            continue
        else:
            break
    #调用save()函数
    save(student_list)
    print('学生信息录入完毕!!!')

save() 函数:

def save(lst):
    try:
        stu_txt = open(filename,'a',encoding='utf-8')
    except:
        stu_txt = open(filename,'w',encoding='utf-8')
    for item in lst:
        stu_txt.write(str(item)+'\n')
    stu_txt.close()

运行实例:

1.png

查看一下我们的 student.txt 文件:

{'id': '1001', 'name': '辰chen', 'english': 60, 'python': 100, 'java': 60}
{'id': '1002', 'name': '娇妹儿', 'english': 70, 'python': 100, 'java': 90}
{'id': '1003', 'name': '枭哥', 'english': 80, 'python': 90, 'java': 90}

5.2 删除学生信息功能

实现修改学生信息功能

从控制台录入学生ID,到磁盘文件中找到对应的学生信息,将其进行修改

业务流程

image.png

具体实现

编写主函数中调用的删除学生信息的函数delete()

调用了show()函数显示学生信息,该函数的功能将在后面完成

show() 函数会在后面实现,这里实现 delete() 函数,需导入 os:

def delete():
    while True:
        student_id = input('请输入要删除的学生的ID:')
        if student_id != '':
            if os.path.exists(filename):
                with open(filename, 'r', encoding='utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old = []
            flag = False  # 标记是否删除
            if student_old:
                with open(filename, 'w', encoding='utf-8') as wfile:
                    d = {}
                    for item in student_old:
                        d = dict(eval(item))  # 将字符串转成字典
                        if d['id'] != student_id:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'id为{student_id}的学生信息已被删除')
                    else:
                        print(f'没有找到ID为{student_id}的学生信息')
            else:
                print('无学生信息')
                break
            show()  # 删除之后要重新显示所有学生信息
            answer = input('是否继续删除?y/n\n')
            if answer == 'y':
                continue
            else:
                break

image.png

student.txt 文档:

{'id': '1002', 'name': '娇妹儿', 'english': 70, 'python': 100, 'java': 90}
{'id': '1003', 'name': '枭哥', 'english': 80, 'python': 90, 'java': 90}

5.3 修改学生信息功能

实现修改学生信息功能

从控制台录入学生ID,到磁盘文件中找到对应的学生信息,将其进行修改

业务流程

image.png

具体实现

编写主函数中调用的修改学生信息的函数modify()

调用了show()函数显示学生信息,该函数的功能将在后面完成

def modify():
    show()
    if os.path.exists(filename):
        with open(filename, 'r', encoding='utf-8') as rfile:
            student_old = rfile.readlines()
    else:
        return
    student_id = input('请输入要修改的学员的ID:')
    if student_id != '':
        with open(filename, 'w', encoding='utf-8') as wfile:
            for item in student_old:
                d = dict(eval(item))
                if d['id'] == student_id:
                    print('找到学生信息,可以修改他的相关信息了!')
                    while True:
                        try:
                            d['name'] = input('请输入姓名:')
                            d['english'] = input('请输入英语成绩:')
                            d['python'] = input('请输入Python成绩:')
                            d['java'] = input('请输入Java成绩:')
                        except:
                            print('您的输入有误,请重新输入!!!')
                        else:
                            break
                    wfile.write(str(d) + '\n')
                    print('修改成功!!!')
                else:
                    wfile.write(str(d) + '\n')
            answer = input('是否继续修改其它学生信息?y/n\n')
            if answer == 'y':
                modify()

image.png

student.txt 文档:

{'id': '1002', 'name': '娇妹儿', 'english': 70, 'python': 100, 'java': 90}
{'id': '1003', 'name': '枭哥', 'english': 80, 'python': 90, 'java': 90}
{'id': '1001', 'name': '辰chen', 'english': '65', 'python': '100', 'java': '60'}


目录
相关文章
|
1天前
|
开发者 Python
Python进阶:深入剖析闭包与装饰器的应用与技巧
Python进阶:深入剖析闭包与装饰器的应用与技巧
|
1天前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
1天前
|
Java Python
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
|
1天前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
|
6天前
|
存储 JSON 数据格式
Python基础语法汇总【保姆级小白教程】
我将 Python语法分为14个章节,从第一章Python基础概念到第14章模块&异常处理,本篇文章将逐一为大家讲述.
37 0
Python基础语法汇总【保姆级小白教程】
|
9天前
|
SQL 关系型数据库 MySQL
Python进阶第二篇(Python与MySQL数据库)
Python进阶第二篇(Python与MySQL数据库)
|
9天前
|
Python
Python进阶第一篇(Python的面向对象)
Python进阶第一篇(Python的面向对象)
|
9天前
|
Python
Python基础第六篇(Python函数进阶)
Python基础第六篇(Python函数进阶)
|
1天前
|
索引 Python 容器
Python数据类型:编程新手的必修课
Python数据类型:编程新手的必修课
|
1天前
|
算法 Java 程序员
Python面相对象的编程
Python面相对象的编程

热门文章

最新文章