毕业设计(论文)基于C#实现音乐播放器功能_第1页
毕业设计(论文)基于C#实现音乐播放器功能_第2页
毕业设计(论文)基于C#实现音乐播放器功能_第3页
毕业设计(论文)基于C#实现音乐播放器功能_第4页
毕业设计(论文)基于C#实现音乐播放器功能_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、闽江学院本科毕业论文(设计) 题 目基于c#实现音乐播放器功能学生姓名 学 号 系 别 计算机科学系 年 级 专 业 通信工程 指导教师 职 称 教授 完成日期 摘 要现代经济发展迅速,科学技术也在不断发展进步,日益繁荣的计算机信息技术带给人们许多便利。音乐作为人们生活中常见的娱乐方式,也在计算机普及的冲击下发生了革新。随着音乐的数字化,媒体播放器也往更高质方向进步。最常见的windows media player因其强大的音频解码功能而备受青睐。当你也想自己动手制作一个能够简单播放歌曲的音乐播放器,体验一下编程的乐趣的时候你可以使用visual stdio2013工具。本文的目的在于让大家知

2、道一种简单建造音乐播放器的方法,主要是通过visual stdio进行。文章包含了对音乐播放器界面实现的方法和对后台代码的理解及掌握,主要实现通过电脑使用播放器进行音乐播放功能和简单的在线搜索的功能。通过实践进一步理解播放器的需求,以及其开发过程,基本满足大众播放器的要求。文中使用面向.net frame框架,设计了一个简单的音乐播放器。该播放器可以实现播放功能、搜索功能、歌词显示等。关键字:音乐播放器、visual studio 2013、.net frameabstractwith the rapid development of modern economy and the contin

3、uous development of science and technology, computer information technology is becoming more and more prosperous. music as a common way of entertainment in peoples lives, but also because of the popularity of computers has changed. with digital music, media players also progress to higher quality di

4、rection. because of the windows media players powerful audio decoding, the most common windows media player loved by everyone. if you want to make a simple music player to play songs and to experience the fun of programming,you can use the visual stdio2013.the purpose of this is to make everyone kno

5、w a simple way to build a music player, and this method is mainly achieved by the visual stdio. article contains the method of a music player interface implementations, to understand and grasp the code-behind, the main function of the music player is to play songs and to search online. through pract

6、ice we can further understand the needs of the player and its development process. the music player meets the requirements of the public players basically. this article uses .net framework to design a simple music player. this music player can play songs, search online, and display the lyrics.keywor

7、ds:music player. the visual stdio 2013. .net frame目 录1. 引言11.1 选题背景及意义11.2 网络流行音乐播放器简介11.2.1 酷狗音乐11.2.2 百度音乐21.3 课题研究思路22. 开发技术简介22.1 c#编程语言介绍22.2 windows media player32.3 windows控件32.4 webbrowser控件33. 需求分析43.1 功能需求43.2开发与运行环境63.3 可行性分析63.3.1 技术可行性73.3.2 经济可行性73.3.3 法律可行性74. 系统设计74.1设计概要74.2 功能模块85.

8、 功能实现95.1 播放器框架设计95.1.1命名空间结构95.1.2 app.config95.2 歌曲添加模块105.3 歌曲删除模块115.4 播放控制模块125.4.1 取消自动播放125.4.2 点击播放音乐125.4.3歌曲切换135.5 自动播放下一曲135.6 显示歌词模块145.7 显示皮肤模块155.8 播放器背景模块165.9 网络连接模块166. 软件测试167. 结束语24致 谢25参考文献26基于c#实现音乐播放器功能1. 引言1.1 选题背景及意义什么是音乐?是跳动的音符跃然在琴键上,敲击出的空灵;是平稳的音律轻晃在琴弦上,弹奏出的悠闲。音乐是人类在不同的心境下谱

