应用程序十篇

时间:2023-04-01 09:16:23

应用程序

应用程序篇1

关键词:Authorware;多媒体;程序;打包;

中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2013)08-1912-02

无论使用什么开发工具进行程序设计,最终都要将程序制作成可执行的文件进行,Authorware也不例外。利用Authorware可以开发出独立运行的多媒体软件,这也是Authorware优于其他一些多媒体制作工具的原因之一。下面就介绍一下Authorware应用程序打包发行的方法和注意点。

1 程序文件打包前的准备

一个完整的应用系统应该包括可执行文件及使可执行文件能够正常运行的所有部件。在将应用系统递交到最终用户手中之前,必须对它进行严格的测试。在设计期间Authorware程序文件能够正常运行,并不意味着由其打包生成的可执行文件同样能够正常地运行在用户的系统中,最常见的问题是可执行文件运行时找不到外部媒体文件或各种各样的支持文件,所以在Authorware程序文件打包前要做好一些相应的准备工作。

1.1 确定多媒体数据的存放方式

这一问题其实在程序设计期间就应该得到解决,在这里讨论为了突出其重要性。

Authorware可以通过两种方式导入图形、图像、声音、数字化电影等多媒体文件:嵌入方式(也称为内部方式)和链接方式(也称为外部方式)。如果选择嵌入方式(这也是Authorware默认的选择),则多媒体数据就包含在Authorware程序文件中,程序文件也会因此而增大;如果选择链接方式,则Authorware程序文件中只包含了多媒体文件的名称和存储位置等少量信息,而多媒体数据则以外部媒体文件形式存在于程序文件外部,在Authorware执行到相应设计图标时,会根据导入文件时记录下来的路径信息自动找到并打开外部媒体文件。

实际程序设计时,将图形、图像、声音、数字化电影存储在程序文件的外部,可以减少可执行文件的大小并且便于将来使用替换的方法对系统进行升级,但是整个应用系统包含的文件数量会大大增加。最好只将两类多媒体数据存储在可执行文件外部:一是将来最有可能发生变化的多媒体数据,二是程序中反复使用多次的多媒体数据。

当程序文件中使用的外部媒体文件数量较多时,管理就成了一个大问题。Authorware专门提供了一个外部媒体文件管理工具来帮助解决这一问题,那就是外部媒体浏览器。使用外部媒体浏览器可以观察和控制程序与外部媒体文件的链接关系。

1.2 规范各种外部媒体文件的位置

如果在Authorware程序中使用了大量的多媒体数据,会使程序文件体积过大,影响播放速度,所以常将这些多媒体数据作为外部媒体文件存储,即在程序文件中按链接方式导入多媒体数据文件。对于这些文件,不同类型一般放在不同的目录下,以便管理。比如,图片放在image文件夹中,声音放在wav文件夹中,视频放在avi文件夹中等。

1.3 使用搜索路径

多媒体程序运行时,Authorware会根据一定的搜索顺序去搜索需要的文件。如果在默认的路径和指定的路径目录下没有找到程序所需的文件,程序就无法正常运行,轻者不显示某些信息或某种效果,重者会导致程序结束运行。所以在Authorware应用程序打包之前进行正确的路径设置非常重要。有两种方法可以完成这一设置:一是将需要使用的文件放到Authorware默认的搜索目录下;二是在程序中指定Authorware的搜索路径,然后将需要使用的文件放到该目录下即可。

1.3.1 Authorware默认搜索路径

当某个Authorware程序运行时,需要找到某些外部文件时,Authorware会在一系列的默认路径中查找这些文件。将需要使用的文件放置到这些文件夹中,Authorware就可以快速找到它们。Authorware默认的搜索路径有:文件第一次被加载时所在的目录(如果多媒体程序已经打包或者移动到其他位置,Authorware将无法找到该文件,除非在程序中指定文件的位置。);多媒体程序所在的目录;包含Authorware或Authorware运行文件Runa7w32.exe的文件夹,并且有一个程序处于激活状态;Windows目录,通常是“c:\Winnt”;Windows系统目录,通常是“c:\Winnt\System32”。

Authorware将按照上面给出的顺序搜索。只要将需要的外部媒体文件、支持程序文件等放置到以上目录中的任何一个中,Authorware都可以找到它们,程序就可以正常运行。但为了防止Windows目录越来越大,一般不使用Windows目录和Windows系统目录作为默认路径。

1.3.2 指定程序搜索的路径

在Authorware提供的默认搜索路径中,并没有非常理想的选择,所以在大多数情况下,将外部文件放置到程序默认的搜索路径中并不是最佳选择,常用的方法是在程序中指定搜索的路径。在Authorware中指定搜索路径的常用方法是通过设置程序文件的属性来实现。

1.4 带上支持文件

如果在程序中用到了外部过渡效果、多种格式多媒体数据或外部函数,就需要为它们提供相应的支持文件。究竟要带上哪些支持文件应根据程序中包含的内容而定。主要的支持文件有:

1)如果打包生成.a7r文件,则必须提供Runa7w32.exe文件。因为.a7r文件只能由Runa7w32.exe文件执行。

2)为各种格式的图像、声音、数字化电影数据提供Xtras支持文件。例如在程序中使用了BMP图像,就必须提供Bmpview.x32文件。所有的Xtras文件必须安装在可执行文件(或者Runa7w32.exe)所处文件夹下的Xtras文件夹中。

3)为非内置的过渡效果提供Xtras支持文件。在过渡效果的选择中,除了内置类别以外的那些过渡效果,都是由Xtras提供的。可以从【过渡效果】对话框中得知过渡效果位于哪个Xtras文件(同一个Xtras文件往往包含多种过渡效果),然后将Xtras文件安装到可执行文件(或者Runa7w32.exe)所处文件夹下的Xtras文件夹中。

4)Sprite Xtras需要的支持文件。Sprite Xtras的功能是使Authorware能引入更多类型的媒体,例如Flash Xtras使Authorware能引入Flas。如果使用了Sprite Xtras,则必须将相应的Xtras文件安装到可执行文件(或者Runa7w32.exe)所处文件夹下的Xtras文件夹中。例如对于Flash Xtras,必需的支持文件是FlashAst.x32。

5)Scripting Xtras需要支持的文件。Scripting Xtras提供了一些扩展Authorware功能的函数,使用方法和系统函数差不多。如果使用了Scripting Xtras,则必须将相应的Xtras文件安装到可执行文件(或者Runa7w32.exe)所处文件夹下的Xtras文件夹中。

6)将外部函数文件(.DLL,.U32)安装到可执行文件能够找到的地方。

7)如果系统中应用了媒体库,则应将库文件存放在程序文件所在的文件夹中。

8)如果系统中使用了非系统(Windows系统本身自带的字体),则要为用户的系统安装相应的字体。

如上所述,如果在程序中使用了各种格式的多媒体数据及非内置的过渡效果、Sprite和Scripting等Xtras,就必须将相应的Xtras支持文件随同程序文件一起发行。除手工查找所需的Xtras支持文件外,还可以使用Authorwae提供的菜单命令,自动进行查找并加以复制。

1.5 进行程序运行界面的设置

如果应用程序在最后运行时不希望展示窗口有标题栏和菜单栏的,这也可以通过设置程序文件的属性来实现。

Authorware开发的多媒体程序打包之后,其展示窗口尺寸就不可改变了,当Windows系统的显示分辨率大于展示窗口时,展示窗口之外的内容就会和展示内容同时显示出来,这样展示窗口以外的内容可能会影响展示窗口的内容,这时可以使用外部函数将展示窗口以外变为黑色,具体方法为:将外部函数库Cover.u32复制到应用程序所处目录,在流程线的开始和结束处各放置一个计算图标,将“cover()”放在启始计算图标中,将“uncover()”放在结束计算图标中即可。

2 程序文件打包

对于用Authorware制作的普通的应用程序,可使用菜单命令进行文件的打包。具体方法为:

