Python基础教程——制作一个宿舍管理系统(完整版,附源码)

今天我们一起学习一个新的小案例——宿舍管理系统。主要涉及列表、字典的初始化、增加、删除、修改和查询操作,以及函数的定义和调用。

一、需求:

  1. 有操作指引界面,显示操作号

  2. 能添加一个新的入住学生信息,包括学生姓名、宿舍号+床位号(如313-3)、班级、入住情况(在校or请假)

  3. 能删除一个学生的住宿信息,输入名字查询,存在则删除并提示已删除,假如不存在则提示,系统不存在该学生的信息。

  4. 能修改一个学生的住宿信息,输入名字查询,存在则让用户重新输入修改信息,并提示已修改,假如不存在则提示,系统不存在该学生的信息。

  5. 能查询一个学生的住宿信息,输入名字查询,存在则给出该学生的住宿信息,假如不存在则提示,系统不存在该学生的信息。

  6. 能显示所有学生的住宿信息

  7. 能显示所有请假学生的住宿信息

  8. 能退出系统

    在这里插入图片描述

二、代码编写

1.定义一个全局变量列表存放所有学生信息

# 全局变量用来存储所有学生信息
student_infors = []

2.定义软件提示界面函数

def Directory():
#学生宿舍管理系统 V1.0
# 1打印功能提示
print('=' * 50)
print('学生宿舍管理系统 V1.0')
print('1:添加一个新的入住学生信息')
print('2:删除一个学生的住宿信息')
print('3:修改一个学生的住宿信息')
print('4:查询一个学生的住宿信息')
print('5:显示所有的学生的住宿信息')
print('6.显示所有请假学生的信息')
print('7:退出系统')
print('=' * 50)

3.定义添加一个学生住宿信息函数

#添加学生信息函数
def  Add_infor():
# 定义一个新的字典,用来存储一个新的学生信息
new_infor = {}
new_infor['student_name'] = input('请输入新入住的学生名字:')
new_infor['D_num'] = input('请输入宿舍号+床位号(如313-3):')
new_infor['Class_num'] = input('请输入班级:')
new_infor['status'] = input('请输入入住情况(在校or请假):')
# 将一个字典,添加到列表中
student_infors.append(new_infor)

4.定义删除一个学生住宿信息的函数

#删除学生信息函数
def Delete_infor():
del_name = input("请输入要删除的退宿学生名字:")
find_flag = False
for line in student_infors:
if line['student_name'] == del_name:
find_flag = True
student_infors.remove(line)
break
if find_flag:
print("已删除!")
else:
print("系统不存在该学生的信息!")

5.定义一个修改一个学生的住宿信息函数

# 修改某个学生的信息
def Update_one_infor():
old_name = input('请输入要修改的学生姓名:')
flag = 0
for line in student_infors:
if line['student_name'] == old_name:
line['student_name'] = input('请输入需要修改的学生名字:')
line['D_num'] = input('请输入需要修改的宿舍号+床位号(如313-3):')
line['Class_num'] = input('请输入需要修改的班级:')
line['status'] = input('请输入需要修改的入住情况(在校or请假):')
flag = True
break
if flag:
print("已修改!")
else:
print('系统不存在该学生的信息!')

6.定义一个查询某个学生的住宿信息函数

# 查找某个学生的信息
def Find_one_infor():
find_nmae = input("请输入要查找的学生姓名:")
find_flag = 0  # 默认表示没有找到
for temp in student_infors:
if find_nmae == temp['student_name']:
print ('学生名字\t宿舍号+床位号\t班级\t\t入住情况')
print('%s\t\t%s\t\t%s\t\t%s' % (temp['student_name'], temp['D_num'], temp['Class_num'], temp['status']))
find_flag = 1  # 表示找到了
break
# 判断是否找到
if find_flag == 0:
print('系统不存在该学生的信息')

7.定义一个显示所有学生住宿信息函数

#查找所有入住学生信息
def Find_all_infor():
print ('学生名字\t宿舍号+床位号\t班级\t\t入住情况')
for temp in student_infors:
print('%s\t\t%s\t\t%s\t\t%s' % (temp['student_name'], temp['D_num'], temp['Class_num'], temp['status']))

8.定义一个显示所有请假学生住宿信息函数

