当前位置: 首页 > news >正文

python小项目——学生管理系统

        本期我们来综合应用一下以往的python知识点和库的学习,以一个经典的项目:学生管理系统,来巩固我们的python学习

        相关代码已经上传至作者的个人gitee:楼田莉子/Python 学习喜欢请点个赞谢谢

目录

需求说明

入口函数

菜单函数

操作函数

        增加学生

        显示学生

        查找学生

        删除学生

存档机制

        约定存档格式

        实现存档函数

        打包为.exe文件

        安装 pyinstaller

        打包程序

源代码

python拓展学习   

        python cookbook

        awesome-python

        500 Lines or Less


需求说明

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

        功能:

        新增学生显示学生查找学生删除学生存档到文件

入口函数

        使用全局列表表示所有学生的信息

        使用menu与用户交互

        使用insert、show、find、delete几个自定义函数完成操作

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

def main():#入口函数#通过控制台与用户交互print("--------------------------")print("欢迎来到学生管理系统!!!!!")print("--------------------------")while True:#通过menu创建菜单choice=menu()if choice=='1':#新增学生Insert()elif choice=='2':#展示所有学生show()elif choice=='3':#查找学生find()elif choice=='4':#删除学生delete()elif choice=='0':#推出系统print("感谢你的使用,下次再见!")sys.exit(0)else:#进入下次循环,再次输入print("输入错误请重新输入>")

菜单函数

def menu():print("1、新增学生")print("2、展示学生")print("3、查找学生")print("4、删除学生")print("0、推出程序")choice = input("请输入您的选项>")return  choice

操作函数

        增加学生

#新增学生
def Insert():print("新增学生开始")student_name= input("请输入学生的姓名")#性别只有男和女student_gender=input("请输入学生的性别")if student_gender not in('男','女'):print("内容不符合要求,新增失败")returnstudent_class=input("请输入学生的班级")student_id=input("请输入学生的学号")#使用字典使得这些信息组装起来student={'student_name':student_name,"student_gender":student_gender,"student_class":student_class,"student_id":student_id,}global studentsstudents.append(student)print("新增学生结束")

        显示学生

#显示学生
def show():#遍历全局列表,把每个学生信息打印出来print("显示学生开始")for s in students:print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")print(f"显示学生结束。显示了{len(students)}条数据")

        查找学生

#查找学生
def find():print("查找学生开始")name =input("请输入查找的学生的名字")count=0;for s in students:if name==s['student_name']:print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")count+=1print(f"共找到{count}个匹配的同学")print("查找学生结束")

        删除学生

#删除学生
def delete():print("删除学生开始")student_id=input("请输入要删除的学生的学号>")for s in students:if student_id==s['student_id']:print("删除s['student_name']同学的信息")students.remove(s)print("删除学生结束")

存档机制

        约定存档格式

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

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

学号 | 名字 | 性别 | 班级
学号 | 名字 | 性别 | 班级
学号 | 名字 | 性别 | 班级

        每个同学占一行.

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

        实现存档函数

#存档函数
def save():#此时这个文件与这个在同一个目录内with open("学生档案记录.txt","w",encoding="utf8") as f:for s in students:f.write(f"{s['student_name']}|{s['student_gender']}|{s['student_class']}|{s['student_id']}")print(f"存档成功,共存储了{len(students)}条信息")

        打包为.exe文件


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

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

        安装 pyinstaller

pip install pyinstaller

        打包程序



        -F 表示打包成单个 exe (不带动态库)

pyinstall -F 学生管理系统.py

        注意: 如果提示找不到 pyinstaller 命令, 则需要重启一下 PyCharm.稍等片刻, 很快打包完成.

源代码

#实现一个命令行版本学生管理系统
import os.path
import sys
from random import choice
#使用全局变量管理学生信息
#每个元素是字典,每个字典表示一个同学
students=[]#存档函数
def save():#此时这个文件与这个在同一个目录内with open("学生档案记录.txt","w",encoding="utf8") as f:for s in students:f.write(f"{s['student_name']}|{s['student_gender']}|{s['student_class']}|{s['student_id']}")print(f"存档成功,共存储了{len(students)}条信息")
#读档程序
def load():#避免读的时候文件不存在引发异常if not os.path.exists("学生档案记录.txt"):return#读档的时候旧的数据要清空global studentsstudents=[]with open("学生档案记录.txt","r",encoding="utf8") as f:for line in f:#针对这一行按照|切割#切分前要换行line =line.strip()tokens=line.split(' | ')if len(tokens)!=4:print(f'当前行格式有问题,line={line}')continuestudent={'student_name':tokens[0],'student_gender':tokens[1],'student_class':tokens[2],'student_id':tokens[3],}students.append(student)print(f"读档成功,共读取了{len(students)}条数据")#新增学生
def Insert():print("新增学生开始")student_name= input("请输入学生的姓名")#性别只有男和女student_gender=input("请输入学生的性别")if student_gender not in('男','女'):print("内容不符合要求,新增失败")returnstudent_class=input("请输入学生的班级")student_id=input("请输入学生的学号")#使用字典使得这些信息组装起来student={'student_name':student_name,"student_gender":student_gender,"student_class":student_class,"student_id":student_id,}global studentsstudents.append(student)save()print("新增学生结束")
#显示学生
def show():#遍历全局列表,把每个学生信息打印出来print("显示学生开始")for s in students:print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")print(f"显示学生结束。显示了{len(students)}条数据")
#查找学生
def find():print("查找学生开始")name =input("请输入查找的学生的名字")count=0;for s in students:if name==s['student_name']:print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")count+=1print(f"共找到{count}个匹配的同学")print("查找学生结束")
#删除学生
def delete():print("删除学生开始")student_id=input("请输入要删除的学生的学号>")for s in students:if student_id==s['student_id']:print("删除s['student_name']同学的信息")students.remove(s)save()print("删除学生结束")
def menu():print("1、新增学生")print("2、展示学生")print("3、查找学生")print("4、删除学生")print("0、推出程序")choice = input("请输入您的选项>")return  choice
def main():#入口函数#通过控制台与用户交互print("--------------------------")print("欢迎来到学生管理系统!!!!!")print("--------------------------")load()while True:#通过menu创建菜单choice=menu()if choice=='1':#新增学生Insert()elif choice=='2':#展示所有学生show()elif choice=='3':#查找学生find()elif choice=='4':#删除学生delete()elif choice=='0':#推出系统print("感谢你的使用,下次再见!")sys.exit(0)else:#进入下次循环,再次输入print("输入错误请重新输入>")main()