1)打开需要打包的Authorware应用程序文件;

2)执行菜单命令【文件】|【】|【打包】,打开【打包文件】对话框,如图1所示;

图1 Authorware应用程序打包

3)在【打包文件】下拉列表框中选择打包方式:

Without Runtime:表示打包后文件不形成可执行文件.exe,而是.a7r文件,由Runa7w32.exe文件来执行。

For Windows 9x and NT variants:表示打包后形成可执行文件.exe,适用于在Windows 9x 和NT等操作系统上直接运行。

4)按需要选择复选项:

【Resolve Broken Links at Runtime】表示运行程序时,恢复断开的链接;

【Package All Libraries Internally】表示将所有与当前程序有链接关系的库文件成为打包文件的一部分,否则库文件需要单独打包;

【Package External Media Internally】表示将程序中以链接方式使用的外部媒体文件和程序文件一起打包,这里的外部文件不包括数字电影;

【Use Default Names When Packaging】表示打包后的文件与当前程序文件同名,不再弹出对话框让用户指定打包后文件的路径和名字。

5)执行【保存文件并打包】,完成程序打包工作。

总之,通过对Authorware应用程序进行打包,使Authorware应用程序能够脱离其设计环境独立运行,这是应用程序最终用户所要求的。同时,打包和发行Authorware应用程序本身就是一件较复杂的工作,所以将应用系统递交到最终用户手中之前必须进行严格的测试,确定最终需要发行的文件能将它们合理地组织在一起。

参考文献:

[1] 邵剑龙,叶艳青,徐冲,等.Authorware多媒体课件的Web与浏览[J].计算机应用研究,2003(05).

应用程序篇2

Web应用程序既不是一个真正意义上的Web网站。也不是一个传统的应用程序,它是Web网页和用来完成某些功能的其他资源的一个集合,是在B/S结构中构建的基于浏览器的服务器端程序。对Web应用程序的开发,实际上也就是对客户端程序和服务端程序的开发。

1 客户端程序开发。通过浏览器在客户端展现的是信息内容。而HTML语言则是信息展现的有效载体,此外,还有XML语言。HTML语言关心的是信息的表现形式,而XML语言关心的是信息本身的格式和数据内容。通过XSLT标准,可将XML信息转换为HTML等不同的信息展现形式,最终在浏览器中执行和显示。为了提高开发人员对信息展现格式的控制能力,可采用CSS技术,CSS技术可以在浏览器的支持下,使页面获得更好的展现效果。动态交互的HTML页面实现方法有多种,DTHML技术无需启动Java虚拟机或其他脚本环境,就能获得更高的执行效率,而Javastop技术需启动Java虚拟机,但能获得更好的动态效果。除此之外,还有Applets技术,它是处在服务器端的可以被浏览器下载并在浏览器上运行的Java小应用程序,像网易的聊天室采用的就是这一种方式,当然这还必须有与此相应的服务器端程序。

2 服务器程序开发。到目前为止,服务器端程序根据运行时的具体情况,动态生成HTML页面的技术有CGI、PHP、ASP、JSP、ASP,NET等。每一种都有它的特点及擅长的地方,开发人员要根据需求和具体情况来定哪一种系统环境和开发技术。开发人员对于相似编程语言或范例的熟悉程度同样可以作为选择的因素。没有完美的方法和个人实际情况可以表明哪种技术是最佳选择。CGI是公共网关接口,是定义Web服务器、浏览器和应用程序之间的相互操作中共同遵守的规则集。CGI程序的最大特点是可以用C、C++、Pascal等任何一种语言编制,可运行在任何一种平台上,只要它符合CGI的规范即可,且大多是经过编译后的可执行程序,运行速度快,开销小,安全性高。PHP是一种开放源代码服务器端的HTML嵌入式的脚本描述语言,它将HTML代码和PHP指令合成为完整的服务端动态页面。在保持了与Perl相当能力的前提下。大大加强了对数据库的操作能力。丰富的数据库操作函数,可以进行当前几乎所有的数据库操作。使用PHP语言创建基于数据库的网页将是一件极其简单的事情。更为重要的一点是,PHP语言可以在当前几乎所有的平台上运行,这就决定了使用PHP语言编写的程序可以方便地进行系统之间的移植。

SP是微软公司推出的一种来取代CGI的技术,它是基于IIS的开放式的服务器端脚本环境,使用ASP可以很好地将HTML、脚本命令和组件融合在一起,集简单性、高效性和易扩展性于一体。它使开发人员可以使用几乎所有工具来组合HTML代码,这些脚本可以利用本地服务器或远程服务器上运行的组件来存取数据库、应用程序或处理信息。因此开发简单、功能强大。对于ASP。可以便捷地使用Acfivex组件来执行复杂的任务,只要安装了符合Activex脚本标准的相应脚本引擎,就可以在ASP页中使用任何一种脚本语言。通过创建自己的Acfivex组件,可以将应用程序中的商业逻辑封装到能够从脚本、其他组件或从其他程序中调用的模块。ASP由于使用了COM组件所以它变得十分强大。但是,这样的强大由于Windows NT系统最初的设计问题而引发大量的安全问题。同时。无法实现跨操作系统的应用,它只能工作在Windows环境下。

JSP是由Sun公司在Java语言上开发出来的一种动态网页制作技术,该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。在传统的网页HTML页面中加入Java程序式段和JSP标记,就构成了JSP网页。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页等,这就是建立动态网站所需要的功能。JSP技术可以将网页中的动态部分和静态的HTML相分离,这有助于程序开发人员和页面设计人员同时展开工作而互不干扰。同时也保护了作者的源代码。JSP页面采用可重用的组件,这种基于组件的方法加速了总体开发过程。

二、性能及安全

应用程序篇3

资源管理器(explorer.exe)在Windows系统中担任Shell(外壳)一职,他每天监视着主人(电脑用户)的一举一动,对主人发出的各种指令做出解释,然后通知操作系统来完成操作。这天,资源管理器正想打个盹,忽然发现主人用鼠标双击了一个名为FirstVC.exe的程序(本文最后提供了这一程序的创建过程,并在博墅.cn上提供这一程序及完整源代码的查询下载),他知道自己又有得忙了。

1Windows通过Shell调用程序

资源管理器首先调用CreateProcess函数激活FirstVC.exe,为它生成一个进程,并为这一进程划出一块专门的活动场地(一个4GB地址空间)。接着通过加载器把FirstVC.exe所需要的程序代码、数据、动态链接函数库(DLL)等程序运行必备“物资”都装载到这个专用空间中。注意,进程只是一个活动空间,系统还需要为这个进程创建一个主线程,才能被CPU调用。

2调用入口函数WinMain

万事俱备,接着系统通过启动代码开始调用FirstVC.exe的WinMain(_tWinMain)函数。各位注意了,这个WinMain可是所有普通Windows程序的门户(入口函数),它类似于C/C++程序中的Main函数。

3注册窗口类

WinMain做的第一件事是找到Windows:Windows先生,我是FirstVC.exe,要在您这登记一下。Windows给了他一张表格,FirstVC.exe开始认真填写起来:

ATOM MyRegisterClass(HINSTANCE hInstance)

{ //通过填写WNDCLASSEX结构,给定程序窗口的大小、菜单、图标,关联调用的过程函数等等。

...... }

4创建窗口实例

Windows登记完这些信息,马上就调用CreateWindow函数为FirstVC.exe创建了一个临时档案,接着又通过ShowWindow函数显示出FirstVC.exe主窗口。

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

hWnd = CreateWindow(...);

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

}

5创建窗口消息循环

FirstVC.exe看到自己的主窗口终于显示在桌面上,激动得不知做什么好了。见多不怪的Windows慢条斯理地说:小伙子,我已经给你配了一个程序专用邮箱,别忘了收信哦。FirstVC.exe赶紧又雇了两个函数日夜巡视邮箱,这就是所谓的“消息循环”:

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

