Python代码实现学生管理系统

news2024/9/23 9:30:49

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("性别不符合要求! 新增学生失败!")
         return
    className = input("请输入学生的班级: ")
    # 使用一个字典表示学生信息
    student = {
        'studentId': studentId,
        'name': name,
        'gender': gender,
        'className': className
   }
    # 把字典添加到学生列表中
    global students
    students.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 = 0
    for s in students:
        if name == s['name']:
            print(f"
[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
            count += 1
    print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

4. 删除学生

def delete():
    print("[删除学生] 开始!")
    studentId = input("请输入要删除的同学学号: ")
    count = 0
    for s in students:
        if studentId == s['studentId']:
            print(f"删除 {s['name']} 同学的信息!")
            students.remove(s)
            count += 1
    print(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 students
    students = []
    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}")
                continue
            student = {
                '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.coloradmin.cn/o/133403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacOS Ventura安装失败的原因及解决方法分享

2022年10月&#xff0c;苹果公司向Mac电脑用户推送了MacOS Ventura正式版更新&#xff0c;此次更新为MacOS带来了台前调度、连续互通相机、iMessage 撤回、编辑等功能。吸引众多Mac电脑用户不由纷纷下载安装&#xff0c;但各用户在安装的过程中经常遇到更新MacOS Ventura时突然…

物联网与射频识别技术,课程实验(五)

实验5—— 基于随机二进制树的防冲突算法的实现与性能分析 实验说明&#xff1a; 利用Python或Matlab模拟基于随机二进制树的防冲突算法&#xff1b; 分析标签数量k对遍历所有标签所需时间的影响&#xff1b; 分析标签ID的长度、分布对算法性能的影响&#xff1b; 利用Python或…

MQTT+STM32+ESP8266-01s硬件传递的JSON数据到前端和后端出现中文乱码问题

最近在做一个关于MQTT相关毕设项目,数据传输过程中出现了中文乱码问题,大致就是硬件发送的JSON主题数据中包含中文(如下图1所示),软件后端和软件前端接受该主题数据后出现了中文乱码,出现乱码一般都是硬件传递到后端和前端的编码不一致导致的,所以前端和后端接受该JSON数据的时…

2023.1.1 学习周报

文章目录摘要文献阅读1.题目2.摘要3.问题和方案4.介绍5.方法5.1 Symbolic Description5.2 The Short-Term Memory Priority Model5.3 The STAMP Model5.4 The Short-Term Memory Only Model6.实验6.1 评价指标6.2 实验结果7.结论深度学习加性模型点积模型缩放点积模型双线性模型…

数值优化之凸函数

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 凸函数的性质 ​2 凸函数的性质 1 凸函数的性质 凸函数最重要的性质就是Jensens inequality,也就是琴生不等式。 若能取到等号则是凸函数&#xff0c;若不能取到等号则是强凸函数&#xff0c;若不等号相反&#xff0c;则…

spring session

文章目录Spring Session 架构及应用场景为什么要spring-sessionSR340规范与spring-session的透明继承Spring Session探索特点核心 APIservlet session 与 spring-session 关系webflux 与 spring session 的关系基于 Servlet 的 Spring Session 实现思考题背景1、注册到 Filter …

Java 并发编程知识总结【一】

JUC 是什么&#xff1f; java.util.concurrent 在并发编程中使用的工具类 concurrent:并发 1. 线程基础知识复习 1.1 进程(process) 进程是程序的一次执行过程&#xff0c;或是正在运行的一个程序。是一个动态的过程&#xff1a;有它自身的产生、存在和消亡的过程(生命周期…

【数据集7】全球人类住区层GHSL数据详解

全球人类住区层Global Human Settlement Layer 官网地址-GHSL - Global Human Settlement Layer 1 全球人类住区层GHS-SMOD Global human settlement layer-settlement model grid (GHS-SMOD)&#xff1a;描述 epoch时段: 1975-2030年 5年一个周期resolution空间分辨率: …

Codeforces Round #833 (Div. 2)E. Yet Another Array Counting Problem(笛卡尔树+树形DP)

题目链接&#xff1a;Problem - E - Codeforces 样例输入&#xff1a; 4 3 3 1 3 2 4 2 2 2 2 2 6 9 6 9 6 9 6 9 9 100 10 40 20 20 100 60 80 60 60样例输出&#xff1a; 8 5 11880 351025663题意&#xff1a;给定一个长度为n的数组a[],对于每一个区间[l,r]&#xff0c;这个…

[Python从零到壹] 六十一.图像识别及经典案例篇之基于纹理背景和聚类算法的图像分割

祝大家新年快乐&#xff0c;阖家幸福&#xff0c;健康快乐&#xff01; 欢迎大家来到“Python从零到壹”&#xff0c;在这里我将分享约200篇Python系列文章&#xff0c;带大家一起去学习和玩耍&#xff0c;看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲…

尚医通-查询删除科室接口-添加查询删除排班接口实现(二十)

目录&#xff1a; &#xff08;1&#xff09;数据接口-查询和删除科室接口-功能实现 &#xff08;2&#xff09;数据接口-排版接口-功能实现 &#xff08;1&#xff09;数据接口-查询和删除科室接口-功能实现 查看医院系统中查询科室的对应的方法 查询条件需要用的类&#…

【数据结构】链式存储:链表

目录 &#x1f947;一&#xff1a;初识链表 &#x1f392;二、链表的实现&#xff08;单向不带头非循环&#xff09; &#x1f4d8;1.创建节点类 &#x1f4d2;2.创建链表 &#x1f4d7;3.打印链表 &#x1f4d5;4.查找是否包含关键字key是否在单链表当中 &#x1f4d9;…

Webpack核心概念

1. 核⼼概念 Entry Entry ⽤来指定 webpack 的打包⼊⼝。 依赖图的⼊⼝是 entry&#xff0c;对于⾮代码⽐如图⽚、字体依赖也会不断加⼊到依赖图中。 Entry 的⽤法&#xff1a; 1. 单⼊⼝&#xff1a;entry 是⼀个字符串&#xff1b; module.exports {entry: ./path/to/my…

若依框架-补充篇:Vuex全局状态管理Axios二次封装

在上一篇《若依框架&#xff1a;前端登录组件与图像验证码|用户登录逻辑》中的篇末&#xff0c;对Vuex全局状态管理、Axios二次封装部分介绍的较为粗略&#xff0c;因此就有了这个补充篇。 目录 Vuex全局状态管理 Vuex是什么&#xff1f; 如何理解“状态管理模式”&#xf…

【Java语法】之String类练习1

目录 1.字符串中的第一个唯一字符 2. 最后一个单词的长度 58. 最后一个单词的长度 3.验证回文串 4.字符串相加 5.小结&#xff1a; 1.字符串中的第一个唯一字符387. 字符串中的第一个唯一字符https://leetcode.cn/problems/first-unique-character-in-a-string/ 给定一个字符…

【免费开放源码】审批类小程序项目实战(活动申请详解)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…

Mac下安装go

1.下载地址 ​​​​​​https://golang.google.cn/dl/ 2.安装Go 3.查看安装效果 go version go env 4.安装vscode和插件 4.1.安装vscode https://code.visualstudio.com/Download 4.2.安装GO插件 4.3.设置goproxy 执行命令&#xff1a;vim ~/.bash_profile export GO1…

数值分布的分散程度对迭代次数的影响

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点&#xff0c;AB各由7张二值化的图片组成&#xff0c;排列组合A和B的所有可能性&#xff0c;固定收敛误差为7e-4&#xff0c;统计收敛迭代次数 1 2 3 4 5 6 7 迭代次数 1b 1b 1b 1b 1b 1b 0 0*0*0…

PHP---文件上传

目录 一、文件上传的概念 二、文件上传的步骤 &#xff08;1&#xff09;表单的制作 三、$_FILES详解 &#xff08;1&#xff09;name &#xff08;2&#xff09;tmp_name &#xff08;3&#xff09;type &#xff08;4&#xff09;error &#xff08;5&#xff09;si…

YOLO v6:一个硬件友好的目标检测算法

本文来自公众号“AI大道理” YOLOv6 是美团视觉智能部研发的一款目标检测框架&#xff0c;致力于工业应用。 YOLOv6支持模型训练、推理及多平台部署等全链条的工业应用需求&#xff0c;并在网络结构、训练策略等算法层面进行了多项改进和优化&#xff0c;在 COCO 数据集上&…