python写学生信息管理系统,python学生管理系统报告

大家好,本文将围绕基于python的学生信息管理系统参考文献展开说明,基于python的学生信息管理系统毕业论文是一个很多人都想弄明白的事情,想搞清楚基于python的学生信息管理系统论文需要先了解以下几个事情。

这篇文章主要介绍了python编写学生管理系统,用gui做ui,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下python自学可行吗

Source code download: 本文相关源码

Python学习笔记


课程笔记参考B站视频: Python全栈开发教程


第十六站 学生信息管理系统

1. 需求分析

学生管理系统应具备下面的功能:

  1. 添加学生及成绩信息熟练掌握Python就业是不是好一点
  2. 将学生信息保存到文件中。
  3. 修改和删除学生信息。
  4. 查询学生信息。
  5. 根据学坐成绩进行排序。
  6. 统计学生的总分。

用户可以根据这个功能框架依次执行所有的功能。

2. 系统开发必备

系统开发环境:

操作系统:win10
Python解释器版本:Python3.8
开发工具:PyCharm
Python内置模块:os, re(正则表达式)

项目目录结构:

studentsys项目文件夹

students.txt 保存学生信息的文件(系统自动创建)
stusystem.py 实现具体功能的Python文件

3. 系统设计

于是根据上述系统的需求分析,将学生信息管理系统拆分为8大模块:

  1. 录入学生信息(会清除原来的信息)
  2. 查找学生信息
  3. 删除学生信息
  4. 修改学生信息(若ID不存在会自动添加)
  5. 对学生信息进行排序
  6. 统计学生总人数
  7. 显示所有学生信息
  8. 退出系统

整个系统的主函数业务流程如下:

要实现主函数的功能,方法如下:

编号功能
0退出系统
1录入学生信息,调用insert()自定义函数
2查找学生信息,调用search()自定义函数
3删除学生信息,调用delete()自定义函数
4修改学生信息,调用modify()自定义函数
5对学生成绩排序,调用sort()自定义函数
6统计学生总人数,调用total()自定义函数
7显示所有的学生信息,调用show()自定义函数
4. 学生信息维护模块设计

1. 录入学生信息功能
该模块要实现:从控制台录入学生信息,并且把它们保存到磁盘文件中,然后显示出来。业务流程如下:

2. 删除学生信息功能

该模块要实现:从控制台录入学生ID,到磁盘文件中找到对应的学生信息,并将其删除,然后显示当前所有学生信息。业务流程如下:

3. 修改学生信息功能

该模块要实现:从控制台录入学生ID,到磁盘文件中找到对应的学生信息,将其进行修改,然后显示当前所有学生信息。业务流程如下:

4. 查找学生信息功能

该模块要实现:从控制台录入学生ID或姓名,到磁盘文件中找到对应的学生信息,显示出来。业务流程如下:

5. 统计学生信息功能

该模块要实现:统计学生信息文件中保存的学生信息个数。业务流程如下:

6. 显示学生信息功能

该模块要实现:将学生信息文件中保存的全部学生信息获取并显示。业务流程如下:

7. 排序模块设计

该模块要实现:对学生信息按ID、姓名、C++成绩、Python成绩 、Java成绩、总成绩进行升序或降序排序,然后显示排序结果并写入到文件中。(都是按照Unicode的大小进行排序,使用函数ord()可以查看对应unicode值)

业务流程如下:

5. 项目打包

为了期望在其他计算机上运行该项目,在项目完成后需要进行打包。打包后,即使其他计算机没有安装Python环境,也可以运行这个exe文件。

想要进行打包,需要安装第三方模块PyInstaller。使用在线安装方式(具体的操作步骤可以参考第十四站 第五节),安装代码如下:

pip install PyInstaller

安装完成后执行语句:

pyinstaller -F py文件路径

-F表示只生成一个扩展名为.exe的可执行文件。执行后在倒数几行会看到生成的exe文件路径。

6. 实验感悟
  1. 这个实验的难点主要有两个:存储类型、排序。

1.1 存储类型
要明确:

  1. 字典列表是可以直接逐元素的写入到文本文件中的(会自动换行);
  2. 从文本文件中读取到的一切都是字符串列表,每个元素都代表一行;
  3. 处理数据的过程中都采用字典列表的方式,于是要想将字符串列表转换成字典列表,就需要逐元素的使用eval()函数。

1.2 排序
所有功能中最难实现的是排序功能,但是本项目中直接使用列表的.sort()排序方法,里面有专门针对字典列表的处理情况(使用了隐式函数):

stu_dir_lst.sort(key=lambda x:x['键名称'], reverse=True)
  1. 还有两点值得注意的问题:规范用户输入、理清逻辑框架。

2.1 规范用户输入
要想让用户输入几个有限的字符串,其实只要用一个while循环就可以轻松解决,学会了就可以一直用一个逻辑模板。比如下面代码示例:

# 询问用户是否继续
con_judge = input('请输入是否继续?y/n ')
while con_judge!='y' and con_judge!='Y' and con_judge!='n' and con_judge!='N':
   con_judge = input('输入错误!请输入是否继续?y/n ')
# 请用户输入整数/浮点数
while True:
   try:
       height = float(input('请输入您的身高(cm):'))
   except:
       print('输入有误!', end='')
   else:
       break

2.2 逻辑框架

感触比较深的一点是关于“总成绩”的键值对,后面有些模块会自动计算并保存到文件中,但是有些函数则不关心这个键值对。这主要是由于在一开始没有规划的太明白,好在最后配合起来(在用户端)也没啥问题。

所以最好是能在一开始搭建好基本模块框架后,就想好该使用什么函数完成各个模块,这样各部分数据在处理的过程中会更加丝滑。这种“写着写着功能就实现了”的思想不可取。(但是对我这种新手程序员来说,有时明知不对,那也得摁做😂)

最后,整个项目的源代码及可执行文件可以参考我的github仓库 Student-Info-Manager

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值