• 501.50 KB
  • 2022-04-22 13:45:45 发布

小区现代化电脑业务管理毕业论文.doc

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'小区现代化电脑业务管理毕业论文目录第1章引言………………………………………………………………………1第2章系统概述………………………………………………………………22.1系统研究意义………………………………………………………………22.2研究现状……………………………………………………………………22.3存在的问题…………………………………………………………………2第3章系统分析………………………………………………………………43.1需求分析……………………………………………………………………43.2系统流程图…………………………………………………………………43.3数据流程图…………………………………………………………………53.4数据字典……………………………………………………………………53.5E-R图………………………………………………………………………73.5.1小区信息实体图…………………………………………………………73.5.2业主信息实体图…………………………………………………………83.5.3大楼信息实体图…………………………………………………………83.5.4房屋信息实体图…………………………………………………………9第4章总体设计………………………………………………………………104.1项目规划……………………………………………………………………104.2系统功能结构………………………………………………………………10第5章系统设计………………………………………………………………12-47- 5.1设计目标……………………………………………………………………125.2开发及运行环境……………………………………………………………125.3数据库设计…………………………………………………………………12第6章主要功能模块设计…………………………………………………146.1系统主界面的设计…………………………………………………………146.2系统登录界面设计…………………………………………………………156.3小区信息生成设计…………………………………………………………166.4业主信息登记设计…………………………………………………………166.5小区资源统计设计…………………………………………………………186.6权限设置设计………………………………………………………………19第7章系统测试与方法……………………………………………………217.1系统测试分析………………………………………………………………217.2系统测试方法………………………………………………………………21结论………………………………………………………………………………22致谢………………………………………………………………………………23参考文献…………………………………………………………………………24附录A数据表……………………………………………………………………25附录B代码………………………………………………………………………29系统主界面代码……………………………………………………………………29系统登录界面代码…………………………………………………………………30小区信息生成代码…………………………………………………………………33业主信息登记代码…………………………………………………………………34-47- 小区资源统计代码…………………………………………………………………38权限设置代码………………………………………………………………………44第1章引言由于物业管理涉及的管理范围较为广泛,管理内容繁杂,加上政策性的变动因素,日常工作需要耗费大量人力和物力,而采取现代化电脑管理手段是一种行之有效的解决方法,用计算机操作的小区物业管理系统是为小区管理者和小区用户更好的维护各项物业管理业务处理工作而开发的管理软件。电脑化管理在物业管理中的作用主要体现在:1、适用面广、可同时管理多个管理区和多栋大楼;2、计算机完整的工程档案与服务档案可以使管理人员随时了解最新的情况,更可以规范维护、服务标准,帮助管理人员合理安排工作时间。3、计算机管理收费,灵活性、准确性大大提高。4、强大的查询功能,最大限度地满足管理者的需要。第2章系统概述2.1系统的研究意义 经过十几年的发展,中国房地产业逐步走向成熟,物业管理也由新生到发展再到深入,面临着蓬勃发展的局面。随着ISO9002等管理体系在物业管理中的引入,对原有的物业管理模式进行了一次深刻的变革,对物业管理公司朝着正规化、科学化、集团化的发展,起到有力的推动作用。随着我国经济发展和城市开发,住宅小区越来越成为居住的主流,小区物业管理是针对当代社会这一市场需要应运而生的。本系统是为住宅小区物业管理部门日常管理工作信息化,规范化而开发的软件。它以物业管理部门为服务中心,以业主(住户)为服务对象。通过实施各种服务项目,全面地反映了在小区物业经营管理活动中,物业部门与业主之间各种业务往来。使各项业务的办理迅速、准确,极大的提高了小区物业管理的工作效率。-47- 2.2研究现状随着市场经济的发展和人们生活水平的提高,住宅小区已经成为人们安家置业的首选,几十万到几百万的小区住宅比比皆是。人们花的钱越多,不但对住宅的本身的美观、质量要求越来越高,同时对物业小区的服务和管理也要求很高,这样要求小区管理者对物业管理进行宏观的和微观的细致管理,其中最好的办法是用计算机操作的小区物业管理系统来实现对小区物业的管理。2.3存在的问题随着房地产业的快速发展和管理体制的改革,物业管理作为一种新兴的产业在我国得到了很大的发展,在快速发展的同时,也逐渐暴露出其在法规、管理、竞争等方面不够完善等深层次问题。1、物业管理相对滞后,明显落后于目前快速发展的房地产开发与销售,形成建设与管理脱节的局面。2、传统管理体制的存在以及多头并管现象的存在,形成各部门分块割据,各自为政的局面,没有在小区范围内形成资源共享、统一管理的局面,严重影响到小区物业管理的正常开展。3、封闭格局尚未打破,物业管理行业没有实现有效的市场竞争。传统管理机制的存在和准开发准管理的局面,使业主缺乏对物业管理公司的选择权,物业管理单位缺少内在动力和外在压力,服务意识不强。4、小区物业管理的业务范围窄,经费来源匮乏,制约了小区物业管理的正常运转和管理单位的自我发展。5、物业管理法规不健全,缺乏对物业管理的有效制约机制,造成管理上的困难。一方面,缺少对物业管理单位的约束,服务层次不到位;另一方面,物业管理单位的法律地位得不到保障,管理很难收到好的成效。-47- 第3章系统分析3.1需求分析根据该物业的具体情况,系统主要的功能包括:1、经营部:“小区信息生成”、“大楼信息生成”、“房屋信息生成”、“小区信息登记”、“大楼信息登记”、“房屋信息登记”、“系统数据设定”。2、管理部:“业主信息登记”、“人口信息查询”、“小区员工管理”、“系统数据设定”。3、财务部:“收费登记管理”、“水费查询管理”、“电费查询管理”、“煤气费查询管理”、“采暖费查询管理”、“其它费用查询管理”。4、保安部:“保安排班管理”、“保安排班查询”。-47- 5、经理室:“小区资源统计”、“业主信息查询”、“小区员工查询”。6、系统管理:“操作员管理”、“权限设置”、“背景设置”。3.2系统流程图开始操作员登录提示出错进入主界面经营部管理部财务部保安部经理室系统管理帮助错误正确图3.1系统流程图3.3数据流程图(DFD)由于版面有限,只画出部分数据流程图如下图所示操作员验证登录权限表经营部保安部管理部经理室1.1小区信息1.2大楼信息1.3房屋信息F1小区信息表F2大楼信息表F3房屋信息表2.1业主信息2.2人口信息2.3员工信息F4业主信息表F5人口信息表F6员工信息表3.1保安信息F7排班信息表4.1查询业主信息4.2查询员工信息-47- 图3.2DFD图3.4数据字典名字:小区信息表别名:描述:记录小区信息定义:小区编号+小区名称+小区说明+负责人+楼栋数+总户数+建筑面积+居住面积+绿化面积+占地面积+地址+备注+照片+竣工日期+交工日期位置:小区信息表名字:大楼信息表别名:描述:记录大楼信息定义:大楼编号+大楼名称+大楼说明+大楼位置+房屋数量+总户数+负责人+所属区域+备注+照片+建筑面积+竣工日期+交工日期+大楼结构+朝向+单元数位置:大楼信息表名字:房屋信息表别名:描述:记录房屋信息-47- 定义:房间编号+小区名称+大楼名称+单元+楼层+房间号码+房主代号+房主姓名+权属类型+朝向+房间结构+用途+房间类别+配备设施+房屋状态+建筑面积+使用面积+公产面积+私产面积+是否空闲+备注位置:房屋信息表名字:业主信息表别名:描述:记录业主信息定义:业主代号+业主姓名+性别+联系地址+电话号码+工作单位+证件名+证件号+签约日期+进住日期+进住起始日期+进住终止日期+是否进住+购房合同书编号+管理协议书编号+购入房编号+小区名称+大楼名称+房间号码位置:业主信息表名字:人口信息表别名:描述:记录人口信息定义:人口编号+姓名+性别+出生日期+成员代号+文化程度+与户主关系+籍贯+国籍+婚姻+工作单位+职业+职务+职称+电话号码+家庭住址+小区名称+大楼名称+房间号码+身份证+户口所在地+暂住证+房间编号+备注位置:人口信息表名字:员工信息表别名:描述:记录员工信息定义:员工编号+姓名+性别+出生日期+员工种类+联系电话+家庭住址+所属部门+备注位置:员工信息表名字:排班信息表别名:描述:记录保安排班信息-47- 定义:编号+执勤人+执勤目的+执勤岗位+巡逻线路+当发生事+事故处理情况+日期位置:排班信息表3.5E-R图小区信息小区编号小区名称小区说明负责人楼栋数交工日期竣工日期备注总户数建筑面积居住面积绿化面积占地面积地址3.5.1小区信息实体图图3.3小区信息实体图3.5.2业主信息实体图业主信息业主代号业主姓名性别联系地址电话号码工作单位购入房编号购房合同书编号大楼名称证件名小区名称签约日期进住日期是否进住房间号码管理协议书编号证件号-47- 图3.4业主信息实体图3.5.3大楼信息实体图大楼信息大楼编号大楼名称大楼说明大楼位置房屋数量建筑面积竣工日期交工日期单元数大楼结构总户数负责人所属区域备注朝向图3.5大楼信息实体图3.5.4房屋信息实体图房屋信息房间编号小区名称大楼名称单元楼层房间号码用途房间结构朝向是否空闲建筑面积配备设施房屋状态使用面积房间类别房主代号房主姓名权属类型-47- 图3.6房屋信息实体图在找出上述实体基础上,进一步分析得出实体联系图即E-R图管理员使用物业管理系统管理属于属于签约小区大楼房屋业主1n1n1nn1图3.7实体联系图(E-R图)第4章总体设计4.1项目规划物业管理系统是一个典型的数据库管理系统,系统由基本信息设置、货物托运管理、信息查询、报表管理、系统管理等模块组成,规划系统功能模块如下:1、经营部:小区信息生成、大楼信息生成、房屋信息生成、小区信息登记、大楼信息登记、房屋信息登记、系统数据设定、退出。2、管理部:业主信息登记、人口信息查询、小区员工管理、系统数据设定。-47- 3、财务部:收费登记管理、水费查询管理、电费查询管理、煤气费查询管理、采暧费查询管理、其它费用查询管理。4、保安部:保安排班管理、保安排班查询。5、经理室:小区资源统计、业主信息查询、小区员工查询。6、系统管理:操作员管理、权限设置、背景设置。7、帮助:帮助、关于本软件。4.2系统功能结构本系统共分6大部分、27个功能模块。系统功能结构图如图2所示。经理室小区员工查询业主信息查询小区资源统计系统管理权限设置操作员管理经营部管理部财务部小区信息生成大楼信息生成房屋信息生成小区信息登记大楼信息登记房屋信息登记系统数据登记保安部保安排班管理保安排班查询系统数据设定小区员工管理人口信息查询业主信息登记收费登记管理水费查询管理电费查询管理煤气费查询管理采暖费查询管理物业管理系统-47- 图4.1物业管理系统结构图第5章系统设计5.1设计目标本系统将信息技术与传统物业管理相结合,轻松解决物业管理公司发展中遇到的诸多问题,力推物业管理公司健康、快速地发展。本系统在设计的时候应该满足以下几个目标:1、系统最大限度地实现了易安装性、易维护性和易操作性。2、系统运行稳定、安全可靠。3、软件结构清晰,功能一目了然。4、方便、快捷的全方位查询。5、操作员可以随时修改自己的口令。6、不同的操作员具有不同的操作权限。7、数据保密性强,为每个用户设置权限级别。5.2开发及运行环境系统开发平台:MicrosoftVisualFoxPro6.0。运行平台:WindowsXP/Windows2000/Windows2003分辨率:最佳效果1024×768像素-47- 5.3数据库设计本系统采用的是VisualFoxPro自带的数据库,系统数据库名为DataBase。数据库“Wuyemanage”中包含26个表:部门信息表Tabbminfo、采暖费表Tabcnmoney、电费表Tabdianmoney、大楼信息表Tabdlinfo、房间结构表Tabfjstructure、朝向表Tabfrontage、房屋信息表Tabfwinfo、房屋统计表Tabfwtj、工种信息表Tabgzinfo、科目设定表Tabkmsd、煤气费表Tabmqmoney、其它费用表Tabothermoney、排班表Tabpb、权限表Tabpurview、权属类型表Tabqstype、人口信息表Tabrkinfo、人口统计表Tabrktj、水费表Tabsmoney、投诉信息表Tabtsinfo、投拆统计表Tabtstj、维修信息表Tabwxinfo、小区信息表Tabxqinfo、员工信息表Tabyginfo、业主信息表Tabyzinfo、装修队信息表Tabzxgroup、装修信息表Tabzxinfo。限于篇幅所限,下面只给出重要数据表的表结构,数据库中的数据表请参见附录A。-47- 第6章主要功能模块设计6.1系统主界面的设计程序启动后,在系统登录界面验证操作员密码后,将进入程序主界面的设计。通过程序主界面可以执行相应权限的操作,并且可以通过选择主界面菜单或按钮,调用相应程序,进行相应操作。程序主界面的运行结果如图所示。图6.1系统主界面的运行结果1.表单设计-47- (1)新建一个项目,名称为物业管理系统,在该项目中添加一个新表单,命名为Fdesktop。(2)在表单中插入名称为Vcxmain的ToolBar类、Image控件、listview控件、imagelist控件、Timer控件。(3)重要控件的重要属性如表1所示。表1重要属性及值对象属性值VcxmainLockScreenFalseVcxmainMovableFalseVcxmainSizeableFalseTimerInterVal102.类代码设计见附录BP296.2系统登录界面设计用户进入系统前,必须通过系统登录进入程序主界面,通过系统登录界面可以对用户的身份及使用权限进行确认。系统登录表单运行结果如图所示。图6.2系统登录表单运行结果1.表单设计-47- (1)在物业管理系统的项目中,新建一个表单,命名为Admin。(2)在表单中添加ImageList控件、Image控件、ListView控件、ImageList控件、Text控件、Label控件、Commandgroup控件。(3)重要控件属性如表2所示。表2重要控件的重要属性及值控件名属性值功能Text1PasswordChar*提供密码输入2.代码设计定义全局变量cn,用来判断输入操作员或密码的次数,当cn大于3时,将自动退出系统。在List列表中显示所有的操作员姓名和代表其权限级别的图标。代码见附录BP306.3小区信息生成设计用户单击快捷工具栏上的“经营部”按钮,在弹出的功能列表项中选择“小区信息生成”选项,进入小区信息生成界面。通过小区信息生成模块可进行小区区域数量的生成。小区信息生成运行结果如图所示。图6.3小区信息生成表单运行结果1.表单设计(1)在物业管理系统的项目中,新建一个表单,命名为为“小区信息生成”。(2)在表单中添加Label控件、Spinner控件、Commandgroup控件、Shape控件。(3)重要控件的重要属性如表3所示。表3重要控件的重要属性及值对象属性值LabelAutoSizeTrue-47- ShapeBorderStyle1-实线(默认值)ShapeSpecialEffect0-3维2.代码设计单击“开始生成”按钮,将自动生成小区基本信息保存到小区信息表“Tabxqinfo”中。小区编号区域由微调框所指定。如果数据表中有该小区编号,将不被生成。保存完毕,调入“小区信息登记”表单,进行小区详细信息的添加。具体代码见附录BP336.4业主信息登记设计用户进入系统后,单击主界面“管理部”按钮,在弹出的功能选项表中选择“业主信息登记”选项,进入业主信息登记界面。通过业主信息登记界面可以实现添加、修改、删除、业主信息,可以通过查询方式浏览业主信息及用户单击相应的业主代号选项,再单击修改业主信息按钮或添加新业主按钮可直接调用业主信息界面。业主信息登记运行结果如图所示。图6.4业主信息登记表单运行结果1.表单设计(1)在物业管理系统的项目中,新建一个表单,包含Form1、Form2、Form3、Form4的表单集,名称为“业主信息登记”。(2)在Form1表单中添加Label、Combo控件、Text控件、Grid控件、List控件、Command控件、Commandgroup控件、Optiogroup控件、DateandTimePicker控件、Edit控件。(3)重要控件属性如表4所示。-47- 表4重要控件的重要属性及值控件名属性值功能Form1.Combo1RowSourceRowSourceTypetabxqinfo.小区名称6-字段提供小区列表Form1.Grid1ColumnCount1提供大楼列表Form1.Grid3ColumnCountRecordSource21tabyzinfo提供业主信息列表Form1.List1ColumnCountColumnWidthsRowSourceType290,706-字段提供房屋列表Form3.Combo2RowSourceRowSourceType已进住,未进住1-值提供是否进住列表Form3.Grid1ColumnCountRecordSource27tabrkinfo提供家庭员列表2.代码设计见附录BP346.5小区资源统计设计用户进入系统后,单击主界面“经理室”按钮,在弹出的功能列表项中选择“小区资源统计”选项,进入小区资源统计界面。通过小区资源统计界面可通过“加入”按钮对小区资源进行统计分析,并且通过“去除”按钮清除对小区资源统计分析以及。小区资源统计运行结果如图所示。图6.5小区资源统计表单运行结果-47- 1.表单设计(1)在物业管理系统的项目中,新建一个表单,命名为“小区资源统计”。(2)在表单中添加Combo控件、List控件、Commandgroup控件、Label控件、Chart控件。(3)重要控件属性如表5所示。表5重要控件的重要属性及值控件名属性值功能Combo1RowSourceRowSourceTypetabxqinfo.小区名称6-字段提供小区列表List1ColumnCountColumnWidthsRowSourceType287,606-字段提供楼房列表List2ColumnCountColumnWidthsRowSourceType351,51,306-字段提供被选中楼房列表Combo2DisplayValueRowSourceRowSourceType房产资源比例图房产资源比例图,小区人口比例图1-值提供统计依据列表MSChart1ChartTypeColumnCountRowCountRowLable14-2dPie13R1显示统计信息图表2.代码设计见附录BP386.6权限设置设计用户进入系统后,单击主界面“系统管理”按钮,在弹出的功能列表项中选择“权限设置”选项,进入权限设置界面。通过权限设置界面可设置一般操作员的权限以及查询操作员权限级别及使用权限。权限设置运行结果如图所示。-47- 图6.6权限设置表单运行结果1.表单设计(1)在物业管理系统的项目中,新建一个表单,命名为“权限设置”。(2)在表单中添加List控件、Text控件、Command控件、Label控件、Check控件。(3)重要控件的重要属性如表6所示。表6重要控件的重要属性及值对象属性值LabelAutoSizeTrueTextColorSource0–对象的颜色属性TextEnabledFalseListEnabledTrue2.代码设计见附录BP44-47- 第7章系统测试与方法软件测试其目的是保证发现软件错误,它直接影响着软件的质量,是保证软件可靠性的主要方法之一。7.1系统测试分析本系统主要采用VisualFoxpro数据库开发平台进行开发。VisualFoxpro提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。虽然VisualFoxpro6.0功能强大,但由于其中的控件较多,所以在测试过程出现了一些错误而进行调试很有难度。例如发现运行单个表单时会出现找不到数据表的情况,后来我通过查阅资料才知道原来是因为在每个表单设计时都有个数据环境,要把该表单需要的数据表添加进去才行。当然除了以上出现的问题外,还应注意程序的严密性,因为程序中一个字母的出入就有可能使我的程序无法运行。而且由于时间及能力有限,有些模块的功能设计并不十分详细, 还有待完善。7.2系统测试的方法对系统的测试其方法是多种多样的,而选择一种正确的方法显得尤为重要。本系统测试涉及到以下几个方面:-47- 1、检验系统安全性方面,即系统管理员账号和密码的合法性和一致性检查。系统管理员的账号和密码必须一致,二者缺一不可。因此设计用例时可以任意变动其中任意一个,使其 处于不一致或不正确的状态:如输入错误账号和密码;输入正确的账号和错误的密码等。检查系统是否能够做出准确无误的身份验证。必须保证合用户的权限,限制非法用户的侵 入。2、数据信息填写的合法性检查。如在录入例如房间编号或大楼号时对数据有长度和规则的要求,如不按要求填写,就无法正确录入,也无法完成查询功能。3、检验系统的信息输出功能。即在正确输入了查询要求和信息后,系统应能立即反映出完整而且正确的信息返回给合法用户。结论众所周知,制作一个系统之前首先要进行的就是需求分析,但我一开始由于对系统的需求分析不足,因此导致多次重做。在刚刚开始使用VFP的时候,对很多细节也没有概念,特别是对表单的作用的掌握理解不准确,例如不知道如何建立表单集,在表单建好后运行时又遇到了找不到表的问题,同时在表单的制作过程中对表单的尺寸的把握,对各个控件尺寸的把握是比较困难的,各个控件在表单中的布局也非常重要。后来通过老师的指导、查阅相关的书籍资料及通过网络向专业的数据库人员请教把这些问题一一解决了。在建立好表单后就是要新建程序代码、菜单及其它的图片文件,这些也是相当烦琐的,其中要注意程序编写时的细节,格式,命令的拼写,运用的合理性等等都要进行分析。总的来说,做完一个系统的收获不仅仅是技术上的,而且使我对事情的宏观的控制有了更深的看法。-47- 致谢在本次毕业设计中,我从指导老师身上学到了很多东西。老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。她无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢老师耐心的辅导。另外,在系统开发过程中网络上一些不知名的朋友也给于我很大的帮助,帮助我解决了不少的难点,使得系统能及时开发完成,这里向他们表示深深的感谢。-47- 参考文献[1]《VisualFoxPro数据库开发实例解析》机械工业出版社王晶莹、王国辉2003年9月[2]《VisualFoxPro精彩编程200例》机械工业出版社王国辉、董韶华等2004年9月[3]《Visualfoxpro数据库开发关键技术与实例应用》人民邮电出版社周桓、张雨、王国辉2004年5月[4]《VisualFoxPro管理信息系统完整项目实例剖析》人民邮电出版社明日科技2005年7月-47- 附录A数据表1.电费表电费表(tabdianmoney)用来保存电费信息,其结构如表A1所示表A1字段名数据类型字段大小索引电表编号字符型20升序户主姓名字符型10收费标准数值型8,2计费起始日期日期型8计费终止日期日期型8本月读数整型4上月读数整型4使用数整型4应收金额货币型8实收金额货币型8房间编号字符型202.大楼信息表大楼信息表(tabdlinfo)是用来保存大楼的基本信息,其结构如表A2所示表A2字段名数据类型字段大小索引大楼编号字符型10升序大楼名称字符型20大楼说明字符型50大楼位置字符型30房屋数量整型4-47- 总户数整型4负责人字符型10所属区域字符型20备注字符型100照片备注型4建筑面积数值型15,6竣工日期日期型8交工日期日期型8大楼结构字符型20朝向字符型20单元数整型43.房屋信息表房屋信息表(tabfwinfo)用来保存房屋信息,其结构如表A3所示表A3字段名数据类型字段大小索引房间编号字符型30升序小区名称字符型20大楼名称字符型20单元字符型10楼层字符型10房间号码字符型10房主代号字符型20房主姓名字符型10权属类型字符型20朝向字符型20房间结构字符型20用途字符型30房间类别字符型20配备设施字符型30房屋状态字符型12建筑面积数值型12,6使用面积数值型12,6公产面积数值型12,6私产面积数值型12,6是否空闲逻辑型1备注字符型1004.房屋统计表房屋统计表(tabfwtj)是用来保存房屋统计信息,其结构如表A4所示-47- 表A4字段名数据类型字段大小索引是否空闲字符型10房间数整型45.煤气费煤气费(tabmqmoney)是用来保存煤气费的信息,其表结构如表A5所示表A5字段名数据类型字段大小索引煤气表编号字符型20升序户主姓名字符型10收费标准数值型8,2计费起始日期日期型8计费终止日期日期型8本月读数整型4上月读数整型4使用数整型4应收金额货币型8实收金额货币型8房间编号字符型206.权限表权限表(tabpurview)是用来设置管理员及一般操作员的权限信息,其表结构如表A6所示表A6字段名数据类型字段大小索引操作员编号字符型10升序操作员姓名字符型10升序密码字符型8权限级别字符型1经营部逻辑型1管理部逻辑型1财务部逻辑型1保安部逻辑型1经理室逻辑型1系统管理逻辑型17.小区信息表-47- 小区信息表(tabxqinfo)是用来保存小区的基本信息,其结构如表A7所示表A7字段名数据类型字段大小索引小区编号字符型10升序小区名称字符型20小区说明字符型50负责人字符型10楼栋数整型4总户数数值型4建筑面积数值型12,6居住面积数值型12,6绿化面积数值型12,6占地面积数值型12,6地址字符型30备注字符型100照片备注型4竣工日期日期型8交工日期日期型88.业主信息表业主信息表(tabyzinfo)是用来保存小区业主的基本信息,其结构如表A8表A8字段名数据类型字段大小索引业主代号字符型20升序业主姓名字符型10性别字符型2联系地址字符型30手机字符型20电话字符型20工作单位字符型50单位电话字符型20证件名字符型30证件号字符型30签约日期日期型8进住日期日期型8进住起始日期日期型8进住截止日期日期型8字段名数据类型字段大小索引是否进住字符型10购房合同书编号字符型20-47- 管理协议书编号字符型20购入房编号字符型20小区名称字符型20大楼名称字符型20房间号码字符型10附录B代码1、系统主界面代码:在类的Init事件中添加以下代码:publicbz&&定义全局变量bz=.f.this.listview1.view=2&&设置视图显示方式this.listview1.Icons=this.imagelist1.objectthis.listview1.smallicons=this.imagelist1.object&&添加列表项=this.listview1.listitems.add(,,"小区信息生成",,1)=this.listview1.listitems.add(,,"大楼信息生成",,1)=this.listview1.listitems.add(,,"房屋信息生成",,1)=this.listview1.listitems.add(,,"小区信息登记",,1)=this.listview1.listitems.add(,,"大楼信息登记",,1)=this.listview1.listitems.add(,,"房屋信息登记",,1)=this.listview1.listitems.add(,,"系统数据设定",,1)单击快捷工具条上的“经营部”按钮,将在左侧的List列表中显示经营部各功能选项。各功能选项由图标和标识性文字组成。具体代码如下:在“经营部”按钮的Click事件中添加以下代码:this.parent.listview1.listItems.clear&&清除数据this.parent.listview1.view=2&&设置视图显示方式*将ImageList控件图片赋予Listview控件-47- this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.object=this.parent.listview1.listitems.add(,,"小区信息生成",,1)=this.parent.listview1.listitems.add(,,"大楼信息生成",,1)=this.parent.listview1.listitems.add(,,"房屋信息生成",,1)=this.parent.listview1.listitems.add(,,"小区信息登记",,1)=this.parent.listview1.listitems.add(,,"大楼信息登记",,1)=this.parent.listview1.listitems.add(,,"房屋信息登记",,1)=this.parent.listview1.listitems.add(,,"系统数据设定",,1)在“管理部”按钮的Click事件中添加以下代码:this.parent.listview1.listItems.clearthis.parent.listview1.view=2this.parent.listview1.Icons=this.parent.imagelist1.objectthis.parent.listview1.smallicons=this.parent.imagelist1.object=this.parent.listview1.listitems.add(,,"业主信息登记",,2)=this.parent.listview1.listitems.add(,,"人口信息查询",,2)=this.parent.listview1.listitems.add(,,"小区员工管理",,2)=this.parent.listview1.listitems.add(,,"系统数据设定",,2)pjyb=.t.注:财务部、保安部、经理室、系统管理及帮助的实现代码同管理部的类似,此处将不再赘述。在“退出”按钮的Click事件中添加以下代码:quit&&退出主程序在控件image1的Click事件中添加以下代码:this.parent.commdl.filter="图片|*.bmp;*.jpg"&&设置文件类型为.BMP或.JPGthis.parent.commdl.showopen&&显示打开对话框this.parent.rq.image2.picture=this.parent.commdl.filename&&显示选定文件的名字2、系统登录界面代码-47- 在表单的Init事件中添加以下代码:publiccn&&定义全局变量cn=0&&给全局变量赋初值thisform.listview1.view=0&&设置视图显示方式thisform.listview1.Icons=thisform.imagelist1.objectthisform.listview1.smallicons=thisform.imagelist1.objectselecttabpurview&&选定Tabpurview工作区为当前工作区select*;fromwuyemanage!tabpurview;where权限级别="1";orderbytabpurview.操作员姓名;intocursorsysglythisform.text2.value=sysgly.操作员姓名thisform.text1.value=""key=alltrim(sysgly.操作员姓名)&&赋值给变量key=thisform.listview1.listitems.add(,,key,1)&&添加一个列表项selecttabpurviewselect*;fromwuyemanage!tabpurview;where权限级别="2";orderbytabpurview.操作员姓名;intocursorgjczydowhile!EOF()&&测试当前记录指针是否在文件尾key=alltrim(gjczy.操作员姓名)=thisform.listview1.listitems.add(,,key,2)&&添加一个列表项skip&&记录指针向下移动一条记录enddoselecttabpurviewselect*;fromwuyemanage!tabpurview;-47- where权限级别="3";orderbytabpurview.操作员姓名;intocursorybczydowhile!EOF()&&测试当前记录指针是否在文件尾key=alltrim(ybczy.操作员姓名)=thisform.listview1.listitems.add(,,key,3)&&添加一个列表项skip&&记录指针向下移动一条记录enddoselecttabpurviewselect*;fromwuyemanage!tabpurview;where权限级别="4";orderbytabpurview.操作员姓名;intocursorzdydowhile!EOF()&&测试当前记录指针是否在文件尾key=alltrim(zdy.操作员姓名)=thisform.listview1.listitems.add(,,key,4)&&添加一个列表项skip&&记录指针向下移动一条记录enddo单击“登录”按钮,系统将判断密码是否正确。如果密码不正确,将提示重新输入,三次后仍不正确,系统将自动退出。在“登录”按钮的Click事件中添加以下代码:selecttabpurviewcname=alltrim(thisform.text2.value)ppassword=alltrim(thisform.text1.value)setorderto操作员姓名&&指定控制索引文件ifempty(操作员姓名)&&判断操作员字段是否为空thisform.resize&&执行表单的Resize事件store.t.topjyb,pglb,pgcb,pcwb,pbab,pjls,psysgl&&给多个内存变量赋予相同的值-47- elseseekcname&&查找输入的操作员姓名setexacton&&设置字符精确比较ifalltrim(tabpurview.密码)!=ppasswordcn=cn+1cmessagetitle="系统登录"cmessagetext="密码错误,请重新输入!"ndialogtype=4+32nanswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)docasecasenanswer=6thisform.text1.value=""thisform.text1.setfocus&&文本框获得焦点casenanswer=7messagebox("不要乱来!",48,"系统登录")thisform.release&&释放表单endcaseifcn=3thisform.releaseendifelsethisform.resize&&执行表单的Resize事件endifendifsetexactoff&&设置字符非精确比较在“取消”按钮的Click事件中添加以下代码:quit&&退出3、小区信息生成代码cstart=thisform.spinner1.value-47- cend=thisform.spinner2.values=alltrim(str(cstart))e=alltrim(str(cend))cpicture=sys(5)+sys(2003)"+"imagesemptyimage.bmp"cmessagetitle="小区信息生成"cmessagetext="确认生成编号为"+s+"至"+e+"的小区信息吗?"nAnswer=messagebox(cmessagetext,4+32,cmessagetitle)docasecasenAnswer=6i=1fori=cstarttocendxqno=alltrim(str(i))select*;fromwygldatabasewuyemanage!tabxqinfo;where小区编号==xqno;intocursorlindepifreccount()=0insertintotabxqinfovalues(xqno,"","","",0,0,0,0,0,0,"","",cpicture,ctod(""),ctod(""))endifendformessagebox("数据保存成功!",48,"小区信息生成")thisform.releasedoformwyglform小区信息登记&&调入表单casenAnswer=7thisform.spinner1.setfocusendcase3、业主信息登记代码在Form1表单的“添加新业主”按钮的Click事件中添加以下代码:yxq=alltrim(thisform.combo1.displayvalue)-47- ydl=alltrim(thisform.text1.value)yfw=alltrim(thisform.text2.value)ifempty(yxq)orempty(ydl)orempty(yfw)messagebox("请选择小区名称、大楼名称和房屋编号!",48,"操作失败")elseselecttabyzinfolocatefor购入房编号=yfw&&顺序查询iffound()messagebox("此房屋已住人!",48,"业主信息登记")elsethisform.parent.form3.visible=.t.&&显示表单lfjno=len(yxq)+len(ydl)+1fjno=substr(yfw,lfjno)thisform.parent.form3.text1.value=yxqthisform.parent.form3.text2.value=ydlthisform.parent.form3.text3.value=fjnothisform.parent.form3.text4.value=yfwthisform.parent.form3.text5.value=yfwstore“tothisform.parent.form3.text6.value,thisform.parent.form3.text7.value,;thisform.parent.form3.text8.value,thisform.parent.form3.text9.value,;thisform.parent.form3.text10.value,thisform.parent.form3.text11.value,;thisform.parent.form3.text12.value,thisform.parent.form3.text13.value,;thisform.parent.form3.text14.value,thisform.parent.form3.combo1.value,;thisform.parent.form3.combo2.value,thisform.parent.form3.combo3.value-47- thisform.parent.form3.grid1.recordsource=""thisform.parent.form3.text5.setfocus&&Text5获得焦点endifendif单击“确定保存业主信息”按钮,将查找业主信息表“Tabyzinfo”中是否有该业主代号,如果没有,则将信息保存到业主信息表“Tabyzinfo”和人口信息表“Tabrkinfo”中,并修改房屋信息表“Tabfwinfo”中的相关数据。如果有,则修改“Tabyzinfo”、“Tabrkinfo”和“Tabfwinfo”中相关数据。系统将自动生成七位的人口编号(如“RK00007”)。具体代码如下:在Form3表单的“确定保存业主信息”按钮的Click事件中添加以下代码:yzdh=alltrim(thisform.text5.value)yzname=alltrim(thisform.text6.value)sex=alltrim(thisform.combo1.displayvalue)lxdz=alltrim(thisform.text11.value)sj=alltrim(thisform.text7.value)tel=alltrim(thisform.text9.value)workdw=alltrim(thisform.text14.value)dwtel=alltrim(thisform.text13.value)zjname=alltrim(thisform.combo3.displayvalue)zjnumber=alltrim(thisform.text12.value)sfjz=alltrim(thisform.combo2.displayvalue)gfhtno=alltrim(thisform.text10.value)glxysno=alltrim(thisform.text8.value)fwno=alltrim(thisform.text4.value)xqname=alltrim(thisform.text1.value)dlname=alltrim(thisform.text2.value)fjno=alltrim(thisform.text3.value)ifsfjz="已进住"fwzt="入住"else-47- fwzt="签约"endifselecttabrkinfoifempty(人口编号)rknumber=alltrim("RK00001")elseselectmax(人口编号)fromtabrkinfointoarraya&&查找表中最大的人口编号存入数组cend=val(substr(a(1),3))+1rknumber=alltrim("RK"+padl(alltrim(str(cend,5)),5,"0"))endififempty(yzname)orempty(gfhtno)orempty(glxysno)or;empty(zjnumber)orempty(zjname)or(empty(tel)andempty(sj))messagebox("请将信息添全!",48,"操作失败")elseselecttabyzinfolocatefor业主代号=yzdh&&顺序查询if!found()insertintotabyzinfovalues(yzdh,yzname,sex,lxdz,sj,tel,workdw,dwtel,zjname,zjnumber,;date1,date3,date2,date4,sfjz,gfhtno,glxysno,fwno,xqname,dlname,fjno)&&追加新记录updatewuyemanage!tabfwinfoset房主代号=yzdh,房主姓名=yzname,是否空闲=.f.,;房屋状态=fwztwhere房间编号==fwno&&更新数据表insertintotabrkinfovalues(rknumber,yzname,sex,ctod(""),"1","","户主","","","",workdw,"","","","",dwtel,sj,tel,lxdz,xqname,dlname,fjno,zjnumber,"","",fwno,"")messagebox("数据保存完毕!",48,"业主信息登记")thisform.parent.form1.grid1.column1.text1.click&&执行Text1的Click-47- 事件thisform.visible=.f.&&隐藏表单elseupdatewuyemanage!tabyzinfoset业主姓名=yzname,性别=sex,联系地址=lxdz,手机=sj,电话=tel,工作单位=workdw,单位电话=dwtel,证件号=zjnumber,签约日期=date1,进住日期=date3,进住起始日期=date2,进住截止日期=date4,是否进住=sfjz,购房合同书编号=gfhtno,管理协议书编号=glxysno,购入房编号=fwno,小区名称=xqname,大楼名称=dlname,房间号码=fjnowhere业主代号==yzdh&&更新数据表updatewuyemanage!tabfwinfoset房主代号=yzdh,房主姓名=yzname,是否空闲=.f.,房屋状态=fwztwhere房间编号==fwnoupdatewuyemanage!tabrkinfoset姓名=yzname,性别=sex,工作单位=workdw,单位电话=dwtel,手机=sj,传呼=tel,家庭住址=lxdz,身份证号=zjnumber;where房间编号==fwnothisform.parent.form1.grid1.column1.text1.clickendifendif3、小区资源统计代码实现从List1控件中选取无重复数据到List2控件中。具体代码如下:在“加入”按钮的Click事件中添加以下代码:publicsourceasstringfori=1tothisform.list1.listcountifthisform.list1.selected(i)ifthisform.list2.listcount=0thisform.list2.additem(thisform.list1.list(i))&&添加数据项dlname=alltrim(thisform.list1.list(i))selecttabdlinfoselect*;fromwuyemanage!tabdlinfo;where大楼名称==dlname;-47- intocursorlindlfzr=alltrim(lindl.负责人)dlno=alltrim(lindl.大楼编号)thisform.list2.rowsourcetype=1&&设置Rowsourcetype属性值为:1-值source=dlname+","+dlno+","+fzr+","leftsource=left(source,len(source)-1)thisform.list2.rowsource="&source"&&赋数据值的源elseforj=1tothisform.list2.listcountif!alltrim(thisform.list1.list(i))==alltrim(thisform.list2.list(j))bz=.t.elsebz=.f.exit&&立即跳出循环endifendforifbz=.t.thisform.list2.additem(thisform.list1.list(i))dlname=alltrim(thisform.list1.list(i))selecttabdlinfoselect*;fromwuyemanage!tabdlinfo;where大楼名称==dlname;intocursorlindlfzr=alltrim(lindl.负责人)dlno=alltrim(lindl.大楼编号)thisform.list2.rowsourcetype=1source=source+dlname+","+dlno+","+fzr+","leftsource=left(source,len(source)-1)-47- thisform.list2.rowsource="&leftsource"elseexitendifendifendifendfor单击“开始分析信息”按钮,将根据用户在Combo2控件中选择的统计依据对数据进行统计,将统计结果保存到相应的临时表中,并在MSChart控件中显示。具体代码如下:在“开始分析信息”按钮的Click事件中添加以下代码:docasecasealltrim(thisform.combo2.displayvalue)=="房产资源比例图"ifthisform.list2.listcount=0messagebox("请选择要统计的大楼名称!",48,"房产资源比例图")elsepublicdl&&定义全局变量dl=""dl1="大楼名称==""fori=1tothisform.list2.listcountdl1=dl1+alltrim(thisform.list2.list(i))+""or大楼名称==""endfordl=alltrim(substr(dl1,1,len(dl1)-14))selecttabfwinfoselect*;fromwygldatabasewuyemanage!tabfwinfo;where&dl;orderby房间编号;intocursorlinfwinfoifreccount()=0messagebox("请先生成房屋信息!",27,"操作失败")-47- elseselectlinfwinfoselect*fromlinfwinfowhere是否空闲==.f.intocursorlinfselectlinffcount=reccount()selecttabfwtjreplace房间数withfcountfor是否空闲="已签约"selectlinfwinfoselect*fromlinfwinfowhere是否空闲==.t.intocursorlinfselectlinftcount=reccount()selecttabfwtjreplace房间数withtcountfor是否空闲="未签约"*用mschart控件制作房产资源比例图thisform.mschart1.visible=.t.Seletabfwtjno=reccount()thisform.mschart1.ChartType=14&&图表类型为饼图Thisform.mschart1.ColumnCount=1Thisform.mschart1.RowCount=2Thisform.mschart1.titletext="房产资源比例图"&&显示标题fori=1tonosettalkoffselecttabfwtjgoisfkx=tabfwtj.是否空闲ccount=tabfwtj.房间数Thisform.mschart1.Row=iThisform.mschart1.Rowlabel=sfkxthisform.mschart1.data=ccount-47- thisform.blgs.caption="已签约、未签约房间数各占总房间数的百分比"endforendifendifcasealltrim(thisform.combo2.displayvalue)="小区人口比例图"ifthisform.list2.listcount=0messagebox("请选择要统计的大楼名称!",48,"小区人口比例图")elsepublicdldl=""dl1="大楼名称==""fori=1tothisform.list2.listcountdl1=dl1+alltrim(thisform.list2.list(i))+""or大楼名称==""endfordl=alltrim(substr(dl1,1,len(dl1)-14))select*;fromdatabasewuyemanage!tabrkinfo;where&dl;orderby人口编号;intocursorlinrkinfoifreccount()=0messagebox("此大楼无人入住!",27,"操作失败")elseselectlinrkinfoselect*;fromlinrkinfo;where性别=="女";intocursorlingirlselectlingirl-47- girlcount=reccount()selecttabrktjreplace人数withgirlcountfor性别="女"selectlinrkinfoselect*;fromlinrkinfo;where性别=="男";intocursorlinboyselectlinboyboycount=reccount()selecttabrktjreplace人数withboycountfor性别="男"thisform.mschart1.visible=.t.Seletabrktjno=reccount()thisform.mschart1.ChartType=14Thisform.mschart1.ColumnCount=1Thisform.mschart1.RowCount=2Thisform.mschart1.titletext="小区人口比例图"fori=1tonosettalkoffselecttabrktjgoisex=tabrktj.性别ccount=tabrktj.人数Thisform.mschart1.Row=iThisform.mschart1.Rowlabel=sexthisform.mschart1.data=ccountthisform.blgs.caption="男女人口各占总人口的百分比"endfor-47- endifendifendcase6、权限设置代码在表单的Init事件中添加以下代码:publicll=.f.thisform.Resize&&执行表单的Resize事件thisform.command1.enabled=.f.thisform.list1.controlsource="tabpurview"&&赋数据源thisform.list1.rowsource="tabpurview.操作员姓名"&&赋数据源thisform.list1.rowsourcetype=6&&设置Rowsourcetype属性值为:6-字段L是全局变量,当L为.T.或.F.时,这个值会集体赋给相关控件的Enabled属性。这种写法其实将Resize事件当成一个设相关控件是否有效的函数。具体代码如下:在list1控件的InteractiveChange事件中添加以下代码:thisform.Activate&&执行表单的Activate事件docasecasealltrim(thisform.text1.value)="1"messagebox("权限不可修改",48,"权限管理")l=.f.thisform.Resize&&执行表单的Resize事件casealltrim(thisform.text1.value)="2"oralltrim(thisform.text1.value)="3"thisform.text1.enabled=.t.messagebox("权限不可修改",48,"权限管理")l=.f.thisform.Resize&&执行表单的Resize事件thisform.text1.enabled=.t.casealltrim(thisform.text1.value)="4"l=.t.thisform.Resize&&执行表单的Resize事件-47- endcase判断用户输入的权限级别是否有效。如果权限级别为1或4以上则给予系统警告。在text1控件的InteractiveChange事件中添加以下代码:thisform.command2.enabled=.t.thisform.command3.enabled=.f.thisform.command1.enabled=.t.docasecaseval(alltrim(thisform.text1.value))=1l=.f.thisform.Resize&&执行表单的Resize事件messagebox("级别1为系统管理员,不能有多个,请重新输入!",48,"权限管理")thisform.text1.value=""caseval(alltrim(thisform.text1.value))=2orval(alltrim(thisform.text1.value))=3l=.f.thisform.Resize&&执行表单的Resize事件thisform.text1.enabled=.t.caseval(alltrim(thisform.text1.value))=4l=.t.thisform.Resize&&执行表单的Resize事件caseval(alltrim(thisform.text1.value))>4messagebox("级别不能大于4,请重新输入",48,"操作失败!")thisform.text1.value=tabpurview.权限级别thisform.text1.setfocus&&Text1获得焦点endcasethisform.refresh&&刷新表单-47- -47-'