(1)对所有的快递按照在list中的位置进行编号,以便按照编号查看快递,以及按照要求查看快递的编号;将编号以后的内容存放到一个excel表格中,要求表格各列的列名分别为“编号”,“省(直辖市/自治区)”,“具体地址”,“姓名”其内容如名; (2)在图形窗口放置“直方图”,“省->编号” “编号->省”三个按钮; (3)当点击直方图按钮时,在图形窗口显示各省的快递量的直方图,以便按省分配运力; (4)当点击“省->编号”按钮时,使用多线程方法在命令窗口或者控制台提示“请输入省份:”并等待输入,当输入某个省的名字(全名或简称,如对于内蒙古自治区可以输入内蒙、内蒙古或内蒙古自治区)时,显示该省所有快递的编号以方便分拣; (5)当点击“编号->省”按钮时,使用多线程方法在命令窗口或控制台提示“请输入编号:”并等待输入,当输入编号时,显示该编号对应的省份信息,以便对单个快递所处省份进行确认。完整代码
时间: 2024-04-06 11:31:43 浏览: 90
java 中List按照date排序的实现
以下是一个实现上述功能的示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
import threading
# 创建一个快递列表
express_list = [
{"姓名": "张三", "地址": "北京市朝阳区", "省份": "北京"},
{"姓名": "李四", "地址": "上海市浦东新区", "省份": "上海"},
{"姓名": "王五", "地址": "广州市天河区", "省份": "广东"},
{"姓名": "赵六", "地址": "深圳市福田区", "省份": "广东"},
{"姓名": "钱七", "地址": "重庆市渝北区", "省份": "重庆"},
{"姓名": "孙八", "地址": "成都市高新区", "省份": "四川"},
{"姓名": "周九", "地址": "武汉市江汉区", "省份": "湖北"},
{"姓名": "吴十", "地址": "南京市秦淮区", "省份": "江苏"},
]
# 对所有快递按照在list中的位置进行编号,存放到一个DataFrame中
express_df = pd.DataFrame(express_list, columns=["姓名", "地址", "省份"])
express_df.index.name = "编号"
# 将DataFrame中的数据存储到excel表格中
express_df.to_excel("express.xlsx")
# 创建一个图形窗口
fig, ax = plt.subplots()
# 定义一个函数,用于绘制各省的快递量直方图
def draw_province_histogram():
# 按照省份分组计数
province_count = express_df.groupby("省份").size()
# 绘制直方图
province_count.plot(kind="bar", ax=ax)
# 设置x轴标签
ax.set_xlabel("省份")
# 设置y轴标签
ax.set_ylabel("快递量")
# 显示图形窗口
plt.show()
# 定义一个函数,用于根据省份查找快递编号
def find_express_by_province():
# 提示用户输入省份名称
province_name = input("请输入省份名称:")
# 使用loc函数筛选出符合条件的快递编号
express_ids = express_df.loc[express_df["省份"].str.contains(province_name)]["编号"]
# 显示查找结果
if len(express_ids) > 0:
print("符合条件的快递编号为:")
print(express_ids)
else:
print("未找到符合条件的快递")
# 定义一个函数,用于根据快递编号查找省份信息
def find_province_by_express():
# 提示用户输入快递编号
express_id = input("请输入快递编号:")
# 使用loc函数查找符合条件的省份信息
province = express_df.loc[int(express_id)]["省份"]
# 显示查找结果
if province:
print("该快递所处省份为:", province)
else:
print("未找到该快递的省份信息")
# 创建三个按钮,分别对应直方图、省->编号、编号->省三个功能
btn_histogram = threading.Thread(target=draw_province_histogram)
btn_province_to_id = threading.Thread(target=find_express_by_province)
btn_id_to_province = threading.Thread(target=find_province_by_express)
# 启动程序,等待用户点击按钮
while True:
print("请选择功能:")
print("1. 直方图")
print("2. 省->编号")
print("3. 编号->省")
choice = input("请选择功能编号:")
if choice == "1":
# 点击直方图按钮,启动绘图线程
btn_histogram.start()
btn_histogram.join()
elif choice == "2":
# 点击省->编号按钮,启动查找线程
btn_province_to_id.start()
btn_province_to_id.join()
elif choice == "3":
# 点击编号->省按钮,启动查找线程
btn_id_to_province.start()
btn_id_to_province.join()
else:
print("输入有误,请重新选择")
```
需要注意的是,以上代码中的省份名称、快递编号等信息都是示例数据,实际应用中需要根据实际情况进行修改。此外,为了避免界面卡顿,我们使用了多线程的方式来执行按钮对应的功能。
阅读全文