ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python学生信息管理系统

2021-12-29 22:02:31  阅读:176  来源: 互联网

标签:python 学生 students student print 信息管理系统 line 元组


学生信息管理系统

一、程序功能

1.创建一个可进可退的多级学生信息管理系统

2.思维导图

在这里插入图片描述

二、学生实体

1.思维导图

在这里插入图片描述

2.关系模式

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

3.学生文件

先将学生信息保存到文本文件里,用空格来隔开每个字段
在这里插入图片描述

三、读取学生文件

1.用元组的列表保存多个学生信息

创建“用元组的列表保存多个学生信息.py”

'''
用元组列表保存多个学生信息
'''
# 定义6个学生元组
student1 = ('2021001', '李晓红', '女', '19', '软件技术', '人工智能与大数据学院', '15945456780')
student2 = ('2021002', '王晓刚', '男', '18', '软件技术', '人工智能与大数据学院', '13890904567')
student3 = ('2021003', '唐雨涵', '女', '19', '软件技术', '人工智能与大数据学院', '18878789023')
student4 = ('2021101', '张三丰', '男', '18', '大数据技术', '人工智能与大数据学院', '15945456780')
student5 = ('2021102', '肖雨林', '男', '18', '大数据技术', '人工智能与大数据学院', '18890904560')
student6 = ('2021103', '郑小翠', '女', '19', '大数据技术', '人工智能与大数据学院', '15890904567')
# 创建学生元组构建的列表
students = []
students.append(student1)
students.append(student2)
students.append(student3)
students.append(student4)
students.append(student5)
students.append(student6)

# 遍历学生列表
for student in students:
    for i in range(len(student)):
        print(student[i],end=' ')
    print()

运行程,序查看结果
在这里插入图片描述

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

首先产看学生文件位置
在这里插入图片描述
创建“读取学生文件,保存到元素的列表里.py”

'''
读取学生文件,保存到元组列表
'''

# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 格式化输出学生列表
for student in students:
     for i in range(len(student)):
          print(student[i],end=' ')
     print()

运行程序,查看结果
在这里插入图片描述

3.学生操作遇到问题

在这里插入图片描述
将文件的编码改为上图所示,就不会出现文件操作问题。读取文件就不会出现报错现象。要读取文件记得将创建的程序与文件放在同一个文件夹内。

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

1.增加学生记录

'''
添加学生元组到列表
'''
# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 添加一个学生元组
new_student = ('2121004', '吴文燕', '女', '18', '2021级软件4班', '软件技术', '人工智能与大数据学院', '12345678901')
students.append(new_student)

# 输出更新之后的学生元组列表
for student in students:
     for i in range(len(student)):
          print(student[i], end=' ')
     print()

运行程序,查看结果
在这里插入图片描述

2、查询学生记录

(1)按学号查询学生记录

'''
按学号查询学生记录
'''
# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 用户从键盘输入学号
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))

运行程序,查看结果
在这里插入图片描述

(2).按姓名查询

'''
按姓名查询
'''
# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 用户从键盘输入学号
name = input('请输入查找学生的姓名:')
found = False
for student in students:
    if (student[1] == name ):
        found = True
        for i in range(len(student)):
            print(student[i],end= ' ')

if not found:
    print('温馨提示:查询的学生不存在!'.format(name))

运行程序,查看结果
在这里插入图片描述

3.修改学生记录

'''
修改学生记录
'''
# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 输入待改学生的学号
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('恭喜:学生记录修改成功!')
        for i in range(len(student)):
            print(student[i], end=' ')
        break

if not found:
    print('学号为{}的学生没找到!'.format(id))

运行程序,查看结果
在这里插入图片描述

4.删除学生记录

'''
删除学生记录
'''
# 创建空学生列表
students = []

# 以只读方式打开文件
f = open('学生.txt')

# 以行的方式遍历文件对象
for line in f:
     # 去掉每一行的换行符
     line = line.replace('\n', '')
     # 以空格作为分隔符拆分每一行
     student = tuple(line.split(' '))
     #将学生元组添加到学生列表
     students.append(student)

# 输入待删学生的学号
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))
else:
    for student in students:
        for i in range(len(student)):
            print(student[i], end=' ')
        print()

运行程序,查看结果
在这里插入图片描述

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

编写“将学生元组的列表写入文件.py”

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

