基于GIS的学生公寓管理系统论文_第1页
基于GIS的学生公寓管理系统论文_第2页
基于GIS的学生公寓管理系统论文_第3页
基于GIS的学生公寓管理系统论文_第4页
基于GIS的学生公寓管理系统论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

江苏大学本科生毕业论文PAGE第4页江苏大学本科生毕业论文第1页摘 要在高科技信息时代,GIS正朝大众化、网络化方向发展,具有非常大的发展前景和空间。基于GIS的学生公寓管理系统就是为了顺应教育信息化趋势、积极推进校园信息化建设,为公寓管理人员提供科学方便的管理功能。本系统主要结合GIS的空间管理功能,采用数据库技术和面向对象的编程方法,实现对学生公寓的信息化管理,并提供可视化的操作界面,从而满足公寓管理的办公自动化要求,提高管理人员工作效率。本文着重阐述了在SQLServer2000下数据库的设计以及在Delphi7开发环境下实现对数据库中数据的输入、查询检索、统计汇总以及辅助分析等内容。关键词:数据库地理信息系统结构化查询语言管理信息系统

Abstract IninformationageofHi-Tech,GISisbeingdevelopedinthepopularization,networkeddirection,haveverybigdevelopmentprospectandspace.Inordertocomplywiththeeducationinformation-basedtrend,activelyadvancetheinformationconstructionofthecampus,theadministrativesystemofstudent'sapartmentbasedonGISOfferthefunctionsofmanagementwithconvenientsciencetoadministrativestaffoftheapartment.ThissystemmainlycombinesthespacemanagingfunctionofGISandadoptsthetechnologyofthedatabaseandtarget-orientedprogrammingmethodandrealizesthatmanagestotheinformationizationofstudent'sapartmentandofferthevisualoperationinterface,thusmeettheofficeautomationdemandofmanagementoftheapartmentandimprovesadministrativestaff'sworkingefficiency.ThispapermainlyexplainedthedesignofdatabaseinSQLServer2000,andundertheDelphi7developmentenvironmentrealizethecontentofsearching,countinggatheringandanalysingtotheintroduction,inquiryofdatumauxiliarilyetc.Keywords:DatabaseGISSQLManagementinformationsystem

