Python开发-学生管理系统
文章目录
- 1、需求分析
- 2、系统设计
- 3、系统开发必备
- 4、主函数设计
- 5、 学生信息维护模块设计
- 6、 查询/统计模块设计
- 7、排序模块设计
- 8、 项目打包
1、需求分析
学生管理系统应具备的功能:
●添加学生及成绩信息
●将学生信息保存到文件中
●修改和删除学生信息
●查询学生信息
●根据学坐成绩进行排序
●统计学生的总分
2、系统设计
系统功能结构:
●录入学生信息模块.
●查找学生信息模块
●删除学生信息模块.
●修改学生信息模块.
●学生成绩排名模块
●统计学生总人数模块
●显示全部学生信息模块
3、系统开发必备

4、主函数设计

def main():while True:menm()choice = int(input('请选择:'))if choice in [0,1,2,3,4,5,6,7]:if choice == 0:answer=input('您确定要退出系统吗?y/n:\n'if answer=='y' or answer=='Y' :print('谢谢您的使用!!!')break #退出系统else:continueelif choice == 1:insert() #录入学生信息elif choice == 2:search()elif choice == 3:delete()elif choice == 4:modify()elif choice == 5: sort()elif choice == 6:total()elif choice == 7: show()def insert():pass
def search():pass
def delete(): pass
def modify():pass
def sort(): pass
def total():pass
def show():pass def menm() :print('====================学生信息管理系统========================')print('-----------------功能菜单-----------------------')print(' \t\t(t\t\t\t1.录入学生信息')print(' \t\t\t\t\t\t2.查找学生信息')print(' \t\t\t\t\t\t3.删除学生信息')print(' \t\t\t\t\t\t4.修改学生信息')print(' \t\t\t\t\t\t5.排序')print(' \t\t\t\t\t\t6.统计学生总人数')print(' \t\t\t\t\t\t7.显示所有学生信息')print(' \t\t\t\t\t\t0.退出')print('-------------------------------------------------------------'if __name__ == '__main__':main()
5、 学生信息维护模块设计
filename = 'student.txt'def insert():student_list=[]while True:id = input('请输入ID(如1001):')if not id:breakname = input('请输入姓名:')if not name:breaktry:english=int(input('请输入英语成绩:'))python=int(input('请输入Python成绩:'))java=int(input('请输入Java成绩:'))except:print('输入无效,不是整数类型,请重新输入')continue#将录入的学生信息保存到字典中student={'id':id,'name'; name,'english':english,'python': python,'java':java}#将学生信息添加到列表中student_list.append(student)answer=input('是否继续添加?y/n:\n')if answer=='y' :continueelse:break# 调用save()函数save(student_list)print("学生信息录入完毕!!!")def save(lst):try:stu_txt = open(filename,'a',encoding = 'utf-8')except:stu_txt = open(filename,'w',encoding = 'utf-8')for item in lst:stu_txt.write(str(item)+'\n') stu_txt.close()
def delete():while True:student_id=input('请输入要删除的学生的ID: ')if student_id!='':if os.path.exists(filename):with open(filename,'r' ,encoding='utf-8') as file:
student_old=file.readlines() else:student_old=[]flag=False #标记是否删除if student_old:with open(filename,'w',encoding='utf-8') as wfile:d= {}for item in student_old:d=dict(eval(item)) #将字符串转成字典if d['id']!=student_id:wfile.write(str(d)+'\n' )else:flag= Trueif flag:print(f'id为{student_ id} 的学生信息已被删除')else:print (f'没有找到ID为(student_id} 的学生信息')else:print('无学生信息')breakshow() #删除之后要重新显示所有学生信息answer=input('是否继续删除?y/n:\n' )if answer=='y':continueelse: break
def modify()show()if os.path.exists(filename):with open(filenane,'r',encoding=' utf-8') as rfile:student_old=rfile.readlines()else:returnstudent_id=input('请输入要修改的学员的ID:')with open(filename,'w',encoding:'utf-8') as wfile: for item in student_old:d=dict(eval(item))if d['id']== student_id :print('找到学生信息,可以修改他的相关信息了!')while True:try:d['name']=input('请输入姓名:')d['english']=input('请输入英语成绩:')d['python']=input('请输入Python成绩:')d['java']=input('请输入Java成绩:')except :print('您的输入有误,请重新输入!!!')else:break wfile.rite(str(d)+'\n')print('修改成功!!!')else:wfile.write(str(d)+'\n')answer=input('是否继续修改其它学生信息?y/n:\n')if answer=='y':modify()
6、 查询/统计模块设计
def search():student_query=[]while True:id=''name=''if os.path.exists(filename):mode=input('按ID查找请输入1,按姓名查找请输入2: ')if mode=='1':id=input('请输入学生ID:' )elif mode=='2':name=input('请输入学生姓名:')else:print('您的输入有误,请重新输入:')search()with open(filename,'r',encoding='utf-8') as rfile:student=rfile.readlines()for item in student :d=dict(eval(item))if id!='':if d['id']==id:student_query.append(d)elif name !='':if d['name']== name :student_query.append(d)#显示查询结果show_student(student_query)# 请空列表student_query.clear()answer=input('是否要继续查询?y/n:\n' )if answer=='y':continueelse :breakelse:print('暂未保存学生信息')returndef show_student(lst):if len(1st)==0:print('没有查询到学生信息,无数据显示! ! ! ' )return#定义标题显示格式format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'print(format_title.format('ID','姓名','英语成绩','Python成绩','Java成绩','总成绩'))#定义内容的显示格式format_data='{: 6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'for item in lst:print(format_data.format(item.get('id'),item.get('name'),item.get('english'),item.get('python'),item.get('java'),int(item.get('english'))+int(item.get('python'))+(item.get('java'))))
def total():if os.path.exists(filename):with open(filename,'r',encoding=' utf-8') as rfile:students=rfile.readlines()if students:print(f'-共有{len (students)}名学生')else:print('还没有录入学生信息')else :print('暂未保存数据信息...')
def show():student_lst= []if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:students=rfile.readlines()for item in students:student_1st.append(eval(item))if student_lst:show_student(student_lst)else:print('暂未保存过数据!!!')
7、排序模块设计
def sort():show()if os.path.exists(filename):with open(filename,'r',encoding='utf-8') as rfile:student_list=rfile.readlines()student_new=[]for item in student_list : d=dict(eval(item))student_new.append(d)else:returnasc_or_desc= input('请选择(0.升序1.降序):')if asc_or_desc=='0':asc_or_desc_bool = Falseelif asc_or_desc=='1':asc_or_desc_bool = Trueelse: print('您的输入有误,请重新输入')sort()mode=input('请选择排序方式(1.按英语成绩排序2. 按Python成绩排序3.按Java成绩排序0.按总成绩排序):')if mode=='1':student_new.sort(key=lambda x: x['english'],reverse=asc_or_desc_bool)elif mode =='2':student_new.sort(key=lambda x: x['python'],reverse=asc_or_desc_bool)elif mode=='3':student_new.sort(key=lambda x: x['java'],reverse=asc_or_desc_bool)elif mode='0':student_new.sort(key=lambda x: x['english']+x['python']+x['java'],reverse=asc_or_desc_bool)else:print('您的输入有误,请重新输入!!!')sort()show_student(student_new)
8、 项目打包

详见https://blog.csdn.net/hhhmonkey/article/details/129009196?spm=1001.2014.3001.5502
【参考】https://www.bilibili.com/video/BV1wD4y1o7AS
相关文章:
Python开发-学生管理系统
文章目录1、需求分析2、系统设计3、系统开发必备4、主函数设计5、 学生信息维护模块设计6、 查询/统计模块设计7、排序模块设计8、 项目打包1、需求分析 学生管理系统应具备的功能: ●添加学生及成绩信息 ●将学生信息保存到文件中 ●修改和删除学生信息 ●查询学生…...
大数据处理 - Trie树/数据库/倒排索引
Trie树Trie树的介绍和实现请参考 树 - 前缀树(Trie)适用范围: 数据量大,重复多,但是数据种类小可以放入内存基本原理及要点: 实现方式,节点孩子的表示方式扩展: 压缩实现。一些适用场景:寻找热门查询: 查询串的重复度比较高&#…...
jjava企业级开发-01
一、Spring容器演示 采用Spring配置文件管理Bean 1、创建Maven项目 修改项目的Maven配置 2、添加Spring依赖 在Maven仓库里查找Spring框架(https://mvnrepository.com) 同上添加其他依赖 <?xml version"1.0" encoding"UTF-8…...
「事务一致性」事务afterCommit
在事务还没有执行完消息就已经发出去了, 导致后续的一些数据或逻辑上的问题产生。场景如下:异步-记录日志:当事务提交后,再记录日志。发送mq消息:只有业务数据都存入表后,再发mq消息。方案1. 利用TransactionSynchroni…...
【深度学习编译器系列】2. 深度学习编译器的通用设计架构
在【深度学习编译器系列】1. 为什么需要深度学习编译器?中我们了解到了为什么需要深度学习编译器,和什么是深度学习编译器,接下来我们把深度学习编译器这个小黑盒打开,看看里面有什么东西。 1. 深度学习编译器的通用设计架构 与…...
图解操作系统
硬件结构 CPU是如何执行程序的? 图灵机的工作方式 图灵机的基本思想:用机器来模拟人们用纸笔进行数学运算的过程,还定义了由计算机的那些部分组成,程序又是如何执行的。 图灵机的基本组成如下: 有一条「纸带」&am…...
【发版或上线项目保姆级心得】
第一步:先在正式环境创建数据库/新增表格或者字段 在数据库表中增加字段/表格,不会报错。 但是切记不要过早数据库字段/表格或者删除字段/表格 第二步:修改配置文件 先将正式环境需要的配置给写好,包括但不仅限于数据库配置、…...
Python数据分析-pandas库入门
pandas 库概述pandas 提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来,它助使 Python 成为强大而高效的数据分析环境。pandas使用最多的数据结构对象是 DataFrame,它是一个面向列(column-oriented)的二维表…...
MacBook Pro 恢复出厂设置
目录1.恢复出厂设置1.1 按Command-R 键1.2 macOS 实用工具1.3 从 macOS 恢复功能的实用工具窗口中选择“磁盘工具”,然后点按“继续”1.4 在“磁盘工具”边栏中选择您的设备或宗卷。1.5 点按“抹掉”按钮或标签页1.6 抹掉OS X HD - 数据 完成1.7 抹掉 OS X HD1.8 查…...
googletest 笔记
什么是一个好的测试 1 测试应该是独立的和可重复的。调试一个由于其他测试而成功或 失败的测试是一件痛苦的事情。googletest 通过在不同的对象上 运行测试来隔离测试。当测试失败时,googletest 允许您单独运 行它以快速调试。 2 测试应该很好地“组织”,…...
MySQL修改密码的几种方式?
第一种方式: 最简单的方法就是借助第三方工具Navicat for MySQL来修改。方法如下: 1、登录mysql到指定库,如:登录到test库。 2、然后点击上方"用户"按钮。 3、选择要更改的用户名,然后点击上方的"编辑用…...
关于画一个句号--基于2022年终总结的反思与分享
没有平台鼓风造势,今年各大平台没有涌现出一批总结,非常清爽 正如同人发明了抽屉,将杂物进行整理、丢弃、收纳,才能对空间进行更合理地使用。我们也需要对知识、过往经历进行整理、丢弃、收纳,才能对大脑进行更合理地…...
学习Flask之三、模板
学习Flask之三、模板 书写易于维护的应用的关键是书写整洁和良构的代码。到目前为止你所见的例子过于简单而不能体现这点。把两个目的完全独立的Flask view 函数当作一个来写,会产生问题。view函数的一个显然的任务是对请求作出响应,如前面的例子所示。对…...
2023-02-20干活小计:
所以我今天的活开始了: In this paper, the authors target the problem of Multimodal Name Entity Recognition(MNER) as an improvement on NER(text only) The paper proposes a multimodal fusion based on a heterogeneous graph of texts and images to mak…...
LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
目录1.题目2.思路3.代码实现(Java)1.题目 在 x 轴上有一个一维的花园。花园长度为 n,从点 0 开始,到点 n 结束。 花园里总共有 n 1 个水龙头,分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数…...
mac tcpdump学习
学习原因 工作上遇到了重启wifi后无法发出mDNS packet的情况,琢磨一下用tcpdump用的命令如下 sudo tcpdump -n -k -s 0 -i en0 -w VENDOR-DUT-INTERFACE.pcapng是在测airplay BCT认证时,官方文档的解决方法。对tcpdump很不了解,现汇总如下的学…...
【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
23.2.21终于拿到六哥的新书 感觉很是不错,打算近期写一写心得之类的 废话不多说,直接开啃 PS:我的建议是阅读完十四讲后再来看这本书,效果应该会很不错。 因为第一章都是介绍之类的我觉得没什么整理的必要,所以直接来…...
广东望京卡牌科技有限公司,2023年团建活动圆满举行
玉兔初临,春天相随,抖擞精神,好运连连。春天是一个万物复苏的季节,来自广东的望京卡牌科技有限公司,也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中,2023望京卡牌目标启动会团结活动正式…...
ts语法如何在Vue3中运用?
一、父子传值的用法 父传子:defineProps的TS写法 // 父组件:和 vue2 一样正常传值 <template><div class"login-page"><cp-nav-bar title"登录" right-text"注册"></cp-nav-bar></div> &…...
RK3566添加湿度传感器以及浅析hal层
RK3566添加一款温湿度传感器gxht3x.挂在i2c总线下。驱动部分就不多做解析。大致流程硬件接好i2c线以及vcc gnd。后看数据手册。初始化寄存器,然后要读数据的话读那个寄存器,读出来的数据要做一个转化,然后实现open read write ioctl函数就行了。本文主要…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
