C課程設(shè)計論文媒體播放器的設(shè)計與實現(xiàn)
《C課程設(shè)計論文媒體播放器的設(shè)計與實現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《C課程設(shè)計論文媒體播放器的設(shè)計與實現(xiàn)(53頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、各專業(yè)全套優(yōu)秀畢業(yè)論文圖紙 C#程序設(shè)計 設(shè)計說明書 媒體播放器的設(shè)計與實現(xiàn) 班 級: 微軟1班 指導(dǎo)老師: 殷玥 小組成員:孟燁、張文博、賀培炎 成 績: 課程設(shè)計任務(wù)書 2011—2012學(xué)年第一學(xué)期 專 業(yè): 微軟技術(shù)與應(yīng)用 課程設(shè)計名稱: C#課程設(shè)計 設(shè)計題目: 媒體播放器的設(shè)計與實現(xiàn)
2、 完成期限:自 2014 年 12月 01 日至 2014 年 12 月 23 日共 4 周 設(shè)計依據(jù)、要求及主要內(nèi)容(可另加附頁): 根據(jù)程序設(shè)計所學(xué)知識,設(shè)計與實現(xiàn)一個媒體播放器,該XXX設(shè)計的內(nèi)容和功能要求如下: (1) 用QT設(shè)計一個畫面簡潔的媒體播放器,Qlist用作曲目列表框; (2) 通過按鈕既可以一次性添加一首歌曲,也可以通過文件夾一次性添加多首歌曲等; (3) 在下次播放時仍保留上次播放的的曲目; (4) 可一次性刪除一首或多首歌曲; (5) Qlist有快捷菜單,該菜單包含能:播放、暫停、刪除、單曲循環(huán)、順序播放、 隨機播放、全部循環(huán)和退
3、出; 要求:系統(tǒng)功能設(shè)計基本完善,并寫出詳細(xì)的設(shè)計說明書。 (6) 能夠播放mp3和視頻; 指導(dǎo)教師(簽字): 批準(zhǔn)日期: 年 月 日 摘 要 關(guān)鍵詞:媒體播放器; 刪除; 循環(huán); 目錄 1課題描述 1 2程序設(shè)計流程圖 1 2.1 系統(tǒng)說明 1 2.2主界面的設(shè)計 1 3 功能的設(shè)計 1 3.1 播放器功能的設(shè)計 1 3.2 播放器功能的設(shè)計 1 3.3 播放器功能的設(shè)計 1 4測試 1 4.1系統(tǒng)測試 1 4.2 調(diào)試結(jié)果 1 總結(jié) 1 參考文獻(xiàn)
4、 1 附錄: 1 源代碼: 1 1課題描述 構(gòu)建一個簡單的播放器提供播放、暫停、刪除等功能,支持多種格式,窗體上有7個按鈕,一個windows平臺播放器控件和一個listBox控件 用來顯示曲目。 為界面、按鈕等控件設(shè)置屬性 用戶界面、按鈕等控件 程序開始 調(diào)式程序 添加程序代碼 運行結(jié)束 2程序設(shè)計流程圖 2.1 系統(tǒng)說明 在QT中的環(huán)境下設(shè)計出簡單的計算器的Window 窗體。 2.2主界面的設(shè)計 3 功能的設(shè)計 功能簡介: (1)添加到播放列表:在列表區(qū)域單擊右鍵
5、中的“添加到播放列表”,彈出打開本地文件的窗口,可一次添加一首或多首歌曲到播放列表中。 (2)播放:選擇歌曲,在右鍵菜單中播放歌曲,即可播放選中的歌曲;雙擊選中的歌曲也可以實現(xiàn)播放功能;直接點擊播放器中的“播放”也可播放選中的歌曲。 (3)刪除單曲:選擇要刪除的歌曲,單擊“刪除單曲”,即可從列表中刪除此歌曲。 (4)單曲循環(huán):在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,選中歌曲,右鍵,選中“單曲循環(huán)”,即可重復(fù)播放選中的歌曲。 (5)退出:單擊“退出”即可退出本系統(tǒng)。 (6)上一曲:單擊“上一曲”即可播放選中歌曲的上一曲。 (7)下一曲:單擊“下一曲”即可播放選中歌曲的下一首。 (
6、8) 全曲循環(huán):在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,選中歌曲,單擊“全部循環(huán)”,即可全部循環(huán)。 (9) 順序播放:單擊“順序播放”,即可既可按列表順序依次自動播放。 (10)刪除歌曲:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“刪除歌曲”既可刪除所選中的一首或多首歌曲; (11)隨即播放:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“隨機播放”既可自動實現(xiàn)隨機播放列表中的歌曲; (12)暫停/播放/退出:在曲目列表框中,右擊鼠標(biāo)彈出快捷菜單,單擊“暫?!?、“播放”、“退出”既可實現(xiàn); (13)播放器實現(xiàn)魔音播放 1. 操作界面顯示: 播放器的主界面如下, 單擊“
7、添加歌曲”,實現(xiàn)播放功能 雙擊歌曲,即可實現(xiàn)播放,如下, 主要方法: 3.1 添加歌曲功能的設(shè)計 private void btnAddFile_Click(object sender, EventArgs e) { int i; odlgMedia.FileName = ""; // 設(shè)置默認(rèn)文件名 if (odlgMedia.ShowDialog() == DialogResult.OK)
8、 { string path = odlgMedia.FileName; FileInfo f = new FileInfo(path); AddFile(f.FullName); string strFile = Convert.ToString(numOfMusic); for (i = 1; i <= 5 - strFile.Length; i++) {
9、 strFile += ""; } strFile = f.FullName; int n = strFile.LastIndexOf("\\") + 1; strFile = strFile.Substring(n) + "/" + strFile.Substring(0, n); lstFileList.Items.Add(strFile); if (lst
10、FileList.Items.Count >= 0) { OpenBtn(); } } } 3.2 添加目錄功能的設(shè)計 private void btnAddFiles_Click(object sender, EventArgs e) { fbdlgMedia.ShowNewFolderButton = true; fbdlgMedia.Description = "
11、請選擇媒體文件目錄:"; fbdlgMedia.ShowNewFolderButton = false; if (fbdlgMedia.ShowDialog() == DialogResult.OK) { AddFiles(fbdlgMedia.SelectedPath, lstFileList); if (lstFileList.Items.Count > 0) { Ope
12、nBtn(); } } } 3.3刪除單曲 private void btnDelete_Click(object sender, EventArgs e) { int i = lstFileList.SelectedIndex; if (lstFileList.SelectedIndex >= 0) { if ((selectOne == lstFileList.Select
13、edIndex) && (mediaPlayer.URL != "")) { MessageBox.Show("不能刪除正在播放的文件", "錯誤"); } else { DelFile(i + 1); lstFileList.Items.RemoveAt(i); if (i < lstFile
14、List.Items.Count) { lstFileList.SelectedIndex = i; } else if (lstFileList.Items.Count == 0) { CloseBtn(); } else
15、 { lstFileList.SelectedIndex = 0; } } } 3.4播放 private void btnPlay_Click(object sender, EventArgs e) { if (lstFileList.Items.Count > 0) { if (lstFileLis
16、t.SelectedIndex < 0) { selectOne = 1; lstFileList.SelectedIndex = 0; } else { selectOne = lstFileList.SelectedIndex; } Play(selectOne);
17、 tmrMedia.Enabled = true; btnStop.Enabled = true; } } 3.5 上一首 private void btnBack_Click(object sender, EventArgs e) { int j = lstFileList.SelectedIndex; lstFileList.SelectedIndex = -1; if (
18、j > -1) { if (j == 0) selectOne = 0; else { j -= 1; selectOne = j; } Play(selectOne); lstFileList.SelectedIndex = j;
19、 } } 3.6下一曲 private void btnForward_Click(object sender, EventArgs e) { int j = lstFileList.SelectedIndex; if (j < lstFileList.Items.Count) { j = j + 1; selectOne = j; if (j ==
20、lstFileList.Items.Count) { j = lstFileList.Items.Count - 1; selectOne = j; } lstFileList.SelectedIndex = -1; Play(selectOne); btnStop.Enabled = true; lstFil
21、eList.SelectedIndex = j; } } 3.7 停止 private void btnStop_Click(object sender, EventArgs e) { mediaPlayer.URL = ""; this.Text = "媒體播放器:停止!"; tmrMedia.Enabled = false; } 3.8 刪除歌曲 private void 刪除歌曲ToolStri
22、pMenuItem_Click(object sender, EventArgs e) { int i = lstFileList.SelectedIndex; if (lstFileList.SelectedIndex >= 0) { object[] selected_objs = new object[lstFileList.SelectedItems.Count]; lstFileList.SelectedItems.C
23、opyTo(selected_objs, 0); foreach (object oval in selected_objs) { string msg = lstFileList.Items[lstFileList.SelectedIndex].ToString(); string[] strs = msg.Split(/); string s = strs[1] + strs[0];
24、 if (mediaPlayer.URL == s) { this.Text = null; mediaPlayer.URL = null; lstFileList.Items.Remove(oval); this.Text = "播放停止!"; }
25、 else lstFileList.Items.Remove(oval); } } } 4測試 4.1系統(tǒng)測試 4.2 調(diào)試結(jié)果 總結(jié) 經(jīng)過一周的課程設(shè)計,使我對QT編程有了更深一層的了解。經(jīng)過編程與不斷調(diào)試,盡管依然存在很多的問題,但努力終于有了成果。設(shè)計的是簡單媒體播放器程序。整個設(shè)計的過程也是不斷學(xué)習(xí)的一個過程,在運用舊知識的同時也學(xué)到了不少新知識,給自己大腦充電的同時也填補了一些相關(guān)知識方面的空白。整個設(shè)計的過程中,不僅
26、僅只是經(jīng)歷了是失敗與成功所帶來的啟迪,還有同學(xué)之間互相幫助的友誼。通過這次課程設(shè)計,掌握住到了應(yīng)該掌握住的知識,也讓體會到了生活中應(yīng)該體會到的東西??傊?,這次實習(xí)是有收獲的。 參考文獻(xiàn) [1] 馬靖善等.C語言程序設(shè)計.清華大學(xué)出版社,2005 [2] 譚浩強.C語言程序設(shè)計(第二版).北京:高等教育出版社,2002 [3] 黃超.C語言程序設(shè)計.北京.人民郵電出版社.2003 [4] 譚浩強等.C語言程序設(shè)計.清華大學(xué)出版社,2007 [5] 方敏,張彤.C語言程序設(shè)計.西安電子科技大學(xué)出版社.2006 [6]Qt 5開發(fā)及實例 [7]Qt Creator快速入門 附
27、錄:
源代碼:
#include "dt_music.h"
#include "ui_dt_music.h"
#include
28、lude "desktoplrc.h"
#include "create_musiclist.h"
#include "timing.h"
#include "currentlrc.h"
#include "videoplayer.h" //視頻播放器
#include "videoview.h"
//部件類
#include
29、include 30、Box> //警告框
#include 31、etaData> //多媒體數(shù)據(jù)
//輔助功能
#include 32、usic::DT_Music(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::DT_Music)
{
ui->setupUi(this);
//重寫窗口框架, 設(shè)置 無邊框 和 允許最小化和還原
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);
//設(shè)置窗口出現(xiàn)位置
QDesktopWidget desktopWidget;
setGeometry((deskto 33、pWidget.width()-this->width())/2, (desktopWidget.height()-this->height())/2, 969, 639);
//初始化 界面 和 變量
init();
//為部件安裝事件過濾器
cob_addMusic ->installEventFilter(this);
tbn_createList ->installEventFilter(this);
tbn_search ->installEventFilter(this);
lab_volumnFrame 34、->installEventFilter(this);
playModle->installEventFilter(this);
//多媒體信息改變
connect(player, SIGNAL(metaDataAvailableChanged(bool)), //多媒體 可用數(shù)據(jù)信息 改變
this, SLOT(getMetaData(bool)));
connect(this, SIGNAL(gotMetaData(QStringList)), 35、 //顯示 歌曲/歌手 信息
bottomGroupbox, SLOT(showMetaData(QStringList)));
connect(player, SIGNAL(durationChanged(qint64)), //多媒體 時長信息 出現(xiàn)
this, SLOT(durationChanged()));
connect(player, SIGNAL(durationChanged(qint64)), //...... 36、...........
bottomGroupbox, SLOT(durationChanged(qint64)));
connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), //播放狀態(tài) 改變
this, SLOT(playStatusChanged(QMediaPlayer::State)));
connect(this, SIGNAL(playStateChange(int)), 37、 //...........
bottomGroupbox, SLOT(playStatusChanged(int)));
connect(player, SIGNAL(positionChanged(qint64)), //播放進(jìn)度 改變 更新歌詞
this, SLOT(updateLrc(qint64)));
connect(player, SIGNAL(positionChanged(qint64)), //....... 38、.... 更新進(jìn)度條
bottomGroupbox, SLOT(positionChanged(qint64)));
//遍歷播放列表, 為每個播放列表關(guān)聯(lián)信號槽
for (int i=0; i 39、Changed(int)));
connect(playlistVector.at(i), SIGNAL(currentIndexChanged(int)), //........設(shè)置播放列表中當(dāng)前歌曲被選中
musicList, SLOT(playList_currentIndexChanged(int)));
}
//播放控制按鈕操作(bottomGroupbox)
connect(bottomGroupbox, SIGNAL(play_pause_click()), 40、 //播放暫停 處理
this, SLOT(play_pause_clicked()));
connect(bottomGroupbox, SIGNAL(play_previous_click()), //上一曲 處理
this, SLOT(play_previous_clicked()));
connect(bottomGroupbox, SIGNAL(play_next_click()), //下一曲 處理
this, SL 41、OT(play_next_clicked()));
connect(bottomGroupbox, SIGNAL(lrc_click(bool)), //顯示/隱藏 桌面歌詞
this, SLOT(setLrcShown(bool)));
connect(bottomGroupbox, SIGNAL(volumn_clicked(QPoint)), //音量 處理
this, SLOT(volumn_clicked(QPoint)));
connec 42、t(bottomGroupbox, SIGNAL(slider_progress_valueChange(qint64)),//更新 進(jìn)度條
this, SLOT(seek(qint64)));
connect(bottomGroupbox, SIGNAL(playModle_clicked(QPoint)), //單擊 “播放模式”, 顯示/隱藏 “播放模式”窗口
this, SLOT(playModle_clicked(QPoint))); / 43、/................設(shè)置playModel的當(dāng)前音量值
//音量控件窗口操作
connect(slider_volumn, SIGNAL(valueChanged(int)), //音量空間 拖動
player, SLOT(setVolume(int)));
connect(slider_volumn, SIGNAL(sliderReleased()),
lab_volumnFrame, SLOT(hide()));
// connect(slider 44、_volumn, SIGNAL(sliderReleased()), //釋放 音量控件 隱藏控件
// slider_volumn, SLOT(hide()));
// connect(slider_volumn, SIGNAL(sliderReleased()), //釋放 音量控件 隱藏 音量標(biāo)簽 數(shù)據(jù)寫入配置文件
// this, SLOT(sliderVolumn_Released()));
//播放模式控件窗口操作
connec 45、t(playModle, SIGNAL(playModel_choose(playModelValue)), //選擇播放模式,為bottom設(shè)置相應(yīng)圖標(biāo)
bottomGroupbox, SLOT(playModle_choosed(playModelValue)));
connect(playModle, SIGNAL(playModel_choose(playModelValue)), //選擇播放模式,設(shè)置當(dāng)前播放模式值
this, SLOT(playModelState_changed(playModelVa 46、lue)));
//播放列表控制
connect(musicList, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)),//雙擊 播放歌曲
this, SLOT(itemPlay()));
connect(musicList, SIGNAL(itemPlay()),
this, SLOT(itemPlay()));
//搜索按鈕
connect(tbn_search, SIGNAL(clicked()), 47、 //單擊 搜索按鈕
this, SLOT(searchMusic()));
connect(this, SIGNAL(searchedMusicIndex(int, int)),
musicList, SLOT(searchedMusic(int, int)));
connect(toolGlobal, SIGNAL(magicStateChange(bool)), //魔音狀態(tài)改變
this, SLOT(maigcStateChan 48、ged(bool)));
connect(titleGroupBox, SIGNAL(themeNumClick(int)), //設(shè)定主題
this, SLOT(setTheme(int)));
//移除歌曲
connect(musicList, SIGNAL(removeMusic(int,int)),
this, SLOT(removedMusic(int,int)));
//倒計時 處理
connect(toolGlobal, SIGNAL(t 49、imeout_playStop()),
this, SLOT(play_stop()));
//設(shè)置改變,設(shè)置信息寫入配置文件
connect(playModle, SIGNAL(settingDataChanged(QString, QString)), //設(shè)置播放模式,信息寫入配置文件
this, SLOT(writeSettingdateToIni(QString,QString)));
connect(titleGroupBox, SIGNAL(settingDataChanged(QStri 50、ng,QString)), //設(shè)置皮膚,信息寫入配置文件
this, SLOT(writeSettingdateToIni(QString,QString)));
// connect(titleGroupBox, SIGNAL(clickGlobalMusic()), //單擊 本地音樂
// this, SLOT(clickedGlobalMusic()));
// connect(titleGroupBox, SIGNAL(clickInternetMusic()), 51、 //單擊 網(wǎng)絡(luò)歌曲
// this, SLOT(clickedInternetMusic()));
// connect(player, SIGNAL(metaDataChanged()), //多媒體 數(shù)據(jù)信息 改變
// this, SLOT(getMetaData()));
// connect(player, SIGNAL(seekableChanged(bool)), //播放進(jìn)度改變
// 52、 this, SLOT(seekableChanged(bool)));
// connect(player, SIGNAL(mediaChanged(QMediaContent)), //多媒體 改變
// this, SLOT(mediaChanged(QMediaContent)));
// connect(player, SIGNAL(objectNameChanged(QString)), //對象名改變
// this, SLOT(obje 53、ctNameChanged(QString)));
// connect(player, SIGNAL(playbackRateChanged(qreal)), //播放頻率 改變
// this, SLOT(playbackRateChanged(qreal)));
// connect(player, SIGNAL(volumeChanged(int)), //聲音改變
// this, SLOT(volumeChanged(int)));
// 54、 connect(player, SIGNAL(audioAvailableChanged(bool)), //未知信號
// this, SLOT(audioAvailableChanged(bool)));
connect(titleGroupBox, SIGNAL(ShowVideoPlayer()),
this, SLOT(ShowVideoPlayer()));
//邊緣縮放
isLeftPressDown = false;
this->directi 55、on = NONE;
this->centralWidget()->setMouseTracking(true);
titleGroupBox->setMouseTracking(true);
toolGlobal->setMouseTracking(true);
// lrcView->setMouseTracking(true);
musicList->setMouseTracking(true);
bottomGroupbox->setMouseTracking(true);
}
DT_Music::~DT_Music() 56、
{
delete ui;
}
//重寫 鼠標(biāo)按下事件
void DT_Music::mousePressEvent(QMouseEvent *event)
{/*
if (event ->button() == Qt::LeftButton)
{
offset = event ->globalPos() - pos();
}*/
if (event->button() == Qt::LeftButton)
{
isLeftPressDown = true;
57、if(direction != NONE)
{
this->mouseGrabber();
}
else
{
dragPosition = event->globalPos() - this->frameGeometry().topLeft();
}
}
else
{
QMainWindow::mousePressEvent(event);
}
}
//重寫 鼠標(biāo)移動事件
void DT 58、_Music::mouseMoveEvent(QMouseEvent *event)
{/*
if (event ->buttons() & Qt::LeftButton)
{
QPoint temp;
temp = event ->globalPos() - offset;
move(temp);
}*/
QPoint gloPoint = event->globalPos(); //鼠標(biāo)在桌面的坐標(biāo)
QRect rect = this->rect(); 59、 //窗口尺寸
QPoint tl = mapToGlobal(rect.topLeft()); //窗口左上頂點在桌面的坐標(biāo)
QPoint rb = mapToGlobal(rect.bottomRight()); //窗口右下頂點在桌面的坐標(biāo)
if(!isLeftPressDown)
{
region(gloPoint); //判斷鼠標(biāo)位置,現(xiàn)實鼠標(biāo)樣式
}
else
{
if( 60、direction != NONE) //如果左鍵按下,且在窗口邊緣
{
QRect rMove(tl, rb);
switch(direction)
{
case LEFT:
if(rb.x() - gloPoint.x() <= this->minimumWidth())
rMove.setX(tl.x());
e 61、lse
rMove.setX(gloPoint.x());
break;
case RIGHT:
rMove.setWidth(gloPoint.x() - tl.x());
break;
case UP:
if(rb.y() - gloPoint.y() <= this->minimumHeight())
rMove.set 62、Y(tl.y());
else
rMove.setY(gloPoint.y());
break;
case DOWN:
rMove.setHeight(gloPoint.y() - tl.y());
break;
case LEFTTOP:
if(rb.x() - gloPoint.x() <= this->minimumWidth( 63、))
rMove.setX(tl.x());
else
rMove.setX(gloPoint.x());
if(rb.y() - gloPoint.y() <= this->minimumHeight())
rMove.setY(tl.y());
else
rMove.setY(gloPoint.y());
64、 break;
case RIGHTTOP:
rMove.setWidth(gloPoint.x() - tl.x());
rMove.setY(gloPoint.y());
break;
case LEFTBOTTOM:
rMove.setX(gloPoint.x());
rMove.setHeight(gloPoint.y() - tl.y());
65、 break;
case RIGHTBOTTOM:
rMove.setWidth(gloPoint.x() - tl.x());
rMove.setHeight(gloPoint.y() - tl.y());
break;
default:
break;
}
this->setGeometry(rMove);
} 66、
else
{
move(event->globalPos() - dragPosition);
event->accept();
}
}
QMainWindow::mouseMoveEvent(event);
}
//鼠標(biāo)釋放事件
void DT_Music::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton) {
isLeftPressDown = false;
if(direction != NONE)
{
this->releaseMouse();
this->setCursor(QCursor(Qt::ArrowCursor));
}
}
}
//重寫 關(guān)閉事件
void D
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點美食推薦
- XX國有企業(yè)黨委書記個人述責(zé)述廉報告及2025年重點工作計劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個個會應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案