def Find_leave ():
leave_flag = 0  # 默认表示没有找到
print ('学生名字\t宿舍号+床位号\t班级\t\t入住情况')
for temp in student_infors:
if temp['status']== '请假' :
print('%s\t\t%s\t\t%s\t\t%s' % (temp['student_name'], temp['D_num'], temp['Class_num'], temp['status']))
leave_flag = 1  # 表示找到了
# 判断是否找到
if leave_flag == 0:
print('系统不存在请假学生')

9.定义一个主函数,根据软件流程要求组织调用功能函数,实现整个系统的功能。

def main():
Directory()
while True:
# 2获取用户选择
num = input('请输入操作序号:')
if num.isdigit():
num = int(num)
if num == 1:
print('1:添加一个新的入住学生信息')
Add_infor()
elif num == 2:
print('2:删除一个学生住宿信息')
Delete_infor()
elif num == 3:
print('3:修改一个学生住宿信息')
Update_one_infor()
elif num == 4:
print('4:查询一个学生住宿信息')
Find_one_infor()
elif num == 5:
print('5:显示所有的学生住宿信息')
print()
Find_all_infor()
elif num == 6:
print('6:显示所有请假学生信息')
Find_leave()
elif num == 7:
print("已退出系统!")
break
else:
print('输入有误!目前只有1-7项功能哦')
continue
print('')
else:
print("输入错误,请重新输入!1-7")

10.顶格调用主函数,启动软件

main()

一个宿舍管理系统就写好啦!

拓展:大家可以尝试用tinker给软件做界面。也可以考虑使用利用pandas操作Excel文件实现数据的读写和存储。或者使用数据库连接。

看完案例的小伙伴们点个在看,顺便扫码帮忙关注一下呗,你的支持是我继续推新案例的动力。

最后这里免费分享给大家一份Python学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包等!

看下方图片哦(掉落)↓↓↓

Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便****

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249997.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3引入Echarts图表

说明:echarts是父组件,stack是子组件,将stack引入到echarts文件中 查看echarts.vue时可看到stack.vue中的图表 # # # 引入方式 第一步 Echarts官网:快速上手 - 使用手册 - Apache ECharts 第二步 在控制台安装Echarts模块…

25.Java程序设计-基于SSM框架的微信小程序校园求职系统的设计与实现

1. 引言 1.1 背景 介绍校园求职系统的背景,说明为什么设计这个系统以及系统的重要性。 1.2 研究目的 阐述设计基于SSM框架的微信小程序校园求职系统的目标和意义。 2. 需求分析 2.1 行业背景 分析校园求职行业的特点和需求,以及目前市场上同类系统…