9、写出来,表达情感的一种,同语言一样,甚至比语言更加无界限。国与国之间也许语言不通,但是音乐是相通的。一个个不起眼的小音符连接起来却能表达出喜怒哀乐,音乐的伟大或许就在于此吧。无论是流行的、摇滚的、爵士的或是古典的,生活中都随处可以听闻。也许你是在广场上跳舞的阿姨,也许你是徜徉音像店的学生,也许你是星空下慢跑的青年,音乐渗透着我们每个人的生活,与时间融汇在一起,混合着情绪,不可剥离。音乐的无阶级性也是它独有的魅力。随着信息技术的进步,人们对音乐的需求日益增长,数字媒体音乐播放器的更新换代愈来愈快。有的播放器功能繁多,有的趋于简约,各式各样的播放器可供人们选择。现在也有许多对设计播放器感兴趣的人,

10、但却时常因为觉得编程是件十分困难的事情而搁置了。本文使用一种简单易懂的方法设计一款简单实用的音乐播放器。1.2 网络流行音乐播放器简介 以下介绍几款网络上比较流行的音乐播放器,比如酷狗音乐,百度音乐等,分析并比较了他们各自的特点与功能。1.2.1 酷狗音乐作为中国领先的数字音乐播放平台,酷狗音乐以其丰富的共享资源文件和便捷简单的操作方式,吸引了上千万的用户。随着近年的不断更新和改进,酷狗音乐不仅提供了数亿的音乐文件,还给众多用户提供了k歌和游戏的平台,满足更多用户的需求。酷狗音乐在ui界面设计一向秉着清新整洁舒适的理念,此外还提供了个性设计背景的功能,更好满足不同用户的审美观。无论是硬件内存音

11、乐资源库,还是软件各种花样功能,都让酷狗音乐保持在中国市场领军的地位。软件特色:1、我的音乐,进入云时代,随身携带随时打开。2、我喜欢,收藏喜欢的歌曲到歌单温习回味。3、点歌,记录用户与好友的音乐对话。4、随便听听,欣赏各类心情频道。5、高品质音乐试听,给用户带来完美的听觉体验6、更换播放器肤色7、定时关机8、离线播放9、精准歌词逐字定位10、音量增益可放大至10倍。1.2.2 百度音乐百度音乐给自身的地位是一个旨在为用户提供海量正版音乐的中国第一音乐门户。自2006年收购千千静听之后,它在其原有的基础上进行改进,于2013年创建了百度音乐,所以虽然相对于其他数媒播放器它是个后起之秀,但有些不

12、亚于其他播放器的底蕴。百度音乐秉着为音乐而生的宗旨,为使用用户提供了在线搜索、听歌识曲、歌词mv播放等功能。在传承了千千静听精致简捷的优势基础上,还加入了智能音效等特色功能,给用户提供了更加优质的音乐视听服务。同时,百度音乐付出了许多在支持正版和原创事业上,让更多高品质的音乐得以传播。1.3 课题研究思路用c#实现音乐播放器功能是从这个音乐播放器的基础功能出发,通过程序将音乐播放控制、音乐文件控制、歌词控制等功能模块化,让这些功能让人更加容易了解,个中一些模块的设定也能让人更加容易明白这种音乐播放器的设计,更可以对visual stdio软件的使用更加熟悉。具体是通过.net frame框架技

13、术与medial控件调用技术来实现音乐播放的功能;播放列表的控制是通过timer 与contextmenu的使用,webbroswer.navigate可以实现网络搜索功能。2. 开发技术简介2.1 c#编程语言介绍2000年7月,微软公司发布了一种新型的、简单安全的、面向对象的程序设计语言-c#语言。它是衍生于c/c+。具备了c+、visual basic、delphi、java等语言的优点。是.net平台上的核心开发语言。c#是现下最新的程序设计技术功能的载体,体现了当今最新程序设计技术的精华。c#同时拥有着c语言的语法风格和c+的面向对象特性。然而又同c语言和c+有明显区别。它在面向in

14、ternet的对象模型方面进行了重新设计,使用的是.net框架的类库。为了使程序不能随便访问内存地址空间,c#不再提供对指针类型的支持。不同于以往的设计语言,c#不再支持多重继承,这就避免了由于结构中多重继承带来的不良后果。而.net框架同时也为c#提供了一个良好的程序设计环境,这些都使得c#成为当下较为流行、普遍使用的一种程序设计语言。2.2 windows media playerwindows media player是微软公司推出的一个自带的播放器。一般简称“wmp”。wmp可以播放mp3、wma、wav等格式的文件。windows media player在windows操作系统中是