目录TOC\o"1-4"\h\z第一章绪论 11.1地理信息系统概述 11.2数据库技术概述及其发展 11.2.1数据库技术概述 11.2.2数据库技术的发展 21.3本文的研究背景 21.4本文研究的目标、内容 31.4.1本文研究的主要目标 31.4.2本文研究的主要内容 3第二章基于GIS的学生公寓管理系统的分析和设计 42.1系统的可行性分析 42.2系统的需求性分析 42.3系统的设计目标 42.4系统的结构与功能 52.4.1系统的结构 52.4.2系统的功能 6第三章系统开发环境 83.1SQLSever2000数据库 83.1.1SQLServer2000简介 83.1.2SQLServer2000的特点 83.1.3Transact-SQL语言简介 93.1.4数据库的创建和管理 9数据库的创建 9删除和修改数据库 103.1.5表的创建和管理 10数据类型 10表的创建 12增加、删除和修改字段 13查看表格 133.1.6表中数据的操作 13使用SELECT语句查询数据 13使用INSERT语句插入数据 14使用UPDATE语句更新数据 15使用DELETE语句删除数据 153.2Delphi7.0开发工具 153.2.1Delphi简介 153.2.2Delphi的数据库特性 163.2.3Delphi数据库的体系结构 16第四章学生公寓管理系统的实现 184.1学生公寓数据库的设计 184.2数据来源 184.3系统界面的设计 204.3.1程序的功能 204.3.2程序主框架 204.4程序功能模块的实现 214.4.1使用ADO控件连接到SQL数据库 214.4.2数据管理模块的实现 23学生基本信息查询 23SQL综合查询 254.4.3辅助分析管理模块 28学生宿舍自动分配 28学生宿舍手动调整 29第五章总结与展望 335.1总结 335.2展望 33参考文献 34致谢 35第一章绪论1.1地理信息系统概述 地理信息系统(GeographicInformationSystem,简称GIS)是一门关于地学的新学科,它是计算机、数据库、网络、信息科学的集成。GIS最早是加拿大的RogerTomlinson于1962年提出的概念,不同学科和不同领域对其定义和理解不尽相同,至今尚没有国际统一的定义。美国联邦数字地图协调委员会(FICCDS)对GIS的定义是:“GIS是由计算机硬件、软件和不同方法组成的系统;该系统具有支持空间数据的获取、管理、处理、分析、建模和显示的功能,并可解决复杂的规划和管理问题[1]”。从RogerTomlinson于六十年代领导建设第一个实用地理信息系统——加拿大地理信息系统(CGIS),其后三十多年GIS研究和产业化飞速发展,在自然资源管理、城市综合信息管理、邮电通讯、水利工程、交通运输、环保、防灾减灾、保险、军事与公安以及市场分析等广泛的领域获得了应用,并发展出很多分支学科,如满足城市现代化建设与管理需求的城市地理信息系统UGIS(UrbanGeographicInformationSystem),在高技术、高强度、现代局部战争(海湾战争)中发挥重要作用的军事地理信息系MGIS(MilitaryGeographicInformationSystem)。1998年1月31日,美国副总统戈尔在加利福利亚科学中心召开的OpenGISConsortium年会上提出了“数字地球”的概念,很快得到了许多国家的响应。他认为,数字地球是指以地球坐标为依据的、具有多分辨率的、由海量数据组成的、能立体表达的虚拟地球。数字地球计划是继信息高速公路之后又一全球性的科技发展战略目标,其核心内容是全球信息数字化。在全球信息数字化的实施过程中,GIS起着十分重要的作用。权威的统计资料和研究报告表明,国民经济信息的80%以上都构筑在地理信息系统之上,GIS产业己达到相当的规模[2]。1987年《地理信息系统世界(GISWorld)》第一次统计GIS软件产品为37个,软、硬件产值为1亿7千7百万美元;而到1993年软件总数达到280,产值达到18亿美元,6年期间增长了10倍,1994年GIS软件总数又上升到383个,1995年GISWORLD对278家公司统计Gis软件为486个[3]。随着GIS技术的发展与成熟,社会对GIS的需求日趋增多,使得GIS渗透到国民经济的各个领域,并创造越来越多的经济效益,从而受到各国政府部门以及各行各业的重视。1.2数据库技术概述及其发展1.2.1数据库技术概述数据库技术产生于二十世纪60年代末70年代初,其主要目的是有效地管理数据资源,研究如何存储、使用和管理数据,是计算机数据管理技术发展的最新阶段。二十世纪70年代是数据库技术蓬勃发展的年代,层次系统和网状系统占据了整个商用市场,而关系系统则处于实验阶段。自二十世纪80年代以来,关系系统逐渐代替网状系统和层次系统而占领了市场。由于关系模型具有严格的数学基础,概念清晰简单,非过程化程度高,数据独立性强,对数据库的理论和实践产生了很大的影响,成为当今的主流的数据库模型。1.2.2数据库技术的发展在数据库技术发展的历史上,1970年是发生伟大转折的一年。这一年的6月,IBM圣约瑟研究实验室的高级研究员埃德加·考特(EdgarFrankCodd)在CommunicationsofACM上发表了《大型共享数据库数据的关系模型》一文。ACM后来在1983年把这篇论文列为从1958年以来的25年中最具里程碑意义的25篇论文之一,因为它首次明确而清晰地为数据库系统提出了一种崭新的模型,即关系模型。“关系”(relation)是数学中的一个基本概念,由集合中的任意元素所组成的若干有序偶对表示,用以反映客观事物间的一定关系。如数之间的大小关系、人之间的亲属关系、商品流通中的购销关系等等。在自然界和社会中,关系无处不在;在计算机科学中,关系的概念也具有十分重要的意义。计算机的逻辑设计、编译程序设计、算法分析与程序结构、信息检索等,都应用了关系的概念。而用关系的概念来建立数据模型,用以描述、设计与操纵数据库,考特是第一人,因此他被自然地称为“关系数据库之父”。由于关系模型既简单、又有坚实的数学基础,所以一经提出,立即引起学术界和产业界的广泛重视,从理论与实践两方面对数据库技术产生了强烈的冲击。在关系模型提出之后,以前的基于层次模型和网状模型的数据库产品很快走向衰败以至消亡,一大批商品化关系数据库系统很快被开发出来并迅速占领了市场。其交替速度之快、除旧布新之彻底是软件史上所罕见的。基于70年代后期到80年代初期这一十分引人注目的现象,考特于1976年被授予IBM名士(IBMFellow)称号并于1981年获得了计算机科学领域的最高奖项-图灵奖。在接受图灵奖时,他做了题为“关系数据库:提高生产率的实际基础”的演说。2002年,《福布斯》杂志评选考特创建的关系数据库模型是过去85年中最重要的创新之一。由于数据库是计算机各种应用的基础,所以关系模型的提出不仅为数据库技术的发展奠定了基础,同时也成为促进计算机普及应用的极大推动力。在考特提出关系模型以后,IBM投巨资开展关系数据库管理系统的研究,其“SystemR”项目的研究成果极大地推动了关系数据库技术的发展,在此基础上推出的DB2和SQL等产品成为IBM的主流产品。SystemR本身作为原型并未问世,但鉴于其影响,ACM还是把1988年的“软件系统奖”授予了SystemR开发小组(获奖的6个人中就包括1998年图灵奖得主J.Gray)。这一年的软件系统奖还破例同时授给两个软件,另一个得奖软件也是关系数据库管理系统,即著名的INGRES[5]。1.3本文的研究背景随着知识经济时代的到来,高等教育事业的不断发展和高校后勤社会化改革不断推进,学生公寓管理的机制、体制已经发生了根本性的变革。这场变革的要求学生公寓管理必须改变陈旧的工作方式,提高管理效率,提升服务质量,逐步完善学生公寓的育人功能,最终满足当前高等教育对后勤保障提出的高水平要求。计算机技术发展到今天,已经全面迈向了集成化、智能化和网络化。以计算机网络技术为代表的信息技术正推动着教育和教育管理手段、方式发生着根本性改变。计算机网络的普及和地理信息系统的发展,加快了数字校园的建设步伐。随着高校校园网的开通,学生公寓基本上实现了计算机网络化,而公寓管理系统正是在建立在这个基础上的,采用现代化信息管理手段,从而全面实现学生公寓管理的信息化,为以后实现数字校园做前期准备。1.4本文研究的目标、内容1.4.1本文研究的主要目标本文研究的主要目标是:运用计算机技术对学生公寓数据进行系统科学地管理,实现公寓的可视化管理,具备数据的编辑、查询、统计分析等功能,解决目前公寓管理工作中效率不高、管理不便等问题,满足公寓管理部门详查学生公寓信息的需求。1.4.2本文研究的主要内容本文主要阐述了基于GIS的学生公寓管理系统的开发设计过程,研究的主要内容包括以下几个方面:系统的可行性和需求性分析、系统的设计目标;系统的模块结构和功能;学生公寓数据库的设计;实现数据管理功能,包括对数据的输入、查询、和统计分析;辅助分析管理功能,包括对学生宿舍的分配和调整。

