软件开发与定制

2024-06-26

软件开发与定制(共8篇)

软件开发与定制 篇1

协议编号:

软件定制开发协议

项目名称:

委托方(甲方):开发方(乙方):

签订日期:年

一、协议标的甲方同意委托乙方开发项目。乙方愿意承接甲方上述开发项目,并保证按时、按质地完成开发任务。

软件的具体需求见后附件。

二、开发周期及有效期

1、软件项目的开发周期为个月。

2、协议有效期限:年月日至年月日。

三、双方责任

1、甲方负责提出信息管理系统的用户具体需求,并在系统开发完成后,及时组织相关人员做软件的测试、回馈测试信息、最终验收。

2、乙方负责详细需求调查、设计、开发、调试、培训、技术服务等,保证按照甲方提出的用户需求按时、按质地完成开发任务。在项目开发完成后,程序源代码使用权以及相关的技术文件完整地交给甲方。

3、为使项目开发后能更好地满足用户的需要并方便今后的维护等,甲方同时参加系统的总体设计,也可对开发工作提出建议,必要时与乙方共同对方案设计和要求进行修改。

4、甲方为乙方调查、设计、测试、安装提供必要的条件,以满足开发的需要。

5、甲方在协议期内发生需求变更较大,引起协议中乙方设计开发内容调整时,双方对变更内容进行协商,协同解决,并形成备忘录。

6、此项目作为甲方开发的项目,软件著作版权归甲方所有,乙方不得利用此次项目开发设计程序申请其他专题立项,或给与第三方使用。甲方违反本协议约定的软件使用许可限制,乙方可以立即终止使用许可,并有权要求甲方赔偿因甲方违反许可限制而给乙方造成的全部损失。

四、开发费用及付款方式

1、本项目的总开发费用为(人民币大写)元整(人民币元)。

2、甲方在软件投入使用后的日内,一次性支付给乙方项目全款。

五、验收

由甲乙双方指派相关人员对软件进行应用验收。

六、售后服务支持

1、在系统验收合格后,乙方对所开发的应用系统提供三年免费的售后服务。

2、售后服务内容包括软件缺陷、故障及针对查询表方面软件功能的部分修改和完善等,用户因工作需要要求对部分功能作小范围改动时,乙方免费给予完成。

3、在售后服务期内,乙方保证在出现应用系统故障时应及时、积极响应,遇有特殊情况双方协商。甲方享有对于该产品的“一对一”售后服务,包括电话售后咨询、即时通讯(QQ、msn)、远程协助(含安装调试和使用难点指导)、电子邮件等。

4、特殊需求服务:指超出上述第一至第三项描述的服务,包括但不限于上门安装、上门培训。此类服务因不属于乙方标准服务并由甲方发起,故需要甲乙双方协商确定方式和费用后执行。

七、培训

用户培训:乙方在系统测试或者试运行期间在甲方办公地点,为用户的操作做集中培训,部分个别现场辅导,远程演示培训。

八、保密责任

1、甲、乙双方未经对方书面同意,不得把协议、协议条款以及以各方名义提供的任何规范、方案、图纸等资料向双方以外的其他第三方泄露,即使是对双方的雇佣人员也应在对外保密的前提下提供,并且也只限于为履行协议所需的范围;

2、乙方向甲方提供的光盘、磁带或其它软体媒介体,或与协议有关的价格、文档、技术资料,无论是否是商业机密,都应一并视作保密信息,不得向第三方其他任何人泄露,即使是对雇佣人员也应在对外保密的前提下提供,并且也只限于为履行协议所需的范围。

九、免责条款

1、乙方不能保证软件没有任何的瑕疵,但是乙方会尽可能的减少或避免程序中的错误,对于已出现的错误及时更正,或对软件进行升级,并对甲方提供及时和必要的服务。在任何情况下,乙方及其特许人的责任将不超过本协议第四项的开发费用。

2、甲方必须按软件规定的方法使用本软件,疑问之处请联系乙方。因甲方操作不当或者提交非法数据等造成的损失,如数据丢失或错误等,乙方不承担责任,但乙方会尽可能的完善程序的健壮性。

3、对于甲方因许可软件遗失、被盗、被误用或被擅自修改、计算机设备故障、操作失误等情况造成的损失,或不可违的灾害(如地震等)、计算机掉电、硬盘损坏、计算机病毒等造成的损失或错误,乙方不承担责任。

4、甲乙双方都已经认真阅读以上免责条款并接受其约定。

十、第三方软件

乙方依据甲方的要求或双方的约定,向甲方提供的乙方开发的软件产品之外的第三方产品的使用许可、技术指标及相关服务,甲方应以第三方在其包装中提供针对最终用户的许可使用协议和用户手册为准或与第三方单独签订相关协议。乙方不对第三方软件承担任何责任,除非乙方与第三方就此有特殊约定。

十一、不可抗力

1、如协议双方中任何一方由于不可抗力,如:地震、水灾、台风、战争和其他双方都认为的不可抗力原因而无法按期履行协议,则协议执行的时间由于上述时间的发生做相应延期。

2、受影响方应尽快将所发生的不可抗力事故的情况以电话或传真通知另一方,并在不可抗力发生个工作日内尽快用传真和挂号信将有关权威机构出具的证明文件提交另一方确认。

3、当不可抗力事故终止或事故消除后,受阻方应尽快用传真或电传通知对方关于不可抗力形势的解除并以挂号信加以确认,并继续履行协议。

4、如果不可抗力阻碍协议的履行超过天,双方就协议的进一步履行问题进行讨论并达成一致意见。

十二、违约责任

本协议一经双方签章,即发生法律效力,双方必须严格遵守,如有一方违约,违约方必须承担违约责任并赔偿对方因此而遭受的全部损失。

十三、争议解决

凡由本协议引起的或与解释、执行本协议有关的任何争议,双方应首先通过友好协商或调解解决。协商或调解不成,双方同意将争议提交当地仲裁委员会仲裁。

十四、其他

双方签字、盖章即日生效。本协议一式两份,甲乙双方各执一份。

甲方(盖章):

签 字:

日乙方(盖章):签 字: 年月月日

软件开发与定制 篇2

近年来,我国高校已进入一个高速发展时期,随着高校办学规模的不断扩展、招生规模的逐年扩大,就业形势也日趋严峻。因此,开发设计一个符合高校专业设置特色的,专门为广大考生和毕业生服务的,能够及时地沟通考生和学校、毕业生和用人单位信息的,高质量的招生就业动态网站信息管理系统,可以进一步加大学校的对外宣传力度,提高学校的社会影响力和知名度,吸引更多的优秀考生报考,提高生源质量;促进学科建设和调整,提高人才培养的层次和质量,实现毕业生最大限度的就业。

本文对动态网站技术ASP进行分析,并使用该技术作为开发工具,用Access对后台数据库进行管理。结合本人的工作经验和计算机专业知识,用软件工程的思想,设计开发一个具有实用价值、可实现动态模块定制和生成功能的高校招生就业网站。在文章最后完成了具体的测试工作,实现了相关功能。

1 网站系统总体设计

1.1 网站管理系统框架设计

本网站共分为两个系统:前台管理系统和后台管理系统,其功能模块划分如图一所示。

