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

文章目录

  • 1.系统概述
  • 2.技术栈
  • 3.系统功能
  • 4.核心代码分析
  • 5. 代码实现
  • 6.实现细节
  • 6.未来改进方向

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity射击游戏开发教程:(29)躲避敌人的子弹射击

在这篇文章中,我将介绍如何创建一个可以使玩家火力无效的敌人。创建的行为如下...... 当玩家向敌人开火时,敌人会向左或向右移动。向左或向右的移动是随机选择的,并在一段时间后停止敌人的移动。如果敌人移出屏幕,它就会绕到另一边。将一个精灵拖到画布上,将其缩小以匹配游…

代码随想录-二叉搜索树①

目录 二叉搜索树的定义 700. 二叉搜索树中的搜索 题目描述: 输入输出示例: 思路和想法: 98. 验证二叉搜索树 题目描述: 输入输出示例: 思路和想法: 530. 二叉搜索树的最小绝对差 题目描述&#x…

几个好用json数据处理工具地址

一、在线JSON转SQL工具 在线JSON转SQL - BTool在线工具软件,为开发者提供方便。 二、免费在线 Excel 到 SQL 转换器 免费在线 Excel 到 SQL 转换器 - bfotool 三、json格式化 JSON在线 | JSON解析格式化—SO JSON在线工具 四、json转实体类 在线JSON转C#实体类&…

python实现支付宝异步回调验签

说明 python实现支付宝异步回调验签,示例中使用Django框架。 此方案使用了支付宝的pythonSDK,请一定装最新版本的,支付宝官网文档不知道多久没更新了,之前的版本pip安装会报一些c库不存在的错误; pip install alipay-…

Nature:使用语义熵检测大语言模型中的幻觉

使用语义熵检测大语言模型中的幻觉 Detecting hallucinations in large language models using semantic entropy 论文阅读摘要研究目标论文图表概述总结关键解决方案语义熵计算:虚构内容检测: 双向蕴涵在大语言模型中的应用上下文的重要性蕴涵估计器 实验设计语义熵计算步骤结…

C++ 实现学生成绩管理系统

C 实现学生成绩管理系统 思路&#xff1a; 定义 Student 类&#xff0c;包含学生的基本信息和成绩。实现添加学生、删除学生、修改成绩、显示所有学生成绩和查找学生的功能。使用向量&#xff08;vector&#xff09;存储学生信息。 #include <iostream> #include <…

Docker Compose 安装以及命令的详细解析

Docker Compose 是一种用于定义和运行多容器Docker应用程序的工具。通过Compose&#xff0c;可以使用YAML文件来配置应用程序所需的所有服务&#xff0c;然后使用单个命令创建并启动所有服务。Docker Compose 提供了一种高效、简洁的方式来管理Docker容器和服务&#xff0c;使得…

文献解读-基准与方法研究-第十五期|《不同 DNA 测序平台的标准化比较》

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;结构变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;Standardized Comparison of Different DNA Sequencing Platforms标题&#xff08;中文&#xff09;&#xff1a;不同 DNA…

CSS Border(边框)

CSS Border(边框) 引言 在网页设计中&#xff0c;边框是增强元素视觉效果和页面布局的重要工具。CSS 提供了丰富的边框样式属性&#xff0c;允许开发者自定义边框的宽度、颜色、样式等。本文将详细介绍 CSS 边框的相关属性&#xff0c;包括基本用法和高级技巧&#xff0c;帮助…

【规范】Git分支管理,看看我司是咋整的

前言 &#x1f34a;缘由 Git分支管理好&#xff0c;走到哪里都是宝 &#x1f3c0;事情起因&#xff1a; 最近翻看博客中小伙伴评论时&#xff0c;发现文章【规范】看看人家Git提交描述&#xff0c;那叫一个规矩一条回复&#xff1a; 本狗亲测在我司中使用规范的好处&#xf…

windows电脑如何使用计划任务定时重启电脑