FirstVC.exe是个新手,所以工作起来兢兢业业,认真对待每一条收到的消息,有的是电脑主人(用户)通过键盘发送的,有的是按鼠标发送的,还有的是系统内部(如定时器)发送来的。它把这些消息分门别类传给后台WindowProc进行处理。

6窗口过程函数的实现

WindowProc每收到一条消息,就会与自己预先定义的消息类型进行比较。比如,电脑主人用鼠标调整主窗口大小的时候,发出的是WM_SIZE消息,就把这一消息发到“case WM_SIZE:”分支中处理;如果电脑主人在窗口内写写画画,则发出的是WM_PAINT消息,发到“case WM_PAINT:”分支中处理。一般来说,我们程序员要做的事情,就是在这个窗口过程中处理来自用户、系统发出的各种消息而已。

7退出应用程序

FirstVC.exe正忙得不亦乐乎,电脑主人突然单击窗口上的关闭按钮,一个WM-QUIT消息随后而至。FirstVC.exe极不情愿地做了一些后续处理,依依不舍地关掉窗口休息去了。

Just Do It!

创建你的第一个Windows程序

应用程序篇4

程序题综合教学法也可叫主题分段教学法,它是一种新的教学方法,可在各种学科及课的类型中加以应用,它是吸取著名的程序教学法的原理,结合我国目前的情况加以发展改进创立。程序教学(programmedinstruction)是美国哈佛大学教授(行为主义心理学家)根据雷西(教育心理学家)的自动学习机而创设的机械程序教学进行。它的原理是根据哥伦比亚大学教授桑代克的学习定律(效果律、准备律、练习律),这种教学机器又叫斯金钠教学机,后来又进一步发展用非机械的程序教材进行教学。程序教学法近年在很多国家中实地应用,效果显著。为了丰富我国生物教学内容,笔者加以改进,主要用非机械的程序教学法,结合讲解、自学阅读、观察演示、检测练习及问题解答等综合方法进行。 

程序题综合教学法教学目的明确、逻辑性强、重点突出、循序渐进、学生积极性高,能认真学习,因材施教,反复练习,教师能及时了解教学效果,又能结合电子计算机进行。 

程序题综合教学法的课时计划在课的类型、教学目的,教具上与其他教学法相似,但在教具上要准备程序题图表(可制成挂图形式)及学生答卷等。在教学过程中与其他教学法大不相同。首先教师要根据教材内容,按次编写程序课题,注意重点难点,课本内容逻辑性等,列出问题。问题要具有吸引力,每一问题或图表作一分段主题挂在讲台上,也可将分段主题写在黑板上,比较节约,大的主题下也可再分小的主题,使学生思考和解答,然后叫学生自行按次阅读教材,使学生自愿或由教师指名答复,必要时进行讨论,再由教师正确总结解答,这样一个题目一个题目的提出,解答讨论总结将教材内容讲完。为了增强理解,反复练习,再由教师提出重点难点讨论讲解,最后可给题目答卷使学主进行书面解答,可使学生互相评分,这种教学法可不留给学生家庭书面作业。 

现将九年制义务教育课本“生物”(华师大、上海师大编写,上海科技出版社1994),“细胞”一节程序题综合教学的课时计划列下供参考。 

1 课的类型: 

新课 

2 教学目的: 

使学生了解“细胞”是构成生物的基本单位、动植物细胞的结构和异同以及细胞的分裂繁殖和生长。 

3 教具及器材: 

程序题图表(可制成挂图形式)。挂图:虎克像及其自制的显微镜及软木细胞图,现代显微镜,动、植物细胞模式图,细胞的分裂和生长图表,学生书面答卷。器材:西瓜、番茄成熟果实,白菜或青菜(小白菜)叶柄。模型:细胞结构等模型。 

4 教学过程 

4.1 教师在组织教学后,可提问1~2个“绪论”中问题,如什么是生物学,怎样学好生物学等,也可不复习前课直接讲新课。 

4.2 教师按次出示程序题有关图表,并宣读程序题。 

程序题(分段主题)1:细胞是谁人发现的?怎样发现的?怎样才能看到细胞?教师然后使学生阅读“细胞”一节后,讨论、解答、总结。 

程序题2:动物和植物细胞结构有哪些?有何异同?教师使学生阅读(1)细胞的基本结构一段课文,然后结合细胞结 构图表模型使学生解答,讨论综合题,这一段是本课的重点和难点,应加强学习。 

程序题3:切割西瓜、番茄等果实时,流出甜味或酸味的汁液或切割白菜或青菜的叶柄流出汁液是从那里流出来的?使学生思考讨论,解答总结。 

程序题4:细胞是怎样分裂的?使学生阅读(2),细胞的分裂一段文图(课本11页),进行解答讨论。 

应用程序篇5

2004年春天来到北卡罗来纳州首府罗利之前,我从来没有过多地关注过桥梁和天桥。我认为没必要为了安全而定期检查桥梁,当然更没听说过“桥梁检查员”这个职衔。我只知道,那些头戴安全帽、身穿安全背心的人负责清理路上被车扎死的动物。

当使用了Mobile Inspector应用程序的同步组件后,我马上改变了这种想法。北卡罗来纳州共有大约19000座桥梁和涵洞桥需要定期检查,大约有60名现场检查员负责检查工作,包括水下作业的四个小组。这些检查员在现场作业时忙于记笔记、拍照片,然后回到总部后还要准备检查报告,用来确定哪些桥梁可以用一段时间、哪些桥梁需要立即检修。

Mobile Inspector应用程序用于收集检查员测量及观察的数据,并用来存储数字照相。目的就是把数据录入工作从总部扩大到现场,从而节省成本、满足要求以电子方式记录桥梁检查数据的联邦政府法规。为了有可能完成这项工作,该应用程序使用了语音控制、手写识别及定制的速记工具。

架构描述

每个检查员在现场使用运行Windows 2000的平板电脑(Tablet PC),如果这是传统的客户机/服务器两层结构,或者甚至是两层分布式层次结构,所有平板电脑就可以直接与中央数据库进行通信或者保持同步。不过由于安全因素,只有总部才可以连接到中央数据库。这意味着,每趟现场检查之前,数据都要拷贝到小组负责人的平板电脑上,检查报告制作完毕后,还要把数据拷回去。数据还要在小组负责人的PC和小组成员的PC之间来回拷贝。如果遇到大型桥梁,得拷贝好几次,这些操作使用无线连接在现场进行。

图1表明了Mobile Inspector应用程序涉及的计算机是如何在三层环境中排列的: 中央数据库服务器位于顶层,小组负责人的平板电脑位于中间层,小组成员的PC位于底层。小组负责人通过有线局域网与中央数据库进行通信,通过Wi-Fi与小组成员进行通信。同步服务器软件同时放在中央数据库的计算机和小组负责人的PC上运行,这些服务器分别与小组负责人的PC和小组成员的PC上的同步客户软件进行联系。

应用程序本身使用关系数据库管理系统把数据存储到平板电脑上,其中包括数据照片。这么做是为了获得以下优点: 提供数据完整性、可恢复性、强大功能以及简洁性,这些优点也是人们使用关系数据库管理系统(RDBMS)的通常理由。不过缺点同时存在,从单一中央数据库移到涉及众多远程数据库的三层分布式结构并非易事。因为无法为每支检查小组随派一名数据库管理员,但哪怕在无线连接不可靠的情况下也要做到同步过程不出差错,且同步过程都必须做到可靠。

NCDOT(The North Carolina Department of Transportation)的数据库配置环境使用Oracle 9i作为中央数据库、Adaptive Server Anywhere(ASA)作为平板电脑上的远程数据库,使用MobiLink同步软件来处理Oracle-to-ASA和ASA-to-ASA的传输任务。ASA和MobiLink都作为iAnywhere Solutions公司的SQL Anywhere Studio Version 9的一部分来交付。