如图二所示,前台管理系统主要是为用户提供人机交互界面,包括招生信息、就业信息、求职招聘等功能模块的链接与实现,用户可以方便、简单地查看网站发布的信息。

如图三所示,后台管理系统主要提供了个人信息、企业信息、信息管理与发布、在线答疑、在线调查等功能,它是系统与管理员之间的功能接口。

1.2 数据库设计

数据库设计包括逻辑结构和物理结构的设计。逻辑结构设计合理会较大地提高数据库的性能,增强数据库的可维护性;物理设计是数据库对象的存储方式,即如何为数据库对象分配存储空间。设计数据库是整个系统设计的核心,因此设计数据库要力求逻辑关系简洁、优化。本网站的数据库包括毕业生信息表、用人单位信息表、管理员信息表、网站信息表、网站栏目表等表格,下面仅介绍几个主要的表结构。

(1)网站信息表(表名:news)

此表用来存放网站各栏目的浏览信息,表结构如表一所示:

(2)管理员信息表(表名:admin)

此表存放系统管理员信息,表结构如表二所示:

(3)网站栏目表(表名:type)

此表用来存放网站所有的栏目表,表结构如表三所示:

2 网站栏目动态设置功能设计

本网站的内容是由很多不同的栏目信息组成的,可以发现这些信息的共同特征,就是都由标题、内容、发表时间、发表人以及若干张图片或可供下载的附件等内容组成。我们可以将这些共同的内容抽取,在后台管理系统中实现动态地设置相关网站栏目的功能,从而做到一次设计反复使用的效果。

对网站栏目进行动态设置是网站后台管理系统的主要内容之一。为了适应网站不断更新的需求,将栏目动态设置分成栏目类别管理和栏目内容管理两类。

首先分析栏目类别,其主要功能是对网站显示信息的分类管理,它包括添加栏目、删除栏目、修改栏目信息以及创建下级栏目,如图四所示。

进一步分析会发现栏目类别的数据结构较为复杂,上级栏目下面可能带若干子栏目,如招生计划栏目下面又分为高招招生计划、五年制招生计划、对口招生计划等,查询栏目下分为毕业生派遣查询和考生录取查询等。更进一步分析,会发现栏目类别是一树形结构。

因此在设计数据库时,保存栏目类别的表为树形结构表。采用此结构理论上可以存放任意多级别的栏目信息,在实际使用中,考虑到网站访问者的使用习惯和网站操作的复杂程度等因素,通常级别不超过三级。

然后分析栏目内容,栏目内容的主要功能是对各栏目类别所包含的信息进行管理,包括添加栏目内容、删除栏目内容以及编辑相关栏目内容,如图五所示。

进一步分析会发现,不同栏目类别下的栏目内容虽然各不相同,但其都具有一共同特征:由标题、发表日期、内容、图片、附件等信息组成。

前台页面实现时,文件readnews.asp用来处理具体栏目内容页面信息,该页面初始化时必须传入当前栏目内容的主码News Id,页面即可自动初始化当前内容的标题、发表时间等信息,同时通过外码Type Id,即可知道和初始化页面的栏目类别相关信息。如果需要新增栏目,只需在type表中新增即可。从而实现了模块的动态设置。

3 网站栏目动态设置功能测试

3.1 添加新栏目操作测试

在“添加”总栏旁的“总栏注释”文本框内填入新栏目名称和相关注释说明,在“排列顺序”文本框内填入新栏目的排序号,点击“添加”按钮,执行typemanage.asp文件,在该文件中首先判断用户是否是管理员,如果不是管理员则不允许进行此项操作,并记录相关文本框信息,然后调用typeset.asp文件,并执行添加动作。在typeset.asp文件中,依次对新添加栏目名称、注释和顺序号进行判断,如果有重复,则重新修改;如果没有重复,则向后台数据库type表添加新记录,按typeid进行排序。测试结果如图六所示:

3.2 删除相关栏目测试

如果想删除某个栏目,点击该栏目名称的右侧“删除”按钮,执行typemanage.asp文件,在该文件中首先判断用户是否是管理员,如果不是管理员则不允许进行此项操作,记录相关文本框信息,然后调用typekill.asp文件。该文件从type数据表中提取所要删除的栏目信息,如果确认删除,则调用typekillok asp文件,从type数据表中删除该栏目信息。测试结果如图七所示:

3.3 修改栏目信息测试

如果要修改某栏目信息,可以在“总栏注释”框内直接修改栏目名称和相关名称注释,在“排列顺序”文本框内修改排序号,点击“保存”按钮,程序调用typemanage.asp文件,在该文件中首先判断用户是否是管理员,如果不是管理员则不允许进行此项操作,记录相关文本框信息,然后调用typeset.asp文件,并执行更新动作。在typeset.asp文件中,依次对修改后的栏目名称、注释和顺序号进行判断,如果有重复,则重新修改;如果没有重复,则向后台数据库type表更新相关记录,并按typeid进行排序。测试结果如图八所示。

4 结束语

本文以安徽电子信息职业技术学院招生就业网站为真实案例背景,通过通用的网站构建框架和ASP技术对本系统进行了设计,并且实现了动态设置网站模块的功能,达到了一次设计反复使用的效果。经过测试,本系统各项功能运行正常,基本符合招生就业信息化建设的要求。目前,该系统已经投入使用且运行稳定,达到了预期目标。

参考文献

[1]郭瑞军,李杰,初晓璐.ASP数据库开发实例精粹[M].北京:电子工业出版社,2005.

[2]王海峰.高校招生网站存在的现实意义[J].教书育人:高教论坛,2010,(02):7-9.

[3]张培芝.“高职学院校园网站”的设计与开发[D].上海:华东师范大学,2010.

[4]许春艳.基于ASP技术的高职示范院校网站的设计与实现[D].长春:吉林大学,2008.

[5]肖玉刚.高校毕业生就业网站的设计与实现[D].济南:山东大学,2009.

[6]伍孝金,郑江波.基于ASP的招生就业网站信息管理系统的设计[J].计算机工程与设计,2006,(11):2066-2069.

[7]周兴华,王敬栋.ASP+Access数据库开发与实例[M].北京:清华大学出版社,2006.

套装软件“阻击”定制软件 篇3

是选用定制软件还是套装软

CIO们对于这个问题的争论,似乎永远也得不到一致的意见。那些深受套装软件之害的企业,总是抱怨套装软件无法满足他们的实际业务需求; 与此相对,那些对定制软件嗤之以鼻的CIO们,则认为定制软件不但开发周期长,而且日后维护成本也比套装软件高昂许多。那么,事实情况如何呢?

埃森哲在对125家中国大中型企业的应用软件战略调研时发现,尽管定制化软件目前在中国仍处于主导的地位,但是它们未来更倾向于投资套装软件。这样的趋势,应该引起靠定制化开发生存的国内软件企业注意了。

定制软件过时?

据埃森哲大中华区系统集成事业部刘国良介绍,在调查的企业中,约1/3的企业并没有大量地使用信息技术; 1/3的企业使用的是定制的软件,另外1/3开始使用相关的套装软件,而这里又包括是做少量的定制化或者是大量的定制化。