15、组件内置,也可以从网络下载。支持通过插件增强功能。2.3 windows控件windows控件指的是windows系统预定义的标准控件,如按钮控件、编辑控件和列表控件等。用户同应用程序的交互都是通过这些预定义控件来实现的,对于用户和应用程序来说这些预定义控件其实就是子窗口。跟普通的窗口类一样,这些预定义控件中的每一个预定义控件不管是外观属性还是具有的功能都是由其所属的窗口类来定义。2.4 webbrowser控件webbrowser 是一个.net 控件类,在.net framework2.0版中新增。因为用户调用webbrowser 控件在窗体中导航网页时会占用大量的资源,所以为了确保资源的

16、及时释放,我们要在使用完该控件后调用 dispose。可以使用webbrowser 控件中与导航相关的属性、方法和事件将控件导航到特定 url、在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页。3. 需求分析3.1 功能需求由当下几个流行的音乐播放器可知大众对音乐播放器的基本功能有哪些,以下分别描述:编号:1用例名称:播放器的换肤功能参与者:用户目标:用户可以更改播放器肤色前置条件:音乐播放器正常运行基本事件流:1.用户点击“换肤”按钮 2.播放器界面肤色随之更改编号:2用例名称:播放器的播放功能参与者:用户目标:用户可以播放本地计算机的音乐文件前置条件:音乐播放器正常运行

17、基本事件流:1.选中要播放的音乐文件 2.点击“播放”按钮编号:3用例名称:播放器的暂停功能参与者:用户目标:用户可以暂停正在播放的音乐文件前置条件:音乐播放器正在播放音乐基本事件流:1.点击“停止”按钮编号:4用例名称:音乐文件的添加功能参与者:用户目标:用户可以把本地计算机里面的音乐文件添加至音乐列表中前置条件:播放器正常运行,并且在本地计算机中有音乐文件基本事件流:1.点击“选择音乐”按钮 2.系统弹出一个“选择文件”的对话框 3.选择要添加的音乐文件后置条件:播放器的音乐列表中有之前选择的音乐文件编号:5用例名称:音乐文件的删除功能参与者:用户目标:用户可以删除播放列表中之前添加的音乐

18、文件前置条件:音乐播放器正常运行。列表中有之前添加的歌曲文件基本事件流:1.选中要删除的音乐文件 2.右击删除文件 3.音乐文件在播放列表中被删除后置条件:音乐播放器的歌曲列表删除了被选中的歌曲文件编号:6用例名称:上一首/下一首功能参与者:用户目标:用户可以实现播放列表中的歌曲切换功能前置条件:音乐播放器正常运行。歌曲列表中有上一首/下一首歌曲基本事件流:1.用户单击上一首/下一首按钮 2.可以播放歌曲列表中的上一首和下一首歌曲编号:7用例名称:歌词显示功能参与者:用户目标:播放器播放歌曲时会显示相对应的歌词前置条件:音乐播放器正常播放歌曲,并且在本地计算机音乐文件夹中有对应的歌词文件基本事

19、件流:1.用户选中歌曲点击进行播放后置条件:播放器界面会以滚动的形式出现相对应的歌词 编号:8用例名称:联网搜索功能参与者:用户目标:用户可以联网在线搜索歌曲前置条件:音乐播放器正常运行,并且有网络基本事件流:1.用户在输入框中键入搜索歌曲,点击“搜索”后置条件:搜索到的页面会显示在webbrowser空间中3.2开发与运行环境u 硬件平台:cpu:intel(r)celeron(r)cpu n2940 1.83ghz 内存4.00gb64位操作系统硬盘500gbu 软件平台:开发平台:visual stdio 2013;运行平台:windows7;3.3 可行性分析项目的可行性分析主要包括技

