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函数就行了。本文主要…...

看了这份Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点,反打面试官
首先声明: 本书覆盖了近3年程序员面试笔试中超过98%Java高频知识点,当你细细品读完本书后,面试都是小问题。 一书在手/工作不愁 记住重点,考试要考 前言 程序员求职始终是当前社会的一个热点,而市面上有很多关于程…...

从0到1搭建大数据平台之监控
大家好,我是脚丫先生 (o^^o) 大数据平台设计中,监控系统尤为重要。 它时刻关乎大数据开发人员的幸福感。 试想如果半夜三更,被电话吵醒解决集群故障问题,那是多么的痛苦!!! 但是不加班是不可…...

采购评标管理过程是怎样的?有哪些评标标准?
采购活动的评标是检查和比较投标的有组织的过程,以选择最佳报价,努力获得实现企业目标所需的货物、工程和服务。 评标是由一个被称为评标小组的机构负责。这个小组如何称呼,取决于企业的情况。同义词有报价审查小组、投标审查委员会或投标审…...

《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册
杰哥的学术专著《VueSpring Boot前后端分离开发实战》由清华大学出版社于2021年3月首次出版发行,虽受疫情影响但热度不减,受到业界读者的热捧,截至今日加印5次,累计发行12000册,引领读者开发前后端分离项目,…...

类与类之间的关系有哪几种?
文章目录程序设计要素1.可读性2.健壮性3.优化4.复用性5.可扩展性设计类的关系遵循的原则1、 高内聚低耦合2、面向对象开发中 “针对接口编程优于针对实现编程”,”组合优于继承” 的总体设计类与类之间的关系(即事物关系) A is-a B 泛化&…...

LeetCode 606.根据二叉树创建字符串,102.二叉树的层序遍历和牛客 二叉搜索树与双向链表
文章目录1. 根据二叉树创建字符串2. 二叉树的层序遍历3. 二叉搜索树与双向链表1. 根据二叉树创建字符串 难度 简单 题目链接 解题思路: 这里的意思就是:用前序遍历遍历这颗树。然后左子树和右子树分别在一个括号里。括号里的规则是: 1.左右都…...

02-18 周六 图解机器学习之SMV 第五章5-2
02-18 周六 图解机器学习之SMV 第五章5-2时间版本修改人描述2023年2月18日11:47:18V0.1宋全恒新建文档 环境 程序的基本环境,是使用了jupyter,在容器中运行的。 简介 本程序主要演示支持向量的获取,支持向量是距离超平面最近的点组成的。程序…...

Spring Boot系列--创建第一个Spring Boot项目
1.项目搭建 在IDEA中新建项目,选择Spring Initializr。 填写项目信息: 选择版本和Spring Web依赖: Spring Web插件能为项目集成Tomcat、配置dispatcherServlet和xml文件。此处选择的版本若为3.0.2的话会出现如下错误: java: …...

手把手教你用React Hook和TypeScript从零实现虚拟滚动列表组件
前言 k8s 全称 kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,集应用的部署和运维,负载均衡,服务发现和扩容,版本回滚于一身,越来越多的公司正在拥…...

界面控件DevExpress WPF Pivot Grid——拥有强大多维数据分析能力!
界面控件DevExpress WPF的Pivot Grid组件是一个类似excel的数据透视表,用于多维数据分析和跨选项卡报表生成。它拥有众多的布局自定义选项,允许开发者完全控制其UI且以用户为中心的功能使其易于部署。PS:DevExpress WPF拥有120个控件和库&…...