《软件开发平台实验报告》由会员分享,可在线阅读,更多相关《软件开发平台实验报告(20页珍藏版)》请在金锄头文库上搜索。
1、课程设计报告课程名称: 软件开发平台与工具 任课教师: 姓 名: 学 号: 1. 引言1.1. 课程设计项目1.2. 背景简介从编程之初,便免不了和方法,类,接口之类的东西打交道。久而久之,自然会对此进行总结,由此而产生了开发平台。而今中国的程序员之中,有很大一部分都是编一些企业 MIS、政府 MIS 之类的程序。其主要工作就是对数据进行一下增删改查的操作,对 MIS 系统做一些基础的管理而已。软件开发平台有两种平台模式:一种是传统的 C/S 架构模式,一种是现在流行的 B/S 架构模式。B/S 架构模式是随着互联网的流行,自然又要求以互联网为基础,把这些都网络化,以实现网络资源共享,而不是传
2、统的单机模式。这便激发了软件开发者的创造力,形成了软件开发平台的 B/S 架构模式( web 开发平台)。对于web 开发平台,我的个人理解是:1.以 web2.0 为基础,基于互联网的 B/S 架构的软件 。它本身也是一个软件,只不过不是最终的软件产品,而是用于二次开发的软件。2.用于实现各类业务系统,如 CRM、MIS、ERP、HIS、OA 等等的开发。web 开发平台本身就是一个二次开发平台,他不同于诸如 eclipse 等这样的开发工具,需要写大量的代码来完成各个业务模块,二次开发平台只需要设计好自己的数据结构,进行一些简单的配置、拖拉等操作就可以完成业务系统的开发。3.能够快速的实现
3、各种报表包括复杂的图表报表的设计制作,传统的编码式开发需要自己去编写想要的各种报表,而运用开发平台就简单多了,可以很轻松的配置出各种报表。使用 web 开发平台的目的是为了实现资源共享、节约开发成本、提高开发效率、缩短开发周期。而如今的开发平台大都采用非编码的方式或者是极少编码的方式,这样正好达到了目的。有的甚至可以减少 80%的代码量,可见效率会提高多少。从国内代表性的软件开发平台中1,我们可以看出这一类产品的大致脉络,亚思捷的 TNT 平台:TNT 平台的核心优势在于低成本的个性化,他可以同时向客户提供 T业务系统模板,即 OA、CRM、文档管理、信息门户、在线考试等标准化的应用系统;N开
4、源组件包,即上述应用系统的源代码; T开发工具,即基于微软 Jupiter 平台的快速开发工具,开发者可以通过界面属性设定的方法来完成对业务系统的快速开发,自动化生成 C#和 JAVA 的二种语言的系统。显然,TNT 中的两个 “T”是业务的重点,而杀手锏则是低价。其他厂家的软件开发平台与上述三种均大同小异,都是提供“标准化+行业化+ 个性化” 的应用模式。从中我们看出,这些软件开发平台确实都非常具有我们在上文中提到的技术共性,另外我们还都具有一个共同点,那就是他们既提供软件开发平台,又提供基于该平台生成的各种应用系统,两种产品相辅相成。这种模式也是软件开发平台销售的主流模式。1.3.相关概念
5、Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于 1997 年一个 OMG 标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80 年代末至 90 年代中出现了一个高潮,UML 是这个高潮的产物。它不仅统一了 Booch、Rumbaugh 和 Jacobson 的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。UML 是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入
6、了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。1.4.编写目的经过本学期对软件开发平台与工具的学习,对其进行初步的掌握,通过课程设计(音乐播放器)编程,对所学内容进行实际应用并发现学习中存在的问题,也是对自己学习工作的检验和测试,在撰写报告的过程中能够更深刻的了解软件开发平台与工具的理念通过这份文档来记录实践过程中遇到的问题以及改善的方法。现在对整个过程加以认识、记录和总结,留下经验,汲取教训。为以后的其他工作积攒经验,为以后遇到相同的问题和从事类似项目奠定坚实的基础,以便以后有资可寻、有底可查,增长个人见识。2 部分
7、产品代码解析2.1 简介本音乐播放器使用 visual C+6.0 自带的 Active Movie Control Object 控件,来建立自己的多媒体播放器。并以千千静听为模板,实现播放器最小化托盘的功能。Active Movie Control Object微软公司推出的 ActiveMovie 控件用于多媒体程序设计的控件,该控件提供非常完善的音频和视频媒体文件的播放功能。其能支持多种文件格式:例如最常见的 WAV 文件、AVI 文件、MPEG 压缩格式的 VCD 视频文件等,它都可以正常地进行播放。这个控件可根据文件的后缀名自动判别设备的类型,滞后能完成相应的控制。因为本实例需要提
8、供多媒体支持,所以使用 Active Movie 控件是很好的一个选择。事实上,很多优秀的多媒体应用程序,其内部的多媒体播放就是利用Active Movie 控件来实现。通过这个控件用户只需要精心地设计应用程序的用户界面,就可以开发出功能齐全、外观漂亮、具有相当水准的媒体播放器。1. Active Movie 的注册方法现在使用的 VC+6.0 自带 Active Movie 控件版本一般都是 Active Movie3。用户注册这个控件之前,再 VC+6.0 集成开发环境中是无法找到Active Movie3 控件的。所以应首先注册这个控件。步骤及方法为:(1) 单击“开始”|“运行”按钮。
9、(2) 在弹出的对话框中输入“regsvr32 msdxm.ocx”。(3) 在 VC+6.0 的集成开发环境候中的菜单栏下执行如下操作“”Project-Add to Project-Components and Controls-Registered ActiveX Controls”将弹出空间添加对话框,选择其中的ActiveMovieControl Object,Inser ,单击 OK 按钮。(4) 将空间拖放到对话框上。2. ActiveMovie 的属性及方法(1) ActiveMovie 的特有属性CurrentState:指示控件的状态( stopped、paused 、ru
10、nning )DisplayMode:显示模式(时间方式、帧方式)FileName:指定该控件要操作的源文件的完整名字Rate:指示媒体流的回放率ReadyState:指示控件状态,是否已经装入源文件SelectionStart:指示播放媒体流的开始位置SelectionEnd:指示播放媒体流的结束位置CurrentPosition:指示播放媒体流的当前位置Volume:设置音量(2) ActiveMovie 的方法ActiveMovie 控件常用的方法有 RUN/STOP/PAUSE 这 3 个。分别控制流媒体的播放、停止和暂停。使用时直接调用它们即可。其他与通用方法如 Drag、Move、
11、SetFocus 等,该控件也支持。此外ActiveMovie 还有一些特有事件的处理方法。DisplayModeChange:当 DisplayMode 属性值发生变化时触发OpenComplete:当源文件完全载入时触发PositionChange:当流媒体的当前位置改变时触发ReadyStateChange:当控件的 ReadyState 属性值改变时触发StateChange:当播放器的状态改变时触发Error:处理控件的出错事件此外 ActiveMovie 控件还有一些属性操作方法,通过这些方法获取或者设置 ActiveMovie 控件的各个属性值。ActiveMovie 获取属性值
12、的方法如下:GetCurrentPosition:获取播放器的播放进度GetAuthor:获取作者信息GetBalance:获取声音平衡值GetFileName:获取操作的源文件的完整名字GetDisplayMode:获取当期显示模式GetRate:获取媒体流的回放率GetVolume:获取当前音量2.2 音乐播放器最小化到托盘的实现方法当前流行的播放器大大多都支持最小化到托盘事件 ain.suoyi 本播放器也仿照这些播放器实现这个功能。1.最小化到托盘的基础把应用程序最小化到托盘的基本原理就是将应用程序的主窗体隐藏,然后在托盘中绘制应用程序的图标。Shell_NotifyIcon()函数负
13、责向系统传递消息,以添加、修改或删除托盘区的图标。它的原型如下:WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid);该函数返回的是一个布鲁尔值,失败则返回 0,返回非 0 则成功。函数有以下两个参数。(1)dwMessage:标示该函数的应用功能,是添加、删除,还是修改图标。如果是添加,则它的值为 NIM_ADD;如删除则是 NIM_DELETE;而修改则是 NIM_MODIFY。(2) pnid:程序最小化到托盘的图标信息结构体2.实现最小化托盘最小化按钮及 Hide 按钮处理函数 On
14、Hide(),将播放器最小化到托盘。void CMusicPlayerDlg:OnHide() NOTIFYICONDATA nid; nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this-m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=WM_MUSICPLAYER;/自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE
15、(IDR_MAINFRAME); strcpy(nid.szTip,MusicPlayer);/信息提示条为“计划任务提醒” Shell_NotifyIcon(NIM_ADD,/在托盘区添加图标 ShowWindow(SW_HIDE);/隐藏主窗口最小化到托盘的图标 ID 为 IDR_MAINFRAME。它的消息为WM_MUSICPLAYEAR。当鼠标移过图标时提示信息为“MusicPlayer”3.处理托盘图标消息添加最小化到托盘图标发送的自定义消息 WIN_MUSICPLAYER 的映射。ON_MESSAGE(WM_MSICPLAYER,OnShowMusicPlayer)添加它的处理函数
16、为 OnShowMusicPlayer(),代码如下:LRESULT CMusicPlayerDlg:OnShowMusicPlayer(WPARAM wParam, LPARAM lParam)if(wParam!=IDR_MAINFRAME) return 1; switch(lParam) case WM_RBUTTONUP:/右键起来时弹出快捷菜单,这里只有一个“关闭” LPPOINT lpoint=new tagPOINT; :GetCursorPos(lpoint);/得到鼠标位置 CMenu menu; menu.CreatePopupMenu();/声明一个弹出式菜单 /增加菜单项“关闭”,点击则发送消息 WM_DESTROY 给主窗口(已 /隐藏),将程序结束。 menu.AppendMenu(MF_STRING