Skip to content

学生信息管理系统(基础版)

需求

  1. 程序启动,显示信息管理系统欢迎界面,并显示功能菜单
  2. 用户用数字选择不同的功能
  3. 根据功能选择,执行不同的功能
  4. 需要记录学生的姓名、语文成绩、数学成绩、英语成绩 、总分
  5. 如果查询到指定的学生信息,用户可以选择修改或者删除信息
  6. 进入或退出时加载或保存数据

功能设计

  1. 主程序功能代码
    • 程序主循环
  2. 选择数据保存的格式以及方式
    • 列表与字典组合数据格式
  3. 所有功能
    • 将对学生信息的 新增查询修改删除 等功能

编写主循环

程序主循环可以保证程序不会运行一次之后就立马停止

  • 添加一个无限循环
py
while True:
    action = input("请选择操作功能:")

    # TODO 新增数据

    # TODO 显示全部数据

    # TODO 查询数据

    # TODO 修改数据

    # TODO 删除数据

pass

  • pass 就是一个空语句,不做任何事情,一般用做占位语句
  • 是为了保持程序结构的完整性

无限循环

  • 在开发软件时,如果 不希望程序执行后 立即退出
  • 可以在程序中增加一个 无限循环
  • 由用户来决定 退出程序的时机

while 中增加功能

py
while True:
    action = input("请选择操作功能:")

    # TODO 新增数据
    if action == '1':
        pass

    # TODO 显示全部数据
    elif action == '2':
        pass

    # TODO 查询数据
    elif action == '3':
        pass

    # TODO 删除数据
    elif action == '4':
        pass

    # TODO 修改数据
    elif action == '5':
        pass

    else:
        print("输入错误请重新输入")

欢迎界面

当进入系统之后,打印欢迎信息并提示用户进行操作

************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 删除学生信息
5. 修改学生信息

0. 退出系统
**************************************************

新增数据

功能分析

  1. 提示用户依次输入学生信息
  2. 将信息保存到一个字典
  3. 将字典添加到信息列表
  4. 提示信息添加完成

保存数据

很多个学员,每个学员的信息都是差不多的,用列表存储更加方便。

而每个学员信息,用字典存储,后续操作是根据指定键操作值更方便一些

定义列表变量存储学生列表

python
# 所有学生信息的列表
student_list = [] // [!code ++]
  1. 所有学生信息相关操作,都需要使用这个列表,所以应该定义在程序的顶部
  2. 程序刚运行时,没有数据,所以是空列表

实现添加数据方法

py
student_list = []

# 输入学生信息
name = input("请输入姓名:")
chinese = input("请输入语文成绩:")
math = input("请输入数学成绩:")
english = input("请输入英语成绩:")
# 加完之后的总分是数字
total = int(chinese) + int(math) + int(english)
# 与类型无关 只要实现效果就行

# 字典存储学生信息
stu = {
    "name": name,
    "chinese": chinese,
    "math": math,
    "english": english,
    "total": total
}
student_list.append(stu)
# 4. 提示添加成功信息
print("成功添加 %s 的信息" % stu['name'])

查询数据

显示所有信息

功能分析

  1. 提示用户要搜索的姓名
  2. 根据用户输入的姓名遍历列表
  3. 搜索到指定的学员后,再执行后续的操作

查询功能实现