第二章基于GIS的学生公寓管理系统的分析和设计2.1系统的可行性分析计算机网络技术和统一的学校管理软件是先进的管理思想、管理模式和管理方法的有效载体,是数字校园管理信息化的必由之路。本系统研究开发的平台是Window2000操作系统、基础技术是数据库技术和GIS技术,进行二次开发的程序设计语言是Delphi7。众所周知,计算机技术经过几十年的发展,如今计算机应用系统、网络、数据库等各方面技术已相当成熟,产品的更新换代也相当迅速,目前规模空前强大,应用领域十分广泛;GIS技术虽然起步晚,但伴随着计算机数据库和网络等技术的提高,目前世界上常用的GIS软件已达400多种,成功应用领域也已达一百多个,它的未来发展方向将是数字校园、数字城市、数字中国、数字地球等领域。由此可见,研究开发本系统的所需要的高新技术、支撑硬软件及应用环境都已具备,且由于本文所研究的系统是数字校园工程建设的一个子系统管理模块,它顺应了教育事业可持续发展的趋势,具有切实可行的现实意义。2.2系统的需求性分析随着高校信息化进程的不断推进,全面快速地提高学校管理水平已成为各高校共识。数字校园作为高校信息化建设的重要组成部分,它的实施建设,现已成为我国高校快速提升整体管理水平的重要手段。本文所研究的学生公寓管理系统是数字校园的一个子系统管理模块,对它的研究开发将有助于数字化校园工程的建设。学生公寓管理的特点是:拥有大量的文档资料,包括学生的基本信息和公寓信息;在实际的公寓管理过程中,公寓管理人员要求快速便捷的获取公寓使用现状的各项数据,并进行有效的查询分析、统计等管理工作,而传统的手工运行管理模式由于数据获取慢、工作效率低,满足不了这样的需求。因此学生公寓管理系统设计的出发点是满足公寓管理的办公自动化需求。系统的设计要求能够提高工作效率、方便工作人员操作,并提供可视化的操作界面,从而逐步实现公寓管理的科学化、信息化。2.3系统的设计目标由于学生公寓管理拥有大量的文档资料和丰富的空间特征数据,而以往的学生公寓管理又只是简单的人工管理方式,没有一套完整的科学管理系统,工作比较烦琐、且效率低下,所以为改变这种现状、满足公寓管理的需求,顺应学校体制的改革,本系统研究开发了基于GIS的学生公寓管理系统,给出了公寓管理系统的基本框架,实现了公寓管理过程的可视化功能。具体来说系统应实现以下目标:安全登陆功能:系统以检验口令方式确认登陆者身份。若登陆者为系统管理员,则系统中有关数据修改等功能有效;若为一般用户,则系统中有关数据修改功能无效;否则系统不能进入。 编辑功能:针对学生入学或毕业、宿舍拆迁、宿舍调整等导致信息变动,系统允许对其编辑、修改、录入或删除(学生入学时的基本信息数据从学工处获得,由系统自动导入功能实现,无须重新手动录入)。图层管理与图层表示功能:图形空间数据按楼栋、楼层、宿舍、床位等分层表示。可根据需要按层查询,也可按要求将图层叠加后综合查询。空间操作功能:通过鼠标操作实现地图的选择、缩放、漫游、浏览等功能。属性表操作功能:查询楼栋、楼层、宿舍、床位等属性数据。地图查询功能:可根据所选楼栋、楼栋、楼层显示相应地图。图表联合操作功能:将属性查询结果同步表示出其空间位置,或根据鼠标所选同步浏览其属性信息(本系统中属性浏览在相应组合框中)。满足公寓管理的需要而提供特殊的查询方式:如管理人员点某个宿舍的某个床位时可检索到该床位所住学生的相关信息,也可根据学生信息检索到其所住楼栋的相关信息,也就是学生、公寓双向查询模式。2.4系统的结构与功能2.4.1系统的结构根据系统设计目标,按照结构化系统分析与设计的思路,学生公寓管理系统可分为4个模块:GIS图形模块、数据管理模块、辅助分析管理模块、系统维护管理模块。整个系统的总统结构如图2.1所示。GIS图形数据库辅助分析管理模块模块数据管理模块GIS图形模块基于GIS的学生公寓管理系统系统维护管理模块学生公寓数据库GIS图形数据库辅助分析管理模块模块数据管理模块GIS图形模块基于GIS的学生公寓管理系统系统维护管理模块学生公寓数据库图2.1系统总体结构图2.4.2系统的功能●系统结构决定系统功能,功能模块图如图2.2所示:系统维护管理模块用户口令管理用户权限设置人工干预宿舍分配学生信息的查询宿舍的自动分配学生基本信息的录入公寓地图的显示公寓地图的生成辅助分析管理模块数据管理模块GIS操作模块基于GIS的学生公寓管理系统图文数据双向查询公寓地图的查询地图的基本操作系统维护管理模块用户口令管理用户权限设置人工干预宿舍分配学生信息的查询宿舍的自动分配学生基本信息的录入公寓地图的显示公寓地图的生成辅助分析管理模块数据管理模块GIS操作模块基于GIS的学生公寓管理系统图文数据双向查询公寓地图的查询地图的基本操作图2.2系统功能模块图 ●各个模块主要实现以下功能:1、GIS图形模块 能完成地图文件转入、地图显示、地图编辑等操作。 ·地图文件转入:能实现地图文件的转入; ·地图显示:可对地图进行缩放、漫游等操作;·地图编辑:能对地图的图元对象进行删除、复制等操作,并能绘制点、线、面等基本图元,对图元的样式进行改变。 2、数据管理模块 能完成数据的输入、浏览、查询、统计汇总,并能进行空间数据和属性数据之间的双向查询。 ·数据输入:公寓管理中各种属性数据的输入,如学生的基本信息;·查询检索:包括空间数据、属性数据以及两者的交互查询。实现对各楼栋、搂层、宿舍使用现状数据、居住学生的基本信息及各种相关信息的查询。·统计汇总:按各楼栋、楼层,统计宿舍使用情况。 3、辅助分析管理模块此功能模块提供了公寓管理的相关功能模型,如自动分配学生宿舍模型、学生宿舍分配的人工干预模型等,通过从数据库中获取的原始数据,进行相应的分析处理,可进行学生宿舍的自动分配、人工干预调整等。此功能可逐步扩充、增强。 4、系统维护管理模块 提供用户管理功能:·用户管理:包括口令管理、用户权限设置。为了系统数据的安全性,在用户管理中设置了用户访问权限,一般用户可以进行数据的浏览、查询,以及获取各类统计分析;系统管理员可以增加或删除一般用户,主要负责系统维护、数据管理与维护。

