1软件课程设计实验报告课题:音乐点播系统班级:作者:学号:指导老师:课设评价:课设成绩:(小组报告)2一、需求分析1)项目描述····················································31.1编写目的··················································31.2项目背景················································31.3开发工具及环境简介········································42)软件基本要求··············································4二、总体方案设计说明1)整体结构模型··············································52)各部分功能具体内容及关系····································53)任务分配·················································6三、详细设计说明1)客户端设计1.1图形界面设计和列表管理····································61.2本地播放··············································91.3特色功能的实现··········································101.4客户端与服务器通信·······································122)服务器端设计2.1服务器界面设计··········································142.2乐库管理14···············································142.3服务器与客户端通信········································16四、测试过程说明1)测试步骤··················································162)测试结果与测评··········································17五、功能模块使用说明1)客户端···················································182)服务器端···················································19六、开发计划··················································20七、开发总结与建议············································213一、需求分析1)项目描述1.1编写目的设计一个基于windows平台的音乐点播系统,实现音乐库的管理以及用户网络下载和播放功能。通常音乐播放器能够满足音乐的播放功能,实现一款播放器的基本功能,但随着网络的日益发达以及人们对信息交互的需要,越来越多的情况下我们更多的是通过网络来获取音乐资源,但如何有效的实现这一目的以及提供良好的用户体验是其关键。通过windowsocket服务将客户端与服务器端相连接,将资源信息通过客户端来显示,不但简洁方便同时也能更好的满足用户需求,给用户带来极大的方便。1.2项目背景本项目作为《软件课程设计》课程的训练项目提出,在基本的设计实现基础上,将不断对已有的设计进行进一步的修改和完善,最终完成整个软件开发过程。本次项目的旨在通过不同软件工程设计方法与技术的实践,了解和掌握各种技术、工具平台的特点与局限性,体会协同开发方式。第1阶段:主要目的是通过对项目需求的分析和理解,通过面向对象的设计方式完成项目前期的准备工作。第2阶段:我们会根据既定需求,完善设计模式。第3阶段:在设计文档和需求分析的文档下,完成音乐点播系统原型的开发,并完成整个开发流程的测试报告第4阶段:通过音乐点播系统软件的设计开发,了解软件文档的编写原则,训练掌握软件各类文档写作的技巧,同时在文档的编写过程中提高和增加java开发的能力和经验。41.3开发工具及环境简介操作系统:windowsxp或以上版本Java-EclipseSDK:一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。同时Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT和JMF)。MicrosoftOfficeWord2007:经典办公软件,本项目中用于编写文档。2)软件基本要求2.1服务器端:1.有图形界面;2.提供音乐库的管理功能:包括添加、查询、删除功能;3.提供网络下载功能:支持通过歌名和歌手名进行歌曲检索和下载功能;2.2音乐播放端:1.有图形界面;2.支持音乐列表管理:网络下载、本地删除;3.提供基本播放功能:播放、暂停、快进、快退、停止;4.支持播放模式:单曲播放、单曲循环、顺序播放和随机播放;5.支持播放信息显示:歌曲名、播放时间。2.3拓展需求:1.支持歌词显示和同步播放;2.支持歌曲在线播放;3.支持更友好的歌曲检索和下载功能;4.提供更良好的操作界面。5二、总体方案设计说明1)整体结构模型本项目需要实现音乐播放的功能,同时需要有良好的界面操作,同时支持网络下载播放等功能。在概要设计中我们将该项目分解成客户端和服务器端来分别实现,并通过通信将两者联系在一起。1.1系统框架图文件传输接受与发送命图一系统框架图2)各部分功能具体内容及关系客户端传输模块基本音乐播放模块迷你音乐盒图形界面模块音乐播放模块音乐列表管理模块歌词显示模块服务器端音乐列表管理模块服务器端传输模块通讯传输模块迷你音乐盒客户端音乐播放服务器端同步通信模块歌词同步模块音乐播放管理功能图形化UI通信及传输数据库处理模块文件管理模块图形化UI6图二总体设计框图2.1基本播放模块功能:播放/暂停/停止、快进/快退、上一首/下一首、音量调节(包括静音)、单曲播放/随机播放/顺序播放2.2音乐列表管理:添加/删除音乐、歌曲信息显示(歌名、歌手名)2.3歌词显示模块:同步歌词显示2.4客户端传输模块:歌曲按条件搜索、歌曲下载2.5服务器音乐管理:添加/删除音乐、歌曲信息显示(歌名、歌手名)2.6服务器传输模块:提供音乐下载2.7图形界面模块:各部分功能界面可视化的实现3)任务分配组长:文念,负责分工调度,播放列表管理模块,音乐播放模块,客户端服务器通信模块等。组员:刘非凡,负责客户端、服务器端图形化界面,及软件测试、文档报告编写。三、详细设计说明1、客户端设计1)图形界面设计和列表管理1.1登陆界面设计考虑到项目的用户黏着度,在设计初期,拟设置分享功能,支持用户注册登陆等功能,并通过数据库保存用户信息,注册用户之间可以分享歌曲。用户信息函数:publicWelcomeFrame();这是整个项目的主类,即程序的7入口,用户选择可以注册,登陆或者是直接进入播放器主界面。图三登陆界面1.2主界面设计音乐播放器包含的功能模块比较复杂,因此需要将各个功能模块进行划分。在设计的过程中,我们将整个界面合理的划分为两个部分,包括:1、左边的歌曲信息及管理1.1当前播放、时间条、三个操作按钮,音量控制1.2播放列表(左)歌曲显示(右),三个操作按钮1.3添加删除、搜索框和按钮,2、右边的歌词面板2.1系统时间显示,搜索,下载2.2歌词显示,乐库搜索,皮肤切换主界面函数:publicclassMainView();左边部分:publicvoidViewLeft();右边部分:publicvoidViewRight();8图四音乐播放器主界面1.3列表管理列表管理包括歌曲的增删查改,为了方便对歌曲的操作,我们采用了sqlserver2000数据库添加歌曲:publicclassAddMusic();修改歌曲:publicclassUpdateMusic();删除歌曲:由于删除操作直接与数据库进行交互即可,没有封装成一个类图五添加歌曲界面9图六修改歌曲界面2)本地播放2.1音频文件的打开和关闭播放类:publicclassPlayerWork();音乐的播放暂停等功能的实现都需要调用该类,在播放类中包含有2个主要的方法:publicvoidplayerStart()//开始播放publicvoidplayerStop()//停止播放2.2音频文件信息的读取//通过传地址找到待播放的歌曲publicvoidPlayerWorking(StringfileAddress);2.3对歌曲的操作:停止/播放,上/下一曲,模式切换在java中,我们通过对事件的监听来实现相关操作,因此对歌曲的操作我们全部封装在一个事件监听的类里边。//按钮事件的监听(播放按钮,操作按钮、播放模式按钮,搜索下载)publicvoidactionPerformed(ActionEvente){//1、处理操作按钮(该操作为对歌曲列表的管理,即增删查改的操作)if(e.getActionCommand().equals(add))//添加if(e.getActionCommand().equals(delete))//删除if(e.getActionCommand().equals(update))//修改//2、处理播放按钮if(e.getActionCommand().equals(jb_next))//下一曲if(e.getActionCommand().equals(jb_last))//上一曲if(e.getActionCommand().equals(jb_play_pause))//播放/暂停//3、处理播放模式if(e.getActionCommand().equals(shunxu))//顺序播放if(e.getActionCommand().equals(danqu))//单曲播放if(e.getActionCommand().equals(xunhuan))//循环播放//4、搜索与下载if(e.getActionCommand().equals(search))//搜索if(e.getActionCommand().equals(download))//下载2.4播放状态显示在播放歌曲的过程中,需要实时的显示当前的播放,我们直接用jlb_song.setText(songname);即可以实现当前播放的显示2.5播放时间的变更播放时间包括歌曲的总时间以及正在播放的是时间点,因此我们用了一个类来实现:10//计算总时间并按照正确格式显示publicStringtotal(intt_seconds)在显示当前歌曲的时间时,我们将其在线程中实现。2.6歌词同步显示歌词显示的类:publicclassLrcParser()通过调用paint函数实现歌词的实时添加://实时同步歌词,参数g为画笔工具,Stringpait为实时的歌词publicvoidpaint(Graphicsg,Stringpaint)3)特色功能的实现在我们的音乐播放器中,添加了几个特色功能:1、当前时间的同步显示;2、整曲歌词的显示;3、根据乐库搜索歌曲4、智能换肤同对歌曲的操作一样,实现特色功能我们也是用事件的监听来完成的,在右边的界面中,我们设计了四个面板,分别用来存放四个功能模块的显示,并通过点击Button来进行切换。//4个button的监听,实现面板的切换jb_lrc.addActionListener(newActionListener())//1、歌词jb_ku.addActionListener(newActio