Python代码实现学生管理系统

news/2024/11/20 7:12:41/

Python代码实现学生管理系统

需求说明

实现一个命令行版本的学生管理系统

功能:

  • 新增学生

  • 显示学生

  • 查找学生

  • 删除学生

  • 存档到文件

创建入口函数

  • 使用一个全局列表 students 表示所有学生信息.

  • 使用 menu 函数和用户交互. 这是一个自定义函数.

  • 使用 insert , show , find , delete 这几个自定义函数完成增删查操作.

  • 使用 sys.exit 实现程序退出.

# 使用列表表示所有的学生
students = []
def main():"""程序的入口函数"""print('+--------------------------+')print('|     欢迎来带学生管理系统!   |')print('+--------------------------+')while True:choice = menu()if choice == 0:sys.exit()if choice == 1:insert()elif choice == 2:show()elif choice == 3:find()elif choice == 4:delete()else:print('您的输入有误! 请重新输入!')main()

实现菜单函数

def menu():"""显示程序菜单"""print(" 1. 新增学生信息")print(" 2. 显示所有同学信息")print(" 3. 根据名字查找学生信息")print(" 4. 删除学生信息")print(" 0. 退出程序")choice = input(" 请输入您的选择: ")return int(choice)

实现增删查操作

1. 新增学生

def insert():print("[新增学生] 开始!")studentId = input("请输入学生的学号: ")name = input("请输入学生的姓名: ")gender = input("请输入学生的性别: ")if gender not in ('男', '女'):print("性别不符合要求! 新增学生失败!")returnclassName = input("请输入学生的班级: ")# 使用一个字典表示学生信息student = {'studentId': studentId,'name': name,'gender': gender,'className': className}# 把字典添加到学生列表中global studentsstudents.append(student)print("[新增学生] 完毕!")

2. 显示学生

