python项目实战(二手房屋出租系统)

发布于:2024-07-04 ⋅ 阅读:(82) ⋅ 点赞:(0)


在当今数字化时代,自动化和数字化管理工具对于提高效率至关重要。在这篇博客中,我们将一起探索如何使用Python编程语言来创建一个简单的二手房屋出租管理系统。这个系统将帮助房产所有者、中介和客户高效地管理房屋信息。

1.系统概述

我们的系统旨在提供一个用户友好的界面,使用户能够执行基本的房屋管理任务,如注册、登录、添加房屋信息、删除房屋信息以及查看所有可用房屋。

2.技术栈

  • Python:作为一种高级编程语言,Python以其简洁性和易读性而闻名,非常适合快速开发。
  • 控制台界面:为了保持简单,我们使用Python的标准输入输出来创建控制台界面。

3.系统功能

  1. 用户注册与登录:用户可以根据自己的角色(房主、中介或客户)注册和登录系统。
  2. 房屋信息管理
    • 房主可以添加和删除房屋信息。
    • 中介可以联系房主和客户。
    • 客户可以查看房屋信息并预约看房。
  3. 房屋信息展示:系统允许所有用户查看所有可用房屋的详细信息。

4.核心代码分析

以下是系统的核心组件和它们的基本实现:

  • House 类:用于创建房屋对象,包含地址、房间数、卫生间数、价格和所有者用户名等属性。
  • menu 函数:显示系统菜单,允许用户选择不同的操作。
  • sign_in 和 enroll 函数:分别处理用户的登录和注册。
  • add_house 和 delete_house 函数:允许房主添加和删除房屋信息。
  • owner_menuagent_menu 和 customer_menu 函数:为不同角色提供特定的菜单选项。

5. 代码实现

# 二手房屋出租管理系统  
  
# 用户数据库模拟  
users = {  
    "owner": {},  
    "agent": {},  
    "customer": {}  
}  
  
# 房屋信息数据库模拟  
houses = []  
  
class House:  
    def __init__(self, address, rooms, bathrooms, price, owner_username):  
        self.address = address  
        self.rooms = rooms  
        self.bathrooms = bathrooms  
        self.price = price  
        self.owner_username = owner_username  # 存储房主的用户名  
  
    def display_details(self):  
        print(f"地址: {self.address}")  
        print(f"房间数: {self.rooms}")  
        print(f"卫生间数: {self.bathrooms}")  
        print(f"价格: {self.price}")  
        print(f"所有者: {self.owner_username}")  
        print("-------------------------------")  
  
def menu():  
    print('-----------------------------------')  
    print('|      欢迎来到二手房屋出租管理系统     |')  
    print('|                                 |')  
    print('|             1.登录               |')  
    print('|             2.注册               |')  
    print('|             3.退出               |')  
    print('|                                 |')  
    print('-----------------------------------')  
  
def sign_in():  
    print('-----------------------------------')  
    print('|          请选择要登录的对象         |')  
    print('|                                 |')  
    print('|             1.房主               |')  
    print('|             2.中介               |')  
    print('|             3.客户               |')  
    print('-----------------------------------')  
    role_option = int(input("请选择角色:"))  
    username = input("请输入用户名:")  
    password = input("请输入密码:")  
  
    if role_option == 1:  
        if username in users["owner"] and users["owner"][username] == password:  
            print(f"欢迎回来,房主 {username}!")  
            owner_menu(username)  
        else:  
            print("登录失败,用户名或密码错误。")  
  
    elif role_option == 2:  
        if username in users["agent"] and users["agent"][username] == password:  
            print(f"欢迎回来,中介 {username}!")  
            agent_menu(username)  
        else:  
            print("登录失败,用户名或密码错误。")  
  
    elif role_option == 3:  
        if username in users["customer"] and users["customer"][username] == password:  
            print(f"欢迎回来,客户 {username}!")  
            customer_menu(username)  
        else:  
            print("登录失败,用户名或密码错误。")  
  
def enroll():  
    print('-----------------------------------')  
    print('|          请选择要注册的对象         |')  
    print('|                                 |')  
    print('|             1.房主               |')  
    print('|             2.中介               |')  
    print('|             3.客户               |')  
    print('-----------------------------------')  
    role_option = int(input("请选择角色:"))  
    username = input("请输入用户名:")  
    password = input("请输入密码:")  
  
    global users  # 声明使用全局变量users  
  
    if role_option == 1:  
        if username in users["owner"]:  
            print("注册失败,房主用户名已存在。")  
        else:  
            users["owner"][username] = password  
            print("房主注册成功!")  
  
    elif role_option == 2:  
        if username in users["agent"]:  
            print("注册失败,中介用户名已存在。")  
        else:  
            users["agent"][username] = password  
            print("中介注册成功!")  
  
    elif role_option == 3:  
        if username in users["customer"]:  
            print("注册失败,客户用户名已存在。")  
        else:  
            users["customer"][username] = password  
            print("客户注册成功!").  
  
