一、语言和环境
1.实现语言:python语言。
2.环境要求:pycharm + mysql。

二、实现功能

使用flask技术开发“好家园房产中介网”的后台管理功能,具体实现功能如下:
1.首页index.html显示现有的所有房产信息,如图1所示。
在这里插入图片描述

图1显示所有房产信息
2.点击页面中的“发布住房信息”超链接,跳转到发布房产页面addHouse.html,初始的页面效果如 下图2所示。该页面首次加载时要从数据库中读取所有的房型信息,并显示在下拉列表框中。

图2 添加房产信息
2.点击图2中 “提交”按钮后,即可实现将用户输入的有效房产信息添加到对应的数据表中。并提示操作成功
3.点击页面中的“汇总住房信息”超链接,即可实现用echarts图表展示不同房型的数据。页面效果如下图3所示

图3 汇总房产信息

注意:
1)页面效果要求用模板继承实现
2)表格要求用bootstrap美化
3)图表展示要求用echarts
三、数据库设计
1.创建数据库(HouseDB)。
2.创建房型表(HouseTypes),结构如下:
字段名 说明 字段类型 长度 备注
HouseTypeID 房型编号 int 主键,自增,增量为1
HouseTypeName 房型名称 varchar 30 非空

创建房产信息表(Houses),结构如下:

字段名 说明 字段类型 长度 备注
HouseID 房产编号 int 主键,自增,增量为1
HouseTypeID 房型编号 int 非空,外键,参照房型表的主键
Area 面积 int 非空
Price 价格 float 非空
Adress 地址 varchar 50 非空
HouseDesc 描述 varchar 100
四、步骤得分
步骤 分值
步骤1:正确创建数据库 10分
步骤2:正确搭建了项目框架 10分
步骤3:正确创建了3个页面 15分,每个页面5分
步骤4:正确完成了查看房产信息的功能 15分
步骤5:正确完成了添加房产信息的功能 15分
步骤6:正确完成了汇总房产信息的功能 15分
步骤7:正确用bootstrap完成了表格美化 10分
步骤8:编码规范,有适量的js验证 10分

所用代码

echarts网址

echarts网址
创建文件夹static和templates,在static文件下创建css和js文件夹
文件下载(static文件夹)点击下面链接!
点击下载static
点击下载数据库

app.py

from flask import  Flask,render_template,request
from  DBHelper import DBHelper
import pandas as pd
global rows
app=Flask(__name__)
@app.route("/")
def index():global rowsdb=DBHelper()sql="select * from HouseTypes  a,Houses b where  a.HouseTypeID=b.HouseTypeID order by HouseID"db.cursor.execute(sql)rows=db.cursor.fetchall()return render_template("index.html",rows=rows)@app.route("/addHouse",methods=["POST","GET"])
def addHouse():global rowsif request.method=="GET":db = DBHelper()sql = "select * from HouseTypes"db.cursor.execute(sql)rowTypes = db.cursor.fetchall()return render_template("addhouse.html", rowTypes=rowTypes)else:HouseTypeID=request.form.get("selType")Area=request.form.get("txtArea")Price = request.form.get("txtPrice")Adress = request.form.get("txtAddress")Desc= request.form.get("txtDesc")sql="insert into Houses values(null,%s,%s,%s,'%s','%s')"%(HouseTypeID,Area,Price,Adress,Desc)db=DBHelper()db.cursor.execute(sql)db.con.commit() #执行添加语句一定要提交,否则不能生效return "<h1>发布成功!</h1><a href='/'>返回首页</a>"@app.route("/echartshow")
def echartshow():global rowsdf = pd.DataFrame(rows)print(df)df2 = df.groupby("HouseTypeName").count()["HouseID"].sort_values(ascending=False).head(5)print(df2)return render_template("echartshow.html", x=list(df2.index), y=list(df2))if __name__=="__main__":app.run(debug=True)

DBHelper.py

import pymysql
class DBHelper:  # 定义操作数据库的类def __init__(self):   #在构造函数中,先创建好连接对象和游标对象,self.con = pymysql.connect(host="127.0.0.1", port=3306,user="root", passwd="123456", db="test",charset="utf8")  # 创建连接self.cursor =self.con.cursor(pymysql.cursors.DictCursor)  # 获取游标对象,用来执行sql语句def close(self):  #定义关闭连接的方法self.con.close()

index.html