第三章系统开发环境 本文主要实现的是学生公寓管理系统中的数据管理模块和辅助分析模块,所用到的开发工具是BorlandDelphi7和SQLSever2000数据库。3.1SQLSever2000数据库SQLServer是微软公司(Microsoft)开发的大型数据库管理软件,是目前市场上常见的主流关系数据库管理系统之一。它支持可扩展的、分布式的Web数据库,可进行多维数据处理、备份和恢复数据库等。3.1.1SQLServer2000简介SQLServer是使用客户机/服务器(C/S)体系结构的关系型数据库管理系统(RDBMS)。1988年推出了第一个OS/2版本。1992年,SQLServer移植到NT上后,Microsoft成了这个项目的主导者。1994年以后,Microsoft专注于开发、推广SQLServer的WindowsNT版本1996年,Microsoft公司推出了SQLServer6.5版本1998年,推出了SQLServer7.0版本2000年推出了SQLServer2000SQLServer2000常见的版本有:企业版(EnterpriseEdition)、标准版(StandardEdition)、个人版(PersonalEdition)和开发人员版(DeveloperEdition)。企业版:一般作为数据库服务器使用。标准版:一般用于小型的工作组或部门。个人版:主要适用于移动用户。开发人员版:是一个适用于应用程序开发的版本。3.1.2SQLServer2000的特点1. SQLServer的主要特点真正的客户机/服务器体系结构。图形化用户界面。丰富的编程接口工具。SQLServer与WindowsNT完全集成。具有很好的伸缩性。对Web技术的支持。SQLServer提供数据仓库功能。2. SQLServer2000的新特性多个SQLServer实例:SQLServer2000支持在同一台计算机上运行多个关系数据库引擎的实例。引入了三种新的数据类型。支持XML(ExtensiveMarkupLanguage,扩展标记语言)。支持用户自定义函数。支持强大的基于Web的分析。支持OLEDB和多种查询。支持分布式的分区视图。3.1.3Transact-SQL语言简介 结构化查询语言SQL(StructuredQueryLanguage)。SQL语言现在已成为关系型数据库环境下的标准查询语言。目前,最新的SQL标准是1992年制定的SQL-92。微软公司在SQL标准的基础上做了大幅度扩充,并将SQLServer使用的SQL语言称为Transact-SQL语言。3.1.4数据库的创建和管理数据库的创建 创建数据库需要一定许可,在默认情况下,只有系统管理员和数据库拥有者可以创建数据库。数据库被创建后,创建数据库的用户自动成为该数据库的所有者。创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程等。SQLServer2000中创建数据库有3种方法:使用向导创建数据库使用企业管理器创建数据库使用Transact-SQL语言创建数据库删除和修改数据库删除数据库利用企业管理器删除数据库利用Drop语句删除数据库 Dropdatabasedatabase_name[,…n] 说明:只有处于正常状态下的数据库,才能使用DROP语句删除。当数据库处于以下状态时不能被删除:数据库正在使用;数据库正在恢复;数据库包含用于复制的已经出版的对象。修改数据库 只有数据库管理员或具有CREATEDATABASE权限的数据库所有者才有权执行该语句。可以使用企业管理器或Transact-SQL语言修改数据库。3.1.5表的创建和管理数据类型 SQLServer2000的数据类型包括系统数据类型和拥护自定义类型,系统数据类型是SQLServer预先定义好的,可以直接使用。1.整型数据类型(1)int(integer):4个字节(2)Smallint:2个字节(3)Tinyint:1个字节2.浮点数据类型:用于存储十进制小数,采用只入不舍的方式(1)Real:4个字节的,最大7位精确位数。(2)Float:可以精确到第15位小数,默认占用8个字节的存储空间。(3)Decimal和numeric:可以提供小数所需要的实际存储空间,可以用2~17个字节来存储。3.字符数据类型用来存储各种字母、数字符号和特殊符号。在使用时需要在其前后加上英文单引号或者双引号。(1)Char:占用1个字节。(2)Varchar:可以存储长达8000个字符的可变长度字符串,和char类型不同varchar类型根据输入数据的实际长度而变化。(3)Nchar:采用Unicode(统一字符编码标准)字符集每个Unicode字符用两个字节为一个存储单位。(4)Nvarchar:使用Unicode字符集的Varchar数据类型。4.日期和时间数据类型(1)Datetime:占用8个字节。 用于存储日期和时间的结合体,可以存储从公元1753年1月1日零时起~公元9999年12月31日23时59分59秒之间的所有日期和时间,其精确度可达三百分之一秒,即3.33毫秒。(2)Smalldatetime:存储从1900年1月1日~2079年6月6日内的日期。4个字节。5.文本和图形数据类型(1)Text:容量可以在1~231-1个字节。(2)Ntext:采用unicode标准字符集,用于存储大容量文本数据。(3)Image:用于存储照片、目录图片或者图画,其理论容量为231-1(2,147,483,647)个字节。6.货币数据类型(1)Money:用于存储货币值,数值以一个正数部分和一个小数部分存储在两个4字节的整型值中。(2)Smallmoney:其存储范围为-214748.3468~214748.3467。7.位数据类型 Bit称为位数据类型,有两种取值:0和1。如果一个表中有8个或更少的bit列时,用1个字节存放。在输入0以外的其它值时,系统均把它们当1看待。8.二进制数据类型(1)Binary:数据的存储长度是固定的,即n+4个字节。二进制数据类型的最大长度(即n的最大值)为8000,常用于存储图像等数据(2)Varbinary:数据的存储长度是变化的,它为实际所输入数据的长度加上4字节9.特殊数据类型(1)Timestamp:也称作时间戳数据类型。(2)Uniqueidentifier:也称作唯一标识符数据类型。表的创建表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。 在SQLServer2000中,一个数据库中最多可以创建200万个表,用户创建数据库表时,最多可以定义1024列。在同一数据库的不同表中,可以有相同的字段,但在同一个表中不允许有相同的字段,而且每个字段都要求数据类型相同。下面是利用Transact-SQL语言创建表CREATETABLE[database_name.[owner].|owner.]table_name({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>}[,…n])[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]<column_definition>::={column_namedata_type}[COLLATE<collation_name>][[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][…n]<column_constraint>::=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]}|FOREIGNKEY[(column[,…n])]REFERENCESref_table[(ref_column[,…n])][NOTFORREPLICATION]|CHECK[NOTFORREPLICATION](logical_expression)}表的约束约束是SQLServer提供的自动保持数据库完整性的一种方法。列级约束:列级约束是行定义的一部分,只能够应用在一列上。表级约束:表级约束的定义独立于列的定义,可以应用在一个表中的多列上。1.主键约束主键能够唯一地确定表中的每一条记录,主键不能取空值。主键约束可以保证实体的完整性。可以使用企业管理器和使用Transact-SQL语句设置主键约束。2.唯一性约束唯一性约束用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。3.检查约束保证数据库数据的完整性。4.默认约束5.外键约束外键约束主要用来维护两个表之间数据的一致性。增加、删除和修改字段可以利用企业管理器和Transact-SQL语言来实现增加、删除和修改字段的操作。查看表格可以查看表格的定义、表格中的数据、表格与其它数据库对象的依赖关系。3.1.6表中数据的操作使用SELECT语句查询数据SELECT语句的基本格式如下:SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]] 整个SELECT 语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按表达式中的列名分组,该属性列值相等的元组为一个组。如果GROUP子句带HAVING 短语,则只有满足指定条件的组才予输出。如果有ORDER子句,则结果表还要按表达式中的列名的值按升序或降序排序。查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如表3.1所示表3.1查询条件谓词比较=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值IDNULL,ISNOTNULL多重条件AND,OR使用SELECT语句可以实现对数据库的各种查询操作。使用INSERT语句插入数据INSERT[INTO]{table_name|view_name}