一直以来,客户化定制软件在中国企业中应用更流行。除财务、会计核算及行政事务的后台应用软件以外,目前中国企业各主要功能领域的IT系统主要采用客户化应用软件(见图1)。比如,一家大型中国电信运营商在2003年至2006年间才首次采用套装软件,是在其新成立的子公司实施客户关系管理(CRM)系统。而该企业在2003年以前还从未使用过任何套装软件。

埃森哲分析认为,之前大部分中国企业针对功能应用的实施都采用客户化定制软件,与以下因素有关: 一是许可证费用的节约以及市场上存在较多廉价的通用软件编程人员,意味着开发客户化软件常常可节约大量成本。而使用国外的套装软件,从长期来看成本还是比较便宜的,但一开始投入的使用费和咨询服务费是比较贵的; 二是先前的业务需求比较基础,从而导致套装软件存在着被看做是太多昂贵的、多余的功能; 三是在需求确认阶段,业务流程不容易改变。客户化应用软件已经能与现有业务流程兼容; 四是国内独立软件供应商开发的软件包常常无法调整成大型企业所需的规模。因此,这些公司配合客户化功能开发定制软件,以满足其特定业务需求。很多企业过去习惯使用定制化的软件,还有“国情”方面的原因,因为改革开放比较慢,跟国外有一定的差距。有了自己的定制化软件工具,就比较习惯,就不太愿意用国外的套装软件了。

然而,随着中国市场的逐渐开放,本地企业通过学习全球最佳业务流程实践,为与全球同行展开竞争做好积极准备。在过去几十年里,来自大型软件厂商的套装企业应用软件已在财富500强公司间得到了广泛应用。因此,行业最佳实践已被植入套装应用软件。埃森哲认为,为了有效利用这一知识财产,越来越多的中国企业开始以套装软件替代以往的客户化软件战略。

套装软件流行?

“我们看到的趋势是,更多的企业愿意投资套装软件,而愿意花钱使用定制化软件的公司会变得比较少。” 刘国良说。在埃森哲对相关企业高管调查“未来在哪些业务市场上进行投资”这个问题时,大概50%以上的企业表示愿意使用套装软件来满足未来的需求,有大概30%的公司愿意在现在的系统上面加强他们的功能,而剩下的企业会愿意使用更高端的信息技术(见图2)。

埃森哲的研究结果显示,那些转向使用套装企业应用软件的公司确实从中获得了显著的利益。当参与调查的这些中国企业高管们被问及企业应用软件在业务和技术层面的匹配度时,大多数运行套装软件的企业高管表示: 与客户化应用软件相比,这些软件能更有效地满足当前业务需求。在预期经营成果方面,也出现了类似的调查结果。大多数高管认为,在大部分功能领域内(如计费、资产管理、销售及市场营销、客户关系管理、供应商关系管理、数据仓库等),套装应用软件更可靠; 而客户化软件则是产品生命周期管理和供应链管理的首选软件。

埃森哲认为,在取得差异性竞争优势方面,大范围客户化比选择性客户化的有效性更低。因此,中国企业应该将套装解决方案和有选择的客户化相结合。当大多数公司继续增加现有软件的功能时,那些投资于新应用软件的企业将更喜欢套装解决方案,其中客户化开发的比例逐渐缩小。

刘国良解释说,“这并不是说套装软件绝对比定制化软件好。”根据埃森哲的研究,定制化软件应用在生产特殊性非常强的企业,肯定比套装软件更好。比如说,在航空系统上,客户化软件肯定比套装软件好。但是财务领域、采购领域,他们用套装软件比较好。

埃森哲结合针对企业应用系统最佳实践的全球研究、与中国和全球领先企业的广泛合作经验,认为中国企业选择性地采用客户化软件是“上上策”。“采用例如SOA的开放式架构,利用套装软件中的最佳实践流程,并在能提供竞争优势、使企业利益最大化的情况下采用一部分客户化软件——实施这种策略的利益,包括降低实施成本,为企业整体业务流程的标准化和整合、以及将来的系统升级扫清障碍; 而仅仅为个别部门的单独业务流程实施客户化软件是无法实现这些利益的。”

立体构成与高级定制的关系论文 篇4

立体构成元素让中外高级定制服装个性飞扬

(一)立体构成元素在前卫高级定制服装中的表现――从郭培的作品来看

中国的高级定制已走向世界,中国元素风靡全球。我国知名服装设计师郭培的“中国高级定制第一人”的称号,源于她惊艳世界的作品,代表极致奢华的女性梦想,成为国内一线女星最早接触的定制设计。作为一位中国设计师,她让高级定制的概念在中国传播,如今已成为一个阶层的生活方式,作为一个爱美的女人,她把对极致奢华的女性梦想注入她的作品,赋予其灵魂,中西合璧的特色受到国内明星及时尚界的青睐与肯定。其中《一千零二夜》的高级定制系列作品最具代表性。服装的制作需要用立体构成的知识去完成,在郭培的作品中所呈现的不只是一件简单意义上的服装,而是服装艺术品,高级定制中的艺术品。其造型夸张的立体构成元素具有强烈的视觉冲击力,令人过目不忘。如图1以突出线构成为主,线构成是指:其所表现的效果,具有半透明的形体特质。由于线群的集合,线与线之间会产生一定的间距,透过这些空隙,可观察到各个不同层次的线群结构,这样便能表现出各线面层次的交错构成。这种交错构成所产生的效果,会呈现出网格的疏密变化,它具有较强的.韵律感,这是线材构成空间立体造型所具有的表现特点。这件作品中的线条随意穿插,不嗦,带有凌乱感,构成不规则造型。图2把圆锥体有秩序地围绕身体,从左手到右手,再加上渐变的手法,消除了生硬感。与图2相对比,图3是一个典型的多面体构成表现法作品,服装的亮点是由多个三棱锥体组合成的不一样的几何球体,球体分大小、整缺、疏密。用这样的构成方法可以使服装看起来不但没有笨重和累赘之感,反而具有活泼、灵动的感觉。上身的球体与下身的灯笼裤形成了呼应,方中带圆、圆中有方,有极强的视觉冲击力。这个系列作品看起来还是有点另类的,设计灵感来源于《一千零一夜》,带有童话色彩,在立体造型方面用得极其夸张和出位,有让人眼前一亮的感觉。《一千零二夜》是以国外的题材设计的高级定制,而以本国传统文化为题材设计的作品又有另一番视觉感受。青花瓷是我国出名的瓷器,郭培把这个极具中国特色的元素加入到高级定制中去,利用立体构成把这个《青花瓷》系列作品发挥得淋漓尽致,“发扬中国风格必须要结合时代,要把过去代入今天,作品才能在未来延续。发扬中国文化并非去扒故纸堆,完全照搬过去,而是在时代发展的同时,将当代的东西融入其中”。图4所呈现的高级定制就像是一件瓷器,造型独特,以扇形为主,清雅脱俗的扇子与女性的温婉可人相得益彰。裙子前面几个三角形组合体,以中间最大的三角形向两边逐渐变小,组合里的立体元素单个看是扇形、整体看也是一个扇形,与头顶的冠、裙子下摆形成呼应,达到统一的效果。中国元素的融入让中国的作品走得更时尚和更长久。换位思考,如果把这些服装中夸张的圆锥、球体、扇形等立体元素去掉,所剩的只不过是普普通通的一件连衣裙,根本不值一提,并不能打破传统,不断变化的立体构成赋予高级定制以灵魂。高级定制凭借立体构成不同的元素,发挥出强大的力量,让世人为之倾倒,并在全球掀起了中国风。

