当前位置:   article > 正文

python项目:学生管理系统(文件链接版)

python项目:学生管理系统(文件链接版)

一、程序功能(Function)

1、功能概述

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

2、思维导图

  • 百度脑图
    https://naotu.baidu.com/
    创建自己的思维导图,整理思绪,更有利于创建项目。
    在这里插入图片描述

二、学生实体(Entity)

1、思维导图

请添加图片描述

2、关系模式

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

3、学生表

  • 行——记录——元组
  • 列——字段——属性
    请添加图片描述
  • 先将学生信息保存到文本文件里,用空格来隔开每个字段。
    在这里插入图片描述
2021001 李晓红 女 19 2021级软件4班 软件技术 人工智能与大数据学院 15945456780
2021002 王晓刚 男 18 2021级软件4班 软件技术 人工智能与大数据学院 13890904567
2021003 唐雨涵 女 19 2021级软件4班 软件技术 人工智能与大数据学院 18878789023
2021101 张三丰 男 18 2021级大数据1班 大数据技术 人工智能与大数据学院 15945456780
2021102 肖雨林 男 18 2021级大数据1班 大数据技术 人工智能与大数据学院 18890904560
2021103 郑小翠 女 19 2021级大数据1班 大数据技术 人工智能与大数据学院 15890904567

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4、操作问题

  • 这里在保存文件的时候需要将编码改为ANSI,不然将会出现错误。
    请添加图片描述

三、构造系统框架

1、创建主程序

请添加图片描述

  • 效果图
    请添加图片描述
  • 代码
# 主程序
while True:
    print('用户登录')
    print('==========')
    print('1.登录')
    print('2.退出')
    print('==========')
    mc1 = int(input('输入菜单号: '))
    if mc1 == 1:
        print('成功登入!')
    elif mc1 == 2:
        print('\n谢谢使用本程序\n')
        break
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2、建立主菜单

  • 运用def定义函数定义学生管理系统主菜单,并调用。运行程序,查看结果。
    请添加图片描述

3、建立二级菜单

  • 运用def定义函数创建学生管理系统二级菜单并调用。 请添加图片描述

  • 运行程序,查看结果
    请添加图片描述

4、利用Python将程序链接到学生信息文件

(1)打开、关闭文件,并打印内容

  • 通过open()函数打开s_list.txt学生信息文件,并进行打印。
  • f.close()打印学生信息后将文件关闭
    请添加图片描述
  • 运行程序,查看结果。
    请添加图片描述
  • 输出数据看似排列整齐,但当列宽改变时,数据位置也会跟着改变。

(2)将(1)运用到系统中

  • 利用def定义函数,将(1)中的内容定义到学生管理系统中,便于随时调用。
  • 将(1)中函数定义为get_all_students()函数,方便之后调用。
  • return()函数返回所有学生信息,即其上一组函数所得到的结果。
    请添加图片描述

四、对学生管理系统中的数据进行操作

1、增加学生记录

  • 定义add_student()函数,并调用。
    请添加图片描述
  • 运行查看结果,并录入新的信息。
    请添加图片描述

2、查询学生记录

(1)查询全部学生记录

  • 进行测试
    请添加图片描述
  • 运行程序查看结果
    请添加图片描述
  • 测试成功!将利用id查询学生信息的代码利用def定义,并应用到学生管理系统中。
    在这里插入图片描述
  • 定义disaplay_all_students()函数

在这里插入图片描述

  • 调用disaplay_all_students()函数
  • 运行程序,查看结果
    在这里插入图片描述
  • 测试成功。

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

  • 进行测试
    请添加图片描述
  • 运行程序,查看结果
    请添加图片描述
  • 发现添加记录成功了!将利用id查询学生信息的代码利用def定义,并应用到学生管理系统中。
    请添加图片描述
  • 运行程序,查看结果。
    请添加图片描述
  • 程序运行成功!

(3)按姓名查询学生记录

  • 进行测试
    请添加图片描述
  • 运行程序,查看结果
    请添加图片描述
  • 测试成功!
  • 运用到学生管理系统中。

3、修改学生信息

  • 进行测试
    请添加图片描述
  • 运行程序,查看结果
    请添加图片描述
  • 测试成功,进行下一步,将该段程序定义为学生管理系统中的modify_student()函数。
    请添加图片描述

4、删除学生信息

  • 进行测试
    请添加图片描述
  • 运行程序,查看结果
    请添加图片描述
  • 测试成功
  • 定义函数,放入学生管理系统中

请添加图片描述

  • 学生管理系统成功完成。
  • 现在还是一个简陋的一个程序,还有许多需要改进的地方,需要慢慢改进,如果有好的建议,评论区见,谢谢!

五、完整代码


