版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上設(shè)計題目:模擬俄羅斯方塊學(xué)生姓名:系 別: 專 業(yè): 班 級: 學(xué) 號: 指導(dǎo)教師: 課 程 設(shè) 計 任 務(wù) 書題目 模擬俄羅斯方塊 程序在文本窗口下輸出特定字符模擬游戲俄羅斯方塊的運行。在游戲過程中,每次能隨機(jī)產(chǎn)生一種方塊并自動下落,根據(jù)按鍵控制進(jìn)行相應(yīng)的平移、變形和加速下落。消去滿行后,根據(jù)行數(shù)累計分?jǐn)?shù)。分?jǐn)?shù)達(dá)到一定值后,等級提升,下落速度加快。游戲區(qū)域積滿后,游戲結(jié)束。同時能響應(yīng)退出按鍵,提示是否退出游戲。完 成 期 限: 指導(dǎo)教師簽名: 課程負(fù)責(zé)人簽名: 俄羅斯方塊的設(shè)計與實現(xiàn)第一章 引言1.1. 關(guān)于題目1.1.1. 題目要求利用Microsoft Visu
2、al C+編寫一個文本窗口下的俄羅斯方塊游戲。要求:(1) 利用類和多文件編寫。(2) 能夠記錄游戲得分和等級。(3) 可暫停/繼續(xù)游戲,使玩家在不愿游戲時退出。(4) 信息提示時顯示顏色變化。1.1.2. 選題背景俄羅斯方塊是家喻戶曉的益智小游戲,選擇這個題目一是為了將自己的所學(xué)知識加以運用,二是俄羅斯方塊是我第一個接觸到的游戲,它的實現(xiàn)方法也吸引著我。我希望通過探索實踐去實現(xiàn)它,在這次學(xué)習(xí)中從實踐和實際的項目中提高自己的編程能力。因此我選定了這個題目。1.2. 關(guān)于編譯軟件本程序采用Microsoft Visual C+6.0的英文版本進(jìn)行編譯。VisualC+6.0是Microsoft公
3、司推出的基于Windows操作系統(tǒng)的可視化C+編程工具,盡管Microsoft公司推出了.NET平臺的集成開發(fā)環(huán)境,但由于其良好的界面和可操作性,加上支持標(biāo)準(zhǔn)C/C+規(guī)范,但仍有相當(dāng)多的編程人員使用VisualC+6.0進(jìn)行應(yīng)用系統(tǒng)的開發(fā)。1.3. 關(guān)于穩(wěn)定性經(jīng)測試,本程序可以在windows操作系統(tǒng)中穩(wěn)定運行,較為穩(wěn)定。第二章 程序設(shè)計2. 主要功能設(shè)計根據(jù)分析,俄羅斯方塊這個程序一共要實現(xiàn)如下幾個功能,開始游戲、游戲的暫停繼續(xù)、游戲控制和退出游戲。其中游戲控制最為主要和重要,它控制著整個游戲的畫面和有關(guān)數(shù)據(jù)的操作,是游戲的核心部分。暫停和退出功能做成一體,在退出的提示下不做任何操作即可實現(xiàn)
4、暫停的功能。程序結(jié)構(gòu)如圖2-1所示。圖2-1 程序結(jié)構(gòu)圖2.1. 程序流程根據(jù)分析后的程序結(jié)構(gòu)圖設(shè)計出相應(yīng)的流程圖。俄羅斯方塊的內(nèi)容主要包括游戲開始,畫背景和邊框,顯示分?jǐn)?shù)等級和下一個方塊的預(yù)覽圖;根據(jù)速度沒隔一定時間方塊自動下落,當(dāng)有按鍵操作時,根據(jù)相應(yīng)按鍵執(zhí)行動作,每次動作前要判斷是否動作可以執(zhí)行。下落方塊滿一行時,消去該行,根據(jù)消去行數(shù)得到相應(yīng)分?jǐn)?shù)。分?jǐn)?shù)達(dá)到一定程度,等級提升,速度加快。同時可以響應(yīng)Esc按鍵,提示是否退出程序。圖2-2 流程圖第三章 程序?qū)崿F(xiàn)3. 類設(shè)計聲明根據(jù)程序的結(jié)構(gòu),將俄羅斯方塊需要實現(xiàn)的功能細(xì)化為相應(yīng)的類成員函數(shù)。程序有兩個類,一個view類,用于背景相關(guān)操作。
5、一個squar類,用于方塊相關(guān)操作。3.1. view類class viewpublic:view();/類的缺省構(gòu)造函數(shù)int getbgdata(int,int);/取得數(shù)組x,y點的數(shù)據(jù)值void scoreadd(int);/得分增加,根據(jù)消去行數(shù)void scorereset();/得分清零,用于升級后void levelup();/等級提升,當(dāng)分?jǐn)?shù)達(dá)到規(guī)定值后執(zhí)行int gameover();/游戲結(jié)束void rowdelete();/消除滿行void previewset(int (*p)4);/設(shè)置預(yù)覽方塊的形狀數(shù)據(jù)void previewreset();/預(yù)覽方塊數(shù)據(jù)清零v
6、oid setdata(int (*)2);/設(shè)置主游戲區(qū)數(shù)據(jù)值void datareset();/主游戲區(qū)數(shù)據(jù)清零void drawpreview();/顯示預(yù)覽方塊private:int data2526;/主游戲區(qū)數(shù)組int preview44;/預(yù)覽方塊數(shù)組int rowsdelete;/每次消除行數(shù)變量int score;/得分變量int scorelevel;/升級規(guī)定值變量int level;/等級變量bool overflag;/結(jié)束標(biāo)記變量void scorelevelup();/升級規(guī)定值提升;3.2. squar類class view;/先向引用聲明class squar
7、public:squar();/類的缺省構(gòu)造函數(shù)squar(squar &);/拷貝構(gòu)造函數(shù)friend void cursor(int,int);/友元函數(shù) 控制光標(biāo)位置void getcursor(int &,int &);/取得位置記錄坐標(biāo)void make();/隨機(jī)產(chǎn)生一個方塊void getmake(int (*p)4);/取得方塊數(shù)據(jù)值void draw();/顯示主方塊void drop(view &);/方塊下落void change();/方塊變形int meet(int);/判斷方塊周圍是否有障礙void torecord(int (*)2
8、);/傳送需要記錄的數(shù)據(jù)void reset();/方塊數(shù)組清零int moveflag;/方塊運動標(biāo)記變量private:void move();/方塊運動int shape44;/方塊形狀數(shù)據(jù)int x,y;/坐標(biāo)int shapeindex;/方塊形狀序號int changeindex;/變形序號變量int speed;/下落速度變量;3.3. 主要功能的實現(xiàn)3.3.1. 游戲界面俄羅斯方塊的游戲界面包括游戲區(qū)域邊框、下落方塊繪制、右部計分和預(yù)覽圖顯示等。游戲區(qū)域邊框的繪制比較簡單,循環(huán)中確定光標(biāo)的位置輸出特定字符,即可完成邊框繪制。游戲區(qū)方塊的繪制,循環(huán)從數(shù)據(jù)數(shù)組中依次讀出數(shù)據(jù),根據(jù)讀
9、到的數(shù)據(jù)顯示“”,最后組成方塊的形狀,完成方塊的繪制。計分和預(yù)覽圖部分先畫出一個矩形區(qū)域,然后控制光標(biāo)在其中顯示分?jǐn)?shù)、等級、預(yù)覽圖和提示信息。具體界面如圖3-1所示。圖3-13.3.2. 生成方塊本程序中生成的方塊有六種形狀,如圖3-2所示。每一種方塊以shapeindex標(biāo)記,在程序運行生成方塊時,調(diào)用shapeindex=rand()%5+1;語句,確定當(dāng)前要顯示的是哪一個方塊形狀。而在實際運行中,第一次需要調(diào)用兩次生成方塊函數(shù)make(),將先產(chǎn)生的賦給游戲當(dāng)前方塊,第二個賦給預(yù)覽圖方塊。以后每次產(chǎn)生一個方塊,把預(yù)覽方塊賦給當(dāng)前方塊,把新產(chǎn)生的賦給預(yù)覽方塊。圖3-23.3.3. 方塊變形
10、俄羅斯方塊的特點就在于通過方塊的變形拼滿整行來消去該行方塊從而使游戲可以繼續(xù)下去,很難想象不能變形的俄羅斯方塊是什么樣子。而變形的過程就是根據(jù)當(dāng)前方塊形狀改變方塊的相對位置,這樣就可以改變方塊的形狀了。在程序中每當(dāng)按下Up鍵,程序判斷可以變形后,根據(jù)當(dāng)前方塊的形狀序號shapeindex和變化形狀序號changeindex調(diào)用相應(yīng)的方塊數(shù)值賦給draw()函數(shù),通過刷新重畫就可以顯示變化后的方塊了。具體形狀變化如圖3-3所示。圖3-33.3.4. 方塊顯示以上方塊的操作都是數(shù)據(jù)層面的操作,而真正要在游戲窗口中看到數(shù)據(jù)的變化,還必須把方塊不斷的繪制出來。這就是draw()函數(shù)的作用。把當(dāng)前運動的
11、方塊對應(yīng)節(jié)點存儲在一個4*4數(shù)組里,變形和生成方塊的過程就是更新該數(shù)組數(shù)據(jù)的過程。然后在draw()函數(shù)里檢測數(shù)組的各個值,并控制光標(biāo)跳到一定位置,畫出“”組成方塊。具體方塊對應(yīng)數(shù)組數(shù)值關(guān)系如圖3-4所示。圖3-43.3.5. 障礙判斷障礙判斷,就是在方塊運動中或者變形中判斷周圍是否有障礙阻礙下落、移位、變形。當(dāng)方塊下落遇到下面有方塊或者到達(dá)下邊界則應(yīng)停止下落并記錄數(shù)據(jù),存入背景數(shù)據(jù)數(shù)組。變形時應(yīng)判斷這個變形是否可以進(jìn)行,如果有障礙則不能變形。例如當(dāng)方塊達(dá)到右邊界,而若變形則會越過邊界,那么這個變形的命令是不應(yīng)執(zhí)行的。所有這些判斷都由meet()函數(shù)進(jìn)行,根據(jù)是否有障礙返回1或0,再由其他函數(shù)
12、接收執(zhí)行相應(yīng)操作。具體一些障礙情況如圖3-5所示。圖3-53.3.6. 消行計分游戲玩家拼滿一行后,程序消去滿行,并計分。中當(dāng)一個方塊下落停止后,程序檢查方塊是否充滿了游戲區(qū)域,如果是結(jié)束游戲。不是,則判斷是否構(gòu)成消行條件,從下落方塊的最低點依次向上檢查是否可以消行,根據(jù)消去行數(shù)分?jǐn)?shù)增加。分?jǐn)?shù)達(dá)到一定程度,等級提升,速度加快。如圖3-6,圖3-7,圖3-8所示。圖3-6圖3-7圖3-83.3.7. 暫停退出游戲的友好性在于能考慮用戶的需要,隨時可以暫停/繼續(xù)游戲,在不愿繼續(xù)游戲時退出游戲。本程序可以在用戶需要的時候響應(yīng)Esc按鍵,提示是否退出游戲,如果不做選擇即可暫停游戲,等待選擇。界面如圖3
13、-9所示。圖3-9第四章 程序測試4. 游戲測試經(jīng)過調(diào)試和修改,程序完全實現(xiàn)設(shè)計要求,成功模擬了俄羅斯方塊的運行過程和游戲效果,只是界面略微簡陋,但已從程序?qū)用嫔蠈崿F(xiàn)了游戲,達(dá)到了這次實訓(xùn)的要求和目的。程序正常生成方塊,根據(jù)速度值每隔一定時間自動下落,如有操作按鍵按下,根據(jù)按鍵實現(xiàn)位移和變形。當(dāng)方塊滿一行后,可以消除該行,同時記錄分?jǐn)?shù)和等級。按下Esc鍵紅色提示信息正常顯示,可以響應(yīng)F1,F(xiàn)2鍵決定是否退出游戲??偨Y(jié)與體會通過這次課程設(shè)計,我收獲了很多。首先把所學(xué)知識加以利用和鞏固,其次在實踐中遇到問題去探索和學(xué)習(xí),更增加了新知識。在程序設(shè)計編寫過程中兩個類的數(shù)據(jù)交換是個比較麻煩的過程,這個類
14、的定義過程中要用到另一個類做參數(shù)類型,而在后一個類中亦需要第一個類做參數(shù)類型,出現(xiàn)了互相調(diào)用的情況。編譯提示未定義,只好在兩個類外定義函數(shù)負(fù)責(zé)兩個類函數(shù)的數(shù)據(jù)交換。實踐證明達(dá)到了預(yù)期的目的,積累了經(jīng)驗。由于程序是用文本窗口模擬的圖形,界面比較簡陋,如果使用MFC用C+來實現(xiàn),那么界面將會非常好,只是由于所學(xué)知識有限,只有下一步去探索了。附錄:程序主要模塊源代碼專心-專注-專業(yè)squar:squar()for(int i=0;i<4;i+)for(int j=0;j<4;j+)shapeij=0;x=22;y=0;shapeindex=1;changeindex=1;speed=10
15、00;moveflag=1;downtoearth=0;void squar:make()srand(int)time(0);shapeindex=rand()%6+1;switch(shapeindex)case 1:reset();shape10=1;shape11=1;shape12=1;shape13=1;break;case 2:reset();shape01=1;shape11=1;shape21=1;shape22=1;break;case 3:reset();shape02=1;shape12=1;shape21=1;shape22=1;break;case 4:reset()
16、;shape01=1;shape11=1;shape12=1;shape22=1;break;case 5:reset();shape02=1;shape11=1;shape12=1;shape21=1;break;case 6:reset();shape11=1;shape12=1;shape21=1;shape22=1;break;void squar:draw()for(int i=0;i<4;i+)for(int j=0;j<4;j+)if(shapeij)cursor(x+j*2,y+i);cout<<""int squar:meet(in
17、t direction)/遇見返回1;int xx=x/2,yy=y;switch(direction)case 1:/direc leftyy+=1;switch(shapeindex)case 1:/lineswitch(changeindex)case 1:if(getdata(yy+1,xx-1)return 1;elsereturn 0;case 2:if(getdata(yy,xx)|getdata(yy+1,xx)|getdata(yy+2,xx)|getdata(yy+3,xx)return 1;elsereturn 0;case 2:/curlrswitch(changein
18、dex)case 1:if(getdata(yy,xx)|getdata(yy+1,xx)|getdata(yy+2,xx)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx+2)|getdata(yy+2,xx)return 1;elsereturn 0;case 3:if(getdata(yy,xx)|getdata(yy+1,xx+1)|getdata(yy+2,xx+1)return 1;elsereturn 0;case 4:if(getdata(yy+1,xx)|getdata(yy+2,xx)return 1;elsereturn 0;
19、case 3:/curllswitch(changeindex)case 1:if(getdata(yy,xx+1)|getdata(yy+1,xx+1)|getdata(yy+2,xx)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx)|getdata(yy+2,xx)return 1;elsereturn 0;case 3:if(getdata(yy,xx)|getdata(yy+1,xx)|getdata(yy+2,xx)return 1;elsereturn 0;case 4:if(getdata(yy+1,xx)|getdata(yy+2
20、,xx+2)return 1;elsereturn 0;case 4:/sswitch(changeindex)case 1:if(getdata(yy,xx)|getdata(yy+1,xx)|getdata(yy+2,xx+1)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx+1)|getdata(yy+2,xx)return 1;elsereturn 0;case 5:/disswitch(changeindex)case 1:if(getdata(yy,xx+1)|getdata(yy+1,xx)|getdata(yy+2,xx)retur
21、n 1;elsereturn 0;case 2:if(getdata(yy+1,xx)|getdata(yy+2,xx+1)return 1;elsereturn 0;case 6:/discif(getdata(yy+1,xx)|getdata(yy+2,xx)return 1;elsereturn 0;case 2:/direc rightyy+=1;switch(shapeindex)case 1:/lineswitch(changeindex)case 1:if(getdata(yy+1,xx+4)return 1;elsereturn 0;case 2:if(getdata(yy,x
22、x+2)|getdata(yy+1,xx+2)|getdata(yy+2,xx+2)|getdata(yy+3,xx+2)return 1;elsereturn 0;case 2:/curlrswitch(changeindex)case 1:if(getdata(yy,xx+2)|getdata(yy+1,xx+2)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx+4)|getdata(yy+2,xx+4)return 1;elsereturn 0;case 3:if(getdata(yy,xx+3)|get
23、data(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 4:if(getdata(yy+1,xx+4)|getdata(yy+2,xx+2)return 1;elsereturn 0;case 3:/curllswitch(changeindex)case 1:if(getdata(yy,xx+3)|getdata(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx+2)|getdata(yy+2,xx+4)return 1;e
24、lsereturn 0;case 3:if(getdata(yy,xx+3)|getdata(yy+1,xx+2)|getdata(yy+2,xx+2)return 1;elsereturn 0;case 4:if(getdata(yy+1,xx+4)|getdata(yy+2,xx+4)return 1;elsereturn 0;case 4:/sswitch(changeindex)case 1:if(getdata(yy,xx+2)|getdata(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(y
25、y+1,xx+4)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 5:/disswitch(changeindex)case 1:if(getdata(yy,xx+3)|getdata(yy+1,xx+3)|getdata(yy+2,xx+2)return 1;elsereturn 0;case 2:if(getdata(yy+1,xx+3)|getdata(yy+2,xx+4)return 1;elsereturn 0;case 6:/discif(getdata(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;else
26、return 0;case 3:/direc downswitch(shapeindex)case 1:/lineswitch(changeindex)case 1:if(getdata(yy+2,xx)|getdata(yy+2,xx+1)|getdata(yy+2,xx+2)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy+4,xx+1)return 1;elsereturn 0;case 2:/curlrswitch(changeindex)case 1:if(getdata(yy+3,xx+1)|getdata(
27、yy+3,xx+2)return 1;elsereturn 0;case 2:if(getdata(yy+3,xx+1)|getdata(yy+3,xx+2)|getdata(yy+3,xx+3)return 1;elsereturn 0;case 3:if(getdata(yy+1,xx+1)|getdata(yy+3,xx+2)return 1;elsereturn 0;case 4:if(getdata(yy+2,xx+2)|getdata(yy+2,xx+3)|getdata(yy+3,xx+1)return 1;elsereturn 0;case 3:/curllswitch(cha
28、ngeindex)case 1:if(getdata(yy+3,xx+1)|getdata(yy+3,xx+2)return 1;elsereturn 0;case 2:if(getdata(yy+3,xx+1)|getdata(yy+3,xx+2)|getdata(yy+3,xx+3)return 1;elsereturn 0;case 3:if(getdata(yy+1,xx+2)|getdata(yy+3,xx+1)return 1;elsereturn 0;case 4:if(getdata(yy+2,xx+1)|getdata(yy+2,xx+2)|getdata(yy+3,xx+3
29、)return 1;elsereturn 0;case 4:/sswitch(changeindex)case 1:if(getdata(yy+2,xx+1)|getdata(yy+3,xx+2)return 1;elsereturn 0;case 2:if(getdata(yy+3,xx+1)|getdata(yy+3,xx+2)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 5:/disswitch(changeindex)case 1:if(getdata(yy+2,xx+2)|getdata(yy+3,xx+1)return 1;elsere
30、turn 0;case 2:if(getdata(yy+2,xx+1)|getdata(yy+3,xx+2)|getdata(yy+3,xx+3)return 1;elsereturn 0;case 6:/discif(getdata(yy+3,xx+1)|getdata(yy+3,xx+2)return 1;elsereturn 0;case 4:/direc upswitch(shapeindex)case 1:/lineswitch(changeindex)case 1:if(getdata(yy+1,xx)|getdata(yy+1,xx+2)|getdata(yy+1,xx+3)re
31、turn 1;elsereturn 0;case 2:if(getdata(yy+1,xx)|getdata(yy+1,xx+2)|getdata(yy+1,xx+3)return 1;elsereturn 0;case 2:/curlrswitch(changeindex)case 1:if(getdata(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy,xx+1)|getdata(yy,xx+2)|getdata(yy+1,xx+2)return 1;elsereturn 0;case 3:if
32、(getdata(yy+1,xx+1)|getdata(yy+1,xx+3)|getdata(yy+2,xx+1)return 1;elsereturn 0;case 4:if(getdata(yy,xx+1)|getdata(yy+2,xx+2)return 1;elsereturn 0;case 3:/curllswitch(changeindex)case 1:if(getdata(yy+1,xx+1)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy,xx+1)|getdata(yy,xx+2)return 1;e
33、lsereturn 0;case 3:if(getdata(yy+1,xx+2)|getdata(yy+1,xx+3)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 4:if(getdata(yy,xx+2)|getdata(yy+2,xx+1)|getdata(yy+2,xx+2)return 1;elsereturn 0;case 4:/sswitch(changeindex)case 1:if(getdata(yy+1,xx+3)|getdata(yy+2,xx+1)return 1;elsereturn 0;case 2:if(getdata
34、(yy,xx+1)|getdata(yy+1,xx+1)return 1;elsereturn 0;case 5:/disswitch(changeindex)case 1:if(getdata(yy+2,xx+2)|getdata(yy+2,xx+3)return 1;elsereturn 0;case 2:if(getdata(yy,xx+2)|getdata(yy+2,xx+1)return 1;elsereturn 0;/case 6:/discvoid squar:change()if(shapeindex=1)switch(changeindex)case 1:reset();shape01=1;shape11=1;shape21=1;shape31=1;changeindex=2;break;case 2:reset();shape10=1;shape11=1;shape12=1;shape13=1;changeindex=1;break;else if(shapeindex=2)switch(changeindex)case 1:reset();shape13=1;shape21=1;shape22=1;shape23=1;changeindex=2;break;case 2:re
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 司機(jī)貨運合同范例
- 政府廣告制作合同范例
- 電力供應(yīng)設(shè)備采購招標(biāo)合同三篇
- 杉鋸材購銷合同范例
- 舞廳服務(wù)合同(2篇)
- 土雞合作養(yǎng)殖合同
- 集體合同協(xié)商函
- 共同建設(shè)用地合同范例
- 安能物流加盟合同范例
- 藥店員工勞動合同范例
- 數(shù)據(jù)管理制度完整
- 電梯改造維修合同范例
- 2024年醫(yī)院客服中心年終工作總結(jié)范例(3篇)
- 雄安新區(qū)容東片區(qū)地下空間專項規(guī)劃-ECADI
- 自然辯證法論述題146題帶答案(可打印版)
- 2024年急診科護(hù)理計劃和總結(jié)
- 公司年度培訓(xùn)總結(jié)匯報
- 電梯日管控、周排查、月調(diào)度內(nèi)容表格
- C語言(2023春)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《信息技術(shù)改變學(xué)習(xí)》學(xué)歷案
- 2024年抖音投放服務(wù)合同
評論
0/150
提交評論