python拓展学习   

        目前我们关于python的学习都比较入门。如果想了解更多可以参考一下内容

        python cookbook

        python 经典进阶书籍. 针对各种典型场景提供了一些解决方案
 

        

        awesome-python
 

        整理了 Python 的一些非常实用的程序库:awesome-python: awesome-python 的中文版

        500 Lines or Less

        使用简短的 Python 代码来实现一些有意思的程序:https://github.com/aosabook/500lines

        本篇python的内容就到这里了,喜欢请点个赞,谢谢

封面图自取:


文章转载自:

http://XPgj18C6.kxxLd.cn
http://G8ltYicj.kxxLd.cn
http://1MqyPd9y.kxxLd.cn
http://9zwUUpAo.kxxLd.cn
http://8TZZ1LAo.kxxLd.cn
http://XUOBG7FM.kxxLd.cn
http://hyS88rdA.kxxLd.cn
http://qCZzKdsd.kxxLd.cn
http://tZvvAilh.kxxLd.cn
http://EXFi5RAI.kxxLd.cn
http://Bs7bjJv6.kxxLd.cn
http://zPBTde0T.kxxLd.cn
http://aHKGGk8Y.kxxLd.cn
http://NEwfoLRP.kxxLd.cn
http://ArJVkLod.kxxLd.cn
http://tJHaMnhz.kxxLd.cn
http://ejlgXYqW.kxxLd.cn
http://x2nTHklq.kxxLd.cn
http://JGOEL5l4.kxxLd.cn
http://bT1nTaOd.kxxLd.cn
http://xBvM2rCL.kxxLd.cn
http://00MhEFUn.kxxLd.cn
http://KIKbvv8t.kxxLd.cn
http://TQVBefHy.kxxLd.cn
http://yk9Xqjqo.kxxLd.cn
http://6VXjIu3C.kxxLd.cn
http://PGGhZcUE.kxxLd.cn
http://bZpZnS2Q.kxxLd.cn
http://bfizWy06.kxxLd.cn
http://ITXt10AD.kxxLd.cn
http://www.dtcms.com/a/381788.html

相关文章:

  • 格密码--从FFT到NTT(附源码)
  • HTML中css的基础
  • 软考中级习题与解答——第六章_计算机硬件基础(2)
  • UDP 深度解析:传输层协议核心原理与套接字编程实战
  • MySQL在Ubuntu 20.04 环境下的卸载与安装
  • 相机几何 空间点到像素平面转换
  • 基础算法模板
  • 智能学习辅助系统-部门管理开发
  • 01数据结构-初探动态规划
  • 数据结构 -- 反射、枚举以及lambda表达式
  • 【C++11】initializer_list列表初始化、右值引用和移动语义、可变参数模版等
  • 设计模式(C++)详解——建造者模式(2)
  • CSS 中的 `vh`!在移动设备上的替代方案->`dvh`
  • 叩丁狼K8s - 概念篇
  • 论文阅读 2025-9-9 多模态相关
  • 豆包、Kimi、通义千问、DeepSeek、Gamma、墨刀 AI”六款主流大模型(或 AI 平台)生成 PPT 的完整流程
  • 基于SpringBoot的足球论坛系统+论文示例参考
  • uniapp 实现项目多语言切换
  • 03.【Linux系统编程】基础开发工具1(yum软件安装、vim编辑器、编辑器gcc/g++)
  • Win10 上 Debian 12 如何安装 Redis ?
  • 中级统计师-统计法规-第十章 统计执法监督检查
  • 【矩阵找最大小所在位置】2022-11-13
  • kafka遇到的问题
  • 【Linux】系统部分——线程概念与地址空间
  • 即梦AI快速P图
  • C盘扩容笔记
  • arm64架构下docker部署freeswitch
  • python---__new__函数
  • 2025.9.11英语红宝书
  • Oracle体系结构-数据文件(Data Files)