# 定义6个学生元组
student1 = ('2021001', '李晓红', '女', '90', '软件技术', '人工智能与大数据学院', '15945456780')
student2 = ('2021002', '王晓刚', '男', '18', '软件技术', '人工智能与大数据学院', '13890904567')
student3 = ('2021003', '唐雨涵', '女', '19', '软件技术', '人工智能与大数据学院', '18878789023')
student4 = ('2021101', '张三丰', '男', '18', '大数据技术', '人工智能与大数据学院', '15945456780')
student5 = ('2021102', '肖雨林', '男', '18', '大数据技术', '人工智能与大数据学院', '18890904560')
student6 = ('2021103', '郑小翠', '女', '19', '大数据技术', '人工智能与大数据学院', '15890904567')
# 创建学生元组构建的列表
students = []
students.append(student1)
students.append(student2)
students.append(student3)
students.append(student4)
students.append(student5)
students.append(student6)
# 输出学生列表
print(students)


# 创建可写的文件
f = open('学生.txt', 'w')
for student in students:
    student_line = ' '.join(student) + '\n'
    f.write(student_line)
# 关闭文件
f.close()

print('学生元组的列表写入文件成功!')

运行程序,查看结果
在这里插入图片描述
然后我们刷新一下学生文件有没有写入成功。
在这里插入图片描述
成功写入!

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

构建完整的多级菜单系统

编写程序 - 学生信息管理.py
把增、删、改、查等所有功能全部完善,并完整运行。

def add_student():
    students = []

    f = open('学生.txt')
    for line in f:
        line = line.replace('\n', '')
        student = tuple(line.split(' '))
        students.append(student)

    id = input('学号:')
    name = input('姓名:')
    gender = input('性别:')
    age = input('年龄:')
    grade = input('班级:')
    major = input('专业:')
    department = input('系部:')
    telephone = input('电话:')

    students.append([id, name, gender, age, grade, 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 query_student():
    while True:
        print('查询学生记录')
        print('=' * 12)
        print('1.按学号查询学生记录')
        print('2.按姓名查询学生记录')
        print('3.查询全部学生记录')
        print('4.返回上级菜单')
        print('=' * 12)
        mc3 = int(input('输入菜单号:'))
        if mc3 == 1:
            students = []

            f = open('学生.txt')
            for line in f:
                line = line.replace('\n', '')
                student = tuple(line.split(' '))
                students.append(student)

            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))
        elif mc3 == 2:
            students = []

            f = open('学生.txt')
            for line in f:
                line = line.replace('\n', '')
                student = tuple(line.split(' '))
                students.append(student)

            name = input('请输入查找学生的姓名:')
            found = False
            for student in students:
                if (student[1] == name):
                    found = True
                    for i in range(len(student)):
                        print(student[i], end=' ')

            if not found:
                print('温馨提示:查询的学生不存在!'.format(name))
        elif mc3 == 3:
            students = []

            f = open('学生.txt')
            for line in f:
                line = line.replace('\n', '')
                student = tuple(line.split(' '))
                students.append(student)

            for student in students:
                for i in range(len(student)):
                    print(student[i], end=' ')
                print()
        else:
            break


def modify_student():
    students = []

    f = open('学生.txt')
    for line in f:
        line = line.replace('\n', '')
        student = tuple(line.split(' '))
        students.append(student)

    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('恭喜:学生记录修改成功!')
            for i in range(len(student)):
                print(student[i], end=' ')
            break

    if not found:
        print('学号为{}的学生没找到!'.format(id))

    f = open('学生.txt', 'w')
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()

def delete_student():
    students = []

    f = open('学生.txt')

    for line in f:
        line = line.replace('\n', '')
        student = tuple(line.split(' '))
        students.append(student)

    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))
    else:
        for student in students:
            for i in range(len(student)):
                print(student[i], end=' ')
            print()

    f = open('学生.txt', 'w')
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()


def login():
    username = input('输入用户名:')
    password = input('输入密码:')
    if username == 'XT' and password == '2021':
        while True:
            print('\n学生管理系统')
            print('=' * 13)
            print('1.增加学生记录')
            print('2.查询学生记录')
            print('3.修改学生记录')
            print('4.删除学生记录')
            print('5.返回上级菜单')
            print('=' * 13)
            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('=' * 8)
    print('1.登录')
    print('2.退出')
    print('=' * 8)
    mc1 = int(input('输入菜单号:'))
    if mc1 == 1:
        login()
    elif mc1 == 2:
        print('\n谢谢使用本程序!\n')
        break

七、总结

对于这个学生管理系统还是有些难度的,而且写的时候你要仔细,不然很容易出错。按照自己擅长的方式写,方便后续的改错。
python说难不难说简单不简单,主要是大家1要坚持去做才行。

标签:python,学生,students,student,print,信息管理系统,line,元组
来源: https://blog.csdn.net/Python_XTyyds/article/details/122222621

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有