python学习6

学生管理系统

简单完成一个学生管理系统,数据设计如下:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值