Python综合案例之学生管理系统开发(面向过程)

本文介绍如何通过面向过程的方式,实现一个具有添加、删除、修改和查询功能的简单学生管理系统,涉及数据结构、函数调用及文件操作。
摘要由CSDN通过智能技术生成

题目要求(面向过程)

(1)系统最终效果:

在这里插入图片描述

(2)需求分析:

需求:进入系统显示系统功能界面,功能如下:

① 添加学员信息

② 删除学员信息

③ 修改学员信息

④ 查询学员信息(只查询某个学员)

⑤ 遍历所有学员信息

⑥ 退出系统

系统共6个功能,用户根据自己需求选取

(3)功能步骤实现:

① 显示功能界面

② 用户输入功能序号

③ 根据用户输入的功能序号,执行不同的功能(函数)

☆ 定义函数

☆ 调用函数

# 5、定义一个大列表,将来用于保存所有同学的信息 []
students = []  # 将来数据结构[{}, {}, {}]
# 6、封装一个add_student()方法,用于向students中添加学生信息
def add_student():
    student = {}
    # 提示用户输入要添加的学员信息
    # 字典[键] = 值 => {name:xxx, age:23, mobile:10086}
    student['name'] = input('请输入学生的姓名:')
    student['age'] = int(input('请输入学生的年龄:'))
    student['mobile'] = input('请输入学生的电话:')
    # 把这个字典追加到全局的students列表中
    global students
    students.append(student)
    print('恭喜您,学生信息已经录入成功!')
    print(students)
# 7、封装一个del_student()函数,用于实现删除学生信息
# ① 提示用户输入要删除同学的名字 ② 然后在students列表中,进行循环遍历,找是否有删除的同学,找到了就删除,找不到弹出提示没有这个同学信息
def del_student():
    name = input('请输入您要删除学生的姓名:')
    for i in students:  # 从students列表中取出每一个字典,然后放入变量i中
        if i['name'] == name:  # 相等就代表找到了这个同学
            # 把这个字典从列表中整体删除
            students.remove(i)
            print('恭喜您,学生信息已经成功删除!')
            print(students)
            break
    else:
        print('很抱歉,您要删除学生的信息暂不存在!')
# 8、封装一个edit_student()方法,用于实现更改学生的信息
def edit_student():
    # 提示用户输入要修改学员的姓名
    name = input('请输入您要更改的学生姓名:')
    # 对整个列表students进行遍历
    for i in students:
        if i['name'] == name:
            i['name'] = input('请输入修改后学生的姓名:')
            i['age'] = input('请输入修改后学生的年龄:')
            i['mobile'] = input('请输入修改后学生的电话:')
            print('您要修改的学生信息已经修改成功!')
            print(students)
            break
    else:
        print('很抱歉,没有找到您要修改的学生信息,请重新输入!')

# 9、定义一个find_student()函数,用于查找同学的信息
def find_student():
    # 提示用户输入要查找的同学名称
    name = input('请输入您要查找学生的姓名:')
    for i in students:
        if i['name'] == name:
            print(i)
            break
    else:
        print('很抱歉,没有找到您要查找的学生信息不存在,请重新输入!')

# 10、定义一个show_students()函数,用于显示所有学员信息
def show_student():
    for i in students:
        print(i)

# 11、定义一个save_data_to_file()函数,用于保存数据到文件
def save_data_to_file():
    # 1、打开文件
    f = open('students.txt', 'w', encoding='utf-8')
    # 2、读写文件(只有字符串类型的数据方才会写入到文件中)
    global students
    f.write(str(students))  # 只能把字符串写入到文件 => [{}, {}, {}] => '[{}, {}, {}]'
    # 3、关闭文件
    f.close()
    print('恭喜您,信息已经保存成功!')

# 12、加载students.txt中的数据到students列表中
def load_data():
    # 1、打开文件
    f = open('students.txt','r',encoding='utf-8')
    # 2、读写文件
    content = f.read()  # str字符串类型
    # 判断文件内容是否为空
    if not content:
        return  # 终止此函数,不需要在继续加载了
    else:
        # 如果代码继续向下执行,代表content不为空,则进行类型转换
        global students  # 声明我们接下来要使用的students是全局变量
        students = eval(content)

# 12、加载students.txt中的数据到students列表中
load_data()
# 2、封装一个menu()函数,专门用于实现打印学生管理系统的菜单
def menu():
    print('_' * 40)
    print('欢迎使用济医学生管理系统 v1.0')
    print('【1】添加学生的信息')
    print('【2】删除学生的信息')
    print('【3】修改学生的信息')
    print('【4】查询学生的信息')
    print('【5】遍历所有学生的信息')
    print('【6】保存数据到文件')
    print('【7】退出系统')
    print('_' * 40)
# 1、定义一个死循环结构,让代码一直执行下去,直到用户手工退出
while True:
    menu()
    # 3、提示用户输入要执行的功能编号
    user_num = int(input('请输入您要选择的功能编号:'))
    # 4、使用if多分支结构进行条件判断选择
    if user_num == 1:
        add_student()
    elif user_num == 2:
        del_student()
    elif user_num == 3:
        edit_student()
    elif user_num == 4:
        find_student()
    elif user_num == 5:
        show_student()
    elif user_num == 6:
        save_data_to_file()
    elif user_num == 7:
        print('退出系统成功,感谢您使用济医学生管理系统!')
        break
    else:
        print('很抱歉您的输入有误,请重新输入!')

注意:
①保存数据到文件中时,还要加载文件中的数据到students列表。
②global关键字只是针对不可变数据类型的变量进行修改操作(数值;字符串;布尔;元组),可变类型可以不加global关键字。
添加学生信息时:
在这里插入图片描述
删除学生信息时:
在这里插入图片描述
注意:删除学员信息时,for与else是一对
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值