控制台版-学生管理系统
学生管理系统!
学生基础的属性(姓名,性别,年龄)
存储班级中多个人资料, 实现如下工鞥
#分析数据存储格式!
1. 1个人资料: {'id':1,'name':'乔林茹','sex':'女','age':20}
2. 多个人资料:
[{'id':1,'name':'乔林茹','sex':'女','age':20},
{id:2,'name':'左航宇','sex':'男','age':20}
]
# 扩展1:学生数据放在文件中.实现读取所有和写入操作!
# 扩展2:数据存储在sqlite
2. 难点1: 代码量大!
3. 难点2: 循环实现选择菜单! 循环实现录入学生!
4. 难点3: 方法调用! 混乱!!!!
5. 重点: 字典定义和操作方法!!!
1. 字典操作
def demo1():
'''演示字典的方法'''
d1 = {} #空字典
# 1. 增加
d1['name1']= 'aa'
d1['name2']='bb'
# 2.修改
d1['name2']='cc'
d1.update({'name2':'ddd'})
d1.update({'name3': 'ee'}) #update:更新操作,有就修改,无:新增
# 3.删除
del d1['name1']
print(d1)
2. 学生管理
2.1循环选择菜单
def show_menu():
'''显示菜单'''
print('*******欢迎使用学生管理系统*************')
print('******* 1.增加学生信息************')
print('******* 2.删除学生信息************')
print('******* 3.修改学生信息************')
print('******* 4.展示所有学生信息************')
print('******* 5.根据名字查询************')
print('******* 6.统计平均年龄************')
print('******* 7.退出系统************')
def add_stu():
print('增加学生信息!')
def del_stu():
print('删除学生信息')
def update_stu():
print('修改')
def show_list():
print('展示所有')
def search_name():
print('根据名字查询')
def avg_age():
print('统计平均年龄')
if __name__ == '__main__':
while True:
show_menu()
num = int(input('请输入选择的菜单(1-7):'))
if num==7:
print('感谢使用,退出程序!')
flag = input('确定要退出么(y退出/n不退出!):?')
if flag=='y':
break #循环结束
else:
continue # 中断本次
elif num ==1:
add_stu() #增加
continue
elif num==2:
del_stu()
elif num==3:
update_stu()
elif num==4:
show_list()
elif num==5:
search_name()
elif num==6:
avg_age()
else:
print('输入有误,请重新输入!')
2.2 增加
def add_stu():
'''返回的是所有学生列表!'''
print(' *************增加学生信息************')
# 循环增加
flag = 'y' #循环标记
studetns =[] # 多个学生
while flag=='y':
id = input('请输入编号:')
name = input('请输入名字:')
sex = input('请输入性别:')
age = input('请输入年龄:')
# 创建一个学生字典!
stu = {'id':id,'name':name,'sex':sex,'age':age}
studetns.append(stu) #放到列表!
flag = input('是否继续(y/n):')
print('学生添加完成!!!')
return studetns
2.3 查询所有
def show_list(students):
print('展示所有学生信息!')
# 循环打印所有学生
# [{},{},....] for i in students : i是每个值!
for stu in students:
print(stu)
for i,v in enumerate(students):
print(f'第{i+1}个,值:{v}')
2.4 删除
- 字典删除方法: del 字典名['key']
- 列表删除: del s[i:j], s.pop(i) 根据索引删除!
# 语法演示
def demo2():
'''演示列表删除'''
list01 =['小A','小B','小C','小D']
print(list01)
# 根据名字删除
name = input('请输入要删除的名字:')
i = list01.index(name)
list01.pop(i)
print(list01)
students = [{'id': 1, 'name': '小A', 'sex': '男', 'age': 20}, {'id': 2, 'name': '小B', 'sex': '男', 'age': 20}]
print(students)
name = input('请输入要删除的学生名:') #小A
# 循环找到学生的 需要!
delnum=0
for i,stu in enumerate(students):
if stu['name']==name:
delnum =i;
break;
print(f'要删除的名{name},位置:{delnum}')
students.pop(delnum)
print(students)
def del_stu(students):
print(' **************删除学生信息*************')
print(students)
name = input('请输入删除的名字:')
# 根据名字找位置
delnum=0
for i,stu in enumerate(students):
if stu['name']==name:
delnum = i #要删除的位置
break
students.pop(delnum) #根据位置删除
print('删除后的数据:')
print(students)
3 完整代码
def demo1():
'''演示字典的方法'''
d1 = {} #空字典
# 1. 增加
d1['name1']= 'aa'
d1['name2']='bb'
# 2.修改
d1['name2']='cc'
d1.update({'name2':'ddd'})
d1.update({'name3': 'ee'}) #update:更新操作,有就修改,无:新增
# 3.删除
del d1['name1']
print(d1)
def show_menu():
'''显示菜单'''
print('*******欢迎使用学生管理系统*************')
print('******* 1.增加学生信息************')
print('******* 2.删除学生信息************')
print('******* 3.修改学生信息************')
print('******* 4.展示所有学生信息************')
print('******* 5.根据名字查询************')
print('******* 6.统计平均年龄************')
print('******* 7.退出系统************')
def add_stu():
'''返回的是所有学生列表!'''
print(' *************增加学生信息************')
# 循环增加
flag = 'y' #循环标记
studetns =[] # 多个学生
while flag=='y':
id = input('请输入编号:')
name = input('请输入名字:')
sex = input('请输入性别:')
age = input('请输入年龄:')
# 创建一个学生字典!
stu = {'id':id,'name':name,'sex':sex,'age':age}
studetns.append(stu) #放到列表!
flag = input('是否继续(y/n):')
print('学生添加完成!!!')
return studetns
def del_stu(students):
print(' **************删除学生信息*************')
print(students)
name = input('请输入删除的名字:')
# 根据名字找位置
delnum=0
for i,stu in enumerate(students):
if stu['name']==name:
delnum = i #要删除的位置
break
students.pop(delnum) #根据位置删除
print('删除后的数据:')
print(students)
def update_stu(students):
print('**********修改*************')
name = input('请输入删除的名字:')
# 根据名字找位置
delnum=0
for i,stu in enumerate(students):
if stu['name']==name:
delnum = i #要删除的位置
break
students.pop(delnum) #根据位置删除
id = input('请输入新编号:')
name = input('请输入新名字:')
sex = input('请输入新性别:')
age = input('请输入新年龄:')
# 创建一个学生字典!
stu = {'id': id, 'name': name, 'sex': sex, 'age': age}
return students.append(stu)
def show_list(students):
print('展示所有学生信息!')
# 循环打印所有学生
# [{},{},....] for i in students : i是每个值!
for stu in students:
print(stu)
for i,v in enumerate(students):
print(f'第{i+1}个,值:{v}')
def search_name(students):
print('根据名字查询')
print(' **************删除学生信息*************')
print(students)
name = input('请输入删除的名字:')
# 根据名字找位置
delnum = 0
for i, stu in enumerate(students):
if stu['name'] == name:
delnum = i # 要删除的位置
break
#students.pop(delnum)#删除
print(students[delnum]) #根据位置查找
def avg_age(students):
print('统计平均年龄')
print(' **************平均年龄*************')
sum = 0 #总年龄
for stu in students:
sum += int(stu['age']) #年龄是字符串需要转换!
print(f'平均年龄:{sum/len(students)}')
if __name__ == '__main__':
students = [] # 总学生列表!
while True:
show_menu()
num = int(input('请输入选择的菜单(1-7):'))
if num==7:
print('感谢使用,退出程序!')
flag = input('确定要退出么(y退出/n不退出!):?')
if flag=='y':
break #循环结束
else:
continue # 中断本次
elif num ==1:
students= add_stu() #增加
print(f'增加完了,所有的学生总数{len(students)}')
continue
elif num==2:
del_stu(students)
elif num==3:
update_stu(students)
elif num==4:
show_list(students)
elif num==5:
search_name(students)
elif num==6:
avg_age(students)
else:
print('输入有误,请重新输入!')