当前位置:文档之家› 软件技术基础项目样本

软件技术基础项目样本

《软件技术基础》课程项目报告

项目名称:用VB 编写简单音乐视频播放器

班级:自动化0704

学号:20074280402

姓名:范胜奇

完成时间:2009.12.25

摘要

一、需求分析

1.1开发背景

1.2项目目标

1.3运行环境

1.4游戏说明

1.5项目任务书

二、技术路线

2.1总体方案

2.2详细设计

三、工程进度

四、测试报告

五、个人小结

六、参考文献

当前多媒体技术飞速发展,日新月异,呈现在人们面前的是更加多姿多彩的世界。

多媒体技术给人们提供了强大的视听享受,主要以声音、视频、图片等为主。今年来音乐和视频的发展和普及尤为突出,现已成为多媒体的“代言人”。

随之而来的是越来越多的应用软件供人们选择来播放特定的音乐和视频,像音乐播放器中大家最为熟悉“千千静听”和“酷狗”等,视频播放器中大家最为熟悉的莫过于“暴风影音”和“风雷影音”了,他们不仅功能强大,可以支持多种格式的视频和音乐,而且容易操作,易为广大影音爱好者接受和使用。他们的操作界面非常友好,而且大多可根据用户自己的爱好进行设置,深受消费者的喜爱。

于是我们小组选择了制作一个简单的音乐视频播放器,小组名称命名为“新视角”,大概意为以新的视角享受多媒体给我们带来的乐趣,当然这是我们的初衷。由于目前我们的能力还十分的有限,只能做出简单的小程序,但我们相信,这可以激发我们的兴趣,为以后的学习和进步打下基础。

我们的音乐视频播放器可以播放Mp3,Wma,Midi等格式的音乐文件和Rmvb,Rm,Avi 等格式的视频文件。也勉强可以成为是“多功能”播放器吧。

主要有“打开文件”,“播放”,“暂停”,“继续”,“停止”,“全屏”等功能,在播放的时候可以显示当前播放的曲目,并且可以显示出等前的状态。还设有“关于”按钮,用来提供一些关于播放器的简介和信息,另外还设有“退出”按钮,并在退出时会询问用户真的退出或放弃退出,用户可以根据情况自己选择。

一、需求分析

1.1 开发背景

目前多媒体技术飞速发展,日新月异,呈现在人们面前的是更加多姿多彩的世界。

多媒体技术给人们提供了强大的视听享受,主要以声音、视频、图片等为主。今年来音乐和视频的发展和普及尤为突出,现已成为多媒体的“代言人”。

随之而来的是越来越多的应用软件供人们选择来播放特定的音乐和视频,像音乐播放器中大家最为熟悉“千千静听”和“酷狗”等,视频播放器中大家最为熟悉的莫过于“暴风影音”和“风雷影音”了,他们不仅功能强大,可以支持多种格式的视频和音乐,而且容易操作,易为广大影音爱好者接受和使用。

他们不仅操作界面非常友好,而且大多可根据用户自己的爱好进行设置,深受消费者的喜爱。

在互联网发展迅速的今天,人们渴望得到功能更加强大,播放流畅的播放器。但当前的大多数软件没有创意,大同小异,基本上没有很大的创新和提高。于是乎,我们认为一种能给用户带来新感官的播放器一定会很有市场潜力,便开始制作我们自己的播放器。

1.2 项目目标

我们将主要通过VB语言,运用面向对象的程序设计方法,开发此款音乐视频播放器。力争使程序短小精悍,简洁明了;操作界面优美友好,容易操作;功能丰富,趣味性强。现在将我们对项目期望实现的目标一一介绍:

a.随时性。即可以在任何时候启用该应用程序。

b.可以实现多种播放状态的切换。

c.可以播放多种格式的音频和视频。

d.可以实现快进或快退。

e.可以显示播放时间和曲目总长度。

f.可以实现全屏播放并能够退出全屏。

g.操作界面友好

h.操作方便,容易上手。

1.3 运行环境

本游戏短小精悍,而且对电脑配置的要求均不高,目前几乎所有的PC机均可运行该游戏。但是为了能让大家更好地体验该款游戏,我们给出如下的最低配置:

最低配置:CPU1GHz 内存 32M 硬盘 4G Windows 95 Microsoft Visual C++ 6.0

同时结合我们开发该游戏的环境,我们强烈推荐用户使用如下的配置:

