新手python函数练习--学生管理系统--
本帖最后由 blue84818971 于 2021-7-14 16:46 编辑# 函数练习—----制作学生信息管理系统—----
"""
需求:
1.输出主功能页面
1.1添加学生信息
1.2删除学生信息
1.3修改学生信息
1.4查询学生信息
1.5查看所有学生信息
1.6退出管理系统
2.输入对应功能序号
3.执行对应序号的功能
"""
def main_print():# 主页面显示
print('------请选择功能--------')
print('1.添加学生信息')
print('2.删除学生信息')
print('3.修改学生信息')
print('4.查询学生信息')
print('5.查看所有学生信息')
print('6.退出管理系统')
print('-' * 20)
# 创建空列表保存所有信息数据,将单个学生信息放入字典info = [{},{},{}]
info = []
def add_info():# 添加学生信息
# 1.创建新信息
new_id = int(input('请输入学号:'))
new_name = input('请输入姓名:')
new_gender = input('请输入性别:')
new_tel = input('请输入手机号:')
# 2.判断输入的信息是否重复,若重复则返回已存在,重新输入
# 2.1 判断输入的id在info中是否存在
# 2.1.1 info是全局变量,函数内修改要global处理
global info
# id是单个字典中的key,因此先遍历info,再对比判断
for i in info:
if new_id == i['id'] and new_name == i['name'] and new_gender == i['gender'] and new_tel == i['tel']:
print('输入的信息已存在,请重新输入!!!')
# return作用:判断完成,终止后面执行的代码
return
# 创建字典接收数据
new_info = {'id': new_id, 'name': new_name, 'gender': new_gender, 'tel': new_tel}
# 若不重复则录入单个信息进字典,然后添加进info
info.append(new_info)
print(info)
def print_change():
print('输入1:修改id')
print('输入2:修改name')
print('输入3:修改gender')
print('输入4:修改tel')
def del_info():# 删除学生信息
# 1.输入要删除的学号和名字
del_id = int(input('请输入要删除的学号:'))
del_name = input('请输入要删除的名字:')
# 2.查找指定信息,确认是否存在,若存在继续判断是否删除,若不存在,返回用户不存在
# 2.1 全局化info,然后遍历查找判断
global info
for i in info:
if del_id == i['id'] and del_name == i['name']:
print(i)
print('确认是否删除信息,Y删除,N取消')
while True:
answer = input('请输入:')
if answer == 'Y':
info.remove(i)
print('已删除!')
break
elif answer == 'N':
print('返回主页面')
return
else:
print('输入有误,请重新输入')
else:
print('用户不存在,请重新输入!')
print(info)
def change_info():
# 1.输入查找的信息
change_id = int(input('请输入要修改的学生信息学号:'))
# 2.判断输入的指定信息是否存在,
# 2.0 global info 处理 遍历查找
global info
for i in info:
# 2.1若存在,打印该信息详情,确认信息
if change_id == i['id']:
print(i)
# 确认是否修改
print('是否确认修改?Y确认,N取消')
# 若输入的不算Y,N 则循环重新输入
while True:
answer = input('请选择:')
if answer == 'Y':
# 用函数代替显示代码
print_change()
# 选择修改内容错误后继续循环选择
while True:
temp = int(input('请输入要修改的内容序号:'))
if temp == 1:
i['id'] = input('请输入新id:')
print(i)
return
elif temp == 2:
i['name'] = input('请输入新name:')
print(i)
return
elif temp == 3:
i['gender'] = input('请输入新gender:')
print(i)
return
elif temp == 4:
i['tel'] = input('请输入新tel:')
print(i)
return
else:
print('输入序号有误,请重新输入序号!')
elif answer == 'N':
print('返回主页面')
return
else:
print('输入有误,请重新输入')
# 2.2若不存在,返回用户不存在,重新操作。
print('输入的学号不存在,请重新操作!!')
def find_info():# 查找信息
global info
# 1.输入要查找的信息例如id
find_id = int(input('请输入要查找的id:'))
# 2.根据输入的信息,遍历info
for i in info:
# 3.查找到则返回对应数据
if find_id == i['id']:
print(f'该学生id为{i["id"]},姓名为{i["name"]},性别为{i["gender"]},电话为{i["tel"]}')
return
# 没有则返回不存在
print('查找的id不存在')
def all_info():# 查看所有信息
print('-------学生信息表---------')
print('学号\t姓名\t性别\t电话')
global info# 全局化
for i in info:
print(f'{i["id"]}\t{i["name"]}\t{i["gender"]}\t{i["tel"]}')
# -在未选择序号6之前,对应功能执行后,应当继续重新选择功能。(循环)
while True:
# 1.输出主功能页面
main_print()
# 2.输入对应功能序号
num = int(input('请输入对应功能序号:'))
# 3.执行对应序号的功能--定义对应功能函数
if num == 1:
add_info()
elif num == 2:
del_info()
elif num == 3:
change_info()
elif num == 4:
find_info()
elif num == 5:
all_info()
elif num == 6: # 退出循环系统
flag = input('确认要退出吗?请输入yes or no ')
if flag == 'yes':
break
else:
print('输入的序号有误,请重新输入')
# 函数练习—----制作学生信息管理系统—----
"""
需求:
1.输出主功能页面
1.1添加学生信息
1.2删除学生信息
1.3修改学生信息
1.4查询学生信息
1.5查看所有学生信息
1.6退出管理系统
2.输入对应功能序号
3.执行对应序号的功能
"""
def main_print():# 主页面显示
print('------请选择功能--------')
print('1.添加学生信息')
print('2.删除学生信息')
print('3.修改学生信息')
print('4.查询学生信息')
print('5.查看所有学生信息')
print('6.退出管理系统')
print('-' * 20)
# 创建空列表保存所有信息数据,将单个学生信息放入字典info = [{},{},{}]
info = []
def add_info():# 添加学生信息
# 1.创建新信息
new_id = int(input('请输入学号:'))
new_name = input('请输入姓名:')
new_gender = input('请输入性别:')
new_tel = input('请输入手机号:')
# 2.判断输入的信息是否重复,若重复则返回已存在,重新输入
# 2.1 判断输入的id在info中是否存在
# 2.1.1 info是全局变量,函数内修改要global处理
global info
# id是单个字典中的key,因此先遍历info,再对比判断
for i in info:
if new_id == i['id'] and new_name == i['name'] and new_gender == i['gender'] and new_tel == i['tel']:
print('输入的信息已存在,请重新输入!!!')
# return作用:判断完成,终止后面执行的代码
return
# 创建字典接收数据
new_info = {'id': new_id, 'name': new_name, 'gender': new_gender, 'tel': new_tel}
# 若不重复则录入单个信息进字典,然后添加进info
info.append(new_info)
print(info)
def print_change():
print('输入1:修改id')
print('输入2:修改name')
print('输入3:修改gender')
print('输入4:修改tel')
def del_info():# 删除学生信息
# 1.输入要删除的学号和名字
del_id = int(input('请输入要删除的学号:'))
del_name = input('请输入要删除的名字:')
# 2.查找指定信息,确认是否存在,若存在继续判断是否删除,若不存在,返回用户不存在
# 2.1 全局化info,然后遍历查找判断
global info
for i in info:
if del_id == i['id'] and del_name == i['name']:
print(i)
print('确认是否删除信息,Y删除,N取消')
while True:
answer = input('请输入:')
if answer == 'Y':
info.remove(i)
print('已删除!')
break
elif answer == 'N':
print('返回主页面')
return
else:
print('输入有误,请重新输入')
else:
print('用户不存在,请重新输入!')
print(info)
def change_info():
# 1.输入查找的信息
change_id = int(input('请输入要修改的学生信息学号:'))
# 2.判断输入的指定信息是否存在,
# 2.0 global info 处理 遍历查找
global info
for i in info:
# 2.1若存在,打印该信息详情,确认信息
if change_id == i['id']:
print(i)
# 确认是否修改
print('是否确认修改?Y确认,N取消')
# 若输入的不算Y,N 则循环重新输入
while True:
answer = input('请选择:')
if answer == 'Y':
# 用函数代替显示代码
print_change()
# 选择修改内容错误后继续循环选择
while True:
temp = int(input('请输入要修改的内容序号:'))
if temp == 1:
i['id'] = input('请输入新id:')
print(i)
return
elif temp == 2:
i['name'] = input('请输入新name:')
print(i)
return
elif temp == 3:
i['gender'] = input('请输入新gender:')
print(i)
return
elif temp == 4:
i['tel'] = input('请输入新tel:')
print(i)
return
else:
print('输入序号有误,请重新输入序号!')
elif answer == 'N':
print('返回主页面')
return
else:
print('输入有误,请重新输入')
# 2.2若不存在,返回用户不存在,重新操作。
print('输入的学号不存在,请重新操作!!')
def find_info():# 查找信息
global info
# 1.输入要查找的信息例如id
find_id = int(input('请输入要查找的id:'))
# 2.根据输入的信息,遍历info
for i in info:
# 3.查找到则返回对应数据
if find_id == i['id']:
print(f'该学生id为{i["id"]},姓名为{i["name"]},性别为{i["gender"]},电话为{i["tel"]}')
return
# 没有则返回不存在
print('查找的id不存在')
def all_info():# 查看所有信息
print('-------学生信息表---------')
print('学号\t姓名\t性别\t电话')
global info# 全局化
for i in info:
print(f'{i["id"]}\t{i["name"]}\t{i["gender"]}\t{i["tel"]}')
# -在未选择序号6之前,对应功能执行后,应当继续重新选择功能。(循环)
while True:
# 1.输出主功能页面
main_print()
# 2.输入对应功能序号
num = int(input('请输入对应功能序号:'))
# 3.执行对应序号的功能--定义对应功能函数
if num == 1:
add_info()
elif num == 2:
del_info()
elif num == 3:
change_info()
elif num == 4:
find_info()
elif num == 5:
all_info()
elif num == 6: # 退出循环系统
flag = input('确认要退出吗?请输入yes or no ')
if flag == 'yes':
break
else:
print('输入的序号有误,请重新输入')
论坛提供了代码样式,这样看上去更好看
axin1999 发表于 2021-7-14 20:14
建议多用try except增加代码可靠性,elif的多重判断可以用switch来做
switch?py没有这个函数吧,只能用字典映射 沙发支持 编码风格不错,支持一下 第二步,改造成文件保存 逻辑是有点简单了 毕业设计? 这玩意我好像是再B站看过一样的开源的,难道楼主是作者? 风格不错,支持支持 不错,学习一下。 muelfox 发表于 2021-7-14 18:00
毕业设计?
毕设不会这么简单吧