单机播放器的制作vbnet期末大作业300367.doc

上传人:豆**** 文档编号:17202471 上传时间:2022-05-22 格式:DOC 页数:43 大小:600KB
返回 下载 相关 举报
单机播放器的制作vbnet期末大作业300367.doc_第1页
第1页 / 共43页
单机播放器的制作vbnet期末大作业300367.doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《单机播放器的制作vbnet期末大作业300367.doc》由会员分享,可在线阅读,更多相关《单机播放器的制作vbnet期末大作业300367.doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流单机播放器的制作vbnet期末大作业300367.精品文档.VB.NET期末大作业单机播放器的制作一、 设计目的设计一款单机版的播放器,练习并熟练掌握课堂上学习到的知识。相关知识包括数据类型的使用和转换以及强制数据类型转换、选择结构与循环结构的使用、数组与字符串、过程与异常处理的练习、相关控件(包括label控件、timer控件、tooltip控件、textbox控件等等)的使用、鼠标事件的应用、数据库的链接与访问、多项目开发、多媒体播放。二、 设计思想及关键技术我的作业中共设计了7个窗体和一个模块,他们分别被命名为frmloading,fr

2、madduser,frmloadrunning,frmVmediaplayer,frmabout,frmsetusermsg,frmcrystal_reports和模块mdl。下面分别讲解他们的作用以及附着在他们上面的控件的作用。1、 frmloading:(1)各个控件及其名字:mainpanelbtnloadingbtnadduserbtnexitbtncolorPicmarkPicshowbtnbackcolortkbGreenckbcolorlblGreengpxcolorsetckxkeepnamebtnuserbookbtnxlblBluelblRedtkbBluetkbRedck

3、xexitlblkeytbxkeycbxnamelblnamelblmark还有隐藏的控件:(2)控件属性设置NameText其他FormFrmloadingFormborderstyle设置为NonePictureboxPicmark添加了一张图片Buttonbtncolor添加了一张图片,Flatstyle设置为flatButtonbtnadduser注册用户背景为transparent,flatstyle为flatButtonbtnloading登录背景为transparent,flatstyle为flatButtonbtnexit退出背景为transparent,flatstyle为f

4、latPanelmainpanel背景添加了一张图片LabellblmarkV播放器Buttonbtnuserbook使用说明背景为transparent,flatstyle为flatLabellblname用户名:背景为transparentComboboxcbxnameLabellblkey密码:背景为transparentTextboxtbxkeyCheckboxckxkeepname记住账户背景为transparentCheckboxckxexit退出提醒背景为transparentButtonbtnbackcolor背景色:背景为transparent,Flatstyle设置为fla

5、tCheckboxckbcolor随机颜色背景为transparentLabellblRed设置了背景色PictureboxPicshowButtonbtnx添加了一张图片,Flatstyle设置为flatTrackbartkbRed设置了背景色TrackbartkbGreen设置了背景色TrackbartkbBlue设置了背景色LabellblGreen设置了背景色LabellblBlue设置了背景色Groupboxgpxcolorset背景设置TimerTimadduser程序控制enabled和intervalTooltipTooltip1TimerTimcolor程序控制enabled

6、和intervalTimerTimcolorgroup程序控制enabled和interval(3)关键技术:.1利用timer控件实现动画效果有frmadduser出现、gpxcolorset的出现和消失、随机颜色的实现。.2当ckxkeepname被勾选,并成功登陆后,程序会自动将用户名和密码记录入数据库usermsg的表usermsg2中。当以后再次登陆时,cbxname 失去光标的时候,程序会检查数据库usermsg的表usermsg2的USERID字段,如果cbxname.text在usermsg2中有记录,则在tbxkey中自动输入密码,实现保存的用户自动登录的效果。具体实现的时候

7、,首先如果用户选择了“记住账户”,就将此用户名保存到表usermsg2中,我用datatable来把表usermsg2中的已经记住的用户名拿出来放到数组中,以便和输入的用户名作对比,当用户第二次登录的时候,如果在表usermsg2中的话,就说明之前“记住账户”过了,所以,这时在表一中把用户名对应的密码拿出来,完成自动输出密码。.3利用函数random 产生了三个0255的随机数给RGB,然后利用timer实现颜色的随机变换。.4利用 System.Diagnostics.Process.Start()实现打开word文档,利用了动态路径就不用怕路径找不到的情况了。.5退出提醒被勾选后,当点击退