最佳配置:CPU2GHz 内存256M 硬盘80G Windows XP Microsoft Visual C++ 6.0

1.4 游戏说明

(1) 游戏流程:

启动游戏后,直接进入棋盘界面,在这里,可以选择人人对弈还是人机对弈,同时可以调节棋力,(我们设定了三种棋力,初级、中级和高级,分别用不同的算法实现),还可以选择执黑和执白,如果对黑白棋有什么不明白之处,可以点击帮助来查看游戏的规则。在选定之后,我们就可以开始游戏了,(当然,在游戏开始后修改各个属性也是可以的),当我们开始下棋时,我们有一个计时器和一个计数器分别对下棋用时和双方棋子数进行记录,以作为判定输赢的依据。我们的判断标准为:若双方都未超时,棋子多者为胜;若有一方超时,直接判定此方为负,每局时限为5分钟。

(2) 游戏规则:

吃子:以方格为直线或者斜线的方向,以一方对照棋子和即将落下棋子之间(此两子之间必须没有空格且全部为对方棋子)的所有对方棋子被吃掉,被吃掉的对方棋子变为自己一方的棋子。

下子:必须在可以吃子的位置处并且该位置为空格时可以落下己方的棋子,如果不能下子,棋子无法显示在棋盘上,同时有声音提示。

停走:任何一方无法下子时屏幕上面会自动出现对话框,提示某方不能下子,让对方下子。

赢棋:若一方超时,则自动判负,屏幕上面会自动出现对话框提示;当双方都无法下子时屏幕上面也会自动出现对话框,提示本次游戏结束,并且根据计数器记录的双方棋子数判定棋子数多的一方取得本次游戏的胜利。

(3) 特别提示:

我们在这个黑白棋程序中添加了悔棋功能,可以实现一步甚至多步悔棋,当你要仔细研究你的下棋思路和对手的下棋思路时,用悔棋功能可以把本盘棋单步悔棋到底,实现全过程的再现。

1.5 项目任务书

(1) 班级:自动化0704

(2) 组别:新视角

(3) 组长:范胜奇

(4) 成员:范胜奇,臧威,李飞

(5) 项目名称: AVI音乐视频播放器

(6) 项目背景:黑白棋,又称翻转棋,反棋,苹果棋,奥赛罗棋,是一个经典策略性游戏,

最初流行于西方和日本,随着电脑的普及,黑白棋在中国日趋兴盛,它以其

规则简单,上手容易,变化多端,竞争激烈,一子之间,乾坤大变,深合兵

法诡变之道,深受爱好智力游戏的中国人的喜爱。黑白棋的游戏规则和胜负

判定的标准十分简单,在此略去。

(7) 项目分工:

范胜奇:资料的收集,前景展望,资料分析,编写部分程序。管理整个小组

的活动,指导编程,编写部分程序及程序调试。

臧威:算法的收集与整理,编写部分程序及程序调试。

李飞:项目把关、软件的最后测试及编写部分程序。

(8) 项目进度:

5 - 6周:前期准备,各类资料收集,数据图算法等同时完成。

7 - 8周:实现基本功能。

9 -13周:附加功能的实现。

14-15周:最后测试,最后优化。

二、技术路线

2.1 总体方案

我们的程序从总体上说分为四个块,希望通过四个类来解决,分别为:(1)位图的导入与棋盘的生成。

(2)记录双方对弈时间的计时器与记录双方子数的计数器。

(3)选择人机对战和人人对战的函数及控制堆栈难度的主函数。(4)实现悔棋功能的堆栈。

游戏的简单流程如下:

2.2 详细设计

这是一个基于对话框的vc++程序。

在本程序中共需导入三张位图,为(1)底色为绿的空方格,(2)已下入黑棋的方格,(3)已下入白棋的方格,三个方格大小完全相同.

我们定义kerne[8][8]的数组来储存这些方格的情况,用CGrid类封装了每一格的位置、尺寸和贴图,当为0时贴空方格;函数时为1时贴黑棋,为3时贴白棋。每次OnDraw()函数被调用时,它会根据kernel的键值来命令每个CGrid对象m_grid[][]在64个不同的位置贴上相应的位图,形成我们看到的棋盘。转函数B2w()在下棋过程中通过改变kernel[][]的键值来显示不同位图以符合当前的下棋状态。

下棋规则分为两种模式,一是人-人对战(在OnMan中启动),一是人机对战(在On Computer中启动)。

