Python应用实践——设计一个学生管理系统(附代码讲解)

项目要求   设计一个学生管理系统

关联的主要课程目标: Python 函数和模块、Python文件的数据读取及操作等。

项目要求:设计一个学生管理系统,实现学生基本信息(学号、姓名、性别)的录入、删除和查看、读取及保存功能。

项目指导:可将学生管理系统分为六个小模块:添加学生信息模块、删除学生信息模块、显示所有学生信息模块、保存数据模块、恢复数据模块、退出系统模块等。每个功能模块用函数来实现。

  1. 定义一个全局变量***用于存储所有学生的信息,利用列表存储。
  2. 定义一个打印功能菜单的函数,用于提示用户(1,2,3,4,5,0)功能选择。
  3. 定义一个用于添加学生信息的函数,在该函数中用于输入学生的信息(学号、姓名、性别),使用字典存储每个学生的具体信息,并添加到全局变量***列表中。
  4. 定义一个用于删除学生信息的函数,在该函数中提示用户输入要删除学生的学号,使用remove( )方法删除相应的学生信息。
  5. 定义一个显示所有学生信息的函数,在该函数中遍历存储学生信息的列表,输出每个学生的详细信息。
  6. 定义一个保存学生数据的函数,用于将学生信息数据保存到文件中,write( )方法的参数必须是字符串类型,需要将字典类型的数据强制转换为字符串后进行写入。
  7. 定义一个恢复数据函数,从文件中读取数据到变量,从文件中读取到的内容是字符串,需要将这些带有特点格式的字符串转换为其原来的类型,可调用eval( )函数将字符串转换为字典。
  8. 最后定义一个main函数,用于控制整个程序的流程。在该函数中用循环实现,先打印功能菜单(1,2,3,4,5,0),再获取用户输入,并根据用户输入选择相应的功能模块,最后输入“0”退出程序的执行。
  9. 代码实现(附讲解)
  10. #定义功能函数界面
    def info_print():
        print("请选择功能--------------------")
        print("1、添加学员")
        print("2、删除学员")
        print("3、修改学员")
        print("4、查询学员")
        print("5、显示所有学员")
        print("0、退出系统")
        print('-'*20)
    #等待储存所以学员信息
    info = []
    #添加学员信息函数
    def add_info():
        """添加学员"""
        #接受用户输入信息 学号.姓名.手机号
        new_id = input("请输入学号:")
        new_name = input("请输入姓名:")
        new_tel = input("请输入性别:")
        #声明info是全局变量
        global info
        #检测用户姓名是否存在,存在则报错提示
        for i in info:
            if new_id == i['id']:
                print("该用户已经存在!")
                return  #return作用:退出当前函数,后面添加信息的代码不执行(返回值或退出当前函数)
        #如果用户输入的姓名不存在,则添加学员信息
        info_dict = {}
        #将用户输入的数据追加到字典
        info_dict['id'] = new_id
        info_dict['name'] = new_name
        info_dict['tel'] = new_tel
        print(info_dict)
        #将这个学员信息的字典数据追加到列表
        info.append(info_dict)
        print(info)
    #删除学员
    def del_infor():
        """"删除学员"""
        #1.用户输入要删的学员姓名
        del_name = input("请输入要删的学员姓名:")
        global info
        #2.判断学员是否存在:如果输入的姓名存在则删除,否则报错提醒
        for i in info:
            if del_name == i['name']:
                info.remove(i)
                break
            else:
                print("该学员不存在")
        print(info)
    #修改函数
    def modify_infor():
        """"修改函数"""
        #1.用户输入要修改的学员姓名
        modify_name = input("请输入要修改的学员姓名:")
        global info
        #2.判断学员是否存在:如果输入的姓名存在则更正性别,否则报错提醒
        for i in info:
            if modify_name == i['name']:
                i['tel'] = input("请输入更正性别:")
                break
            else:
                print("该学员不存在")
        print(info)
    #查询学员
    def search_infor():
        """查询学员"""
        #1.用户输入要修改的学员姓名
        search_name = input("请输入要修改的学员姓名:")
        global info
        #2.判断学员是否存在:如果输入的姓名存在则显示这位学员信息,否则报错提醒
        for i in info:
            if search_name == i['name']:
                print("查找信息如下:-----------------")
                print(f"该学员的学号是{i['id']},姓名是{i['name']},性别是{i['tel']}")
                break
            else:
                print("查无此人......")
    #显示所有学员信息
    def print_all():
        """显示所有学员信息"""
        print('学号\t姓名\t性别')
        for i in info:
            print(f"{i['id']}\t{i['name']}\t{i['tel']}")
    #用户变量循环使用,直到用户输入6,才退出系统
    while True:
        #1.显示功能界面
        info_print()
        #2.用户输入功能序号
        user_num = int(input("请输入功能序号: "))
        #3.按照用户输入的功能序号,执行不同的功能(函数)
        #如果用户输入1,执行添加;如果用户输入2,执行删除----多重判断
        if user_num == 1:
            print("添加")
            add_info()
        elif user_num == 2:
            print("删除")
            del_infor()
        elif user_num == 3:
            print("修改")
            modify_infor()
        elif user_num == 4:
            print("查询")
            search_infor()
        elif user_num == 5:
            print("显示所有成员信息")
            print_all()
        elif user_num == 0:
            print("退出系统")
            exit_flag = input("确定要退出吗?yes or no  ")
            if exit_flag == 'yes':
                break
        else:
            print("输入有误!")
    
    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武师叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值