无线移动下的同步

MobiLink软件由客户机和服务器两部分组成。远程客户机连接到本地数据库后,开始同步过程,它能够收集自上一次同步后出现变化的所有行数据,然后把这些数据上传到MobiLink服务器。随后服务器把上传的变化数据添加到中央数据库,选择所要下载的行数据,再把这些数据发送到客户机。最后,MobiLink客户机把下载的变化数据添加到本地数据库,并向服务器发回确认信号。

在任何环境下,故障处理都是同步过程的一个重要环节,在连接经常中断或者偶尔中断的移动Wi-Fi环境下更为重要。有了MobiLink,就可以在上传和下载数据库事务这一层面处理故障。如果上传失败,上传的所有变化数据都恢复原状,整个过程停止。恢复工作包括再次运行同步过程。上传数据流从头开始重新组合,重复上传过程,就好像从未遇到过失败。

下载期间的故障采用类似方式加以处理: 如果下载失败,下载数据恢复原状,恢复方法如出一辙: “再试一次”。不过这回只是重复下载过程,因为前一次上传是正确的,事务已提交。使用MobiLink,这一切都是自动的。

Mobile Inspector应用程序解决了两大问题: 首先,使移动环境下的数据同步简化,人们往往会低估同步环境具有的复杂性,如果它是大型业务应用程序当中不可或缺的一部分,更是如此。其次,关系数据库数据层面的同步可以简化这种环境,因为它可以把同步逻辑与应用程序代码分开来,把复杂的数据结构精简成简单的行和列,并且可以利用数据库的基本特性,譬如事务提交和列默认值。

实施业务规则的重要性

MobiLink的主要优点之一在于,能够利用事件驱动型架构,从而定制同步过程。你可以提供定制脚本,明确规定针对任何特定事件而应当采取的处理步骤。MobiLink提供了极佳的控制能力。譬如在涉及100张表的同步过程中,几乎会有成千上万的不同事件。当然,大多数事件并不需要脚本,默认操作就可以了。以NC DOT为例,针对以下事件编写了定制脚本:

先进的应用程序往往会给同步过程带来复杂的业务规则,Mobile Inspector也不例外。MobiLink脚本既用于“只有地区主管才能得到地区主管检查表里面的行”这么简单的业务规则,也用于比较复杂的选择规则。譬如说,下面的download_cursor脚本选择的Inspection行(1)被赋予特定的检查小组; (2a)还没有被下载,或者(2b)自上一次下载以来得到了更新。这里显示的Select利用了BRI_RECD_SYNC_IDS表,以确定被赋予给该小组的行; 早些时候的内容多得多的begin_download脚本可以为这张表批量载入数据,以便可用于类似这样的脚本:

SELECT BRI_INSPCTN.INSPCTN_ID,

BRI_INSPCTN.STRCTR_ID,

BRI_INSPCTN.INSPCTN_DT,

...

BRI_INSPCTN.APRVL_DT

FROM WIGINS_UNIT.BRI_INSPCTN

WHERE EXISTS

( SELECT * FROM WIGINS_UNIT.BRI_RECD_SYNC_IDS,WIGINS_UNIT.BRI_TMP_SYNC_VRBLS

WHERE BRI_TMP_SYNC_VRBLS.SESSION_ID = TO_NUMBER ( USERENV ( SESSIONID ) )

AND BRI_RECD_SYNC_IDS.GLOBAL_DB_ID = BRI_TMP_SYNC_VRBLS.GLOBAL_DB_ID -- for this remote

AND BRI_RECD_SYNC_IDS.STRCTR_ID

= BRI_INSPCTN.STRCTR_ID -- matches on structure id

AND BRI_RECD_SYNC_IDS.INSPCTN_ID

= BRI_INSPCTN.INSPCTN_ID -- matches on inspection id

AND ( BRI_RECD_SYNC_IDS.FRST_DOWNLOAD_TS = '1900-01-01' -- not yet been downloaded

OR BRI_INSPCTN.LST_MDFD_TS

>= ? ) ) -- updated since the last synch

MobiLink脚本由MobiLink服务器来调用,但它们实际上由中央即“合并”数据库服务器来执行,在与MobiLink服务器之间来回传送行。在NCDOT,用两套MobiLink服务器和两套脚本来实施三层数据库架构。在顶层,用Oracle PL/SQL编写的脚本由Oracle 9i中央服务器来运行,上面显示的示例就是这些脚本当中的一个。行传送到中央位置运行的MobiLink服务器,再从这里传送到检查办公室处小组负责人的平板电脑。

在现场,另一个MobiLink服务器在小组负责人的平板电脑上运行。它调用在同一台PC上运行的ASA数据库服务器里面的SQL脚本。这些行传送到MobiLink服务器上,再从这里通过无线链接传送到小组成员的PC上。在这种结构下,与Oracle中央服务器进行同步时,小组领导人的数据库充当远程数据库; 与小组成员进行同步时,它又充当合并数据库。

分布式数据 面临的难题

彼此并非不断联系的分布式数据库无法为整个系统的锁定提供任何机制。尤其是,没有办法阻止你把有着同一主键的两行插入到两个不同的远程数据库上,因而如果这些行上传到合并数据库,就会导致主键冲突。

一个解决办法就是使用包含普通的自动递增列的组合主键以及“数据库标识符”,解决不同数据库的自动递增值相互重叠的问题。多列主键会让应用程序开发人员觉得不便,因为这使得外键定义过于复杂,所以全局惟一标识符(GUID)有时被认为是单列主键方案。GUID是128位的整数,有着“6F9619FF-8B86-D011-B42D-00C04FC964FF”这样的值。虽然它们具有惟一性,可是会导致数据库索引结构庞大,而且调试时,其值处理起来很麻烦。另一个常见的解决办法就是使用键池(key pools)。在键池,一组组惟一键值由中央服务器生成,供一个个远程数据库以后下载使用。键池确实可行,可是要合理实施及管理颇有难度,在多级层次结构下更是如此。另外,它们也会带来额外的网络流量。

ASA提供了比较巧妙的办法,可以解决全局惟一主键的问题: 通过Global Autoincrement列默认值的分区自动递增工具(partitioned autoincrement facility)。每个数据库被赋予惟一的数据库标识符: 1、2、3,依次类推,该值可以自动用来确定使用哪个分区即哪个范围的值来为该数据库赋予主键值。

这对Mobile Inspector应用程序来说至关重要,原因是新行经常入到每个远程数据库上面的许多表里面,它们都有自动赋予的或者“人工的”主键。以下示例表明了用来把徒手画的草图保存在BLOB列当中的BRI_SKTCH表。分区大小被设成2000000,这意味着在每个分区被用尽之前,每个检查员可以画这么多的草图。有符号的32位整数主键可以长达2147483647,除以2000000得到1073,这就是在不引起任何主键冲突的情况下,可以使用该机制的数据库的最大数量。这适用于Mobile Inspector应用程序; 如果是其他比较庞大的应用程序,可以使用无符号的64位整数。

CREATE TABLE BRI_SKTCH (

SKTCH_ID INTEGER NOT NULL DEFAULT GLOBAL AUTOINCREMENT ( 2000000 ),

STRCTR_ID INTEGER NOT NULL,

SKTCH_TTL VARCHAR ( 45 ) NOT NULL,

SKTCH_DES VARCHAR ( 130 ) NULL,

FILE_NM VARCHAR ( 32 ) NULL,

DEL_FLG_IND BIT NOT NULL DEFAULT 0,

LST_MDFD_TS TIMESTAMP NOT NULL DEFAULT TIMESTAMP,

SKTCH_LOB LONG BINARY NULL,

SKTCH_NBR INTEGER NOT NULL,

SKTCH_SZ_AMT INTEGER NULL,

PRIMARY KEY ( SKTCH_ID ) );

