学生系统--(列表、带返回值的函数、if 、while)文件读写的应用

学生系统1.0版本:

#添加学员
def add_student():
    # 输入学员的姓名
    name = input('请输入学员姓名:')
    # 把姓名添加到大列表中
    student_list.append(name)
#查询学员的函数
def query_student():
    #展示所有学员信息
    # for循环 遍历列表中每一条数据
    for x in range(0, len(student_list)):
        # 根据x的值,取出列表对应索引的数据
        name = student_list[x]
        print('序号:%s 姓名:%s' % (x, name))
下面的这个函数,为带返回值得函数
#封装判断选择学员序号是否在范围的函数
#带返回值的函数 函数执行完之后,会返回一个结果,可以声明变量接收这个结果
def get_index(type):
    '''
    函数的功能描述:获取用户选择的学员序号
    :param type: 选择序号类型
    :return: 选择的序号
    '''
    index = input('请选择要%s的学员序号:'%type)
    # 转换为整数类型
    index = int(index)
    while index not in range(0, len(student_list)):
        index = input('选择的学员序号不存在,请重选:')
        index = int(index)
    #返回选择的序号
    return index

#修改学员信息
def update_student():
    '''
    :return: None
    '''

    # 1.展示所有学员信息
    query_student()
    # 2.选择要修改的学员序号
    index=get_index('修改')
    # 根据选择的索引取出对应的姓名
    name = student_list[index]
    # 获取修改后的名字
    new_name = input('请输入修改后的姓名(%s):' % name)
    # 根据索引修改列表中的数据
    student_list[index] = new_name
#删除学员信息
def delete_student():
    #1.查询学员信息
    query_student()
    # 2.选择要删除的序号
    index=get_index('删除')
    a = input('确定要删除该序号?y(是的)/n(不是):')
    if a == 'y':
        # 根据索引删除列表中的数据
        del student_list[index]

#保存数据的函数
def save_data():
    #1.打开文件
    file_handle=open('student.txt','w')
    #2.写入数据
    for name in student_list:
        #将姓名写入文件中
        file_handle.write(name)
        #写入换行符
        file_handle.write('\n')
    #3.关闭文件
    file_handle.close()

#引入os模块
import os
#读取数据的函数
def read_data():
    #判断文件是否存在,如果存在,再做打开文件的操作
    #如果文件存在返回True 不存在 返回False
    rs=os.path.exists('student.txt')
    if rs==True:
        #1.打开文件
        file_handle=open('student.txt')
        #2.读取文件内容
        contents=file_handle.readlines()
        # print(contents)
        for name in contents:
            #去除 \n
            name=name.strip('\n')
            #将取出的name添加到大列表中
            student_list.append(name)

#声明一个大列表,存放学员的姓名
student_list=[]
#读取存储的数据
read_data()

while True:
    print('1.添加学员')
    print('2.修改学员')
    print('3.查询学员')
    print('4.删除学员')
    print('0.退出程序')
    #选择操作
    num=input('请输入您的选择:')
    num=int(num)
    #如果选择的数字不在0~5,继续选择
    while num not in range(0,5):
        num=input('没有改选项,请重选:')
        num=int(num)
    if num == 1:
        # 调用添加学员函数
        add_student()
        # 保存
        save_data()
    elif num == 2:
        # 调用修改学员函数
        update_student()
        # 保存
        save_data()
    elif num == 3:
        # 查询学员信息
        query_student()
    elif num == 4:
        # 调用删除学员函数
        delete_student()
        # 保存
        save_data()
    else:
        break

学生系统2.0

查询:1.查询所有学员 2.根据姓名查询

删除:1.根据学员序号删除 2.删除所有学员 3.根据姓名删除学员

'''''
    # 大列表中嵌套小列表,小列表中存储一个学员的完整信息
    student_list = [['张三','22','男','110'],['李四','22','男','110'],['王五','22','男','110']]
    # 例如要取出张三这个学员的信息
    # 1.取出张三这个学员的小列表
    student1 = student_list[0]
    # 2.再从小列表中根据索引取出姓名、年龄、性别、电话
    name = student1[0]
    age = student1[1]
    sex = student1[2]
    phone = student1[3]
'''

#添加学员函数
def add_student():
    #输入学员姓名、年龄、电话
    name=input('请输入学员姓名:')
    age=input('请输入学员年龄:')
    phone=input('请输入学员电话:')
    #把name、age、phone放在小列表中
    student=[name,age,phone]
    #把小列表添加到所有学员的大列表中
    #append(object) insert(index,object) extend(iterable)
    student_list.append(student)
    print('****添加学员成功****')

#查询学员的函数
def query_student():
    #1.查询所有学员
    #2.输入学员姓名 查询学员 得到查询的学员的序号
    print('*******学员信息列表*********')
    print('1.查询所有学员')
    print('2.根据姓名,查询学员序号')
    num = input('请选择您的操作:')
    # 转换为整数
    num = int(num)
    # 判断选择学员序号是否在范围内
    while num not in range(1,3):
        # 不在范围,重新选择
        num = input('没有选项,请重选:')
        num = int(num)
    if num==1:
        #遍历大列表
        for x in range(0,len(student_list)):
            #根据x的值 从大列表中取出小列表
            student=student_list[x]
            #从小列表中取出姓名、年龄、电话
            name=student[0]
            age=student[1]
            phone=student[2]
            print('序号:%s姓名:%s年龄:%s电话:%s'%(x,name,age,phone))
    else:
        name = input('请输入要查询学员的姓名:')
        while 1:
            a=False
            for student in student_list:
                if student[0] == name:
                    #根据student(小列表)在大列表中位置,判断学员信息的序号
                    index=student_list.index(student,0,len(student_list)+1)
                    print('该学员的序号为:%s'%index)
                    a=True

            if a==False:
                name = input('您要查询的学生不在该表,重新输入查询学员的姓名:')
            else:
                break


