python学生信息管理系统

学生信息管理系统

一、程序功能

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

2.思维导图

python学生信息管理系统

二、学生实体

1.思维导图

python学生信息管理系统

2.关系模式

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

3.学生文件

先将学生信息保存到文本文件里,用空格来隔开每个字段
python学生信息管理系统

三、读取学生文件

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()

运行程,序查看结果
python学生信息管理系统

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

首先产看学生文件位置
python学生信息管理系统
创建“读取学生文件,保存到元素的列表里.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()

运行程序,查看结果
python学生信息管理系统

3.学生操作遇到问题

python学生信息管理系统
将文件的编码改为上图所示,就不会出现文件操作问题。读取文件就不会出现报错现象。要读取文件记得将创建的程序与文件放在同一个文件夹内。

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

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()

运行程序,查看结果
python学生信息管理系统

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))

运行程序,查看结果
python学生信息管理系统

(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))

运行程序,查看结果
python学生信息管理系统

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))

运行程序,查看结果
python学生信息管理系统

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()

运行程序,查看结果
python学生信息管理系统

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

编写“将学生元组的列表写入文件.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('学生元组的列表写入文件成功!')

运行程序,查看结果
python学生信息管理系统
然后我们刷新一下学生文件有没有写入成功。
python学生信息管理系统
成功写入!

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

构建完整的多级菜单系统

编写程序 - 学生信息管理.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 | 基础语法


下一篇:安卓开发:经期助手App