分布式数据的另一个难题就是减少让数据库保持同步所需的网络流量。专用同步软件出现之前,要确定需要来回传送哪些数据,就得编写应用程序代码。有时候,该代码需要传送大量的数据,旨在确保没有任何遗漏。在另一些情况下,搜索需要调和的差异情况所用时间多久,传输时间就有多久。

MobiLink客户机通过读取远程数据库事务日志来确定需要上传哪些数据,从而减少了网络流量。只有自从上一次同步后入、更新或者删除的行才会被发送。另外,如果某行在同步过程中改动了多次,那么只是最终版本才会被上传。

MobiLink服务器在确定下载数据流时不具备同样的优点。因为要处理不同的数据库,如Oracle、 SQL Server和DB2,MobiLink无法访问事务日志。如果你不想每次都下载整张表,就必须在download_cursor脚本里面编写相应的WHERE子句。

应用程序篇6

文/Jonathan Seff

在Lion自带的程序中,iCal的变化最为明显。它从iPad上汲取了灵感,它不但拥有简洁的外观,还提供更大的浏览和编辑的空间,让你轻松掌控忙碌的一天。

全新外观

首先,你会注意到灰色的标题栏不见了,取而代之的是皮革图案,看起来和以前台式的日历很像。仔细端详,你会发现上面还标有剩余的日历张数。

以前,日历列表在侧边栏显示,可以显示也可以隐藏。如今在默认情况下,该列表是隐藏的,只有当你点击“日历”时,它才会以弹出菜单的形式出现。想要隐藏日历列表中的某些列表,可以点击“隐藏”,当你将光标移动到标题上时,这些隐藏的日历又会出现。但只会隐藏日历列表,而不会隐藏日历中的事项。

“日历”按钮的右侧有一个添加(+)按钮。点击它,会弹出一个创建快速事件窗口,你只需在此处输入常用的短语来添加事项即可。例如:“周六晚上7:00白宫晚宴”,iCal会在默认的日历中将事项创建为“下周六晚7:00-8:00白宫晚宴”,如果你把“晚上7:00”改成“晚上7:00-9:00”两个小时,并且把“周六”改成“8月25日”这一具体日期,那样iCal就会在你指定的日期上创建两个小时的事项。这一功能适合用来快速创建简单的事项。

按年份显示

除了可以按照日、周、月来显示,按年显示模式可让你同时纵观12个月的安排,当月和当日则以高亮突出,并且可在月份之间自如切换。在按年显示模式中,iCal还会用代表每天繁忙程度的颜色显示列表,颜色包括白色(不忙或小忙)、黄色(忙),橘色(有点忙)和红色(非常忙)。

不过,iCal缺少点击日历列表中的某一个日历,然后在该日历上创建事项的功能。在早先的操作系统中,选择某个日历,然选择“文件”、“新建事件”,或在iCal中双击就能在选定的日历上创建事项。在Lion的iCal中双击只能为默认的日历创建事项,然后再通过编辑来选择你想添加事项的日期。不过,点击时长按“+”按钮,可以在弹出的选项中选择你想添加事项的日历。

地址溥

文/Onathan Seff

全新的地址簿看上去很像iPad上的通讯录,除此之外还有很多的改变。

在Snow Leopard系统里,地址簿能以组别、名称和卡片三种并列方式显示,也可以单独显示一张联系人卡片。而Lion扩展了地址簿的可视性:你可以在窗口左边浏览一个或者多个联系人列表,在右边浏览他或者他们的联系人名片,当然,还是可以只浏览联系人的卡片。

照片和姓名

地址簿可让你轻松将iP―hoto图片变成联系人照片。在任意一个联系人卡片上双击空白相框,再点击从“iPhoto导入面孔”按钮(底部最左边),浏览iPhoto面孔,然后点击面孔选择照片。你可以缩放并裁剪照片,得到你想要的效果,最后点击“设定”完成。

苹果当然知道社交网络的重要性,因此在全新地址簿里增添了两个新的字段。第一个是Twitter。添加联系人账户名,然后可以单击Twitter,会出现一个弹出菜单,里面有查看资料和发送选项。点击“查看用户资料”,地址簿将打开Mac版官方Twitter应用程序,你可以查看到联系人的用户资料。点击“发送”,就能在Twit-ter中发消息给联系人了。

第二个是描述文件。用户可以通过地址簿访问到联系人在Facebook、Linkedln、Flickr、Myspace或Twitter的个人资料。

iCHAT & FACETIME

文/lex Friedman

iChat的变化虽小,但深得用户喜爱。最大的变化是用户可以

使用自己的Yahool ID登录,所有Yahoo!好友将会出现在好友列表中。(此外也可用AOL Instant Messenger[AIM],and 、Google Talk和Jabber ID登录)。

iChat将使用不同服务的好友集中在同一个好友列表中,不必切换多个窗口即可找到他们,而且你还可以与所有好友共享可用性和状态消息。

全屏聊天

另一个极受欢迎的是按#-F(或选择“编辑”查找),并输入好友的名称或名称的一部分,输入过程中,iChat即可过滤好友列表,实时显示匹配结果。

应用程序篇7

论文摘要:在目前流行的windows操作系统中,设备驱动程序是操纵硬件的最底层软件接口。为了共享在设备驱动程序设计过程中的经验,给出设备驱动程序通知应用程序的5种方法,详细说明每种方法的原理和实现过程,希望能够给设备驱动程序的设计者提供一些帮助。 

 

 

为了保证操作系统的安全性和稳定性以及应用程序的可移植性,windows操作系统不允许应用程序直接访问系统的硬件资源,而是必须借助于相应的设备驱动程序。设备驱动程序可以直接操作硬件,如果应用程序和设备驱动程序之间实现了双向通信,也就达到了应用程序控制底层硬件设备的目的。它们之间的通信包括两个方面:一方面是应用程序传送给设备驱动程序的数据;另一方面是设备驱动程序发送给应用程序的消息。前者的实现较容易,通过createfile()函数获取设备驱动程序的句柄后,就可以使用win32函数,如deviceiocontrol()、readfile()或writefile()等实现应用程序与设备驱动程序之间的通信。后者的实现远比前者复杂,同时介绍这方面情况的文章较少。这不等于说它不重要,相反,它在有些应用场合发挥着重要的作用。设备驱动程序完成数据的采集工作后,需要马上通知应用程序,以便应用程序能够及时将数据取走并进行处理。诸如此类情况,不一而足。 

鉴于设备驱动程序通知应用程序的重要性,本人结合一些经验,对它进行了总结,归纳出5种方法:异步过程调用(apc)、事件方式(vxd)、消息方式、异步i/o方式和事件方式(wdm)。下面分别说明这几种方式的原理,并给出实现的部分源代码。 

 

1 异步过程调用(apc) 

 

win32应用程序使用createfile()函数动态加载设备驱动程序,然后定义一个回调函数backfunc(),并且将回调函数的地址&backfunc()作为参数,通过deviceiocontrol()传送给设备驱动程序。设备驱动程序获得回调函数的地址后,将它保存在一个全局变量(如callback)中,同时调用get_cur_thread_handle()函数获取它的应用程序线程的句柄,并且将该句柄保存在一个全局变量(如appthread)中。当条件成熟时,设备驱动程序调用_vwin32_queueuserapc()函数,向win32应用程序发送消息。这个函数带有三个参数:第一个参数为回调函数的地址(已经注册);第二个参数为传递给回调函数的消息;第三个参数为调用者的线程句柄(已经注册)。win32应用程序收到消息后,自动调用回调函数(实际是由设备驱动程序调用)。回调函数的输入参数是由设备驱动程序填入的,回调函数在这里主要是对消息进行处理。 

 

2 事件方式(vxd) 

 

