小区住户信息管理系统_第1页
小区住户信息管理系统_第2页
小区住户信息管理系统_第3页
小区住户信息管理系统_第4页
小区住户信息管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

小区住户信息管理系统学生姓名:尹能指导老师:阳慧摘要本系统用软件系统管理的方法代替了平时手工管理资料的方法。本系统的主要功能有:新增住户、删除住户、查询住户。在本系统上对住户资料的操作都会存储到Access数据库里面,进行永久性保存。使用VC++6.0的开发技术,初步完成了基于Access2003的系统开发,实现了住户的新增,住户的删除,住户的查询。基本满足了系统简单实用的需求。关键词:住户;visualC++6.0;Access2003;管理系统1引言随着房地产业的日渐成熟,住宅小区物业管理不仅反映经济社会发展水平和市管理水平,而且关系到居民生活环境与生活质量的提高。1.1课题背景及意义2003年6月8日国务院第379号令颁布了《物业管理条例》,标志着我国物业管理行业将进入规范化、法制化、市场化、社会化管理。根据不完全统计,至2006年底,全国物业管理的覆盖面只占城市物业总量的45%,经济发达的一些城市己达60%以上,至2007年底,我国物业管理企业已超过6万家,从业人员已突破630万人,年营业总收入超过1200亿元,物业管理社会化、市场化、专业化、信息化发展迅速,然而物业管理在我国毕竟是新生事物。物业管理的市场化进程各地区参差不齐,发展很不平衡。我国物业管理理论研究相对薄弱,实际操作各环节不同程度地存在着一定缺陷和问题,物业管理模式有待于进一步探讨研究形成。对于物业公司来说,什么才是最重要的呢?很明显,是居民,居民是物业公司的一切工作的重点,必须要有有效的手段对居民的信息进行有效的管理,现在已经是现代化的社会,传统的用手抄,文档资料等人工方式来管理大量的人员资料的时代已经过去了,只有用一些现代化的管理软件,使用这些现代化的管理软件可以极大地提高物业管理公司的工作效率,且容易修改,容易管理。在现在这种竞争激烈的社会中,只有那些能够给客户提供优质高效的服务的公司,才能赢得客户的青睐,而高效的管理,正是提供高质量服务的保证。1.2课程设计目的从物业管理企业的角度看,住宅小区物业管理公司是独立运行、自负盈亏的经济实体,追求自身经济利益的最大化,在合理收取物业管理费用的基础上,发挥自身潜能,节支开源,压缩管理成本,向管理要效益。不断采用新技术、新方法,依靠科技进步提高管理水平与服务水平,进行合理先进的成本核算,以最小的投入,获取最大的经济效益。住宅小区物业管理公司最基本的职能就是为小区内居民提供舒适、安静、良好的居住环境,有利于住宅小区居民的身心健康。住户管理系统设计的指导思想使住宅小区物业管理系统选择的设备更具先进性、成熟性、经济性并具有相当的扩充升级余地,为使未来的住宅小区物业管理将在现有的基础上更加完善、更加先进。人们对实施住宅小区物业管理有了客观和实际的需求。这是物业管理市场化及物业管理发展的最根本的动力和基础。1.3课题技术支持本系统具有完善的住户信息储存、修改、添加、删除、查询功能,简单实用。本住户管理系统后台数据库采用Access数据库,以保证数据的安全、高效和稳定。前台采用微软公司的VisualC++6.0作为主要的开发工具,其可与Access数据库无缝链接。1.4可行性分析报告可行性分析报告可分为经济可行性、技术可行性还有政策可行性。(1)经济可行性从经济角度来说,该系统结构简单,易于开发,开发时所用的人力,物力较少,且实用性好,对物业公司的工作效率的提高有不小的帮助,因此会有一定的市场潜力,将会有不错的经济效益。(2)技术可行性从技术角度来说,本系统主要采用两个工具来进行开发,一个是微软公司的MicrosoftofficeAccess2003,一个是MicrosoftVisualC++6.0,采用这两个工具的原因是因为本管理系统的整个结构比较简单,Access正好可以作为小型数据库系统的数据库使用。而VisualC++6.0是比较成熟的应用程序开发工具,且功能强大,足以胜任这种小型系统的开发。因此,使用这两个工具,本人可以在一定时间内开发出一个住户管理系统。(3)政策可行性