def add_house(owner_username):  
    if owner_username not in users["owner"]:  
        print("错误:房主用户不存在,请先注册。")  
        return  
  
    address = input("请输入房屋地址:")  
    rooms = int(input("请输入房间数:"))  
    bathrooms = int(input("请输入卫生间数:"))  
    price = float(input("请输入价格:"))  
  
    house = House(address, rooms, bathrooms, price, owner_username)  
    houses.append(house)  
    print("房屋信息添加成功!")  
  
def delete_house(owner_username):  
    address = input("请输入要删除的房屋地址:")  
    house_to_delete = None  
  
    for house in houses:  
        if house.address == address and house.owner_username == owner_username:  
            house_to_delete = house  
            break  
  
    if house_to_delete:  
        houses.remove(house_to_delete)  
        print("房屋信息删除成功!")  
    else:  
        print("未找到该房屋信息或权限不足。")  
  
def owner_menu(username):  
    while True:  
        print('-----------------------------------')  
        print(f'|         欢迎回来,房主 {username}!         |')  
        print('|                                 |')  
        print('|         1.添加房屋信息           |')  
        print('|         2.删除房屋信息           |')  
        print('|         3.退出登录               |')  
        print('|                                 |')  
        print('-----------------------------------')  
        option = int(input("请选择操作:"))  
  
        if option == 1:  
            add_house(username)  
        elif option == 2:  
            delete_house(username)  
        elif option == 3:  
            break  
        else:  
            print("无效选项,请重新选择。")  
  
def contact_owner(agent):  
    print('-----------------------------------')  
    print('|         联系房主                 |')  
    print('-----------------------------------')  
    # 实现联系房主的逻辑  
  
def contact_customer(agent):  
    print('-----------------------------------')  
    print('|         联系客户                 |')  
    print('-----------------------------------')  
    # 实现联系客户的逻辑  
  
def agent_menu(username):  
    while True:  
        print('-----------------------------------')  
        print(f'|         欢迎回来,中介 {username}!         |')  
        print('|                                 |')  
        print('|         1.联系房主               |')  
        print('|         2.联系客户               |')  
        print('|         3.退出登录               |')  
        print('|                                 |')  
        print('-----------------------------------')  
        option = int(input("请选择操作:"))  
  
        if option == 1:  
            contact_owner(username)  
        elif option == 2:  
            contact_customer(username)  
        elif option == 3:  
            break  
        else:  
            print("无效选项,请重新选择。")  
  
def book_house(customer):  
    print('-----------------------------------')  
    print('|         预约看房                 |')  
    print('-----------------------------------')  
    # 实现预约看房的逻辑  
  
def customer_menu(username):  
    while True:  
        print('-----------------------------------')  
        print(f'|         欢迎回来,客户 {username}!|')  
        print('|                                 |')  
        print('|         1.预约看房                |')  
        print('|         2.查看房屋信息             |')  
        print('|         3.退出登录                |')  
        print('|                                 |')  
        print('-----------------------------------')  
        option = int(input("请选择操作:"))  
  
        if option == 1:  
            book_house(username)  
        elif option == 2:  
            display_houses()  
        elif option == 3:  
            break  
        else:  
            print("无效选项,请重新选择。")  
  
def display_houses():  
    print('-----------------------------------')  
    print('|         所有房屋信息            |')  
    print('-----------------------------------')  
    for house in houses:  
        house.display_details()  
  
def main():  
    while True:  
        menu()  
        try:  
            option = int(input('请选择:'))  
        except ValueError:  
            print("请输入一个整数。")  
            continue  
  
        if option == 1:  
            sign_in()  
        elif option == 2:  
            enroll()  
        elif option == 3:  
            print("谢谢使用,再见!")  
            break  
        else:  
            print("无效选项,请重新选择。")  
  
        continue_choice = input("是否继续?(y/n): ")  
        if continue_choice.lower() != 'y':  
            break  
  
# 确保程序的入口  
if __name__ == "__main__":  
    main()

6.实现细节

在实现过程中,我们特别注意了代码的可读性和异常处理。所有的用户输入都进行了验证,以确保它们是有效的整数。此外,我们还使用了异常处理来捕获和处理无效输入。

6.未来改进方向

尽管当前的系统已经能够满足基本需求,但还有许多潜在的改进方向,包括:

  • 实现图形用户界面(GUI)以提升用户体验。
  • 添加数据库支持以实现数据持久化。
  • 增强安全性,例如使用密码散列。
  • 实现更复杂的房屋搜索和过滤功能。

网站公告

今日签到

点亮在社区的每一天
去签到