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

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框架&#xff08;https://mvnrepository.com&#xff09; 同上添加其他依赖 <?xml version"1.0" encoding"UTF-8…...

「事务一致性」事务afterCommit

在事务还没有执行完消息就已经发出去了, 导致后续的一些数据或逻辑上的问题产生。场景如下&#xff1a;异步-记录日志&#xff1a;当事务提交后&#xff0c;再记录日志。发送mq消息&#xff1a;只有业务数据都存入表后&#xff0c;再发mq消息。方案1. 利用TransactionSynchroni…...

【深度学习编译器系列】2. 深度学习编译器的通用设计架构

在【深度学习编译器系列】1. 为什么需要深度学习编译器&#xff1f;中我们了解到了为什么需要深度学习编译器&#xff0c;和什么是深度学习编译器&#xff0c;接下来我们把深度学习编译器这个小黑盒打开&#xff0c;看看里面有什么东西。 1. 深度学习编译器的通用设计架构 与…...

图解操作系统

硬件结构 CPU是如何执行程序的&#xff1f; 图灵机的工作方式 图灵机的基本思想&#xff1a;用机器来模拟人们用纸笔进行数学运算的过程&#xff0c;还定义了由计算机的那些部分组成&#xff0c;程序又是如何执行的。 图灵机的基本组成如下&#xff1a; 有一条「纸带」&am…...

【发版或上线项目保姆级心得】

第一步&#xff1a;先在正式环境创建数据库/新增表格或者字段 在数据库表中增加字段/表格&#xff0c;不会报错。 但是切记不要过早数据库字段/表格或者删除字段/表格 第二步&#xff1a;修改配置文件 先将正式环境需要的配置给写好&#xff0c;包括但不仅限于数据库配置、…...

Python数据分析-pandas库入门

pandas 库概述pandas 提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来&#xff0c;它助使 Python 成为强大而高效的数据分析环境。pandas使用最多的数据结构对象是 DataFrame&#xff0c;它是一个面向列&#xff08;column-oriented&#xff09;的二维表…...

MacBook Pro 恢复出厂设置

目录1.恢复出厂设置1.1 按Command-R 键1.2 macOS 实用工具1.3 从 macOS 恢复功能的实用工具窗口中选择“磁盘工具”&#xff0c;然后点按“继续”1.4 在“磁盘工具”边栏中选择您的设备或宗卷。1.5 点按“抹掉”按钮或标签页1.6 抹掉OS X HD - 数据 完成1.7 抹掉 OS X HD1.8 查…...

googletest 笔记

什么是一个好的测试 1 测试应该是独立的和可重复的。调试一个由于其他测试而成功或 失败的测试是一件痛苦的事情。googletest 通过在不同的对象上 运行测试来隔离测试。当测试失败时&#xff0c;googletest 允许您单独运 行它以快速调试。 2 测试应该很好地“组织”&#xff0c…...

MySQL修改密码的几种方式?

第一种方式&#xff1a; 最简单的方法就是借助第三方工具Navicat for MySQL来修改。方法如下&#xff1a; 1、登录mysql到指定库&#xff0c;如&#xff1a;登录到test库。 2、然后点击上方"用户"按钮。 3、选择要更改的用户名&#xff0c;然后点击上方的"编辑用…...

关于画一个句号--基于2022年终总结的反思与分享

没有平台鼓风造势&#xff0c;今年各大平台没有涌现出一批总结&#xff0c;非常清爽 正如同人发明了抽屉&#xff0c;将杂物进行整理、丢弃、收纳&#xff0c;才能对空间进行更合理地使用。我们也需要对知识、过往经历进行整理、丢弃、收纳&#xff0c;才能对大脑进行更合理地…...

学习Flask之三、模板

学习Flask之三、模板 书写易于维护的应用的关键是书写整洁和良构的代码。到目前为止你所见的例子过于简单而不能体现这点。把两个目的完全独立的Flask view 函数当作一个来写&#xff0c;会产生问题。view函数的一个显然的任务是对请求作出响应&#xff0c;如前面的例子所示。对…...

2023-02-20干活小计:

所以我今天的活开始了&#xff1a; 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.代码实现&#xff08;Java&#xff09;1.题目 在 x 轴上有一个一维的花园。花园长度为 n&#xff0c;从点 0 开始&#xff0c;到点 n 结束。 花园里总共有 n 1 个水龙头&#xff0c;分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数…...

mac tcpdump学习

学习原因 工作上遇到了重启wifi后无法发出mDNS packet的情况&#xff0c;琢磨一下用tcpdump用的命令如下 sudo tcpdump -n -k -s 0 -i en0 -w VENDOR-DUT-INTERFACE.pcapng是在测airplay BCT认证时&#xff0c;官方文档的解决方法。对tcpdump很不了解&#xff0c;现汇总如下的学…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具

23.2.21终于拿到六哥的新书 感觉很是不错&#xff0c;打算近期写一写心得之类的 废话不多说&#xff0c;直接开啃 PS&#xff1a;我的建议是阅读完十四讲后再来看这本书&#xff0c;效果应该会很不错。 因为第一章都是介绍之类的我觉得没什么整理的必要&#xff0c;所以直接来…...

广东望京卡牌科技有限公司,2023年团建活动圆满举行

玉兔初临&#xff0c;春天相随&#xff0c;抖擞精神&#xff0c;好运连连。春天是一个万物复苏的季节&#xff0c;来自广东的望京卡牌科技有限公司&#xff0c;也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中&#xff0c;2023望京卡牌目标启动会团结活动正式…...

ts语法如何在Vue3中运用?

一、父子传值的用法 父传子&#xff1a;defineProps的TS写法 // 父组件&#xff1a;和 vue2 一样正常传值 <template><div class"login-page"><cp-nav-bar title"登录" right-text"注册"></cp-nav-bar></div> &…...

RK3566添加湿度传感器以及浅析hal层

RK3566添加一款温湿度传感器gxht3x.挂在i2c总线下。驱动部分就不多做解析。大致流程硬件接好i2c线以及vcc gnd。后看数据手册。初始化寄存器&#xff0c;然后要读数据的话读那个寄存器&#xff0c;读出来的数据要做一个转化,然后实现open read write ioctl函数就行了。本文主要…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...