20、术可行性,经济可行性和法律可行性这3个方面的可行性研究。3.3.1 技术可行性可行性研究的关键内容就是技术可行性。在系统开发过程中遇到的难度最大的问题无疑就是技术可行性的研究了。这个音乐播放器是由c#编写的简单程序。是在visual stdio 2013平台上用.net frame框架技术设计的。调试比较简单,对于计算机的硬件配置也没有什么较高的要求,可以直接运行。所以在技术上是可行的。3.3.2 经济可行性一个计算机系统的开发价值主要在于他带来的效益,尤其是他的经济效益。一个项目的盈利额是扣除掉所有花费的成本之后剩余的部分,而根据盈利额也可以判断这个项目在经济上是否是可行的。一般而言,一个软

21、件的开发成本主要由4部分组成:l 购买并且安装软硬件以及相关设备的支出。l 系统开发的费用。l 系统安装,运行以及维护的费用。l 人员培训的费用。但是此次毕业设计作业仅是一个简单的小设计,并不需要花费什么,所以在经济上的可以的。3.3.3 法律可行性法律可行性的研究主要在于是否会侵害到他人的利益,是否会违反国家的法律法规。在设计此音乐播放器时,没有损害到别人的利益,更没有违背国家有光规定。因此本播放器在法律上是可行的。综上所述,此次设计在技术上,经济上和法律上都是可行的。4. 系统设计4.1设计概要音乐播放器作为数字音乐实现的媒介最基本的是要具备支持多种音频格式的解码播放。通过对大众用户的需求

22、来看,播放器的呈现画面及其功能不应该设计得太繁杂,简单的画面更能让人产生好感。在尽量减少内存占用的基础上实现大众播放器的基本功能。该系统基本功能分为四个部分,下面对每个部分实现功能进行分析。播放控制:控制歌曲的播放,实现歌曲播放、暂停、停止,还可实现歌曲上一曲/下一曲的功能。歌曲控制:通过打开本地文件来实现歌曲的添加,可以逐个添加也支持批量添加;列表中的歌曲也可删除。歌词控制:播放器在播放音乐的时候,会进行自动扫描查看本地计算机是否存在相应的歌词文件,如果存在则会进行滚动播放。联网控制:这个播放器还可以接入网络在线进行歌曲搜索并且下载至本地。4.2 功能模块本系统的这个播放器,功能模块如下图1

23、。音乐播放器联网控制歌词控制歌曲控制播放控制播放或暂停停止上一曲/下一曲歌词显示在线搜索歌曲删除歌曲添加歌曲图1软件功能模块图5. 功能实现5.1 播放器框架设计窗体在windows程序中是必不可少的。任何一种windows程序都需要窗体。在c#中,.net framework的windows窗体应用程序是最普遍也是最重要的基于windows平台的开发框架。windows窗体可以包含控件,控件是一种可见的供用户输入数据的界面元素。众多的窗体、菜单、文本框、列表等显示元素集合在一起形成类,众多相关的类又组成了net类库。类库中含有很多种控件、组件和容器。利用这些可以设计一款简单方便使用的界面。用

24、户可以依据需求,通过控件对类库中的元素进行调用,可以对界面进行编辑,设计自己喜欢的外观。但是这一工程很耗时,许多程序非常繁杂,所以这里直接用一些图片来作为背景。虽然并不一定能做到非常美观,但至少是可以满足舒适的外观要求。通过设计界面的操作,也更进一步掌握了窗体和控件的使用,界面主要由窗体与控件拖放构成,视图设计器能自动生成大部分代码。5.1.1命名空间结构采用windows窗体应用结构,其命名空间结构为:5.1.2 app.config 5.2 歌曲添加模块这个播放器打开本地计算机音乐文件的方式主要依靠的是openfiledialog组件,预先设置好一个打开文件的路径,在播放器界面点击“选择音

