学生管理系统
简单完成一个学生管理系统,数据设计如下:
student = {年级1:{
'班级1':[
{'学生1姓名': 'wo', '学生1性别': 'nan', '学生1年龄': 16},
{'学生2姓名': 'wo', '学生2性别': 'nan', '学生2年龄': 16}
]
'班级2':[
{'学生1姓名': 'wo', '学生1性别': 'nan', '学生1年龄': 16}
]
},
年级2:{'班级':[
{'学生1姓名': 'wo', '学生1性别': 'nan', '学生1年龄': 16}
]
},
},年级3:{},年级4:{},年级5:{},年级6:{}}
该系统没有数据存储功能。
实现如下
# 主类 menu.py
import stuctrl as sc
import clsctrl as cc
def menu():
while True:
print("主菜单:")
print("键入数字以选择功能:")
print("1:查看所有年级、班级、学生信息")
print("2:学生信息管理")
print("3:班级信息管理")
print("0:退出系统(数据不会保存)")
choice=int(input())
if choice == 0:
break
elif choice == 1:
sc.stushow(student)
elif choice == 2:
stumenu()
elif choice == 3:
clsmenu()
else:
print("输入错误,请重新输入")
continue
def stumenu():
while True:
print("您现在的位置: 学生信息管理")
print("键入数字以选择功能:")
print("1:查看所有学生信息")
print("2:添加学生信息")
print("3:修改学生信息")
print("4:删除学生信息")
print("0:返回上一级")
choice = int(input())
if choice == 0:
break
elif choice == 1:
sc.stushow(student)
continue
elif choice == 2:
sc.stuinsert(student)
continue
elif choice == 3:
sc.stuupdate(student)
continue
elif choice == 4:
sc.studelete(student)
continue
else:
print("输入错误,请重新输入")
continue
def clsmenu():
while True:
print("您现在的位置: 班级信息管理")
print("键入数字以选择功能:")
print("1:查看所有班级")
print("2:添加班级")
print("3:删除班级")
print("0:返回上一级")
choice = int(input())
if choice == 0:
break
elif choice == 1:
cc.clsshow(student)
continue
elif choice == 2:
cc.clsinsert(student)
continue
elif choice == 3:
cc.clsdelete(student)
continue
else:
print("输入错误,请重新输入")
continue
# 定义一个有元素的student字典是为了方便演示增删改查操作,可以为空
# 为空时需要添加增加年级的功能
student = {1:{'1':[{'name': 'zxs', 'gender': 'nan', 'age': 16}]},2:{},3:{},4:{},5:{},6:{}}
menu()
定义另一个文件以实现学生信息的处理
# 学生控制类 stuctrl.py
def stushow(student):
print(student)
def stuinsert(student):
while True:
grade = int(input("年级:(输入0以中断)"))
if grade == 0:
return
elif grade not in tuple(student.keys()):
print("不存在的年级")
continue
classs = str(input("班级:"))
if classs not in tuple(student[grade].keys()):
print("不存在的班级")
continue
name = str(input("姓名:"))
gender = str(input("性别:"))
age = int(input("年龄:"))
student[grade][classs].append({'name':name,'gender':gender,'age':age})
# 用append方法将刚才输入并保存在三个值中的数据
# 构成的字典传入字典套字典套列表中
print("添加成功!")
break
def stuupdate(student):
while True:
grade = int(input("年级:"))
if grade == 0:
return
elif grade not in tuple(student.keys()):
print("不存在的年级")
continue
classs = str(input("班级:"))
if classs not in tuple(student[grade].keys()):
print("不存在的班级")
continue
print(student[grade][classs])
print("需要修改那一位同学的信息:(全部输0以中断)")
innum=int(input())
innum -= 1
while True:
if (innum+1)>len(student[grade][classs]):
print("没有该同学,重新输入")
innum = int(input())
innum -= 1
continue
elif (innum+1)==len(student[grade][classs]):
break
else:
return
print("您选择的是:")
print(student[grade][classs][innum])
print('请输入修改信息')
inkey=str(input())
# 以键入的inke
print('请输入修改后值')
invalue = str(input())
student[grade][classs][innum][inkey]=invalue
# 以键入的inkey为参考,键入的invalue为值,将选中的字典键值对赋以新值
print('修改成功!')
print(student[grade][classs][innum])
break
def studelete(student):
while True:
grade = int(input("年级:(输入0以中断)"))
if grade == 0:
return
elif grade not in tuple(student.keys()):
print("不存在的年级")
continue
classs = str(input("班级:"))
if classs not in tuple(student[grade].keys()):
print("不存在的班级")
continue
print(student[grade][classs])
print("需要删除那一位同学的信息:")
innum=int(input())
innum -= 1
while True:
if (innum + 1) > len(student[grade][classs]):
print("没有该同学,重新输入")
innum = int(input())
innum -= 1
continue
elif (innum + 1) == len(student[grade][classs]):
break
else:
return
print("您选择的是:")
print(student[grade][classs][innum])
print("确认删除?(y/n)")
choice=str(input())
if choice =='y'or'Y'or'\n':
del student[grade][classs][innum]
# 与修改信息的选择一致,少了键入键值对,调用del方法删除
print("删除成功!")
break
print("取消删除")
break
# 班级控制类 clsctrl.py
def clsshow(student):
grade=int(input("年级:"))
print(tuple(student[grade].keys()))
def clsinsert(student):
while True:
grade=int(input("年级:(输入0以返回)"))
if grade == 0:
return
classs=str(input("班级:"))
break
student[grade][classs]=[]
# 输入哪个年级就在哪个年级里进行添加
# 因为班级名称是字符串,所以输啥都行
# 年级输入时有查错判断
def clsdelete(student):
while True:
grade = int(input("年级:(输入0以返回)"))
if grade == 0:
return
classs = str(input("班级:"))
if classs in student[grade]:
del (student[grade][classs])
# 更学生信息的删除一样选中一个班,调用del方法删除
print("删除成功")
break
else:
print("没有该班级!")
continue