{[(column_list)]{VALUES({DEFAULT|NULL|expression}[,…n])|derived_table}使用UPDATE语句更新数据UPDATE{table_name|view_name}[FROM{<table_source>}[,…n]SETcolumn_name={expression|DEFAULT|NULL}[,…n][WHEREsearch_condition>]使用DELETE语句删除数据DELETE语句DELETE[FROM]{table_nameWITH(<table_hint_limited>[…n])|view_name}[WHERE<search_condition>]3.2Delphi7.0开发工具3.2.1Delphi简介 Delphi是Windows下优秀的可视化编程环境,是当今流行的Windows程序开发环境之一,它简单、高效、功能强大,主要有如下特性:1、良好的可视化开发设计环境IDE;2、编译的速度一流、可执行程序的效率高;3、可执行程序对开发环境的依赖性很小;4、基于组件的可复用性和可扩展性强大;5、具有强大的数据库开发功能;6、CLX组件可开发跨平台的应用程序。3.2.2Delphi的数据库特性 Delphi操作数据库主要是利用BDE(数据库引擎)来进行,当然通过其他方式绕过BDE直接访问数据库在Delphi中也都可以实现,不过,对于本地数据库来说,通过BDE存取数据效率还是很高的。 BDE是BorlandDatabaseEngine的缩写,它是负责用户和数据库打交道的中间媒介。事实上,应用程序是通过数据访问组件和BDE连接,再由BDE去访问数据库来完成对数据库的操作的,并非直接操作BDE。这样用户只需关心数据组件即可,不用去直接和BDE打交道。数据库组件主要有数据访问组件和数据控制组件,它们和数据库的关系可用下面的示意图来表示: 用户←→数据控制组件←→数据访问组件←→BDE←→数据库 通过BDE几乎可以操作目前所有类型的数据库。3.2.3Delphi数据库的体系结构 Delphi使用可视化的部件创建数据库应用,跟创建其它的非数据库应用程序一样,数据库部件都具备一定的属性,程序设计人员可以在设计过程中设置部件的多种属性,也可以在程序运行过程中通过程序来设置部件的各种属性。在Delphi部件板上有两页数据库部件用于开发数据库应用程序:数据访问组件(DataAccessComponent) 数据访问组件在组件面板的DataAccess组件页上,在这里我们简单介绍一下,Table、Query和Storedproc三个组件也称为数据集组件,用于和数据库连接,读者可将这些组件视为数据库,对它们的操作就可认为是对数据库的操作。 DataSource组件是数据集组件和数据控制组件的连接媒介。数据控制组件是用户操作数据库中数据的界面,只有通过DataSource才能和数据集组件连接,从而获得数据用来进行显示、修改等操作。Table组件是通过数据库引擎BDE来存取数据库中的数据的,并通过BDE将用户对数据库的操作如添加、删除、修改等传递回数据库,这是非常重要的一个组件。 Query组件是利用结构化查询语言(StructuredQueryLanguage)通过BDE来操作数据库的,和Table组件完成的功能基本一样,只是采用了SQL来实现,是重要的组件之一。 Storedproc组件是通过BDE对服务器数据库进行操作的,常用于客户/服务器结构的数据库应用程序。 DataBase组件一般用于建立远程的数据库服务器--客户/服务器结构的数据库应用程序和数据库之间的连接。 Session组件是用于控制数据库应用程序和数据库连接的,主要用于复杂的功能,比如多线程数据库程序编程。 BatchMove组件用于大批数据的转移、复制等。 UpdateSQL组件专用于只读数据库,用于缓存数据库的更新。 NestedTable组件通过BDE操作嵌套数据库(一个数据库作为一个字段保存在另一个数据库中),和Table组件类似,心铃没用过嵌套数据库,所以对此组件没有任何使用经验。数据控制部件页: 数据控制组件也可称为数据显示组件或数据浏览组件。它们的主要功能是和数据访问组件配合供用户对数据进行浏览、编辑等操作。数据控制组件在组件板上的DataControl页上,共有15个组件。它们分别是:DBGrid组件、DBNavigator组件、DBText组件、DBEdit组件、DBMemo组件、DBImage组件、DBListbox组件、DBComboBox组件、DBCheckBox组件、DBRadioGroup组件、DBLookupListBox组件、DBLookupComboBox组件、DBRichEdit组件、DBCtrlGrid组件、DBChart组件。 还有一个组件页是ADO(ActiveXDataObjects),主要是使用微软的OLEDB功能对在数据库服务器中的数据进行访问和操作。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO支持用于建立基于客户端/服务器和Web的应用程序的主要功能。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序或Web页、在客户端对数据进行处理然后将更新结果返回服务器的操作

第四章学生公寓管理系统的实现4.1学生公寓数据库的设计 学生公寓管理的特点是:拥有大量的文档资料,包括学生的基本信息和公寓信息;在实际的公寓管理过程中,要求能够快速便捷的获取公寓使用现状的各项数据,并进行有效的查询分析、统计等管理工作。学生公寓数据库包含学生基本信息,学生住宿情况,楼栋使用情况,学生电话号码信息。 学生基本信息表(STUDENT)包括学生入学时的原始注册信息,该表中信息与学生原始数据表中的项一一对应,原始数据表可以从学工处获得,然后使用SQL的数据转换功能把学生原始数据导入到学生基本信息表中。 学生住宿情况表(Buildinfo)包含楼栋号(Building),房间号(Room),床位(Bed),标志位(Sign)和学号(Number)。楼栋号,房间号,床位作为组合主键,唯一确定一个学生的床位,标志位(Sign)决定该床位是否分配学生,如果分配,则Sign值为1,并且将学号(Number)置为相应学生的学号;否则,Sign值为0,并将学号(Number)置为空(NULL)。 楼栋信息表(Amount)表示楼栋使用情况,包含楼栋号(Building),共有房间数(Total),未分配房间数(Remain)。Total存储楼栋所能容纳的床位数,该字段值只与楼房物理设计有关;当某栋楼中住进学生了,先在学生住宿情况表中登记,然后在未分配宿舍字段的值中减去登记的学生的人数。 学生电话号码信息单独存储在表Phone中,其中包含字段楼号(Building),房间号(Room),电话号码(Phonum)。设置楼号,房间号为组合主键,每个房间号对应一个宿舍的学生的电话号码。4.2数据来源 SQLServer2000的数据转换包括两方面内容:一个是把其它数据系统处理的数据导入到SQLServer2000数据库中,;另一个是将数据从SQLServer2000数据库中导出到其它应用程序中。 使用SQL的数据转换功能完成对学生基本信息的录入,数据来源是学生的原始注册信息,该信息保存在Excel工作表或文本文件中,可以从学工处获得,将Excel工作表中的数据导入学生基本表的步骤如下: 1.打开企业管理器,展开选定的服务器,右击该服务器图标,从弹出的快捷菜单中依次选择“所有任务|导入数据”选项。 2.在弹出的DTS导入/导出向导中,点击下一步,弹出选择数据源对话框,在数据源下拉列表框中选择数据源的类型,文件名处填写作为数据源的Excel工作表所在目录,如图4.1所示:图4.1选择数据源 3.选好数据源后点下一步,在弹出的对话框中选择目标数据库类型,其中必须指定所选用的服务器,数据库以及用户名和密码。 4.点下一步,弹出如图4.2所示的对话框,选择源工作表,在目的数据库表中选择要导入的表,然后点击转换一栏的图标,可以调出列映射和转换对话框,在其中设置数据源和数据库表中字段的映射关系和转换方式。图4.2选择源表和视图 5.设置完毕后可点击预览,查看导入数据库后的数据,确认无误点击下一步,完成数据转换。4.3系统界面的设计4.3.1程序的功能由于本系统是合作开发的,本文实现的功能只是其中的一部分:能够浏览所有学生详细信息,包括学生基本信息和住宿情况;能够以学生基本信息查询学生住宿情况,可以按学号或姓名查询个别学生的详细信息,还可以按班级、来源、学院、系别查询多个学生的信息。能够按单一条件查询,还能按多个条件组合起来查询学生的住宿情况和学生的基本信息;能够对学生按关键字进行精确的查询,也可以进行模糊的查询;能够新入学而未分配宿舍的学生自动分配宿舍;对学生住宿情况进行手工调整,包括对已住人和未住人的床位采用不同的处理方式;4.3.2程序主框架 新建一个工程,将主窗体命名为

FrmMain,将工程保存为MySuperMap.dpr,FrmMain对应的单元文件保存为Main.pas;还有其他一些窗体FrmGIS、FrmSQL、Stu_Info、FrmLayer,Frmmatch,FrmAdjust它们分别为顶层界面、查询窗体、学生基本信息表、楼层基本信息表,学生自动分配情况表和学生宿舍调整窗体。 程序的主框架如图4.3所示:图4.3主界面4.4程序功能模块的实现4.4.1使用ADO控件连接到SQL数据库1.在Stu_Info上放一个TADOConnection对象ADOConncetion1,一个TADOQuery对象ADOQuery1,并开始设置ADOConnection1的ConnectionString属性,如图4.4:图4.4数据库连接对话框2.点击Build按纽,选择SQL

Server的数据提供程序,如图4.5:图4.5数据库供应方选择3.点下一步,弹出图4.6开始设置并测试连接;图4.6设置测试连接4.设置好数据库连接属性后点确定,把ADOConnection1的LoginPrompt属性设为FALSE,连接时不需要提示输入用户名和密码;5.如图4.7,设置ADOQuery1使用ADOConnection1来连接数据库;图4.7设置ADOQuery1属性4.4.2数据管理模块的实现学生基本信息查询1.界面的设置 在Stu_Info窗体上放一个TdataSource对象DataSource1,把DataSource1的DataSet属性设为ADOQuery1;然后在窗体上放上一系列TDBEdit对象,分别对应学生的各项基本信息,把每个TDBEdit对象的DataSource属性设为DataSource1,DataField属性设为查询结果集中相应的字段名,如图4.8所示:图4.8DBEdit1属性设置其中DataField的值即对应查询到的结果集中学生姓名的字段名。2.具体功能的实现 学生基本信息中涉及到学生原始信息以及住宿和电话号码的信息,所用到的SQL查询语句要实现多表的关联查询。在程序运行中,通过动态设置TADOQuery部件的SQL属性来获得所要得到的查询结果集,代码实现方法如下:stu_info.ADOQuery1.close;stu_info.ADOQuery1.sql.Clear;stu_info.ADOQuery1.sql.add('selectSTUDENT.*,Buildinfo.Room,Buildinfo.Bed,Phone.phonum');stu_info.ADOQuery1.sql.Add('FROMBuildinfoINNERJOINPhoneONBuildinfo.Building=Phone.BuildingAND');stu_info.ADOQuery1.sql.Add('Buildinfo.Room=Phone.RoomRIGHTOUTERJOINSTUDENTONBuildinfo.Number=STUDENT.Number');stu_info.ADOQuery1.open 该语句中SQL语句部分实现了3个表的关联查询,查询结果中不仅包括所有分配了宿舍的学生的基本信息,还包括了学生原始信息表中未分配宿舍学生的信息。 说明:在为ADOQuery部件设置SQL属性时调用Close方法总是很安全的,如果ADOQuery部件已经被关闭了,调用Close方法时不会产生任何影响。在应用程序中为SQL属性设置新的SQL命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面,在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。在应用程序运行过程中,通过程序调用ADOQuery部件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。3.程序运行结果 在程序执行中,当点击主菜单中学生基本信息项时,就会弹出学生基本信息窗口,通过窗体下的导航按钮可以浏览所有学生的基本信息,程序运行结果如图4.9所示:图4.9学生基本信息 另外在地图上定位到某个学生时,点击该学生姓名也能调出学生基本信息,此时查询的是定位到地图上某个学生的基本信息,在窗体上也不会出现导航条。SQL综合查询查询界面设计 综合查询界面主要由2大块构成,上面是查询条件输入部分,下面是查询结果输出部分,如图4.10所示;在查询条件部分的Edit文本框中输入要查询的条件,组合文本框中的内容是为了查询方便,列出现有的所有楼栋、楼层和宿舍的信息;查询、清空和退出按钮分别实现结果的输出,输入条件的重置和退出查询;窗体下面是查询结果部分,根据所输入的条件输出查询的结果,该部分输出用到了一个TDBGrid对象,它的数据源链接到上面查询的结果集,这样查询的结果就能直观的显示在表格中。图4.10综合查询界面涉及到的SQL语句主要查询操作(1)单表查询 单表查询是指仅涉及到1个表的查询。(2)连接查询 若一个查询同时涉及到两个以上的表,则称之为连接查询。连接查询是关系数据库中最只要的查询,包括等值连接、自然连接、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。(3)嵌套查询 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。嵌套查询中上层的查询块称为外层查询或父查询,下层查询块称为内层查询或子查询。嵌套查询一般按照由里向外的方法处理。 在某些嵌套查询中WHERE之后还可以使用ANY和ALL两个关键字。这两个关键字可以和算术运算符在一起构成各种查询条件,如:>ALL表示大于子查询中的所有值。(4)联合查询 联合查询是指将两个或两个以上的SELECT语句通过UNION运算符连接起来的查询,联合查询可以将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中所有查询的全部行。使用UNION组合两个查询的结果集的两个基本规则是:所有查询中的列数和列的顺序必须相同。数据类型必须兼容。主要功能的实现 该部分实现了对学生信息的多种查询功能,使用了较为复杂的查询语句,具体功能和实现方法如下:对输入的查询条件为单一条件的查询,例如输入学院名,则在结果中列出该学院所有学生的信息;对输入多个条件为多个条件的查询,例如要查询学-2号计算机学院的学生,则在学院该栏填写响应学院名称,在楼栋该栏选择要查询的楼栋。代码实现方法如下: 首先定义2个字符串变量,字符串strsql用来保存用来查询的SQL语句字串,字符串strsql1用来保存筛选条件字串(即WHERE 子句)。在查询之前,置strsql为如下值: Strsql:=SELECTSTUDENT.NumberAS学号,STUDENT.NameAS姓名,STUDENT.SexAS性别,STUDENT.DepartmentAS系别,STUDENT.AcademyAS学院,STUDENT.AdmclassAS班级,STUDENT.SidentityAS身份证号,Buildinfo.BuildingAS楼号,Buildinfo.RoomAS宿舍,Buildinfo.BedAS床位,Phone.PhonumAS电话号码FROMBuildinfoINNERJOINPhoneONBuildinfo.Building=Phone.BuildingANDBuildinfo.Room=Phone.RoomINNERJOINSTUDENTONBuildinfo.Number=STUDENT.Number;Strsql1字串值在运行时根据用户输入条件生成,以下是生成字串的部分代码:if(trim(deptedit.Text)<>'')and(strsql1<>'')thenstrsql1:=strsql1+'andSTUDENT.Departmentlike'+'''%'+trim(deptedit.Text)+'%'''elsebeginif(strsql1='')and(trim(deptedit.Text)<>'')thenstrsql1:='whereSTUDENT.Departmentlike'+'''%'+trim(deptedit.Text)+'%''';iftrim(deptedit.Text)=''thenstrsql1:=strsql1;end; 该语句首先判断用户是否输入系名(即deptedit文本框中的内容),trim()方法是用来压缩字符串中的空格。 如果用户输入的系名不为空并且strsql1字串不为空(即当前还有其他查询条件),这时只要在原来WHERE子句后加上对系名判断的条件表达式即可;如果用户输入的系名不为空而且strsql1字串为空,这时系名作为第1个查询条件,要把完整的WHERE子句赋给strsql1;如果用户输入的系名为空,即当前系名不作为查询条件,此时只要保持strsql1的内容不变即可。 例如用户输入了系名作为查询条件,而后又选择了楼号作为查询条件,程序先对输入的系名进行判断,由于strsql1为空而且系名不为空,所以将WHERE子句内容赋给strsql1(即strsql1:='whereSTUDENT.Departmentlike'+'''%'+trim(deptedit.Text)+'%''');然后程序将对楼号作相似的判断,由于用户选择了楼号而且strsql1不为空,此时就将查询楼号的条件表达式追加到strsql1后,相加后的strsql1的值为 'whereSTUDENT.Departmentlike'+'''%'+trim(deptedit.Text)+'%'''andBuildinfo.Building='''+trim(cmbbuilding.Text)+'' '' ,这样就够构成了完整的WHERE子句,执行查询的语句如下:withInfoQuerydobeginclose;sql.Clear;sql.Add(strsql+strsql1);open;ifEOFthenshowmessage('无该学生信息,请检查输入是否正确!');end; 将strsql和strsql1连接起来作为查询条件,就能输出满足条件的结果,如果结果集中没有数据,则弹出提示窗口。能够进行对关键字的模糊查询和精确查询。该部分主要在WHERE子句中使用LIKE语句配合通配符‘%’来实现的。例如查询学院关键字中包含计算机的所有学生信息,则WHERE子句可以写成如下格式: WHERESTUDENT.Academylike‘%计算机%’;这样用户只需要输入关键字中一部分即可完成查询操作,当然输入完整字段值也能正确输出结果。当用户输入有误或需要重新查询时,可以点击清空按钮,这时所有输入条件都将置为原始状态,用户可重新输入条件进行查询。对于表格中输出的结果,如果用户想获得学生更详细的资料,可以双击表格中该学生所在的记录那一栏,可以弹出该学生基本信息窗口。4.4.3辅助分析管理模块学生宿舍自动分配 当有大批新入学的学生时,这时就需要对他们进行分配宿舍,使用自动分配宿舍功能可以减少人工分配时繁重的工作量,提高工作效率。 在主菜单中点击宿舍管理,在下拉菜单中选中宿舍自动分配,其处理流程如下:首先从学生基本信息表(STUDENT)中通过查询选出有待分配宿舍的所有学生,使用的SQL语句如下:selectNumber,NameFromStudentwhereNumberNotin(selectnumberfromBuildinfowhereSign=1) 该处使用到了SELECT语句的嵌套查询,子查询中列出宿舍住宿情况表(Buildinfo)中所有分配了 宿舍的学生的学号,主查询中列出基本信息表中所有未分配宿舍的学生的学号和姓名。判断是否存在未分配的学生,即判断上述结果集中记录条数(recordcount)是否大于0,如果不大于0,则没有需要分配的学生,弹出如下提示信息:图4.11如果查询得到的记录条数大于0,则对学生分配宿舍。在分配宿舍时,根据记录条数决定要分配的床位数。这里用到了3个TADOquery对象,分别是MatchQuery、MatchQuery1和StuQuery;MatchQuery用来查询宿舍楼里的空床位,并按一定顺序排列,StuQuery用来查询未分配的学生的信息,该结果集中每条记录对应MatchQuery中相应记录号的空床位,MatchQuery1根据MatchQuery中的空床位将住宿情况表(Buildiinfo)中Sign字段值置为1,并将Number字段置为StuQuery中相应记录的Number字段值。实现流程如下: StuQuery查询未分配的学生的学号,姓名; MatchQuery查询宿舍楼中空床位; WhileStuQuery.EOFdo//根据未分配宿舍人数控制循环次数 Begin MatchQuery1更新住宿情况表(Buildiinfo)中床位信息; StuQuery.next; //取StuQuery结果集中下一条记录 MatchQuery.Next;//取MatchQuery结果集中下一条记录 End;分配完成后,程序将自动分配的学生的住宿情况输出到1个StringGrid表格中,用户可以从中查看分配情况。如图4.12所示图4.12宿舍分配情况学生宿舍手动调整 当学生分配好宿舍后,需要对其某个学生进行调整时,这时就可以使用宿舍调整功能,对学生住宿情况进行调整。界面和功能介绍主要界面如图4.13所示。图4.13 在调整学生宿舍前,先在输入学号一栏输入要调整学生的学号,点击查询,学生姓名以及当前住宿情况将显示在窗体的相应位置,在右边组合列表框中选中要调整到的楼号,宿舍号以及床位号。选择完毕,点击调整,即可对宿舍进行调整,调整完毕后学生当前宿舍信息显示为调整后的宿舍信息。具体实现 首先,用户必须输入需要调整的学生的学号,查询学生当前住宿情况,在确认输入无误的情况下,选择目标宿舍和床位。在点击调整按钮后,在该按钮事件中处理宿舍调整的过程如下:判断用户输入的学生的学号是否正确或者该学号的学生是否存在,而后再判断用户是否选择好目标床位,包括楼号和宿舍,如果输入或查询条件不存在,则提示用户确认输入。对选择的床位进行查询,判断该床位是否已住人(即Sign字段值是否为1),如果没住人,则在住宿情况表(Buildinfo)中将该床位的Sign字段值置为1,Number字段值置为要调整的学生的学号;如果该床位已住人,则弹出如下对话框,提示用户是否交换宿舍和床位。图4.14提示信息用户确定要交换床位后,则住宿情况表(Buildinfo)中将目标床位的Number字段值置为要调整的学生的学号,而将当前床位的Number字段值置为目标床位的学生的学号。实现该部分的SQL语句使用的是UPDATE语句: withADOQuery1dobeginclose;sql.Clear;sql.Add('updateBuildinfosetNumber='''+s

温馨提示

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

评论

0/150

提交评论