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的内容就到这里了,喜欢请点个赞,谢谢
封面图自取: