基于python的学员管理系统本地存储版

这是一个使用Python编写的本地学员管理系统,采用大列表嵌套小列表的方式存储学员信息,并通过读写文件进行数据持久化。系统提供了添加、修改、查询和删除学员的功能。
    # 晚上把学员管理系统升级到2.0版本
    # 数据存储结构如下:
'''
    # 大列表中嵌套小列表,小列表中存储一个学员的完整信息
    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 get_index():
#     index = input('请选择要修改的学员序号')
#     index = int(index)
#     while index not in range(0,len(student_list)):
#         index = input('选择学员序号不存在,请重选:')
#         index = int(index)
#     return index

import os

student_list = []

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


def read_data():
    # 判断文件是否存在,如果存在 在做打开文件的操作
    # 如果文件存在返回True  不存在 返回False
    rs = os.path.exists('student_2.txt')
    if rs == True:
        file_handle = open('student_2.txt', mode='r')
        contents = file_handle.readlines()
        for msg in contents:
            msg = msg.strip('\n')
            list_1 = msg.split(' ')
            student_list.append(list_1)
        file_handle.close()



def add():
    print('~~~~~~~~~~~~~~~~~~~~')
    name = input('请输入学员姓名:')
    age = input('请输入学员年龄:')
    sex = input('请输入学员性别:')
    phone = input('请输入学员电话:')
    print('~~~~~~~~~~~~~~~~~~~~')
    student_list.append([name,age,sex,phone])

    save_data()


def change():

    # 判断是否有学员信息 ,如果没有,直接结束函数执行
    if len(student_list) == 0:
        print('没有学员数据,无法修改')

        # 强制结束函数的执行
        return

    for x in range(0,len(student_list)):
        student111_list = student_list[x]
        name = student111_list[0]
        age = student111_list[1]
        sex = student111_list[2]
        phone = student111_list[3]
        print('%s. 姓名:%s, 年龄:%s, 性别:%s, 电话:%s'%(x,name,age,sex,phone))
    print('~~~~~~~~~~~~~~~~~~~~')
    index = input('请输入您要修改的学生的编号:')
    index = int(index)
    while index not in range(0,len(student_list)):
        print('~~~~~~~~~~~~~~~~~~~~')
        index = input('请输入正确的编号:')
        index = int(index)
    new_name = input('请输入您要修改学生的姓名:')
    new_age = input('请输入您要修改学生的年龄:')
    new_sex = input('请输入您要修改学生的性别:')
    new_phone = input('请输入您要修改学生的电话:')
    student_list[index] = [new_name, new_age, new_phone, new_sex]

    save_data()


def search():
    print('1.用姓名查询')
    print('2.用学号查询')
    print('3.查询全部学生')
    choose = input('请选择您的操作:')
    choose = int(choose)
    while choose not in range(1,4):
        choose = input('请选择正确的编号')
        choose = int(choose)

    if choose == 1:
        while True:
            search_name = input('请输入您要查询学生的姓名:')
            exist = False
            for x in range(0, len(student_list)):
                student111_list = student_list[x]
                name = student111_list[0]
                age = student111_list[1]
                sex = student111_list[2]
                phone = student111_list[3]
                if search_name == name:
                    exist = True
                    print('%s. 姓名:%s, 年龄:%s, 性别:%s, 电话:%s' % (x, name, age, sex, phone))
            if exist == False:
                print('姓名不存在,请输入正确的姓名')
            else:
                break


    elif choose == 2:
        search_num = input('请输入您要查询的学生的编号:')
        search_num = int(search_num)
        while search_num not in range(0,len(student_list)):
            search_num = input('请输入正确的编号')
            search_num = int(search_num)
        student111_list = student_list[search_num]
        name = student111_list[0]
        age = student111_list[1]
        sex = student111_list[2]
        phone = student111_list[3]
        print('%s. 姓名:%s, 年龄:%s, 性别:%s, 电话:%s'%(search_num,name,age,sex,phone))

    else:
        for x in range(0,len(student_list)):
            student111_list = student_list[x]
            name = student111_list[0]
            age = student111_list[1]
            sex = student111_list[2]
            phone = student111_list[3]
            print('%s. 姓名:%s, 年龄:%s, 性别:%s, 电话:%s'%(x,name,age,sex,phone))


def delete():
    print('~~~~~~~~~~~~~~~~~~~~')
    print('1.根据学员学号删除')
    print('2.根据学员姓名删除')
    print('3.删除所有学员')
    search_num = input('请输入您的操作:')
    search_num = int(search_num)
    while search_num not in range(1, 4):
        search_num = input('请输入正确的编号')
        search_num = int(search_num)

    if search_num == 1:
        # 判断是否有学员信息 ,如果没有,直接结束函数执行
        if len(student_list) == 0:
            print('没有学员数据,无法修改')

            # 强制结束函数的执行
            return
        index = input('请输入您要删除学生的编号:')
        index = int(index)
        while index not in range(0,len(student_list)):
            print('~~~~~~~~~~~~~~~~~~~~')
            index = input('请输入正确的学生编号')
            index = int(index)
        del student_list[index]

        save_data()


    if search_num == 2:
        del_name = input('请输入您要删除学生的姓名:')
        exist = False
        for x in range(0, len(student_list)):
            student111_list = student_list[x]
            name = student111_list[0]
            if del_name == name:
                exist = True
                del student_list[x]
                print('删除成功')
        if exist == False:
            print('~~~~~~~~~~~~~~~~~~~')
            print('姓名不存在,请重新删除')

        save_data()

    if search_num == 3:
        rs = input('确认删除所有信息?Y(确定)/N(取消)')
        if rs == 'Y':
            student_list.clear()
        else:
            print('删除数据操作已取消')

        save_data()


read_data()


while True:
    print('~~~~~~~~~~~~~~~~~~~~')
    print('1.添加学员')
    print('2.修改学员')
    print('3.查询学员')
    print('4.删除学员')
    print('0.退出程序')
    print('~~~~~~~~~~~~~~~~~~~~')
    num = input('请选择您的操作:')
    num = int(num)
    while num not in range(0,5):
        num = input('请输入正确的选项:')
        num = int(num)
    if num == 1:
        add()
    elif num == 2:
        change()
    elif num == 3:
        search()
    elif num == 4:
        delete()
    else:
        break


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值