8、出时,会弹出一个是否退出的提醒对话框。这是利用msgbox函数实现的动态窗体。.6利用 Trackbar将Trackbar.value的值给RGB实现手动控制窗体背景色2、 frmadduser(1) 各个控件及其名字:btnaddlbljobslblsexlblbirthdaygpxchooseLblkey2lblkeylbluserbtncloselbxjobrbtmanrbtwomandtpbirthTxbkey2txbkey1cbxuserbtnxlblmarkpicmark隐藏控件有:(2)控件属性设置NameText其他FormFrmadduserFormborderstyle设置

9、为NonePictureboxpicmark添加了一张图片Labellbluser用户名:背景为transparentLabellblkey密码:背景为transparentLabelLblkey2确认密码:背景为transparentGroupboxgpxchoose选填项目Labellblbirthday生日:背景为transparentLabellblsex性别:背景为transparentLabellbljobs职业:背景为transparentButtonbtnadd立即注册Flatstyle设置为flatLabellblmark注册新用户背景为transparentButtonbt

10、nx添加了一张图片,Flatstyle设置为flatComboboxcbxuserTextboxtxbkey1Passwordchar设置为 *TextboxTxbkey2Passwordchar设置为 *DatetimepickerdtpbirthValue设置为2000/1/1星期六Radiobuttnrbtwoman女背景为transparentRadiobuttnrbtman男背景为transparentListboxlbxjobTooltipTooltip1Buttonbtnclose取消Flatstyle设置为flat(3)关键技术:.1当确认密码栏txbkey2失去光标时,与密码

11、栏txbkey.text对比一下,如果不一样,则提示“两次密码不一样”。这个虽然简单,但是这是我第一次发现LostFocus这个事件,当时发现了很高兴,项目的其他地方也有用到这个事件。.2点击注册用户后,首先判断一下用户名栏、密码栏和确认密码栏是否都填写。前面的问题都正确了以后开始判断正在注册的用户名是否已经注册过了,如果没有则注册新用户。这个方法与之前的“记住账号”原理一样,就是利用datatable将所有用户名拿出来放到数组中,然后和输入的用户名对比,如果存在,就提示“用户已被注册”,如果没有就将所有信息存入数据库中。3、 frmloadrunning(1)各个控件及其名字:lblload

12、wordlblloadnum隐藏控件有:(2)控件属性设置NameText其他FormFrmloadrunningFormborderstyle设置为NoneLabellblloadnum背景为transparentLabellblloadword正在登陆,请稍后背景为transparentTimerTimloadrunning程序控制enabled和interval(3)关键技术此窗体用于在登录成功后做一个缓冲,不然显得播放器突然跳出来一样。.1利用timer控制lblloadnum上的数字每10ms加1.2lblloadnum上的数字加到100后开始加载窗体frmVmediaplayer,

13、并关闭窗体frmloading和窗体frmloadfunning4、 frmVmediaplayer(1) 各个控件及其名字:AxWindowsMediaPlayer1picshowlistListpanelbtn口1,btn口2btnxbtnopenfilebtnchoose1pichandtabpanelpicmarklbltimelistboxbtnlistbtn一lblnamelblmarkpichidelistpic_mesizebtnsplitter*基本信息框中的控件有:btnbackcolorgpxsetckbcolorpanel_btnsetpanel_btnhelppane

14、l_btnusermsgtkbBluetkbGreentkbRedpicShowlblBluelblGreenlblRed*用户信息框中控件有:btndeleteuserlblusernamelblusername1lblsexlblbirthdaylbljobsbtnmsgsetbtnuserdategpxusermsg*帮助系统框中控件有:gpxhelpbtnfeedbackbtnreportbtnaboutbtnusehelplblweb*隐藏的控件有:(2) 控件属性设置NameText其他FormfrmVmediaplayerFormborderstyle设置为NonePicture

15、boxpicmark添加了一张图片LabellblmarkV播放器PictureboxpichandDock设置为top,背景为TransparentLabelLblname背景为TransparentButtonbtnchoose1添加了一张图片,Flatstyle设置为flatButtonbtnopenfile添加了一张图片,Flatstyle设置为flatButtonbtn一添加了一张图片,Flatstyle设置为flatButtonbtn口1添加了一张图片,Flatstyle设置为flatButtonbtn口2添加了一张图片,Flatstyle设置为flatButtonbtnx添加了一

16、张图片,Flatstyle设置为flatButtonbtnlist播放列表ListboxlistboxPaneltabpanelDock设为rightAxWindowsMediaPlayerAxWindowsMediaPlayerLabellbltimePictureboxpicshowlist添加了一张图片Pictureboxpichidelist添加了一张图片Pictureboxpic_mesize添加了一张图片,背景设置为blackButtonbtnsplittCursor设置为VSplitPanelListpanel*基本信息框中的控件属性设置:此处与窗体frmloading的部分控件