首先,win32应用程序创建一个事件的句柄,称其为ring3句柄。由于虚拟设备驱动程序使用事件的ring0句柄,因此,需要创建ring0句柄。用loadlibrary()函数加载未公开的动态链接库kernel32.dll,获得动态链接库的句柄。然后,调用getprocaddress(), 找到函数openvxdhandle()在动态链接库中的位置。接着,用openvxdhandle()函数将ring3事件句柄转化为ring0事件句柄。win32应用程序用createfile()函数加载设备驱动程序。如果加载成功,则调用deviceiocontrol()函数将ring0事件句柄传给vxd;同时,创建一个辅助线程等待信号变成有信号状态,本身则可去干其它的事情。当条件成熟时,vxd置ring0事件为有信号状态(调用_vwin32_setwin32event()函数),这马上触发对应的ring3事件为有信号状态。一旦ring3事件句柄为有信号状态,win32应用程序的辅助线程就对这个消息进行相应的处理。 

 

3 消息方式 

 

win32应用程序调用createfile()函数动态加载虚拟设备驱动程序。加载成功后,通过调用deviceiocontrol()函数将窗体句柄传送给vxd,vxd利用这个句柄向窗体发消息。当条件满足时,vxd调用shell_postmessage()函数向win32应用程序发送消息。要让该函数使用成功,必须用#define来自定义一个消息,并且也要照样在应用程序中定义它;还要在消息循环中使用on_message()来定义消息对应的消息处理函数,以便消息产生时,能够调用消息处理函数。shell_postmessage()函数的第一个参数为win32窗体句柄,第二个参数为消息id号,第三、四个参数为发送给消息处理函数的参数,第五、六个参数为回调函数和传给它的参数。win32应用程序收到消息后,对消息进行处理。 

4 异步i/o方式 

 

win32应用程序首先调用createfile()函数加载设备驱动程序。在调用该函数时,将倒数第2个参数设置为file_attribute_normal|file_flag_overlapped,表示以后可以对文件进行重叠i/o操作。当设备驱动程序文件创建成功后,创建一个初始态为无信号、需要手动复位的事件,并且将这个事件传给类型为overlapped的数据结构(如overlapped)。然后,将overlapped作为一个参数,传给deviceiocontrol()函数。设备驱动程序把这个i/o请求包(irp)设置为挂起状态,并且设置一个取消例程。如果当前irp队列为空,则将这个irp传送给startio()例程;否则,将它放到irp队列中。设备驱动程序做完这些工作后,结束这个deviceiocontrol()的处理,于是win32应用程序可能不等待irp处理完,就从deviceiocontrol()的调用中返回。通过判断返回值,得到irp的处理情况。如果当前irp处于挂起状态,则主程序先做一些其它的工作,然后调用waitforsingleobject()或waitformultipleobject()函数等待overlapped中的事件成为有信号状态。设备驱动程序在适当的时候处理排队的irp,处理完成后,调用iocompleterequest()函数。该函数将overlapped中的事件设置为有信号状态。win32应用程序对这个事件马上进行响应,退出等待状态,并且将事件复位为无信号状态,然后调用getoverlappedresult() 

函数获取irp的处理结果。 

 

5 事件方式(wdm) 

 

win32应用程序首先创建一个事件,然后将该事件句柄传给设备驱动程序,接着创建一个辅助线程,等待事件的有信号状态,自己则接着干其它事情。设备驱动程序获得该事件的句柄后,将它转换成能够使用的事件指针,并且把它寄存起来,以便后面使用。当条件具备后,设备驱动程序将事件设置为有信号状态,这样应用程序的辅助线程马上知道这个消息,于是进行相应的处理。当设备驱动程序不再使用这个事件时,应该解除该事件的指针。 

 

6 结语 

 

在目前流行的windows操作系统中,设备驱动程序是操纵硬件的最底层软件接口。它向上提供与硬件无关的用户接口,向下直接进行i/o、硬件中断、dma和内存访问等操作。它将应用程序与硬件细节屏蔽开来,使软件不依赖于硬件并且可在多个不同的平台之间移植。本文介绍了5种设备驱动程序通知应用程序的方法,其中前3种方法主要用于vxd中,后2种方法主要用于wdm。这5种方法都经过实际测试。测试结果表明,它们都能够达到设备驱动程序通知应用程序的目的。 

 

参考文献: 

[1]欧青立,徐建波,李方敏,等. 虚拟设备驱动程序vxd的研究与开发. 计算机工程,2003 

应用程序篇8

【 关键词 】 面向对象;应用程序开发

Easily Respond to Visual FoxPro Object-oriented Application Development

Sheng Juan

(Northeastern University at Qinhuangdao, Computing Education Center HebeiQinhuangdao 066004)

【 Abstract 】 According to the problems faced by students in object-oriented application development, In this paper many key and difficult knowledge point are discussed, they are including application development thought, data analysis and database design, system interface design, interface data and database record data by value and so on.

【 Keywords 】 object-oriented;application development

1 引言

数据库由于能方便地对数据进行存储、分类、查询等操作,因而在现实中得到了较为广泛的应用,数据库技术也成为广大学生的必学课程,Visual Foxpro由于本身小巧、易用、功能全面的特点被很多学校作为教学内容,但在教学过程中学生一方面要识记数据库自身支持的命令、语句,另一方面在进行应用程序开发时又要面临对程序所涉及的各功能模块的整合,尤其是要采用面向对象的设计思想,常常会陷入困境,为此本文对面向对象的课程设计的设计思路、设计要点等内容进行了阐述。

2 应用程序开发思想

在应用程序开发过程中,主要涉及两部分内容:(1)数据部分:包括各种关系表、数据库,主要是为数据处理提供数据准备;(2)应用程序界面部分:此部分主要用来实现程序的相关功能,包括数据的添加、删除、修改、查询、统计,其中查询是数据处理中应用较多的部分。开发的步骤需要完成五方面内容:(1)需求分析;(2)数据分析与数据库设计;(3)应用程序设计;(4)软件测试;(5)应用程序。应用程序的开发流程和步骤如图1和2所示。不论应用程序的题目有何不同,都可以遵循这个框架流程进行。

3 确定需求及划分功能模块

在进行应用程序开发前,首先要分析题目,确定系统的需求,并按据“自顶向下,逐步细化”的原则,对系统所应达到的功能按层次模块进行合理的划分和设计。 这样才能下一步的程序开发有的放矢。如要要完成 “学生信息管理系统”,经分析此系统要完成以下的功能。

(1)各种信息的输入,主要包括几部分:学生信息;成绩信息;开设课程科目。

(2)各种信息的查询、修改与删除等。

(3)输出相关报表与打印,如学生表、成绩表等。

系统的功能模块图如图3所示。

4 组织数据

在对应用程序的功能确定分析之后,接下来则需要对数据进行组织,包括创建数据库及关系表、完成数据库设计,数据设计需遵循几个原则:(1)相同主题设计在一个表中;(2)避免数据冗余;(3)表中字段设置合理;(4)功能相似表合为一个表;(5)确定表间的合理关系。

根据数据库设计原则,对学生信息管理系统的的数据库设计如图4所示。

5 系统界面设置

根据设定的系统功能,可利用表单设计器方便快速的完成界面设置,通常应用程序中均会包含数据添加、数据定位、数据删除、数据查询、数据统计等操作,学生可根据对控件的掌握情况采用简单控件,如图5采用文本框、标签、按钮;或是稍复杂控件,如图6列表框、表格、选项卡等完成。对完成的各功能表单还需要通过在表单上加载菜单统一调用,来实现对各功能的调用,如图6所示。

在窗体界面设计过程中的两个难点分别是:数据操作语句的选用和面向对象的事件编程。针对第一个难点,整理了如表1中常用功能语句,可在应用程序开发过程中根据情况进行选用。

对于第二个难点,即面向对象编程,需要掌握”面向对象,事件驱动的编程思想”,将表单中控件的值通过变量和数组做好数据传递,再结合数据库语句便能较为容易的实现应用程序。如在图6中,若将文本框中对应学号,科目代码等内容添加到数据表“学生信息中”,可先将文本框中的内容赋值给变量,然后通过insert语句完成向数据表中添加数据的操作,操作代码如图7所示。

