深受Linux精神鼓舞,想感受开源的力量!
这是我在2011年做的,后面还是希望能够继续迭代,现在把它开源拉,希望得到大家的指点
主要架构为:
> .NET + ASP
开发截图
运行截图:
主要功能:
(1)查询房屋信息用例:提供房屋信息的模糊查询。
(2)预约购买房屋用例:提供购房房屋的预约信息。
(3)登录网站:需要输入账号密码进行登录。
(4)发布论坛贴:提供论文帖子的发布。
(5)查看论坛贴:提供论文帖子详细信息的内容。
(6)查看新闻信息:提供所查看新闻的详细信息。
(7)查询指定日期新闻:通过选择查看指定日期的新闻列表
管理员角色用例图各用例说明如下:
(1)查询房屋信息用例:管理员登录后与客户一样可对房屋信息进行模糊查询。
(2)添加房屋信息用例:需要管理员权限方可进行房屋信息的添加。
(3)更新房屋信息用例:管理员登录后可对房屋信息进行修改。
(4)删除房屋信息用例:具备管理员权限才可对房屋信息进行删除。
(5)查询新闻信息用例:管理员与客户一样可对新闻信息进行查询。
(6)发布新闻信息用例:管理员登录后可发布新的新闻信息。
(7)修改新闻信息用例:管理员登录后方可对新闻信息进行修改
(8)删除新闻信息用例:具备了管理员权限才可对新闻信息进行删除。
(9)管理论坛帖子用例:管理员登录后可对论文的帖子进行管理,包括了增删改等。
总体的客户request时序图
一些API的说明:
下面对各核心步骤进行说明:
(1)Login:登录网站的函数
(2)Search HouseInfo():查询房屋信息函数
(3)Search NewsByDate():查询指定日期新闻信息函数
(4)Resever:预订购买房屋的函数而维护房源,包括添加删除等操作的时
House表的说明
(1)Add NewHouseInfo():添加新房屋信息的函数
(2)Update HouseInfo():更新房屋信息的函数
(3)Delete HouseInfo():删除房屋信息的函数
(4)Search HouseInfo(int):查询相应 ID 的房屋信息的函数
论坛Admin权限说明
(1)Manage Card():进入管理论坛贴的函数
(2)Show Card():查看论坛贴的函数
(3)Alter Card():修改论坛贴的函数
(4)Delete Card():删除论坛贴的函数
数据表的引用
售房信息表售房信息表 HouseSaleTable
SaleID Int PrimaryKey 售房编号否
District varchar(50) / 区域否
Construct varchar(50) / 户型否
Direction varchar(50) / 房屋朝向否
Floor varchar(50) / 房屋楼层否
Decoration varchar(50) / 装修信息否
Depart varchar(50) / 店铺否
HS_Neighbor Varchar(50) / 楼盘名称是
HS_Address Varchar(200) / 售房地址否
HS_Acreage float / 房屋面积否
HS_UseYear Int / 房屋年限是HS_Type Varchar(6) / 二手/全新
HS_Price Money / 房屋价格是
HS_Provide Varchar(1000) / 配套设施是
HS_Detail Varchar(2000) / 详细信息是
HS_Image Image / 房屋图片是
HS_Linkman Varchar(16) / 联系人否
HS_ContactTel Varchar(50) / 联系人电话否
HS_Pov Varchar(10) / 信息有效期否
HS_ReleaseDate Datetime / 信息发布日期
SaleOrderID Int PrimaryKey 购房登记编号否
SO_Name Varchar(16) / 购房者姓名否
SO_Sex Varchar(2) / 购房者性别是
SO_Age Varchar(14) / 购房者年龄是
SO_Work Varchar(12) / 工作情况是
SO_ContactTel Varchar(50) / 联系电话否
SO_Mail Varhcar(100) / 电子邮箱是
SO_MinAcreage Float / 购房面积(下限) 否
SO_MaxAcreage Float / 购房面积(上限) 否
SO_MinPrice Float / 购房价格(下限) 否
SO_MaxPrice Float / 购房价格(上限) 否
SO_Construct Varchar(50) / 户型结构是
SO_Type Varchar(6) / 购房类型是
SO_District Varchar(50) / 购房区域是
SO_Plan Varchar(20) / 购房计划是
SO_Reason Varchar(10) / 购房原因是
SO_PayType Varchar(10) / 付款方式是
SO_PayNumber Varchar(20) / 付款金额是
SO_Message Varchar(2000) / 留言是
SO_ReleaseDate Datetime / 信息发布日期否
SO_Ctime Varchar(2) / 合同签订日期否
SO_Fcontract Varchar(2) / 是否签订合同否
更详细的数据表格请参考文件夹中的sql脚本,放一张整体的数据结构图
一些稚嫩的代码:
private HousePropertyManagementProject.BLL.UpdateDropDownList ucb;
private HousePropertyManagementProject.BLL.UpadteSaleDataGridView usdv;
private HousePropertyManagementProject.MODEL.HouseSale hs = new MODEL.HouseSale();
private HousePropertyManagementProject.MODEL.SeHouseSale shs = new MODEL. SeHouse Sale();
//筛选房源按扭事件
protected void btnSearch_Click(object sender, EventArgs e)
{
hs.setSeHouseSale(district, txtBxAddress.Text, construct, min_acreage, max_acreage, min_price, max_price);
this.gViewDisplay.DataSource = shs.reSelect();
this.gViewDisplay.DataBind();
}
//显示全部房源按扭
protected void btnShowAll_Click(object sender, EventArgs e)
{
showAllData();
}
//房源展示功能
public void showDistrict()
{
ucb = new BLL.UpdateDropDownList();
IEnumerable<XElement> elements = ucb.loadList(Server.MapPath("XML/DDL_DistrictInfo.xml"), "District");
foreach (XElement xe in elements)
{
ListItem li = new ListItem();
li.Value = xe.Element("Name").Value;
li.Text = xe.Element("Name").Value;
this.dDLstDistrict.Items.Add(li);
}
}
刷新新闻的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
DataGridDataBind();
Session["dateValue"] = Request["dateValue"];
}
private void DataGridDataBind()
{
SqlConnection conn = DBClass.GetConnection();
string sqlstr;
//if (Convert.ToString(Session["dateValue"]) == null)
if(Request["dateValue"]==null){
sqlstr = "select ID,Title,Style,Type,IssueDate from DatetoNewsTable";
}
else{
sqlstr = "select ID,Title,Style,Type,IssueDate from DatetoNewsTable where IssueDate='" + Request["dateValue"] + "'";
}
SqlDataAdapter da = new SqlDataAdapter(sqlstr, conn);
DataSet ds = new DataSet();
try{
da.Fill(ds, "testTable");
if (!(ds.Tables["testTable"].Rows.Count > 0)){
this.lblMessage.Text = "您指定的日期没有发布任何新闻";
}
else{
NewsDataView.DataSource = ds.Tables["testTable"];
NewsDataView.DataBind();}}
catch (Exception error){
Response.Write(error.ToString());}}
protected void NewsDataView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
NewsDataView.PageIndex = e.NewPageIndex;
DataGridDataBind()
代码包下载地址:https://pan.baidu.com/s/1hs38iS8