python学生管理系统2.0版本

import os


def save():
    """
    保存数据到本地文件
    :return: None
    """
    # 1.打开文件
    filehandle = open('1.txt', 'w')
    # 遍历每一个学员姓名,写入姓名后,再写入换行符\n
    for x in range(0, len(students)):
        stu = students[x]
        name = stu[0]
        age = stu[1]
        sex = stu[2]
        phone = stu[3]
        filehandle.write('姓名:')
        filehandle.write(name)
        filehandle.write(',年龄:')
        filehandle.write(age)
        filehandle.write(',性别:')
        filehandle.write(sex)
        filehandle.write(',手机号:')
        filehandle.write(phone)
        filehandle.write('\n')
    # 3.关闭文件
    filehandle.close()


def read():
    """
    读取本地文件数据
    :return: None
    """

    # 1.打开文件
    filehandle = open('1.txt', 'r')
    # 2.读取数据
    result = filehandle.readlines()
    # 3.去除姓名中的\n,并且将去除后\n后的姓名存入students列表中
    for name in result:
        # 去除 \n
        name = name.strip('\n')
        # 去除\n的数据存储students大列表中
        students.append(name)
    # 关闭文件
    filehandle.close()
# 建一个学员信息总列表
students = []
stud = []
# 添加学员信息功能
def add_stu():
    """
    (函数功能描述)添加学员信息
    :return:None
    """
    # 添加学员名字 注意字符串类型 和数字类型
    # 循环添加
    while True:
        name = input('请输入添加的学员姓名:')
        age = input('请输入学员的年龄:')
        sex = input('请输入学员的性别:')
        while True:
            if sex != '男' and sex != '女':
                sex = input('请正确输入学员的性别(男/女):')
            else:
                break
        phone = input('请输入学员的手机号:')
        # 建一个新列表集合所有信息
        stud = [name, age, sex, phone]
        # 将学员信息列表添加到总列表中
        students.append(stud)
        # 完成添加 输出:添加成功!
        print('添加成功!')
        is_next = input('是否继续添加? y/n')
        if is_next != 'y':
            break
# 修改学员信息功能
def modify_stu():
    """
    修改学员信息
    :return: None
    """
    if len(students) == 0:
        print('*      没有学员信息,请稍后修改    *')
        # return 强制结束函数执行,return之后的代码不会再执行
        return
    # 输出所有的学员及学员索引(从1开始输出)
    for x in range(0, len(students)):
        stu = students[x]
        name = stu[0]
        age = stu[1]
        sex = stu[2]
        phone = stu[3]
        print('*学号:%s 学员姓名:%s 学员年龄:%s 学员性别:%s 学员电话:%s *' % (x+1, name, age, sex, phone))
    # 选择要修改的学员索引,判断索引是否在范围
    y = int(input('请输入要修改的学员学号:'))
    if y > len(students) or y < 1:
        y = int(input('学号不存在,请重新输入:'))
    else:
        # 修改学员信息
        stu = students[y-1]
        name = stu[0]
        age = stu[1]
        sex = stu[2]
        phone = stu[3]
        print('要修改的学员信息如下:')
        a = input('学员修改后的姓名:%s'%name)
        b = int(input('学员修改后的年龄:%s'%age))
        c = input('学员修改后的性别:%s'%sex)
        d = int(input('学员修改后的手机号:%s'%phone))
        stu1 =[a, b, c, d]
        students[y-1] = stu1
        print('修改成功!')
# 删除学员信息功能
def del_stu():
    """
    删除学员信息
    :return: None
    """
    if len(students) == 0:
        print('*      没有学员信息,请稍后删除    *')
        # return 强制结束函数执行,return之后的代码不会再执行
        return
    for x in range(0, len(students)):
        stu = students[x]
        name = stu[0]
        age = stu[1]
        sex = stu[2]
        phone = stu[3]
        print('*学号:%s 学员姓名:%s 学员年龄:%s 学员性别:%s 学员电话:%s *' % (x+1, name, age, sex, phone))
        print('删除单个学员请按1,删除全部学员请按2')
        all = int(input('您的选择是:'))
        if all < 1 or all > 2:
            all = int(input('请重新选择:'))
        elif all == 1:
            # 选择要删除的学员索引,判断索引是否在范围
            z = int(input('请输入要修改的学员学号:'))
            if z > len(students) or z < 1:
                z = int(input('学号不存在,请重新输入:'))
            else:
                is_del = input('确认要删除(%s) ? y/n:' % students[z - 1])
                if is_del == 'y':
                    z = z - 1
                    del students[z]
                    print('删除成功!')
                    break
        elif all == 2:
            # 删除全部学员 list.clear():清空列表
            # pop()如果不指定索引,一直移除列表中最后一个元素
            #while len(students):
            #   students.pop()
            select = input('是否要删除全部学员? y/n')
            if select == 'y':
                students.clear()
                print('删除成功!')





# 查询学员信息功能
def query():
    """
    查询学员信息功能
    :return: None
    """
    #用索引的方法查询学员信息
    if len(students) == 0:
        print('*      没有学员信息,请稍后再查    *')
        # return 强制结束函数执行,return之后的代码不会再执行
        return
    for x in range(0, len(students)):
        stu = students[x]
        name = stu[0]
        age = stu[1]
        sex = stu[2]
        phone = stu[3]
        print('*学号:%s 学员姓名:%s 学员年龄:%s 学员性别:%s 学员电话:%s *' % (x+1, name, age, sex, phone))
def query_of_keyword():
    """
    根据姓名关键词查找学员
    :return: None
    """
    if len(students) == 0:
        print('*      没有学员信息,请稍后再查    *')
        # return 强制结束函数执行,return之后的代码不会再执行
        return
    # 1.输入搜索的关键词
    kw = input('*   请输入要搜索的关键词:  *')
    print('*     查找结果如下:     *')
    #统计查找到的结果条数
    count = 0
    # 2.遍历大列表
    for x in range(0, len(students)):
        # stu就是[姓名,年龄,性别,电话]小列表
        stu = students[x]
        #判断stu小列表中的姓名
        if kw in stu [0]:
            # 让计数+1
            count += 1
            print('*   学号:%s 姓名:%s 年龄:%s 性别:%s 手机号:%s'(x+1,stu[0],stu[1],stu[2],stu[3]))
    #如果count在循环结束之后依然是0,说明没有找到符合条件的结果
    if count == 0:
        print('*        无结果        *')
    else:
        print('*      共搜索到%s条数据      *'&count)
def query_stu():
    """
    查询学员功能函数
    :return: None
    """
    print('*    a.查询所有学员')
    print('*    b.输入关键词查询')
    select = input('请选择查询方式:')
    while select != 'a' and select !='b':
        select = input('*  选项有误,请重选:')
    if select == 'a':
        query()
        read()
    else:
        query_of_keyword()



while True:
    print('******学生管理系统2.0版本******')
    print('*          1.添加学员         *')
    print('*          2.修改学员         *')
    print('*          3.删除学员         *')
    print('*          4.查询学员         *')
    print('*          0.退出程序         *')
    select = int(input('           您的选择是:         '))
    while select < 0 or select > 4:
        select = float(input('      选项有误,请重新选择:     '))
    print('*******************************')
    if select == 1:
        add_stu()
        save()
    if select == 2:
        modify_stu()
        save()
    if select == 3:
        del_stu()
        save()
    if select == 4:
        query_stu()
    if select == 0:
        print('欢迎下次使用!')
        break
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值