小区物业管理系统毕业设计论文 (2)(14页).doc
-小区物业管理系统毕业设计论文 (2)-第 11 页摘 要对于小区物业管理来说,其工作流程的繁杂性、多样化、管理复杂、收缴费用与设备维护繁琐。计算机已完全能够胜任物业管理工作,而且更加准确、方便、快捷、高效、清晰、透明,它完全可以克服以上所述的不足之处。这将给项目查询和管理带来很大的方便,从而给物业管理工作带来更高的效率,这也是物业管理正规化、现代化的重要标志。 因此,开发一套高效率、无差错的小区物业管理系统软件十分必要。本系统的主要目的是告别帐本,安全、快捷的保存数据信息。由于小区物业管理涉及到费用问题,为了增强系统的保密性,使业主利益不受损害,使业主能够对自家的物业费用和投诉等情况提供透明化、直观的了解。关键词:,sqlserver,C#,小区物业AbstractAs for the plot estate management that, its work flow numerous and diverse, the diversification, the management complex, capture the expense and the maintenance of equipment is tedious. The computer could definitely be competent the estate management work, moreover more accurate, convenient, quick, highly effective, clear, is transparent above, it definitely may overcome the deficiency which states. This will give the project inquiry and the management brings very big convenient, thus will bring a higher efficiency for the estate management work, this also will be the estate management standardization, the modernized important symbol. Therefore, develops set of high efficiency, the non- mistake plot estate management system softwares is extremely essential. This system main goal is says goodbye to the account book, the security, the quick preservation data message. Because the plot estate management involves to the expense question, in order to strengthen the system the secrecy, causes the owner benefit not to receive harms, enables the owner to situation and so on oneself property expense and suit provides, the direct-viewing understanding.Keywords: , sqlserver, C#目录第一章 绪论1第二章 需求分析与可行性分析22.3 游戏定位3第三章 系统分析43.1游戏世界描述43.1.1 游戏环境搭建43.1.2功能及操作4第四章 系统设计54.1 游戏框架设计54.2 游戏设计及实现思路54.2.1功能设计54.2.2 实现思路6第五章 系统实现75.1 开始场景75.2 进行场景95.3 结束游戏115.3 Jump的实现145.4 随机障碍的实现以及销毁14总结17参考文献18致谢19第一章 绪论随着市场经济的发展和人们生活水平不断的提高,住宅小区已经成为人们安家置业的首选,几十万到几百万的小区住宅比比皆是。人们花的钱越多,对住宅本身的美观、质量要求也就越来越高。与此同时用户也希望物业小区有良好的服务和管理,诸如对小区的维修维护都要求小区管理者做的完善。这就需要物业小区管理者对物业管理进行宏观的和围观的细致管理,其中最好的办法就是用计算机操作小区物业管理系统来实现小区物业的管理,这就是为设计小区物业物业管理系统提供了市场需求。而实际小区物业管理系统在现代社会是最热门的行业也是最关切老百姓实习生活的设计。各种人性化的配置,使管理者和业主对住宅小区中的事物能更方便、更快捷、更满意的得到解决。伴随着小区的规模不断扩大和住户的不断增多,像小区的汽车,小区附带实施,小区的各项维修等都将越来越复杂,工作量也将越来越大。小区管理在手工操作时代,工作非常繁琐,需要大量的人力、物力和财力,极大的浪费小区物业的资源,对于小区的管理人员来说,物业管理包括物业设备管理、住户管理、停车场管理、设备管理、投诉管理等。这种管理方式存在着许多缺点,比如:效率低、保密性差、另外时间一长,将产生大量的文件和数据,这对查找、更新和维护都带来了不少的困难,因此,我们将手工操作转向电子化信息处理。一般游戏环境搭建的逻辑框架:图1-1游戏环境搭建的逻辑框架 同时,游戏还需要进行系统框架图的设计,可重玩性系统设计,这些都超出了学习范围故不作论述。第二章 需求分析与可行性分析2.1需求分析小区物业信息管理系统是针对当代社会,住宅小区逐渐成为居住主流这一市场续期而运营而生的,是为小区管理者和小区用户更好的维护小区各项物业管理业务处理工作而开发的管理软件,根据需求分析实现小区管理业务,实现各项管理等几个方面的功能。对物管中心来说,小区的楼宇,房间,用户管理、小区内停车场的管理、各项设备的维修等都需要考虑到;对小区环境、小区的楼房要有详细的介绍;对房屋出租情况要有管理员详细记载;对设备维修的费用等各项情况资料也要有记载;对管理要登记并处理整个过程;对小区内车辆要有车位标号、停车户主、车位位置记录等。2.2功能说明1. 前台功能说明:前台系统作为与顾客直接接触的界面,在考虑功能的同时,也需要考虑到客户在使用系统时操作的简介和方便,可以使对电脑不了解的客户也能够很快掌握对本系统的使用。前台的主要功能包括:注册、登录、小区新闻通知和浏览、欠费金额查询、投诉信息查询、车位信息查询。小区物业管理系统前台设计特色:每个用户使用自己的用户名注册个人信息,简单登录,就可以看到自己的费用、投诉、车位等信息。考虑到本系统对客户使用的方便性,界面尽量做的简单明了、采用开放式结构、客户能更好的对个人信息的查询。2后台功能说明:在简洁明了的前台系统背后,本系统还提供了强大的小区物业管理系统后台系统。它包括新闻信息维护、停车信息维护、欠费住户信息维护、住户住房信息管理、设备信息维护、投诉信息维护、小区物业员工、修改密码等功能。1) 新闻信息维护:对新闻标题、新闻内容、新闻类别、发布时间、发布人添加、修改、删除、修改以及新闻信息的审核状态。2) 停车信息维护:对车牌号、停车场号、车主、停车地点、开始结束时间、停车管理费用等一些功能的添加、删除、修改和查询。3) 欠费住户信息维护:对住户名称、住户地址、日期、欠费类型、欠费金额的点检、删除、修改和查询。4) 住户住房信息管理:对小区名称、楼宇名称、楼宇单元、放号、房型、建筑面积、产权、使用状况、迁入时间和用户的基本信息添加、删除、修改和查询。5) 小区设备维护信息管理:对小区设备维护编号、住户姓名、日起、经手人、费用状态、投诉状态的田间、修改、删除和查询。6) 住户投诉信息管理:对小区住户投诉编号、投诉住户名、投诉日期、投诉内容、投诉状态的添加、删除和查询。7) 小区员工信息:对小区员工个人信息的录入与修改。2.3系统的可行性分析可行性分析也称可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能解决,因此该系统的可行性分析包括一下几个方面内容:12.3 游戏定位 游戏作为自人类诞生之时便伴随人类进化历程出现活动产物,一直以来都在我们的日常生活之中占据相当重要的分量。无论是使用PC进行虚拟游戏,亦或是体育运动进行实体游戏,人类的娱乐的本质都体现在这一系列的活动之中。 虚拟游戏作为时代进步的产物。首先受众范围以及使用用户群极大,在当今社会,基本每一个家庭都会使用电脑,同时几乎每一个年轻人都会有一部手机,使用Cocos2d-x开发的游戏由于具有极好的跨平台特性,不仅可以在电脑上轻松运行,同时,亦可以在手机上轻松运行。其次,作为一个2D的轻量级引擎,Cocos2-d做出来的游戏安装包很小,具有便于安装。 综上,我们可以确定游戏的受众范围为:配有手机(或平板设备)的具有独立操作能力的正常人。而将这一人群细分,大概可分为三类。2. 学生。学生大多具有娱乐与竞争精神,而我们的游戏设置有share功能,可以将自己的成绩“晒”出来和同学竞争,形成良性游戏环境,促进游戏传播3. 年轻上班族。因为游戏玩法设计的原因,该游戏大多适合年轻受众。第三章 系统分析本章将通过玩法的展示引导玩家进入游戏世界,深入探索游戏世界的搭建,以及游戏形成的过程,明白游戏的设计原理。3.1游戏世界描述以下重点描述游戏世界环境的搭建。3.1.1 游戏环境搭建以开始游戏场景为例:图3-1开始场景详解由图示我们可以发现,一个“开始场景”由三个层组成分别为“foreGround”、“playGround”、“backGround”。其中,backGround用于显示游戏背景一个白色的背景;playGround没有定义,因为开始场景中没有需要用到该层;foreGround用于显示开始场景中的UI元素,并且处理一些简单的操作,如:退出游戏、开始游戏。3.1.2功能及操作l Jump事件:在每一次玩家点击屏幕,奔跑的火柴人会做一次Jump动作.l 碰撞检测:用于对Jump事件玩家点击屏幕的回调。l 计时:从开始游戏计时,到一次游戏结束为一次成绩。l Share功能:在每次奔跑结束界面出来之后,会出现一个share 的Button。用于将成绩通过QQ或微博等方式上传至网络。第四章 系统设计本章节简要介绍几个必须完成的内容,包括游戏框架程序设计,游戏设计及实现思路。4.1 游戏框架设计 游戏程序框架设计这个过程工作需要非常细致,也很繁琐,工作量大,几乎已达到伪代码级别的设计,加上设计中的许多功能具备相似的实现模式,则没有必要逐一建立设计模型。一个抽离了外壳的设计模型就可以起到指导开发的作用。图4-1游戏框架程序设计图4.2 游戏设计及实现思路4.2.1功能设计在之前的核心玩法确立阶段,我们考虑到游戏的易上手,为此只进行了两项前段功能设计:Jump和Share。1.Jump功能: 在每一次玩家点击了屏幕之后,火柴人会做一次跳跃的动作。2.Share功能: 在游戏结束之后的选择菜单界面,提供一个“Share”button,点击之后,会外接到微博登陆界面,登录微博之后可以上传自己的游戏记录。而在后端的功能设计中,我设计了一项计时功能,用于给玩家提供一个可视的自我超越的目标。以及完成了一个简单的碰撞检测功能,用于检测火柴人是否与随机生成的黑色块发生碰撞。1. 计时:在游戏开始之后,开始计时,统计玩家每次奔跑时长2. 碰撞检测:在游戏开始之后,每一帧进行碰撞检测,以用于游戏结束事件触发。4.2.2 实现思路 Jump:在每一帧的update()方法中检测是否有点击事件触发。有,则触发Jump;没有继续奔跑动画。而Jump则是通过cocos2dx 中的Box2d,赋予物体向上的速度实现。 Share:Share的功能是通过ShareSDK的集成实现,只需要将ShareSDK集成至游戏中,并在游戏结束时实例调用即可。 计时:计时相对简单,只需要一直获得每一帧的系统时间,并同时计算差值的和并可以得到游戏时间。第五章 系统实现 5.1 开始场景开始场景是玩家进入游戏的地方:Scene* gameBegin:createWelcome()auto beginScene = Scene:create();auto welcomeLayer = foreGround:create();auto backLayer = backGround:create(Color4B(255, 255, 255, 255);/*因为背景只设置了颜色,就没有单独初始化*/auto playLayer = playGround:create();beginScene->addChild(welcomeLayer, 50);beginScene->addChild(backLayer, -20);beginScene->addChild(playLayer, 0);return beginScene;/用于创建场景bool foreGround:init() if ( !Layer:init() ) return false;Size scrSize = Director:sharedDirector()->getWinSize(); Size visibleSize = Director:getInstance()->getVisibleSize(); Vec2 origin = Director:getInstance()->getVisibleOrigin(); auto closeItem = MenuItemImage:create( "blackblade/my_Scene/Close_Down.png", "blackblade/my_Scene/Close_Select.png", CC_CALLBACK_1(foreGround:menuCloseCallback, this);closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + visibleSize.height - closeItem->getContentSize().height/2);auto beginLabel = Label:createWithSystemFont("Start Game", "Altas", 34);beginLabel->setTextColor(Color4B(0, 0, 0, 255);auto beginItem = MenuItemLabel:create(beginLabel, CC_CALLBACK_1(foreGround:menuBeginCallback, this);beginItem->setPosition(Vec2(origin.x + visibleSize.width * 3.0 / 4.0, origin.y + visibleSize.height * 0.5);auto menu = Menu:create(closeItem, beginItem,NULL); menu->setPosition(Vec2:ZERO); this->addChild(menu, 1);log("add Layer:foreGround Successly"); return true; /foreground Layer的初始化bool playGround:init()if (!Layer:init()return false;log("Add Layer:playGround successly!");Size scrSize = Director:sharedDirector()->getWinSize();Size visibleSize = Director:getInstance()->getVisibleSize();Vec2 origin = Director:getInstance()->getVisibleOrigin();Sprite* animationRun = runSprite:getRun();animationRun->setAnchorPoint(Vec2(0, 1);Size getRunSpSize = animationRun->getContentSize();log("animationSprite width:%f , animationSprite heigh:%f", getRunSpSize.width, getRunSpSize.height);animationRun->setPosition(Vec2(origin.x + getRunSpSize.width, origin.y + getRunSpSize.height);/*auto spriteTest = Sprite:create("blackblade/Running/man_move1.png");spriteTest->setPosition(origin.x + visibleSize.width /2 , origin.y + visibleSize.height /2);this->addChild(spriteTest);*/this->addChild(animationRun);return true;/playground Layer的初始化三个场景的基本设置一样故不一一赘述。5.2 进行场景GameControl* GameControl:create(Layer* layer, float positionY)auto initCon = new GameControl();initCon->init(layer, positionY);initCon->autorelease();return initCon;bool GameControl:init(Layer* layer, float positionY)m_layer = layer;m_positionY = positionY;m_visibleSize = Director:getInstance()->getVisibleSize();/add edgeauto edge = Edge:create();edge->setPosition(m_visibleSize.width / 2, m_visibleSize.height / 2 + positionY);layer->addChild(edge);/add groundauto ground = Sprite:create();ground->setColor(Color3B(0, 0, 0);ground->setTextureRect(Rect(0, 0, m_visibleSize.width, 6);ground->setPositionY(3 + positionY);layer->addChild(ground);/add firemanauto fireman = Fireman:create();fireman->setPosition(50, fireman->getContentSize().height / 2 + positionY);layer->addChild(fireman);return true;/进行时场景void GameControl:OnUpdate(float dt)currectIndex+;if (currectIndex >= nextIndex)reset();addBlock();/每一帧中调用障碍生成并设置下一个障碍物的出现距离void GameControl:reset()currectIndex = 0;nextIndex = (rand() % 120) + 60;/设置障碍物的生成间隔void GameControl:addBlock()auto block = Block:create();m_layer->addChild(block);block->setPositionY(block->getContentSize().height / 2 + m_positionY);/添加障碍物/以上为游戏控制器调用,控制游戏中跑步角色的生成以及障碍物的生成5.3 结束游戏结束游戏分为了两个连续的部分,首先是碰撞检测:void GameScene:detectionCrash() CCArray* bulletsToDelete = CCArray:create(); bulletsToDelete->retain();CCObject* bt, *et; CCArray* enemyToDelete = CCArray:create(); enemyToDelete->retain(); CCRect rectHero = this->heroLayer->getHero()->boundingBox(); float x = rectHero.origin.x + rectHero.size.width * 0.3; float y = rectHero.origin.y + rectHero.size.height * 0.4; float width = rectHero.size.width * 0.3; float height = rectHero.size.height * 0.6; CCRect rect_HeroForCrash = CCRectMake(x, y, width, height); /检测 CCARRAY_FOREACH(this->enemyLayer->m_enemys, et) /break; Enemy* enemy = (Enemy*)et; if (enemy->getLife() = 0) break; / CCPoint rect1 = this->heroLayer->getHero()->getPosition(); if (enemy->boundingBox().intersectsRect(rect_HeroForCrash) this->heroLayer->setIsHeroLive(false); this->heroLayer->setHeroLifes(this->heroLayer->getHeroLifes() - 1); enemyLayer->stopTakeEnemy(); enemyLayer->bomb(enemy); enemyLayer->removeAllEnmeys(); SimpleAudioEngine:sharedEngine()->pauseBackgroundMusic(); int tempHightScore = GameScene:getHightestScore(); if (this->m_totalScore > tempHightScore) GameScene:saveHightestScore(this->m_totalScore); char life64; sprintf(life, "%d", this->heroLayer->getHeroLifes(); CCLabelTTF* lbLife = (CCLabelTTF*)this->getChildByTag(tagOfLife); lbLife->setString(life); this->heroLayer->heroBomb(0.1f); if (this->heroLayer->getHeroLifes() = 0) this->scheduleOnce(schedule_selector(GameScene:gameOverCallback), 2.0f); else this->scheduleOnce(schedule_selector(GameScene:newLife), 2.0f); return; CCARRAY_FOREACH(this->heroLayer->getBullets()->m_bullets,bt) CCSprite* bullet = (CCSprite*)bt; CCARRAY_FOREACH(this->enemyLayer->m_enemys,et) Enemy* enemy3 = (Enemy*)et; if(enemy3->boundingBox().intersectsRect(bullet->boundingBox() if (enemy3->getLife() > 1) enemy3->loseLife(); bulletsToDelete->addObject(bullet); else if (enemy3->getLife() = 1) enemy3->loseLife(); bulletsToDelete->addObject(bullet); enemyToDelete->addObject(enemy3); this->m_totalScore += enemy3->getScore(); char str120; sprintf(str1, "%d",(int)this->m_totalScore); CCLabelTTF* label1 = (CCLabelTTF*)this->getChildByTag(tagOfScore); label1->setString(str1); /检测是否相撞在完成了得到检测之后,回调gameover,并创建gameover场景bool GameOver:init()LayerColor:create();initWithColor(Color4B:WHITE);auto overLabel = Label:create();overLabel->setString("Game Over!");overLabel->setSystemFontSize(60);overLabel->setTextColor(Color4B:BLACK);this->addChild(overLabel);return true;Scene* GameOver:createScene()auto Overscene = Scene:create();auto Overlayer = GameOver:create();Overscene->addChild(Overlayer);return Overscene;5.3 Jump的实现void GameCtrl:onUserTouch()hero->getPhysicsBody()->setVelocity(Vec2(0, 400);将火柴人做个刚体,赋予一个向上的速度即可实现jump.5.4 随机障碍的实现以及销毁bool Block:init()Sprite:init();Size winSize = Director:getInstance()->getVisibleSize();setPositionX(winSize.width);setColor(Color3B(0, 0, 0);Size size = Size(rand() % 20) + 5, (rand() % 30) + 10);setContentSize(size);setTextureRect(Rect(0, 0, size.width, size.height);setPhysicsBody(PhysicsBody:createBox(size);getPhysicsBody()->setDynamic(false);getPhysicsBody()->setContactTestBitmask(1);scheduleUpdate();return true;/黑色障碍的随机生成void Block:update(float time)this->setPositionX(getPositionX() - 5);if (getPositionX() < 0)unscheduleUpdate();removeFromParent(); /障碍物的销毁总结这次毕业设计,是对我三年所学知识的重新温习,我认识到了自身有很多不足。这次毕业设计的难点在游戏框架设计以及实现思路上,我从中学到了很多,因为之前没有类似的项目经验,所以在这里要感谢老师和同学们对我的帮助。此次毕业设计主要用到的都是C+的基础知识,以及cocos2d引擎。游戏的实现层次上大致是跟着引擎的设计框架走,没有过多的通过自己思考架构。由于时间和技术上的原因,这次毕业设计完成的也比较仓促,测试不足。有些功能模块的功能可能不够完善,压力测试也不足。总体来说只能算是基本完成游戏需求设计时的功能。前段的UI显示,说实话,我自身也并不满意,然而在没有美术以及设计的情况下,我只能先将UI大概展示,在以后的日子里会学习相关书籍,争取自己进行相关方面的游戏设计。在后台的逻辑处理方面,我感觉出自己思维能力的不足,对于大多数问题不能想到简单而有效的方式,总是在采用耗时耗力的初级方案,我认为这是我个人经验不足所导致,所以,今后也会更努力的编写,学习。关于网络这一块,因为只是做成了一个简单的单机小游戏,所以完全没有考虑网络。但是,在互联网成为潮流的今天,今后的游戏设计是一定会加入这一块的考虑的。通过本次毕业设计,使我的动手能力提高很多,同时发现了自己在思维以及设计方面的诸多不足之处。今后我会继续努力,更多的学习专业知识理论,争取更大的进步,相信未来更加美好。参考文献1 陆兵,高佳琴等.软件开发与管理.北京:清华大学出版社,20092 张志清,郑小玲,杨中华.管理信息系统实用教程.北京:电子工业出版社,20053 (美)Charles Petzold 编著, Windows程序设计第五版 清华大学出版社20104 火烈鸟网络科技 编著, Cocos2d-x 高级开发教程 人民邮电出版社,20135 关东升 编著, Cocos2d-x实战:C+卷 清华大学出版社,20136 Brian W.Kernighan,Dennis M.Ritchie, The C programming language 清华大学出版社 20047 (美)Thomas H.Cormen Charles E.Leiserson 等编著, 算法导论机械工业出版社 2014致谢本论文是在我的指导老师悉心指导下完成的。她严肃认真的教学态度,严谨的治学风范,精益求精的工作作风,在我实习期间激励着我。从课题的选择到项目的最终完成,指导老师都始终给予我细心的指导和不懈的支持。两年多来,指导老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向指导老师致以诚挚的谢意和崇高的敬意。