(1) 在人-人对战模式(RunMode==MODE_2MAN)时,每次发生LeftButtomDown事件后都要判断鼠标当时所在空格中是否可以下棋。判断的内容可以分为:a.比赛是否开始(m_GameFlag ==1?)否则返回。B.方格内是否空,空则可能,否则不能,c.空方格相邻的八个方格内是否有对方棋子,若有,则分别判断空格与对方棋子所在行列或斜线内有无己方棋子,若有且与对方棋子相邻,则棋子可下。若上述三个判断均成立,则将棋子放入空格中,并将相邻所夹的对方棋子翻转为己方棋子(B2W()),并将己方定时器关闭,启动对方定时器,轮对手下棋。当上述三个条件有一个不满足时,不能落棋,为增加程序的趣味性,导入了一个声音提示。为判断输赢,每次完成一个翻转之后更新双方的得分计数器(CDigitalPlayer m_CountW,m_CountB)。并调用IsEnd()函数来判断输赢。

(2) 在人-机对战中,可否落棋的判断、翻转的判断及输赢的判断与人-人对战中基本相同。不同的是我们要在人机对战中通过设Easy,normal,experd,三个等级。分别用不同数量的函数来判断计算机所落得棋子:a当所选为Easy时,计算在各可能空格中所能翻转的对方棋子个数,以最大数为准,b当所选择normal时,程序要将为每个可能的落子点打分(GiveMark(int flag)),打分的原理是:当在该点落子后,计算棋盘上我方每个子的加权分数,并累加起来作为该可能落子点的总分数,然后选择得分最高的可能落子点落子。计算加权分数是根据该子所在的位置给的,打分策略如下图:

当所设定的难度为Expert时,计算机不仅要计算出所有棋子的加权和A1,还要计算出对方所有棋子的加权和A2,取A1/A2的最大值的可能落子点为计算机下棋处。为增加程序的可玩性,我们要实现悔棋功能。悔棋通过一个堆栈CUndo来实现,也就是将每一步的棋盘状态及显示状态压入堆栈(调用duplicate())。如果要悔棋,从堆栈中弹出上一次的棋盘状态kernel[8][8],和待下子颜色m_ChessFlag。主要通过4个类来实现程序,每个类的作用为:

a实现下棋的主对话框类class CB_WDlg : public CDialog

b实现悔棋的堆栈类 class CUndo

c实现计时器与计数器class CdigitalPlayer(从别人开发的扫雷程序中移植的)