{% extends  "base.html"  %}
{% block content  %}<table class="table table-striped"><tr><th>编号</th><th>房型</th><th>面积(平方米)</th><th>价格(万)</th><th>地址</th><th>描述</th></tr><tbody>{% for row in rows %}<tr><td>{{row["HouseID"]}}</td><td>{{row["HouseTypeName"]}}</td><td>{{row["Area"]}}</td><td>{{row["Price"]}}</td><td>{{row["Adress"]}}</td><td>{{row["HouseDesc"]}}</td></tr>{% endfor  %}</tbody></table>
{% endblock %}

base.html

<!DOCTYPE html>
<html lang="en">
<head><link rel="stylesheet" href="static/css/bootstrap.css"><meta charset="UTF-8"><title>Title</title><style>#top  #toprow1{text-align: center;font-size: 40px;}</style><!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"><!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous"><!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</head>
<body>
<div id="top"><div id="toprow1">好家园房产中介网后台管理</div><div id="toprow2"><a href="/">查看住房信息</a>|<a href="/addHouse">发布住房信息</a>|<a href="/echartshow">汇总住房信息</a><hr/></div>
</div>
<div id="content">{% block content %}{% endblock %}
</div>
</body>
</html>

addHouse.html

{% extends  "base.html"  %}
{% block content  %}
<form class="form-horizontal"   role="form" method="POST" action="/addHouse" onsubmit="return check();"><div class="form-group"><label for="firstname" class="col-sm-2 control-label">房型编号</label><div class="col-sm-6"><select name="selType"  class="form-control">{% for row in rowTypes %}<option value='{{row["HouseTypeID"]}}'>{{row["HouseTypeName"]}}</option>{% endfor %}</select></div></div><div class="form-group"><label for="firstname" class="col-sm-2 control-label" >面积</label><div class="col-sm-6"><input type="text" class="form-control" name="txtArea" placeholder="请输入面积"></div></div><div class="form-group"><label for="lastname" class="col-sm-2 control-label">价格</label><div class="col-sm-6"><input type="text" class="form-control" name="txtPrice" placeholder="请输入价格"></div></div><div class="form-group"><label for="firstname" class="col-sm-2 control-label" >地址</label><div class="col-sm-6"><input type="text" class="form-control" name="txtAddress" placeholder="请输入地址"></div></div><div class="form-group"><label for="lastname" class="col-sm-2 control-label" >描述</label><div class="col-sm-6"><input type="text" class="form-control" name="txtDesc" placeholder="请输入描述"></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><button type="submit" class="btn btn-default">发布</button></div></div>
</form><script>function check() {var MJ=document.getElementsByName("txtArea")[0].valuevar JG=document.getElementsByName("txtPrice")[0].valuevar DZ=document.getElementsByName("txtAddress")[0].valuevar MS=document.getElementsByName("txtDesc")[0].valueif (MJ==""){alert("请输入:面积")return false}if (JG==""){alert("请输入:价格")return false}if (DZ==""){alert("请输入:地址")return false}if (MS==""){alert("请输入:描述")return false}return true}
</script>
{%  endblock  %}

echartshow.html
注意:这个里面的 echarts.min.js 点击下载 在文件static文件夹下创建js文件 echarts.min.js 将下载的代码拷贝下来!
echarts.min.js 点击下载

{% extends  "base.html"  %}
{% block content  %}
<div id="box" style="width: 800px;height: 900px;margin: 0 auto"></div>
<script src="static/js/echarts.min.js"></script>
<script>myecharts=echarts.init(document.getElementById("box"))option = {title : {text: '好家园房产中介网后台管理',},tooltip : {trigger: 'axis'},legend: {data:['汇总住房信息']},toolbox: {show : true,feature : {mark : {show: true},dataView : {show: true, readOnly: false},magicType : {show: true, type: ['line', 'bar']},restore : {show: true},saveAsImage : {show: true}}},calculable : true,xAxis : [{type : 'category',data : {{ x|safe }}}],yAxis : [{type : 'value'}],series : [{name:'汇总住房信息',type:'bar',data:{{ y|safe }}},]
};myecharts.setOption(option)</script>
{%  endblock  %}