基于Java的教学信息反馈系统设计与实现(源码+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Java的教学信息反馈…

高频Postman接口测试面试题

一、Postman在工作中使用流程是什么样的? 新建集合管理根据接口所属的模块,在集合中不同模块下编写接口测试用例处理接口之间的数据关联操作添加环境变量在tests tab下中增加断言调试接口,确保接口能被正常调用批量运行用例或者导出通过Newm…

Dubbo 快速入门使用教程

文章目录 Dubbo 介绍Dubbo 入门使用一、Zookeeper 注册中心安装启动二、服务提供方三、服务消费方 Dubbo 介绍 dubbo 2.x版本官方文档 参考 Apache Dubbo 是一款 RPC(Remote Procedure Call 远程过程调用)服务开发框架,提供了远程调用方案和…

RabbitMQ死信队列详解

什么是死信队列 由于特定的**原因导致 Queue 中的某些消息无法被消费,**这类消费异常的数据将会保存在死信队列中防止消息丢失,例如用户在商城下单成功并点击支付后,在指定时间未支付时的订单自动失效死信队列只不过是绑定在死信交换机上的队…

为什么谷歌每年向苹果支付180亿美元“保护费”

在大众印象里,谷歌和苹果似乎处处“水火不容”。 两大科技巨擘在各类产品和服务上竞争,比如操作系统、浏览器、地图、数字助理、手机,数不胜数。但是在这种敌对关系背后,却有着对他们双方都有利的秘密伙伴关系。 你或许不知道&am…

Qt 数据库QSqlDatabase使用记录

记录一些在QT中使用QSqlDatabase操作数据库时,需要注意的地方 创建数据库 bool CDBOperatorAbstract::_openDBConn(CDatabaseConfig config) {QWriteLocker locker(&m_locker);QSqlDatabase db;if(QSqlDatabase::contains(m_connectionName)){db QSqlDatabas…

CloudFlare 优选ip 和 优选域名的获取方法

1.CloudFlare优选IP网站:【链接直达】 2.CloudFlare 优选IP工具:【开源软件】 3.CloudFlare 优选域名:【GitHub开源工具】 4.CF优选域名推荐: time.cloudflare.com shopify.com time.is icook.hk icook.tw ip.sb japan.com malaysia.com rus…

深入学习《大学计算机》系列之第1章 1.2节——问题描述与抽象

一.欢迎来到我的酒馆 第1章 1.2节,问题描述与抽象。 目录 一.欢迎来到我的酒馆二.问题描述、抽象与建模1.什么是抽象2.为什么要抽象3.什么是建模4.建什么模 三.面向计算机的问题分析四.总结 二.问题描述、抽象与建模 什么是抽象?为什么要抽象&#xff1f…

Chrome限制第三方Cookie:未来无法再追踪你看过哪些敏感的“色色”内容了

当我们在浏览网络的时候,常听到「Cookie」这个词,但许多人可能不太清楚它到底是什么。最近,Google 宣布了一项重要更新,Google Chrome 将减少对第三方cookie 的支持,以提高用户隐私保护。 下面我会解释一下这个改变对…

打印机设置发票收据打印

由于各种打印机型号不一样,设置方式打印效果出入也很大,存在打印不全问题,发票右侧小数点后面的数字打印不出来、位置靠上下左右登问题,比较通用的设置方式如下: 首先找到控制面板,找到设备和打印机 进入到…

Aurora8B10B(二) 从手册和仿真学习Aurora8B10B

一. 简介 在上篇文章中,主要结合IP配置界面介绍了一下Aurora8B10B,这篇文章将结合文档来学习一下Aurora8B10B内部的一些细节 和 相关的时序吧。文档主要是参考的是这个 pg046-aurora-8b10b-en-us-11.1 二. Aurora8B10B内部细节 在手册上,对…

弧形导轨的精度等级

为符合工控自动化生产制造必须,弧形导轨在运输武器装备领域应时而生,并已在电子生产制造、手机上、半导体材料、动力锂电池等领域获得广泛运用。其中,弧形导轨的精度等级是评估其运动精度的重要指标,通常包括制造精度和运行精度两…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法,为中小企业实现数字化转型提供了机会。但是,对于一些刚开始触碰低代码平台的企业来说,了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力,并在挑选低代码平台以前为中小企…

【星环云课堂大数据实验】InceptorSQL使用方法

文章目录 一、InceptorSQL概述二、实验环境三、实验准备四、实验目的五、实验步骤5.1 使用Waterdrop连接Inceptor5.2、WordCount5.3、外部表与内部表5.4、普通ORC表5.5、创建ORC事务表5.6、创建ORC分区表5.7、创建ORC分区分桶表 一、InceptorSQL概述 InceptorSQL是一个**分布式…

数据结构-迷宫问题

文章目录 1、题目描述2、题目分析3、代码实现 1、题目描述 题目链接:迷宫问题 、 注意不能斜着走! 2、题目分析 (1)0为可以走,1不能走且只有唯一一条通路 (2)我们可以通过判断上下左右来确定…

开酸奶店为何失败,5年创业者和你分享赚钱经验

我是张峻荣,开鲜奶吧已经有 5 年时间了,在自媒体创业板块也是小有名气,经常在网络上分享一些酸奶店的创业知识。今天我要和大家分享的是开酸奶店失败的原因,以及如何赚钱的经验。 5 年前,是我第一次创业失败&#xff…

activiti并行网关执行时每个关联表的变化

activiti并行网关执行时每个关联表的变化 文章目录 🔊流程图📆 通过请假节点📕通过一个并行节点🖥️再通过一个并行节点🔖再通过校长任务🖊️最后总结 🔊流程图 📆 通过请假节点 &l…

口袋参谋:新品上架,如何获取更多免费流量?

​新品上架 如何获得更多的免费流量? 我相信 这是99.999%的商家,都关心的问题! 今天我就来和大家好好说道说道。 01 流量的组成 新品本身是没有权重的,买家搜不到我们。 如果想要获得更多的免费流量,我们就要知道…