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

python项目实战(二手房屋出租系统)的更多相关文章

  1. 【Java复健指南09】项目练习全解--房屋出租系统

    一个基于文本界面的综合练习,主要用于串联和回忆知识点,比较简单 各个界面的设计样式 主菜单 =============房屋出租系统菜单============ 1 新 增 房 源 2 查 找 房 屋 ...

  2. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  3. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  4. Python项目实战:福布斯系列之数据采集

    1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据 ...

  5. Java高级项目实战03:CRM系统数据库设计

    接上一篇:Java高级项目实战02:客户关系管理系统CRM系统模块分析与介绍 欢迎点击回顾,接下来我们说说 CRM系统数据库设计. 我们根据产品的原型搞以及UI组的设计稿, 接下来就要设计数据库, 一 ...

  6. 项目实战5—企业级缓存系统varnish应用与实战

    企业级缓存系统varnish应用与实战 环境背景:随着公司业务快速发展,公司的电子商务平台已经聚集了很多的忠实粉丝,公司也拿到了投资,这时老板想通过一场类似双十一的活动,进行一场大的促销,届时会有非常 ...

  7. 4.Python项目实战

    这里会每个周更新一个Python的大练习,作为 实战项目... elk

  8. Python项目实战

    编程只有不断练习才能掌握其精髓,多练练网上的习题和项目,才能掌握python的精髓. Python的模块和包是出了名的多,因此你不必自己从底层开始写起,只需要看懂模块和包的使用文档就可以了,因此掌握一 ...

  9. 【Python项目实战】Pandas:让你像写SQL一样做数据分析(一)

    1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...

  10. Android项目实战_手机安全卫士系统加速

    ## 1.本地数据库自动更新的工作机制1. 开启一个服务,定时访问服务器2. 进行版本对比,如果最新版本比较高,获取需要更新的内容3. 将新内容插入到本地数据库中 ## 2.如何处理横竖屏切换1. 指 ...

随机推荐

  1. 英语.Net多语言开发中的问题

    问题与现象 多语言开发是一件成本很高的事情. 很多公司会退而求其次选择只开发英文版本的软件分发到不同国家,但这里仍存在不同问题. 我们就遇到了这样的问题,参考下面的代码. CultureInfo cu ...

  2. WPF 使用MediaElement,但Source带https会抛出未引用对象实列

    原因和解决办法 如果恰好使用了MediaElement,在调用的时候,会出现空异常 var uri = new Uri("https://xxxx.mp4", UriKind.Re ...

  3. 微信支付APIV3私钥与证书配置

    1.加载商户私钥(privateKey:私钥字符串) 这个私钥是下载证书的的:apiclient_key.pem 2.转换下单时的证书 文档:https://github.com/wechatpay- ...

  4. uview-ui toast 二次封装

    开发用到uview 的toast 很常用的内容使用却很繁琐 所以做了简单封装方便使用 前后对比: this.$refs.uToast.show({ type: 'success', title: '成 ...

  5. 结果集为List如何转为Map<String,List<Entity>>?

    普通写法 Map<String, List<Model>> map = new HashMap<>();// 如何获取相同的num 的对象做运算 for (Mode ...

  6. Linux/Go环境搭建, HelloWorld运行

    package main import "fmt" func main() { fmt.Printf("Hello,World!!!\n") } 以上是Go语言 ...

  7. .NET 智能组件完全开源

    Daniel Roth在2024年3月20日发布了一篇文章: .NET 智能组件简介 – AI 驱动的 UI 控件.文章主要介绍了.NET Smart Components,这是一系列可以快速轻松地添 ...

  8. MATLAB 使用

    MATLAB CLI 启动 MATLAB CLI 交互式界面(需要已安装 MATLAB): matlab -nodesktop -nosplash # 无桌面环境,无启动动画 不启动 MATLAB 直 ...

  9. P 问题和 NP 问题的简单理解

    P/NP问题 | 维基百科 P 问题 P 问题的定义是:所有可以由一个确定型图灵机在多项式表达的时间内解决的问题 P 代表 Polynomial-time (adj. 多项式时间) 简单理解:答案可以 ...

  10. RGB、HSV和HSL颜色空间

    这个文章写的很清楚了 https://zhuanlan.zhihu.com/p/67930839