25、乐”的时候能跳出之前设置好路径的对话框,打开对话框的时候可以自动筛选,显示音乐文件以供选择添加。具体代码如下:添加歌曲时直接选中要添加的歌曲,即可实现歌曲的导入,如图2。图2 添加歌曲窗口5.3 歌曲删除模块 我们实现了将歌曲添加至播放列表的功能所以也要实现将不需要的歌曲从播放列表删除的功能。更改listbox1的属性,selectionmode的默认属性值为selectionmode.one,将selectionmode选为 multiextended,便可以实现对歌曲的多项选择。所以我们在多选删除的时候,在获得了要清除的歌曲的数量后,根据索引删除,先删除集合,然后再删除列表,代码如下:在音

26、乐播放列表中,先选中要删除的音乐,然后右键单击会给予删除提示,点击确认删除后就可以将选中的歌曲删除了。支持逐个删除和批量删除。如图3、图4所示。图3 逐个歌曲删除图4 批量删除歌曲5.4 播放控制模块播放音乐是播放器的基本功能。这个部分讲的是歌曲播放的功能。简单包括的部分是:取消自动播放、点击播放歌曲、上一曲/下一曲歌曲切换。5.4.1 取消自动播放当你给音乐播放器预先赋予音乐文件路径时,音乐播放器会在加载程序后时候自动播放音乐,所以要在加载程序时就先取消音乐播放器的自动播放功能。代码如下:5.4.2 点击播放音乐给listbox1设置一个单击事件来实现点击播放列表中的音乐。即在选中要播放的音

27、乐文件以后,点击“播放”按钮进行播放音乐。代码如下:5.4.3歌曲切换歌曲上一曲/下一曲的切换可以通过列表指针所指的加减来实现,当歌曲在播放时,想要切换到下一曲/上一曲,只需点击播放器界面的“下一曲”或者“上一曲”的按钮,即可实现下一曲/上一曲的切换。代码如下:5.5 自动播放下一曲这个播放器可以实现自动播放下一曲,从而可以方便用户在听完一首歌曲的时候不用再手动点击播放。可以保证播放列表里面的歌曲顺序播放。我们用music player.ctlcontrols显示歌曲文件的播放时长。具体代码如下:再通过判断总的时长与当前播放的时长相差的值是否达到要播放下一曲的条件,从而进行下一曲播放。代码如下

28、:5.6 显示歌词模块音乐播放器的歌词显示功能主要是通过将歌曲文件名中的歌曲格式名称如“mp3”直接替换成歌词格式的“lrc”,以此来把歌词文件读取到数组之中,再把歌词文件里对应的时间与句子分割,使歌词文字能于相对应的时刻滚动显示出来。因此,本地计算机音乐文件夹中须存有相对于的歌词文件,以供读取。若没有歌词文件可读则会显示“歌词未找到”。代码如下: 5.7 显示皮肤模块这个模块主要使用了skinengine插件来实现皮肤的显示,通过directory将之前下载好的皮肤文件导入到软件中,然后通过点击软件界面上的“换肤”按钮进行界面的改变。主要代码为:5.8 播放器背景模块wmp作为控件无法显示原

29、来的多维画面,因此为了界面的美观,我们调用了控件在这个空白的地方增加了可变化的图片。具体代码如下:5.9 网络连接模块通过http utility将textbox中的搜索条件改为网页地址编码,然后封装为百度音乐搜索的网页地址,通过webbrowser的网页导航方法向该地址发送请求并且将搜索到的页面显示在webbrowser空间中,实现了在线搜索功能。代码如下:6. 软件测试软件测试的英文缩写是qa。全称是quality assurance,翻译成中文就是质量保证。软件的终极目标是确保程序符合它的要求。测试是根据需求转换为质量目标,根据质量目标找寻软件和程序中的缺陷,以使得软件达到质量目标要求。

30、软件测试的就是为了保证软件产品质量。由此可知软件测试是很重要的,因此我们对这个播放器做了简单的功能测试。测试编号6-1测试项目启动软件预置条件1.系统正常运行测试过程1打开播放器预期结果播放器正常启动实测结果播放器可以正常启动,截图如下6-1。 图6-1测试编号6-2测试项目换肤功能预置条件1.播放器正常运行测试过程1点击“换肤“按钮预期结果播放器界面肤色改变实测结果播放器可以实现换肤功能,截图6-2-1为变换皮肤前,截图6-2-2为变换皮肤后。图6-2-1图6-3-2测试编号6-3测试项目添加歌曲预置条件1. 播放器正常运行2. 本地计算机有音乐文件以供添加测试过程1 点击“选择歌曲”按钮2

