版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实训报告项目名称 小区物业管理系统 专业班级 _姓名 学号 指导教师 实训地点 起止日期 完成时间 2011 年 12月 16日 目 录1.概述1.1 软件项目名称1.2 软件特点1.3 软件主要社会应用2.项目可行性分析2.1引言2.2技术可行性报告2.3系统经济可行性报告2.4社会因素可行性分析3.软件综合实训项目开发计划书4.需求分析4.1 功能需求4.2 性能需求5.概要设计5.1系统总体设计5.2数据库设计5.2.1概念结构设计5.2.2逻辑结构设计5.2.3物理结构设计6.详细设计6.1系统管理模块详细设计6.2日常模块详细设计7.系统的实现8.运行与测试9.实训总结(包含实训日志
2、)10.参考文献附件:主要代码 1.概述1.1 软件项目名称小区物业管理系统1.2 软件特点小区物业管理系统采用了当前的主流计算结构模式进行开发,前台开发工具选用Eclipse。Eclipse是一种可视化的、面向对象的java开发语言,Eclipse具有易用、通用和开发效率高的特点。后台的数据库开发工具选用了MySQL,它能够处理大量数据,同时保持数据完整性并提供许多高级管理和数据分配功能。该软件提供了以下功能:基本信息设置、信息查询、打印报表、系统管理,这些功能保证了软件在使用上的方便,同时该软件实现了优美简洁的界面设计,保证了用户在体验上的舒适。1.3 软件主要社会应用“物业管理信息系统”
3、通过计算机网络和专业软件对物业实施即时、规范、高效的管理。在引入该系统后住户档案将由电脑管理,通过在水、电、煤气上设置读数装置可以实现远程自动抄表,减少了业主的麻烦。随着房地产开发的持续升温,各个小区的各家各户繁杂的服务越来越庞大,物业管理业务的复杂性也随之上升,再加上智能化小区这个概念的引入,物业管理逐渐趋于信息化高效率化,因此许多物业管理公司已引入了该系统,服务中心在接到业主报修后,会立刻打出工程部的报修单,提高了日常维修的服务质量。每月电脑会自动将各项费用汇总,并打印出统一的收费通知,大大节省了物业管理公司的人力、物力投入,降低了成本。物业管理系统基本已成了当代建筑群必备的一个管理软件。
4、 2.项目可行性分析2.1引言 目前国家建设部房地产业司已将是否使用计算机进行管理列入了物业管理公司评定级别的项目之中。此举大大推动了“物业管理信息系统”的发展。随着人们生活水平的提高和房地产业的不断的完善,大型的房地产企业结构中,物业管理的部门结构成为其中的一个细化。而物业管理部门成为与业户零距离接触的终端部门,物业管理系统的作用不但使得繁重的手工工作变的简单化,并且能够使得业户对物业的了解更加透明化。随着房地产开发的持续升温,各个小区的各家各户繁杂的服务越来越庞大,物业管理业务的复杂性也随之上升,再加上智能化小区这个概念的引入,物业管理逐渐趋于信息化高效率化,因此许多物业管理公司已引入了“
5、物业管理信息系统”,即通过计算机网络和专业软件对物业实施即时、规范、高效的管理。在引入该系统后住户档案将由电脑管理,通过在水、电、煤气上设置读数装置可以实现远程自动抄表,减少了业主的麻烦。服务中心在接到业主报修后,会立刻打出工程部的报修单,提高了日常维修的服务质量。每月电脑会自动将各项费用汇总,并打印出统一的收费通知,大大节省了物业管理公司的人力、物力投入,降低了成本。2.2技术可行性报告 小区物业管理系统采用了当前的主流计算结构模式进行开发,前台开发工具选用Eclipse。Eclipse是一种可视化的、面向对象的java开发语言,Eclipse具有易用、通用和开发效率高的特点。后台的数据库开
6、发工具选用了MySQL,它能够处理大量数据,同时保持数据完整性并提供许多高级管理和数据分配功能。这两种开发工具功能强大,有较好的接口,作为本系统开发工具是可行的。面向对象编程的概念面向对象的程序设计(Object-Oriented Programming,简记为OOP)是Eclipse诞生的基础。OOP立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进java编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并
7、不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Eclipse是完全面向对象的,这就使得Eclipse成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。MySQL简介 MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言
8、”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.3系统经济可行性报告随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。21世纪是一个充满竞争和挑战的世纪。在这个世纪中,高效化、系统化、规范化、自动化已成为现代企业的代名词。做为我国支柱产业之一的房地产业在当今智能化小区的发展的驱动下,在当今信息时代的推动下,拥有自己的一套特色的小区物业管理系统是非常必要的,与小区内繁多
9、的硬件设施相比较,传统的手工式的管理方式已经无法适合当今的庞大的数据处理和精确的运算需求,所以一套精美完善的小区物业管理系统是提高工作效率节省人力物力的有效解决方案。传统的管理方式,对物业管理人员要求数量多,耗资高,错误率高,工作人员流动和对新人的培训经费也是不小的开支。一套完善的小区物业管理系统可持续使用并能随着时代和工作的需求不断更新,一期投入终身受用,按长期的使用计算,开发系统的造价平均到每年与传统式的管理方式的年耗资本相对比,性价比是可行的。开发这套系统的经济可行性是很高的。2.4社会因素可行性分析对于这套小区物业管理系统而言,在投入使用前,会由开发并能熟练操作本系统的工程人员对用户群
10、进行专业系统的培训。培训内容应包括,熟练掌握系统的各个功能和简单的系统维护,在开发设计程序的过程中直观的界面和控件的文字解释完全能使得用户充分理解起功能和意义,在计算机普及的今天,用户对本系统的操作完全可以看做是一种简单的,配合形式的手工操作,因为本系统最适合用于微型机,可以说几乎任何人都可以使用和管理。所以本系统的操作是完全可行的。 3.软件综合实训项目开发计划书3.1概述3.1.0编写目的 编写这份项目开发计划目的是让该项目能在规定的时间内有效率的完成,以及分配小组各成员的任务,让他们在规定时间内各司其职。3.1.1项目名称 小区物业管理系统3.1.2项目建设的内容和规模 项目内容:根据项
11、目的需求分析,在规定时间内完成该系统的设计、实现与测试,争取把该系统打造成一个高效率高通用性的系统。3.1.3经济技术指标规划时间:两个星期规划地点:E512机房开发人数:83.1.4项目主要开发条件本项目符合中华人民共和国各项法律法规。本项目的物质条件俱全(电脑、开发工具、开发地点等)。3.2项目概述3.21工作内容主要有项目的可行性研究、项目的开发计划、需求分析、概要设计、详细设计和项目完成后的测试这几个主要任务。3.2.2项目开发人员项目组长:曹海项目小组成员:曹海、欧立可、唐波、李春宣、邓敏求、周细雨、黄进、程希3.2.3产品介绍该程序的名称是小区物业管理系统,采用的java语言开发,
12、辅以MySQL数据库,存储媒介为可移动硬盘。3.3实施计划3.31工作任务的分门与人员分工任务安排:项目组长负责完成项目可行性研究报告和项目开发计划的起草工作。黄进负责需求分析,欧立可和唐波负责项目的概要设计,李春宣和邓敏求负责项目的详细设计,周细雨负责软件的测试,程希负责系统的实现。3.3.2进度 第15周确定项目的题目和准备项目的前期工作,完成项目小组的人员安排。15周星期一、星期二完成项目的可行性分析和项目的开发计划,星期三、星期四完成项目的需求分析。第16周完成项目的详细设计及测设,并于16周周五上交报告。 4.需求分析4.1 功能需求 物业管理系统是一个涉及多方面的系统工程,它包含了
13、管理、服务、工程、财务等多个职能系统。开发智能小区物业管理系统应该满足以下要求:一是全面性,满足常规管理工作的需求;二是智能化,实现数据采集、处理自动化的要求;三是先进性,系统体现时代的需要,使管理更细致、深入,决策更科学。作为智能小区管理信息系统中必不可少的一部分,物业管理系统在其中应该实现的功能有:(1)无纸化管理应实现物业管理各种文件在电脑上的编辑、发送和接收,在电脑上取代以往的人工报审,有纸操作;提供一个足够开放的平台,实现充分的数据共享和内部通讯。如对于内部的多个部门以及分布在不同地方的多个管理处,可以突破层次和部门分隔导致的沟通障碍来实现信息的实时共享。(2)灵活方便的万能查询功能
14、对于用户来讲,查询的要求是千变万化的,为了适应用户的这种要求,系统应支持对所有的事件记录、费用数据等进行检索、统计、总览,从而对日常管理的计划、控制和决策起到实际的支持作用。(3)敏感数据修改的日志跟踪和分级的权限控制对应保密或较敏感的数据修改提供跟踪,能清楚地记录数据每次更的情况(更改人、时间、值、数额等),提供敏感数据更改的依据。根据操作人员的不同权限:财务经理有权修改费用单价;收费员只能录入读数进行计算;管理处的工作人员仅能看到本管理处的数据。(4)形象丰富的决策分析系统快速、自动、强大的统计汇总功能和丰富的报表打印系统,使各种数据的统计汇总、分析表格一应俱全,物业公司的领导可以随时查阅
15、最新的详细情况,并依次快速、准确地做出决策。同时智能小区物业管理系统应该能够给物业公司内部管理提供全面的解决方案,并从不同层次满足住宅小区发展商的需求。包括下面四个层次:业务处理:用于基层办事人员,如收款员、管理员、保安员、维修员等,包括各种物业档案、台帐等静态数据的录入、查询、打印报表;每月各种收费数据的录入、计算、打单、收款;日常工作日志及数据的录入、查询、打印。运行控制:用于基层干部,如管理处的财务经理、物业经理、保安经理、工程经理等,包括雇佣和培训工作人员,日常工作(设备保养、维修、保安巡逻、清洁)的调度、工作进展的定期考评与分析、事件提醒等。管理控N-用于管理处主任及公司管理人员,包
16、括对每一项工作实际与计划的对比,如收费结果统计比较、设备完好率统计比较、安全达标结果统计比较等。领导决策:用于公司最高领导决策层,包括企业发展战略的分析、新市场开发分析及人力资源政策分析等。根据物业管理系统的总体功能需求及用户层次要求,整个系统主要分为以下几个功能模块:系统管理、住户管理、房产管理、设备管理、收费管理和社区服务,如下图3-I所示: 系统管理:本模块的主要功能是对用户的使用权限进行分配以及数据的备份,由用户管理模块和数据管理模块(如图3-2所示)。它为各类型的用户赋予账号和初始密码,用户管理可以让管理员用户对用户信息进行增加、修改和删除;同时数据管理提供了用户相关信息的备份处理,
17、保障信息的安全性和完整性。 住户管理:本模块的功能是对住户的所有相关信息进行管理(如图33所示),它主要包括住户信息录入、住户信息查询、住户信息修改、住户信息删除等。 房产管理:本模块主要是从楼宇管理与房屋管理两方面对小区中的所有房产进行管理(如图34所示)。楼宇管理模块包括楼宇信息的录入、楼宇信息查询、楼宇信息修改、楼宇信息删除;房屋管理模块包括房屋基本信息录入、房屋信息查询、房屋信息修改、房屋信息删除等模块。 设备管理:本模块主要是对小区内的所有设备信息进行管理,确保设备的安全和及时对损坏设备进行维修。主要包括设备基本信息的录入、查询、修改、删除等,并将设备的维修信息单独列出供用户进行查询
18、、添加、修改和删除等操作,方便用户了解情况。收费管理:本模块对住户的水费、电费、煤气费等相关费用进行统筹管理,便于住户及时交费和查询。社区服务:本模块主要是为各位业主提供诸如停水停电通知、缴费通知、社区活动通知等社区相关服务的,它所提供的服务项目主要有短信群发、提醒服务以及建议意见等(如图3-7所示) 4.2 性能需求(1)可扩展性为了适应日后的发展,小区物业管理系统必须具有良好的扩展性和适应性。(2)安全性为保证数据安全和服务安全,系统必须构建安全平台,为用户提供安全的数据传输及身份认证机制。4.2.1系统建模1.用例图通过对以上功能模块的分析,系统的角色主要分为两类:住户和系统管理员。住户
19、可以进入系统公共信息管理模块,了解住房信息以及小区内的公共信息等;系统管理员可以使用住户管理、房产管理、设备管理、车位管理以及收费管理模块,为小区内的日常工作服务,也可以使用系统管理模块,主要是用来进行用户权限的配置,具备最高的权限。全局用例图如图3-8所示。 接着再对其中的每个用例进行进一步的分析,找出其中更具体的用例。比如:系统管理包括用户管理用例和数据管理用例;房产管理包括楼宇管理用例和房屋管理用例,楼宇管理中又包含楼宇信息录入、查询、修改和删除等用例。2.类图根据物业管理系统的用例分析,对这个系统而言,在系统边界以外与系统进行交互的活动者是系统管理员和普通用户,考虑系统问题域和系统责任
20、边界,确定所用到的类主要包括:楼宇信息、房屋信息、住户信息、个人收费信息等。在整个系统中,系统管理员处于主动位置,它管理相关的事项和其他类。我们可以从系统管理员和普通用户两类对象开始进行执行路线追踪,以发现系统中各种消息连接。物业管理系统的各类间的关联可根据系统功能用例来确定,比如住户信息类和收费信息类之间是l:l的关联。关联须谨慎确定,以保证数据的完整性,防止以后频繁的修改而影响系统的开发进度。通过分析,本系统的类图,如图3-9所示。顺序图顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。如图3-10所示,是楼宇信息管理模块的顺序图.管理员用户通过添加消
21、息,进入添加楼宇信息界面,在此界面中显示需要添加的楼宇信息,例如楼字号、楼层号等;通过编辑消息,进入编辑楼宇信息界面,在编辑完成后保存,管理员用户通过查询消息进入查询楼宇界面,检查添加消息是否成功。状态图状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件。大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。一个状态图包括一系列的状态以及状态之间的转移。不是所有的类都有状态图,以住户类为例,住户的状态图如图3-11所示。 从状态图中可以看到住户的所有状态:查询、添加、删除、修改。当住户处于编辑状态之前,先要查询并确认住户的类型,然后进行编辑;处于增加、删除状态前同样应该先查
22、询并确认后,在进行增加、删除。 5.概要设计5.1系统总体设计小区物业管理系统总体设计包含了住户基本信息实体E-R图、房产基本信息实体E-R图、住户投诉基本信息实体E-R图、系统结构图。5.2数据库设计数据库的设计包含了用户表、住户基本信息表、房屋基本信息表、处理故障表、收费信息表。 6.详细设计6.1系统管理模块详细设计 系统管理模块主要包含了用户管理和数据管理。 用户管理的功能是根据用户使用权限分别提供可以执行的相关操作。在本模块中,系统管理员用户不仅可以添加用户权限组,还可以对权限组内的用户进行添加、修改和删除 数据管理主要实现了数据的安全性和高可用性。6.2日常模块详细设计日常模块主要
23、有登陆界面、住户管理、房产管理、设备管理、收费管理。 7.系统的实现 该系统的是用java语言实现的各个模块功能,有前台的登陆界面,后台的数据处理模块和中间的逻辑处理模块。 8.运行与测试该系统的各个模块均运行正常,用户登陆界面运行后简洁美观,逻辑实现模块处理数据准确无误,数据库对数据的增删改查均正常,经测试该系统是一个高效的实用性强的系统。 9.实训总结 在实训期间我们小组主要围绕小区物业管理系统进行了一系列的研究和讨论。详细说明了在J2EE平台上开发和设计系统的方法、后端数据库的建立以及数据库连接等内容,并设计和实现了小区物业管理系统,主要进行了以下几方面的工作: 首先介绍小区物业管理系统
24、在现代社会生活中的现状和重要性,结合我国的具体实际,阐述建立具有小区特色的物业管理系统的意义和研究情况,提出了本系统的主要研究内容和方向,并规划出本文的集构。其次,对系统中的相关技术进行了比较详细的阐述,特别是J2EE的结构体系和技术体系进行重点介绍;并对计算机模式进行了分析和对比,从中选出一个比较适合本系统开发应用的模式使用。同时简单介绍了数据挖掘相关知识和常用方法。最后,在对系统的需求进行了比较全面的分析之后完成对系统的总体设计,将系统划分为六大功能模块进行描述提出了系统的主要模块,并详细介绍了它们的设计与实现情况。 我们小组成员在有限的时间里经过努力,该小区物业管理系统已初具规模,界面比
25、较实用,系统稳定性良好,通过网络实验测试用户连接功能良好。系统的查询功能完备,可以满足用户的各种查询要求。查询信息准确无误,完整详细、迅速方便。系统的可操作性很好,不同类型的用户都可以很方便的进行相关的操作,相信可以给小区物业管理工作带来一定的帮助。作为可在网络上直接进行操作的物业管理系统,数据对象的访问控制让我们的敏感数据得到较好的保护,使得只有相应的授权用户才能得到相应的操作权限,一些重要的业主信息等得到较好的利用的同时,又具有很高的安全性。该系统直接面对小区物业管理人员,实现物业管理工作网络处理、协作功能,使小区内的数据电子化,简化工作流程,提高工作效率。与用户的接口实现简单、安全,可操
26、作性强。可以节省许多资源,可以迅速查询和打印所需信息,节省大量人力,简单、明了、安全、高效,可以大大的提高人们的工作效率,具有很高的实用价值:实训日志:2011.12.5号即第十五周周一在E512机房确定小组成员和该次实训的项目(小区物业管理系统);2011.12.8号即第十五周周四在E512机房听冯剑老师讲实训案例:工资管理系统需求建模启发;并确定小组各人员的具体分工,其中黄进负责需求分析、欧立可负责概要设计、李春萱负责详细设计、周细雨负责软件的测试,我负责项目的可行性研究和项目的开发计划。2011.12.9号即第十五周周五在E512机房听冯剑老师讲案例:工资管理系统设计引导。并于机房查找该
27、我们小组负责项目的相关资料。2011.12.14号即第十六周周三在E512机房继续听冯剑老师讲案例:工资管理系统的数据库设计参考示范。进一步确定小组各个成员的分工,调整如下:我负责该项目的前四个部分即概述、可行性分析、项目开发计划和部分需求分析,黄进负责具体的需求分析,欧立可负责概要设计中的数据库设计,唐波负责概要设计中的系统总体设计,李春萱负责详细设计中的系统管理模块,邓敏求负责详细设计中的日常模块详细设计,程希负责系统的实现这部分,周细雨负责项目的运行与测试,至此,小组个成员已分工明确。2011.12.16号第十六周周五上交报告。 10.参考文献1智能化住宅小区物业管理系统软件设计概述Lu
28、ciahttp:wwwchnibscom,2002,102李焕哲,刘晓亮,郭大权等J2EE体系结构探讨河北省科学院学报,2003.3陈国华,詹宏昌,张文海JSP技术及其在安全管理信息系统中的应用中国安全科学学报,2003,13(1):45494覃桂敏,王力J2EE开发过程中性能问题的研究计算机工程,2004,30(12):84865孟庆强,宗平J2EE与三层Web应用开发计算机与现代化,2004,103(3):50536Michael Girdley Rob Woolen Sandra LEmersonJ2EE Appl ications and BEA WebLogicServer北京:电子
29、工业出版社,20057William Crawford,Jonathan KaplanJ2EB Design PatternsM8于景基于STRUTS架构的外汇交易管理系统的设计与实现:硕士学位论文大连:大连理工大学计算机学院,2005附件:主要代码链接数据库的代码(前台界面与后台数据库的桥梁):package org.biye.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;public class Co
30、nnectionUtils private static String driver;private static String url;private static String user;private static String password;static try Properties props = new Properties();/从配置文件中读取配置信息props.load(ConnectionUtils.class.getClassLoader().getResourceAsStream(org/biye/util/perties); driver = props.getP
31、roperty(driver);/driver=com.mysql.jdbc.Driverurl = props.getProperty(url);/url=jdbc:mysql:/:3306/testuser = props.getProperty(user);/user=root password=props.getProperty(password);/password=jinClass.forName(driver); catch (Exception e) public static Connection getConnection() throws SQLException Con
32、nection con = DriverManager.getConnection(url, user, password);return con;登入界面代码为:public void actionPerformed(ActionEvent e) if (e.getActionCommand().equals(登入) If (idField.getText().trim().equals()| new String(passwdField.getPassword().trim().equals() JOptionPane.showMessageDialog(jf, 户号、密码不能为空!);
33、return;String roomId = idField.getText().trim();String passwd = new String(passwdField.getPassword().trim();try SocketUtil.createSocket();ObjectOutputStream oos=SocketUtil.getOutputStream();MyObject obj=new MyObject(MyObject.LOGIN_OBJECT);obj.addData(roomId,roomId);obj.addData(passwd,passwd);oos.wri
34、teObject(obj);oos.flush();ObjectInputStream ois=SocketUtil.getInputStream();User user=(User)ois.readObject();if (user.getMark().equals(0) jf.dispose();new Enroll(user).showMe();JOptionPane.showMessageDialog(null, 您还未登记,请登记!); else if (user.getMark().equals(1) MyObject ob = new MyObject(MyObject.RINS
35、ERT_OBJECT);ob.addData(roomId, user.getRoomId();oos.writeObject(ob);oos.flush();Resident r = (Resident) ois.readObject();if (r = null) JOptionPane.showMessageDialog(null, 您还未登记,请再点击登录!);String mark = 0 + ;MyObject o = new MyObject(MyObject.HH_OBJECT);o.addData(mark, mark);o.addData(roomId, roomId);o
36、os.writeObject(o);oos.flush();ArrayList residentList = new ArrayList();residentList.add(r);jf.dispose();new CFrame(residentList).showMe();else if(user.getMark().equals(2)JOptionPane.showMessageDialog(null, 密码错误!);else if(user.getMark().equals(3)JOptionPane.showMessageDialog(null, 没有此用户!); catch (Exc
37、eption e1) e1.printStackTrace(); else if (e.getActionCommand().equals(取消) System.exit(0); else if (e.getActionCommand().equals(注册) new RegisterFrame().showMe();jf.dispose();住户信息登记界面部分代码:public void actionPerformed(ActionEvent e) if (e.getActionCommand().equals(确定) String roomId = id1.getText().trim(
38、);String name = proprietor1.getText().trim();String telphone = telephone1.getText().trim();String family1 = jtf2.getText().trim();String family2 = jtf3.getText().trim();String family3 = jtf4.getText().trim();String family4 = jtf5.getText().trim();System.out.println(roomId1 + =);if (!(roomId.equals(r
39、oomId1) JOptionPane.showMessageDialog(jf, 前后户号不同!);return; else if (name.equals() | telphone.equals() JOptionPane.showMessageDialog(jf, 户名与电话不能为空!); else try SocketUtil.createSocket();ObjectOutputStream oos = SocketUtil.getOutputStream();MyObject obj = new MyObject(MyObject.ENROLL_OBJECT);obj.addDat
40、a(roomId, roomId);obj.addData(name, name);obj.addData(telphone, telphone);obj.addData(family1, family1);obj.addData(family2, family2);obj.addData(family3, family3);obj.addData(family4, family4);oos.writeObject(obj);oos.flush();ObjectInputStream ois = SocketUtil.getInputStream();Resident re = (Reside
41、nt) ois.readObject();if (re != null) ArrayList list = new ArrayList();list.add(re);String mark=1+;MyObject o = new MyObject(MyObject.HH_OBJECT);o.addData(mark, mark);o.addData(roomId, roomId);oos.writeObject(o);oos.flush();jf.dispose();new CFrame(list).showMe(); JOptionPane.showMessageDialog(null, 该
42、住户信息已存在,请核对,要修改的请点击修改!); else String a = 0 + ;String b = 0 + ;String c = 0 + ;String d = 0 + ;String e1 = 0 + ;String f = 0 + ;String g =0 + ;String h =0+ ;Resident r = new Resident();r.set房号(roomId);r.set房主(name);r.set电话(telphone);r.set家人1(family1);r.set家人2(family2);r.set家人3(family3);r.set家人4(famil
43、y4);r.set是否在家(a);r.set火灾监控(b);r.set防盗监控(c);r.set煤气监控(d);r.set水控制(e1);r.set电控制(f);r.set气控制(g);r.set家电管理(h);ArrayList list = new ArrayList();list.add(r);String mark=1+;MyObject o = new MyObject(MyObject.HH_OBJECT);o.addData(mark, mark);o.addData(roomId, roomId);oos.writeObject(o);oos.flush();jf.dispos
44、e();new CFrame(list).showMe(); JOptionPane.showMessageDialog(null, 登记成功!); catch (Exception e1) e1.printStackTrace(); else if (e.getActionCommand().equals(取消) System.exit(0); 实训评分表项目名称:指标评价方案的合理性与创造性设计与测试结果设计说明书的质量答辩陈述与回答问题情况实训表现情况资料齐全情况综合成绩 教师签名: 日 期: 附录资料:不需要的可以自行删除C语言编译器的设计与实现 我们设计的编译程序涉及到编译五个阶段中
45、的三个,即词法分析器、语法分析器和中间代码生成器。编译程序的输出结果包括词法分析后的二元式序列、变量名表、状态栈分析过程显示及四元式序列程序,整个编译程序分为三部分:(1) 词法分析部分(2) 语法分析处理及四元式生成部分 (3) 输出显示部分一词法分析器设计 由于我们规定的程序语句中涉及单词较少,故在词法分析阶段忽略了单词输入错误的检查,而将编译程序的重点放在中间代码生成阶段。词法分析器的功能是输入源程序,输出单词符号。我们规定输出的单词符号格式为如下的二元式: (单词种别,单词自身的值)#define ACC -2#define syl_if 0#define syl_else 1#def
46、ine syl_while 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define times 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define rop 20#define lpar
47、ent 21#define rparent 22#define ident 23#define intconst 24函数说明 读取函数 readline( )、readch( )词法分析包含从源文件读取字符的操作,但频繁的读文件操作会影响程序执行效率,故实际上是从源程序文件” source.dat ”中读取一行到输入缓冲区,而词法分析过程中每次读取一个字符时则是通过执行 readch( )从输入缓冲区获得的;若缓冲区已被读空,则再执行readline( )从 source.dat 中读取下一行至输入缓冲区。扫描函数 scan( ) 扫描函数 scan( )的功能是滤除多余空格并对主要单词进行
48、分析处理,将分析得到的二元式存入二元式结果缓冲区。变量处理 find( )变量处理中首先把以字母开头的字母数字串存到 spelling 数组中,然后进行识别。识别过程是先让它与保留关键字表中的所有关键字进行匹配,若获得成功则说明它为保留关键字,即将其内码值写入二元式结果缓冲区;否则说明其为变量,这时让它与变量名表中的变量进行匹配( 变量匹配函数 find( ) ),如果成功,则说明该变量已存在并在二元式结果缓冲区中标记为此变量( 值填为该变量在变量名表中的位置),否则将该变量登记到变量名表中,再将这个新变量存入二元式缓存数组中。数字识别 number( ) 数字识别将识别出的数字填入二元式结果
49、缓存数组。显示函数 显示函数的功能在屏幕上输出词法分析的结果( 即二元式序列程序),同时给出二元式个数及源程序行数统计。二语法分析器设计 语法分析器的核心是三张 SLR 分析表以及针对这三张 SLR 分析表进行语义加工的语义动作。编译程序中语法分析处理及四元式生成部分主要是以二元式作为输入,并通过 SLR 分析表对语法分析处理过程进行控制,使四元式翻译的工作有条不紊的进行,同时识别语法分析中的语法错误。在处理 if 和 while 语句时,需要进行真值或假值的拉链和返填工作,以便转移目标的正确填入。1. 控制语句的 SLR 分析表1 设计过程如下: 将扩展文法GS S1)S if e S el
50、se S2)S while e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法构造LR(0)项目规范簇为:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ; I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e S S if e S else SS
51、 while e S S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S S L S a ; I16: S if e S else S 构造文法G中非终结符的FOLLOW集如下:FOLLOW(S) = # S if e S else S得FOLLOW(S) = els
52、e S L 得FOLLOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因为FIRST(S) = ,所以FOLLOW(S) = else , #, 在()项目规范簇中,只有9有“移进归约”冲突,L SL SL因为FOLLOW(L) FIRST(L) = 所以可以用方法解决以上冲突,最后我们得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4111512R2R2R213R3R3R
53、314R615S2S3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */ -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 9, 8,/* 5 */ -1,
54、 -1, -1, -1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3, 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1,/* 11*/ -1, 15, -1
55、, -1, -1, -1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1, -1;其中,前 9 列为 action
56、 值,后 2 列为 goto 值;016 表示 17 个移进状态( 即 Si);-1表示出错;ACC 表示分析成功;而 100106 对应 7 个归约产生式:S SS if e S else SS while e SS L S a;L SL SL2. 算术表达式的 LR 分析表 2 设计如下:S EE E+EE E*EE (E)E i (过程略)ACTIONGOTOI+*()#E0S3S211S4S5ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int action1107=/* 0 */ 3, -
57、1, -1, 2, -1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5, -1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102, -1,/* 9 */ -1,103,
58、103, -1,103,103, -1;3.布尔表达式的 SLR 分析表3 设计如下:(过程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int action21611=/* 0 */
59、 1, -1, 4, -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/* 6 */ -1, -1, -1,1
60、04, -1, 9, 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107, -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12 */ -1, -1, -1,103,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工职业礼仪培训总结报告
- 拉链厂社会实践活动
- 2024年度二手钢琴保养预约合同2篇
- 2024年度特许经营合同特许经营权范围
- 《竞争?合作?》课件
- 精准医疗平台
- 仁爱版七年级上册英语全册教案
- 仁爱版七年级上英语全册教案
- 仁爱版七年级上册英语全册教案设计
- 2024年度地铁隧道钻爆施工机械采购协议3篇
- 广东省佛山市顺德区普通高中2024-2025学年高三上学期教学质量检测(一)英语试题(解析版)
- 教师资格考试初中生物面试试题与参考答案
- 露天矿山安全培训课件经典
- 企业资产管理培训
- 公文写作课件教学课件
- 2024年巴西医疗健康产业发展趋势
- 自然辩证法学习通超星期末考试答案章节答案2024年
- 2024年6月浙江省高考地理试卷真题(含答案逐题解析)
- 中考语文专项必刷题之名著阅读专题(天津版)
- 2024版合伙经营运输车辆合同范本
- 热点主题作文写作指导:多一些尊重理解少一些偏见误解(审题指导与例文)
评论
0/150
提交评论