(房地产管理)房地产信息
管理系统的设计与开发
Delphi + SQL Server2000
房地产信息管理系统的设计与开发
(讲义)
计算分院短学期教材(2)
房地产信息管理系统的设计与开发
【摘要】该系统为满足中小房屋销售公司业务管理的需要,按照一般的房产销售
管理业务流程,通过模块化设计,能够对楼盘、楼房、房屋、客户信息,房屋销售
情况及员工业绩等多种信息进行全方位管理。
系统由基础信息、房屋销售、统计报表和系统设置等四大模块组成。每个大
的模块又由多个分模块组成,比如,房屋销售模块中又包括房屋销售管理、客户
资料管理、销售收款管理和客户退款管理等,能够满足房屋销售业务各个环节的需
要。系统的报表生成工具和分析工具使房屋销售情况和公司员工的业绩一目了然。
系统的设置模块除了密码等常规设置外,还有权限设置,不同权限的人员进入不
同操作模块,使数据具有保密性。
系统使用 Delphi 和 SQL Server数据库为开发平台,系统具有很好的安全
性。
该系统还具有操作界面友好、使用方便、维护简单等显著特点,是中小房产
企业管理销售业务的有力工具。
目录
Delphi + SQL Server2000..................................................1
第 1章 概要............................................................1
房地产信息管理系统的功能结构图: .................................1
基础信息管理...............................................1
第 2章 数据库设计......................................................3
房地产信息管理系统数据库的表 .....................................3
楼盘基本信息表的字段 .......................................4
楼房信息表的字段...........................................5
房屋信息表的字段...........................................5
客户信息表的字段 ...........................................5
系统流程图.................................................6
第 3章 主窗体设计........................................................7
主窗体界面设计 ...................................................7
主窗体界面设计概要.........................................7
主窗体界面详细设计.........................................8
主窗体的第一次代码设计..........................................15
数据模块设计....................................................16
第 4章 登录模块设计.....................................................21
登录模块的窗体设计..............................................21
登录窗口样式..............................................21
登录模块的数据控件........................................23
登录模块代码设计..........................................24
第 5章 功能模块设计.....................................................30
房型资料录入模块设计............................................30
在 dm窗体中添加数据控件...................................30
窗体详细设计..............................................31
房型资料录入窗体的代码设计................................32
楼盘楼房资料录入模块的设计......................................39
做好连接数据表的准备......................................40
楼盘楼房资料录入模块的界面设计............................42
楼房资料录入模块的设计....................................44
第 6章 数据统计报表的设计...............................................45
数据统计报表设计概述...........................................45
参考文献................................................................46
附录....................................................................47
图目录
图 系统流程图 ....................................................6
图 主窗体页面 ....................................................7
图 一级菜单设计图 ................................................8
图 【房屋销售管理】的二级菜单设计图 ..............................9
图 其余三项菜单的二级菜单设计图 ..................................9
图 菜单的详细内容 ...............................................10
图 设置 image控件的”picture”属性以载入背景图 ..................10
图 载入背景图后的样式 ...........................................11
图 将 StausBar1控件分成三段 .....................................12
图 状态条第三段显示系统时间 .....................................13
图 设计好的工具栏 ..............................................14
图 设置快捷键的 Layout属性 .....................................14
图 选择 DataModule窗体 ........................................16
图 DataModule窗体中的连接控件.................................17
图 fdc_conn控件的 Connection属性...............................17
图 数据库连接成功 ..............................................18
图 设置 DBLookupCombobox1控件的属性 .............................22
图 4-3 为登录窗体访问数据库要求的数据控件 ...........................23
图 4-4 登录用的用户表 ...............................................24
图 4-5 登录窗口 .....................................................29
图 4-6 预先窜放在 f_user表的信息 ....................................29
图 编辑 CommandText属性 .........................................30
图 编辑 CommandText属性 .........................................31
图 5-3 设计好的房型资料录入窗体 .....................................32
图 5-4 房型资料录入窗体初始化时的三个事件 ...........................33
三个事件的详细代码:................................................33
图 5-4 编译好的房型资料录入窗体 .....................................35
图 5-5 开始录入房型资料 .............................................36
图 5-5 楼盘楼房资料录入模块运行结果 .................................39
图 5-5 楼房资料录入模块运行结果 .....................................40
图 5-6 CommandText Editor窗口.......................................41
图 5-7 新添访问 f_house和 f_build表的数据控件 .......................42
图 5-8 楼盘楼房资料录入界面 .........................................43
表目录
表 1 数据库的表 .............................................3
表 2 楼盘基本信息表 f_build 的字段 ..................................4
表 5 客户信息表 f_customer 的字段 ...................................5
第 1章 概要
房地产信息管理系统的功能结构图:
房地产信息管理系统的功能很多,系统大而复杂,设计起来非常繁琐,尤其
是销售部分,相互关联的部分很多,窗口套窗口。所以在设计之前,要把模块之
间的关系梳理清除。
系统由基础信息、房屋销售、统计报表和系统设置四个大的功能模块组成。
图 1-1 房地产信息管理系统功能结构图
基础信息管理
房屋销售管理系统的基础信息中,关于楼房的信息有楼盘(即我们平时所说
的小区)、楼房(即该小区中的第几号楼)、和房屋(即户)三层基础资料。
首先是要建立一个楼盘(小区)的资料,即数据库中的 f_build表(楼盘基
本信息表),一个实用化的楼盘基本信息表有 23项内容,比较复杂。接下来
是建立每一座楼的基本信息,即数据库中 f_house 表(楼房基本信息),表中
的明细也有 15项之多。关于楼房的第三项基本数据是具体到每一户,就是数
据库中的 f_room(房屋信息表),动手设计之前,一定要牢记这三张表。此
外还有公司员工信息、客户信息等。
第 2章 数据库设计
房地产信息管理系统数据库的表
用 SQL Server2000创建数据库,取名为 .
数据库一共有 30张表,表名见表 1:
表 1 数据库的表
表名称 功能描述
f_appertain_house 附属房产
f_build 楼盘基本信息
f_buy_factor 客户购买因素信息表
f_buy_will 客户购买意向
f_customer 客户信息
f_customer_change 客户更换信息
f_customwer_return 退房信息表
f_customer_work 客户工作信息
f_employees 员工信息表
f_family_structure 家庭结构
f_house 楼房基本信息
f_house_aspect 楼房朝向信息表
f_house_type 楼房类型
f_house_structure 楼房结构
f_mode 房型基本信息表
f_pay_item 付款项目表
f_pay_mode 支付方式表
f_pay_plan 付款安排
f_post 岗位表
f_price_reflect 价格反映表
f_require_area 需求面积
f_require_floor 需求楼层
f_room_mode 需求房型
f_room 房屋信息表
f_room_format 房屋格式表
f_room_pay 房屋付款
f_standard 装修及设备标准
f_tube_net 网管资料
f_sys_company 公司信息
f_user 用户资料
在上述的 30张表中,最重要的是下列三表,楼盘楼房房屋。
1. f_build 楼盘基本信息。就是记录一个新建楼盘,即“小区”的所有信息;
2. f_house 楼房基本信息。一个楼盘下面有多栋楼房,该表记录楼房信息。
3. f_room 房屋基本信息。每栋楼房有多个户数,该表记录每户的信息。
楼盘基本信息表的字段
表 2 楼盘基本信息表 f_build 的字段
字段名称 字段类型 主键 允许为空 默认值 功能描述
楼盘编号 Varchar(20) 是 标识一个楼盘
楼盘名称 Varchar(20) 是
地理位置 Varchar(20) 是
占地面积 Varchar(20) 是
建筑面积 Varchar(20) 是
建筑占地面积 Varchar(20) 是
道路广场占地面积 Varchar(20) 是
建筑密度 Varchar(20) 是
容积率 numeric(9) 是
绿化面积 varchar(20) 是
绿化率 numeric(9) 是
开发日期 datetime(8) 是 time_defaul
t
楼房数量 numeric(9) 是
车位数 numeric(9) 是
房屋数量 numeric(9) 是
出售数量 numeric(9) 是
预定数量 numeric(9) 是
出售未审核数量 numeric(9) 是
未出售数量 numeric(9) 是
楼盘备注 varchar(20) 是
建档人员 varchar(20) 是
建档日期 datetime(8) 是 time_defaul
t
楼盘图片 image 是
楼房信息表的字段
楼房信息表 f_house的字段如表 3所示。
房屋信息表的字段
楼房信息表 f_house的字段如表 4所示。
客户信息表的字段
表 5列出的是客户信息表的字段。客户信息表也是本系统的重要数据表。
表 5 客户信息表 f_customer 的字段
字段名称 字段类型 主键 允许为空 默认值 功能描述
客户编号 Numeric(9) 是
客户名称 Varchar(10) 是
性别 Varchar(2) 是
年龄 Varchar(3) 是
职业 Varchar(16) 是
身份证号码 Varchar(23) 是
邮编 Varchar(10) 是
联系方式 varchar(15) 是
工作单位 varchar(40) 是
联系地址 varchar(40) 是
家庭结构 varchar(16) 是
需求面积 varchar(16) 是
需求楼层 varchar(11) 是
需求房型 varchar(10) 是
购买意向 varchar(10) 是
价格反映 varchar(10) 是
支付方式 varchar(10) 是
考虑因素 varchar(10) 是
信息来源 varchar(10) 是
购房数量 numeric(9) 是
购房金额 float(8) 是
已付金额 float(8) 是
未付金额 float(8) 是
备注 varchar(100
)
建档人员 varchar(10)
建档日期 datetime(8)
修改人员 varchar(8)
修改日期 datetime(8)
系统流程图
图 系统流程图
第 3章 主窗体设计
主窗体界面设计
主窗体界面设计概要
主界面首要任务是要通过主菜单给用户提供调用各功能模块的选择,因此设
计菜单是主窗体设计的第一步。另外,与主菜单相配合的是工具条的设计。
工具条上放了许多使用频率高的快捷键,以提高使用者的操作速度。
另外,在主菜单的最下方有一个状态栏,该栏用于显示系统的当前状态,例
如当前的操作员和系统时间等。
主窗体运行的结果如图 3-1所示。
图 主窗体页面
主窗体界面详细设计
1. 启动 Delphi 开发平台,将自动弹出的窗体设为主窗体,并命名。
主窗体的 name属性:mainform;
主窗体的单元文件名:;
工程文件名:。
1)主菜单设计
向主窗体中拖放一个主菜单控件,使用它的默认名:Mainmenu1。
在 Mainmenu1 上按右键,从弹出的窗体中,选择“Menu Designer”以设计
主菜单。主菜单的第一级有【房屋销售管理】、【数据统计报表】、【基本资料录入】、
【系统设置】和【帮助】等 5项。具体内容如图 3-1所示。
图 一级菜单设计图
2)设计二级菜单
在 Menu Designer 中按照图 中的标识完成【房屋销售管理】菜单的二级
菜单的设计。
图 【房屋销售管理】的二级菜单设计图
接下来分别设计【数据统计表表】、【基本资料录入】、【系统设置】和【帮助】
菜单的二级菜单。设计好的二级菜单如图 3-4所示。
主菜单
一级菜单
选择热键
这条线(分隔符)是在 Caption
属性中输入英文状态下的“-”号
图 其余三项菜单的二级菜单设计图
至于【帮助】菜单的二级菜单只有“关于”和“帮助 F2” 这 2项。
我们可以展开 Delphi 设计平台左上角的“object treeview”视窗查看主窗体
“MainForm”的全部菜单内容,如图 3-5所示。
图 菜单的详细内容
3) 主窗体背景设计
在主窗体(MainForm)中放入一个“image控件”,在它的“picture”属性
中载入一张保存在本工程文件目下(根目录)的图片作为背景图。
图 设置 image控件的”picture”属性以载入背景图
图 载入背景图后的样式
4) 主窗体的状态栏控件设计
在主窗体的最下方添加 TStatusBar(在控件栏的 Win32页)组件,该组件用来显
示主窗体运行时的状态,用默认名“StausBar1”。
将 StausBar1分成三个区域,分别是 StatusPanel1、 StatusPanel2和
StatusPanel3。第一个区域显示公司名称,第二个区域显示当前的操作员,第三
个区域显示系统时间。为此,要在主窗体中添加一个时间控件。
这些功能的实现是靠代码完成的,稍后介绍这些代码。
将状态条分段的操作方法是:在 StausBar1 控件上按鼠标右键,弹出“Editing
” 编辑窗,在该编辑窗上面按右键,选择弹出窗的“Add”,
将 StatusBar1分 成 三 段 , 分 别 是 0-STatusPanel1、 1-STatusPanel1、
2-STatusPanel1。然后在其“Width”属性中设置每一段的宽度,如图 3-8 所示。
图 将 StausBar1控件分成三段
5) 状态栏的代码设计
●为了在状态栏的第一段中显示目前登录者的姓名,首先在主窗体的“public”
域中声明一个 UserName的字符串变量:
public
name:string;
username:string;
这是分隔符
设置第一段的
宽度为 150
●为了在状态栏的第三段中显示目前的系统时间,要在主窗体中添加一个时
间控件,双击主窗体中的定时器控件,在弹出的代码编写器中编写如下代码:
procedure (Sender: TObject);
begin
[2].Text :='现 在 时 间 :
'+datetimetostr(now);
end;
编译后就可以在状态条的第三段看到系统时间,如图 3-9所示:
图 状态条第三段显示系统时间
6) 主窗体工具栏的设计
在主窗体中添加一个工具栏,工具栏上放置若干个快件键,以提供某些快速
操作。
添加工具栏的操作方法是:
1. 从 Win32页中拖放一个 ToolBar1控件到主窗体中。设置 Align属性(对
齐)为 alNone;设置 DragKind属性为 dkDock。
2. 从 Additional 页中拖放 10个 SpeedButton按钮到 ToolBar1上。这些
SpeedButton按钮作为工具栏的快捷键;
3. 给每个按钮添加上相应的图标和文字。
为了能给这些 SpeedButton按钮添加上图标,首先要准备好图标(素材),并
将他们存放在一个专门的文件夹中,然后在主窗体中添加一个 ImageList控件,
使用默认名 ImageList1。选择 SpeedButton1,通过它的 Glyph 属性添加上为它
准备好的图标,并从它的 Caption 属性中输入中文名。
设计好的工具栏 ToolBar1如图 3-10所示:
图 设计好的工具栏
实现快捷键图标在上、文字在下的方法:
如下图所示,先选中 ToolBar上的一个快捷键,将它的 Layout属性设置为
blGlyphTop就可以了。
图 设置快捷键的 Layout属性
7) 主窗体工具栏的拖曳
工具栏不一定始终停靠在一个个固定的地方,而是随时可以变换地方,这就
要用到控件的拖曳技术。
●ToolBar1的 Align属性设置为:alNone,即不固定位置;
显示系统时间
工具栏
把该键的 Layout 属性设
置为 blGlyphTop
●ToolBar1的 DranKInd属性设置为:dkDock;
●在主窗体的最下方添加一个 Panel1组件,它的 Heigh属性设为 1;Align
属性设为 alBottem;Docksite设为 True
●程序的相关代码:
procedure (Sender: TObject);
begin
;
end;
procedure (Sender: TObject;
var DragObject: TDragDockObject);
begin
:=1;
end;
procedure (Sender: TObject;
Source: TDragDockObject; X, Y: Integer);
begin
:=;
end;
主窗体的第一次代码设计
主窗体的界面设计好后,着手编写主窗体初始化的三段代码,以便先让它空
转起来。
1)procedure FormShow(Sender: TObject);
2)procedure FormCreate(Sender: TObject);
3)procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); //按下 F功能键所执行的功能
4)为了在编译完成后能退出程序,可先编写主菜单“【系统设置】”中的“退
出系统”项的代码:
procedure (Sender: TObject); //退出系统菜单
begin
Close;
end;
由于内容较多,代码就不一一列出,具体的代码请参见程序设计部分。
同时要在主窗口的代码编辑窗口的 public处设立如下变量,以备后用:
public
modelr,buildlr,comlr,emplr,sale,gather,plan,payreturn,
saler,house,custpay,cust,custfx,user1,databack:boolean;
name:string;
username:string;
数据模块设计
在 Delphi的数据库应用程序设计中,数据库与 SQL Server 服务器的连接
是通过数据模块(Data Module)来实现的。
从菜单“File” | “New” | “Other” ,弹出选择“Data Module”模版窗
口,从该窗体中点选 Data Module 项,如图 3-12所示。
图 选择 DataModule窗体
窗体名:dm;
单元文件名:;
Caption:dm。
记住:主窗体和接下来完成的登录窗体都要‘“Uses ”!
在新生成的 Data Module窗体中,从“ADO”组件页中拖放连接数据库的
“Connection” 组件,将其 Name属性设为“fdc_conn”,再从“DataAceess”页
中拖放一个“DataSource”控件将其 Name属性设为“dsuser”,并给数据模版(窗
体)命名为“dm” ,单元文件保存为:“” 。设计好的数据模块如
图 3-13所示。
图 DataModule窗体中的连接控件
我们采用 ADO数据库连接技术。
设置 fdc_conn控件的 Connection属性,以实现连接 数据库。
按下图首先选择提供程序“Microsoft OLE DB for SQL Server”,然后按右
边所谓图示填写数据库所在的服务器名和将要连接的数据库“FDC”,最后确认数
据库连接成功。
图 fdc_conn控件的 Connection属性
图 数据库连接成功
接下来在“dm”窗体中逐次添加以下数据控件:
1) userdataSet 控件
属性设置:
Connection fdc_conn
CommandText 点击后面的…,弹出下面的编辑窗体:
DataSource 控件
这 些 是 登 录 页 面 访 问
f_User 表所需的控件
选择服务器
2) usertable 控件,这是 ADO页的表控件,取名为:usertable
Usertable的属性设置:
要连接到 fdc_conn控件
要指定它要访问的数据表:f_user表。
4)duser控件,这是一个 datasource 控件,与 usertable配套使用。
duser控件的属性设置:
5) duserdataset 这是一个 DataSource控件(在 DataAccess页),取名为
duserdataset,表示与前一个 userdataset控件配套使用。
duserdataset属性设置:
6) 另外放了两个控件,这是查询用的,其中控件要设置 Connection属性:,
DataSource1没有属性设置。
注意:该 Datamodule 即 dm 窗体没有事件,也就是说 中不用
编写代码。
第 4章 登录模块设计
登录模块的窗体设计
程序的启动画面消失后,将弹出登录窗体,用户通过输入用户名和密码就可
以进入系统,然后根据用户权限打开相应的模块。
用户登录的作用是保护应用程序中的相关资料,以防止无关人员对程序信息
的肆意破坏。当进入程序后,用户只能根据用户拥有的权限对程序中的相关模块
进行相应的操作。为了防止无关人员在数据库中获取用户信息,而对应用程序进
行操作,可以先对用户名和密码进行再加密后存入数据库中,这样用户名和密码
就不太容易被盗取,使应用程序变得更加安全。
当没有输入用户名和密码时,程序会提示“请输入正确的用户名和密码”,当
用户名或,密码错误时,系统会提示:“对不起,没有这个用户名”或“密码错
误”,系统重新回到登录窗口。一个用户最多允许输入三次用户名和密码,超过三
次,系统将退出。
指定它的 DataSet 属性
登录窗口样式
登录窗体的一般样式如图 4-1。
图 登录窗
体布局图
窗体中的控件及其名称:
窗体中用到的图片要事先准备好,保存在工程文件的根目录下。
要注意的是,用户名后面的输入框采用的控件是位于 DataControls页的
DBLookupCombobox1。用它可以从下拉列表框中选择已经保存在 User数据表中的
用户,不必每次输入用户名。
DBLookupCombobox1的属性设置图 4-2所示:
图 设置 DBLookupCombobox1控件的属性
登录模块的数据控件
登录窗体中输入用户名和密码之后,点击键,程序代码就去访问
“” 数据库中的“ User” 数据表,通过函数()将输入的用户名和密
码与 User 表中保存的数据是否一致。如果一致,程序就打开主窗体,供登录者进
行所需的操作;否则会弹出提示框,要你输入正确的用户名和密码,而且最多只
能连续输入三次,若三次都不成功,那么程序就退出。
为了能够实现这些功能,我们必须在数据模块(DataModule)中放置如下数
据控件:
图 4-3 为登录窗体访问数据库要求的数据控件
登录系统时既要检查用户名是否存在,还要验证密码是否正确,而且还要获
取用户的权限供后面窗体调用。用户名、密码和用户权限存储在 f_user表中,字
段名有用户编号、用户名称、和用户密码以及用户权限等多项,参见图 4-4:
图 4-4 登录用的用户表
登录模块代码设计
登录模块的主要程序代码如下:
unit loginunit;
private
{ Private declarations }
public
读取 User 表中的
“用户名称”字段
外形设置
ADODataSet 控件
它的CommandText属性:
select * from f_user
代表用户有权进
行房型录入操作
times:integer; //设置一个计算登录次数的参数
{ Public declarations }
end;
var
loginform: Tloginform;
implementation
uses dmunit, mainunit; //登录窗口要与数据模块窗体和主窗体相关联
{$R *.dfm}
procedure (Sender: TObject;
var Key: Word; Shift: TShiftState); //当点击用户名输入框时执行的
动作
begin
if key=13 then //按下回车键
;
end;
procedure (Sender: TObject);
begin
:=clcream;
end;
procedure (Sender: TObject);
begin
:=clskyblue;
end;
procedure (Sender: TObject);
begin
:=clcream; //Edit1是密码输入框
end;
procedure (Sender: TObject);
begin
:=clskyblue;
end;
procedure (Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
;
end;
procedure (Sender: TObject); //按下键
begin
if =0 then
begin
:='超级用户';
[1].Text:='操作员:
'+;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=true;
:=false;
close;
end
else
begin
if <>trim(['用户密码']) then
begin
times:=times+1; //登录次数+1
if times<3 then
begin
messagebox(,'用户名称或用户密码不正确,请重新输
入','提示信息',mb_iconinformation);
主窗体的状态条
;
end
else
begin
messagebox(,'您已经三次输入不正确,请退出','提示
信息',mb_iconinformation);
;
end;
end
else
begin
:=;
[1].Text:='操作员:
'+;
:=['房型录入'];
:=['楼盘楼房录入'];
:=['员工资料录入'];
:=['公司资料录入'];
:=['房屋销售管理'];
:=['收款管理'];
:=['客户资料管理'];
:=['收款安排查询'];
:=['给客户退款管理
'];
:=['销售代表统计'];
:=['楼房销售统计'];
:=['客户购订收款统计
'];
:=['客户数据分析'];
:=['用户管理'];
:=['数据备份与恢复
'];
:=['用户名称'];
:=false;
close;
end;
end;
end;
procedure (Sender: TObject);
begin
;
times:=0;
end;
procedure (Sender: TObject; var Action:
TCloseAction);
begin
:=false;
end;
procedure (Sender: TObject);
begin
;
end;
procedure (Sender: TObject);
begin
;
end;
end.
编译成功后的登录窗口检验通过后,程序进入主窗体。
运行后的登录窗口如图 4-5所示。
图 4-5 登录窗口
输入事先存放在用户表 f_user中的用户名和密码,就可以进到主窗体。
图 4-6 预先窜放在 f_user表的信息
到此,我们就完成了第一阶段的设计。下面进入到功能模块的详细设计。
第 5章 功能模块设计
房型资料录入模块设计
房型资料录入模块提供对房屋类型的管理,该模块主要对 f_mode表进行基本
的增加、编辑、删除和修改等操作。
模块中用到了 Excel电子表格技术,该项技术比较复杂。
在 dm窗体中添加数据控件
为了能够访问 f_mode表,需要在 md窗体(DataModule1)中加入相关的数
据访问控件,并进行相应的属性设置。
添加的控件分别是 TADOTable(命名为:mode)、TDATASource(命名为:
dsmode)以及数据集控件 ADODataSet(命名为:mode_ds)。
图 编辑 CommandText属性
表控件“mode”设置 Connection属性:fdc_conn,指定将要连接的表即
TableName属性为:f_mode(数据库中的 f_mode表)。
dmode控件(DataSource)只需要设置它的DataSet属性为mode,即DataSource
的字符集是通过表控件“mode”获得。
而 mode_ds控件除了要设置 Connection属性同样是 fdc_conn之外,还要设
置 CommandText属性。设置 CommandText属性的步骤是:点击该属性后面的…,
弹出 CommandText 编辑框,按照图 4-1左边选择 f_mode表,右边框中列出要从
该表中选择的字段名。
图 编辑 CommandText属性
窗体详细设计
1. 设计步骤
(1)在工程中新建一个窗体,窗体的 name属性:modeform,Capation属性:
房型资料录入,BoederStyle属性设为:bsSingle;
(2)在窗体上方添加多个 TDBEdit组件(在 DataControls页)这些组件用
于输入修改和增加房屋类型时的信息。它们的 DataSour属性设为 (见
图 5-1),并设置每个组件的 DataField属性为相应的连接字段。也就是说,DBEdit
组件将要去连接 f_mode(房型表)表中的哪个字段。比如说 DBEdit1它要连接的
字段是房型名称,那么它的 DataField属性就选择“房型名称”,依此类推。
(3)在窗体的下方添加 TDBNavigator组件,采用默认名 DBNavigator1。通
过该组件中的箭头控制 DBGrid表中数据记录的位置。它的 DataSour属性设为
。
(4)在 DBNavigator1组件的右边添加 9个 TSpeedButton组件(快捷键),
这些控件用来执行添加、修改、保存、打印、显示房型图片等命令。
(5)在窗体的中央添加一个 TDBGrid组件,占满差 ungtide整个中央部分。设置
它的 DataSour属性设为 。用它来显示房型资料的全部信息。
设计好的方形资料录入模块如图 5-3所示。
图 5-3 设计好的房型资料录入窗体
房型资料录入窗体的代码设计
在编写该窗体的代码之前,一定不要忘记该窗体一定要使用“dm”单元文件,
也就是 DataModule模块。在代码编辑窗口前面部分要有如下内容:
uses dmunit;
现在来编写该窗体初始化时的三段代码:
1. procedure FormCreate(Sender: TObject);
2. procedure FormShow(Sender: TObject);
3. procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
因为在窗口上使用了诸如 F4、F5这样的功能键,当按下这些功能键时就相
当于按下了窗口上的“增加”、“保存”等操作按钮。具体说,按下功能键 F4,也
就是按下了窗体中的。下图是 modeform窗体初始化的三个事件。
图 5-4 房型资料录入窗体初始化时的三个事件
三个事件的详细代码:
procedure (Sender: TObject); //房型资料录入窗体显示
begin
:=false; //保存按钮
:=false; //取消按钮
end;
procedure (Sender: TObject);
begin
keypreview:=true;
; //datamodule模块中的表控件负责打开 f_mode表(房型基本信息表)
end;
procedure (Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=113 then //F2 按下 F2键相当于按下“保存键”
if =true then
;
if key=114 then //F3
if =true then
;
if key=115 then //F4
if =true then
;
if key=116 then //F5
if =true then
;
if key=117 then //F6
if =true then
;
if key=118 then //F7
if =true then
;
if key=119 then //F8
if =true then
;
if key=120 then //F9
if =true then
;
if key=121 then //F10
if =true then
;
if key=38 then
;
if key=40 then
;
end;
编译好的房型资料录入窗体如图 5-4所示。
图 5-4 编译好的房型资料录入窗体
1. 接下来编写增加房型资料即点击下方的按钮时的代码,以便能增加房型
(户型)资料。
procedure _addClick(Sender: TObject); //点击增加按钮
var //先设立三个局部变量
y,m,d:word; //代表年、月、日
s:string;
newid:int64;
i:integer;
begin
for i:=0 to -1 do
if [i] is tdbedit then
tdbedit( [i]).ReadOnly :=false;
:=false;
decodedate(now,y,m,d); //该函数分解所指定的日期为年、月、日
s:=inttostr(y);
if =0 then
begin
; //mode是表控件,Append是设置数据文件的搜索路径
('房型编号').AsString :=s+'0001';
end;
if >0 then
begin
;
newid:=strtoint(['房型编号'])+1;
;
('房型编号').AsString :=inttostr(newid);
end;
; //光标停在房型名称输入控件处
:=true; //页面下方的保存按钮是可见的
:=true; //取消按钮是可见的
:=false;
:=false;
:=false;
:=false;
:=false;
:=false;
end;
该段代码编写完后,编译程序,得到下图所示结果。
图 5-5 开始录入房型资料
录入完后点击保存按钮,保存刚才录入的资料。
2. 编辑按钮的代码如下:(对原先录入的数据进行修改)
procedure _editClick(Sender: TObject);//房屋窗体中点击编辑按钮的
代码
添加和编辑按钮变为灰
色
begin
if =0 then
begin
exit;
end;
;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=false; :=false;
:=true;
:=true;
:=false;
:=false;
:=false;
:=false;
:=false;
end;
修改完后,点击保存按钮。
3. 删除代码如下:
procedure _delClick(Sender: TObject); //点击房屋信息录入框的删除按
钮
begin
_plan_dataset .Open ;
if _plan_dataset .Locate('房 屋 编 号 ',['房 屋 编 号
'],[])=true then
begin
messagebox(,'不能删除该房屋资料,因为在房屋付款资料里有对它的记录
','提示信息',mb_iconinformation);
exit;
end;
;
if ('房 屋 编 号 ',['房 屋 编 号
'],[])=true then
begin
messagebox(,'不能删除该房屋资料,因为在房屋销售付款安排资料里有对
它的记录','提示信息',mb_iconinformation);
exit;
end;
try
if messagebox( ,'确 定 要 删 除 这 条 数 据 吗 ? ','房 屋 资 料 删 除
',mb_yesno+mb_iconquestion)=idyes then
if =false then
;
except
MessageBox( ,'删除数据失败','房屋资料删除',mb_iconstop);
end;
if =0 then
:=false;
end;
4.. 点击代码如下:
procedure _closeClick(Sender: TObject);
begin
if =true then
begin
messagebox(,'请确定是保存或是取消,才能退出窗口 ','提示信息
',mb_iconinformation);
exit;
end;
close
end;
楼盘楼房资料录入模块的设计
该模块能够对楼盘(即我们平时所说的小区)的详细资料进行管理,并提供
对楼盘中所有楼房(即几号楼或××大厦)的资料进行管理。在该窗体中选择
选择一个楼盘,单击窗体下方的楼房按钮,即可弹出“楼房资料”窗口,该
楼房资料从属于前面选择的楼盘。
该模块运行结果如图 5-6所示。
图 5-5 楼盘楼房资料录入模块运行结果
在该窗口中单击按钮会弹出“楼房资料”模块窗口,见图 5-6。
图 5-5 楼房资料录入模块运行结果
做好连接数据表的准备
(1)楼盘、楼房资料录入模块要访问数据库中的两个表,第一个表是楼房基
本信息表,即 f_house表。为此,我们首先要在名称为 dm的数据模块
(DataModule)中添加几个数据访问控件。
●第一个当然是 ADOTable表控件,取名为,housetable1;
●它的 Connection属性设置为 fdc_conn(连接数据库的 Connection控件);
●TableName属性为 f_house(要打开的数据表名);
●接下来加入一个 DataSource(数据源控件)控件,命名为 dshouse,它的
Dataset(数据集)属性指定为 housetable1(所有数据来源于表控件)。
●再接下来放入一个 TADODataSet(数据集)控件,命名为 house_dataset。
它的 Connection属性设定为 fdc_conn,它还有一个很重要的
“CommandText”属性需要设置,具体操作是:
单击属性的“…”,弹出 CommandText Editor:
图 5-6 CommandText Editor窗口
在编辑窗体的左边指定表名“f_house”,在右边的编辑框内写入“select *
from f_house”,表示要访问表中的全部字段。
(2)第二个要访问的表是楼盘基本信息表,即 f_build表。为此,在 dm窗
体中放置表控件和数据源控件,并将它们关联起来。
●ADOTable表控件,取名为,housetable;
●它的 Connection属性仍然设置为 fdc_conn;
●TableName属性为 f_build;
●加入一个 DataSource(数据源控件)控件,命名为 dshouse,它的 Dataset
属性指定为 housetable(注意不要指定错了)。
访问 2个数据表(f_house,f_build)的访问控件放置好后的 dm窗体如图 5-7
所示。
图 5-7 新添访问 f_house和 f_build表的数据控件
楼盘楼房资料录入模块的界面设计
1. 设计步骤
( 1)在系统中新建一个窗体,窗体名为 houseform,单元文件名为
houseunit,Caption属性为“楼盘楼房资料录入”,BorderStyle属性设为
bsSingle;
(2)
设计好的界面如图 5-8所示。
图 5-8 楼盘楼房资料录入界面
访问 f_build 表
楼房资料录入模块的设计
一个楼盘也就是一个小区里会有若干栋大楼,每栋大楼都有它的名称、楼房
类型(有高层、小高层、单体别墅等)房屋的数量(户数)等多项数据需要输入。
在上述楼盘资料录入的窗体中若单击下方的“楼房”快捷键,就会弹出楼房资料
录入窗口。
1. 设计步骤
(1)在系统中新建一个窗体,命名为 house_houseform,单元文件为
,Caption属性为“楼房资料”。
(2)该窗体要用到的数据表是“f_house”,为此我们要在数据模块中添加必
要的数据控件。
●ADOTable表控件,取名为,housetable1;
●它的 Connection属性仍然设置为 fdc_conn;
●TableName属性为 f_house;
●加入一个 DataSource(数据源控件)控件,命名为 dshousetable,它的
Dataset 属性指定为 house_dataset。
(3)楼房资料录入模块还要访问数据表 f_build
注意:因为楼房资料录入模块是由楼盘资料录入模块中进入的,所以楼盘资
料录入模块必须关联楼房资料录入模块,也就是说,在楼盘资料录入模块中要 Use
。
第 6章 数据统计报表的设计
数据统计报表设计概述
[单击此处添加论文正文]
参考文献
[1]亚林. Delphi管理信息系统项目方案精解[M]. 北京:航空出版社,2006
附录
[单击此处添加论文附录]