d实现棋盘显示的类class Cgrid(里面保存了每一格的位置,尺寸和位图数据。

三、工程进度

本次作业历时近十周时间,总的说起来可以分为三个部分:

3.1 前期准备部分(5—7周)

主要完成方案的讨论、资料的收集、数据图算法等前期工作,编写报告中需求分析的一部分和总体方案的一部分及项目任务书。

5周:选定题名,进行方案的讨论。

6周:收集资料,写出需求分析中的开发背景部分。

7周:商定算法,将软件总体分块,写出项目任务书。

3.2中期实现功能部分(8—13周)

主要完成预先设想的基本功能和附加功能,完成报告中的技术路线和需求分析的剩余部分,完成调试报告中的单功能调适。

8周:开始软件编写,完成棋盘的设计部分。

9周:完成下棋部分程序的编写,测试棋盘设计部分。

10周:完成计时器部分和悔棋部分程序的编写,测试下棋部分程序。

11周:完成人机对弈部分程序的编写,测试计时器部分和悔棋部分。

12周:完成附加功能,测试人机对弈部分情况。

13周:完善各项功能,测试附加功能。

3.3后期总结完善部分(14—15周)

总体功能的调试改进,完成大报告。

14周:总体功能调试,优化软件。

15周:完成个人总结和其它报告剩余部分。

四、测试报告

4.1 第九周:测试棋谱

测试人:陈聪

测试内容:通过VC语言,我们编写了基于对话框的游戏界面。我们将测试它的最基本面貌,希望其是符合我们要求的界面模式!

测试过程:运行程序以后,弹出了棋局的对话框,整体棋局呈现草绿色,棋局右边和上边都有一些空白的区域,这是我们为将来实现其他附加功能预留的地方。但是测试过程中我们始终发现一个问题,棋格的位图没有按照我们的设想正确放置,出现了跃出棋盘的怪现象!

问题解决:通过反复推敲程序相关部分,我们觉得可能是算法有疏漏,于是修改了一下算法。我们将每个棋格的位图封装了起来,将其位置作为Cgird的成员数据。再运行程序,问题就不再出现了。反复运行程序再也没有出现异常情况!

4.2 第十周:基本功能测试

测试人:陈聪

测试内容:程序的基本框架已经编好了,希望能按我们的预期目标能实现供两人对弈功能!

测试过程:将程序编译、链接、运行后,弹出棋局的对话框,然后开始下棋,我们一步一步观察了每步落子后棋局上黑白棋子的变化过程,均与我们预期的变化过程一样,我们非常欣喜,这说明我们设计下棋程序时的算法准确无误!

4.3 第十一周:测试计时器,悔棋功能

测试人:陈聪

测试内容:观察计时器是否能正确的记录双方走子的时间;是否能在限制时间到达后判定哪方胜出;测试悔棋功能是否真正实现。

测试过程:首先我们测试了计时器,但是令人失望的是两个计时器都是一刻不停地计时根本不管对应的那方在不在下棋!经过反复运行程序,结果都是一样!然后计时器到了规定的300秒限制时间以后,棋局自动结束,也没有弹出任何对话框显示谁胜谁负!最后我们测试了悔棋功能,反复的测试,此功能运行良好,能够一步一步悔棋,直到无子可悔,而且通过记录观察,每步的悔棋过程均准确无误!

问题解决:针对计时器的种种问题,我们真是一点解决它的办法都没有,以前实在没有接触过这种类型的计时器,查阅相关资料和书籍也没有得到很好的解决办法!无奈之下,我们在一些小游戏中找是否有类似的计时器,真没想到,就在我们平时经常玩的扫雷游戏中出现了类似的计时器,我们真是欣喜若狂,立刻找来扫雷游戏的源程序,参考了其相关的计时器程序部分,终于解决了我们的计时器问题!再运行程序,计时器能按照我们的要求,分别对双方计时,哪方的计时到达规定的限制时间还没有下完的话,判定该方为输!

4.4 第十二周:测试人机对弈

测试人:陈聪

测试内容:我们在双人对弈的基础上又增加了人机对弈的功能,人机对弈时,电脑将按照我们给定的算法,找到最优的落子点。

测试过程:运行可执行文件以后,我们在游戏菜单里选择了“人机对弈”,在棋力里面设置为“初级”。游戏开始后,将由黑方也就是人先下。我们和电脑下了N盘棋以后发现,

程序很好地实现了人机对弈功能,但是由于电脑处理速度实在太快,基本上在人下完以后立

刻就落子了,棋局也立刻发生变化,所以很难判断电脑究竟将棋子下到了哪个位置。联想到

我们玩过的很多和电脑对弈的棋类游戏,均是这种情况,我们觉得这是正常现象,一个说明

电脑处理速度确实很快,另一个也说明我们给电脑设计的走子算法也是非常正确的!观察计

时器的显示,黑方的计时器正常运行,电脑的计时器一直显示为0,这个就更能说明电脑的

处理速度之快了!而绝不是程序有什么问题!

4.5第十三周:测试其他的附加功能

测试人:曹爱华

测试内容:我们对提示音,记录双方棋盘上的棋子数功能进行了测试

测试过程:我们运行可执行文件以后,开始游戏。提示音分两种,一种是落子成功提示音,一种为落子失败提示音。结果提示音均能够在我们落子之时响起,并且完全符合我们的

预期要求!右下方分别显示的黑白双方棋子数,能很好地执行它的功能,也没有发现任何错

误!总体来说,我们对这部分功能相当满意,因此测试过程进行的也比较快!

4.6第十四,十五周:总体测试

测试人:陈旭

测试内容:我们将在总体上对程序的运行效果和运行环境进行测试,以完善所有功能,达到软件的最优化!

测试过程:

a.首先我们测试了软件对运行环境的要求,我们先在Windows 98操作系统中运行了一

遍,结果并无异常情况出现;随后我们在CPU只有1GHz频率的硬件系统中运行,也并未发

现任何问题!我们基本上可以得出结论,我们的软件在一般的软、硬件环境下都能正常稳定

地运行,对机子的配置基本没有什么要求,适合于广大的电脑拥有者使用!

b.我们重新回到自己的环境下运行,对各个功能再进行调试。但是真是意外,还是出现

了一个比较严重的问题!我们在菜单里选择“帮助”,电脑竟毫无反映。本来它是为了实现弹

出对话框,帮助大家了解黑白棋的规则而制作的。我们立刻找来参考资料,研究怎么在基于

对话框设计的窗口中再实现调用对话框功能,但是均没有得到满意的答案!同时我们还积极

在兵马俑计算机程序设计版上发帖寻求帮助,积极向有关老师请教,但是最后比较无奈的是,对于这个功能大家都没有尝试用过,我们的这个功能因此也未能得到解决!这是我们这个软

件中存在的唯一一个让我们小组成员比较遗憾的地方,但是我觉得什么东西都没有完美的,

保持一点残缺更能体现出它的珍贵来,因为它使我们明白了以后还有很多东西需要我们去探索、去追求!我们小组成员也一致认为,这个得不到解决的问题不仅不会影响我们软件的质量,反而能成为我们今后提高的起点,也说明我们的软件还有很大的提升空间!

五、个人小结

在本软件的开发中,还是有不少地方是不太满意的,首先我通过单纯的VC++语言来实现功能。虽然VC++的强大功能足以应付这种软件的开发要求了,但是由于控件的缺乏,语法的繁琐,在实现很多功能的实现中花费了不少力气。但是由于知识水平的缺乏,无法使用Delphi,flash等更简便的手段来实现功能,希望以后可以弥补这一点。其次,缺乏完成大工程的经验,没有建立一个有效可行的工作计划。在工作中时而通宵奋战,时而停顿不前,既浪费了宝贵的时间,也耗费了大量精力,实在得不偿失。

但值得注意的是,在软件的开发中,我也学到了很多书本上学不到的经验。首先,我使用了别人开发的计数器控件,虽然开始很不习惯,但是上手之后就深深的体会到模块化开发和面向对象语言的方便与高效。其次,这次开发中我使用了很多以前没接触过的函数。除了上网学习资料(特别是https://www.doczj.com/doc/dd4772791.html,等网站)外,使用msdn成了不二法门。熟练的使用msdn,相信对我以后的工作会有很大的益处。

我觉得这次软件基础的大作业很好地考察了每个学生的知识水平,每个人都发挥了个人最佳的状态。可以说是实践素质教育的一种代表,是现代教育最能启发学生创造性的一种模式。虽然这种形式比普通的卷面考试要难,但是却能够充分调动每个人的积极性去学习自己尚未接触的知识和运用自己已经学过的知识。实验中,我们小组成员之间配合默契,共同商讨问题,使我们在碰到一个一个的问题后,能快速找到相关的答案。难能可贵的是,在软件制作最紧张的时候,大家都义无反顾地放弃了一点休息时间,和团队一起坚持奋斗!所以通过这次实验的合作,我们小组成员之间更加增进了了解,增进了团结!

总的说来,我们这次做的大作业是比较成功的,值得我引以为豪!

——陈旭(02041104)

这次软件基础的大作业,是我第一次在一个团队中和大家一起合作,为了这个软件的成型我们经历了好几个不眠之夜!可以说,这是我们群体智慧的结晶,是我们精诚合作的产物!开发过程中,我们遇到了种种困难,但是我们从没有放弃过,我们不断地去思考、去尝试、去寻找答案,问题终于一个一个地得到解决,我们的软件质量也因此不断地提高。虽然,最后我们的软件还有一点点的小遗憾,但是已不足以影响我们的成就感了,那点遗憾,只能说明目前我们掌握的知识还不够,也许正好能够成为我们以后提高的起点!

我觉得这次软件基础的大作业很好地考察了每个学生的知识水平,每个人都发挥了个人最佳的状态。可以说是实践素质教育的一种代表,是现代教育最能启发学生创造性的一种模式。虽然这种形式比普通的卷面考试要难,但是却能够充分调动每个人的积极性去学习自己尚未接触的知识和运用自己已经学过的知识。实验中,我们小组成员之间配合默契,共同商讨问题,使我们在碰到一个一个的问题后,能快速找到相关的答案。难能可贵的是,在软件制作最紧张的时候,大家都义无反顾地放弃了一点休息时间,和团队一起坚持奋斗!所以通过这次实验的合作,我们小组成员之间更加增进了了解,增进了团结!

但是我觉得这次实验有些地方还是有欠缺的,比如说开发过程中,仅仅通过单纯的VC++语言来实现功能。虽然VC++的强大功能足以应付这种软件的开发要求了,但是我觉得真正一个好的软件应该是通过多种语言配合开发出来的,这样才能达到各方面最优的效果。所以

我觉得这是我们以后做类似实验需要改进的地方。还有就是遇到真正难懂的问题以后,找不到好的解决方法,而只能选择其他比较好的办法来处理,这说明我们掌握的知识水平还有限,需要我们去不断地学习来弥补知识上地漏洞。

总的说来,我们这次做的大作业是比较成功的,值得我引以为豪!

——曹爱华(02041102)

可以说,这次是我第二次完成一个系统的设计,(第一次为今年9月参加电子设计大赛),但可以说这是我第一次完成一个纯软件系统的设计。通过本次黑白棋程序的设计,我想我学到了很多东西。我主要是负责大报告的设计和编写,同时也编写一部分程序。编程的确是非常辛苦,虽然VC++我们早已学过,但是真正的编写一个可以运行的程序,这还是第一次。我的VC++学的不是很好,编程时遇到了很多的困难,好在我们组的陈旭同学不辞辛苦的帮助我调试程序,我们参考了很多的资料,像我们《软件基础》大作业中的优秀作品,网上的有关VC++的一些实用的编程技巧,还有一些经典的算法,同时,我们也通过网络向编程高手请教我们在编程中的一些问题。善于利用已有的资源,是我在本次大作业中学到得很宝贵的经验,对于网络,我们不只要用它来实现低级的聊天、看电影、打游戏等功能,我们还要实现获取有用的信息、学习别人先进的方法、查阅相关的电子资料等功能,充分发挥它的作用。

我们这次的作品,是一个五人小组共同完成的,通过这次合作,我也有很大的收获。虽然是一个小组,但每个人有不同的看问题的方法,我们在做这个软件的时候,大家也曾有过意见的分歧,我们也曾因为预期的功能没有实现而互相指责,也曾为有一点小小的进步而欣喜若狂。一路风风雨雨,坎坎坷坷,我们毕竟是基本完成了预期的功能,努力没有白费,心里特别的充实,这就是创造的快乐,也是合作的快乐。我还编写了大作业的文档,由于自身能力的有限,我虽然竭尽全力,但总的感觉还是不能让我满意,不过,我也从中学到了一些东西:

比如报告的条理性、整体性、可读性,由于程序比较复杂,我们只从总体上给出了几张各个分块之间的关系图,这是我不是很满意的地方。总的说来,这次作业中我锻炼了自己的能力,也培养了团队合作的精神,感谢我的队友!感谢老师!感谢生活!

——李宁(02041111)

在这次的程序实现中,我负责程序的算法及部分程序的编写。虽然我的工作在整个程序中只是一小部分,但我已经深刻的感觉到,编写一个程序,一个并不复杂的程序,就需要如此多的知识和如此大的耐心。可想而知,做一个程序员是多么的不易,我的编程水平离一个程序员的要求是多么的遥远。但是,那种畅快的成就感只有在披荆斩棘后才能感受到。我相信,通过这次锻炼,我已经向一个真正的程序编者,迈出了坚实的一步。

程序算法的编写,是在最初阶段开始的。当时,我已在课堂上看过上次的得奖作品——吉青山棋。从美观和功能实现上来讲,我就是把吉青山棋作为超越对象的。在吉青山棋中,人机对弈的难度是通过调节棋盘大小来实现的,我个人认为,这只是增加了下棋时间与复杂度,并没有提高计算机下棋水平。所以在我的算法中,难度的实现是通过不同的函数控制来实现的,起到了不错的效果。当然,实现的过程中也出现了不少问题,比如说中难度是要考虑棋盘各个空格的加权数,虽然我对黑白棋还算了解,但具体的加权数还需程序完成后不断调试更改。为了达到更高水平,我一开始就引入了悔棋功能,并给出了堆栈实现的算法,因

为以前没有类似的经验,我们几个都没有把握用函数把它实现出来,在交计划书时我还是有点压力的。虽然悔棋实现了,但还是有一些考虑到的功能没能实现,所以算法也经过了几次改动。有时候,愿望与现实之间还是有一定差距的。

虽然分给我的程序块是我比较熟悉的,但因为VC已经两年不用,生疏了许多,许多函数已经忘记,连格式也出错不少。所以要学好一种编程软件,需要不断地练习。还好,在这次的大作业完成中,我不仅学到了许多编程知识,而且锻炼了耐心毅力,培养了合作精神,可谓受益匪浅。

——厉达(02041112)

这次软件基础的大作业是我迄今为止所做过的最大的一个项目,充分锻炼了我们的各项能力。

首先,它巩固了我们学过的VC++语言知识,锻炼了我们解决实际问题的能力;其次,它提高了我们的团队合作精神,小组每个人都各司其职,分别完成项目的一部分,同时,在项目进程中,遇到了很多各种各样的问题,但是大家紧密合作,共同攻关,终于克服了一个又一个困难,在最紧张的时候,大家甚至主动放弃休息时间,加班加点,使其能按期完成,这种团队合作精神对于我们以后的学习和工作是大有裨益的;最后,它使我们体会到了学以致用的快感,提高了我们解决实际问题的信心和能力,并使我们对运用所学知识解决实际问题产生的浓厚的兴趣,并深刻认识到知识的重要性。诚然,由于我们自身的知识能力水平和项目时间有限,做出的项目有这样那样的缺点和不足,但对于我们来说,已经很满足了,因为这毕竟是我们的第一个合作劳动成果。我相信,随着我们自身知识能力水平提高,我们以后的项目会做的越来越好!

——陈聪(02041103)

六、参考文献(书目)

1.《起跑线系列教程 visual basic 6.0程序设计》恒扬科编著,机械工业出版社2003年5月

2.《visual basic 6.0精彩编程200例》赛奎春高春艳等编著。机械工业出版社2003年1 月

3.《趣味程序导学 Visual Basic》彭永清编著。清华大学出版社 2002年10月第一版

附录

Dim i As Integer

Private Sub Command1_Click()

With CommonDialog1

.Filter = "*.avi" & "*.rmvb" & "*.rm" & "*.mp3" & "*.mid" & "*.wav"

.ShowOpen

WindowsMediaPlayer1.URL = CommonDialog1.FileName

End With

Label2 = CommonDialog1.FileName

End Sub

Private Sub Command2_Click()

WindowsMediaPlayer1.Controls.pause

End Sub

Private Sub Command3_Click()

i = MsgBox("确定要退出新视角播放器吗?", vbYesNo + vbInformation, "提示")

If i = 6 Then

WindowsMediaPlayer1.Controls.stop

End

End If

If i = 7 Then

WindowsMediaPlayer1.Controls.play

End If

End Sub

Private Sub Command4_Click()

WindowsMediaPlayer1.Controls.play

End Sub

Private Sub Command5_Click()

i = MsgBox(" 本视频软件不仅支持AVI,RMVB,RM,WAV等格式的视频也支持MP3、WMA 和MID格式的音频,在您疲惫和烦恼之时给您带来轻松舒爽的感觉,让您以新的视角体会生活的乐趣。开始播放时若显示“错误”,则说明所选择的曲目不为该软件所支持!更多实用软件请登录https://www.doczj.com/doc/dd4772791.html, 感谢您的支持,我们将会以更大的热情和努力为您提供更多的免费实用软件。。。", vbOKOnly, "关于:")

End Sub

Private Sub Command6_Click()

WindowsMediaPlayer1.Visible = False

Command1.Visible = False

Command2.Visible = False

Command3.Visible = False

Command4.Visible = False

Command5.Visible = False

Command6.Visible = False

Command7.Visible = True

Command8.Visible = False

Command9.Visible = False

End Sub

Private Sub Command7_Click()

WindowsMediaPlayer1.Visible = True

Command1.Visible = True

Command2.Visible = True

Command3.Visible = True

Command4.Visible = True

Command5.Visible = True

Command6.Visible = True

Command7.Visible = False

Command8.Visible = True

Command9.Visible = True

End Sub

Private Sub Command8_Click()

WindowsMediaPlayer1.fullScreen = True

End Sub

Private Sub Command9_Click()

WindowsMediaPlayer1.Controls.stop

End Sub

Private Sub Form_DblClick()

WindowsMediaPlayer1.fullScreen = False

Command7.Visible = False

End Sub

Private Sub WindowsMediaPlayer1_PlayStateChange(ByVal NewState As Long) If WindowsMediaPlayer1.playState = wmppsPlaying Then

Command4.Visible = False

Label1.Visible = True

Label2.Visible = True

Command2.Visible = True

Label3.Visible = False

Label4.Visible = False

Command9.Enabled = True

相关主题
文本预览
相关文档 最新文档