![音樂播放器課設(shè)報告_第1頁](http://file4.renrendoc.com/view/a885c03e6f4c97d431ce7c644fa0d4ac/a885c03e6f4c97d431ce7c644fa0d4ac1.gif)
![音樂播放器課設(shè)報告_第2頁](http://file4.renrendoc.com/view/a885c03e6f4c97d431ce7c644fa0d4ac/a885c03e6f4c97d431ce7c644fa0d4ac2.gif)
![音樂播放器課設(shè)報告_第3頁](http://file4.renrendoc.com/view/a885c03e6f4c97d431ce7c644fa0d4ac/a885c03e6f4c97d431ce7c644fa0d4ac3.gif)
![音樂播放器課設(shè)報告_第4頁](http://file4.renrendoc.com/view/a885c03e6f4c97d431ce7c644fa0d4ac/a885c03e6f4c97d431ce7c644fa0d4ac4.gif)
![音樂播放器課設(shè)報告_第5頁](http://file4.renrendoc.com/view/a885c03e6f4c97d431ce7c644fa0d4ac/a885c03e6f4c97d431ce7c644fa0d4ac5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
音樂播放器音樂播放器1問題定義和可行性研究 2(1)問題定義 3(2)可行性研究 32需求分析 31功能需求 31.1功能描述 32性能需求 43將來可能提出的要求 44項目描述 54.1編寫目的 54.2項目背景 54.3開發(fā)工具及環(huán)境簡介 63概要設(shè)計和詳細設(shè)計 63.1概要設(shè)計 63.2詳細設(shè)計 73.3音樂編碼設(shè)計 85主界面界面介紹 96系統(tǒng)的實現(xiàn) 11一、主要的對話框 11二、全局變量 12三、初始化函數(shù) 12三、播放、暫停功能 15四、添加文件到播放列表 18五、下一首\上一首 20六、停止播放 21七、播放模式 21八、顯示時間和播放進度 22九、刪除歌曲 235.2單元測試 256.總結(jié) 261問題定義和可行性研究本章分為兩部分,問題定義和可行性研究。問題定義階段主要研究我們所學的知識能做什么項目,而可行性研究給出了制作音樂播放器的可行性。(1)問題定義通過開發(fā)音樂播放器,來練習本學期軟件工程課程所學知識。熟悉軟件開發(fā)的各個階段,將書本上的知識與實踐性的開發(fā)活動聯(lián)系起來。實現(xiàn)音樂播放器基本的功能。(2)可行性研究大一的時候已經(jīng)學過了基本的C++編程的知識,在這個基礎(chǔ)上,有三個星期的時間來學習MFC編程,學習文件的讀寫操作,以及系統(tǒng)API函數(shù)調(diào)用等知識。邊學邊用,具備開發(fā)軟件的能力。2需求分析本章給出了音樂播放器應該具備的功能,并給出了功能示意圖,最后提出了實現(xiàn)該播放器應該具備的條件。1功能需求1.1功能描述本播放器主要有如下功能:1.對文件進行操作。2.對按鈕的處理1.對文件的操作通過文件的讀寫知識,實現(xiàn)瀏覽目錄以選擇文件,添加歌曲到播放列表,刪除播放列表中的歌曲,對已經(jīng)選中的文件進行播放、暫停,以及通過雙擊播放列表中的歌曲來播放文件。2.對控件的處理對各種按鈕添加了事件響應函數(shù),可以處理基本的播放,暫停,上一首/下一首,刪除,選擇播放模式等操作。功能如下圖:2性能需求本項目是一個普通的音樂播放器,運行環(huán)境為VS2010,項目運行速率正常,可以滿足用戶需求。時間性能要求:越低越好。便捷性:運用了可視化編程,更有助于人機交互,更人性化。程序的運行,符合正常的操作習慣,程序功能明了簡潔!3將來可能提出的要求(1)歌曲列表的保存(2)菜單操作(3)更換背景圖片(4)提供網(wǎng)絡(luò)下載功能:支持通過歌名和歌手名進行歌曲檢索和下載功能;
(5)支持歌詞顯示和同步播放;(6)支持歌曲在線播放;
(7)支持更友好的歌曲檢索和下載功能;(8)提供更良好的操作界面。
4項目描述
4.1編寫目的
設(shè)計一個基于windows平臺的音樂點播系統(tǒng),實現(xiàn)音樂庫的管理以及播放功能。
音樂播放器能夠滿足音樂的播放功能,實現(xiàn)一款播放器的基本功能。4.2項目背景
本項目作為《軟件課程設(shè)計》課程的訓練項目提出,在基本的設(shè)計實現(xiàn)基礎(chǔ)上,將不斷對已有的設(shè)計進行進一步的修改和完善,最終完成整個軟件開發(fā)過程。本次項目的旨在通過不同軟件工程設(shè)計方法與技術(shù)的實踐,了解和掌握各種技術(shù)、工具平臺的特點與局限性,體會協(xié)同開發(fā)方式。
第1階段:主要目的是通過對項目需求的分析和理解,通過面向?qū)ο蟮脑O(shè)計方式完成項目前期的準備工作。
第2階段:我們會根據(jù)既定需求,完善設(shè)計模式。
第3階段:在設(shè)計文檔和需求分析的文檔下,完成音樂點播系統(tǒng)原型的開發(fā),并完成整個開發(fā)流程的測試報告
第4階段:通過音樂點播系統(tǒng)軟件的設(shè)計開發(fā),了解軟件文檔的編寫原則,訓練掌握軟件各類文檔寫作的技巧,同時在文檔的編寫過程中提高和增加C++開發(fā)的能力和經(jīng)驗。
4.3開發(fā)工具及環(huán)境簡介
操作系統(tǒng):windows
xp或以上版本
C++6.0:VisualC++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。Microsoft
Office
Word
2003:經(jīng)典辦公軟件,本項目中用于編寫文檔。3概要設(shè)計和詳細設(shè)計3.1概要設(shè)計通過這個階段的工作將劃分出組成系統(tǒng)的物理元素——程序,文件和文檔等,但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內(nèi)容將在以后仔細設(shè)計。總體設(shè)計的另一項重要任務是設(shè)計軟件的結(jié)構(gòu),也就是要確定該軟件由哪些模塊組成的,以及這些模塊之間的關(guān)系。運用傳統(tǒng)軟件工程方法學的知識將音樂播放器軟件的開發(fā)分成:一、MFC的使用以及實現(xiàn)方法二、文件的讀寫操作三、系統(tǒng)API函數(shù)的調(diào)用3.2詳細設(shè)計根據(jù)概要設(shè)計所劃分的四個模塊,該階段應詳細地完成這四個模塊的任務:一、MFC的實現(xiàn)通過MFC窗口以及函數(shù)的使用,創(chuàng)建出播放器的主界面,主界面應包括文件的打開、添加、播放以及線程按鍵。另外,還要各種函數(shù)應該實現(xiàn)相應組件上的各種事件。二、文件讀寫操作的實現(xiàn)通過以前的學過的文件讀寫操作知識,實現(xiàn)對音樂文件的讀以及寫操作。三、系統(tǒng)API函數(shù)的調(diào)用通過調(diào)用系統(tǒng)媒體控制接口函數(shù)實現(xiàn)對mp3,wav,wma等格式的音樂的播放的功能。3.3音樂編碼設(shè)計
一、編碼原理
1.
音樂的十二平均率規(guī)定
(1)
每兩個八度音之間的頻率相差一倍。
(2)
兩個八度音之間又可以分為十二個伴音,每兩個伴音的頻率比為1.059463。
(3)
低音6(音名A)的頻率是440Hz,音名B到C之間、E到F之間為伴音,其余為全音。
2.
樂譜編碼
選取65536Hz為基準頻率,以此頻率分頻得到簡譜高音各音調(diào)的分頻比。計算公式為N=65536/f。
二、編碼參照
為了讓ROM能夠識別各音頻的分頻系數(shù),需將個音頻分頻系數(shù)按照一定格式轉(zhuǎn)換成十六進制格式。我們采用8位的ROM,D6D5位表示高中低音,如表1-2所示,11為高音,10為中音,01為低音;用D4D3D2D1D0位表示分頻系數(shù),將表1-1的分頻系數(shù)轉(zhuǎn)換成二進制格式表示;ROM的高位全部補0。然后轉(zhuǎn)換成十六進制如表1-2所示。之所以采用高音分頻比的二分之一為基準分頻系數(shù),是因為ROM的位寬限制,而每兩個八度音頻率相差一倍,所以我們后面用譯碼器譯成各音頻的分頻系數(shù)輸出給分頻器,這樣由分頻器輸出到揚聲器,揚聲器就可發(fā)聲了。
5主界面界面介紹1、界面圖:2添加歌曲按鈕3、刪除歌曲按鈕4、音量的變大變小按鈕5、歌曲時間和進度的顯示圖像6、下一首歌按鈕7、上一首歌按鈕8、停止播放按鈕9、播放按鈕10、單曲播放/隨機播放/順序播放按鈕11、空白部分為歌曲的菜單列表6系統(tǒng)的實現(xiàn)一、主要的對話框classCMCIPlayerDlg:publicCDialogEx{//構(gòu)造public: CMCIPlayerDlg(CWnd*pParent=NULL); //標準構(gòu)造函數(shù)//對話框數(shù)據(jù) enum{IDD=IDD_MCIPLAYER_DIALOG}; protected: virtualvoidDoDataExchange(CDataExchange*pDX); //
DDX/DDV支持//實現(xiàn)protected: HICONm_hIcon; //生成的消息映射函數(shù) virtualBOOLOnInitDialog(); afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam); afx_msgvoidOnPaint(); afx_msgHCURSOROnQueryDragIcon(); DECLARE_MESSAGE_MAP()public: //列表 CListBoxm_list; afx_msgvoidOnBnClickedOnstart(); afx_msgvoidOnBnClickedOnloadmusic(); voidload(musica); intisplay; intindex; CSliderCtrlvolume; afx_msgvoidOnNMCustomdrawVolun(NMHDR*pNMHDR,LRESULT
*pResult); afx_msgvoidOnBnClickedOnnext(); afx_msgvoidOnBnClickedOnper(); afx_msgvoidOnBnClickedOnstop(); LRESULTOnMciNotify(WPARAMwParam,LPARAMlParam);//設(shè)置播放
模式 afx_msgvoidOnBnClickedOrder(); afx_msgvoidOnLbnDblClk(); voidOnTimer(UINTnIDEvent); //進度條 CSliderCtrlm_progress; afx_msgDWORDgetinfo(DWORDitem); afx_msgvoidOnBnClickedDeletemusic();};二、全局變量structmusic{ stringname; stringmPath;};intm_max;//進度條的最大位置變量inthour,minute,second;//時間變量:小時、分鐘、秒鐘DWORDcdlen;//某個音頻文件的總時間長度DWORDm_count;//設(shè)備型號DWORDcdfrom,cdto;//歌曲的起點和終點DWORDDeviceID;list<music>mus;//全局歌曲鏈表vector<CString>allpath;//保存已有的歌三、初始化函數(shù)BOOLCMCIPlayerDlg::OnInitDialog(){ CDialogEx::OnInitDialog(); //將“關(guān)于...”菜單項添加到系統(tǒng)菜單中。 //volume.SetBkColor(RGB(37,38,37)); HBITMAPhBitmap;hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4)); ((CButton*)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1)); ((CButton*)GetDlgItem(IDC_ONPER))->SetBitmap(hBitmap); hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2)); ((CButton*)GetDlgItem(IDC_ONNEXT))->SetBitmap(hBitmap); hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP5)); ((CButton*)GetDlgItem(IDC_ONSTOP))->SetBitmap(hBitmap); hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP7)); ((CButton*)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap);SetBackgroundImage(IDB_BITMAP6,BACKGR_TILE,NULL); isplay=0;//未播放狀態(tài) index=-1; m_list.SetCurSel(0);//設(shè)置初始選擇位置 volume.SetRange(0,1000);//滑塊的移動范圍0~1000 volume.SetPos(500);//滑塊指針的初始位置設(shè)為500代表初始音
量為50 ifstreamrin;//導入原先數(shù)據(jù) rin.open("Mylist.txt"); //intrere; stringstr[2];if(rin>>setw(50)>>str[0]>>setw(150)>>str[1])while(!rin.eof()) { musicmu; =str[0]; mu.mPath=str[1]; CStringname; for(inti=0;i<.length();i++) { if([i]=='/') [i]=''; } name=.c_str(); CStringmPath; for(inti=0;i<mu.mPath.length();i++) { if(mu.mPath[i]=='/') mu.mPath[i]=''; } mPath=mu.mPath.c_str(); intj=m_list.GetCount();//把名字和地址插
入到list控件 m_list.InsertString(j,name); //CString*p=&mPath; allpath.push_back(mPath); rin>>str[0]>>str[1]; }rin.close(); //IDM_ABOUTBOX必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { BOOLbNameValid; CStringstrAboutMenu; bNameValid=strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,
IDM_ABOUTBOX,strAboutMenu); } } //設(shè)置此對話框的圖標。當應用程序主窗口不是對話框時,框架將
自動 //執(zhí)行此操作 SetIcon(m_hIcon,TRUE); //設(shè)置大圖標 SetIcon(m_hIcon,FALSE); //設(shè)置小圖標 //TODO:在此添加額外的初始化代碼 returnTRUE;//除非將焦點設(shè)置到控件,否則返回TRUE}三、播放、暫停功能voidCMCIPlayerDlg::OnBnClickedOnstart()//開始播放{ //TODO:在此添加控件通知處理程序代碼 if(isplay==0) { //TODO:在此添加控件通知處理程序代碼 if(m_list.GetCurSel()==-1)//判斷有沒有歌曲被選中,若
沒有,則從第一首開始播放-1代表沒有被選中 m_list.SetCurSel(0); if(m_list.GetCurSel()==index) { SetTimer(0,1000,NULL); mciSendCommand(DeviceID,MCI_RESUME,0,0); HBITMAPhBitmap;hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); ((CButton*)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,"暫停"); isplay=1; } else { index=m_list.GetCurSel(); CStringdata; //m_list.GetDlgItemTextA(index,data); //CStringc=dat MCI_OPEN_PARMSmciopenparms;//打開 MCI_PLAY_PARMSmciplayparms;//播放 second=0;minute=0;hour=0; mciopenparms.lpstrElementName=allpath[index];//將音樂文件路
徑傳給設(shè)備 DWORDdwReturn; if(dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|
MCI_WAIT,(DWORD)(LPVOID)&mciopenparms)) { //如果打開文件失敗,則將出錯信息儲存在buffer,并顯示
出錯警告 charbuffer[256]; mciGetErrorString(dwReturn,buffer,256); MessageBox(buffer,"出錯警告!",MB_ICONHAND|
MB_ICONERROR|MB_ICONSTOP); } DeviceID=mciopenparms.wDeviceID; mciopenparms.lpstrDeviceType=NULL;//文件類型 m_count=mciopenparms.wDeviceID;//多媒體設(shè)備類型編號 mciplayparms.dwFrom=0;//每次播放都是從0開始播放 HWNDhwnd=GetSafeHwnd(); mciplayparms.dwCallback=(DWORD)hwnd; cdlen=getinfo(MCI_STATUS_LENGTH); CStringstime; CClientDCdc(this); dc.SetBkColor(RGB(255,255,255));//設(shè)置放置計數(shù)器區(qū)域的外觀 dc.SetTextColor(RGB(95,180,66)); stime.Format("%02d:%02d:%02d",cdlen/3600000,(cdlen
%3600000)/60000,((cdlen%3600000)%60000)/1000);//顯示時間進度 dc.TextOut(328,13,stime); mciSendCommand(DeviceID,MCI_PLAY,/*MCI_FROM|*/MCI_NOTIFY,
(DWORD)(LPVOID)&mciplayparms); SetTimer(0,1000,NULL);//設(shè)置系統(tǒng)計數(shù)器,顯示歌曲播放的進度 HBITMAPhBitmap;hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3)); ((CButton*)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,"暫停"); isplay=1; } } else { KillTimer(0); mciSendCommand(DeviceID,MCI_PAUSE,0,0); HBITMAPhBitmap;hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4)); ((CButton*)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); SetDlgItemText(IDC_ONSTART,"播放"); isplay=0; }}四、添加文件到播放列表voidCMCIPlayerDlg::OnBnClickedOnloadmusic()//導入歌曲{ //TODO:在此添加控件通知處理程序代碼 CFileDialogdlg(TRUE,_T("*.*"),NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,_T("mp3文件(*.mp3)|*.mp3|""wma文件(*.wma)|*.wma|" "wav文件(*.wav)|*.wav|" "所有文件(*.*)|*.*|"),NULL);//選項圖片的約定dlg.m_ofn.lpstrTitle=_T("打開音樂文件");//打開文件對話框
的標題名if(dlg.DoModal()!=IDOK)//判斷是否獲得圖
片return;CStringmPath=dlg.GetPathName();//獲取音樂路徑 CStringmmpath=mPath; allpath.push_back(mPath); inti=mPath.ReverseFind('\\');//從磁盤地址中獲取歌曲名字 CStringname;name=mPath.Right(mPath.GetLength()-1-mPath.ReverseFind('\\')); intj=m_list.GetCount();//把名字和地址插入到list控件 m_list.InsertString(j,name); //m_shelllist.SetItemText(j,0,name); musicmu; =name.GetBuffer(); mu.mPath=mPath.GetBuffer(); load(mu);}voidCMCIPlayerDlg::load(musica){ list<music>mus; ifstreamrin; rin.open("Mylist.txt"); //intrere; stringstr[2];if(rin>>str[0]>>str[1])while(!rin.eof()) { musicmu; =str[0]; mu.mPath=str[1]; if(!=) mus.push_back(mu); else { MessageBox("已經(jīng)有該歌曲"); return; } rin>>str[0]>>str[1]; }rin.close(); for(inti=0;i<.length();i++)//把名
字里面的空格變?yōu)?_' { if([i]=='') [i]='/'; } for(inti=0;i<a.mPath.length();i++)//把地
址里面的空格變?yōu)?*' { if(a.mPath[i]=='') a.mPath[i]='/'; } mus.push_back(a); ofstreamout("Mylist.txt"); list<music>::iteratorit=mus.begin(); while(it!=mus.end()) { out<<left<<setw(50)<<(*it).name<<""<<setw(150)<<
(*it).mPath <<endl;it++; } out.close();}五、下一首\上一首voidCMCIPlayerDlg::OnBnClickedOnnext()//下一首{ //TODO:在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0; mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空
上一次播放的設(shè)備 isplay=0; index=m_list.GetCurSel(); if(index+1==m_list.GetCount()) { m_list.SetCurSel(0); } else { m_list.SetCurSel(index+1); } OnBnClickedOnstart(); isplay=1;}voidCMCIPlayerDlg::OnBnClickedOnper()//上一首{ //TODO:在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0; mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空
上一次播放的設(shè)備 isplay=0; index=m_list.GetCurSel(); if(index==0) { m_list.SetCurSel(m_list.GetCount()-1); } else { m_list.SetCurSel(index-1); } OnBnClickedOnstart(); isplay=1;}六、停止播放voidCMCIPlayerDlg::OnBnClickedOnstop()//停止{ //TODO:在此添加控件通知處理程序代碼 KillTimer(0); second=0;minute=0;hour=0; mciSendCommand(DeviceID,MCI_CLOSE,0,0);//在加載文件前先清空
上一次播放的設(shè)備 isplay=0; SetDlgItemText(IDC_ONSTART,"播放"); HBITMAPhBitmap;hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4)); ((CButton*)GetDlgItem(IDC_ONSTART))->SetBitmap(hBitmap); index=-1; UpdateData(false);}七、播放模式voidCMCIPlayerDlg::OnBnClickedOrder()//設(shè)置播放模式{ //TODO:在此添加控件通知處理程序代碼 CStringpattern; GetDlgItemText(IDC_ORDER,pattern); if(pattern=="順序") { SetDlgItemText(IDC_ORDER,"隨機"); HBITMAPhBitmap; hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP8)); ((CButton*)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); } if(pattern=="隨機") { SetDlgItemText(IDC_ORDER,"單曲"); HBITMAPhBitmap; hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP9)); ((CButton*)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); } if(pattern=="單曲") { SetDlgItemText(IDC_ORDER,"順序"); HBITMAPhBitmap; hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP7)); ((CButton*)GetDlgItem(IDC_ORDER))->SetBitmap(hBitmap); }}八、顯示時間和播放進度voidCMCIPlayerDlg::OnTimer(UINTnIDEvent){ CStringstime; second++; CClientDCdc(this); dc.SetBkColor(RGB(255,255,255));//設(shè)置放置計數(shù)器區(qū)域的外觀 dc.SetTextColor(RGB(95,180,66));if(second==60)//設(shè)置鐘表的顯示 {minute++;second=0; } if(minute==60) {hour++;minute=0; } if(hour==24) {hour=0; } stime.Format("%02d:%02d:%02d",hour,minute,second);//顯示時間
進度 dc.TextOut(68,13,stime); m_progress.SetRange(0,cdlen);//使進度條的范圍與歌曲時間一致 UpdateData(false); m_max=cdfrom;//保存歌曲的當前位置信息 if(m_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際貿(mào)易融資合同法律風險分析
- 做護欄合同范本
- 農(nóng)業(yè)股東合作合同范本
- 2025年度數(shù)據(jù)中心冷卻系統(tǒng)機電安裝工程承包合同
- 2025年度健身場所健身教練職業(yè)風險管理與預防合同
- 2025年玻璃包裝箱板項目投資可行性研究分析報告
- 2025年度國際貨運代理貨物采購及運輸合同
- 2025年度物聯(lián)網(wǎng)過橋資金合同范本
- 2025年度化學品安全使用指導性買賣合同
- 2025年人工智能物聯(lián)網(wǎng)投資回報分析報告
- 2024年4月27日浙江省事業(yè)單位招聘《職業(yè)能力傾向測驗》試題
- 物業(yè)管理服務應急響應方案
- 風車的原理小班課件
- 物業(yè)保潔員勞動競賽理論知識考試題庫500題(含答案)
- 國家職業(yè)技術(shù)技能標準 4-07-07-01 洗衣師 勞社廳發(fā)20081號
- 六年級數(shù)學競賽試題及答案(六套)
- 七年級下學期數(shù)學開學第一課課件
- 臨床診療指南-口腔醫(yī)學分冊
- 《中國心血管健康與疾病報告2024》要點解讀
- 浙教版八年級下冊科學第一章 電和磁整章思維導圖
- 重慶建設(shè)-花籃拉桿式懸挑腳手架工藝標準(試行)
評論
0/150
提交評論