从社会角度来说,近年来,随着人民生活水平的提高,人们对住宅质量提出更高的要求,在此前提下,我国各地涌现出了一些运用现代的计算机、控制与通信技术的智能化住宅小区。但是许多住宅小区都存在好了平台却没有智能化的软件在上面运行的情况,或者说缺少现代化的管理手段。因此,开发一个简单实用的住户管理系统是迫在眉睫的事情。简而言之,开发住户管理系统是一项利国利民的好事,是符合国家的政策法规的,所以从法律上来说是不存在问题的,故具有法律可行性即政策可行性。2需求分析2.1系统需求分析通过对小区管理中的住户信息管理这部分的分析研究,一个住户管理系统应该要有下面的功能:(1)罗列住户的业务流程;(2)查看住户详细信息的业务流程;(3)增加住户的业务流程;(4)查询住户的业务流程;(5)删除住户的业务流程;2.2系统层次方框图本系统的层次方框图如图2-1所示。分为三个模块,分别为增加住户、删除住户、查询用户,如图2-1所示:住户管理系统的后台系统删除用户查询用户增加住户图2-1系统的层次方框图

删除用户查询用户2.3数据流图:本数据流图体现了本系统内部的事务的流向,数据被处理的过程,数据的存储过程。如图2-2所示:物业管

理员事务事务.插入数据增加住户增加请求T删除住删除请求户流程切

换查询和罗

列请求-住户信息住户信息删除数据住户信息,显示信

息住户信息表物业管

理员事务事务.插入数据增加住户增加请求T删除住删除请求户流程切

换查询和罗

列请求-住户信息住户信息删除数据住户信息,显示信

息住户信息表物业管

理员查询和住户信息"I户查询和读取数据查看请求住户信息住户信息图2-2系统的数据流图2.4数据字典:以下便是在数据库表和程序中都用到的数据项:表2-1数据字典属性名储存代码类型备注户主姓名m_housemasterTCHAR小区名称m_sectionnameTCHAR户主所在的小区楼号m_buildingnumLONG户主所在的楼号单兀号m_cellnumLONG户主所在的单兀号房间号m_roomnumLONG户主的房间号住址电话m_housetelTCHAR户主的住址电话单位m_officeTCHAR户主所在的单位单位电话m_officetelTCHAR户主所在的单位的电话寻呼机号m_beeppagerTCHAR户主的寻呼机号码手机号m_mobi1eTCHAR户主的手机号码电子邮件m_emai1TCHAR户主的电子邮件2.5需求规格说明书:编写目的对需求分析进行补充说明,详细说明需求分析的部分细节、统一规范格式和建立需求约束规范等。对功能的规定在数据流图与数据字典当中,已有了分析。对性能的规定系统界面友好,具有一定的健壮性,出现错误时,有良好的错误提示,系统能够保证长时间运行等。数据格式的规范数据类型格式校验它是从数据类型和数据格式的角度来检测输入数据的正确性。例如,在输入住户所在的小区、号楼、单元、房间时,输入的数据应该为整形,如果输入的是其他类型或是为空都是错误的。运行环境的规定设备:本系统对设备的要求很低,现在的一般的电脑主机都能运行。但运行时需要有文件MFC42.DLL\MSVCRT.DLL,如果没有,安装一个VisualC++6.0。支持软件:系统支持:Windows2000/Xp等。开发工具:VisualC++6.0、Access2003。3系统总体设计3.1概念结构设计因本系统较为简单,因此本系统的实体只有管理员和住户,其中住户是最重要的实体,它的主要属性有:姓名、地址、家庭电话、工作电话、单位电话、寻呼机、手机、Emai1。其中管理员和住户的关系是一对多的关系。如图3-1所示:

图3.1系统全局实体E-R图3.2逻辑结构设计逻辑设计规范数据库逻辑设计就是将E-R图转换成关系模型的过程即将所有实体和关系图3.1系统全局实体E-R图数据库逻辑设计就是将E-R图转换成关系模型的过程即将所有实体和关系转换成一系列的关系模式,转换过程中常见规则有:1)一个实体型转换成一个关系模式。2)一个一对一的关系模型可转换成一个独立的关系模式,也可与任意一端对应的关系模式合并。一个一对多的联系可以转换成一个独立的关系模式,也可与多的那一端对应的关系模式合并。一个多对多的联系可以转换成一个关系模式E-R图与关系模式的转换通过对E-R图的分析,本系统只有一个关系模式,对于管理员和住户之间的关系,可以根据逻辑设计规范的规则3)转换成一个关系模式:住户(姓名,地址,家庭电话,工作电话,单位电话,寻呼机,手机,Email)逻辑结构表经过数据库系统分析和逻辑设计后,数据库的结构已经非常清晰,首先在MicrosoftAccess2003中建立一个数据库Inhabitants。然后,分别建立1个表:house表,该表与逻辑设计中一种的关系模式相对应。下面是这个数据库表中的属性,包括属性列的名称、数据类型、长度、是否为空和备注说明等内容。如表3-1所示:表3-1House表:字段名字段类型字段大小是否为空字段说明户主姓名文本无限制否小区名称文本无限制否户主所在的小区楼号数字无限制否户主所在的楼号单兀号数字无限制否户主所在的单兀号房间号数字无限制否户主的房间号住址电话文本无限制是户主的住址电话单位文本无限制是户主所在的单位单位电话文本无限制是户主所在的单位的电话寻呼机号文本无限制是户主的寻呼机号码手机号文本无限制是户主的手机号码电子邮件文本无限制是户主的电子邮件4详细设计与实现4.1系统主要功能测试本次测试尽可能地覆盖所有模块和所有功能,以保证软件的正确性和可靠性。测试的主要目的:通过测试来检验软件是否可以正常运行。通过测试来检验软件的所有功能是否实现。当用户出现不规范操作,系统能否发现并提醒用户改正。当出现非法操作,系统能否进行错误提示和处理。表4-1功能测试表测试功能测试目的测试方法测试结果增加住户新住户能被添加到数据库中打开数据库文件查看达到要求删除住户选中的住户能被删除打开数据库文件查看达到要求查询住户根据填入的资料查出按下查询住户的按达到要求住户钮,填入数据查询增加住户检测非法输入在添加对话框中的小区、号楼、单元、房间中填入符号或字母达到要求增加住户检测不规范操作在添加对话框中不填入户主姓名、小区、号楼、单元、房间然后按确定达到要求查询住户检测非法输入在查询对话框中的小区、号楼、单元、房间中填入符号或字母达到要求4.2运行环境测试操作系统:Window2000/WindowXP或以上版本;所需软件:VisualC++6.0、Access2003;4.3功能设计本系统的功能包括:增加住户、删除住户、查询住户。进入本系统后的主界面如图4-1所示:增加用户增加住户模块的功能是新添加一个住户的资料。在菜单栏和工具栏上都可以找到这个按钮,按下后,将弹出一个添加对话框。如图4-2所示:XW小区居民曾评系统-Inlabitut亲倨住户lip住户查询户君尸主姓名冻庭电话工作单位单位电话寻呼机手机Ernai职消确定图4-2增加住户户君尸主姓名冻庭电话工作单位单位电话寻呼机手机Ernai职消确定然后便可根据实际在该对话框中填入数据。该模块功能实现的大概的算法如下:管理员通过在添加对话框上填写数据的方法添加新住户的资料,在填写完毕按下确定键后,系统先检查管理员新填入的住户资料中的户主姓名、小区、号楼、单元和房间是否为空。如不为空,则将这几项的数据与数据库中的数据进行逐项对比,看是否有相同项,只有唯一的项才能呗添加进数据库。在程序中,该模块功能是通过函数intCMyDoc::AddUser(USER&user)和voidCAddUserDlg::OnOK()实现的。实现的代码如下:intCMyDoc::AddUser(USER&user){/*返回值:0已经存在-1添加失败1添加成功*/〃判断是否存在该住户了CStringstrSql;strSql.Format("select*fromhousewheresectionname='%s'andbuildingnum=%dandcellnum=%dandroomnum=%d”,user.strSectionname,user.nBuildingnum,user.nCellnum,user.nRoomnum);CCommand<CAccessor<ChouseAccessor>>dbHouse;long*pCount=newlong;if(dbHouse.Open(m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK){AfxMessageBox("error");deletepCount;return-1;〃添加住户信息失败}if(dbHouse.MoveFirst()==S_OK){deletepCount;dbHouse.Close();return0;〃添加用户已存在}deletepCount;dbHouse.Close();HRESULThResult=m_dbHouse.Insert();if(FAILED(hResult)){AfxMessageBox(_T("Errorinsertingthecurrentrecord"));return-1;〃添加失败}return1;〃添加成功}voidCAddUserDlg::OnOK(){〃判断输入信息的合法性UpdateData(TRUE);CEdit*p;if(m_strHousemaster==""){AfxMessageBox("请填户主姓名");p=(CEdit*)GetDlgItem(IDC_EDIT_HOUSEMASTER);p->SetFocus();return;}if(m_strSectionName==""){AfxMessageBox("请填小区名称");p=(CEdit*)GetDlgItem(IDC_EDIT_SECTIONNAME);p->SetFocus();return;}if(m_nBuildingNum==0){AfxMessageBox("楼号不能为零");p=(CEdit*)GetDlgItem(IDC_EDIT_BUILDINGNUM);p->SetFocus();return;}if(m_nCellNum==0){AfxMessageBox("单元号不能为零");p=(CEdit*)GetDlgItem(IDC_EDIT_CELLNUM);p->SetFocus();return;}if(m_nRoomNum==0){AfxMessageBox("房间号不能为零");p=(CEdit*)GetDlgItem(IDC_EDIT_ROOMNUM);p->SetFocus();return;}CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;CMyDoc*pDoc=(CMyDoc*)pFrame->GetActiveDocument();〃让用户确认操作if(this->MessageBox("你真的要添加这条记录?","小区居民管理系统”,MB_YESNO)==IDNO){CDialog::OnCancel();return;switch(pDoc->AddUser(user)){case0:(〃已经存在该住户了CStringstr;str.Format("%s小区的%d号楼的%d单元的%d房间的住户已经存在了",m_strSectionName,m_nBuildingNum,m_nCellNum,m_nRoomNum);AfxMessageBox(str);CEdit*p=(CEdit*)GetDlgItem(IDC_EDIT_ROOMNUM);p->SetFocus();return;break;}case1:{〃增加成功后刷新左边的树视图pFrame->m_pLeftView->AddUserToTree(m_strSectionName,m_nBuildingNum,m_nCellNum,m_nRoomNum);break;}default:return;break;}CDialog::OnOK();}程序在voidCAddUserDlg::OnOK()判断管理员输入的资料是否合法,然后调用函数intCMyDoc::AddUser(USER&user)来将资料存入数据库。删除用户本模块的功能是根据对鼠标对于系统客户区的选择来判定该删除的内容。如果管理员此时选择的是一个住户,则删除该住户,如果选择的是一个单元的话,

