[16] Python控制台版-学生管理系统

控制台版-学生管理系统

学生管理系统!

学生基础的属性(姓名,性别,年龄)

存储班级中多个人资料, 实现如下工鞥

#分析数据存储格式!
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 查询所有

image-20201028160032694

image-20201028160058363

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)

image-20201028163234035

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('输入有误,请重新输入!')




更多交流,请加QQ:390351113.请备注好友来自博客园<IT自学吧>
原文地址:https://www.cnblogs.com/itzixueba/p/13920031.html