“好家园房产中介网后台管理”python项目相关推荐

  1. 好家园房产中介网后台管理

    题目:好家园房产中介网后台管理 一.语言和环境 1.实现语言:python语言. 2.环境要求:pycharm + mysql. 在Bootstrap这里下载js和css 在echarts在柱状图 二 ...

  2. 好家园房产中介网后台管理项目

    base.html–(父模板) <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  3. python房地产爬虫_房产中介网站爬虫实战(Python BS4+多线程)(一)

    本系列文章介绍了爬取链家和搜房网(房天下)数据的方法. 房产中介网站爬虫实战(Python BS4+多线程)(一) 房产中介网站爬虫实战(Python BS4+多线程)(二) 房地产市场向来是大数据分 ...

  4. 国内最大的房产中介公司如何管理上千门店固定资产?

    国内最大的房产中介公司如何管理上千门店固定资产? 众所周知房产中介公司作为轻资产运营公司,虽然其单体门店的投资成本并不重,但单体门店的服务辐射范围仅在1.5公里到3公里范围之内,作为国内最大的房产中介 ...

  5. 美多后台管理和项目环境搭建

    美多后台管理 Django框架已经提供了一个Admin管理后台,但是Admin的本身的页面可修改的页面布局效果比较少,无法满足公司定制页面需求,这时候就需要独立开发一套后台管理系统,满足公司对后台数据 ...

  6. 1.电子商城后台管理平台项目概况

    一.项目介绍 随着信息化的发展,电商也随着互联网的发展日益状态.为了整理之前所学,这里将做一个电子商城后台管理系统. 二.项目需求 电子商城后台管理平台包含账号管理(保存用户信息).用户登录.退出登录 ...

  7. 使用Git子模块和开发模式管理Python项目

    目录 挑战 什么是开发模式? 什么是Git子模块? 设置项目 设置commonlib的Git存储库 设置myproj的Git存储库 设置Git子模块 将存储库添加为子模块 更新子模块 使用Git子模块 ...

  8. Z-Admin后台管理轻量级项目模板V0.3

    Z-Admin 轻量化的后台管理模板 下载及预览 https://gitee.com/zhangqian0828/z-admin 项目特点 springBoot单体架构 集成前端页面,接口使用前后端分 ...

  9. 电商后台管理---Vue项目运行问题记录

    初学vue项目的小白,记录在github下载电商管理项目运行过程中碰到的问题. mysql数据库安装 推荐使用Navicat Premium,可以管理大部分的数据库,推荐使用. 配好mysql数据库环 ...

最新文章

  1. 基于OpenCasCade的程序发布问题
  2. ckplayer php,ckplayer 网页视频播放插件
  3. raid5通常需要几块盘_raid5需要几块硬盘
  4. 微信小程序 保存持久化cookie
  5. 开发大会上,前微软CEO放出的狠话!.NET开发随时起飞,你准备好了吗?
  6. Linux系统安装oracle时,orainstRoot.sh,root.sh脚本的作用。
  7. 中考英语听说计算机考试满分,2020北京中考英语听说机考题型分值及满分技巧...
  8. LICEcap 录制Gif动画
  9. pcb过孔漏铜_使用Proteus设计自己的PCB | 入门简易教程
  10. 数学建模入门篇(新手必看)
  11. 电脑桌面双击计算机图标打不开,电脑双击图标打不开怎么办
  12. 基于搜狐新闻数据【完整版】训练中文word2vec模型
  13. 浩辰cad2017破解版|浩辰电气cad2017无限使用破解版下载
  14. 斯坦福cs224n教程--- 学习笔记1
  15. html怎样制作纵向表格,html制作细线表格的简单实例
  16. 出新书了!| 赠书啦,免费包邮
  17. nodejs十六进制转字符串
  18. Python 二维字典定义
  19. 计算机导论excel实验4,计算机导论实验 Excel.doc
  20. vim自动补全插件:YouCompleteMe使用前需要做的准备工作随手记录

热门文章

  1. Navicat for mysql 在WIN10下导入SQL不成功解决办法
  2. 已成功与服务器建立连接,但是在登录前的握手期间发生错误
  3. ios wifi 定位_iOS开发Wifi 定位原理及iOS Wifi 列表获取
  4. 关于pcl1.11.0无法找到 pcl/io/openni_grabber.h的解决办法
  5. e4e反演框架:Designing an Encoder for StyleGAN Image Manipulation
  6. JSP页面如何通过Form传递参数到另一个JSP页面
  7. 《胜负无定数,敢拼搏成七分》的读后感
  8. 有毒气体传感器代替金丝雀和老鼠在矿山
  9. 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
  10. Ubuntu挂载iso文件和配置apt本地源