py
student_list = [
    {'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195}
]

# 从列表里面取出学生信息
print("姓名\t\t语文\t\t数学\t\t英语\t\t总分")
str_format = "{}\t\t{}\t\t{}\t\t{}\t\t{}"
for stu in student_list:
    # 遍历字典的值
    # for i in stu.values():
    #     print(i, end="\t\t")
    # print()
    print(str_format.format(*stu.values()))
    # print(stu['name'], stu['chinese'], stu['math'], stu['english'], stu['total'], sep="\t\t")

删除数据

由于找到的字典记录已经在列表中保存

要删除学生记录,只需要把列表中对应的字典删除即可

py
student_list = [
    {'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},

]
name = input("请输入需要删除的学生姓名:")

for stu in student_list:
    if name == stu["name"]:
        # 实现删除功能
        # 删除的方式 remove pop  del student_list[0]
        # 指定内容删除
        # student_list.remove(stu)
        # name 的索引 index
        del student_list[student_list.index(stu)]
        # d = student_list.pop()
        # print("数据已经删除", d)
        break

else:
    print("此学生不存在,请重新查询")

print(student_list)

修改信息

由于找到的字典记录已经在列表中保存

要修改学员记录,只需要把列表中对应的字典中每一个键值对的数据修改即可

py
student_list = [
    {'name': '李四', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '王五', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
    {'name': '张三', 'chinese': '65', 'math': '65', 'english': '65', 'total': 195},
]

name = input("请输入需要修改的学生姓名:")

for stu in student_list:
    if name == stu["name"]:

        # 不输入内容 则不修改
        print("(输入为空则不修改)")
        name = input("请输入姓名:")
        if name:
            stu["name"] = name
        chinese = input("请输入语文成绩:")
        if chinese:
            stu["chinese"] = chinese
        math = input("请输入数学成绩:")
        if math:
            stu["math"] = math
        english = input("请输入英语成绩:")
        if english:
            stu["english"] = english
        stu['total'] = int(stu["chinese"]) + int(stu["math"]) + int(stu["english"])
        break

else:
    print("此学生不存在,请重新查询")

print(student_list)

完整内容

py
str_info = """**************************************************
欢迎使用【学生信息管理系统】V1.0
请选择你想要进行的操作
1. 新建学生信息
2. 显示全部信息
3. 查询学生信息
4. 修改学生信息
5. 删除学生信息

0. 退出系统
**************************************************"""

students = [{"name": "正心", "chinese": "65", "math": "65", "english": "65", "total": 195}]

while True:
    print(str_info)
    action = input('请选择你想要进行的操作:')
    if action == '1':
        print('1. 新建学生信息')
        name = input('请输入学生的姓名:')
        chinese = int(input('请输入学生的语文成绩:'))
        math = int(input('请输入学生的数学成绩:'))
        english = int(input('请输入学生的英语成绩:'))
        total = chinese + math + english
        stu = {"name": name, "chinese": chinese, "math": math, "english": english, "total": total}
        students.append(stu)

    elif action == '2':
        print('2. 显示全部信息')
        print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
        for stu in students:
            print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(stu['name'], stu['chinese'], stu['math'], stu['english'],
                                                    stu['total']))

    elif action == '3':
        print('3. 查询学生信息')
        name = input('请输入你想要查询的学生姓名:')

        for stu in students:
            if name == stu['name']:
                print('姓名\t\t语文\t\t数学\t\t英语\t\t总分')
                print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(stu['name'], stu['chinese'], stu['math'], stu['english'],
                                                        stu['total']))

                break
        else:
            print('该学生不存在,请检查名字是否输入正确')

    elif action == '4':
        print('4. 修改学生信息')
        name = input('请输入你想要修改的学生姓名:')
        for stu in students:
            if name == stu['name']:
                print('(如果输入为空,就使用原来的)')
                name = input('请重新输入学生的名字:')
                chinese = input('请重新输入学生的语文成绩:')
                math = input('请重新输入学生的数学成绩:')
                english = input('请输重新入学生的英语成绩:')
                total = chinese + math + english
                if name:
                    stu['name'] = name
                if chinese:
                    stu['chinese'] = int(chinese)
                if math:
                    stu['math'] = int(math)
                if english:
                    stu['english'] = int(english)
                stu['total'] = stu['chinese'] + stu['math'] + stu['english']
                break
        else:
            print('该学生不存在,请检查名字是否输入正确')

    elif action == '5':
        print('5. 删除学生信息')
        name = input('请输入你想要删除的学生姓名:')
        for stu in students:
            if name == stu['name']:
                students.remove(stu)
                break
        else:
            print('该学生不存在,请检查名字是否输入正确')

    elif action == '0':
        print('0. 退出系统')
    else:
        print('请输入正确的选择')