则将删除该单元的所有住户,如果选择的是一个小区,则删除该小区中所有住户的资料。删除时系统的会弹出一个警告对话框,提醒管理员是否真的要删除这些资料。如图4-3所示:如果此时鼠标选择的是右边的列表视图中的住户时,删除时也会弹出警告对话框,如图4-4所示:图4-4删除住户在程序中本模块的实现函数是BOOLCMyDoc::DeleteUser(CStringstrSql)、voidCLeftTreeView::OnOperateDelete()和voidCUsersListView::OnOperateDelete()BOOLCMyDoc::DeleteUser(CStringstrSql){CCommand<CAccessor<ChouseAccessor>>dbHouse;long*pCount=newlong;if(dbHouse.Open(m_dbHouse.m_session,strSql,NULL,pCount,DBGUID_DEFAULT,FALSE)!=S_OK){AfxMessageBox("error");deletepCount;returnFALSE;}deletepCount;dbHouse.Close();returnTRUE;}voidCLeftTreeView::OnOperateDelete(){if(this->MessageBox("你真的要删除该楼中的所有住户吗?","小区居民管理系统”,MB_YESNO)==IDNO)return;}elseif(pCtrl->GetParentItem(hParentItem)!=NULL&&pCtrl->GetParentItem(pCtrl->GetParentItem(hParentItem))==NULL){〃单元CStringstrSectionName=pCtrl->GetItemText(pCtrl->GetParentItem(pCtrl->GetParentItem(m_hHitItem)));CStringstr=pCtrl->GetItemText(pCtrl->GetParentItem(m_hHitItem));intn=str.Find("号楼”);CStringstrBuildingNum=str.Left(n);str=pCtrl->GetItemText(m_hHitItem);n=str.Find("单元”);CStringstrCellNum=str.Left(n);strSql.Format("delete*fromhousewheresectionname='%s'andbuildingnum=%sandcellnum=%s",strSectionName,strBuildingNum,strCellNum);if(this->MessageBox("你真的要删除该单元中的所有住户吗?”,”小区居民管理系统”,MB_YESNO)==IDNO)return;}else{〃用户CStringstrSectionName=pCtrl->GetItemText(pCtrl->GetParentItem(pCtrl->GetParentItem(pCtrl->GetParentItem(m_hHitItem))));CStringstr=pCtrl->GetItemText(pCtrl->GetParentItem(pCtrl->GetParentItem(m_hHitItem)));intn=str.Find("号楼");CStringstrBuildingNum=str.Left(n);str=pCtrl->GetItemText(pCtrl->GetParentItem(m_hHitItem));n=str.Find("单元");CStringstrCellNum=str.Left(n);CStringstrRoomNum=pCtrl->GetItemText(m_hHitItem);strSql.Format("delete*fromhousewheresectionname='%s'andbuildingnum=%sandcellnum=%sandroomnum=%s”,strSectionName,strBuildingNum,strCellNum,strRoomNum);if(this->MessageBox("你真的要删除该住户吗?","小区居民管理系统”,MB_YESNO)==IDNO)return;}pDoc->DeleteUser(strSql);AddUsersToTree();}当程序的输入焦点在左边的树视图时,选择要删除的项。该函数将调用函数BOOLCMyDoc::DeleteUser(CStringstrSql)来将相应住户从数据库中删除。voidCUsersListView::OnOperateDelete(){CListCtrl*pCtrl=&GetListCtrl();POSITIONpos=pCtrl->GetFirstSelectedItemPosition();if(pos==NULL){AfxMessageBox("请选择要删除的住户");return;if(this->MessageBox("你真的要删除选择的所有住户吗?","小区居民管理系统”,MB_YESNO)==IDNO)return;〃删除选择的所有住户while(pos){intnHitItem=pCtrl->GetNextSelectedItem(pos);CStringstrSectionName=pCtrl->GetItemText(nHitItem,1);CStringstrBuildingNum=pCtrl->GetItemText(nHitItem,2);CStringstrCellNum=pCtrl->GetItemText(nHitItem,3);CStringstrRoomNum=pCtrl->GetItemText(nHitItem,4);CStringstrSql;strSql.Format("delete*fromhousewheresectionname='%s'andbuildingnum=%sandcellnum=%sandroomnum=%s",strSectionName,strBuildingNum,strCellNum,strRoomNum);CMyDoc*pDoc=(CMyDoc*)GetDocument();pDoc->DeleteUser(strSql);}CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;pFrame->m_pLeftView->AddUsersToTree();}当输入的焦点在右边的列表视图时,调用BOOLCMyDoc::DeleteUser(CStringstrSql)来将相应住户从数据库中删除。查询用户本模块的功能是弹出一个查询对话框,让管理员输入要查询的住户的某部分资料,以此来查找住户。只要管理员输入了一部分的内容,系统便可以根据这部分的资料,就可以查找出此住户的部分资料。如图4-5所示:

身住户KB住户查询S华清嘉园3-H1。号楼:白宜之单:■身住户KB住户查询S华清嘉园3-H1。号楼:白宜之单:■F,号楼3太阳园S月华园IsfK/krvI疆居耕mI并居的井君宝101房间号此时如果双击此查询出来的住户,则会在客户区的右边调出一个模版对话框来显示该住户的详细资料。如图4-6所示:来显示该住户的详细资料。如图4-6所示:图4-6住户详细信息在程序中该部分的实现函数是:voidCUsersListView::ShowUsers(CStringstrSql)voidCUsersListView::ShowUsers(CStringstrSql){CListCtrl*p=&GetListCtrl();〃清空列表p->DeleteAllItems();if(strSql==〃〃)return;CMyDoc*pDoc=(CMyDoc*)GetDocument();CCommand<CAccessor<ChouseAccessor>>dbHouse;long*pCount=newlong;//按照strSql查询符合条件的住户if(dbHouse.Open(pDoc->m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK){AfxMessageBox(〃error〃);deletepCount;return;}intiltem=0;LV_ITEMlvitem;intiActualltem=0;//将查询得到的住户都逐个加入列表中if(dbHouse.MoveFirst()==S_OK)(do(for(intiSubItem=0;iSubItem<5;iSubItem++)(lvitem.mask=LVIF_TEXT|(iSubItem==0?LVIF_IMAGE:0);lvitem.iItem=(iSubItem==0)?iItem:iActualItem;lvitem.iSubItem=iSubItem;lvitem.iImage=(iItem%2)?0:2;CStringstr=〃〃;switch(iSubItem)(case0://户主str=dbHouse.m_housemaster;lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;case1://小区名(str=dbHouse.m_sectionname;lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case2://楼号(str.Format(〃%d〃,dbHouse.m_buildingnum);lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case3://单元号(str.Format(〃%d〃,dbHouse.m_cellnum);lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case4://房间号(str.Format(〃%d〃,dbHouse.m_roomnum);lvitem.pszText=(LPTSTR)(LPCTSTR)str;}}if(iSubItem==0)iActualltem=GetListCtrl().InsertItem(&lvitem);elseGetListCtrl().SetItem(&lvitem);}iItem++;}while(dbHouse.MoveNext()==S_OK);}dbHouse.Close();}voidCUsersListView::OnLButtonDblClk(UINTnFlags,CPointpoint)(CListView::OnLButtonDblClk(nFlags,point);〃获得双击的项voidCUsersListView::OnOperateDelete()(CListCtrl*pCtrl=&GetListCtrl();POSITIONpos=pCtrl->GetFirstSelectedItemPosition();if(pos==NULL)(AfxMessageBox(〃请选择要删除的住户");return;}if(this->MessageBox(〃你真的要删除选择的所有住户吗?〃,〃小区居民管理系统〃,MB_YESNO)==IDNO)return;5总结5.1系统功能总结本住户管理系统可以很好地帮助物业公司管理居民小区,为居民提供更好的服务。本文从理论和技术两个方面来实现,对“住户管理系统”的设计过程进行了详细介绍。按照软件工程的开发流程,从需求分析,概念设计,逻辑设计,物理设计到详细设计进行了一系列的详细分解和描述。该系统实现了对增加住户、删除住户、查询住户的功能。该系统具有以下特色和功能:(1)界面友好且操作简便,提供了菜单,易于上手。(2)可方便地对数据库中地住户资料进行操作。(3)使用了VisualC++6.0和Access2003作为开发工具。开发思路清晰,易于掌握和理解,对于中小型系统的开发优点尤为突出。5.2对系统的展望(1)系统功能问题本系统虽然有着易于上手和简单实用的优点,但是总的来说,整个系统的功能还是太过于简单,而且只能实现对住户的资料的管理,离现在物业公司要用的能够帮助他们完成大多数日常工作的物业管理软件还有一定的差距。(2)系统安全问题本系统任何人都可以使用,这的确是显得安全性不好,因为该系统会保存着一些用户的隐私,所以安全性是该软件的一个软肋。结束语经过三个星期的努力,在指导老师耐心的指导和同学们的帮助下,住户管理系统已经开发完成。在做该系统期间,我有幸得到了同学的帮助,在此对他们表示最诚挚的感谢。并特别感谢我的指导导师-阳慧老师,在整个数据库实训的过程中,是她给予了我很大的帮助,热情而又耐心的指导。专业细致的解答,才能让我在这次实训中能比较顺利地完成课题。感谢她对我长期的支持和给我提出的宝贵意见,使我顺利地完成了本系统的研究和开发工作。在此,再次向我的导师表示衷心的感谢和诚挚的敬意!参考文献[1]孙豪.社区物业管理信息系统的设计与实现.大连:大连理工大学出版社,2007年邱绪莲.基于Struts框架的智能小区物业管理系统的设计与研究[D].武汉:武汉理工大学出版社,2006年李兵.CORBA技术在智能小区物业管理系统中的应用.武汉:武汉理工大学,2006年杜玫芳.住宅小区物业管理系统的开发与实现.武汉:华中科技大学出版社,2005年冯华.VisualC++数据库开发技巧与实例.北京:机械工业出版社,2001年王鸿博.数据库技术及工程应用.北京:机械工业出版社,2002年宋瀚涛.数据库编程与应用.北京:电子工业出版社,1998年附录:设计源程序清单#include"stdafx.h"#include"住户管理系统.h"#include"MainFrm.h"#include"住户管理系统Doc.h"#include"住户管理系统View.h"#include<initguid.h>#include"住户管理系统_i.c"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE.#endifBEGIN_MESSAGE_MAP(CMyApp,CWinApp)ON_COMMAND(ID_APP_ABOUT,OnAppAbout)ON_COMMAND(ID_FILE_NEW,CWinApp::OnFileNew)ON_COMMAND(ID_FILE_OPEN,CWinApp::OnFileOpen)ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()CMyApptheApp;BOOLCMyApp::InitInstance(){if(!InitATL())returnFALSE;AfxEnableControlContainer();#ifdef_AFXDLLEnable3dControls();#elseEnable3dControlsStatic();#endifSetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));LoadStdProfileSettings();CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocT)mplate(IDR_MAINFRAME,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CMyView));AddDocTemplate(pDocTsmplate);CCommandLineInfocmdInfo;ParseCommandLine(cmdlnfo);if(cmdInfo.m_bRunEmbedded||cmdInfo.m_bRunAutomated){returnTRUE;}if(!ProcessShellCommand(cmdInfo))returnFALSE;m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();returnTRUE;}classCAboutDlg:publicCDialog{public:CAboutDlg();enum{IDD=IDD_ABOUTBOX};protected:virtualvoidDoDataExchange(CDataExchange*pDX);protected:DECLARE_MESSAGE_MAP()};voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)END_MESSAGE_MAP()voidCMyApp::OnAppAbout(){CAboutDlgaboutDlg;aboutDlg.DoModal();}CMyModule_Module;BEGIN_OBJECT_MAP(ObjectMap)END_OBJECT_MAP()//将查询得到的住户都逐个加入列表中if(dbHouse.MoveFirst()==S_OK){dofor(intiSubItem=0;iSubItem<5;iSubItem++){lvitem.mask=LVIF_TEXT|(iSubItem==0?LVIF_IMAGE:0);lvitem.iItem=(iSubItem==0)?iItem:iActualItem;lvitem.iSubItem=iSubItem;lvitem.iImage=(iItem%2)?0:2;CStringstr="";switch(iSubItem){case0://户主str=dbHouse.m_housemaster;lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;case1://小区名{str=dbHouse.m_sectionname;lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case2://楼号{str.Format("%d”,dbHouse.m_buildingnum);lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case3://单元号{str.Format("%d”,dbHouse.m_cellnum);lvitem.pszText=(LPTSTR)(LPCTSTR)str;break;}case4://房间号{str.Format("%d",dbHouse.m_roomnum);Ivitem.pszText=(LPTSTR)(LPCTSTR)str;}}if(iSubItem==0)iActualItem=GetListCtrl().InsertItem(&lvitem);elseGetListCtrl().SetItem(&lvitem);}iItem++;}while(dbHouse.MoveNext()==S_OK);}dbHouse.Close();}voidCUsersListView::OnLButtonDblClk(UINTnFlags,CPointpoint){CListView::OnLButtonDblClk(nFlags,point);〃获得双击的项CListCtrl*pCtrl=&GetListCtrl();intnHitItem=pCtrl->HitTest(point,NULL);if(nHitItem<0)return;CStringstrSectionName=pCtrl->GetItemText(nHitItem,1);CStringstrBuildingNum=pCtrl->GetItemText(nHitItem,2);CStringstrCellNum=pCtrl->GetItemText(nHitItem,3);CStringstrRoomNum=pCtrl->GetItemText(nHitItem,4);CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;CMyDoc*pDoc=(CMyDoc*)GetDocument();pFrame->SwitchToView(USERINFOVIEW);pFrame->m_pUserinfoView->UpdateUserInfo(strSectionName,atoi(strBuildingNum.GetBuffer(0)),atoi(strCellNum.GetBuffer(0)),atoi(strRoomNum.GetBuffer(0)));}voidCUsersListView::OnOperateDelete(){CListCtrl*pCtrl=&GetListCtrl();POSITIONpos=pCtrl->GetFirstSelectedItemPosition();if(pos==NULL){AfxMessageBox("请选择要删除的住户");return;}if(this->MessageBox("你真的要删除选择的所有住户吗?","小区居民管理系统'',MB_YESNO)==IDNO)return;〃删除选择的所有住户while(pos){intnHitItem=pCtrl->GetNextSelectedItem(pos);CStringstrSectionName=pCtrl->GetItemText(nHitItem,1);CStringstrBuildingNum=pCtrl->GetItemText(nHitItem,2);CStringstrCellNum=pCtrl->GetItemText(nHitItem,3);CStringstrRoomNum=pCtrl->GetItemText(nHitItem,4);CStringstrSql;strSql.Format("delete*fromhousewheresectionname='%s'andbuildingnum=%sandcellnum=%sandroomnum=%s",strSectionName,strBuildingNum,strCellNum,strRoomNum);CMyDoc*pDoc=(CMyDoc*)GetDocument();pDoc->DeleteUser(strSql);}CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;pFrame->m_pLeftView->AddUsersToTree();}LONGCMyModule::Unlock(){AfxOleUnlockApp();return0;}LONGCMyModule::Lock(){AfxOleLockApp();return1;}LPCTSTRCMyModule::FindOneOf(LPCTSTRp1,LPCTSTRp2){while(*p1!=NULL){LPCTSTRp=p2;while(*p!=NULL){if(*p1==*p)returnCharNext(p1);p=CharNext(p);}p1++;}returnNULL;}intCMyApp::ExitInstance(){if(m_bATLInited){_Module.RevokeClassObjects();_Module.Tsrm();CoUninitialize();}returnCWinApp::ExitInstance();}BOOLCMyApp::InitATL(){m_bATLInited=TRUE;#if_WIN32_WINNT>=0x0400HRESULThRes=CoInitializeEx(NULL,COINIT_MULTITHREADED);#elseHRESULThRes=CoInitialize(NULL);#endifif(FAILED(hRes)){m_bATLInited=FALSE;returnFALSE;}_Module.Init(ObjectMap,AfxGetInstanceHandle());_Module.dwThreadID=GetCurrentThreadId();LPTSTRlpCmdLine=GetCommandLine();TCHARszTokens[]=_T("-/");BOOLbRun=TRUE;LPCTSTRlpszToken=_Module.FindOneOf(lpCmdLine,szTokens);while(lpszToken!=NULL){if(lstrcmpi(lpszToken,_T("UnregServer"))==0){_Module.UpdateRegistryFromResource(IDR_MYFALSE);_Module.UnregisterServer(TRUE);bRun=FALSE;break;}if(lstrcmpi(lpszToken,_T("RegServer"))==0){_Module.UpdateRegistryFromResource(IDR_MYTRUE);_Module.RegisterServer(TRUE);bRun=FALSE;break;}lpszToken=_Module.FindOneOf(lpszToken,szTokens);}if(!bRun){m_bATLInited=FALSE;_Module.Tsrm();CoUninitialize();returnFALSE;}hRes=_Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,REGCLS_MULTIPLEUSE);if(FAILED(hRes)){m_bATLInited=FALSE;CoUninitialize();returnFALSE;}returnTRUE;}#if!defined(AFX_STDAFX_H__483D5902_B6F6_44D7_8C03_CA16BD202818__INCLUDED_)#defineAFX_STDAFX_H__483D5902_B6F6_44D7_8C03_CA16BD202818__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#defineVC_EXTRALEAN#include<afxwin.h>#include<afxext.h>#include<afxdisp.h>#include<afxdtctl.h>#ifndef_AFX_NO_AFXCMN_SUPPORT#include<afxcmn.h>#endif#define_ATL_APARTMENT_THREADED#include<atlbase.h>classCMyModule:publicCComModule{public:LONGUnlock();LONGLock();LPCTSTRFindOneOf(LPCTSTRp1,LPCTSTRp2);DWORDdwThreadID;};externCMyModule_Module;#include<atlcom.h>#include<atldbcli.h>typedefstructuser{CStringstrName;CStringstrSectionname;intnBuildingnum;intnCellnum;intnRoomnum;CStringstrHouseTel;CStringstrOffice;CStringstrOfficeTel;CStringstrBeeppager;CStringstrMobile;CStringstrEmail;HTREEITEMhItem;}USER;#if!defined(AFX__H__25F512A0_43D5_4305_9320_094CAF711563__INCLUDED_)#defineAFX__H__25F512A0_43D5_4305_9320_094CAF711563__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#ifndef__AFXWIN_H__#errorinclude'stdafx.h'beforeincludingthisfileforPCH#endif#include"resource.h"#include"住户管理系统_i.h"classCMyApp:publicCWinApp{public:CMyApp();public:virtualBOOLInitInstance();virtualintExitInstance();afx_msgvoidOnAppAbout();DECLARE_MESSAGE_MAP()private:BOOLm_bATLInited;private:BOOLInitATL();};#if!defined(AFX_MAINFRM_H__E3A6002B_0354_4316_A925_471B0C72330C__INCLUDED_)#defineAFX_MAINFRM_H__E3A6002B_0354_4316_A925_471B0C72330C__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000//定义右边视的类型TOC\o"1-5"\h\z#defineUSERSVIEW0#defineUSERINFOVIEW1#defineWRONGVIEW-1classCLeftTreeView;classCUserinfoView;classCUsersListView;classCMainFrame:publicCFrameWnd

{protected:CMainFrame();DECLARE_DYNCREATE(CMainFrame)public:〃树视图//住户列表视图〃树视图//住户列表视图//住户详细信息视图CUsersListV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论