85-python电网可视化项目-5 - 详解

news/2025/10/25 17:50:05/文章来源:https://www.cnblogs.com/tlnshuju/p/19165773

85-python电网可视化项目-5 - 详解

2025-10-25 17:47  tlnshuju  阅读(0)  评论(0)    收藏  举报

1. 输出变电站的设备信息

控制台输出参见下面:
✅连接到MySQL数据库
⚡ 欢迎使用XXX电网管理系统
====================================
*****登录系统******
请输入用户名:admin
请输入用密码:admin
✅连接到MySQL数据库
恭喜您admin登录成功了
====================================
国家电网管理系统
====================================
当前用户: 系统管理员 (admin)
1. 查看变电站列表
2. 查看设备列表
3. 查看最新电力数据
4. 创建工单
5. 查看我的工单
6. 系统日志
7. 退出
------------------------------------
请选择功能[请输入1--7之间的数字]:2
✅连接到MySQL数据库
请选择变电站:
1. 东区变电站           市东开发区
2. 中心变电站           市中心区
请选择编号:1
✅连接到MySQL数据库
变电站中心变电站的设备列表:
------------------------------------
ID   名称                   类型           型号              序列号             状态
------------------------------------
3    电容器组C1               capacitor    BFF11-100-1W    CAP110-001      normal
------------------------------------
====================================
国家电网管理系统
====================================
当前用户: 系统管理员 (admin)
1. 查看变电站列表
2. 查看设备列表
3. 查看最新电力数据
4. 创建工单
5. 查看我的工单
6. 系统日志
7. 退出
------------------------------------
请选择功能[请输入1--7之间的数字]:7
✅连接到MySQL数据库
已经退出系统
实现代码:
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File    : main.py
@IDE     : PyCharm
@Author  : 刘庆东
@Date    : 2025/9/25 9:10
主函数类
"""
from power_grid_system import system#和power_grid_system 类中的对象名保持一致
from database import db #数据库的操作
def main():
print("⚡ 欢迎使用XXX电网管理系统")
#登录
while not system.current_user:
#开发登录菜单
if not login_menu():
retry=input("登录失败,重试吗?(y/n)")
if retry.lower() != "y":#用户输入的不是y
print("再见!")
return #系统没有必要继续执行了
#主循环
while True:
# 调用主菜单进行显示
main_menu()
# 登录成功了 看到了主菜单  接下来 做什么?
try:
choice=input("请选择功能[请输入1--7之间的数字]:").strip()
if choice =='1':
view_substations()
elif choice =='2':
view_equipment()
elif choice =='3':
pass
elif choice =='4':
pass
elif choice =='5':
pass
elif choice =='6':
pass
elif choice =='7':
#退出系统 做登出功能
system.login_out()
print("已经退出系统,")
break#结束循环
else:
print("无效选择,请重新输入:")
except Exception as e:
print(f"程序被中断,再见!原因是:{e}")
break#程序终止了结束循环
#查看变电站列表
def view_substations():
# 查看变电站 代码要写在核心业务模块
substations = system.get_substations()
print("变电站列表:")
print(f"{'ID':<4} {'名称':<15} {'位置':<20}"
f" {'电压(KV)':<10} "
f"{'容量(MA)':<10} {'状态':<10} {'负责人'}")
print("_" * 36)
for sub in substations:
print(f"{sub['substation_id']:<4}"
f"{sub['substation_name']:<15}"
f"{sub['location']:<20}"
f"{sub['voltage_level_kV']:<10}"
f"{sub['capacity_MVA']:<10}"
f"{sub['status']:<15}"
f"{sub['operator_name']}"
)
#查看设备列表
def view_equipment():
#获取所有的变电站
substations=system.get_substations()
if not substations:
print("暂无变电站数据")
return
print("请选择变电站:")
for i,sub in enumerate(substations,1):
print(f"{i}. {sub['substation_name']:<15} {sub['location']:<20}")
try:
choice=int(input("请选择编号:"))-1
if 0<=choice<len(substations):
# 获取你选择的变电站
selected_sub = substations[choice]
#获取变电站下面的设备信息
equipments=system.get_equipment_by_substation_id(selected_sub['substation_id'])
print(f"变电站{sub['substation_name']}的设备列表:")
print("-"*36)
#你们写一下 这里的信息 参考68行
print(f"{'ID':<4} {'名称':<20} {'类型':<12} {'型号':<15} {'序列号':<15} {'状态'}")
print("-" * 36)
for eq in equipments:
print(f"{eq['equipment_id']:<4} {eq['equipment_name']:<20} {eq['equipment_type']:<12} "
f"{eq['model']:<15} {eq['serial_number']:<15} {eq['status']}")
#你们补全这列
print("-"*36)
except Exception as e:
print("请输入有效的数字")
#主菜单
def main_menu():
#输出菜单
print("\n" + "=" * 36)
print("      国家电网管理系统")
print("=" * 36)
print(f"当前用户: {system.current_user['full_name']} ({system.current_user['role']})")
print("1. 查看变电站列表")
print("2. 查看设备列表")
print("3. 查看最新电力数据")
print("4. 创建工单")
print("5. 查看我的工单")
print("6. 系统日志")
print("7. 退出")
print("-" * 36)
#登录菜单
def login_menu():
print("\n" + "=" * 36)
print(" *****登录系统******")
username=input("请输入用户名:")
password=input("请输入用密码:")
#调用登录的方法
success_login=system.login(username, password)
#判断一下
if success_login:
print(f"恭喜您{username}登录成功了")
return True
else:
print(f"系统登录失败")
return False
print("\n" + "=" * 36)
if __name__ == '__main__':
main()
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File    : power_grid_system.py
@IDE     : PyCharm
@Author  : 刘庆东
@Date    : 2025/9/24 14:01
核心业务类:
刚开始认为技术最难
其实 业务最难
"""
# 1.导入各种包[模块]
from  database import db#数据库部分
import bcrypt #加密
"""
datetime 表示当前具体的时刻 2025年9月24日 下午02:06
timedelta 代表的是两个时间点之间的差值 比如说 14小时23分钟后进行休息
"""
from datetime import datetime,timedelta
import logging #日志相关
from pyecharts import options as opts
"""
Line 上课学过
使用场景:股票走势、气温变化、销售额度
Bar 上课学过
使用场景:月业绩排名、各个地区的人口数量
Pie 大饼图
使用场景:市场份额占比、预算分配
Gauge 仪表盘
使用场景: KPI、进度、完成率
Grid 布局网格
使用场景: 将一个折线图 和一个柱状图并排显示 !
"""
from pyecharts.charts import Line,Bar,Pie,Gauge,Grid
from pyecharts.globals import ThemeType#主题
class PowerGridSystem:
def __init__(self):#构造方法
self.current_user=None #当前的用户
#登录功能
def login(self,username,password):
try:
query="""
select user_id,
username,
password_hash,
role,
full_name
from users
where username=%s and STATUS='active'
"""
#查询返回结果
result= db.execute_query(query,(username,))
if result:
#获取的是第一行数据
user =result[0]
if bcrypt.checkpw(password.encode('utf-8'),user['password_hash'].encode('utf-8')):
#if password=='admin':
self.current_user=user #将用户信息赋值给 current_user
#返回之前进行日志的记录工作
self.log_action("login",
"user",
user['user_id'],
f"用户{username}登录")
return True#代表登录成功了
except Exception as e:
logging.error(f"登录失败{e}")
return False
#所有的操作 都需要进行日志的记录
def log_action(self,action, target_type, target_id, details):
query="""
insert into system_logs
(user_id, action, target_type, target_id, details)
values (%s,%s,%s,%s,%s)
"""
#获取user_id
user_id= self.current_user['user_id'] if self.current_user else None
db.execute_update(query,(user_id,action,target_type,target_id,details))
#登出的方法
def login_out(self):
if self.current_user:#用户不为空
# 先进行日志的记录
self.log_action("logout",
'user',
self.current_user['user_id'],
f"用户{self.current_user['username']}登出")
self.current_user = None#给当前的登录用置空
#获取变电站信息
def get_substations(self):
#操作数据库的sql语句  任务
query="""
select s.*,u.full_name as operator_name
from substations s
left join users u on s.operator_id = u.user_id
order by s.substation_name;
"""
return  db.execute_query(query)
#通过变电站的id获取设备信息
def get_equipment_by_substation_id(self,substation_id):
sql="""
select e.*,s.substation_name from equipment e
join substations s on e.substation_id = s.substation_id
where e.substation_id=%s
order by  e.equipment_name
"""
return db.execute_query(sql,(substation_id,))
#测试
system= PowerGridSystem()
#system.login("admin","admin")
温馨提示:注意新增代码部分!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解码Linux文件IO之开机动画原理与实现

