作为一个物业管理系统应该具用的功能特点分析如下.docx

上传人:b****8 文档编号:9885948 上传时间:2023-02-07 格式:DOCX 页数:14 大小:239.49KB
下载 相关 举报
作为一个物业管理系统应该具用的功能特点分析如下.docx_第1页
第1页 / 共14页
作为一个物业管理系统应该具用的功能特点分析如下.docx_第2页
第2页 / 共14页
作为一个物业管理系统应该具用的功能特点分析如下.docx_第3页
第3页 / 共14页
作为一个物业管理系统应该具用的功能特点分析如下.docx_第4页
第4页 / 共14页
作为一个物业管理系统应该具用的功能特点分析如下.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

作为一个物业管理系统应该具用的功能特点分析如下.docx

《作为一个物业管理系统应该具用的功能特点分析如下.docx》由会员分享,可在线阅读,更多相关《作为一个物业管理系统应该具用的功能特点分析如下.docx(14页珍藏版)》请在冰豆网上搜索。

作为一个物业管理系统应该具用的功能特点分析如下.docx

作为一个物业管理系统应该具用的功能特点分析如下

一、分析

作为一个物业管理系统,应该具用的功能特点分析如下。

1、高效、清晰的业务流程,真正实现企业管理的可视性和可控性。

  清晰的业务流程明确各岗位职责,规范的业务操作提高各个业务环节的工作效率——软件系统的实施能最大限度的减少管理漏洞,减少人为因素的干预,并提高企业运营和管理效率,支持企业商业目标的实现,从而从根本上提高企业的行业竞争性。

  2、快速查询功能。

  物业管理中房产资料、业主资料、住户资料以及文件档案的数量庞大,手工整理、统计汇总工作量非常大,而且繁琐,查询某房产或业主资料往往需要较长的时间。

通过计算机辅助管理,可以随时快速地查询用户信息,减少大量重复工作,大大提高工作效率。

  3、各项费用自动计算,减少人工差错与负担。

  物业管理中一项重要的工作是各项费用的计算、统计、汇总,然而由于费用项目较多、计算方法繁琐,手工除了操作差错率较高,而且工作负担繁重。

计算机管理利用了计算机运算速度快、准确率高的特点。

使得各项费用的计算、统计、汇总工作既简单、方便,又能轻松自如。

  4、灵活、准确的收费,提高财务工作效率。

  管理面积越大、户数越多,财务工作越繁重,大量水电费、管理费等其他费用收费不但繁杂,而且容易产生差错。

用计算机管理收费,灵活性、准确性大大提高,。

客户不但可以分项付款,还可以预付各项费用,大大降低财务收费人员的劳动强度和工作。

  5、全面的统计分析,提高决策依据

  在物业管理的市场竟争中,计算机快速、自动、强大的统计汇总功能和丰富的报表打印系统,使各项数据的统计汇总、分析表格一应俱全,物业公司领导可以随时查阅最新的详细情况,并依次快速、准确地做出决策,提高物业公司的管理水平与竞争力。

  6、加强企业内部信息沟通,提高工作效率。

  网络化的物业管理系统,能够实现系统内部信息及数据资源的共享,以加强企业内部的信息沟通,提高整个企业的团队协同工作能力和工作效率,构建企业扁平化管理架构。

  7、系统功能增减灵活自如,支持客户定制。

  模块化结构设计,支持用户自定义功能,界面风格、业务流程、功能模块均可自定义,预留多种数据接口(财务、楼宇自控、门禁、三表远传),使系统功能增减灵活自如。

  8、安全的权限管理—数据安全高枕无忧。

  按用户角色划分用户权限级别,角色业务范围内业务通行无阻,共享范围内资源共享;角色业务范围外从根本上不配置应用功能程序,彻底保证系统各用户角色模式下业务数据权限安全。

9、独特实用的操作日志。

  软件的操作日志功能全面跟踪记录每天的软件操作使用情况,对物业管理软件使用情况进行监控,对所有使用此软件的物业员工的使用情况进行监控。

基于以上功能,应制作相应的程序模块。

但由于本人初学VC,对数据库的链接毫无理解。

加于时间方面的问题。

为完成作业需要。

在能力范围内,只有减少程序相应的功能模块。

完成此物业管理系统。

