(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf_第1页
(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf_第2页
(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf_第3页
(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf_第4页
(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf_第5页
已阅读5页,还剩83页未读 继续免费阅读

(电力电子与电力传动专业论文)管理信息系统设计开发与安全性研究.pdf.pdf 免费下载

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

文档简介

a b s t r a c t g ux i s h a n g h a it i m es h i p p i n g ( s t s ) c o m p a n yi san e ws h i pe n t e r p r i s e i no r d e rt oi m p r o v ei t sm a n a g i n gl e v e l ,s t s i sg o i n gt ou s ec o m p u t e rd i d e dm a n a g i n g t h e nw ed e v e l o pas o f t w a r en a m e ds t sm i s t h i sp a p e rd i s c r i b ss t s m i sf u n c t i o na n dd i s c u s si n t e r n e ts e c u r i t y w h e nt h i sp r o j e c ti sb e i n gt oe n d ,is u m m a r i z es o m em e t h o dt oi m p r o v e d e v e l o p i n ge f f i c i e n c y t h ep r o j e c ti sat e a mp r o j e c ts os o f t w a r ec o n f i g u r a t i o nm a n a g e m e n t ( s c m ) i si m p o t a n t t h e p a p e ra l s od i s c u s ss o m e t h i n ga b o u ts c m m i s a tf i r s t ,t h ep a p e ri n t r o d u c ea l lt h ef u n c t i o na b o u ts t sm i s m a n ya c t u a ld a t ap r o v et h a tm i si sas u c c e s s f u l e x c e p tn o m a ls o f t w a r ed e v e l o pm e t h o ds u c ha sc o d ef o r m a t , u s ef u n c t i o na n do o pp r o g r a m i n g ,it r yt ou s e t e m p l a t et op r o g r a m w i t ht e m p l a t e sa n dc o m p i l e r sh e l p ,p r o g r a mc a nb em o r ee f f e c t i v e t e a mp r o g r a mi sm o r eh a r dt h a ns o l op r o g r a m s c mc a nt r a c ec o d eh i s t o r y , m a n a g ec o d es t o r a g ea n dc o n f i g p r o j e c td i r e c t o r y d a i l yb u i l dm e a n sr e l e a s ey o u rp r o j e c te v e r y d a y d a i l yb u i l dc a nf i n db u ga s e a r l ya sp o s s i b l e t h i sm a k e s o f t w a r es t r o n ge n o u g h k e yw o r d s :m i s ,s o f t w a r ed e v e l o p ,s c m ,d a i l yb u i l d 1 1 1 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。 尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过 的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。与我 一同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示了谢意。 研究生签名:醚 日期:塑 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印 件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和纸质 论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布( 包括 刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学研究生院办理。 研究生签名:歪鳖导师签名:日期:力蛇萏、f 塑二童堕堕 一一一 1 1 管理信息系统概述 1 1 1 管理信息系统的定义 第一章绪论 管理信息系统( m a n a g e m e n t i n f o r m a t i o ns y s t e m s 简称m i s ) 的概念起源很早。1 9 7 0 年。瓦尔特肯尼 万( w a l t e rt k e n n e v a n ) 给管理信息系统下了一个定义:“以书面或者口头的形式,在合适的时间向经 理、职员以及外界人员提供过去的、现在的、未来的有关企业内部及其环境的信息,以帮助他们进行决策”。 这是一个管理的概念,没有涉及计算机,随着历史不断进步,人们逐渐认识到,必须依赖计算机,才能提 供准确的信息支持决策。管理信息系统的创始人高登戴维斯( g o r d o nb d a v i s ) 给出了管理信息系统比 较完整的定义:“管理信息系统是一个利用计算机硬件和软件,手工作业,分析、计划、控制和决策模型, 以及数据库的用户一机器系统。他能提供信息,支持企业或组织的运行、管理和决策功能。”这个定义充 分说明了管理信息系统的目标、功能和组成。综上所述,管理信息系统是一个以人为主导,利用计算机硬 件、软件、网络通信设备以及其他办公设各,进行信息的收集、传输、加工、存储、更新和维护,以企业 战略竞优、提高效益和效率为目的,支持企业高层决策、中层控制、基层运作的集成化的人机系统。它是 - f 综合了管理科学、系统理论、信息科学的系统性的边缘学科。其概念可以用图l 表示。 管 理 息 墨下 统l 业务 信息 i系统 高级管理人员 ( 计划、决策) 中级管理人员 ( 控制、决策) 经理 支持 系统 经理 支持 系统 知识工作系统 职能人员 市场 予系统 中央数据库 生产 子系统 财务 子系统 其它 子系统 1 1 2 管理信息系统的结构 图1 管理信息系统概念田 从概念上分析,管理信息系统应该有畎下四部分组成:信息源,信息处理器信息用户和信息管理者, 它们之间的关系如图2 所示。 信息源是信息的生产地,信息处理器负担信息的传输、加工、保存等任务;信息熙户是信息的使用者, 它利用相应的信息进行决策;信息的管理者负责信息系统的设计和实现、运行和协调。 东南大学硕士学位论文 1 1 3 管理信息系统的基本功能 图2 m i s 的总体结构 管理信息系统是企业的子系统,它收集数据,并向管理人员提供信息,与管理人员一道在丝个企业中 起着反馈控制的作用。它主要具有下面几个功能: ( i ) 数据的采集和输入。 ( 2 ) 数据的传输。数据传输包括计算机系统内和系统外的传输,实质是数据通信。 ( 3 ) 信息的存储- 信息存储的概念比数据存储的概念广,主要问题是确定存储哪些信息,存多长时 间,以什么方式存储,经济上是否合算。这些问题需要根据系统的目标及要求来确定。 ( 4 ) 信息的加工。信息加工的范围很大,从简单查询、排序、归并到复杂的模型调试及预测。现代 信息系统在这方面的能力越来越强,在加工中使用了许多数学及运筹学的工具,涉及许多专门领域的知识, 如数学、运筹学、经济学、管理科学等。 ( 5 ) 信息的维护。保持信息处于合用状态叫信息维护。狭义上包括经常更新存储器中的数据,使数 据保持台用状态a 广义上包括系统建成后的全部数据管理工作。其主要目的在于保证信息的正确、及时、 安全和保密。 ( 6 ) 信息的使用t 信息的使用主要是高速度和高质量地为用户提供信息,进一步来讲是实现信息价 值的转化,提高工作效率,利用信息进行管理控制,辅助管理决策等。 1 t 4 管理信息系统的发展过程 管理信息系统的概念是不断发展的。最初许多倡议者将它设想成一个单个的高度一体化的系统,它能 处理所有的组织功能。随着时间推移,这种高度一体化的单个系统显得过于复杂,并难以实现。管理信息 系统的概念转向各子系统的联舍,按照总体计划、标准和程序,根据需要,开发和实现一个个子系统。这样 一个组织不是仅有一个包罗万象的大系统,而是一些相关的信息系统的集合。这些信息系统均属于管理信 息系统的范畴,但不是它的全部。这些相关系统主要有以下几种类型。 ( 1 ) 统计系统 统计系统所研究的内容是数量数据间表面的规律,应用统计可以把数据分为较相关的和较不相关的组 它一般不考虑数据内部的性质,统计的结果把数据转换为预信息,还没有成为信息,它既不能控制也不能预 测。因而它属于低级的管理信息系统。 ( 2 ) 数据更新系统 数据更新系统的典型代表是美国航空公司的s a b r e 预约订票系统。该系统于1 9 5 0 1 9 6 0 年间建成的。 它能分配美国任一航空线任一航班的飞机座位,但是在概念上s a b r e 系统是一个简单的数据更新系统。它 既不能反映空座位的票价,更不能显示以现在的售票速度何时能将所有的票金部售完,从而采取补救措施, 所以它没有预测和控制,不改变系统行为,因而也属于低级的管理信息系统。 ( 3 ) 状态报告系统 它也是反映系统状态的一种系统。可分为生产状态报告、服务状态报告和研究状态报告等系统。生产 状态报告系统的代表是i b m 公司的公用制造信息系统。该系统使计划调度加快,减少了库存。不过它仍然 是管理信息系统的初级形式,因为它没有预测也没有控制功能。 ( 4 ) 数据处理系统( d a t ap r o c e s s i n gs y s t e m s ,d p s ) 2 第一章绪论 有时又叫电子数据处理系统( e l e c t r o n i c sd a t ap r o c e s s i n gs y s t e m s ,e d p s ) ,也有叫业务处理系统 ( t r a r l s a c t i o nd a t af r o c e s s j n gs y s t e m s ,t p s ) 。它是支持企业运行层日常操作的主要系统。数据处理 系统用来处理日常业务和生产报告,它使日常的事务处理自动化,支持日常的运行工作熏点在于强调手工 作业的自动化,提高效率,节省入力。一般不能提供分析、计划和决策信息。 ( 5 ) 知识工作和办公自动化系统( k n o w l e d g ew o r ka n do f f i c ea u t o m a t i o ns y s t e m s ) 信息社会的到来使人们的工作方式发生了变化,由主要以体力工作的方式转到主要以脑力工作的方 式。知识工作成了未来企业的主要工作。知识工作系统( k w s ) 是支持知识工作者工作的系统,如计算机 辅助设计系统( c a d s ) 、计算机辅助教学系统( c a i s ) 等等。它们可以大大提高知识工作的效率缩短设 计时间,改善输出的知识产品的质量。办公自动化系统( o a s ) 是支持较低层次的脑力劳动者工作的系统 这些劳动者包括秘书、薄记员、办事员等。 ( 6 ) 决策支持系统d s s ( d e e i s i o ns u p p o r t i n gs y s t e m s ) 它是利用计算机分析和模型能力来对管理决策进行支持的系统,但不能代替人们的认识过程。d s s 分 为面向数据的d s s 和面向模型的d s s ,不过现在的决策支持系统一般都是既面向数据又面向模型的系统。 决箢支持系统应有较好的人机对话方式,一般包括一些模型用以产生决策信息。它充分利用计算机收集、 保存、筛选、分析数据的功能和模拟实际环境的能力,使用计算机产生各种方案的可行解,并自动淘汰劣解, 产生最优解,以帮助管理人员作出科学的台理的决策。现在的d s s 主要有主管支持系统( e x e c u t i v es u p p o r t s y s t e m s ,e s s ) 、群体决策支持系统( g r o u pd e c i s i o ns u p p o r ts y s t e m s ,g d s s ) 和智能决缀支持系统 ( i n t e l l i g e n td e c i s i o ns u p p o r ts y s t e m s ,i d s s ) 这几个重要的发展方向。 以上各种系统均是管理信息系统( m i s ) 的一部分而不是它的全部,管理信息系统可以说是这些系统 的集成。它们之间的关系可以表示成图3 。 图3 管理信息系统及其子系统关系圈 1 2 课题的背景、意义和内容 t 2 1 背景及意义 航运企业是我国交通运输业的重要组成部分,在我国的国民经济和对外贸易发展中占有举足轻重的地 位。全球经济复苏和中国外贸业务大幅增长使航运业发展迅速。目前,干散货运输已基本达到最高峰,而 集装箱运输高峰将会在不久后出现。据中国海运集团总裁李克麟介绍,中海集团现有的4 1 0 艘巨轮都已进 入全负荷运转,且陆续有新船下水。而各太造船商到2 0 0 7 年的订单都很饱满,他做航运业4 0 余年从未见 过如此兴旺的景象。最新统计显示,中国主要港口一季度的外贸货物吞吐量超过2 亿吨,同比增长1 1 4 。 东南大学硕士学位论文 而去年尽管受非典影响,全国主要港口贸易量猛增3 5 ,集装箱运输费率翻了一倍,油轮费率达到2 0 0 2 年平均水平的4 倍。航运指数费率暴涨也给相关上市公司的业绩带来了增长。己公布2 0 0 3 年年报的中海 发展、中远航运、宁波海运和南京水运的净利润分别比上年增长了7 1 7 l 、3 4 o i 、3 7 3 0 、2 5 4 5 , 而且净利润的增幅均超过了主营业务收入的增幅。 上海时代航运有限公司是由中国海运( 集团) 总公司和中国华能集团公司各出资5 0 组建的合资公司, 于2 0 0 1 年6 月开始营运。时代航运的经营范围是国内沿海及长江中下游各港间货物运输,水路货运代理, 船舶代理,国内贸易等。它是以近海及内河散货运输为主业的航运企业运行范围北到辽东半岛,南到广 东汕头,目前主要依托中海和华能这两大投资方开展电煤业务同时兼营其他散货运输。公司自组建以来, 一直保持着良好的业务增长势头,经营业绩迅猛发展,不断拓展潜在的电煤市场空间,逐步向煤炭运输和 供应为一体的综合物流业方向发展。2 0 0 3 年度内,公司实现主营业务收入3 5 6 6 9 万元,实现净利润2 6 0 4 万 元。现公司正积极准备上市,向国际一流的航运公司发展目标迈进。 航运企业管理的船舶众多且地域分散,需要对船舶进行实时调度和各种燃料、货物信息的及时处理, 信息收集加工困难。目前发达国家的航运业已经相当成熟,各大航运公司都开发建立了自己的航运管理信 息系统,以实现对复杂的货物运输方式的最大控制,减少船员人数,加快通信联系,规范业务流程,提高 航运效率和可靠性。目前时代航运拥有十几条大型货船,日常管理的工作量巨大,由于公司员工来自中海 和华能两大集团,人员分工尚不完善,管理体制亟待健全。为了提高安全生产水平,更好的利用现有人力 资源使企业能稳定健康的发展,公司自2 0 0 2 年开始致力于开发自己的管理信息系统。经过两年多的努 力,时代航运管理信息系统已经和公司管理融为一体,不仅管理了公司绝大部分资金流入流出,而且能生 成各类数据报表、曲线图形,同时提供了许多决策支持功能。公司通过该系统能准确,快速的获得第一手 资料。安技部在2 0 0 4 年开始全面使用管理信息系统后,已能对费用支出做出调控。例如,2 0 0 3 年公司自 有船舶天龙星费用超支约6 0 万元,而2 0 0 4 年仅超支4 万余元。在2 0 0 4 年下半年,国内煤炭市场持续看 涨,各大航运公司均出现运力极度短缺现象,为向华能集团总公司说明运力短缺的责任主要是由于货源不 到位、电厂卸货效率低下,并非公司经营管理不善,公司通过管理信息系统迅速统计出6 、7 、8 三个月份 的装卸两港等泊时间、总停时等数据,在谈判中争取了主动。同样是2 0 0 4 年下半年公司购买了载重4 1 万吨的船来缓解运力紧张问题,购买之前通过管理信息系统做出了大量效益测算,这些测算数据为买船提 供了很多参考依据。2 0 0 5 年公司准备再购买4 艘约4 万吨级轮船,定做2 艘7 万吨级轮船,其中4 万吨级 轮船每艘约2 0 0 0 万美元,定做船只每艘约2 5 亿元,合人民币约1 l 亿元,涉及如此大的投资,公司必须 谨慎对待。对每条船至少要做1 0 次以上的效益测算,从运行航线、运价、内部收益率等不同方面评估船 只创造的效益。效益测算将再次发挥重要作用。 在信息产业飞速发展的今天,公司也逐步开始实行异地办公。通过i n t e r n e t 访问公司内部数据库相对 比较危险,一个正确、安全的身份系统是实现异地办公的第一步。在实际中我们利用硬件令牌进行身份认 证,该令牌采用硬件内置的m d 5 算法来执行对称加密算法,密钥不需离开i k e y 离开的只是基于密钥的信 息,该方法价格低于生物测定法、但比单纯的密码更为安全。 目前我国软件业还远来实现产业化,面对企业改制、业务重组阶段、需求变化频繁等现象,要求软件 除了保证质量以外,还必须保证开发效率。论文研究的一些方法,经实践证明确实能在保证质量的前提下 提高开发效率。此外,论文对团队软件开发管理也做出了一些探讨,利用配置管理工具确保开发环境的配 置和源代码的管理,而自动构建则使项目稳步前进,解决了多人并行开发系统遇到的源码冲突、团队交流 不善、集成测试难以实施等问题。 1 2 2 内容 上一节提到,公司迫切需要自己的管理信息系统提高管理水平,因此对系统提出了以下功能要求: 安技部费用管理模块:公司安技部每年支出近4 千万元。对于这一部分费用的管理显得十分重要。船 上需要定期更换和修理甲板、轮机等部门使用的设备,定期购买船上人员和其他方面需要的物资,定期领 取润滑油,除此之外还有一些不定期的零星物料购买。这些物资的购买、领用都需要向公司提出申请。船 上将需要的物资的型号、数量、等信息提供给公司,公司安技部主管确定这些物资的供货单位和价格并审 4 第一章绪论 核,只有公司审核通过后的物资船上才能购买。购买后的收费单据交回公司入帐。对于申请和入帐,公司 要求数据录入必须方便,易于操作:整个申请和入帐的审核过程的流程很复杂,准备采用程序来控制整个 审核流程,避免由于人为疏忽造成差错。对每一笔费用的审核和取消都记录在数据库中备查。对于已发生 的费用要进行各种统计,有一年中各个月的分费用项目统计或分各条船统计;有对每一个细目在一段时间 内的分类统计;还有以曲线图或者直方图方式反映计划费用与实际费用的关系。通过这些查询能随时了解 实际费用的使用情况。 航运部统计模块:公司航运部是核心部门,最关心的是船舶在港的等待时间长短,等待时间长则表示 公司营运效率不高。因此航运部需要做大量关于时间的统计,包括每个月分各个货主的装、卸两港停时查 询:统计航次的营运效率时,需要把起始港和装货港不在同一个港口的航次通过折算调整为起始港和装货 港在同一港口的航线,以此比较各个电厂的营运周转天。航运部要求对各个电厂的装卸停时和航行时间能 用折线图方式进行横纵对比,直观的显示出每个电厂的装、卸货效率,找到公司盈亏原因。由于等泊造成 公司的损失,航运部希望随时可以看到任何时候的船舶运行状况,用各种不同的颜色来表示不同的运行时 间段,直观的反应一段时期内的船舶各运行时间的比例。 船舶定位预测模块:为了方便公司领导对船舶进行调度和管理,公司希望能以图形形式表现出各船舶 的位置,包括海岸线,航线,港口等地理特征都可以按真实的地图样式显示。该模块将作为调度会议的参 考和公司形象工程。 船效益测算模块:随着公司业务扩大,需要购买新的船只,公司要对购买船只进行效益测算。公司希 望我们能提供方法,根据不同的参数设定,预测出船在营运年限之内的效益,或者根据条件推算出合理的 运价为公司的决策提供支持。 船舶资料证书、消防证书、图书资料管理模块:船舶资料证书都有效期,证书过期后船会被罚款。公 司要求对每艘船的资料证书在过期前一个月都有提示,以便公司及时对快到期的证书重新申请。 安全的身份认证:由于公司有安全规定,第一,所有资料都是公司的资产,在数据的传输过程中需要 加密。第二,所有登陆系统的个人必须经过身份验证,并且每次登陆必须有记录。公司希望在满足上述安 全条件的情况下,让出差在外的人员也能办公,这对远程接入、身份认证等安全性提出了较高的要求。 由于工作量大,人手较少,加上需求的不断变化,如果不采取有效的措施,软件开发的效率和质量都 难以得到保证,所以除了需要完成上述内容之外,论文还研究了一些软件开发的方法,在保证开发质量的 情况下尽量提高开发效率,减少重复代码,把程序员从繁琐的数据库操作、界面设计等工作中解放出来, 专注于实现用户的要求。此外,该系统是多人合作开发,对源码的配置管理及产品的发布也变得比较复杂, 论文在这方面也做了研究,并且取得了较好得效果。 5 东南大学硕士学位论文 第二章软件开发方法 2 1 软件开发必须遵循规范 当前软件的复杂程度已经远远超出一个人能力,软件靠个人手工作坊的方式来发展几乎是不可能的, 任何一个稍具规模的商业软件,都是由一个团队共同开发完成的。以时代航运管理信息项目来说,经历了 两年多,先后有8 人参加开发,人员的流动和每个人编写程序的风格不同,给项目开发带来了一定难度。 因此有必要在系统开发之前都需要定胄8 一个开发约定和规则,这样有利于项目的整体风格统一、代码维护 和扩展。 风格统一是规范团队开发的首要条件。每个人都有自己的开发习惯,如果一个团队项目中混杂着2 3 种不同风格的代码,那么这个项目的维护困难就大大增加。举个例子,对于变量的命名,有人习惯用b 开 头表示b o o l 型变量,而有人习惯用b 表示b y t e 型变量,如果这两种风格同时存在于一个项目中,对于后 期维护的人员将增加很多工作量,因为他无法从变量名得知变量的具体类型。为此我们专门编写了编程 风格约定的文档,对开发中常见的变量名称,对象类型规定了前缀;对常见的窗体、控件规定了大小; 还有一些常见的功能( 排序和翻页) 也做出了规定,保证每个成员写出程序和做出的界面都有一致的风格。 2 2 基础代码开发 为了提高编程的速度和质量,在早期的软件开发中都涉及“模块化”的概念,提倡利用成熟的模块进 行开发而不要“重新发明轮子”,现代开发中更是以面向对象为理念,提倡对象复用,提倡继承和派生。 所有这些方法,都是为了提高开发速度和质量,在尽可能短的时间里写出质量尽可能高的代码。在时代航 运管理信息系统中,我们自己编写了些代码对数据库操作、控件外观调拯及数据加载进行功能封装,在 随后的系统开发中大量复用这些代码,极大的提高了开发效率。 2 2 1 数据库功能的封装 随着需求的不断增加,需要录入的基础数据越来越多。对每一个类型的基础数据,都需纂有与之对应 的数据维护界面,这个界面包括新建数据、修改数据、删除数据、显示数据等功能。对于这种功能的开发, v b 和d e l p h i 等主流数据库开发工具都提供了“数据绑定”的开发方式,这种开发方式只需甍跟随数据向 导步一步往下走,最终向导会完成个功能完整的数据录入界面。数据绑定可以说是快速开发数据库程 序的捷径,但是在实践中发现,绑定存在以下问题: 没有功能封装一生成的数据维护界面垃圾代码很多: 绑定不稳定一程序有时候运行正常有时候无法显示数据; 绑定不灵活一对于特殊需求。绑定很难完成。例如,“船船舶资料证书管理模块”中的到期证书要 求用红色显示;“完成”“未完成”在数据库中用10 ”表示而在用户界面上应该显示汉字,绑 定在实现这些特殊要求时比不用绑定麻烦。 基于上面这些缺点,项目没有使用绑定,而是另外开发了一套数据录入程序,把对数据库的操作都封 装成函数,在窗体中宜接调用这些函数完成对数据库的操作。 打开记录集:a d o 的r e c o r d s e t 对象对数据库的封装已经做的很好但实际使用中还是发现有重复编 写代码的地方,例如每次打开一个记录集都需要判断是否是空记录集( 即游标指向记录集末端,e o f 和 b o f 属性为t r u e ) ,打开记录集时类型往往都是指定为只读,游标一般都是前向游标。所以我们对打开记 录集使用一个函数封装,打开记录集时返回t r u e ,记录集为空则返回f a l s e ,采取如下调用方式: i f r e c o p e n r e a d ( s t r s q l ,r s ) t h e n 6 第二章软件开发方法 ”d os o m e t h i n g e n d i f 比起一般的打开记录集方式: i f c n s t a t e = a d s t a t e c i o s e dt h e nc r l o p e ns t r c o n c n c u r s o r l o c a t i o n = a d u s e c l i e n t i s o p e ns t r s q l ,c n ,a d o p e n f o r w a r d o n l y , a d l o c k r e a d o n l y , a d c m d t e x t i f n o t ( r s e o fa n dr s b o f ) t h e n 1 3 0s o m e t h i n g e n d i f 能少写很多代码,提高开发效率。 保存和显示:由于不能采用绑定,数据库中的字段和界面上的数据显示控件必须一一对应,这给编写 程序时带来很大的不便。一个普通的数据表约有1 0 一1 5 个字段,稍微复杂一点的表有5 0 6 0 个字段,如果 在程序中用某种数据结构把字段名和对应值一一对应起来,单就编写程序工作量来看就十分庞大,如果再 加上届期的宇段修改、增加等,程序维护会变得十分园难。我们采取了一个比较巧妙的方法来决定字段和 值的对应方式,首先规定,文本、数值的显示使用t e x t b o x 控件,日期数据使用m a s k e d i t 控件,涉及外键 的编码采用c o m b o x 控件,这些控件在命名时采用规定前缀+ 字段名的方式,如:物修费录入模块中的一 个t e x t b o x 控件显示数量,则这个控件被命名为t x t m rs p a r e _ p a r t sn u m b e r ,其中t x t 表示此控件是t e x t b o x , m rs p a r ep a r t s _ n u m b e r 是数量这个字段的字段名。遍历数据窗体上的所有控件,利用控件名称中包含的 字段名和控件本身的值来一一对应,利用a d o 的r e c o r d s e t 对象,保存时把数据写入相应字段,显示时把 数据显示到相应控件。这种做法避免了在程序中写硬码来做到一一对应的方式,让程序员从繁琐的代码中 解放出来,而且字段增加或者修改时,只要不是关键字,代码几乎不用修改,直接在界面上画出控件并正 确命名即可。 删除:删除数据常常和数据显示联系在一起。删除时利用l i s t v i e w 控件的每一个i t e m 都有k e y 的特点, 把关键字对应的值存放在i t e m 的k e y 中,对l i s t v i e w 中所有选中的i t e m ,拆分保存在k e y 中的关键字, 拼接成相应的s q l 语句进行删除,删除数据后,界面上的数据列表也应该做相应的测除,同时要把删除人 的信息记录到日志表中。 2 2 2 控件封装 控件的封装也是为了减少重复代码的编写,主要是对数据显示控件l i s t v i e w 、m s f l e x g r i d 和c o m b o x 的封装。 对l i s t v i e w 来说,v b 默认的显示属性是国标,可编辑,没有网格,不能多选等等,而在项目实际使 用中需要l i s t v i e w 以报表形式显示,不可编辑,加上网格,并且可以多选等等,可以说v b 给的默认属性 完全不符合项目需要。为此,编写了函数设置好l i s t v i e w 的所有属性,并且利用数组为l i s t v i e w 添加列头 和各个i t e m ,使操作l i s t v i e w 变得十分容易。项目中常常使用到统计合计、排序等功能,这些操作都被封 装成函数,只要调用这些函数,就能很容易完成对表格的横向及纵向求和,快速排序等等。 因为l i s t v i e w 编辑功能十分不完善,所以对于表格式的输入,项目中使用m s f l e x g r i d 配合t e x t b o x 进 行编辑,同l i s t v i e w 一样,对m s f l e x g r i d 也封装了求和、排序等功能函数。 c o m b o x 主要用于显示带有外键的编码,项目中对c o m b o x 的使用很多也很灵活,例如:在航运部的程 序中,有很多界面是包含船、航次、港口、码头4 个c o m b o x 的,点击船加载船跑过的所有航次,点击航 次加敷该航次对应的所有港口,点击港口再如载港口对应的所有码头。v b 中的d b c o m b o x 依靠数据绑定 是无法完成这些要求的,所以对c o m b o x 控件的操作也做了大量封装,c o m b o x 可以根据s q l 语句动态添 加在数据库中的对应项目,也可以在操作对动态改变列袭中的各项。在c o m b o x 中查找数据时使用了a p i 函数而非循环比较,也极大的提高了查找效率。 东南大学硕士学位论文 2 2 3 条件判断功能封装 除了在船舶定位预测模块中使用m o 进行二次开发外,项目没有使用任何第三方a c t i v e x 控件。原因 有三一是第三方控件可能需要付费,对项目来说是不切实际的;二是第三方控件可能不稳定,对于控件 不稳定造成系统的不稳定,只能寄希望于控件开发者升级版本,这样将严重影响项目进度;三是第三方控 件会给系统打包、安装等带来困难。基于以上三个方面考虑,我们编写了一些条件判断用于保证数据输入 的正确性,在实践中取得了很好的效果。 在本章第一节提到t e x t b o x 用于显示文本和数据,输入时为确保用户输入的正确性,需要在输入时加 以判断,判断的方式分为防御型判断和攻击型判断”。所谓防御型判断就是在用户输入完成后进行判断, 设想用户在录入界面输入完数据后才被告知“x x 字段必须是数字”,这种不友好的方式会给用户留下不友 好的印象a 而攻击型判断则是在用户输入数据时就进行判断,如果不满足条件则不能输入,这种方式最简 单明了,从根本上杜绝了错误的输入,而且给用户的印象也比较友好。项目中采用i s c h a r 、t s n u m b e r 、 v a l i d a t e d o t 等函数对t e x t b o x 的输入进行控制,只要在t e x t b o x 的k e y p r e s s 事件中加入相应函数,就能控 制t e x t b o x 只接受字符、数字或者小数的输入。 m a s k e d i t 主要用于输入时间,由于时间型数据中有特殊字符“”和“:”,并且对年月日各位数字限定 也不同,所以不能在k e y p r e s s 中判断输入。同时项目中大量存在启用日期、停用日期,装货时间、装完时 间等需要有先后顺序保证的时间。项目中采用v a l i d a t e d a t e ,m s k n u l l ,v a l i d a t e t o w d a t e 等函数,在m a s k e d i t 控件的l o s t f o c u s 事件中写入相应函数,当m a s k e d i t 失去焦点时,函数会判断输入的时间或时间顺序是否 正确,对不正确的时间给出相应的提示。 2 3 使用模板编程 虽然有上一节提到的完整数据库、控件外观调整及数据加载的功能封装,代码得到大量简化,但开发 过程中仍然有不少重复劳动要做。一般实现一个密体要经过以下工作: 添加一个空白窗体,调整窗体大小和属性: 根据需求文档,在窗体上画出数据录入控件,数据显示控件和“新建”、“删除”、“保存”、“返回”、 “刷新”五个按钮,按编程规范中的规定命名并调整大小和摆放位置。数据显示控件和按 钮的位置摆放基本都差不多,数据录入控件要根据具体情况调整; 在代码页增加模块级变量,因为都是普通数据录入界亟,模块级变量大同小异; 为每个按钮的单击事件添加已经封装好的数据库操作功能,为l i s t v i e w 增加右键快捷菜单并且让 它支持键盘删除,为显示船、港口等下拉列表增加数据 根据具体要求,为窗体增加功能。 在开发了十几个类似的窗体后,我发现这样一些现象: 窗体大小和属性都一样,按钮的大小、位置、名字都一样,但不奉的是它们都不是v b 的默认属 性,每次必须手工调整到合适的大小; 每个按钮的事件代码几乎相同,不同的地方只有关键字长度改变,非空字段未填入值时程序的提 示信息,然而所有这些内容每次都要输入一遍; 不能把所有数据录入界面做一个通用的数据录入界面。因为需求在不断变化,通用录入界面类似 于绑定,不够灵活一但需求发生变化,程序修改将非常困难。 如何减少这些繁琐的劳动,但是又不失灵活性呢? 这就涉及到“窗体模板”的概念。在v b 的i d e 中, 选择“添加窗体”时,v b 会弹出一个对话框供用户选择窗体,其中包括最普通的空白窗体,数据向导窗 体,对话框窗体等。除空白窗体外,所有窗体都包含一些框架代码和详细的注释,程序员只需要在这些窗 体代码的基础上稍傲增加,就能开发出风格统一的界面。v b 允许程序员自己定义模板,于是我把在项目 中经常会使用到的数据录入窗体改成模板窗体加入到v b 的窗体模板库中,具体方法如下: 根据编程规范,在1 0 2 4 x 7 6 8 的分辨率下绘制一个窗体,长11 0 1 0 象素,宽7 8 0 0 象素,并且 8 望三兰鳖生茎茎查鲨一 把窗体起始位置属性设置成屏幕中央,最大化按钮设置为不可用 绘制一个l i s t v i e w 控件,把它的名字命名为l v w ,并且给这个l i s t v i e w 控件添加一个快捷菜单, 在快捷菜单上增加删除功能。 在窗体底部绘制五个按钮,依次是“刷新”、“新建”、“删除”、“保存”、“返回”并且把这些按钮 的名字按规范命名好,排列在窗体底部。 在代码中添加通用的模块级变量,这些变量是b l n n e w ( 新建标志) ,i n t m s g ( 关闭窗体时是否弹出 提示标志) ,m s t r t a b l e n a m e ( 表名称) 等,并且给这些变量加上注释。这些变量是每个数据录入窗 体都必须的。在模块级变量的下方加上醒目注释,提示程序员把窗体的其他模块变量加到下方, 并且命名不要和上面已有的模块变量命名冲突。 添加数据库相关功能代码的骨架,比如删除,在项目中使用d e l e l e r e e o r d s 2 ( ) 函数进行删除,该 函数说明如下; 十+ 十+ + + + 十十+ + + + + + + 十+ + + + + + + + + + + + + + + + 十 1 函数名:d e l e t e r e c o r d s 2 ”输 入:b y v a lf r m ( f o r m ) 数据录入窗体 ” :b y v a ll v x v ( l i s t v i e w )一l i s v i e w 控件( 每一个i t e m 必须包含k e y ) :b y v a ls t r t a b ( s t r i n g ) 需要删除的表名 w :b y v a lv a r f i e l d ( v a r i a n t ) 关键字段的数组集合 :b y v mv a r v a l u e l t e m l v a r i a n t ) 关键字段的长度集合,如a r r a y ( 3 ,6 ) 这样的类型 + + 这个值与上面的v a r f i e l d 对应,v a r f i e l d 有几个值,这个地方就有几个值 :o p t i o n , a tb y v a li n t s t a r t p o s i t i o n ( i n t e g e r = 2 ) 一从哪个位置开始是有效的k e y ,默认是2 ”+ 所谓有效的k e y 指的是除去l i s t v i e w 的i t e m 的k e y 的前面字母之后的值( 也即关 一 键字的编码组合) 。例如关键字为”k 0 0 1 2 0 0 4 0 1 ”,则应该填2 ,表示去掉前面的”k ” ”输 出:( b o o l e a n ) 删除成功,返回t r u e ,失败返回f a l s e + 功能描述:根据l i s t v i e w 的选中项目来删除。可以一次删除多条记录,删除记录的同时移除i i s t v i e w 上 对应的i t e m ”调用示例: i f d e l e t e r e c o r d s 2 ( m e ,l w ,”h y _ s h i p ”,a r r a y ( ”s h i p _ c o d e ”) a r r a y ( 3 ) ) t h e n ”作 者:y u b i n g q + 日期: _ + 修改人:w i l d ( 仅做描述) ”日期:2 0 0 4 年0 7 月2 6 日 + 版本:v 1 0 + + + + 十十 + + + + + 十+ + + + + 十 + + + 十+ + + + + + + t + + + + p u b l i cf u n c t i o nd e | e t e r e c o r d s 2 ( b y v a lf r ma sf o r m ,b y v a ll w va sl i s t x i e w , b y v a ls t r t a ba ss t r i n g ,b y v a l v a r f i e l da sv a r i a n t ,b y v a lv a r v a l u e l t e ma sv a r i a n t , o p t i o n a lb y v a li n t s t a r t p o s i t i o na si n t e g e r = 2 ) a sb o o l e a n 如果按照正常编写程序的做法,应该手工敲入: i f d e l e t e r e c o r d s 2 ( m e ,l v w , m s t r t a b l e n a m e ,v a r k e y f i e l d ,a r r a y ( 3 ,6 ) ) t h e n 实现显示下一记录的代码 而在模板中,这行代码已经写成: i f d e l e t e r e c o r d s 2 ( m e , l v w , m s t r t a b l e n a m e ,v a r k e y f i e l d ,a r r a y ( 关键字长度) ) t h e n 编程时只需要在a r r a y 后面的括号内填入界面上要处理的表的关键字段长度即可,今后利用模板开发, 只需要敲入3 , 6 等数据即可,而整行代码一共是6 5 个字符,可以少敲打键盘6 0 次,显然能够从减少编码 量的角度提高开发效率。其它功能代码也与之类似,例如显示和刷新函数,修改的地方主要是查询语句, 其余地方都差不多,只要用醒目注释提示程序员在合适的地方键入查询语句代码即可。 把这些关键部分需要填写的程序一一写入窗体,把窗体保存为“简单数据录入f n i l ”,然后把这个窗体 c o p y 到v b 9 8 t e m p l a t e f o r m s 的文件夹下,这个窗体就能作为模板文件被引用了。v b 的i d e 不会对模板 9 东南大学硕士学位论文 文件做出“覆盖”操作,只要是从模板文件夹下添加的窗体,在第一次保存时v b 都会提示程序员重新使 用一个名字,这样能保证模板程序不会被程序员误修改。选择添加窗体,再选择“简单数据录入”,刚才 定制的模板窗体就被添加到工程中,稍做修改就能完成数据操作功能。 与原来从空白窗体开始创建一个数据操作窗体相比,模板省略了几个繁琐步骤: 窗体的属性,起始位置,大小不需要再次调整; 按钮的大小,位置不用再次调整; 大量繁琐代码不用再次编写,例如:支持键盘删除、支持右键弹出快捷菜单删除等。 简化了大量代码的键入,大多数功能只需要填入字段名或者字段名长度即可。模板窗体经过多次测试, 几乎可以保证对数据操作这部分内容没有缺陷,因此套用此模板写出的代码质量较高,不易出错。 利用模板开发和“拷贝一粘贴”开发有一定区别,主要体现在: “拷贝一粘贴”只能对代码和控件操作,不能拷贝整个窗体,因为项目中不能存在两个同名的窗体。 这样必须对窗体的属性重新设置一遍。而添加模板时v b 会自动给模板文件一个新名字( f o r m l 。f o r m 2 等 等) ,减少窗体属性设置这一步。 “拷贝一粘贴”的代码是已经通过编译的代码,修改这些代码难免会出现遗漏的情况,遗漏的地方编

温馨提示

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

评论

0/150

提交评论