目录
7.函数应用:学生管理系统
分析
增删改查操作
存储学生信息:
姓名
年龄
班级
性别
...
{'name': 'isaac', 'age': 18, ...}存储所有的学生信息:
列表: [{}, {}, {}, ...]功能菜单、业务框架。
搭建业务框架
def show_menu():
print('1. 添加学生')
print('2. 删除学生')
print('3. 修改学生信息')
print('4. 查询单个学生信息')
print('5. 查询所有的学生信息')
print('6. 退出系统')
while True:
show_menu()
opt = input('请输入用来选择的操作编号:')
if opt == '1':
print('1. 添加学生')
elif opt == '2':
print('2. 删除学生')
elif opt == '3':
print('3. 修改学生信息')
elif opt == '4':
print('4. 查询单个学生信息')
elif opt == '5':
print('5. 查询所有的学生信息')
elif opt == '6':
print('欢迎下次使用本系统...')
break
else:
print('输入有误,请再次输入!')
continue
input('......回车键继续操作......')
添加学生信息
- 通过 input 函数获取学生的信息,姓名、年龄、性别
- 将学生信息转换为字典进行保存
- 将这个学生字典添加的列表中
添加学生优化
代码优化:
假设学生的名字都不能重复,在添加学生的时候,进行判断。如果学生名字已经存在,则不添加!
删除 / 修改 / 查询 学生信息
都使用 name 对学生进行判断
- 使用 input 获取要删除 / 修改 / 查询的学生姓名
- 判断学生信息是否存在
- 学生存在,对学生进行 删除 / 修改 / 查询 操作
- 学生信息不存在,直接结束
简易学生管理系统代码
代码1
stu_list = [] # 定义学生列表,保存所有的学生信息
def show_menu():
print('1. 添加学生')
print('2. 删除学生')
print('3. 修改学生信息')
print('4. 查询单个学生信息')
print('5. 查询所有的学生信息')
print('6. 退出系统')
def insert_student():
# 1. 通过 input 函数获取学生的信息, 姓名, 年龄, 性别
name = input('请输入学生名字:')
# [{}, {}, {}] 判断的是字典中的value是否存在
for stu in stu_list:
if stu['name'] == name:
print('----------学生信息存在----------')
return # 结束函数的执行
age = input('请输入学生年龄:')
gender = input('请输入学生性别:')
# 2. 将学生信息转换为字典进行保存
stu_dict = {'name': name, 'age': int(age), 'gender': gender}
# 3. 将这个学生字典添加的列表中
stu_list.append(stu_dict)
print('==============学生信息添加成功==============')
def remove_student():
# 1. 使用 input 获取要删除/修改/查询的学生姓名
name = input('请输入要操作的学生的名字:')
# 2. 判断学生信息是否存在
for stu in stu_list:
if stu['name'] == name:
# 3. 学生存在,对学生进行删除/修改/查询操作
stu_list.remove(stu)
# return
break
# 4. 学生信息不存在,直接结束
else:
print('***********该学生信息不存在,无法删除***********')
def modify_student():
# 1. 使用 input 获取要删除/修改/查询的学生姓名
name = input('请输入要操作的学生的名字:')
# 2. 判断学生信息是否存在
for stu in stu_list:
if stu['name'] == name:
# 3. 学生存在,对学生进行删除/修改/查询操作
stu['age'] = int(input('请输入新的年龄:'))
# return
break
# 4. 学生信息不存在,直接结束
else:
print('***********该学生信息不存在,无法修改***********')
def search_student():
# 1. 使用 input 获取要删除/修改/查询的学生姓名
name = input('请输入要操作的学生的名字:')
# 2. 判断学生信息是否存在
for stu in stu_list:
if stu['name'] == name:
# 3. 学生存在,对学生进行删除/修改/查询操作
print(f'姓名:{stu["name"]}, 年龄:{stu["age"]}, 性别:{stu["gender"]}')
# return
break
# 4. 学生信息不存在,直接结束
else:
print('***********该学生信息不存在***********')
def show_all_info():
if len(stu_list) > 0:
for stu in stu_list:
print(f'姓名:{stu["name"]}、年龄:{stu["age"]}、性别:{stu["gender"]}')
# print(stu)
else:
print('目前没有学生信息')
def main():
while True:
show_menu()
opt = input('请输入用来选择的操作编号:')
if opt == '1':
# print('1. 添加学生')
insert_student()
elif opt == '2':
# print('2. 删除学生')
remove_student()
elif opt == '3':
# print('3. 修改学生信息')
modify_student()
elif opt == '4':
# print('4. 查询单个学生信息')
search_student()
elif opt == '5':
# print('5. 查询所有的学生信息')
show_all_info()
elif opt == '6':
print('欢迎下次使用本系统......')
break
else:
print('输入有误,请再次输入')
continue
input('...... 回车键继续操作.......')
main()
代码2
import time
import os
# 定一个列表,用来存储所有的学生信息(每个学生是一个字典)
info_list = []
def print_menu():
print("---------------------------")
print(" 学生管理系统 V1.0")
print(" 1:添加学生")
print(" 2:删除学生")
print(" 3:修改学生")
print(" 4:查询学生")
print(" 5:显示所有学生")
print(" 6:退出系统")
print("---------------------------")
def add_new_info():
"""添加学生信息"""
global info_list
new_name = input("请输入姓名:")
new_tel = input("请输入手机号:")
new_qq = input("请输入QQ:")
for temp_info in info_list:
if temp_info['name'] == new_name:
print("此用户名已经被占用,请重新输入")
return # 如果一个函数只有return就相当于让函数结束,没有返回值
# 定义一个字典,用来存储用户的学生信息(这是一个字典)
info = {}
# 向字典中添加数据
info["name"] = new_name
info["tel"] = new_tel
info["qq"] = new_qq
# 向列表中添加这个字典
info_list.append(info)
def del_info():
"""删除学生信息"""
global info_list
del_num = int(input("请输入要删除的序号:"))
if 0 <= del_num < len(info_list):
del_flag = input("你确定要删除么?yes or no")
if del_flag == "yes":
del info_list[del_num]
else:
print("输入序号有误,请重新输入")
def modify_info():
"""修改学生信息"""
global info_list
modify_num = int(input("请输入要修改的序号:"))
if 0 <= modify_num < len(info_list):
print("你要修改的信息是:")
print("name:%s, tel:%s, QQ:%s" % (info_list[modify_num]['name'],
info_list[modify_num]['tel'], info_list[modify_num]['qq']))
info_list[modify_num]['name'] = input("请输入新的姓名:")
info_list[modify_num]['tel'] = input("请输入新的手机号:")
info_list[modify_num]['qq'] = input("请输入新QQ:")
else:
print("输入序号有误,请重新输入")
def search_info():
"""查询学生信息"""
search_name = input("请输入要查询的学生姓名:")
for temp_info in info_list:
if temp_info['name'] == search_name:
print("查询到的信息如下:")
print("name:%s, tel:%s, QQ:%s" % (temp_info['name'], temp_info['tel'], temp_info['qq']))
break
else:
print("没有您要找的信息....")
def print_all_info():
"""遍历学生信息"""
print("序号\t姓名\t\t手机号\t\tQQ")
i = 0
for temp in info_list:
# temp是一个字典
print("%d\t%s\t\t%s\t\t%s" % (i, temp['name'], temp['tel'], temp['qq']))
i += 1
def main():
"""用来控制整个流程"""
while True:
# 1. 打印功能
print_menu()
# 2. 获取用户的选择
num = input("请输入要进行的操作(数字)")
# 3. 根据用户选择,做相应的事情
if num == "1":
# 添加学生
add_new_info()
elif num == "2":
# 删除学生
del_info()
elif num == "3":
# 修改学生
modify_info()
elif num == "4":
# 查询学生
search_info()
elif num == "5":
# 遍历所有的信息
print_all_info()
elif num == "6":
# 退出系统
exit_flag = input("亲,你确定要退出么?~~~~(>_<)~~~~(yes or no) ")
if exit_flag == "yes":
break
else:
print("输入有误,请重新输入......")
input("\n\n\n按回车键继续....")
os.system("clear") # 调用Linux命令clear完成清屏
# 程序的开始
main()
8.拆包补充
def func(*args, **kwargs):
print('args', args)
print('kwargs', kwargs)
num = 0
# for i in args:
# num += i # num = num + i
#
# for j in kwargs.values():
# num += j
#
# print(f"求和的结果为{num}")
my_list = [1, 2, 3, 4, 5, 6]
my_dict = {'a': 7, 'b': 8, 'c': 9, 'd': 10}
func(my_list) # 将列表作为一个数据进行传递
func(*my_list) # 将列表中的每一个数据作为位置参数进行传递, 拆包
func(my_dict) # 将my_dict 作为一个位置实参进行传递
func(*my_dict) # 将my_dict中的key 作为位置实参进行传递
func(**my_dict) # 将my_dict中键值对作为关键字实参进行传递