17、一样,故此不在赘述,这里是列出不一样的控件。如有需要,请参照窗体frmloadingNameText其他Buttonpanel_btnset基本设置Flatstyle设置为flatButtonpanel_btnusermsg用户信息Flatstyle设置为flatButtonpanel_btnhelp帮助系统Flatstyle设置为flatGroupboxgpxset基本设置*用户信息框中控件属性设置:NameText其他Labellblsex性别:背景为TransparentLabellblbirthday生日:背景为TransparentLabellbljobs职业:背景为Transpar

18、entButtonbtnmsgset更改信息Flatstyle设置为flatButtonbtnuserdate客户数据表Flatstyle设置为flatGroupboxgpxusermsg用户信息Labellblusername1用户:背景为TransparentButtonbtndeleteuser注销用户Flatstyle设置为flatLabellblusername背景为Transparent*帮助系统框中控件属性设置:NameText其他Groupboxgpxhelp帮助系统Labellblweb官方网站:背景为TransparentButtonbtnusehelp使用帮助Flatst

19、yle设置为flatButtonbtnfeedback反馈意见Flatstyle设置为flatButtonbtnabout关于我们Flatstyle设置为flatButtonbtnreport举报Flatstyle设置为flat*隐藏的控件属性设置:(3) 关键技术.1大部分控件都是通过代码控制的大小和位置,包括窗体大小的变化时的大小和位置变化。麻烦主要是因为一个控件的大小由几个事件控制,其控制曲折复杂难以想象,反正我是不想在看那些控制大小的代码了。.2点击设置按钮btnchoose1将换回到初始界面,这里最难得就是各个控件大小及位置的控制,本来应该很简单,但是考虑到还有几个控件隐藏与显示的后

20、,大小应该也要变化,因此变得不简单。.3 利用控件OpenFileDialog1打开所需要的影音材料。.4用两个picturebox(pic口1,pic口2)实现了窗体最大化和还原,先记住最大化前的位置和大小,然后点击还原后再对应的赋值给我的窗体的大小和位置。这里也要考虑到变化后各个控件大小及位置的变化情况。在实现这个效果的时候,我没有用Maximized因为遇到了个问题,不是我想要的(我忘了那个问题了,反正Maximized后有我不想要的东西),所以我就自己让窗体的长宽等于屏幕的长宽。.5用listbox作为播放器的播放列表。这里专门为它建立了一个数据库,用于存放已经播放过的影音材料:如果是

21、第一次播放,则将名称和地址存放在数据库里,然后单击已经播放过的名称(也就是listbox里的项)就可以直接播放了。具体实现是,在openFileDialog1打开影音材料时,就将材料的名字和路径保存到数据库moviemsg中,然后再单击已经播放过的材料时就可以根据路径直接播放了。.6用button做成一个splitter的样子,并具有splitter的功能,即可以左右移动来改变右边播放列表和左边视频窗口的大小。至于我为什么不直接用splitter,是因为它存在一些问题,不能满足我的需要。.7用两个picturebox(picshowlist,pichidelist)实现播放列表的隐藏和显示。当

22、我在设置其他控件大小和位置时,这个功能给我造成了不小的麻烦,也是麻烦的主要来源。.8利用timer控件实现影音材料播放时长的显示,就是每隔100ms刷新一次材料播放的当前位置(这个当前位置是控件AxWindowsMediaPlayer1本来就有的,只是它没有显示,而且它最小单位是秒,但是它不会像秒表一样动,需要一个事件让他刷新一下,所以我就100ms刷新一次,反正在观众看来它只不过是一秒一动。)。.9窗体的移动:当鼠标左键按下的时候,记住光标和窗体上边缘和左边缘的两个距离,然后再光标拖动窗体的过程中让那两个距离不改变即可,也就是光标移动后,为了保持那两个距离不变,则窗体也要跟着移动。这样就实现

23、了窗体的移动。.10窗体的大小:当光标处于右下角黑色图片处时,光标由箭头变成了西北-东南双向箭头,实现原理与窗体移动差不多。首先记住窗体原点到屏幕上边缘和左边缘的两个距离a b,当鼠标左键按下的拖动时候,光标移动到哪儿,me.width就等于光标位置减去左边缘的距离b,me.height就等于光标位置减去上边缘距离a.11用户信息的呈现是利用select的查询命令,在窗体加载的时候就查询出来。更改信息是利用了update更新命令,注销是利用了delete删除命令.12窗体加载的时候就将登录用户的信息(除密码意外)查询出来。5、 frmabout(1) 各个控件及其名字:TbxmsgPichan