(二)立体构成元素在经典的高级定制晚装中的表现――从世界大师范思哲作品来看

经典的高级定制晚装同样离不开立体构成元素。它虽然没有前卫高级定制服装的张扬个性,却表现出女性含蓄而庄重的韵味,中外作品呈现出不同的美感。范思哲,一个在服装界无人不晓的名字、时尚教主、设计后辈争相模仿的对象。当年,范思哲每出一件新品都让人有心跳加速、欲罢不能之感,至今,这些作品仍是经典中的经典,其作品已经形成一个富有范思哲特性的风格――范思哲派,单看作品就可以知道是出自他的手笔。他的作品中立体构成的元素随处可见,特别是以几何体造型为常用的设计手法。如图A连衣裙上身是一个由面材屈折的加工手法制作而成,有切割面和折屈面,以一个对称的半立体型呈现,这样的设计是为了使服装看上去除有造型外还可以使布料表现出正反两面的不同颜色的特点,打破一个颜色的单调;腰间采用仿生花造型,以放射状设计,同样利用布料的两面颜色,使之更具有立体效果。图B整件作品采用面群结构的表现手法,以大中小的宽条形体来集聚,形成发射状,有规则地排列;腰间也是采用发射状带有渐变让花形变得不古板;整体效果显得有重量感和时代感。图C典型的综合表现手法,猛一看服装整体的造型线条简单、整洁大方,细看却发现有许多相同的单个体集聚在一起,单个体用仿生的表现手法,做成鱼鳞的样子,板材结构里的曲线折屈也运用在其中,让人有着对美人鱼的遐想。图D、E用同样的三角形体单个集聚,却有着不同的风格。长裙是带有尾巴的三角体一个套一个地往下排列,像风在吹动一样,韵律感十足,端庄中带点俏皮。短裙则用相同大小的三角体围绕着身体集聚,散发出清新、活泼、年轻的魅力。这就是立体构成的作用,利用无生命的布料制作出灵动的作品。

两者的高级定制服装用立体构成中同样的几何体元素,演绎出不同的风格。其不同表现在中式的服装整体看起来比较硬朗,外国的整体感柔软;它们同时又存在着共性:如图4和图D都使用三角形元素为主体,做出不同的地域风格,这是由各自的历史与文化决定的。“中国高级定制与外国高级定制所处的发展阶段不同,最重要的是服务的对象不同,中国高级定制更突出中国特色”。郭培还认为,我国已涌现出大批才华洋溢的设计能人,在中国风的流行时代,只要凭借着立体构成元素的加入,做出中国的流派,高级定制必会走出一条光明之路。

软件开发与定制 篇5

(1)专业定位不明。很多院校只强调说电子商务专业是培养复合型人才,却忽视一个问题,就是我国的普通高等教育还是属于一种基础教育。这种基础教育与当前就业市场对专业性的强调之间出现了矛盾。如果我们在基础教育的基础上再强调培养“万能”人才,那就更无法突出“专业性”。所以说这种复合型人才也需要突出其专业性的一面。

(2)缺乏市场导向。很多学校电子商务专业人才培养不以市场需求为导向,不考虑不同行业对电子商务人才需求的特点,一味闭门造车,让市场去适应教育,这显然是脱离实际的做法。

(3)课程设置不合理。主要表现为将技术和商务方面的课程简单的凑在一起,也没有主次轻重之分,加上技术方面脱离实际应用平台,商务方面又远离实践。

(4)教育资源配置不合理。主要表现在两个方面,一是师资力量薄弱,很多从事电子商务教学的老师缺乏实践经验,所以很多课程的传授就脱离了实际。二是通才教育的思想使得老师对所有的学生都采用同一教学模式,不能实现因才施教。

这种局面如果不能及时扭转,将严重影响中国电子商务的发展进程,一方面是高校培养出来的人才因不适合企业的需要而面临失业的压力,也因此浪费国家大量的教育资源;另一方面高校也因为电子商务专业低就业率而失去学科发展的推动力。

一、定制教育与模块化教学模式的基本思想和特点

所谓定制教育实际上是借鉴企业界的定制营销模式,对一个学校来说,学生就是其打造出来的产品,其培养出来的学生就业如何,就要看其是否满足用人单位的需求。为了更好的解决院校教育与企业需求之间错位这一最突出的问题,我们就有必要细分行业市场,针对不同行业对电子商务方面人才需求的不同特点,为电子商务学科设计不同的专业方向,明确专业方向的定位,且专业方向要围绕特定行业对电子商务的需求不同而专门设计相应的课程,以达到定制教育的目的。

而模块化教学模式是根据定制教育思想,将电子商务学科分为不同的专业方向,并根据不同的专业方向、教学内容和培养人才类型的不同,将学校现有的教育资源科学地划分为若干个可以有机搭配和组合的模块,并根据不同培养对象选择不同的模块内容进行教学的一种方法,而每个教学模块都有不同的教学团队。这种教育模式的特点表现为以下几点:

(1)发挥了教学团队的作用。

(2)实现了应才施教的目的。

(3)强化了学科教育的专业性。

(4)充分利用了教学资源。

二、定制教育与模块化教学模式的实施

定制教育与模块化教学模式其出发点就要强化专业特点、明确专业目标、把握学生就业方面,重组教学内容以保证学生以较高效率修完所需课程的相关内容并具备相应专业技能。其基本实施步骤可以分为五步。

1.细分行业市场,确定专业方向