下面是亲测可用。 1.windows设置-搜索控制面板-系统和安全-管理工具–计划任务 这时候开始创建计划任务了 1.创建基本任务 2.填写名称&#xff08;这里根据需要自己填写&#xff09; 2.触发器里选择&#xff1a;每日&#xff0c;下一步 3.修改时间&#xff0c;然后点击下…

解密智慧校园学工管理系统的学生机构功能

智慧校园学工管理系统中的“学生机构”功能&#xff0c;是专为促进学生组织高效运作和校园文化繁荣而设计的一套数字化管理工具。它从多个维度出发&#xff0c;全面覆盖学生组织的生命周期管理&#xff0c;确保学生自治能力和校园活力得到显著提升。 首先&#xff0c;这一功能支…

【0291】Postgres内核之dynahash源码实现(1)

0. 新建 dynahash(dynamic hash table) Postgres内核中创建一个新的动态哈希表是由函数:hash_create() 完成。 该函数声明于 hsearch.h头文件中,其原型如下: extern HTAB *hash_create(const char *tabname, long nelem,HASHCTL *info, int flags);函数功能:创建一个新…

构造函数深入理解

目录 构造函数构造函数体赋值初始化列表初始化列表格式初始化列表的意义以及注意点const修饰的成员变量初始化对象成员具体初始化的地方缺省值存在的意义例子1例子2 初始化与赋值引用成员变量的初始化注意点1注意点2我的疑惑 自定义类型成员初始化例子1例子2例子3例子4 初始化列…

平衡二叉查找树和多路查找树

平衡二叉查找树 普通平衡二叉查找树 平衡二叉树定义是按照有序排列成树状&#xff0c;左子树数据大于右子树&#xff0c;任意节点的左右子树高度不能大于1 优点&#xff1a;可以保证绝对的平衡 缺点&#xff1a;当进行删除节点和新增节点&#xff0c;树进行自平衡的时候&…

Springboot 敏感词过滤

参考&#xff1a;网站是怎么屏蔽脏话的呢&#xff1a;简单学会SpringBoot项目敏感词、违规词过滤方案_springboot 项目关键词过滤-CSDN博客 【敏感词过滤】_wx60d2a462203aa的技术博客_51CTO博客 1、添加依赖 <dependency><groupId>com.github.houbb</group…

筛斗数据:开启数据提取与治理的新篇章

在数字化转型的浪潮中&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;如何从海量、复杂的数据中准确提取有价值的信息&#xff0c;并有效治理这些数据&#xff0c;使其成为驱动业务决策的重要力量&#xff0c;成为了众多企业面临的共同挑战。在十堰市这片充满活…

Vanchip新一代WiFi产品全新亮相

1‧ 研讨会介绍 随着 Wi-Fi7 时代的到来&#xff0c;高频信号衰减较高&#xff0c;因此需要外挂 FEM 电路以提高发射信号的增益&#xff0c;从而保障远距离通信的效果和范围。WiFi-FEM 逐渐成为智慧手机、路由器等终端产品中的标配芯片。Vanchip 针对客户的迫切需求&#x…

Python网页正文提取神器: readability库详解

Python网页正文提取神器: readability库详解 1. readability简介2. 安装3. 基本使用3.1 提取文章内容3.2 获取元数据 4. 高级功能4.1 自定义选项4.2 处理非标准HTML 5. 实际应用示例5.1 批量提取新闻文章5.2 创建简单的阅读模式 6. 性能优化7. 注意事项和局限性8. 总结 在网络爬…

【高精度实验】PFA具塞试管 四氟塞子 实验室分析专用

PFA具塞试管&#xff0c;以其四氟塞子的卓越密封性能&#xff0c;为实验室的精确度和安全性提供了双重保障。以下是针对PFA具塞试管的营销文案&#xff0c;特别强调其四氟塞子的特性&#xff1a; 【四氟密封&#xff0c;科研无忧】 在追求极致精确的科研世界里&#xff0c;PF…