24、d(2) 控件属性设置Name其他FormFrmaboutFormborderstyle设置为SizableToolWindowPictureboxPichand添加了一张图片TextboxTbxmsgText设为V播放器Build版本:1.0陕西师范大学计算机科学学院学生个人保留所有权(3)关键技术本窗体用于当用户点击了“关于我们”而设置,没有代码。6、 frmsetusermsg(1) 各个控件及其名字:btnusermsglbxjobRbtmanrbtwomendtpbirthlblusernamBtnxlblsetusermsLbljobsLblsexLblbirthdaylbluse

25、rpicmark(2) 控件属性设置由于此窗体与窗体frmadduser部分控件一样,此处只列出不同控件的属性设置,如果需要,请参照frmadduser。NameText其他FormFrmsetusermsgFormborderstyle设置为NoneLabellblsetuserms更改用户信息LabellblusernamButtonbtnusermsg确认更改Flatstyle设置为flat(3)关键技术.1利用update更新数据库里客户信息7、 frmcrystal_reports(1) 各个控件及其名字:CrystalReportViewer1(2) 控件属性设置NameText其

26、他Formfrmcrystal_reports客户数据表CrystalReportViewer1CrystalReportViewer1Dock设置为fill(3)关键技术.1练习使用了CrystalReportViewer1控件,关于路径问题,我理解的是数据库在debug里就不用担心路径找不到,但是打包安装之后好像不能用了。8、 mdl(1) 关键技术做了一个Public Function,用于解决个别窗体内单引号的问题。代码如下:Public Function getsqlstr(ByVal str As String) As String Return Replace(str, , )

27、End Function三、 自我评价无框架窗体的拖动问题。其中遇到的问题:1、很轻松就可以把窗体的框架去掉,但之后我就发现一个问题,这个窗体没了标题栏,要怎么拖动?通过查书和上网终于解决了拖动的问题。2、一个简简单单的窗体拖动的问题还真不少。大体做完了之后,运行的时候发现不仅左键可以拖动,右键也可以,好神奇。但是跟我们的习惯有冲突,最后在老师给我们的书P264中找到了答案。3、运行时还有一个问题,就是第一次按下去,在拖动的一瞬间窗体莫名其妙的往上平移了一段距离,虽然之后依然能继续拖动,但这个平移是不应该存在的。就这花了我个小时,看书,上网,最后才发现移动的向量里,Y多加了个标题栏的高,明明就

28、把标题去掉了,怎么可能还存在这个高度!上述问题是我在一个月前做的时候存在的问题,现在我又找到了另一个更简单易懂的方法。就是:当鼠标左键按下的时候,记住光标和窗体上边缘和左边缘的两个距离,然后再光标拖动窗体的过程中让那两个距离不改变即可,也就是光标移动后,为了保持那两个距离不变,则窗体也要跟着移动,这样就实现了窗体的移动。新用户注册遇到的问题:1、在做一个信息录入(新用户注册)的功能的时候,在用insert into插入的时候,将相应变量对应到字段,老是提醒我说“insert into语句的语法错误”我对着insert into那句话看了两个小时,找了各种原因,符号错误的可能性最大,可就是找不出

29、来哪儿错了。最后还是无意中发现生日的返回值是字符串,外层要加上单引号。2、我自己注册了很多组数据,在注册的过程中发现,注册已存在的用户名的时候程序就崩溃了,所以此处应该加上一个判断, 为了加这个判断, 我用到了书上的datatable来取得整个表, 然后就可以理所当然的利用datatable来获取数据总行数count和第i-1行第列(也就是用户名),再用数组的时候用的有点晕,感觉好像有问题,但我已经没有勇气检查了,因为程序能按照预想的结果走。3、还有个问题:dtpbirth.Value.Date(datetimepicker)的数据类型到底是什么?三个星期前我在录入信息的时候把它当做字符串是没

30、有问题的,能成功录入,但现在它有提醒我说数据类型不匹配,最后我就只能把它强制类型转换成了字符串CStr(dtpbirth.Value.Date)。最烦的一个问题就是关于播放器界面控件的大小及位置的问题,我用了大量的代码和大量的时间去实现这个。本来一般的可以用anchor属性来设置,但我的这个不适用,因为这个属性最多只让我实现控件随着窗体大小变化而变化,我想要的效果是点击btnchoose1就可以缩小到初始比例,然后单击两个页面中的一个就可以把那个界面放大充满窗口,并且也能满足控件随着窗体大小变化而变化。而且窗体上还有播放列表,这个表是可以隐藏和显示的,当它隐藏后,窗体就会多出来一部分width