当前电子商务专业的学生最关心的问题还是电子商务职业发展的方向和定位,所以建立学生的职业感是非常重要的一项任务,这就要求学科一定要结合企业的需求,在遵循宽窄适当、前景看好的`原则基础上,结合学科的现有资源和传统产业的细分原则,为电子商务专业细分方向。

2.重新设置课程,组建教学团队

将教学资源模块化,分为公共教学模块和专业教学模块,公共教学模块是不论任何专业发展方向的学生都必须要掌握的内容。而专业教学模块是按照不同行业细分的专业方向设置的,具有很强的针对性与专业性,并且根据不同教学模块组建不同的教学团队,实现教学资源的优化配置。

3.动态管理学生,构建学习班组

对学生采用动态管理方法,在新生入学后前两年,主要采用公共教学模块对电子商务专业的所有学生进行基础教育,到了二年级下学期,学生通过近两年的大学生活,开始对自己未来的择业方向有了一定的想法,于是可以在学生中开展兴趣调查,根据学生不同兴趣,从三年级开始将学生编入不同的专业方向,对学生进行重组。并针对不同的专业方向配置不同的专业课程和教学团队,

4.模块教学,应才施教

所谓“模块化教学”实质上就是将现有的教学资源按照不同的专业方向进行模块化,并根据不同培养对象选择不同的模块内容进行教学,这样做的好处在于能够结合企业需求的实际情况兼顾学生自己的兴趣,并且避免了讲授知识的重复性。原有的教育方法,由于受传统教育模式的束缚,致使每科教学各自为政,内容重复,课时膨胀。采用模块教学,加强了同一结合点上相关科目的协调配合,避免了知识重复讲授,有针对性的进行教学。

5.反馈评价

任何一项改革都必须要在实践中不断改进,定制教育与模块化教学模式作为一项新的教改模式也是如此。在实践中,如果我们发现学生修完所有课程后,仍然对专业方向不明确,就有必要重新进行课程设置;如果学生有了明确的专业方向,但缺乏动手和实践能力,就有必要增加实践环节的教学,同时调整教学团队,加强对老师的职业培训。如果是因为学生自我完成有困难,则在教师辅导下由学生完成;如果在这个模块的教学中,个别学生总无法完成目标,则证明这部分学生的理想与自身能力有比较大的差距,教师应帮助学生在对自身能力的重新认识的基础上重新界定目标和专业方向。总之,要通过不断实践-反馈-改革-再实践的过程来优化教学模式。

三、定制教育与模块化教学模式的局限性

定制教育和模块化教学模式的局限性主要表现在两个方面:一是专业方向细分标准的确定。由于现实中的行业很多,我们无法按照每个行业设置相应的专业方向,方向细分过窄则不利于学生未来的发展,方向细分过宽则不能体现专业的优势。二是如果将按照定制教育思想细分的专业方向与按照学科资源划分的教学模块有机结合起来。

总之,针对当前电子商务专业出现的培养目标模糊、专业定位不明、学院教育与企业需求脱节,造成学生就业困难,学科发展缺乏动力的问题,定制教育与模块化教学相结合的模式为这一问题的解决从教改这一角度提出一条新的解决途径。

参考文献:

[1]Zhongbin Gao.A Strategic Analysis of Talent in Manufacturing Industry in Yantai City.International Journal of Business and Management,2006.

[2]王长全,艾.电子商务实践教学改革与实验资源管理[J].实验室研究与探索,2006,(8):136-138.

应用软件敏捷定制 篇6

1 应用软件编程模型的提出

.NET是微软公司推出的新一代互联网软件和服务战略,是一种面向网络、支持各种用户终端的开发平台环境。.NET平台创建了组件,并将组件作为其基本的元素。从本质上看,.NET组件是一个用任何.NET语言以插件形式开发的可互换的软件部件,它可以与其他应用程序实现互操作。.NET组件是以程序集[1](Assembly)的形式表现的。

.NET组件的最大优点在于,它深化了“模块化”编程的思想,为开发人员提供了一个“搭积木”的编程模型:多个组件模块通过一定的引用逻辑组装成一个有机的整体,即一个应用系统。这样就降低了系统设计的难度,同时增强了应用软件的可维护性。

然而,.NET组件也存在一些不足之处。⑴复用程度较低。众所周知,软件复用可以降低软件开发的复杂度,提高开发效率。但目前许多开发人员所积累的组件都是针对某个具体的应用项目而设计的,难以被其他应用软件所复用[2]。即使复用了个别组件,也由于复用粒度不大而不能取得明显效果。⑵耦合程度较高。同前文所述,多个组件是通过源代码级的引用关系而组合成一个整体的,这个整体具有不可分割性。即使仅仅修改其中的一个组件都得重新编译、部署整个应用系统。这样就增加了系统扩展和更新的难度。

如何弥补上述不足呢?首先,可以提取某一应用领域的共性,建立若干个基于复用目的的公共组件,并将这些组件按一定应用逻辑封装成一个复用粒度更大的应用框架,该应用框架提供对外扩展的接口,该接口就像电脑主机的USB接口一样,可以即插即用。然后,可以根据用户的具体业务需求分批完成若干个支持上述接口的专用组件———插件。最后,应用框架和插件通过接口即插即用而组合成一个应用软件。这样,就形成了“可定制应用软件=应用框架+插件”的编程模型。该模型的突出特点如下:(1)基于.NET平台,具有能与COM组件互操作、X-COPY部署等优点[1]。(2)同时支持“搭积木”和“接口”编程思想。(3)大粒度应用框架的复用,降低了软件复杂度,实现了软件敏捷开发。(4)即插即用的接口设计,大大提高了软件的可扩展性、可定制性、可维护性。

2 应用框架的设计

2.1 设计目标

本应用框架是定位于支持多层软件结构的桌面应用或智能客户端的可运行原型系统。其主要特点如下:(1)支持多层软件结构。具有支持用户界面层、业务逻辑层、数据访问层等的组件。(2)支持智能客户端。所谓智能客户端,是一个可扩展的能集成不同应用的桌面应用程序,它具有在线升级、离线运用、个性化用户界面等特征[3]。(3)不加载任何插件就可运行的原型系统。通过配置文件和插件可以敏捷定制一个应用软件。

2.2 体系结构

支持插件架构的应用框架体系结构,核心部分是由主应用程序组件、共享接口组件、插件和配置文件组成[4],次要部分包括被多个插件引用的公共基础组件(如通用数据访问组件等)和一些辅助工具(如在线升级器、XML文件编辑器、程序集查看器等),如图1所示。

2.3 动态运行机制

整个应用框架是个高内聚的系统,应用框架的运行由不同组件、模块分工协调完成。现对应用框架运行机制做总体设计如下:

(1)主应用程序MainApplication启动时读取系统配置文件App.config中的appSettings配置节,设置应用软件的标题。

(2)然后调用插件管理类PlugInController的LoadPlugIns () 方法。该方法利用.NET的反射特性[4]在主应用程序所在目录的plugins子目录下逐个搜索可用的插件(所有合法的插件类型前加有属性标志PlugIn),并将插件的相关信息(在PlugInAttribute和PlugInInfo类中定义)收集到一个SortedList类型集合体当中。同时通过插件属性标志PlugInAttribute的初始化参数得到菜单文本信息,根据菜单文本在主窗体中添加对应菜单项并注册菜单点击事件。

(3)当点击某菜单项时发生菜单点击事件,该事件调用LaunchPlugIn () 方法来实例化类型。

(4) LaunchPlugIn () 方法先根据(2)中的集合体记录找到与所点击菜单项对应的程序集和类型信息;再进行两种判断:该类型是继承自Form类还是Iplug接口。如果是Form类就实例化一个窗体,并将其加入到MDI主窗体中,最后调用Show () 方法;如果是Iplug接口就调用run方法,该方法已在对应插件中实现。

2.4 接口设计

如图1所示,本应用框架与插件进行通信的接口被封装在SharedApi.dll里面。本应用框架提供两种类型的接口[5]:⑴框架与插件交互的对偶接口Iplug和Ihost:其中主应用程序必须实现Ihost,而插件必须实现Iplug。⑵具有元数据特征的属性标志类[1]PlugInAttribute(以后简称插件属性):只要是给主应用程序定做的插件,其相应类型必须在前面添加插件属性,并且必须给出插件属性的两个位置参数。这两个参数分别对应的菜单项及其父菜单项的菜单文本。

2.4.1 框架与插件交互的接口

2.4.2 插件属性标志

2.5 配置文件

应用程序使用配置文件可以更好地适应需求的变化。本应用框架的配置文件为.NET框架所支持的标准XML文档。由于XML是Internet上数据交换的通用语言,所以在智能客户端应用中配置文件可以方便地从服务器传递到客户端[1]。本配置文件可以为主应用程序、插件、通用数据访问组件、在线更新组件所共用。以下给出配置文件App.config的示例代码:

2.6 对插件的即插即用

如图1所示,在主应用程序中包含一个插件管理类PlugInController,它提供两个重要方法,是实现机制的关键。

(1) LoadPlugIns () 方法:负责遍历plugins子目录的所有程序集,将合法插件的相关信息(菜单文本信息、程序集名称和程序集包含类型信息)记入在一个plugArray集合体中,以提供LaunchPlugIn () 方法中相关参数。同时,还调用GetMenus () 私有方法,根据菜单文本信息在主窗体中添加对应菜单项并注册菜单点击事件。

(2) LaunchPlugIn () 方法:负责响应菜单点击事件。判断两种不同的插件类型(Form类或Iplug类),进行类型实例化,并调用相应类型的方法Show () 或Run () 。

需要注意的是,在主窗体加载事件调用LoadPlugIns () 之后,plugins子目录中的所有插件都将被锁定,如要进行删除或更新操作,就会出现“文件正被另一个人或程序使用”的错误信息,这样就阻碍了在线更新功能的实现。这里给出一个简单的解决办法:.NET框架有一个影像复制(Shadow Copy)特性,当在一个应用程序域(appdomain)中启用shadow Copy时,装载在该应用程序域的所有程序集将被复制到一个影像复制缓冲目录,并从缓冲目录中使用这些程序集,这样就解除了对原有文件的锁定,可以对原文件进行随意更改[6]。以下给出LoadPlugIns () 方法的核心代码:

2.7 用户界面设计

2.7.1 用户界面的结构

应用框架的用户界面设计为多文档界面[1](MDI)结构。如图1所示,在主应用程序中有一个MainForm类,该类定义了父窗体界面(主要由菜单栏、工作区、状态栏组成),并提供退出系统、多窗体排列等基本功能。如图2所示。插件窗体为子窗体,其子窗体界面及功能由相应插件完成。

2.7.2 动态菜单的生成

图2所示菜单为不添加任何插件时父窗体的所有菜单项。当有插件添加时由LoadPlugIns () 方法调用GetMenus () 方法,动态添加其他菜单项。GetMenus () 方法首先根据插件信息中的父菜单文本 (pmenutext) 确定子菜单项的位置。如果父菜单已存在,则在该父菜单下添加子菜单项。如果父菜单不存在,则先创建父菜单项,再在该父菜单下添加子菜单项。同时对每个菜单项的点击事件进行注册。其核心代码如下:

2.8 在线更新组件设计

.NET框架所具有的X-COPY安装(不写注册表)的特性,再加上在线更新的功能,就可实现接近“零成本”的软件部署。在线更新组件可以普通插件或独立程序(如图1中UpDater.exe)的形式提供。如果采用普通插件的形式,有必要创建一个独立的线程完成文件下载任务,以免影响主应用程序的正常运行。

在线更新组件UpDater.exe设计的原理如下:UpDater.exe可在不启动主应用程序的情况下实现应用系统的自动更新。首先读取系统配置文件App.config中的Update配置节,获取更新资源的网络地址和已安装组件的当前版本。然后根据网络地址找到服务器上存放所有待更新资源的文件夹,该文件夹同时包含一个以修改日期命名清单文件,把该修改日期与当前版本相比较,如果前者大于后者,就将清单文件中列举的所有文件依次下载到本地目标位置。接着将Update配置节中的版本重写为修改日期。如果前者等于后者,则说明无需更新。最后,自动关闭更新程序。

以下是资源清单文件2006-12-01.xml的示例代码:

2.9 通用数据访问组件设计

在图1中,DataAccess.dll组件负责为数据库应用程序提供基础服务。其主要作用是采用简单工厂(Simple Factory)设计模式,对外屏蔽数据源类型的差异,实现对OLE DB、SQL Server等数据库的通用访问[7]。它提供读取配置文件信息(连接字符串、查询字符串),返回数据库连接接口(IDbConnection)和数据适配器接口(IDbDataAdapter)等功能。本组件在实践中可以通过在线更新不断完善。

3 插件

以上已经初步建立起一个基于插件架构的应用框架。该应用框架本身就是一个可运行的系统。它是经过测试的大量相关代码的封装,也是一个面向特定问题域的完整的设计封装,非系统设计人员无须详细了解。但是对于为用户开发插件的程序员,必须明确插件编写的如下要求。

(1)一个有效的插件类型只能继承自Form基类或者Iplug接口。

(2)一个有效的插件类型必须在其类型前加上PlugIn属性标志。

(3)插件编写,不要在一个插件中捆绑3个以上类型[5]。否则会降低系统运行效率。

(4)插件加载时会在主窗体中自动添加一个菜单项,如需要实现多层菜单可在插件中以上下文菜单形式提供。

4 应用软件的定制

应用框架设计的目的是为了复用该框架,实现应用软件的敏捷定制。作为示例,假定要为某中学定制一个学生管理信息系统。要定制该应用软件,需要开展的主要工作是:调查分析用户需求,编写适应用户需求的插件,最后会通过网络部署插件。以下仅给出两个插件的编写范例。

4.1学籍信息编辑插件

4.2信息系统帮助插件

5 结语

综上所述,应用框架的设计并复用可以使应用软件的开发不必每次“从零”做起,大大降低了软件开发的复杂度,缩短了开发周期;插件的即插即用可以使应用软件随时更新、扩展所需的功能。因此,“应用框架+插件”的编程模型,实现了应用软件的敏捷定制,具有良好的应用前景。

参考文献

[1]Christian Nagel, Bill Evjen, Jay Glynn.C#高级编程[M].第4版, 北京:清华大学出版社, 2006.

[2]杨海澜.基于组件技术的学籍管理信息系统研究[J].武汉交通职业学院学报, 2006, 7 (1) :70-71.

[3]王介之, 陈志刚.利用WEB服务实现智能客户端应用[J].计算技术与自动化, 2005, 24 (1) :85-86.

[4]JasonClark.Let Users Add Functionality to Your.NET Applications with Macros and Plug-Ins[J/OL].MSDN Magazine, October2003.

[5]Joel Pobar.Dodge Common Performance Pitfalls to Craft Speedy Applications[J/OL].MSDN Magazine, July2005.

[6]Junfeng Zhang.AppDomain and Shadow Copy[EB/OL].http://blogs.msdn.com/junfeng/archive/2004/02/09/69919.aspx, Febru ary09, 2004.

“新定制”与定制专委会 篇7

不再盲从,而是选择真正反映自己生活态度的着装,这已经成为当前的新消费趋势,“新定制”的概念也因此浮出水面。不同于法国的高级定制,这种新定制的产品不一定昂贵,但一定有品质,并且只针对一小部分人群而设计,作为一种特定生活方式或态度的标志。定制专业委员会可谓应运而生。

中国服装行业的消费观念正在随着消费主体的年轻化而不断变更。“如果有人问2000年以后出生的年轻人,当你长大了想消费什么样的品牌时,我想很大一部分人的答案不是‘我想买什么品牌’,而是,‘即使我有钱了,也不会去买什么品牌’,这就是消费观念的转变。”法新国际集团董事赵倩对记者说,未来的消费观念是消费者不再盲从品牌,而选择真正反映自己生活态度的着装。

用产品诉说生活态度

在服装设计领域的业内人士都了解一个演变规律,那就是新的流行趋势来临时,往往和现有的流行趋势截然不同。中国市场正处于快餐式的消费阶段,服装品牌追求对市场的反应速度,追求普遍适用于大众的款式以此实现大批量销售。

这样的做法无可厚非,但赵倩认为:“当人们开始不满足于这样的消费时,我认为,定制化的生活方式和消费方式就会逐渐成为主流。”赵倩所说的“定制”,并不是人们普遍认为的“高级定制”。“不同于法国的高级定制,这种新定制概念的产品不一定昂贵,但它一定有品质,并且只针对一小部分人群而设计,标志着一种特定的生活方式或态度。”

个性化是其标志,虽然这种定制并不是为某一个人量身打造的,但是它一定是为某个特定人群而服务的。为此,赵倩举了个例子:“比如一件符合新定制概念的服装,如果由不认同这种生活方式的人穿着,就会感觉很不协调,与自己的交际圈子和生活用品格格不入。这种定制通过产品,自然而然地圈定出了消费群。”

为此,由上海国际时尚联合会发起成立的“中国定制专业委员会”在不久前于法国巴黎成立。“这个定制专业委员会承载着新的定制概念,法新国际集团早在2013年就提出了这一概念,如今已经日渐成熟。”赵倩说。

“而且这种定制理念也不局限于服装,还有饰品和各种生活用品,如食品和家居用品等。它们的价格不一而足,但是都是这类消费者有兴趣了解和乐意追求的。甚至这种定制与消费能力无关,大到工作生活方式,小到一个盘子或一支口红,都代表着一种文化和价值观。”赵倩解释说。

中国定制走出新路径

虽然当下这种定制理念还处于初始阶段,但其发展非常迅速。“2013年我和别人说起这个概念时,很多人还比较迷茫,而时隔两年,如今我们再提出这个概念,人们都能很快理解,并从自己的生活中寻找出蛛丝马迹。因此,2015年,中国定制专业委员会应运而生。”赵倩说。

今年7月,伴随着2015秋冬巴黎高级定制时装周的来临,在巴黎著名的高级定制圣地Les Suites,中国定制专业委员会成立仪式暨“向中国定制致敬”新闻酒会正式启幕。

DAN·丹、鼎天、Grace Chen、HANART瀚艺、黄勖、劳伦斯·许、Mary Ma马艳丽、NE·TIGER张志峰、秦旭、Sheme等十位中国设计师及定制品牌,参加了本次“向中国定制致敬”全球巡展。

“此外,中国定制专业委员会还设立了10位初创会员,其中包括3位荣誉会员,专委会的成立推动中国定制向专业化、系统化、规范化迈出了重要一步。”赵倩说。

上海国际时尚联合会副会长、NE·TIGER品牌创始人张志峰在会上表示:“中国拥有五千年文化积淀,为中国定制发展提供了丰厚的底蕴和灵感,我们应该创造出属于我们的文化符号,开创一条属于中国的定制之路。”

将定制理念贯彻始末

不仅提出方向,还要商业落地,专委会在巴黎成立期间,还为设计师提供了专业的销售渠道。“我们在巴黎组织了专门的showroom,并直接和一家巴黎高级定制旗舰店合作,将设计师的产品在其中展卖。据了解,仅两周时间,店内就卖出了8件中国设计师的作品,且这些服装风格跨度很大,既有定位当代的,也有风格古朴的。”赵倩说,“选择7月成立专委会就是考虑到了,法国高级定制时装周在此期间举办,会有大量买手和顾客汇聚巴黎,能够给予中国定制更多回馈。明年1月,我们将再次来到巴黎进行展示,将中国定制的概念,从这里推向世界,让全球时尚界人士了解中国的服装设计。”赵倩说。

未来“向中国定制致敬”全球巡展还将来到美国纽约、英国伦敦、意大利米兰等时尚之都,在此过程中,不仅是展示,更要与商业挂钩。通过这一系列活动,中国设计师不仅要向世界输出产品,更要输出文化精神。

此外,专委会还带领设计师走访了数家巴黎高级定制的手工工坊,零距离了解法国高级定制的诞生和其对细节的极致追求。“这对中国定制的发展也有很大借鉴意义。”赵倩说,“如今回到中国,我们的工作将进一步展开,吸取更多认同中国定制发展路线的本土乃至国际设计师加入。”

“今年11月,我们还将在北京组织一场中国定制日活动,定制日以展览的形式,展出包括服装在内的各类艺术和生活用品,这将是一个全方位展现定制化生活方式的展览,并将进一步加快中国消费市场定制化发展进程。在这里所有参展产品都将和商业挂钩,进行展示售卖,我们也会寻找更多买手、多品牌店和网络平台前来参与。”赵倩说,不论现在或未来,专委会的各项活动,都将基于推广定制化设计和定制化生活。

软件开发与定制 篇8

关键词:复合数据类型,JTable组件,MVC模式,事件代理,渲染器

0 引 言

自从SUN于1998年推出包含Swing轻量级组件的JDK1.2版后, Java中JTable、JTree等复合数据类型组件在图形界面方面的应用深受用户青睐。但由于该类组件复杂的事件处理机制与渲染机制, 使Java GUI设计者难以掌握其强大、灵活的定制功能。本文结合Swing包MVC模式的设计原理, 以JTable在实际开发过程中的应用为例, 对此类复合数据类型的MVC架构及在GUI的定制开发应用进行了详细的分析实现。

1 MVC模式

1.1 模式的分类

现代科学和工程学能够发展到今天, 有赖于规则的制定, 模式的研究也不例外[1]。模式的研究起源于建筑工程设计大师Christopher Alexander关于城市规划和建筑设计的著作, 到1987年人们开始把模式理论引进到软件设计领域中。

在软件开发业中模式往往被介绍为“设计模式”[2], 根据其行为目的分为创建型、结构型、行为型模式。然而, 从严格意义上, 软件业界将模式分为架构模式、设计模式、成例模式三类。

1.2 MVC是一种架构模式

MVC模式是一种复杂的架构模式, 由Trygve Reenskaug提出, 是目前一种较成熟的软件开发模式, Microsoft的MFC基础类及Java2的Swing组件都遵循了MVC思想。

MVC模式是动态网站开发及企业级程序架构的常用开发模式, 它可以分离数据访问和数据表现, 即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离, 从软件设计角度看, 一个应用被分成三层——模型层、视图层和控制层。模型封装了业务数据和公开方法, 视图实现对模型数据的显示, 向用户提供可交互的人机界面, 控制端封装的是外界作用于模型的操作, 负责响应用户的请求, 根据请求类型操作模型层, 并把模型的响应结果表现于视图。三者间的关系和主要功能如图1所示。

模型、视图与控制器的分离后, 通过视图提供的界面, 用户可向控制器提交请求, 由其调用相应的模型方法完成数据更新, 当模型中数据发生变化时, 它会通知视图刷新界面[3], 将响应结果反馈给用户。

2 Java复合数据类型组件的MVC模型

2.1 Swing包中的复合数据类型组件

Swing组件常被称为轻量级组件。当用户与GUI交互时, 组件会发起事件, 并被一个或多个“监听器”接收并处理, 事件的发生与处理是分离的[4]。

Swing组件根据其所操作的数据类型分为两种, 一种是标量数据类型的组件, 一类是复合数据类型的组件。标量数据类型的组件操作的是基本类型的数据, 如字符串、布尔、数字等, 此类型组件包括JTextField、JCheckBox、JLabel等。复合数据类型的组件操作的是诸如向量、矩形和非线形等类型数据, 向量数据类型的组件有JComboBox、JList, 矩形数据类型的组件有JTable, JTree属非线形数据类型的组件。

2.2 复合数据类型组件的MVC模型

Swing包中复合数据类型组件都采用MVC架构模式, 有着相似的对事件的响应、处理与渲染机制, 下面以JTable为例, 简述其M-V-C分离模型。对应MVC的组件关系可得出JTable的MVC类图, 如图2所示。

对照图1可得出, JTable提供访问修改模型的set/get方法, 用来控制数据模型的状态, 而TableModel则控制数据本身, 当数据发生变化时, 负责发生相应事件, 交由已注册的监听器去捕获处理, 视图层的TableUI则负责模型数据的显示及更新[4], 完成人机交互过程。

3 JTable的MVC模型实现

3.1 JTable的代理事件及渲染重绘机制

表格对事件的处理采用代理事件机制, 对事件的捕获及处理分别由不同的对象完成, 对表格中不同单元格内的数据显示完全基于渲染重绘的实现方法。

3.1.1 JTable的代理事件机制

与Swing其它组件相同, JTable对表格事件的处理仍采用代理事件的方法, 当用户对表格排序、修改表格数据时, 即会发生相应事件, 发出的事件需由已注册在JTable实例的监听器捕获, 监听器会根据捕获的事件类型调用相应的方法进行处理。当更改表格数据时, TableModelEvent 事件被生成, 用于通知监听器某一表模型已发生更改, 事件的捕获则由监听器TableModelListener完成, 并调用tableChanged () 方法, 完成对模型数据的编辑。

3.1.2 对JTable组件的渲染

表格外观的显示最终依赖于渲染器的工作, 模型数据被修改后, 对应单元格均需采用指定的渲染器进行渲染。JTable有适合自己类型的渲染器接口TableCellRenderer, 原形定义如下:

上述方法的参数中, table为请求渲染的表实例, value为需渲染的单元格的值, 由渲染器决定如何解释并渲染该值, 比如如果value的值为字符串“true”, 渲染器可以渲染成字符串, 也可以渲染成一个CheckBox, isSelected 及hasFocus分别表示当前表格是否被选中及是否获得焦点, 并据此进行显示外观的定制, row及column指明当前单元格的行、列号。

许多复合数据型组件不仅仅需要展现数据, 还需要编辑数据。表格单元格数据可否被编辑则由TableCellEditor接口定义, 其需实现的方法及参数与TableCellRenderer相似。

综上所述, 当对表格进行编辑操作时, 根据代理事件的处理方法, 终会对模型数据产生影响, 表格视图的更新需要渲染器对此单元格组件重新绘制, 在需要编辑单元格时, 则由TableCellEditor返回当前表格的编辑组件, 作为JTable的子组件添加到整个JTable组件树上, 等待用户编辑。这一过程对应的时序图如图3所示。

3.2 JTable MVC模型的具体实现

3.2.1 建立数据模型

如图2所示, Swing中提供了可用于创建用户表格模型的有接口TableModel、抽象类AbstractTableModel及DefaultTableModel类, 其中抽象类AbstractTableModel实现了TableModel 接口中的大多数方法, 其子类DefaultTableModel实现了父类中没有定义的getValueAt () 、getColumnCount () 、getRowCount () 方法, 构建完成默认的表模型。

在建立JTable的数据模型时, 一般采用如下两种方法:

(1) 继承AbstractTableModel类, 自定义表格模型类

在JDK1.5中, AbstractTableModel被定义为实现TableModel及Serializable接口的抽象类, 据此, 建立数据模型:

} (2) 建立java默认表格模型实例

创建表格数据模型后, 即为表格封装了必须的数据及相应的操作方法。

3.2.2 JTable组件扮演控制器角色

JTable实例调用setModel () 方法把数据模型与表格组件联系起来, 主要代码如下:

接下来, jt会根据用户对UI的操作要求, 实现下功能:

(1) 在监听器作用下, 定义程序功能;

(2) 调用相应方法, 通知模型数据的更新;

(3) 选择适合的视图。

3.2.3 JTable的视图控制

Swing的体系结构中每个JComponent对象有一个相应的ComponentUI对象, 是可插入外观架构中所有UI代理对象的基类。JTable的可插入外观界面由TableUI的子类BasicTableUI实现, 负责调用installUI () 完成对JTable在颜色、字体、边框、图标、监听器及键盘UI等方面的委托执行。

由于JTable默认将单元格数据渲染为String类型, 对单元格内JCheckBox、JComboBox等组件不能直接渲染为本来面目, 因此, 为了在表格中正确显示各种组件的外观, 需针对不同数据类型使用不同的渲染器。JTable的渲染器有内置、定制渲染器之分, 对Java中Boolean、 Date、 Double、 Float、 Icon、 Number及Object七种数据类型, 可使用系统提供的内置渲染器及编辑器进行配置[5];对于表格中包含的JCheckBox、JComboBox、JTextField等组件, 则需为相应单元格组件调用setCellRenderer () 、setCellEditor () 方法显示设置渲染器及编辑器, 实现表格的个性化渲染及编辑状态定制。主要代码如下:

由此可知, 渲染器Renderer和Editor的结合赋予了Swing组件灵活地定制人性化用户界面的强大功能。

3.3 运行效果

JTable组件及其MVC模型在“音乐意象加工水平研究测试”系统设计中得到了很好地应用, 效果图如图4所示, 界面设计灵活, 定制功能强, 甚至可以定制出更复杂的表中表以满足用户的个性化界面需求。

4 结 论

虽然MVC模式增加了系统结构和实现的复杂性, 并可能产生过多的更新操作, 但由于Swing包复合数据类型组件采用的V-C结合较紧密, 加之目前计算机硬件性能愈加强大, 由组件分隔带来的开销几乎可以忽略不计。相反, 由于Swing的复合数据类型组件采用的事件代理与渲染机制, 使用户界面的设计能在友好的操作中享受强大的人机交互, 满足用户实际需求, 保证了良好的扩展性、灵活性, 提高了程序的开发效率。

参考文献

[1]阎宏.Java与模式[M].北京:电子工业出版社, 2002.

[2]Alan Shalloway, James R Trott.设计模式精解[M].熊节, 译.北京:清华大学出版社, 2004.

[3]孙卫琴, 李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社, 2004:235-238.

[4]Bru ce Eckel.Java编程思想[M].3版.陈昊鹏, 饶若楠, 等译.北京:机械工业出版社, 2005:530-538, 572-574.

上一篇:计划生育利益导向的演讲稿下一篇:童年的游戏作文400字