由于功能很少,应此称作小型物业管理系统。

请老师体量!

二、设计

物业管理系统是基于数据库的系统。

如果功能强大的系统应该选择SQL数据库,但本人制作的小型物业管理系统,功能小,MicrosoftOfficeAccess已经能实现所有功能。

因此本人选择MicrosoftOfficeAccess2003作为此系统的数据库。

开发环境为WindowsXP下的VisualC++。

本系统要实现的功能有:

1,记录住户的基本资料信息。

包括,住户名、住户所住的房号、住户联系电话等信息。

2,记录住户一个月所用的水费,电费,管理费,同杂费的信息,还自动计算出本月要交的费用。

3,要有登陆功能,使只有是系统管理员才能对数据进行修改,普通用户只能对自己的信息进行查询。

4,有查询功能,按住户名查询。

查询本年内所有月份的费用数据。

5,有查询显示月份数据功能,一运行系统,就会自动根据系统时间,自动选择显示当前月分的数据。

6,管理员有增加用户,增加记录,对记录进行修改,删除记录等功能。

数据库设计。

数据库中只有users这个表,用来记录所有用户的信息,users的字段和记录信息如下:

id数据库记录序号.数据类型为自动编号。

name记录住户名称。

数据类弄为文本型。

mon记录月份。

数据类型为数字型。

num记录住户房号。

数据类弄为文本型。

tele记录住户联系电话。

数据类弄为文本型。

water记录住户的水费。

数据类弄为文本型。

ele记录住户的电费。

数据类弄为文本型。

manage记录住户管理费。

数据类弄为文本型。

elsel记录住户杂费。

数据类弄为文本型。

money记录住户总费用。

数据类弄为文本型。

之所以把水费、电费、管理费、杂费、总费用设为文本型,是为了VC对数据读取和写入比软容易实现。

在自动计算总费用时,只需要将其转成数字整型进行计算就可以了。

数据表设计如下图:

用户界面设计。

由于功能实现小,对话框就能实现。

应此选用对话框程序模式。

主界面图如下:

这样界面清晰,功能可见。

操作简单。

登陆界面。

由于小型系统。

不须对密码过于保密,应此不设专用的数据表记录密码。

也就是说密码在设计程序时内定。

密码默认为admin

这样就减少系统设计和数据库设计的复杂性。

登陆界面如下图:

其它界面设计图如下:

 

增加用户界面。

修改用户信息界面。

增加用户记录界面由于要用户的全新资料。

包括房号,联系电话。

这与增加记录的界面有所区别。

因为增加记录,只要增加本月的水费、电费、管理费、杂费。

而房号同联系电话是不变的。

因此,增加记录的界面就减少了不必要的填写项。

系统会自动读取最后一个月的用户记录信息。

当点击选中相应记录时,按下修改按钮,就会出现修改界面。

系统将自动读取选中的资料,只要修改其中项,按提交即能实现修改功能。

 

 

 

增加记录界面。

三、程序实现

本程序链接数据库用ADO链接方式。

因为ADO不需要设置数据源。

对用户简单易用。

ADO(ActiveXDataObject)是Microsoft数据库应用程序开发的新接口,是建立在

OLEDB之上的高层数据库访问技术。

ADO建立数据库程序的基本流程如下。

(1)初始化COM库,引入ADO库定义文件

(2)用Connection对象连接数据库