31、,这部分width应该被减掉,那么控件的大小是不是又应该跟着变化。几个事件可能都控制着同一个控件的大小和位置,这种情况我只能设置布尔类型的数据去控制它。由于时间问题,此应用也存在着问题:播放列表目前只能单击已有的项播放,没有过多的其他操作,比如一般播放器都有的右键单击已有项后弹出菜单等等对播放列表的操作。四、 参考来源及其他五、 源代码本软件共有7个窗体和一个模块: 1、 frmloading2、 frmadduser3、 frmloadrunning4、 frmVmediaplayer5、 frmabout6、 frmsetusermsg7、 frmcrystal_reports8、 模块m

32、dl下面分别介绍他们的源代码:1、 frmloadingImports System.DrawingImports System.Windows.FormsImports System.DataImports system.Data.OleDbPublic Class frmloading Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lblmark.Location = New Point(picmark.Width, picmark

33、.Height / 2 - lblmark.Height / 2) Me.WindowState = FormWindowState.Maximized Timadduser.Interval = 50 Timadduser.Enabled = False mainpanel.Location = New Point(Me.Width / 2 - mainpanel.Width / 2, Me.Height / 2 - mainpanel.Height / 2) 对背景颜色初始化 gpxcolorset.Hide() timcolor.Enabled = True timcolor.Inter

34、val = 1000 timcolorgroup.Enabled = False timcolorgroup.Interval = 50 AddHandler tkbRed.Scroll, AddressOf DisplayRGB AddHandler tkbGreen.Scroll, AddressOf DisplayRGB AddHandler tkbBlue.Scroll, AddressOf DisplayRGB tkbRed.Value = 0 tkbGreen.Value = 192 tkbBlue.Value = 192 lblRed.Text = tkbRed.Value.To

35、String() lblGreen.Text = tkbGreen.Value.ToString() lblBlue.Text = tkbBlue.Value.ToString() picShow.BackColor = Color.FromArgb(tkbRed.Value, tkbGreen.Value, tkbBlue.Value) Me.BackColor = picShow.BackColor ckbcolor.Checked = False End Sub *各个按钮控制* Private Sub btnexit_Click(ByVal sender As System.Objec

36、t, ByVal e As System.EventArgs) Handles btnexit.Click If ckxexit.Checked = True Then Dim message, title As String Dim style As BorderStyle Dim response As MsgBoxResult message = 是否要退出程序? title = 提示 style = MsgBoxStyle.Question Or MsgBoxStyle.YesNo response = MsgBox(message, style, title) If response

37、 = MsgBoxResult.Yes Then Me.Close() Frmadduser.Close() End If Else Me.Close() Frmadduser.Close() End If End Sub Private Sub btnadduser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnadduser.Click 注册新用户信息 Frmadduser.Show() Timadduser.Enabled = True Frmadduser.Location =

38、New Point(0, 0) Frmadduser.Height = 0 Frmadduser.BackColor = Me.BackColor End Sub Private Sub Tim_pic_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timadduser.Tick If Timadduser.Enabled = True Then If Frmadduser.Height = 500 Then Frmadduser.Height += 50 End If End If End S

39、ub Private Sub btnloading_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnloading.Click 如果勾选了保存用户,那么点击登录的时候,就把此用户的用户名保存到数据库usermsg2中 If ckxkeepname.Checked Then Dim connstr, insertcmd As String connstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=usermsg.mdb ;Jet(OleDb

40、):Database(Password = 123456); insertcmd = Insert Into usermsg2(USERID) values ( & getsqlstr(cbxname.Text) & ) Dim conn As OleDbConnection, cmd As OleDbCommand conn = New OleDbConnection(connstr) conn.Open() cmd = New OleDbCommand(insertcmd, conn) cmd.ExecuteNonQuery() conn.Close() End If 检查一下用户名和密码

41、是否都填写 If cbxname.Text = Or tbxkey.Text = Then Dim message, title As String Dim style As BorderStyle Dim response As MsgBoxResult message = 用户名或密码未填写! title = 提示 style = MsgBoxStyle.Exclamation response = MsgBox(message, style, title) Else 开始校验用户,从数据库中读取用户名和相应的密码,如果用户是注册过的,则登陆成功 Dim connstr, selectcmd As String selectcmd = SELECT * FROM usermsg1 WHERE USERID = & getsqlstr(cbxname.Text) & and PASSWORD= & getsqlstr(tbxkey.Text) & connstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=usermsg.mdb ;Jet(OleDb):Database(Password = 123456); Dim conn As OleDbCon

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