首页 > 编程语言 >python项目实战(二手房屋出租系统)

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

时间:2024-07-03 22:27:16浏览次数:3  
标签:username option python house ----------------------------------- owner 出租 print 

文章目录


在当今数字化时代,自动化和数字化管理工具对于提高效率至关重要。在这篇博客中,我们将一起探索如何使用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)以提升用户体验。
  • 添加数据库支持以实现数据持久化。
  • 增强安全性,例如使用密码散列。
  • 实现更复杂的房屋搜索和过滤功能。

标签:username,option,python,house,-----------------------------------,owner,出租,print,
From: https://blog.csdn.net/2303_82176667/article/details/140158015

相关文章

  • 【剑指offer】JZ23-链表中环的入口节点-Python解法
    1.题目描述2.解题思路(Python版)方法:双指针法思路:根据题目描述,需要找到一个链表环的入口节点,这个题目可以拆分成三个小问题:(1)如何确定一个链表中是否包含环?(2)如果有环,环中节点的数目如何计算?(3)如何找到环的入口?接下来分别解决上述三个问题:(1)如何确定一个链表中是否包含环:有......
  • 【python小记】使用openpyxl库在同一个工作表下复制单元格(包括它们的值、样式和合并属
    fromopenpyxlimportload_workbook#加载工作簿和工作表wb=load_workbook('test.xlsx')sheet=wb['sheet1']#定义一个函数来复制样式defcopy_style(source_cell,target_cell):ifsource_cell.has_style:target_cell.font=source_cell.font.co......
  • Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • 【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法
    一、介绍坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实('杏仁','巴西坚果','腰果','椰子','榛子','夏威夷果','山核桃','松子','开心果','核桃')等图片数据集进行训练,得到一个识别精度较高的模型文件,让后......
  • python更新包、pip延时报错,pip check 查询冲突
    pip下载package或者更新package会出现延迟报错的问题,因为python默认使用的是国外镜像,有时候下载非常慢,我们可以选择进行换源,引用国内的镜像资源进行更新或者下载。阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/......
  • Web安全基础学习:Python反序列化漏洞之pickle反序列化
    理论基础序列化与反序列化序列化和反序列化是指用于将对象或数据结构转换为字节流的过程,以便在不同系统之间进行传输或存储,并在需要时重新构造。序列化是指将对象或数据结构转换为字节流的过程。在序列化过程中,对象的状态和数据被转换为一系列字节,这些字节可以按照一定......
  • Python运算符
    一,算数运算符1.什么是算数运算符算数运算符是用于进行数学运算的符号。运算符用于对数字进行加减乘除等数学运算,并返回运算结果。2.算数运算符的分类基础的      加(+) 减(-) 乘(*) 除(/)   四则运算(这些是我们上小学都开始学的了)在Python中还有一些我们经......
  • python的运算符
    算数运算符   python算数运算符有七种,{+,-,*,/,%,//,**}         +表示求和a=10b=20c=a+bprint(c)          -表示相减a=10b=20c=b-aprint(c)    *表示相乘a=10b=20c=a*bprint(c......
  • 这个神器绝了!可视化 Python 打包 exe
     在Python开发中,如何将脚本打包成独立的可执行文件,是许多开发者面临的挑战。特别是在需要将应用程序分发给不具备Python环境的用户时,打包工具显得尤为重要。auto-py-to-exe作为一款强大的Python打包工具,为开发者提供了简便快捷的解决方案。那么,auto-py-to-exe究竟是如何简化......
  • Python预测体重变化:决策树、tf神经网络、随机森林、梯度提升树、线性回归可视化分析吸
    全文链接:https://tecdat.cn/?p=36648原文出处:拓端数据部落公众号在当今的数据驱动时代,机器学习算法已成为解析复杂数据集、揭示隐藏模式及预测未来趋势的重要工具。特别是在医疗健康领域,这些算法的应用极大地提升了我们对疾病预防、诊断及治疗方案的理解与制定能力。本文旨在通......