开机动画核心原理 开机动画的本质是利用人眼视觉暂留效应,通过连续播放静态图像(帧),让大脑产生 “动态画面” 的错觉,核心需掌握两个关键概念: 视觉暂留效应定义:当光信号停止作用于人眼后,视网膜上的视觉印象…

P2135 方块消除 题解

P2135 方块消除 思路 这种肯定是区间 DP 题,转移就形如两个区间拼起来。但是发现转移显然有点假,因为题目还有一种情况是先消掉中间的,将两边两种颜色相同的拼起来再消

2025 年展会展台搭建设计公司最新推荐榜,聚焦服务能力与专业水平深度解析美国‌/法国/德国/俄罗斯/英国/日本/泰国/迪拜/西班牙/丹麦/挪威展会展台搭建设计商推荐指南

引言 在展会经济持续发展的当下,展台作为企业展现品牌形象、对接市场资源的关键窗口,其设计搭建质量直接关系到企业参展成效。然而当前市场上展会展台搭建设计公司数量繁杂,部分企业存在服务网络有限、设计创意不足…

2025年10月心式喷雾干燥机厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析

在制药、化工及食品行业工艺升级的推动下,心式喷雾干燥机市场正迎来新一轮技术革新,高效节能与智能化控制成为行业核心竞争要素。 心式喷雾干燥机作为将液态物料转化为干燥粉末的关键设备,其技术水平直接影响最终产…

