Files

84 lines
2.8 KiB
Python
Raw Permalink Normal View History

2026-05-21 21:28:04 +08:00
from house.house_operation import read_houses, write_houses
from house.house_operation import read_stack, write_stack
# V3.0 导入地址与邻接矩阵操作
from house.address_operation import parse_address, save_address_info, get_address_info
from house.address_operation import add_community, set_distance, get_adj_matrix
from datetime import datetime
# V1.0 + V2.0 原有代码完全保留(此处省略重复代码,直接使用V2.0内容)
def get_next_house_id():
houses = read_houses()
if not houses:
return 1
max_id = max(house["id"] for house in houses)
return max_id + 1
def add_house(address, price, area, house_type):
if not address or not house_type:
print("错误:地址和户型不能为空!")
return False
if not isinstance(price, (int, float)) or price <= 0:
print("错误:租金必须是正数!")
return False
if not isinstance(area, (int, float)) or area <= 0:
print("错误:面积必须是正数!")
return False
new_house = {
"id": get_next_house_id(),
"address": address,
"price": price,
"area": area,
"house_type": house_type
}
houses = read_houses()
houses.append(new_house)
write_houses(houses)
# V3.0 新增:地址解析并保存
addr_info = parse_address(address)
save_address_info(new_house["id"], addr_info)
# V3.0 新增:自动添加小区到邻接矩阵
add_community(addr_info["community"])
print(f"房源新增成功!房源ID{new_house['id']}")
return True
# 原有 delete_house / update_house / query_house 完全不变
# 原有栈操作 push_operation_stack / push_browse_stack 等完全不变
# ==================== V3.0 新增:地址串模糊查询 ====================
def query_by_area(keyword):
"""
串模糊查询:按区域关键词搜索房源
时间复杂度:O(n*L)
"""
houses = read_houses()
result = []
for house in houses:
addr_info = get_address_info(house["id"])
full_addr = f"{addr_info['province']}{addr_info['city']}{addr_info['district']}{addr_info['community']}"
if keyword in full_addr:
result.append(house)
return result
# ==================== V3.0 新增:邻接矩阵管理 ====================
def add_community_distance(community1, community2, distance):
"""添加小区距离(供后续路径规划使用)"""
return set_distance(community1, community2, distance)
def show_adj_matrix():
"""打印邻接矩阵(数组展示)"""
data = get_adj_matrix()
communities = data["communities"]
matrix = data["adj_matrix"]
print("\n===== 小区邻接矩阵 =====")
print("节点列表:", communities)
print("邻接矩阵(9999=不可达):")
for row in matrix:
print(row)