版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE软件课程设计实验报告(个人报告)课题:音乐播放器设计班级:电信1103班成员:成俊文学号:U201113148指导老师:许毅平老师课设评价: 课设成绩:一、需求分析1)引言···················································32)预期功能·············································33)设计目标·············································4二、界面方案设计说明1)拟选用的开发平台和工具介绍····························42)系统框图··············································53)软件各功能模块划分······································64)模块间的相互关系·····································85)开发计划··············································8三、详细设计说明1)主界面轮廓设计及初始化·······························82)界面外框和关闭最小化等的实现·························103)菜单添加歌曲设计·····································13菜单界面设计:4)播放列表list的实现···································13播放列表的界面设计5)播放的控制部分·······································14播放按钮、进度条等的控制面板设计:6)歌名、歌词、目录显示的部分···························16歌词界面设计(含有全部显示和滚动两部分):四、测试过程说明1)测试用例说明········································182)测试情况说明········································203)测试经历与想法21五、功能模块使用说明22六、开发总结·············································24需求分析引言本课程《软件课程设计》,旨在运用所学课程中有关数据结构、操作系统、数据库系统知识来进行本课程设计,熟练掌握高级程序设计技术,加深对课程内容的理解、提高软件应用设计能力及编程和调试能力。同时加强学生的自我学习能力和团队协作能力,让同学学会面对问题,并学会独立去解决问题,也能触发学生的创新能力。此次,我们班抽的任务是任选一门自己熟悉或擅长喜欢的语言设计一个基于windows平台的音乐播放器软件,要能实现对音乐库的管理和基本播放功能。随着信息时代的到来以及网络的日益发展,音乐播放器软件随处可见,人人都在使用自己喜欢的播放应用软件。其中也不乏一些优秀的成品,如酷狗、天天动听、qq音乐播放器等。对于各色各样的播放器,用户心中都有自己的评价,如今我们作为它们的使用者,以用户的角度重新来设计一个音乐播放器,不仅要实现播放等最基本功能,最重要的是要提供一个良好的用户体验,即给使用者简洁,明了,方便,功能丰富的感受。这依赖于我们课堂知识基础、课下大量的资料查阅、自主学习思考,以及小组成员之间的讨论、纠正与创新。在我们参考了很多的播放器软件,查阅了很多java的有关媒体播放器的知识后,我们才正式开始设计我们自己的播放器,并有了如下的成果。预期功能**软件基本要求1.有图形界面;2.提供基本播放功能:播放、暂停、快进、快退、停止;3.支持播放模式:单曲播放、单曲循环、顺序播放和随机播放;4.支持播放信息显示:歌曲名、播放时间;5.支持播放列表管理:歌曲增加、歌曲删除、歌曲播放次序调整。**可选要求1.支持歌词显示和同步播放;2.支持本地歌曲搜索和管理;3.均衡器管理:支持不同风格的音乐模式播放;4.自动记忆播放功能(程序关闭时能记忆当前播放的歌曲,重启后继续播放);5.提供更良好的操作界面;6.其他功能。3)设计目标对于功能完成方面,力求在出色完成所有预期基本功能的基础上,基本实现所有可选要求,并且努力创新出新的功能。对于用户界面设计方面,力求简洁明了,做到即便对没有任何编程基础的人也能无障碍使用我们设计的播放器。对于程序编写方面,力求用简单的语句实现更多复杂的功能,不重复,不缀余。对于软件稳定方面,力求软件运行不出错,力求稳定无bug。总体方案设计说明开发平台和工具经过小组商定,因为之前有接触过java,所以我们选用了java语言,而java语言,其本身相对于其他编程语言也有着非常大的优势,作为一门面向对象的语言,java具有很强的灵活性、模块化、透明性、可重用性强的优点。相对C++,java更加强大、健壮、安全,而且又很简单,容易入门和掌握。个人在初次接触java之后就非常喜欢这门语言,之前也用java编写过爬虫带哦吗所以我们选用了以下的开发平台和工具开发平台——JavaEclipse:Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。个人觉得用eclipse写java非常快捷方便,也很容易debug纠错。运行平台——Jdk(JavaDevelopmentKit):java的运行环境。工具——windowsoffice2013:用于编写项目过程计划书、项目报告等。2)系统框图 本人在此次软件课设中主要负责界面设计和绘制和课设报告的代码分析。个人认为,音乐播放器作为一个交互性较强的,着重于用户体验的一个应用程序软件,对于其界面设计的要求是比较高的,要力求简单完善,但又要功能强大简洁明了,让任何一个人都可以很快的用起来得心应手而又爱不释手,希望用户体验能有新奇和愉悦感。这次的软件课设,本人负责界面设计,所以用到了java语言的swing和JMF,初次使用,学到了很多东西,觉得JMF非常强大,对Swing也长生了浓厚的兴趣。本人负责的部分在系统框图中显示如下:音乐播放器音乐播放器监听器设计模块功能设计模块界面设计模块监听器设计模块功能设计模块界面设计模块界面背景图片歌词显示界面播放列表界面播放控制界面歌名显示和菜单界面背景图片歌词显示界面播放列表界面播放控制界面歌名显示和菜单界面整体框架部分界面整体框架部分基本模块划分1、界面整体框架划分整个框架是用的javaswing的Frame:publicclassMusicPlayerextendsJFrame{}由于panel的双缓冲性能,故选择了在frame里套上一个panel,然后再在panel的基础上绘制组件,并实现对其划分模块:JPanelframe=newJPanel();//伪frame,实则是panel,因为panel有缓冲,更有利于在其上画组件 frame.setLayout(newBorderLayout()); this.add(frame,BorderLayout.CENTER);考虑到界面美化情况,选择了去除原JFrame的边框,自己绘制边框和关闭响应this.setUndecorated(true);//去掉frame框架加监听器使边框可以随鼠标移动(原去边框后无此功能)this.addMouseListener(newMouseAdapter(){}this.addMouseMotionListener(newMouseMotionAdapter(){}添加关闭按钮:JButtoncloseButton=newJButton();closeButton.addActionListener(newActionListener(){}//关闭操作界面最小化到托盘的实现,需要调用java的systemTray类:SystemTraysystemTray;systemTray=SystemTray.getSystemTray();//构建托盘实例界面格局划分 JSplitPanejspp1=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,true)JSplitPanejspp2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,true,ctropanel,list);歌名显示和添加菜单labelfilepath=newJLabel("播放目录:"); labelfilename=newJLabel("播放文件:"); menubar=newJMenuBar(); menufile=newJMenu("打开文件");menubar.add(menufile);播放控制界面按钮组:JButtonlastBttn=newJButton("上一曲"); JButtonnextBttn=newJButton("下一曲"); JButtonplayBttn=newJButton("播放"); JButtonwaitBttn=newJButton("暂停"); JButtonquickBttn=newJButton("快进"); JButtonslowBttn=newJButton("快退"); JButtonstopBttn=newJButton("停止");各个button会设置相应的形状颜色及背景图片,加上相应的监听器播放进度条控制:jSlider=newJSlider();音量:(最终因响应的功能未实现而放弃)slider2=newJSlider(JSlider.HORIZONTAL,0,100,50); JLabellabel=newJLabel(""),//音量标签 label1=newJLabel("-"), label2=newJLabel("+");播放列表界面list=newList();JSplitPanejspp2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,true,ctropanel,list);歌词显示界面全部歌词显示界面:textArea=newJTextArea(); textArea.setFont(newFont("宋体",Font.ITALIC,15));滚动歌词显示界面:lyricsJTextField=newJTextField();lyricsJTextField.setFont(newFont("serif",Font.BOLD,20));6、界面背景图片背景图片重绘:publicvoidpaint(Graphicsg){ g.drawImage(image,0,0,this.getSize().width,this.getSize().height,this); super.paint(g);}4)模块间的相互关系监听器模块实现对鼠标的监听,当鼠标点击界面上设置的不同功能按键时,由监听器进入不同的功能模块,实现具体的功能。而鼠标点击的界面按键是由界面设计模块完成,同时功能模块中的歌词模块和播放列表管理模块的可视性也是由界面设计模块完成的。总体而言,各个模块互相依赖,彼此支持,缺一不可。5)开发计划6-7周确定项目功能,分配任务8-11周个人根据个人任务学习,查阅资料12周设定基本框架和方案13周考试周不作安排14周对最初的模板进行讨论完善,完成期中报告15-16周各自开发16-17周集中开发18周各个模块调试、测试,就现实的完成程度讨论优化及方案详细设计说明代码程序分析主界面轮廓设计及初始化privatestaticfinallongserialVersionUID=1L; privatelongtime=0; privateintN=0; privateintmemorytime=0; privatelongjumpSecond=5000000; privateStringlrc; privatelonglrctime; privatelongsongtime; privateintfileIndex=0; booleanisStop=true;//控制播放线程 booleanhasStop=true;//播放线程状态 booleanisPause=false; booleanhasPause=false; Stringitem1; Stringitem2; Stringfilepath;//播放文件目录 Stringfilename;//播放文件名称 AudioInputStreamaudioInputStream;//音频文件流 AudioFormataudioFormat;//音频文件格式 privateClipclip;//接口:源数据行,可以写入音频数据 Listlist;//文件列表 JTextAreatextArea; JMenuBarmenubar; JMenumenufile; JMenuItemmenuopensong; JPanelpanelmain; Containercontainer; JPanelpaneright; MenuItemmenu_add;MenuItemmenu_del; JTextFieldtextField; JTextFieldlyricsJTextField; Containercontainer2; PopupMenupopupMenu; JLabellabelfilepath;//播放目录显示标签 JLabellabelfilename;//播放文件显示标签 staticinttesttimethread=0; TimeThreadtimeThread; privateTimertimer; privateJLabelstartPoint; privateJLabelendPoint; JSliderjSlider; JSliderslider2; intxOld=0;intyOld=0;SystemTraysystemTray;2)界面外框和关闭最小化等的实现this.setLayout(newBorderLayout()); this.setTitle("音乐播放器"); this.setSize(800,600); this.setUndecorated(true);//去掉frame框架 this.setVisible(true);//最下面也有一行次代码,最好是保留那一行的 ImageIconicon=newImageIcon("Image\\player.jpg");this.setIconImage(icon.getImage());//设置应用程序的图标显示//添加监听器使窗体可以移动this.addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEvente){ xOld=e.getX();//得到鼠标的位置yOld=e.getY(); } });this.addMouseMotionListener(newMouseMotionAdapter(){publicvoidmouseDragged(MouseEvente){intxOnScreen=e.getXOnScreen();intyOnScreen=e.getYOnScreen();intxx=xOnScreen-xOld; intyy=yOnScreen-yOld; MusicPlayer.this.setLocation(xx,yy); }});//去掉了框体,所以要自己加一个关闭按钮,此关闭按钮实则是实现最小化到托盘JButtoncloseButton=newJButton();closeButton.setIcon(newImageIcon("Image\\close.jpg"));//设置托盘图标closeButton.setPreferredSize(newjava.awt.Dimension(30,27));closeButton.setContentAreaFilled(false); closeButton.setBorder(null); closeButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ dispose();//如果点击按钮则关闭窗体但不关闭应用程序 } });//托盘的右键菜单的添加和实现 PopupMenupop=newPopupMenu();//构造一个右键弹出式菜单 MenuItemshow=newMenuItem("打开程序(s)"); MenuItemexit=newMenuItem("退出程序(x)"); pop.add(show); pop.add(exit); ImageIconimage=newImageIcon("Image\\player.jpg");//设置托盘图标 TrayIcontrayIcon=newTrayIcon(image.getImage(),"MusicPlayer!",pop);//设置托盘的图标,延时显示内容,添加右键菜单 trayIcon.setImageAutoSize(true);//显示图标 trayIcon.isImageAutoSize(); systemTray=SystemTray.getSystemTray();//构建托盘实例 try{ systemTray.add(trayIcon); }catch(AWTExceptionex){ System.out.println("系统托盘不可用"); } trayIcon.addMouseListener(newMouseAdapter(){ publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()==2)//双击托盘窗口再现 setVisible(true); //systemTray.remove(trayIcon);//从系统的托盘实例中移除托盘图标 } }); show.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ //systemTray.remove(trayIcon);//从系统的托盘实例中移除托盘图标 setVisible(true);//显示窗口 } }); exit.addActionListener(newActionListener()//点击“退出演示”菜单后退出程序 { publicvoidactionPerformed(ActionEvente){ FileWriterfw1=null;//退出时保存当前播放信息 try{ fw1=newFileWriter("D:\\MusicPlayer_log.txt"); }catch(IOExceptione1){ e1.printStackTrace(); }//setroute BufferedWriterbw1=newBufferedWriter(fw1); try{ bw1.write("list_number="); Stringn=String.valueOf(N); bw1.write(n); bw1.newLine(); bw1.write("filepath="); bw1.write(filepath); bw1.newLine(); bw1.write("song="); bw1.write(list.getSelectedItem()); bw1.newLine(); bw1.write("time="); Stringplaytime=String.valueOf(toMillisecond(clip.getMicrosecondPosition())); bw1.write(playtime); bw1.flush(); fw1.flush(); }catch(IOExceptione2){ e2.printStackTrace(); } FileWriterfw2=null; try{ fw2=newFileWriter("D:\\list_log.txt"); }catch(IOExceptione3){ e3.printStackTrace(); }//setroute BufferedWriterbw2=newBufferedWriter(fw2); try{ inti=0; while(i<N){ list.select(i); bw2.write(list.getSelectedItem()); bw2.newLine(); i++; } bw2.flush(); fw2.flush(); }catch(IOExceptione4){ e4.printStackTrace(); } System.exit(0);//退出程序 } });3)菜单添加歌曲设计 menubar=newJMenuBar(); menufile=newJMenu(); menufile.setIcon(newImageIcon("Image\\addfile.png")); menuopensong=newJMenuItem("打开歌曲"); menufile.add(menuopensong); menubar.add(menufile); menuopensong.setBackground(newColor(240,255,255)); menubar.setBackground(newColor(240,255,255)); JPanelframe=newJPanel();//伪frame,实则是panel,因为panel有缓冲,更有利于在其上画组件 Borderborder=BorderFactory.createLineBorder(Color.black,1); frame.setBorder(border); frame.setLayout(newBorderLayout()); this.add(menubar,BorderLayout.SOUTH); this.add(frame,BorderLayout.CENTER); menubar.setBorder(border);4)播放列表list的界面list=newList(); popupMenu=newPopupMenu();//右键弹出的菜单设计添加 menu_add=newMenuItem("向列表中添加"); menu_del=newMenuItem("从列表中删除"); popupMenu.add(menu_add); popupMenu.add(menu_del); this.add(popupMenu);5)播放的控制部分播放按钮、进度条等的控制面板设计: panelmain=newJPanel(); JPanelctropanel=newJPanel(); //按钮的具体绘制情况 JButtonlastBttn=newJButton("上一曲"); lastBttn.addActionListener(handler); JButtonnextBttn=newJButton("下一曲"); nextBttn.addActionListener(handler); JButtonplayBttn=newJButton("播放"); JButtonwaitBttn=newJButton("暂停"); JButtonquickBttn=newJButton("快进"); quickBttn.addActionListener(handler); JButtonslowBttn=newJButton("快退"); slowBttn.addActionListener(handler); JButtonstopBttn=newJButton("停止"); lastBttn.setPreferredSize(newjava.awt.Dimension(60,30)); lastBttn.setContentAreaFilled(false);//只须加上此句 lastBttn.setBorder(null); lastBttn.setIcon(newImageIcon("Image\\last.png")); nextBttn.setPreferredSize(newjava.awt.Dimension(60,30)); nextBttn.setContentAreaFilled(false); nextBttn.setBorder(null); nextBttn.setIcon(newImageIcon("Image\\next.png")); playBttn.setPreferredSize(newjava.awt.Dimension(60,40)); playBttn.setContentAreaFilled(false); playBttn.setBorder(null); playBttn.setIcon(newImageIcon("Image\\play.png")); waitBttn.setPreferredSize(newjava.awt.Dimension(60,40)); waitBttn.setContentAreaFilled(false); waitBttn.setBorder(null); waitBttn.setIcon(newImageIcon("Image\\stop.png"));// stopBttn.setPreferredSize(newjava.awt.Dimension(60,40));// stopBttn.setContentAreaFilled(false);// stopBttn.setBorder(null);// stopBttn.setIcon(newImageIcon("Image\\restart.png")); stopBttn.setContentAreaFilled(false); quickBttn.setContentAreaFilled(false); slowBttn.setContentAreaFilled(false); jSlider=newJSlider(); jSlider.setValue(0); jSlider.addMouseListener(clickHandler); jSlider.addMouseMotionListener(moveHandler); timer=newTimer(100,handler); slider2=newJSlider(JSlider.HORIZONTAL,0,100,50); jSlider.setPreferredSize(newDimension(350,60)); JLabellabel=newJLabel(""),//音量标签 label1=newJLabel("-"), label2=newJLabel("+"); label.setOpaque(false); label.setIcon(newImageIcon("Image\\音量.png")); JComboBox<String>c=newJComboBox<String>();// c.setBackground(newColor(240,255,255)); String[]modem={"单曲播放","单曲循环","顺序播放","随机播放","列表循环"}; intcount=0; for(inti=0;i<5;i++) { c.addItem(modem[count++]); }startPoint=newJLabel("00:00"); endPoint=newJLabel("--:--"); startPoint.setSize(5,5); endPoint.setSize(5,5); startPoint.setOpaque(false); endPoint.setOpaque(false); JPanelctropanel1=newJPanel(); ctropanel1.setLayout(newBorderLayout()); ctropanel1.add(startPoint,BorderLayout.WEST); ctropanel1.add(endPoint,BorderLayout.EAST); ctropanel1.setOpaque(false); JPanelctropanel2=newJPanel(); ctropanel2.setOpaque(false); ctropanel2.setLayout(newBorderLayout()); ctropanel2.add(ctropanel1,BorderLayout.CENTER); ctropanel2.add(jSlider,BorderLayout.NORTH); ctropanel.setLayout(newBorderLayout()); ctropanel.add(ctropanel2,BorderLayout.NORTH); //按钮控制组 container=newContainer(); container.setLayout(newGridLayout(2,1)); JPanelbttnpanel1=newJPanel();//b1主要含进度控制按钮 bttnpanel1.add(c); bttnpanel1.add(slowBttn); bttnpanel1.add(quickBttn); bttnpanel1.add(stopBttn); JPanelbttnpanel2=newJPanel();//b2主要含播放控制按钮组 bttnpanel2.add(lastBttn); bttnpanel2.add(playBttn); bttnpanel2.add(waitBttn); bttnpanel2.add(nextBttn); //音量控制组 JPanelvoicepanel=newJPanel(); voicepanel.add(label); voicepanel.add(label1); voicepanel.add(slider2); voicepanel.add(label2); //设置透明,是图片可以显示出来 jSlider.setOpaque(false); slider2.setOpaque(false); voicepanel.setOpaque(false); bttnpanel1.setOpaque(false); bttnpanel2.setOpaque(false); ctropanel.setOpaque(false); //整体布局 container.add(bttnpanel1,BorderLayout.CENTER); container.add(bttnpanel2,BorderLayout.SOUTH); ctropanel.add(container,BorderLayout.CENTER);6)歌名、歌词、目录显示的部分歌词界面设计(含有全部显示和滚动两部分): //在分割窗上使用paint重绘的方法绘制图片,添加背景图片 JSplitPanejspp1=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,true){ ImageIconimageIcon=newImageIcon("Image\\主界面.jpg"); Imageimage=imageIcon.getImage(); { setOpaque(false); } publicvoidpaint(Graphicsg){ g.drawImage(image,0,0,this.getSize().width,this.getSize().height,this); super.paint(g);} }; frame.add(panelmain,BorderLayout.NORTH); frame.add(jspp1,BorderLayout.CENTER); labelfilepath=newJLabel("播放目录:"); labelfilename=newJLabel("播放文件:"); labelfilepath.setPreferredSize(newjava.awt.Dimension(340,20)); labelfilename.setPreferredSize(newjava.awt.Dimension(410,20)); labelfilepath.setOpaque(false); labelfilename.setOpaque(false); closeButton.setOpaque(false); panelmain.add(labelfilepath); panelmain.add(labelfilename); panelmain.add(closeButton); panelmain.setBackground(newColor(240,255,255)); // 全部歌词部分的显示 textArea=newJTextArea(); textArea.enableInputMethods(false); textArea.setOpaque(false); textArea.setFont(newFont("宋体",Font.ITALIC,15)); JScrollPanejsc2=newJScrollPane(textArea); jsc2.setOpaque(false); jsc2.getViewport().setOpaque(false); jsc2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); paneright=newJPanel(); paneright.setOpaque(false);paneright.setBorder(null);//滚动歌词部分的显示方式 lyricsJTextField=newJTextField(); lyricsJTextField.setOpaque(false); lyricsJTextField.setForeground(newColor(0,127,255)); lyricsJTextField.setFont(newFont("serif",Font.BOLD,20)); paneright.setLayout(newBorderLayout()); paneright.add(textArea,BorderLayout.CENTER); paneright.add(lyricsJTextField,BorderLayout.SOUTH); JSplitPanejspp2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,true,ctropanel,list); jspp2.setOneTouchExpandable(true); jspp2.setDividerLocation(210); jspp2.setDividerSize(2);//设置分隔线宽度的大小,以pixel为计算单位。 jspp2.setBorder(null);// jspp2.setResizeWeight(0.1);jspp1.add(jspp2);jspp1.add(paneright);jspp1.setOpaque(false);jspp1.setContinuousLayout(true);//逐渐可以睡分割线移动而变化jspp1.setOneTouchExpandable(true);jspp1.setDividerSize(1);jspp1.setDividerLocation(340);jspp1.setOpaque(false);jspp2.setOpaque(false);四、测试过程说明1)测试用例说明整体界面菜单添加歌曲右键添加或删除歌曲当前播放歌曲名和播放目录显示界面最小化到托盘及其右键菜单设计2)测试结果与测评已完成的基本功能1.图形界面可视;2.基本播放功能:播放、暂停、快进、快退均已实现;3.各种播放模式:单曲播放、单曲循环、顺序播放、随机播放均已实现;4.播放列表管理:添加歌曲,删除歌曲均已实现;5.播放信息显示:歌曲名,播放时间均已实现;6.支持进度条,拖动进度条可实现歌曲的前进,后退。已完成的拓展功能1.歌词显示和歌词的同步播放均已实现;2.支持自动记忆播放功能(程序关闭时能记忆当前播放的歌曲,重启后继续播放);3.对界面外观进行了优化,界面成果优美,简洁;4.支持用户依据个人喜好改变界面不同分区大小的功能;5.支持界面的最小化和还原;6.支持循环播放功能;7.支持本地查看播放列表添加曲目。待改善功能1.有时候选择不同播放模式时会出现死机情况;2.有极少的次数,歌曲歌词不能显示,还不够稳定。测试经历与想法在整个软件应用程序设计过程之中和设计完成之后,我们都进行了较长时间的测试调节。由于对java掌握还不算透彻,对javamediaframe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 少数民族文化课件
- 旁站监理管理细则
- 止水钢板安装专项方案
- 超声科工作制度及检查操作规范
- 天津市和平区汇文中学2027届中考物理押题卷含解析
- 2027届广东省肇庆市端州区中考物理全真模拟试题含解析
- 2027届海南省海口市秀英区市级名校中考联考物理试题含解析
- 2026年江苏建筑职业技术学院高职单招笔试化学历年参考题库含答案解析
- 2026年汉中职业技术学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年日照职业技术学院高职单招笔试物理历年参考题库含答案解析
- 医药购销不正之风治理课件
- 塔吊司索工考试题库及答案2026
- 广东省广州市增城区2025-2026学年七年级上学期期中生物学试题(含答案)
- (2026版)传染病防治自查报告
- 2026年四川省广元市辅警人员招聘考试真题解析含答案
- 2025年兵团新职工考试题及答案
- 2026年中国铁路广州局铁路局校园招聘真题
- 慢性肾脏病相关瘙痒管理中国专家共识解读课件
- 医院等级评审护理组工作汇报
- 华为集团干部管理办法
- 路基施工安全教育
评论
0/150
提交评论