学生管理系统转入文件

以函数的方式做学生管理系统

def show_menu():
    '''显示菜单'''
    print('*******欢迎使用学生管理系统*************')
    print('*******\t 1.增加学生信息************')
    print('*******\t 2.删除学生信息************')
    print('*******\t 3.修改学生信息************')
    print('*******\t 4.展示所有学生信息************')
    print('*******\t 5.根据名字查询************')
    print('*******\t 6.统计平均年龄************')
    print('*******\t 7.保存数据************')
    print('*******\t 8.退出系统************')

增加

def add_stu():
    '''返回的是所有学生列表!'''
    print('\t\t*************增加学生信息************')
    # 循环增加
    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('\t**************删除学生信息*************')
    print(students)
    name = input('请输入删除的名字:')
    # 根据名字找位置
    delnum=0
    for i,stu in enumerate(students):   #enumerate得到索引值,得到位置
        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('\t**************删除学生信息*************')
    # print(students)
    name = input('请输入查找的学生名字:')
    # 根据名字找位置,以enumerate函数得到索引,根据索引得到位置
    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('\t**************平均年龄*************')
    sum = 0 #总年龄
    for i, stu in enumerate(students):
       sum += int(stu['age'])
    print(f'平均年龄:{sum/len(students)}')

保存的txt文件

    """保存数据"""
    f = open("info.txt",'w',encoding='utf-8')
    f.write(str(students))
    f.close()

def load_data():
    """加载数据"""
    global students
    f = open("info.txt,encoding='utf-8'")
    content = f.read()
    students = eval(content)
    f.close()```
#大纲函数

if name == 'main':
students = [] # 总学生列表!
while True:
show_menu()
num = int(input('请输入选择的菜单(1-7)😂)
if num8:
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 num3:
update_stu(students)
elif num
4:
show_list(students)
elif num5:
search_name(students)
elif num
6:
avg_age(students)
elif num == 7:
sava_data()
else:
print('输入有误,请重新输入!')

#难点:在于删除与修改的位置确认,可以根据索引来确定,逻辑大纲
posted @ 2020-10-29 14:07  whml  阅读(97)  评论(0编辑  收藏  举报