(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。

(4)使用完毕后关闭连接释放对象。

建立数据库链接操作如下。

(本程序命名为work)

在stdafx.h中加入如下语句:

#import"c:

\programfiles\commonfiles\system\ado\msado15.dll"no_namespacerename("EOF","adoEOF")

在这里,要看msado15.dll的路径而定。

初始化COM库。

BOOLCWorkApp:

:

InitInstance()

{

AfxOleInit();

......

创建Connection对象并连接数据库

BOOLCWorkDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

HRESULThr;

try

{

hr=m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象

if(SUCCEEDED(hr))

{

hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=2006.mdb","","",adModeUnknown);///连接数据库

}

}

catch(_com_errore)///捕捉异常

{

CStringerrormessage;

errormessage.Format("连接数据库失败!

\r\n错误信息:

%s",e.ErrorMessage());

AfxMessageBox(errormessage);///显示错误信息

}

同时要在work.h中定义两个ADO智能指针类。

classCWorkDlg:

publicCDialog

{

//Construction

public:

voidsuaxin(CStringm);

CWorkDlg(CWnd*pParent=NULL);//standardconstructor

_RecordsetPtrm_pRecordset;

_ConnectionPtrm_pConnection;

读取数据库操作.

intnItem;

SYSTEMTIMEst;//读取系统当前月份.

CStringstrmonth;

GetLocalTime(&st);

strmonth.Format("%2d",st.wMonth);

intn=atoi(strmonth.GetBuffer(0));//类型转换.

CStringSQL;

SQL.Format("SELECT*FROMuserswheremon=%d",n);//按月份读取数据.

_variant_tsql2=SQL;

_variant_tvname,vnum,vID,vtele,vwater,vele,vmanage,velsel,vmoney,vmon;

try

{//用m_pRecordset读取数据.

m_pRecordset.CreateInstance("ADODB.Recordset");

m_pRecordset->Open(sql2,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

m_bSuccess=TRUE;

while(!

m_pRecordset->adoEOF)

{vID=m_pRecordset->GetCollect("id");

vmon=m_pRecordset->GetCollect("mon");

vname=m_pRecordset->GetCollect("name");

vnum=m_pRecordset->GetCollect("num");

vtele=m_pRecordset->GetCollect("tele");

vwater=m_pRecordset->GetCollect("water");

vele=m_pRecordset->GetCollect("ele");

vmanage=m_pRecordset->GetCollect("manage");

velsel=m_pRecordset->GetCollect("elsel");

vmoney=m_pRecordset->GetCollect("money");

nItem=m_ctrlperson.InsertItem(0xffff,(_bstr_t)vID);//把数据放进列表控件.m_ctrlperson列表控件的指针.

m_ctrlperson.SetItem(nItem,1,1,(_bstr_t)vname,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,2,1,(_bstr_t)vmon,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,3,1,(_bstr_t)vnum,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,4,1,(_bstr_t)vtele,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,5,1,(_bstr_t)vwater,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,6,1,(_bstr_t)vele,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,7,1,(_bstr_t)vmanage,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,8,1,(_bstr_t)velsel,NULL,0,0,0);

m_ctrlperson.SetItem(nItem,9,1,(_bstr_t)vmoney,NULL,0,0,0);

m_pRecordset->MoveNext();

}

}

catch(_com_errore)///捕捉异常

{

AfxMessageBox("读取数据库失败!

");///显示错误信息

}

使用完毕后关闭连接释放对象

在work.app下建一个函数名为ExitInstance()的函数.用于关闭连接释放对象.

voidCWorkApp:

:

ExitInstance()

{

if(m_pConnection->State)

m_pConnection->Close();///如果已经打开了连接则关闭它

returnCWinApp:

:

ExitInstance();

}

修改数据代码如下.

try

{CStringSQL;

SQL.Format("SELECT*FROMuserswhereid=%d",newid);//按id找到数据.

_variant_tsql2=SQL;

m_pRecordset.CreateInstance("ADODB.Recordset");

m_pRecordset->Open(sql2,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

floattele=atof(m_water.GetBuffer(0));//类型转换.用于修改后,floatele=atof(m_ele.GetBuffer(0));//重新计算总费用的.

floatmanage=atof(m_manage.GetBuffer(0));

floatelsel=atof(m_elsel.GetBuffer(0));

m_pRecordset->PutCollect("name",_variant_t(m_name));

m_pRecordset->PutCollect("num",_variant_t(m_num));

m_pRecordset->PutCollect("tele",_variant_t(m_tele));

m_pRecordset->PutCollect("water",_variant_t(m_water));

m_pRecordset->PutCollect("ele",_variant_t(m_ele));

m_pRecordset->PutCollect("manage",_variant_t(m_manage));

m_pRecordset->PutCollect("elsel",_variant_t(m_elsel));

m_pRecordset->PutCollect("money",_variant_t(tele+ele+manage+elsel));

m_pRecordset->PutCollect("mon",_variant_t(m));

m_pRecordset->Update();

CDialog:

:

OnOK();

}

 

增加新记录操作.

try

{

m_pRecordset.CreateInstance("ADODB.Recordset");

m_pRecordset->Open("SELECT*FROMusers",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

floattele=atof(m_water.GetBuffer(0));

floatele=atof(m_ele.GetBuffer(0));

floatmanage=atof(m_manage.GetBuffer(0));

floatelsel=atof(m_elsel.GetBuffer(0));

m_pRecordset->AddNew();///添加新记录

m_pRecordset->PutCollect("name",_variant_t(cname));

m_pRecordset->PutCollect("num",vnum);

m_pRecordset->PutCollect("tele",vtele);

m_pRecordset->PutCollect("water",_variant_t(m_water));

m_pRecordset->PutCollect("ele",_variant_t(m_ele));

m_pRecordset->PutCollect("manage",_variant_t(m_manage));

m_pRecordset->PutCollect("elsel",_variant_t(m_elsel));

m_pRecordset->PutCollect("money",_variant_t(tele+ele+manage+elsel));

m_pRecordset->PutCollect("mon",_variant_t(m));

m_pRecordset->Update();

CDialog:

:

OnOK();

}

catch(_com_errore)///捕捉异常

{

AfxMessageBox("读取数据库失败!

");///显示错误信息

}

以上列出了对数据库的基本操作.祥细代码看源文件.

根据上面的操作.系统基本已实现.

四、制作感想。

经过两个多星期的学习与制作。

能够完成这样的系统。

我感到有点成就感。

虽然实现功能很少,而且程序较乱。

但在以往未曾接触过VC++的情况下。

只花两个多星期,能完成这里。

我已经感到满足。

经过学习完成这个系统,使我对VC++有一定的了解。

在学习过程中,难点在于数据库的链接问题。

曾经试过很多次失败,有时在书上抄了一大堆程序,但运行后出错。

经几次检查后还没有查出错误。

花了很大努力却没有收获,这样试了几次,有时几呼要放弃了。

想另做过一项。

因为我一直以来,我主要学习方向在网页设计和FLASH学习上。

我对FLASH有很深的了解,能够熟练地运用flash的肢本语言Actionscript.对ASP也有很深认识。

想另做一个是这方面的。

做这个系统是揪中的,没有办法。

选中了就选中吧。

于是又继续做下去。

网络真系帮助我不少。

很多问题都能帮我解决。

例如在VC中编程实现按钮的启用(enable)和禁用(disable)、列表控件CListCtrl使用等,都是在网上学习的。

有时出现错误,也能在网上找出愿因。

只有一个数据库链接出错时,在网上找不到答案。

问题很多人问了。

但没有人能回答。

应此在这提出一下。

这个问题就是在数据库链接过程中出现runingtime错误,有时出现没有提示的错误。

在这方面,我现在也不明白。

在写这个系统的过程中,出现了很多次这种错误。

然而出错原因却了一个数据表名。

在开始时,我的数据表名为user但这样去出现runingtime错误。

怎样改也不能修复。

在巧合过程中,我改了成users,这样错误就解决了。

我想,这也是我能否完成这个系统的关键了。

后来我想想。

这是不是系统关键字的问题?

但不可能呀。

因为在ASP中,有很多是有user作表名的。

这个问题以后我会跟进。

一定要找出真正原因。

在整个过程中,感到VC++有点难学,太多函数的类要记忆了。

难度真要全都记住不成?

现在,我感到没有这个必要了。

因为在练习多次后,我发觉这些类我已经能很熟练地掌握了。

在这里我要感谢老师给我做这个课程设计的机会,因为有压力才有动力。

要是自己学,我想不会这么快学会。

就是因为要交作业,于是在拼命学,遇到困难也没有放弃。

就是为了完成了能交。

现在感到这些已经不重要了。

因为自己能学到东西才是最重要了。

在这里,很感谢老师给我上了一节这样好的VC++入门课。

比我自己学半年的效果还要好。

在此至谢。

 

五、程序运行注意

本程序的管理密码是admin,刚运行时,系统会自动选择当前月份的记录。

选择相应的月份,系统就会显示相应的记录。

在添加记录时,系统会自己选择下一个月的记录。

由于本系统只识别月份,没有年的记录。

因此只适合一年内用。

如果到新的一年,只要增加一个新数据库,修改数据库链接名称就可以了。

第一次用VC++只能做到这里。

请体量。

以后,我会努力学习的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1