#修改学员的函数
def update_student():
    #判断是否有学员信息,如果没有,直接结束函数的执行
    if len(student_list)==0:
        print('没有学员信息,无法进行修改操作!')
        #强制结束函数的执行 return  下面的代码 都不会再执行了
        return
    #1.查询学员信息
    query_student()
    #2.选择要修改的学员序号
    num=input('请选择要修改的学员序号:')
    #转换为整数
    num=int(num)
    #判断选择学员序号是否在范围内
    while num not in range(0,len(student_list)):
        #不在范围,重新选择
        num=input('没有该序号,请重选:')
        num=int(num)
    #根据选择的序号取出对应的学员信息小列表
    student=student_list[num]
    new_name=input('请输入修改后的姓名(%s):'%student[0])
    new_age=input('请输入修改后的年龄(%s):'%student[1])
    new_phone=input('请输入修改后的电话(%s):'%student[2])
    #6.修改小列表中的数据
    student[0]=new_name
    student[1]=new_age
    student[2]=new_phone
    print('-----------修改数据完成------------')

def get_index(type):
    '''
    函数的功能描述:获取用户选择的学员序号
    :param type: 选择序号类型
    :return: 选择的序号
    '''
    index = input('请选择要%s的学员序号:'%type)
    # 转换为整数类型
    index = int(index)
    while index not in range(0, len(student_list)):
        index = input('选择的学员序号不存在,请重选:')
        index = int(index)
    #返回选择的序号
    return index
#删除学员信息
#1.根据序号删除 2.删除所有学员 3.根据学员姓名删除(有同名的,把同名的都删除)
def delete_student():
    if len(student_list)==0:
        print('没有学员信息,无法执行删除操作!')
        return
    print('1.根据学员序号删除')
    print('2.删除所有学员')
    print('3.根据姓名删除学员')
    num = int(input('请输入您的选择:'))
    # 判断选择的选项是否在范围内
    while num not in range(1, 4):
        #获取输入的内容 并转换为整数类型
        num = int(input('没有改选项,请重选:'))
    #判断选择选项
    if num==1:
        # 1.展示所有学员信息
        query_student()
        # 2.选择删除的序号
        index = get_index('删除')
        rs= input('确定要删除序号为(%s)的学员信息?y(是的)/n(不是):'%index)
        if rs == 'y':
            # 根据索引删除列表中的数据
            del student_list[index]
            #student_list.pop(index)
    elif num==2:
        # student_list.clear()
        rs = input('确定要删除全部成员?y(是的)/n(不是):')
        if rs == 'y':
            # 删除列表中全部数据
            student_list.clear()
        else:
            print('删除数据操作已取消!')
    else:
        name=input('请输入要删除的学员姓名:')
        while 1:
            a=False
            for student in student_list:

                if student[0]==name:
                    #判断该学员的序号,根据序号删除
                    # index=student_list.index(0,len(student_list)+1)
                    # del student_list[index]
                    student_list.remove(student)
                    print('删除该学员成功!!!!!!!')
                    a=True
            if a==False:
                name=input('您要删除的学生姓名不存在,请重输:')
            else:
                break


#保存数据
def save_data():
    file_handle=open('student_v2.txt',mode='w')
    #写入数据
    for student in student_list:
        #把列表中的数据用 空格分开 并拼接为一个字符串
        s=' '.join(student)
        #写入
        file_handle.write(s)
        file_handle.write('\n')
    file_handle.close()

import os
#读取数据
def read_data():
    #1.判断文件是否存在
    rs = os.path.exists('student_v2.txt')
    if rs == True:
        #2.打开文件
        file_handle = open('student_v2.txt', mode='r')
        #3.读取所有行
        contents=file_handle.readlines()
        for msg in contents:
            #去除 \n
            msg=msg.strip('\n')
            #使用 空格 分割 字符串,得到列表
            student=msg.split(' ')
            #将小列表添加到大列表
            student_list.append(student)
        file_handle.close()




#声明一个大列表,存放所有学员信息
student_list=[]
#读取本地数据
read_data()
#2.while循环
while True:
    print('**************学员管理系统v2.0************')
    print('************出品人:智游集团**********')
    print('1.添加学员')
    print('2.查询学员')
    print('3.修改学员')
    print('4.删除学员')
    print('0.退出程序')
    # 选择操作
    num = input('请输入您的选择:')
    #转换为整数
    num = int(num)
    # 判断选择的选项是否在范围内
    while num not in range(0, 5):
        #重新选择
        num = input('没有改选项,请重选:')
        #把字符串类型转换整数类型
        num = int(num)
    #根据选择的选项执行对应的操作
    if num==1:
        #调用添加学员的函数
        add_student()
        save_data()
    elif num==2:
        #调用查询学员的函数
        query_student()
    elif num==3:
        #调用修改学员的函数
        update_student()
        save_data()
    elif num==4:
        #调用删除学员的函数
        delete_student()
        save_data()
    else:
        print('-----------程序运行结束-------------')
        break



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值