def get_all_students():
    students = []
    f = open('s_list.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_students()
    id = input('学号: ')
    name = input('姓名: ')
    sex = input('性别: ')
    age = input('年龄: ')
    grade_class = input('班级: ')
    major = input('专业: ')
    college = input('学院: ')
    phone_number = input('电话号码: ')

    students.append([id, name, sex, age, grade_class, major, college, phone_number])

    f = open('s_list.txt', 'w')
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()
    print('学生记录添加成功!')
    
def disaplay_all_students():  # 查询所有学生信息
    students = get_all_students()
    for i in range(len(students)):
        for j in  range(len(students[i])):
            print(students[i][j], end=' ')
        print()
    
    
def id_disaplay_student():  # 以学号查询学生信息
    id = input('学号: ')
    found = False
    students = get_all_students()
    for i in range(len(students)):
        if (students[i][0] == id):
            found =True
            for j in range(len(students[i])):
                print(students[i][j], end=' ')
            break
    if not found:
        print(f'学生信息中没有学号为{id}的学生!')

def name_disaply_student():   # 以姓名查询学生信息
    name = input('姓名: ')
    students = get_all_students()
    found = False
    for i in range(len(students)):
        if (students[i][1] == name):
            found = True
            for j in range(len(students[i])):
                print(students[i][j], end=' ')
            break
    if not found:
        print(f'学生信息中没有姓名为{name}的学生!')

def query_student():  # 查询学生记录
    while True:
        print('\n查询学生记录\n')
        print('=================')
        print('1.按学号查询学生记录')
        print('2.按姓名查询学生记录')
        print('3.查询全部学生记录')
        print('4.返回上级菜单')
        print('=================')
        mc3 = int(input('输入菜单号:'))
        if mc3 == 1:
            id_disaplay_student()
        elif mc3 == 2:
            name_disaply_student()
        elif mc3 == 3:
            disaplay_all_students()
        else:
            break
        
def modify_student():  # 修改学生信息
    students = get_all_students()
    id = input('需要修改信息的学生的学号: ')
    new_name = input('姓名: ')
    new_sex = input('性别: ')
    new_age = input('年龄: ')
    new_grade_class = input('班级: ')
    new_major = input('专业: ')
    new_college = input('学院: ')
    new_phone_number = input('电话号码: ')
    
    found = False
    for i in range(len(students)):
        if (students[i][0] == id):
            found = True
            students[i][1] = new_name
            students[i][2] = new_sex
            students[i][3] = new_age
            students[i][4] = new_grade_class
            students[i][5] = new_major
            students[i][6] = new_college
            students[i][7] = new_phone_number
            print('修改成功!')
            for j in range(len(students[i])):
                print(students[i][j], end=' ')
            break
    if not found:
        print(f'学生信息中没有学号为{id}的学生!')
    
    f = open('s_list.txt', 'w')
    for i in range(len(students)):
        student = ' '.join(students[i]) + '\n'
        f.write(student)
    f.close()

def delete_student():
    students = get_all_students()
    id = input('输入要删除信息的学生的学号:')
    found = False
    for i in range(len(students)):
        if (students[i][0] == id):
            found = True
            break
    if not found:
        print(f'学生信息中没有学号为{id}的学生!')
    else:
        del students[i]
        print(f'学号为{id}的信息已成功删除!')
    f = open('s_list.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 == 'zl' and password == '202111':
        while True:
            print('\n学生信息管理\n')
            print('===========')
            print('1. 添加学生记录')
            print('2. 查询学生记录')
            print('3. 修改学生记录')
            print('4. 删除学生记录')
            print('5. 返回上级菜单')
            print('===========')
            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('==========')
    print('1.登录')
    print('2.退出')
    print('==========')
    mc1 = int(input('输入菜单号: '))
    if mc1 == 1:
        login()
    elif mc1 == 2:
        print('\n谢谢使用本程序\n')
        break
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178

六、总结

1、关于该系统现存在的问题

  • 1.关于登录界面,当输入字符时会报错,这个问题可以将代码改为:
while True:
    print('用户登录')
    print('==========')
    print('1.登录')
    print('2.退出')
    print('==========')
    mc1 = input('输入菜单号: ')
    if mc1 == str(1):
        login()
    elif mc1 == str(2):
        print('\n谢谢使用本程序\n')
        break
    elif mc1 != 1 or mc1 != 2:
        print('请输入正确的菜单号!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 2、修改学生记录还可以按照其他字段的信息修改,也可以单独修改一个字段的信息。
    ……
  • 该系统现在还是一个简陋的程序,还有许多需要改进的地方,需要慢慢改进,如果有好的建议,评论区见,谢谢!

2、学习总结

  • 书写程序时需要有一个好的思路,这样有利于对整个系统结构结构框架进行构建。
  • 在写程序时,为防止出错找不到原因,可以先打开另一个页面,进行代码测试,书写正确后在放入主程序,这样可以高效避免错误发生。
  • 书写程序需要有一个清晰的头脑,所以一定要注意休息。
  • 学习python不是一天两天的事,要懂得《劝学》中的“锲而舍之,朽木不折;锲而不舍,金石可镂”
  • 注意:Road in the foot!!!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/371281
推荐阅读
相关标签
  

闽ICP备14008679号