6 项目连接

在将各个功能模块开发完毕后,即可通过项目管理器对整个应用程序进行项目连编,使得整个应用程序能以exe或app的形式。在项目连编时需要设定主程序,同时还要注意应用程序所需要的图片、音乐等资源的保存位置,对于程序所需的相关数据最好分门别类加以保存,形成清晰的文件夹层次结构,如图8所示。

7 结束语

虽然数据库的应用范围多种多样,数据库中对于数据的使用也各有侧重,但只要了解了应用程序的开发步骤,在开发过程中做好需求分析、合理设计数据库、有效进行任务分解、掌握面向对象的编程思想,做好界面数据和数据库中数据的映射,是能够实现轻松应对应用程序的开发任务的。

参考文献

[1]王娟.数据基础及Visual Foxpro程序设计教程[M],东北大学出版社,2011.

[2] 黄力明.《SQL Server 数据库原理及应用》精品课程建设改革与实践[J]. 计算机教育, 2009(23): 77-79.

[3] 易开宇. 案例教学法的探索[J]. 信息与电脑,2010(04):211-212.

应用程序篇9

【关键词】宏程序;软件自动编程;编程效率

中图分类号:TP 文献标识码:A 文章编号:1009-914x(2013)38-01-01

一、概述

现行的数控程序的编制中,主要有两种编程方式:手工编程和自动编程。虽然自动编程运用得越来越广泛,但手工编程在某些领域也是不可或缺的一种编程手段。

手工编程至少在此以下几方面有着自己的优势:其一,熟练的程序员编制的手工程序加工效率高于自动编程;其二,熟悉手工编程,对自动程序的修改是不无裨益的;其三,自动编程由软件所生成的走刀路线限制了其加工工艺,通过手工编程能够得到弥补。

在数控程序的编制过程中,软件自动编程省时省力,不易出错,有些零件复杂型面的编程靠手工编程很难实现。

但在手工编程过程中,用户宏程序的编制,能极大提高程序编制的效率。 在实际生产中手工编制的用户宏程序运用得极其频繁。为此,笔者提出用户宏程序与软件自动编制相结合,充分利用二者的优点,在软件自动编制的程序中加入用户宏程序,极大的简化数控程序,从而提高编程效率。

在实际加工生产中,结合了用户宏程序的自动编制的程序更加灵活,修改及加工更加容易。

二、软件自动编制程序简介

软件自动编程,利用计算机专用软件来编制数控加工程序。编程人员只需根据零件图样的要求,使用数控语言,由计算机自动地进行数值计算及后置处理,编写出零件加工程序,加工程序通过通信的方式送入数控机床,指挥机床工作。自动编程使得一些计算繁琐、手工编程困难或无法编出的程序能够顺利地完成。

用于数控自动加工编程的CAM软件平台较多,比较常用的UGNX、CATIA、Pro/E、Mastercam、Cimatron、Powermill等。虽然各自应用的流程有差别,但各系统提供的基本数控功能都比较相似。企业产品不同,使得对CAM平台的选型和应用要求有所不同。对于大多数零件,数控三轴铣削编程都能满足企业的要求。而对于有些特别的轴类零件,四轴及五轴机床的加工编程表现尤为突出。这些CAM软件平台在数控车削及数控铣削编程方面发挥了极大的作用,可以实现多轴联动的自动编程并进行仿真模拟。

自动编程已成为主要的编程方式。

三、用户宏程序简介

数控宏程序就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削, 实际上宏在程序中主要起到的是运算作用。

宏一般分为A类宏和B类宏。

A类宏是用G65 Hxx P#xx Q#xx R#xx或G65 Hxx P#xx Qxx Rxx格式输入的,xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM.#xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量.我们如果说#100=30那么现在#100地址内的数据就是30了。

由上可见用宏程序结合自动编程编制的程序简短精练,逻辑性很强,可读性很好。

以上程序中只有软件生成的1层刀路1个程序段,引入宏程序的循环语句,就能轻易实现多次分层切削。此外,如果每层切削深度有变化,只需将程序段“#1=#1-4.”中“4.” 修改为想要设定的每层切深数值就可以;如果要直接到指定的切深进行加工,只需将程序段“#1=63.275”中的“63.275”修改为 想要指定的切深数值就可以,使用非常方便。

六、结束语

通过以上比较分析可以发现,利用自动编程和宏程序结合起来使用,既可提高编程的效率,减少编程差错,又可以使程序相对精练,思路清晰,便于加工中检索,便于根据实际加工需要修改加工参数,在生产实践中具有很好的可操作性, 所编制的程序适应性好,是一种值得推广的方法。

【参考文献】

应用程序篇10

关键词: CDIO“J2EE程序设计”教学模式研究与应用

1.前言

目前中国工程教育面临三个主要问题:工程教育目标模糊、教师缺乏工程经历、学生工程实践能力不强,因此培养出来的工科毕业生不能满足中国走新型工业化的道路、建设人力资源强国、建设创新型国家等国家战略需求,中国的工程教育亟待改革。为此,许多机构进行了各种探索,在各种改革方案中,CDIO是一个很好的、可以执行的工程教育模式。

“J2EE程序设计”是许多软件学院为本科生开设的一门实践性课程。这门课程目标是培养学生具备进行软件开发的能力。但这门课程很多时候没有起到预期的作用,这与课程采取的教学模式有关。传统教学模式以教师讲解为主,学生进行模仿。这无法充分调动学生参与的积极性,也不能提高学生解决实际问题的能力。

通过研究传统教学模式存在的问题,根据一些教育学家提出的CDIO(做中学)的教学理念,然后结合J2EE课程的特点,笔者在此提出一种适合于J2EE课程的教学模式,以使学生通过这门课程的学习,更好地提高实际动手解决问题的能力,更好地满足企业对软件专业学生技能方面的要求。

2.CDIO的内涵

CDIO是2001年由美国麻省理工学院联合瑞典的查尔姆斯技术大学、林克平大学及皇家技术学院等3所高校,共同开发的一种全新工程教育理念和实施体系。CDIO是英文单词“构思”(Conceive)、“设计”(Design)、“实施”(Implement)、“运行”(Operate)的缩写。其中,“构思”包括顾客需求分析,技术、企业战略和规章制度设计,发展理念、技术程序和商业计划制订;“设计”主要包括工程计划、图纸设计和实施方案设计等;“实施”特指将设计方案转化为产品的过程,包括制造、解码、测试,以及设计方案的确认;“运行”则主要是通过投入实施的产品对前期程序进行评估的过程,包括对系统的修订、改进和淘汰等。[1]

CDIO是“做中学”原则和“基于项目的教育学习”的集中体现。[2]它以工程项目为载体,以从科研到运行为生命周期,让学生主动参与实践,以课程之间有机联系的方式学习工程。“做中学”是工程教育改革的战略之一,中国教育部于2008年开始组织课题组进行试点。2008年12月13日至15日,由汕头大学主办的“CDIO工程教育模式试点工作会议”在汕头大学学术交流中心举行。会议确定了参加第一批CDIO试点高校名单,共有18所高校。[3]

3.传统教学模式在J2EE课程教学中的缺陷

传统“听中学”的教学模式使得本是教学活动主体之一的学生处于被动状态,工程实践能力难以提高,其能力构成无法满足未来工作的需要。针对工程教育的特点,教育学家提出了“做中学”的教学理念,并成为当前工程教育改革的一个重要方向。卡内基・梅隆大学软件学院运用“做中学”的教学理念设计了整套软件工程课程体系;浙江大学软件学院、清华大学软件学院、哈尔滨工业大学软件学院在多门实践性课程上引入了“做中学”的教学理念,试图突破传统的以理论讲授为主的教学模式,通过引入实践环节来提高学生的动手能力。

