作业:学生信息管理(TXT)

一、程序功能

1、概述

利用Python完成一个学生信息的增删改查的程序,主要涉及知识点:程序控制结构(实现可进可退的多级菜单)、文件读写操作(学生信息要保存到磁盘上的文件里)、利用函数实现功能模块化。

2、思维导图

在这里插入图片描述

二、学生实体

1、思维导图

在这里插入图片描述

2、关系模式

  • 学生(学号, 姓名, 性别, 年龄, 班级, 专业, 系部, 电话)

3、学生表

  • 行——记录——元祖
  • 列——字段——属性
学号姓名性别年龄班级专业系部电话
2021001肖小涵192021级软件技术4班软件技术人工智能与大数据学院12894763846
2021002李晓红182021级软件技术4班软件技术人工智能与大数据学院18273649304
2021003唐丽琳192021级软件技术4班软件技术人工智能与大数据学院13762738377
2021004肖浩宇202021级大数据1班软件技术人工智能与大数据学院18987876361
2021005王晓刚182021级大数据1班软件技术人工智能与大数据学院13678363763
2021006张三丰202021级大数据1班软件技术人工智能与大数据学院15887367678
  • 先将学生信息保存到文本文件里,用空格来隔开每个字段。
    在这里插入图片描述

  • 如果用的电脑自带的记事本,则需要将编码改为ANSI,具体步骤如下:

  • 1)将保存好的文本文件另存为
    在这里插入图片描述

  • 2)将编码更改为ANSI
    在这里插入图片描述

三、读取学生文件

  • 文件结构是由若干行若干列构成,一行一行地读取,每一行读取出来的字符串,通过空格拆分成一个元组,所有行读取出来之后就自然构成元组的列表。

1、用元祖的列表保存多个学生信息

  • 创建

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

2、读取学生文件数据,保存到元组的列表里

  • 创建
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

  • 格式化输出students列表
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

四、对学生元组的列表进行增删改查操作

1、增加学生记录

  • 添加一个新的学生元组
学号姓名性别年龄班级专业系部电话
2021007杨潇202021级大数据1班大数据技术人工智能与大数据学院18273645767

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

2、查询学生记录

1)按学号查询学生记录

在这里插入图片描述

  • 运行结果
    在这里插入图片描述
2)按姓名查找学生记录

在这里插入图片描述

  • 运行结果
    在这里插入图片描述
  • 按其他的属性查找可以以此类推

3、修改学生记录

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

4、删除学生记录

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

五、将学生元组的列表写入文件

在这里插入图片描述

  • 运行结果
    在这里插入图片描述
  • 查看写入的文件
    在这里插入图片描述

六、构建学生信息管理多级菜单系统

1、构建多级菜单系统

在这里插入图片描述

  • 运行结果
    在这里插入图片描述

2、实现学生信息管理功能模块

1)编写查询全部学生记录功能

编写:

  • get_all_students()函数

  • display_all_students()函数
    在这里插入图片描述

  • 运行结果
    在这里插入图片描述

2)编写增加学生记录功能

编写

  • add_student()函数
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述
  • 查看记事本里的新纪录
    在这里插入图片描述
3)编写修改学生记录功能

编写

  • modify_student()函数
  • 修改学生的年龄和电话号码
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述
  • 如果学号不存在的情况
    在这里插入图片描述
4)编写删除学生记录功能

编写

  • delete_student()函数
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述
  • 查看记事本里的新纪录
    在这里插入图片描述
  • 删除成功
5)编写按学号查询学生记录功能

编写

  • display_id_student()函数
    在这里插入图片描述
  • 运行代码
    在这里插入图片描述
6)编写按姓名查询学生记录功能

编写

  • display_name_student()函数
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述

七、学生信息管理程序

  • 代码
# -*- coding: utf-8 -*-
"""
功能:学生信息管理
作者:小小榕
日期:2021年12月28日
"""