def show():print("[显示学生] 开始!")for s in students:print(f"
[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

3. 查找学生

def find():print("[查找学生] 开始!")name = input("请输入要查找的同学姓名: ")count = 0for s in students:if name == s['name']:print(f"
[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")count += 1print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

4. 删除学生

def delete():print("[删除学生] 开始!")studentId = input("请输入要删除的同学学号: ")count = 0for s in students:if studentId == s['studentId']:print(f"删除 {s['name']} 同学的信息!")students.remove(s)count += 1print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

加入存档读档

1. 约定存档格式

约定存档文件放到 d:/record.txt 文件中.

并且以行文本的方式来保存学生信息. 格式如下

学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
学号\t名字\t性别\t班级
  • c每个同学占一行.

  • 每个同学的信息之间使用 \t 制表符进行分隔.

2. 实现存档函数

def save():"""存档函数"""with open('d:/record.txt', 'w') as f:for s in students:f.write(f"
{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")print(f"[存档成功] 共存储了 {len(students)} 条记录!")

在 insert 和 delete 末尾, 调用 save 函数进行存档

# 执行存档
save()

3. 实现读档函数

def load():"""读档函数"""# 如果存档文件不存在, 则跳过读档环节if not os.path.exists('d:/record.txt'):return# 先清空全局变量里的数据global studentsstudents = []with open('d:/record.txt', 'r') as f:for line in f:# 去除末尾的换行符line = line.strip()tokens = line.split('\t')if len(tokens) < 4:print(f"文件格式有误! line={line}")continuestudent = {'studentId': tokens[0],'name': tokens[1],'gender': tokens[2],'className': tokens[3]}students.append(student)print(f"[读档成功] 共读取了 {len(students)} 条记录!")

在 main 函数开头的地方, 调用 load 加载存档

load()

打包成 exe 程序发布

当前虽然已经实现了一个管理系统, 但是 .py 的文件只能在安装了 Python 环境的机器上运行.

为了能够更好的部署到其他主机上, 可以借助 pyinstaller 来把 Python 程序打包成 exe 程序.

1.安装 pyinstaller

pip install pyinstaller

2. 打包程序

  • -F 表示打包成单个 exe (不带动态库)
pyinstall -F 学生管理系统.py

注意: 如果提示找不到 pyinstaller 命令, 则需要重启一下 PyCharm.

稍等片刻, 很快打包完成.

image-20230101215300527

image-20230101215318712

此时就可以把这个程序拷贝给其他机器使用了. 无需 Python 环境即可运行.

pyinstall -F 学生管理系统.py

注意: 如果提示找不到 pyinstaller 命令, 则需要重启一下 PyCharm.

稍等片刻, 很快打包完成.

[外链图片转存中…(img-FrElKnKH-1672585823465)]

[外链图片转存中…(img-W9wXvw87-1672585823465)]

此时就可以把这个程序拷贝给其他机器使用了. 无需 Python 环境即可运行.


http://www.ppmy.cn/news/8702.html

相关文章

56. 数据增广 / 图像增广

1. CES上的真实故事 2. 数据增强 增加一个已有数据集&#xff0c;使得有更多的多样性 在语言里加入各种不同的背景噪音改变图片的颜色和形状 例如&#xff0c;我们可以以不同的方式裁剪图像&#xff0c;使感兴趣的对象出现在不同的位置&#xff0c;减少模型对于对象出现位置…

Python全栈开发(一)——环境搭建和入门

今天是2023年的第一天&#xff0c;接下来的一个月里&#xff0c;我将持续更新关于python全栈开发的相关知识&#xff0c;前面一段时间都是基础语法。主要分成四大块&#xff1a;基础、面向对象、MYSQL数据库、Django框架。话不多说&#xff0c;进入到今天的主题。 1.文档和工具…

【CSP】邻域均值

邻域均值 邻域均值 题意比较好理解&#xff0c;就是算一些数字。如果采用暴力方法的话&#xff0c;就是用一个边长为 2∗r12*r12∗r1 的正方形框框住大矩阵&#xff0c;然后遍历这个框&#xff0c;求出其平均值&#xff0c;然后移动正方形框&#xff0c;直到大矩阵内所有像…

MySql底层索引原理

前言 我们都知道MySql索引效率很高&#xff01;那其中的原理是什么呢&#xff1f;先跑出个问题来&#xff1a;二叉树、红黑树&#xff08;二叉平衡树&#xff09;、BTree&#xff08;平衡多叉树&#xff09;、Btree这几种类型中哪一种是mysql索引所选择的呢&#xff1f; 这个…

更新和删除数据

目录1、更新数据2、根据其他表更新数据3、 删除数据4、根据其他表删除数据对于不加WHERE条件的UPDATE和DELETE要格外谨慎&#xff01; 1、更新数据 1.1 更新全部数据&#xff1a;使用UPDATE关键字。语法如下&#xff1a; UPDATE 表名 SET 字段名新的值; 比如&#xff0c;更新学…

寒假每日一题W1D3——上课睡觉

题目描述 有 N 堆石子&#xff0c;每堆的石子数量分别为 a1,a2,…,aN。 你可以对石子堆进行合并操作&#xff0c;将两个相邻的石子堆合并为一个石子堆&#xff0c;例如&#xff0c;如果 a[1,2,3,4,5]&#xff0c;合并第 2,3 堆石子&#xff0c;则石子堆集合变为 a[1,5,4,5]。…

【攻防世界】Web warmup

知识点讲解 这一题主要是利用了include的特性 如果include的文件名中含有“/”&#xff0c;那么它会识别其为一个带目录的文件&#xff0c;只有最后一个“/”后的字符串对应的文件会被包含&#xff0c;而前面的字符串都只是在指定目录 意思是&#xff0c;如果我们的payload是这…

Qt第五十五章:Qt Design Studio设计登录页并打包到python运行

目录 一、Qt Design Studio 二、导出所有文件到QRC&#xff08;不要改动默认的QRC文件名称&#xff09; 三、QRC转换成py 1.删除Constants.qml中的 2.将App.qml和Screen01.qml中的 3.转换 4、将QRC文件和转换后的py文件&#xff0c;复制到python项目中使用。 一、Qt Des…