31、 会跳出一个文件框在其中选要添加的歌曲3 点击确认将歌曲添加至播放列表预期结果播放器列表显示被添加歌曲实测结果播放器列表可以显示添加的歌曲,如下截图6-3。图6-3测试编号6-4测试项目删除歌曲预置条件1. 播放器正常运行2. 播放器的播放列表中有歌曲测试过程1. 选中要删除的歌曲2. 右击选择删除预期结果音乐列表中被选中的音乐会被删除实测结果可以实现歌曲删除功能,如下截图6-4-2即为图6-4-1删除歌曲后。图6-4-1图6-4-2测试编号6-5测试项目上一曲/下一曲预置条件1. 音乐正常播放2. 播放器的播放列表中有歌曲测试过程1. 点击“上一曲”、“下一曲”按钮预期结果可以正常切换歌曲实

32、测结果播放器可以实现上一曲/下一曲的歌曲切换功能。播放状态如图6-5-1切换下一曲后播放状态即为图6-5-2,再切换到上一曲后播放状态为图6-5-3。 图6-5-1图6-5-2图6-5-3测试编号6-6测试项目歌词显示预置条件1. 播放器正常运行2. 本地计算机音乐文件夹中有相对应歌词文件测试过程1. 点击歌曲进行播放预期结果可以显示歌曲实测结果播放器可以显示正在播放歌曲的歌词。效果如图6-6。图6-6测试编号6-7测试项目联网搜索预置条件1. 播放器正常运行2. 有连入网络测试过程1. 在搜索框中输入搜索内容2. 点击“搜索”按钮预期结果播放器界面上会显示搜索到的页面实测结果播放器界面可以显

33、示搜索的页面,效果如图6-7。图6-7 通过简单的功能测试,我们可以看出系统界面简单大方,音乐播放器的各项功能流程基本满足用户需求,而且方便使用。7. 结束语 学生生涯即将结束,我也完成了我大学里的最后一份作业,这次的毕业设计作业虽然只是一个简单的小设计对我来说已经是一个很大的挑战。之前虽然接触过一点c语言和c+,但是并没有学习过c#的知识,所以对于这次的设计我还是花了很多心力的。在最早选定题目以后,不知所措,无从下手,后来经过余根坚老师的指导,我又通过网络,书籍查阅了一些相关资料理最终出了一些头绪。在老师的无私帮助和我的不懈努力下这个设计才得以完成,但是由于时间过于有限,而我的能力又十分不足

34、,因此这个设计也并没有很完美,仍存在一些不足之处,比如功能不那么全面,界面过于简洁等等。虽然我做的只是一个简单的音乐播放器,但是在这个不断探索研究的过程中我还是学到了很多东西,让我对c#的编写方法有了一定的了解。也让我明白了所有付出的回报都是看得见的。是如书中所说:“是故无冥冥之志者无昭昭之明”没有潜心专研的精神就不会有洞察秋毫的聪慧,经历了大学四年的磨砺,自觉获益良多,但是学不可已,以后仍需要继续放低心态的去学习。致 谢世上最不留情面的就是时间了,它不顾你是否珍惜,说走就走了。临近毕业之际我思绪万千,四年光阴不长不短的带着欢声与泪水从你我生命中奔驰而过。四年前,我们是懵懂的初学者,带着一颗赤子之心在这里相遇。而今都要各奔前程了。大学四年,让我们从无知的少年初步踏入社会,完成了从学校到社会的过渡。在学业上,大学课程给我们带来了更广阔的视野;在实践上,许多实操课让我们把理论结合到实际当中。谢谢在我的人生成长道路上出现过帮助过我的人,谢谢一直在我身后关心我照顾我的父母,他们一直在我身后给予我精神和经济上的支持。虽然他们没有多高的文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论