2025 年液态硅胶设备厂家最新推荐榜,技术实力与市场口碑深度解析

引言 为精准筛选液态硅胶设备领域优质源头厂家,中国橡胶工业协会硅胶制品分会联合行业权威测评机构,于 2024 年第四季度启动 2025 年度液态硅胶设备品牌测评工作。本次测评采用 “三维九项” 评估体系,从技术实力(…

2025 年不锈钢通风柜厂家最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析

中国实验室设备市场规模预计在2025年将突破680亿元,其中不锈钢通风柜年需求量达28万台,年增长率稳定在12%以上。 不锈钢通风柜作为实验室核心安全设备,其市场需求随着科研投入增加和实验室标准化建设持续推进而稳步…

2025 年不锈钢管制造厂家最新推荐榜,深度剖析企业技术实力与市场口碑展现优质品牌不锈钢矩形管/不锈钢管材/不锈钢异行管/不锈钢毛细管公司推荐

引言 当前不锈钢方管市场需求日益增长,但行业乱象也随之凸显。部分企业为降低成本使用劣质原材料,致使产品易腐蚀、变形,给工程安全埋下隐患;多数厂家缺乏创新能力,产品同质化严重,难以满足高端场景个性化需求;…

2025 年阳台光伏品牌最新推荐榜,技术实力与市场口碑深度解析产品/阳台太阳能光伏/储能/发电/阳台光伏板优质厂家推荐

引言 伴随分布式能源需求年增 23%,阳台光伏已成为家庭能源转型的核心选择,但市场 300 余个品牌中仅 12% 通过国家 CQC 全项认证,品质参差不齐的问题显著。为破解选择难题,本次榜单由中国光伏行业协会联合 HTW 检测…

使用戴尔T3680工作站与DoraCloud搭建多人虚拟工作站

使用戴尔T3680工作站与DoraCloud搭建多人虚拟工作站一台高性能工作站,配合先进的虚拟化技术,就能让多个设计师同时流畅运行专业设计软件。传统的设计工作站模式通常是一人一机,硬件资源无法充分利用,且数据分散存在…

2025 年最新推荐炼铅炉实力厂家排行榜:含废电瓶 / 反射 / 大型等类型设备,权威测评下优质品牌盘点

引言 为助力冶炼企业精准筛选优质冲天炼铅炉设备,中国有色金属工业协会联合行业权威检测机构开展 2025 年度冲天炼铅炉厂家测评工作。本次测评采用 “三维九项” 评估体系,从技术性能(含能耗控制、生产效率、环保指…

权威调研榜单:自动控制器厂家TOP3榜单好评深度解析

2025年自动控制器厂家最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析 自动控制器作为工业自动化核心部件,市场规模持续增长,2025年全球市场规模预计达3850亿元,中国成为最大单一市场,占比35…

2025 年异构烷供应厂家推荐:异构十二烷、异构十四烷、异构十六烷、异构二十烷最新推荐榜,聚焦企业技术实力与市场口碑深度解析

引言 随着工业润滑领域对高性能基础原料需求的攀升,异构烷烃产品的品质与供应稳定性愈发关键。为精准筛选优质供应企业,本次推荐榜联合中国润滑油协会、工业润滑材料技术创新联盟开展测评,采用 “三维九项” 评估体…

2025 年冲压油供应厂家最新推荐榜,聚焦技术实力与市场口碑深度解析锈钢/翅片/高速/挥发性/免清洗冲压油厂家推荐

引言 为精准筛选适配空调加工行业的优质翅片冲压油供应厂家,中国润滑油工业协会联合空调制造技术研究院开展 2025 年度行业测评,测评覆盖全国 32 个省市共 89 家供应企业。本次测评采用 “三维九项” 评估体系,从技…

面试清单:JVM类加载与虚拟机执行核心障碍

面试清单:JVM类加载与虚拟机执行核心障碍pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

2025年热门的用地预审技术服务供应商、市面上用地预审技术服务公司、行业内用地预审技术服务品牌、市场用地预审技术服务方案、2025年用地预审技术服务单位综合评测

摘要 用地预审技术服务行业随着国土空间规划优化和基础设施建设加速,近年来呈现快速增长趋势,2025年预计市场规模将突破百亿元。企业需高效、专业的服务支持项目审批,本文基于行业数据和服务案例,提供前十名供应商…

湿地铁魂与盐韵共生:盐城城市旅游宣传片的专业化叙事构建 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Microsoft AI Genius | 用智能 Microsoft Copilot 副驾驶 构建高韧性 DevOps 流程

在现代软件开发的快节奏环境中,DevOps 的效率与韧性已成为企业竞争力的关键。而当 AI 融入 DevOps,工作方式正被彻底重塑——从智能代码建议到自动化运维,从日志洞察到自愈基础设施,Azure 和 GitHub 的智能 Micros…

2025 年镀锌方管制造厂家最新推荐排行榜:聚焦广东佛山优质品牌,助力工程采购精准选型异形/Q235/冷轧带钢/热浸/热/冷/热镀锌方管立柱厂家推荐

引言 在建筑、交通、市政等领域高速发展的当下,热镀锌方管立柱因出色的防腐性与结构稳定性,成为工程项目核心构件。但当前市场乱象频发,部分厂商原材料以次充好、加工工艺不达标,导致产品易变形腐蚀,且售后服务滞…

AppSec与事件响应的融合实践

本文深入探讨应用安全与事件响应的交叉领域,涵盖SIEM工具使用、WAF紧急规则部署、安全设计原则以及OWASP Top 10中的日志监控漏洞等关键技术要点,帮助读者掌握应用安全事件应对的基础知识。AppSec IR | Tryhackme Aa…

当虹云

当虹云https://www.danghongyun.com/xmt/index.html