J2EE课程讲述的是企业最前沿的开发技术,是一门实践性很强的课程。J2EE是Sun公司主导的一套开发企业级应用程序的标准、规范。在企业级应用程序开发中J2EE占据了主要位置和大多数市场,特别是在大型企业级应用程序的开发中更是如此。J2EE课程内容包含进行企业级应用程序开发所需的各种技术,如Web框架、Web服务器、应用服务器、EJB、动态语言、AJAX、AOP、IOC、用户界面、数据库中间件、SOA、WebService等。

在传统的教学模式中,学生在学习过程中遇到的问题,教师总是能够帮助学生解决问题。但在学习J2EE程序设计的过程中,学生遇到了问题,教师不一定解决得了。对于J2EE中的各项技术,即使是程序员,也需要经过多年的实践和学习才能掌握。教师只能告诉学生如何寻找解决问题的途径,比如查看相关技术的帮助文档,到网上搜索问题解决方案等。

在这门课的讲授过程中,教师要转变思路,要把传统的向学生传授知识的授课模式,向培养学生实际动手能力的授课模式进行转变。J2EE课程的教学应定位在培养学生实际动手能力、自学能力、独立思考能力、问题解决能力方面。理论知识讲解的目标是引导学生入门,让学生在该领域获得基本的知识,对项目开发中需要用到的技术能够进行自学。

4.将CDIO模式应用于J2EE程序设计课程教学中的意义

4.1符合软件工程专业学生培养的目标要求

CDIO模式突破了传统教学模式,通过选取工程项目创设情景,通过协作学习开展教学,通过完成项目达到意义建构,通过解决问题实现学生对知识的掌握,充分体现了软件工程专业的职业性、岗位性和应用性等特点。教师将CDIO应用到教学,不仅能使学生掌握软件开发理论知识,而且能使其获得项目开发经验,提高其实际动手能力。CDIO模式以实际项目为逻辑主线组织教学,让学生以项目为学习中心,在项目中做,在项目中学,能充分发掘学生的创造潜能,提高其解决实际问题的能力。同时,教师在构思设计课程项目的过程中,也会对所授课程有更深层次的理解,从而促进教学效果的提升。

4.2充分体现了学生的教学主体地位

以真实项目为载体的项目式教学的开展,能使学生亲身经历软件项目构思、设计、实现、运作的项目开发生命周期,在与课程紧密联系的项目实践中积极主动地学习专业知识,提高学生对理论知识的应用能力和实践动手能力,增强学生的成就感,充分挖掘学生的创造潜能。不同项目的设定有利于满足不同层次学习者的学习需求,便于开展个性化、差异化教学。通过个体和合作的形式进行项目学习和实训,学生不仅能培养自主学习的能力,而且能培养合作、沟通和组织能力。项目完成后的及时反馈,又有利于学生间经验的分享。该模式构建出一个开放性、研究性的学习环境,充分体现了以学生为中心、以学生的全面发展为中心的教育思想。

4.3有利于教学科研水平的提高

J2EE程序设计是一门讲述进行企业级软件项目开发所需各种技术的课程,是一门实践性很强的课程。要将CDIO模式应用到课程教学,教师必须结合院校教学实际,以及软件工程专业学生的知识层次、结构能力,合理制订教学大纲,优选教学内容,加强教材建设,不断改进教学方法、教学手段,理论结合实践,设计工程项目,体现以能力培养为主的原则。这个过程本身就是一个学习知识、提高理论层次和教学水平的过程,也是CDIO的具体体现。这个过程有利于进行多种资源的有效整合,教师不仅要具有良好的专业设计经验和教学组织能力,而且要善于发挥学生的主体地位和教师的主导地位,培养学生的综合应用能力,这能极大地提高教师的业务能力和教学科研水平。[5]

5.CDIO模式实施方案

应用CDIO模式教学的课程应该做到目标导向、案例驱动、知识集成、做中学习。教师在制订课程教学大纲时应注意这一点。同时教师也要使学生适应这一新的教学模式。这种教学模式注重的是学生的创新能力和实际动手解决问题的能力,而不是学生记忆知识的能力。在这种教学模式下,教师对学生进行考核的方法也将不同于传统的考核方法,考核更注重对学生实际动手能力和综合能力的考核。

5.1理论课教学内容的选择

理论课授课的目的是让学生具备宽广的知识面和一定的理论水平,让学生能够站在一个较高的层面来理解技术,不会迷失在技术中。理论课不是仅仅为了讲授具体的技术,而是让学生在软件开发上入门。在教学内容选择上,教师对Web编程、组件、架构和流行框架都应进行讲解,让学生了解进行企业级软件项目开发,必须具备哪些基本知识。

5.2理论课课时和实践课课时安排

计算机课程如C语言程序设计、数据结构、数据库等,在传统的教学模式中,以理论讲解为主,理论课课时和实践课课时比例大概为3∶1,甚至是4∶1。在其中安排对于J2EE程序设计这种课程,并不适用,不利于培养学生的实际动手能力。J2EE程序设计课程的理论课课时和实践课课时比例应为1∶1。进行J2EE程序设计需要用到多种工具,包括集成开发环境IDE、Web服务器、应用服务器、数据库、各种中间件,并且程序的规模都比较大。在实验课安排上,要保证学生能够做完一个完整的实验,教师可采用的解决方法为4节实验课连续安排。

5.3实践课项目的选择

软件项目大小要适中。项目的目的是让学生掌握各种相关技术。教师可以选择一些需求明确的项目,比如:图书管理系统、校园论坛、学生宿舍管理系统等。可以从头到尾选择一个项目,每次实践课选用不同的技术来实现,技术可从简单到复杂。例如:第一次课:用JSP+JDBC完成项目;第二次课:用JSP+Servlet+JDBC完成项目;第三次课:用JSP+Servlet+EJB+JDBC完成项目;第四次课:用JSP+Spring+EJB+JDBC完成项目;第五次课:用开源框架Struts+Spring+Hibernate完成项目;第六次课:在项目中使用AJAX、EXT等技术完善用户界面。在这样一个不断拓展和提升的过程中,学生边学边做,边做边学,在做中讨论、体会、总结,随着知识点不断攻克,经验不断累积,动手能力会变得越来越强。

5.4考核方式转变

有些学生习惯了学习各种理论,记忆各种知识,但就是不愿动手实践。所以笔试得分高的学生不一定是实践动手能力强的学生。这门课程的考核应该以实践考核为主。教师可以根据学生实践课的成绩给定最终成绩。

5.5课外学习

学生要充分利用网络资源进行学习。各种技术网站、论坛,都是进行学习的很好途径。例如,CSDN、JavaEye等网站和论坛,通过这些网站和论坛,学生除了可以了解技术的最新发展状况,还可以进行交流学习。

6.结语

在将CDIO模式应用到“J2EE程序设计”课程教学改革后,学习的过程变成了人人都能参与创造的实践过程。学生在项目实践中,理解并把握了课程要求的知识与技能,体验着创新的艰辛与乐趣,培养了分析问题和解决问题的思想和能力。教师在教学中引入CDIO模式应注意以下几点:重视项目的完成,但不能忽略基础知识的掌握,要让学生建构一个系统、全面的知识框架;应让学生单独完成项目,防止学生出现依赖思想,避免两极分化;教材可以实际项目为主线进行改革,项目的合理选取是关键;课程考核机制着重于实际应用能力,以学生完成项目的情况来评价学生学习效果;教学计划可根据学生的掌握实际进行适当调整。

参考文献:

[1]The CDIOTM Standards:2[EB/OL].2008-06-30.省略/tools/cdio_standards.htm.l.2009-04-13

[2]查建中.论“做中学”战略下的CDIO模式.高等工程教育研究,2008,(3).

[3]CDIO工程教育模式试点工作会议纪要.高等工程教育研究,2009,(1):32-32.