def get_all_student():
    students =[]
    f = open('学生.txt')
    for line in f:
        line = line.replace('\n', ' ')
        student = line.split(' ')
        students.append(student)
    f.close()
    return students


def add_student():
    students = get_all_student()
    
    id = input('学号:')
    name = input('姓名:')
    gender = input('性别:')
    age = input('年龄:')
    clas = input('班级:')
    major = input('专业:')
    department = input('系部:')
    telephone = input('电话:')
    
    students.append([id, name, gender, age, clas, major, department, telephone])
    
    f = open('学生.txt', 'w')
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()
    print('\n恭喜,学生记录添加成功!\n')


def display_all_student():
    students = get_all_student()
    for i in range(len(students)):
        for j in range(len(students[i])):
            print(students[i][j], end= ' ')
        print()


def display_id_student():
    students = get_all_student()
    f = open('学生.txt')
    id = input('请输入需要查询的学号:')
    found = False
    for student in students:
        if (student[0] == id):
            found = True
            for i in range(len(student)):
                print(student[i], end=' ')
            break
    
    if not found:
        print('学号为[{}]的学生没有找到!'.format(id))


def display_name_student():
    students = get_all_student()
    f = open('学生.txt')
    name = input('请输入待查学生姓名:')
    found = False
    for student in students:
        if (student[1] == name):
            found = True
            for i in range(len(student)):
                print(student[i], end=' ')
            break
    
    if not found:
        print('姓名为[{}]的学生没有找到!'.format(name))
        
        

def query_student():
    while True:
        print('查询学生记录')
        print('=' * 20)
        print('1.按学号查询学生记录')
        print('2.按姓名查询学生记录')
        print('3.查询全部学生记录')
        print('4.返回上一级菜单')
        print('=' * 20)
        mc3 = int(input('输入菜单号:'))
        if mc3 == 1:
            display_id_student()
        elif mc3 == 2:
           display_name_student()
        elif mc3 == 3:
            display_all_student()
        else:
            break

def modify_student():
    students = get_all_student()
    
    f = open('学生.txt','w')
    
    id = input('输入待改学生的学号:')
    found = False
    for student in students:
        if (student[0] == id):
            found = True
            student = list(student)
            new_age = input('输入新的年龄:')
            new_telephone = input('输入新的电话:')
            student[3] = new_age
            student[7] = new_telephone
            student = tuple(student)
            print('恭喜:学生记录修改成功!')
            break
    if not found:
        print('学号为[{}]的学生没找到!'.format(id))
        
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()

def delete_student():
    students = get_all_student()
    f = open('学生.txt', 'w')
    id = input('输入待删的学生学号:')
    found = False
    for student in students:
        if (student[0] == id):
            found = True
            students.remove(student)
            print('删除记录成功!')
            break
    if not found:
        print('学号为[{}]的学生没有找到!'.format(id))
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()





def login():
    username = input('输入用户名:')
    password = input('输入密码:')
    if username == 'xiaoxiaorong' and password == '202542':
        while True:
            print('学生信息管理')
            print('=' * 20)
            print('1.增加学生记录')
            print('2.查询学生记录')
            print('3.修改学生记录')
            print('4.删除学生记录')
            print('5.返回上级菜单')
            print('=' * 20)
            mc2 = int(input('输入菜单号:'))
            if mc2 == 1:
                add_student()
            elif mc2 == 2:
                query_student()
            elif mc2 == 3:
                modify_student()
            elif mc2 == 4:
                delete_student()
            else:
                break
    else:
        print('\n用户名或密码错误,请重新登录\n')

while True:
    print('用户登录')
    print('=' * 20)
    print('1.登录')
    print('2.退出')
    print('=' * 20)
    mc1 = int(input('输入菜单号:'))
    if mc1 == 1:
        login()
    elif mc1 == 2:
        print('\n谢谢使用本程序!\n')
        break
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值