版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
武漢理工大學(xué)《專業(yè)課程設(shè)計(jì)3》課程設(shè)計(jì)說明書PAGEPAGE1畢業(yè)設(shè)計(jì)(論文)開題報(bào)告題目LPX6電動(dòng)機(jī)下置式錘式破碎機(jī)專業(yè)名稱機(jī)械設(shè)計(jì)制造及其自動(dòng)化班級(jí)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師填表日期20年5月日一、選題的依據(jù)及意義隨著國內(nèi)基本建設(shè)和國民經(jīng)濟(jì)的持續(xù)發(fā)展,我國的建設(shè)機(jī)械市場已經(jīng)成為國際設(shè)備制造商關(guān)注的焦點(diǎn),破碎機(jī)械行業(yè)也不例外,外資的進(jìn)入,進(jìn)一步加劇了市場的競爭程度,國內(nèi)破碎機(jī)械企業(yè)要想在競爭的大潮中取得先機(jī),其首要問題就是要提高現(xiàn)有破碎設(shè)備的質(zhì)量和技術(shù)含量,盡快縮小與國外先進(jìn)水平的差距,創(chuàng)造自己的品牌,爭取市場主動(dòng)。國內(nèi)外破碎機(jī)械存在差距的原因很多,其中市場需求不同是造成差距的客觀原因,由于國際市場上優(yōu)秀的破碎設(shè)備制造商集中在歐美地區(qū),那里大規(guī)模的基本建設(shè)階段已過去,市場對(duì)砂石料的需求不多,且環(huán)保要求又高,勢(shì)必形成砂石場高度集中以大規(guī)模生產(chǎn)來實(shí)現(xiàn)環(huán)境保護(hù),幫所需破碎設(shè)備規(guī)格大、自動(dòng)化程試想高、機(jī)動(dòng)性強(qiáng)。滿足這樣的市場需求發(fā)展的破碎設(shè)備與國內(nèi)產(chǎn)品不大一樣,而我們正處于大規(guī)模的基本建設(shè)時(shí)期,各地對(duì)砂石料的需求劇增,引起投資砂石場熱,遍地開花的砂石場往往規(guī)模小,只求上馬快、投資少,供不應(yīng)求的市場使粗制濫造、技術(shù)水平低下、耗能高、污染環(huán)境嚴(yán)重的產(chǎn)品紛紛進(jìn)入,而這些設(shè)備往往只能以低價(jià)來占領(lǐng)市場,因此與國際上先進(jìn)水平差距明顯。國際上專業(yè)的立軸沖擊式破碎機(jī)制造商已普遍采用陶瓷制作耐磨零件,而不僅僅是硬質(zhì)合金(碳化鎢)和高鉻鑄鐵。陶瓷材料不但可耐較高的溫度,而且有特別好的抗腐蝕性,因而在帶有相當(dāng)溫度的物料高速?zèng)_擊時(shí)耐磨性能良好。國內(nèi)的立軸立軸沖擊式破碎機(jī)目前采用硬質(zhì)合金和高鉻鑄鐵材料,質(zhì)量不穩(wěn)定,易腐蝕和磨損,且易被金屬件擊碎,由于砂石場使用的破碎設(shè)備國內(nèi)外產(chǎn)品差距明顯,故國內(nèi)高端市場,如規(guī)模較大的砂石場仍是進(jìn)口的設(shè)備占多數(shù)。
因而近制就是測(cè)繪國外產(chǎn)品,以此作為更新?lián)Q代的主要手段,技術(shù)進(jìn)步甚慢。目前國內(nèi)的破碎機(jī)械制造商無論國有企業(yè)還是民營企業(yè),在科技開發(fā)上的投入不足是產(chǎn)品差距的主觀原因,既缺乏科研手段(例如幾乎沒有一家制造商具備巖石實(shí)險(xiǎn)室),又缺少先進(jìn)技術(shù)支撐,自主產(chǎn)權(quán)的開發(fā)力量十分薄弱。盡管國內(nèi)外破碎設(shè)備差距很大,但縱觀國外的破碎設(shè)備制造商由于本土市場日漸縮小,生產(chǎn)成本高,紛紛開拓本國以外的市場,而且作為傳統(tǒng)工業(yè)在資金、人才等方面獲得新的投入甚少,因此,近來年兼并重組頻繁,這種局面給國內(nèi)破碎機(jī)械制造商以很大的發(fā)展機(jī)遇,畢竟我國的制造成本較低,又有較好的重工業(yè)基礎(chǔ),通過引進(jìn)國際上先進(jìn)技術(shù),產(chǎn)學(xué)科研投入,一定能克服技術(shù)上的差距,使我國的破碎設(shè)備產(chǎn)品更好的進(jìn)入國內(nèi)外市場。
立軸錘式破碎機(jī)在吸收國內(nèi)外先進(jìn)技術(shù)和綜合國內(nèi)外同類破碎機(jī)技術(shù),具有破碎效率高、破碎比大、磨損少、工作平穩(wěn)、能耗低、維修方便等優(yōu)點(diǎn),是一種較理想的節(jié)能型破碎設(shè)備。
同時(shí)對(duì)主要技術(shù)參數(shù)進(jìn)行優(yōu)化設(shè)計(jì)研制成的新型細(xì)碎、粗磨產(chǎn)品,主要用于中、小型破碎水泥生料、熟料,用于建筑用砂、鐵礦石、砂巖、石膏、煤矸石、塊煤等其它中硬礦石的破碎。具有破碎比大、能耗少、運(yùn)轉(zhuǎn)平穩(wěn)、結(jié)構(gòu)簡單、操作維修方便等特點(diǎn)。它不僅適用于中等硬度脆性物料(如石灰石、水泥熟料、石膏、硫鐵礦石、煤塊等多種物料)的破碎,還適用于建材、化工、冶金、礦山、電力、煤炭等工業(yè)部門的原料破碎系統(tǒng)。通過本設(shè)計(jì),使我達(dá)到了以下幾個(gè)目的:1、學(xué)會(huì)獨(dú)立分析和解決工程實(shí)踐中所遇到的各種問題。2、掌握獨(dú)立完成工程設(shè)計(jì)的方法。3、掌握總結(jié)和撰寫設(shè)計(jì)說明書的方法。4、學(xué)會(huì)通過語言表述自己的研究內(nèi)容、理論、方法、結(jié)論。5、為今后綜合能力的提高打下一個(gè)良好、扎實(shí)的基礎(chǔ)。國內(nèi)外研究概況及發(fā)展趨勢(shì)(含文獻(xiàn)綜述)國內(nèi)外研究概況第一代的破碎機(jī)械是在蒸汽機(jī)和電動(dòng)機(jī)等動(dòng)力機(jī)械逐漸完善和推廣之后相繼創(chuàng)造出來的。1806年出現(xiàn)了用蒸汽機(jī)驅(qū)動(dòng)的輥式破碎機(jī);1858年,美國的布萊克發(fā)明了破碎巖石的顎式破碎機(jī);1878年美國發(fā)展了具有連續(xù)破碎動(dòng)作的旋回破碎機(jī),其生產(chǎn)效率高于作間歇破碎動(dòng)作的顎式破碎機(jī);1895年,美國的威廉發(fā)明能耗較低的沖擊式破碎機(jī)。美國人E.W.布萊克(Black)設(shè)計(jì)制造的世界上第一臺(tái)顎式破碎機(jī)。其結(jié)構(gòu)形式為雙肘板式(簡單擺動(dòng)式)顎式破碎機(jī)。由于顎式破碎機(jī)具有結(jié)構(gòu)簡單、制造容易、工作可靠、維護(hù)方便,體積和高度較小等優(yōu)點(diǎn)。至今仍然被廣泛應(yīng)用于破碎堅(jiān)硬、中硬、軟質(zhì)礦石和各種物料,如各種礦石、溶劑、爐渣、建筑石料、大理石等。通常使用的顎式破碎機(jī)的破碎機(jī)為4~6,而小型顎式破碎機(jī)有時(shí)可達(dá)到10.大、中型破碎機(jī)的給料力度可達(dá)1000~2000mm,其產(chǎn)品粒度可達(dá)20~250mm,小型破碎機(jī)和新型細(xì)碎用顎式破碎機(jī)所得產(chǎn)品可以更細(xì)一些。顎式破碎機(jī)即可用于粗碎作業(yè),也可用于中、細(xì)作業(yè)。特別是被用于井下破碎作業(yè)和中、小型移動(dòng)式破碎裝置。錘式破碎機(jī)的設(shè)計(jì)簡單、工作可靠和能破碎堅(jiān)硬物料等優(yōu)點(diǎn)而被廣泛應(yīng)用于選礦、建筑材料、硅酸鹽和陶瓷等工業(yè)部門。到20世紀(jì)80年代,每小時(shí)破碎800噸物料的大型顎式破碎機(jī)的給料粒度已達(dá)1800毫米左右。我國破碎機(jī)械制造業(yè)總體規(guī)模已進(jìn)入國際生產(chǎn)大國行列,但總體競爭和發(fā)展后勁仍無法與發(fā)達(dá)國家相抗衡,目前國內(nèi)高端用戶和出口產(chǎn)品配套的基礎(chǔ)零部件主要依靠進(jìn)口,隨著出口貿(mào)易磨擦的加大,勢(shì)必要受到國外競爭對(duì)手和供應(yīng)商的制約。因此破碎機(jī)械今后振興發(fā)展的重心應(yīng)放到基礎(chǔ)技術(shù)和基礎(chǔ)部件上來,提高自主開發(fā)水平。大型機(jī)械設(shè)備,其中錘式破碎機(jī),破石機(jī),顎式破碎機(jī),大型磨粉機(jī)等設(shè)備已經(jīng)遠(yuǎn)銷哥倫比亞,美國,沙特等地區(qū)取得了客戶的好評(píng),特別是制砂機(jī),碎石機(jī)設(shè)備得到了外商的大力贊賞。目前,我國破碎制造行業(yè)市場非常廣泛,包括化工、礦山、建筑、水利、冶金、煤礦、玻璃等各個(gè)行業(yè)。在中國最重要的應(yīng)用領(lǐng)域是水泥行業(yè)、鋪路和礦山,應(yīng)用在這兩個(gè)行業(yè)的破碎機(jī)各約占整個(gè)行業(yè)的30%左右。目前,國際上各國對(duì)破碎機(jī)的發(fā)展抱有較大期望,同時(shí),也取得了一定的成效。尤其是美國、日本、德國在破碎機(jī)的研究開發(fā)與利用已經(jīng)達(dá)到了一個(gè)較高的水平。破碎機(jī)廣泛應(yīng)用于資源開采、工程機(jī)械、城市建設(shè)、材料分解等多項(xiàng)領(lǐng)域,涉及包括化工、礦山、建筑、水利、冶金、煤礦、玻璃等各個(gè)行業(yè)。國內(nèi)近幾年由于經(jīng)濟(jì)的穩(wěn)定快速發(fā)展、以及西部大開發(fā)的深入進(jìn)行,對(duì)破碎機(jī)的需求大量增加。另一方面,隨著國家繼續(xù)擴(kuò)大內(nèi)需,基礎(chǔ)設(shè)施建設(shè)步伐的加大,這就帶動(dòng)了破碎機(jī)的的蓬勃發(fā)展。但是一定程度上,我們對(duì)破碎機(jī)的研究開發(fā)與利用還遠(yuǎn)沒有達(dá)到預(yù)期的效果,破碎技術(shù)的水平相對(duì)有限,為了進(jìn)一步提高破碎水平,生產(chǎn)出就有高質(zhì)量和高技術(shù)含量的破碎機(jī),盡快縮小與國外先進(jìn)水平的差距,我們不得不對(duì)破碎機(jī)進(jìn)行更加深入的研究。2.現(xiàn)如發(fā)展趨勢(shì)從上個(gè)世紀(jì)60年代德國克虜伯公司生產(chǎn)出第一臺(tái)液壓破碎錘以來,破碎錘經(jīng)歷了四十多年的發(fā)展,從這次參展情況來看,破碎錘已經(jīng)從當(dāng)初結(jié)構(gòu)復(fù)雜、功能單一的形式發(fā)展到現(xiàn)在的產(chǎn)品多樣化、功能多樣化。具體可以歸納為以下幾個(gè)方面的新發(fā)展:(1)破碎錘的結(jié)構(gòu)形式多樣化?,F(xiàn)在市場上有純液壓靜壓驅(qū)動(dòng)型破碎錘、氣液聯(lián)合型破碎錘和氮?dú)獗ㄊ剿殄N,可以根據(jù)需要選擇合適的型號(hào);從與承載機(jī)的裝配上看,有側(cè)板裝配形式和箱體式裝配形式兩種,側(cè)板式裝配形式破碎錘附加功能一般較箱體形式的要少,且沖擊能檔次一般是中小型,大沖擊能的破碎錘現(xiàn)在一般采用箱體式結(jié)構(gòu),因?yàn)橄潴w式結(jié)構(gòu)便于采取隔音措施,以減小大沖擊能破碎錘工作時(shí)的噪聲。(2)產(chǎn)品系列化。根據(jù)工作對(duì)象的不同,可以選用同一系列不同型號(hào)的破碎錘。對(duì)于小塊、硬度較低的巖石選川沖擊能小的破碎錘,而對(duì)于大塊、硬度高的巖石選用沖擊能大的破碎錘,這樣就可以充分發(fā)揮系統(tǒng)的功能,提高能量的利用效率;當(dāng)然,對(duì)于不同的工作對(duì)象,還可以選用不同零部件,如對(duì)于硬度不同、韌性不同的破碎對(duì)象,可以選用不同的釬桿,來達(dá)到有效破碎的目的。世界上比較有影響的幾家破碎設(shè)備生產(chǎn)廠家如克虜伯、Rammer公司、日本古河、卡特彼勒等,他們都是對(duì)某一種結(jié)構(gòu)形式的破碎錘進(jìn)行系列化生產(chǎn),多的一種系列有十幾種型號(hào)。(3)功能多樣化、結(jié)構(gòu)柔性化。這一點(diǎn)是破碎錘近來最顯著的變化?,F(xiàn)在的破碎錘為了使用現(xiàn)代施工要求,已經(jīng)從功能單一的破碎設(shè)備發(fā)展到具有多種附加功能的多功能破碎設(shè)備。除了具備破碎功能外,對(duì)于大型的破碎錘可以利用其安裝外殼實(shí)行簡單的搬移功能,從而方便了本身的作業(yè);有些破碎錘同時(shí)具備陸上和水下作業(yè)功能;有些破碎錘具有噪聲和粉塵控制功能,成為典型的環(huán)保型產(chǎn)品;有的具有自動(dòng)潤滑功能;有的具有防空打功能,從而具備了很高的可靠性?,F(xiàn)代破碎錘功能的多樣化,正是通過其結(jié)構(gòu)配置的柔性化來實(shí)現(xiàn)的。以上多種附加功能,都可以通過選購相應(yīng)的功能裝置來進(jìn)行配置,因而使破碎錘在功能上也具有了很大的柔性。(4)智能化。隨著液壓技術(shù)、電子技術(shù)、控制技術(shù)在工程機(jī)械上的不斷應(yīng)用和發(fā)展,破碎錘也向著智能化方向發(fā)展。通過液壓控制技術(shù)和電子控制技術(shù),破碎錘能夠根據(jù)作業(yè)對(duì)象的不同,自動(dòng)調(diào)節(jié)沖擊能和沖擊頻率。破碎錘實(shí)現(xiàn)自動(dòng)調(diào)頻調(diào)能是破碎錘技術(shù)上的一個(gè)重大突破,也是破碎錘性能提升和發(fā)展的重要方向。(5)便捷的售后服務(wù)。任何產(chǎn)品生產(chǎn)出來后,最終都要走向市場,經(jīng)受市場的嚴(yán)格檢驗(yàn)。在信息化、網(wǎng)絡(luò)化的服務(wù)型社會(huì),產(chǎn)品的售后服務(wù)和技術(shù)支持是一個(gè)不可忽視的重要環(huán)節(jié),完善的售后服務(wù)和可靠的技術(shù)支持電同樣足提高產(chǎn)品競爭力的重要手段。國外的幾家大公司在這方面都做得非常出色。三、研究內(nèi)容及實(shí)驗(yàn)方案1、總要求設(shè)計(jì)電動(dòng)機(jī)下置式立軸錘式破碎機(jī),該破碎機(jī)可以將尺寸小于200×200×150的脆性建筑垃圾粉碎成尺寸小于8×8×8的碎塊。2、給定的條件和要求電動(dòng)機(jī)下置式立軸錘式破碎機(jī)設(shè)計(jì);采用甩錘式結(jié)構(gòu),結(jié)合可更換破碎板工作;產(chǎn)量為每小時(shí)6噸;3、確定總體方案分析國內(nèi)外建筑垃圾破碎機(jī)發(fā)展和應(yīng)用的情況,結(jié)構(gòu)類型和功能特點(diǎn)。結(jié)合國內(nèi)建筑行業(yè)的實(shí)際情況擬定建筑垃圾破碎機(jī)的總體方案,并對(duì)總體方案進(jìn)行分析比較,最后確定總體方案。4、機(jī)械部分的設(shè)計(jì)(1)總體機(jī)械結(jié)構(gòu)設(shè)計(jì),繪制總裝配圖。(2)傳動(dòng)機(jī)構(gòu)設(shè)計(jì),完成從電動(dòng)機(jī)到主軸的傳動(dòng)機(jī)構(gòu)的設(shè)計(jì)和計(jì)算,繪制部分裝配圖。(3)工作部件設(shè)計(jì),完成主軸、甩錘、破碎板等工作部件設(shè)計(jì),繪制工作部件部分裝配圖。(4)其他輔助機(jī)構(gòu)設(shè)計(jì),完成除塵罩、進(jìn)料口等鋼結(jié)構(gòu)部件的設(shè)計(jì),繪制部分裝配圖。(5)主要零件設(shè)計(jì),繪制主要零件的工作圖。5、撰寫畢業(yè)設(shè)計(jì)說明書6、外文資料翻譯7、圖紙要求機(jī)械結(jié)構(gòu)裝配圖要求視圖完整、符合最新國家標(biāo)準(zhǔn),圖面整潔、質(zhì)量高。四、目標(biāo)、主要特色及工作進(jìn)度立軸錘式破碎機(jī)由上蓋、機(jī)殼、立軸轉(zhuǎn)子、底座和傳動(dòng)裝置組成。上蓋一側(cè)上面設(shè)有喂料口(進(jìn)料斗),中間設(shè)有轉(zhuǎn)子軸承座。機(jī)殼內(nèi)裝有可拆換的反擊板,中心立軸轉(zhuǎn)子安裝有數(shù)排對(duì)稱布置的打擊錘頭,傳動(dòng)裝置由異步電動(dòng)機(jī)、電機(jī)機(jī)座、張緊機(jī)構(gòu)及傳動(dòng)機(jī)構(gòu)構(gòu)成,同立軸轉(zhuǎn)子相連,底座下部設(shè)有出料口及料斗。立軸錘式破碎機(jī)結(jié)構(gòu)簡圖如圖1如下:圖1立軸錘式破碎機(jī)結(jié)構(gòu)簡圖4.1立軸錘式破碎機(jī)的工作原理:立軸上設(shè)置有多層錘頭,由進(jìn)料斗進(jìn)來的物料利用物料自重均勻喂入,在自由墜落過程中,首先被上層高速運(yùn)行的錘頭沖擊,物料被擊向反擊板,反擊板再將物料反彈向錘頭,隨物料的自重向錘頭與反擊板之間沖撞,物料與物料之間的沖撞,使物料粉碎,被粉碎的物料由底部出料斗排出機(jī)外。4.2立軸錘式破碎機(jī)的特點(diǎn):該設(shè)備破碎比大,破碎水份含量高,對(duì)水份含量高的物料加工最為理想,出料粒度可任意調(diào)節(jié),無篩條設(shè)置,含泥沙量大的物料不會(huì)堵塞,不可破碎物進(jìn)入機(jī)體可自動(dòng)排出,不會(huì)造成設(shè)備的損壞。該設(shè)備粉碎特料直流,生產(chǎn)效率高,結(jié)構(gòu)獨(dú)特、運(yùn)作平穩(wěn)、噪音低、維修方例,開啟工作倉門即可輕松更換損件。工作平穩(wěn)、運(yùn)轉(zhuǎn)可靠、噪聲小、粉塵少。結(jié)構(gòu)合理,易損件種類少,操作、維修簡便。結(jié)構(gòu)緊湊,占地面積小。4.3方案對(duì)比:方案一:電動(dòng)機(jī)上置的立軸錘式破碎機(jī),通過帶輪和皮帶將電動(dòng)機(jī)的轉(zhuǎn)矩傳遞給主軸,從而帶動(dòng)錘頭旋轉(zhuǎn),來破碎物料。電動(dòng)機(jī)上置的立軸錘式破碎機(jī)如下圖2所示:圖2電動(dòng)機(jī)上置式立軸錘式破碎機(jī)方案二:電動(dòng)機(jī)下置的立軸錘式破碎機(jī),通過帶輪和皮帶將電動(dòng)機(jī)的轉(zhuǎn)矩傳遞給主軸,從而帶動(dòng)錘頭旋轉(zhuǎn),來破碎物料。電動(dòng)機(jī)下置的立軸錘式破碎機(jī)如下圖圖3所示:圖3電動(dòng)機(jī)下置式立軸錘式破碎機(jī)4.4論證結(jié)果1.破碎機(jī)總體方案的確定選擇電動(dòng)機(jī)下置式錘式破碎機(jī)2.破碎機(jī)外形結(jié)構(gòu)的確定根據(jù)所給設(shè)計(jì)題目的要求:將尺寸小于200×200×150的脆性建筑垃圾粉碎成尺寸小于8×8×8的碎塊和每小時(shí)六噸的產(chǎn)量。破碎機(jī)的進(jìn)料斗采用對(duì)稱的雙口進(jìn)料。這樣可以在物料進(jìn)入破碎腔時(shí),更多的物料進(jìn)行碰撞而破碎,減少了物料的粒度,從而也減輕了錘頭的工作量,減輕主軸的承載負(fù)荷,降低了電動(dòng)機(jī)的功率。下面采用單個(gè)出料口,使在卸料的過程中,大塊的物料能夠再次破碎降低粒度。3.傳動(dòng)機(jī)構(gòu)的確定由于破碎機(jī)的傳動(dòng)不需要嚴(yán)格的傳動(dòng)比,且根據(jù)它的破碎特點(diǎn),采用帶式傳動(dòng)。利用帶輪和傳動(dòng)帶(v帶)間的摩擦將動(dòng)力源(電動(dòng)機(jī))的動(dòng)力傳遞給破碎機(jī)的主軸,帶動(dòng)錘頭進(jìn)行破碎。采用帶式傳動(dòng),能緩和載荷沖擊吸震,運(yùn)動(dòng)平穩(wěn),無噪聲;價(jià)格便宜;能夠?qū)崿F(xiàn)長距離的傳動(dòng)。最重要的是在破碎機(jī)過載時(shí)將引起帶在帶輪上打滑,從而保護(hù)了主軸不被破壞。4.破碎機(jī)構(gòu)的確定破碎腔里面的破碎機(jī)構(gòu)采用單轉(zhuǎn)子多排錘可逆式,單轉(zhuǎn)子即一根主軸,多排錘頭通過連接裝置固定在主軸上,錘頭交錯(cuò)布置。而且錘頭的回轉(zhuǎn)采用可逆式,這樣能夠在錘頭遇到大的破碎阻力時(shí),錘頭向相反的方向轉(zhuǎn)動(dòng),減輕主軸的承載負(fù)荷,保護(hù)主軸不被損壞。里面的破碎襯板通過螺栓連接固定在筒體上。同時(shí),在筒體上開有維修孔,方便對(duì)破碎機(jī)構(gòu)進(jìn)行維修和更換。筒體和破碎機(jī)構(gòu)固定在底架上。電動(dòng)機(jī)下置式立軸錘式破碎機(jī)結(jié)構(gòu)示意圖如下圖圖4:圖4電動(dòng)機(jī)下置式立軸錘式破碎機(jī)結(jié)構(gòu)簡圖4.5工作進(jìn)度1.查閱相關(guān)資料,外文資料翻譯(6000字符以上),撰寫開題報(bào)告。第1周—第2周2.運(yùn)動(dòng)及動(dòng)力參數(shù)計(jì)算第3周—第4周3.總裝圖設(shè)計(jì)第5周—第8周4.主要零、部件強(qiáng)度及選用計(jì)算第9周—第10周5.完成進(jìn)料口等輔助鋼結(jié)構(gòu)部件的設(shè)計(jì)第11周—第12周6.繪制零、部件圖第13周—第15周7.整理畢業(yè)論文及答辯準(zhǔn)備第16周—第17周五、主要參考文獻(xiàn)【1】孫桓等主編.機(jī)械原理.北京:高等教育出版社,2001【2】濮良貴等主編.機(jī)械設(shè)計(jì).北京:高等教育出版社,2001【3】胡家秀.機(jī)械零件設(shè)計(jì)實(shí)用手冊(cè).北京:機(jī)械工業(yè)出版社,1999.【4】鄭鳴皋主編.破碎機(jī)綜述.北京:機(jī)械工業(yè)出版社,2001【5】范祖堯主編.現(xiàn)代機(jī)械設(shè)備設(shè)計(jì)手冊(cè).北京:機(jī)械工業(yè)出版社,1996【6】徐灝主編.機(jī)械設(shè)計(jì)手冊(cè)(第四版).北京:機(jī)械工業(yè)出版社.1991【7】ShigleyJE,UicherJJ.Theoryofmachinesandmechanisms.NewYork:McGraw-HillBookCompany,198024點(diǎn)游戲課程設(shè)計(jì)報(bào)告1基本功能描述24點(diǎn)游戲是一種使用撲克牌來進(jìn)行的益智類游戲,游戲內(nèi)容是:從一副撲克牌中抽去大小王剩下52張,任意抽取4張牌,把牌面上的數(shù)運(yùn)用加、減、乘、除和括號(hào)等進(jìn)行運(yùn)算得出24。每張牌都必須使用一次,但不能重復(fù)使用。在不同版本中,對(duì)J、Q、和K的處理有些差異。一個(gè)常見的版本是把J、Q、和K去除,或當(dāng)成10;還有一個(gè)版本是把J表示11,Q表示12,K代表13。本次課程設(shè)計(jì)采用將J、Q、K去除,使四張牌在1~10這十張牌中隨機(jī)取牌。具體功能如下:[1]由三個(gè)難度級(jí)別數(shù),分別為一級(jí)、二級(jí)和三級(jí)。每次發(fā)牌前可進(jìn)行難度設(shè)置,若不設(shè)置,系統(tǒng)默認(rèn)為難度級(jí)別數(shù)為二級(jí)。難度級(jí)別設(shè)置完后,點(diǎn)擊“發(fā)牌”按鈕,桌面上顯示四張翻開的撲克牌,并且游戲開始計(jì)時(shí),進(jìn)度條開始前進(jìn)。[2]在規(guī)定的時(shí)間內(nèi),用戶可以在輸入算式編輯框中輸入想好的算式,并按下“驗(yàn)算”按鈕。如果不輸入任何數(shù)字和算符,會(huì)彈出“表達(dá)式有問題!”,然后再彈出一個(gè)對(duì)話框,顯示“對(duì)不起,您的輸入不正確!”;如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“對(duì)不起,您的輸入不正確!”;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,就會(huì)出現(xiàn)“Theresultis:!”;如果輸入算式經(jīng)運(yùn)算后所得答案正確,則會(huì)彈出“你做對(duì)了!”。點(diǎn)擊彈出對(duì)話框的確定按鈕,會(huì)出現(xiàn)本輪的用時(shí)和分?jǐn)?shù)。[3]如果在規(guī)定的時(shí)間內(nèi),沒有點(diǎn)擊驗(yàn)算按鈕,則會(huì)彈出一個(gè)對(duì)話框,上面顯示“TimeOver!”。[4]在結(jié)束本輪游戲后,如果用戶想繼續(xù)游戲,點(diǎn)擊“重新發(fā)牌”按鈕即可重新發(fā)牌;如果用戶想結(jié)束游戲,點(diǎn)擊“結(jié)束”按鈕即可結(jié)束游戲。2設(shè)計(jì)思路24點(diǎn)游戲的具體流程圖如下圖1所示,下面對(duì)流程圖進(jìn)行詳細(xì)的說明。在游戲開始前有難度設(shè)置選項(xiàng),用戶可根據(jù)自己的實(shí)際水平進(jìn)行設(shè)置。難度級(jí)別有三個(gè)級(jí)別,分別為一級(jí)、二級(jí)和三級(jí)。三個(gè)級(jí)別是通過時(shí)間來區(qū)別的,級(jí)別越高,可用時(shí)間越少。三個(gè)級(jí)別的對(duì)應(yīng)時(shí)間分別是100秒、60秒和50秒。該設(shè)置不是必選項(xiàng)。如果用戶不設(shè)置,系統(tǒng)默認(rèn)為難度級(jí)別二。按下“發(fā)牌”,游戲開始,通過調(diào)用srand()和rand()函數(shù),桌面上會(huì)隨機(jī)顯示出4張紙牌,這四張牌從1~10這10張牌中隨機(jī)調(diào)出。同時(shí),標(biāo)識(shí)耗時(shí)時(shí)標(biāo)的進(jìn)度條開始前進(jìn)(m_Progress1->SetPos(m_Progress1->GetPos()+1),計(jì)時(shí)同步開始(SpendTime++)。由于三個(gè)等級(jí)設(shè)置的時(shí)間不一樣,進(jìn)度條在三種情況下的步長也不相同。YYNNYNYYN是否設(shè)置難度?一級(jí):m_Hardlevel=100二級(jí):m_Hardlevel=60三級(jí):m_Hardlevel=50系統(tǒng)默認(rèn)難度級(jí)別為二級(jí)m_Hardlevel=60初始化:OnInitDialog()發(fā)牌:srand();rand()計(jì)時(shí)開始:OnTimer()輸入算式,進(jìn)行計(jì)算SubCompute();TotalCompute()m_Progress1->GetPos()>=m_Hardlevel顯示“TimeOver!”AfxMessageBox()OnYanSuan()函數(shù)判斷計(jì)算結(jié)果是否為24?算式為空白:顯示:“表達(dá)式不能為空白!”輸入字符錯(cuò)誤:顯示:“對(duì)不起,你的輸入不正確!”運(yùn)算結(jié)果正確:“你做對(duì)了!”運(yùn)算結(jié)果錯(cuò)誤:顯示:“Theresultis:!”繼續(xù)否?結(jié)束開始圖1圖124點(diǎn)游戲程序流程圖游戲設(shè)置了時(shí)間限制,該設(shè)置是通過比較函數(shù)m_Progress1->GetPos()的返回值和參數(shù)m_Hardlevel的大小。如果函數(shù)的返回值小于參數(shù)m_Hardlevel,代表游戲還沒結(jié)束,用戶還有時(shí)間進(jìn)行思考。否則,本輪游戲結(jié)束,在函數(shù)OnTimer()的作用下,會(huì)彈出對(duì)話“TimeOver!”。若用戶在規(guī)定時(shí)間內(nèi)點(diǎn)擊了“驗(yàn)算”按鈕,系統(tǒng)通過對(duì)SubCompute()和TotalCompute()兩函數(shù)的調(diào)用進(jìn)行相應(yīng)運(yùn)算,緊接著系統(tǒng)調(diào)用OnYanSuan()函數(shù)對(duì)編輯框中運(yùn)算出的結(jié)果進(jìn)行驗(yàn)算,根據(jù)驗(yàn)算情況給出相應(yīng)的結(jié)果。出現(xiàn)的結(jié)果有以下四中情況:(1)如果用戶沒在輸入算式中輸入算式,直接按“驗(yàn)算”按鈕,會(huì)彈出“表達(dá)式不能為空白!”的提示對(duì)話框。(2)如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“你的輸入不正確!”的提示對(duì)話框。(3)如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會(huì)彈出“Theresultis:!”。(4)如果輸入算式經(jīng)運(yùn)算后所得答案正確,則會(huì)彈出“你做對(duì)了!”在以上任意一種情況下,點(diǎn)擊彈出框中的“確定”按鈕,系統(tǒng)會(huì)自動(dòng)給出本局的得分和耗時(shí)。游戲的耗時(shí)使用SSpendTime.Format("%d",SpendTime)這個(gè)函數(shù)進(jìn)行顯示,游戲得分是在綜合考慮游戲級(jí)別、游戲所耗費(fèi)時(shí)間的基礎(chǔ)上給出(m_score=100*(m_Hardlevel-SpendTime)/m_Hardlevel)。于是,本輪游戲結(jié)束。本輪游戲結(jié)束后,用戶可以選擇重新開始,否則,可以點(diǎn)擊“結(jié)束”按鈕退出游戲。3軟件設(shè)計(jì)3.1設(shè)計(jì)步驟24點(diǎn)游戲的具體設(shè)計(jì)步驟如下:[1]創(chuàng)建MFCAppWizard(exe)工程,鍵入對(duì)應(yīng)的工程名(dinglu),在應(yīng)用程序類型中選擇基本對(duì)話框,其余的都采用默認(rèn)選項(xiàng),完成對(duì)話框的創(chuàng)建。[2]通過插入-資源-Bitmap加載圖片,圖片通過拷貝和復(fù)制等操作加載完成。加載完成的圖片在對(duì)應(yīng)的工作區(qū)可以找到,選中對(duì)其名字進(jìn)行修改。在對(duì)話框中添加4個(gè)圖像、9個(gè)按鈕、3個(gè)編輯框、1個(gè)進(jìn)度條和3個(gè)單選按鈕。然后,根據(jù)屬性對(duì)以上所添加的控件進(jìn)行屬性修改,主要是對(duì)其進(jìn)行重命名。圖像內(nèi)的屬性修改除改名外,還要添加位圖。[3]下一步是對(duì)以上控件建立類向?qū)?,主要包括AddFunction、AddVariable和EditCode這三項(xiàng)的添加。[4]在類的原文件中添加實(shí)現(xiàn)功能所需要的各種函數(shù),并添加相應(yīng)的代碼,同時(shí)在頭文件中添加對(duì)各種函數(shù)及變量的聲明。[5]對(duì)完成的程序進(jìn)行保存,然后開始調(diào)試,根據(jù)錯(cuò)誤進(jìn)行修改,直至程序不在報(bào)錯(cuò),并且可以實(shí)現(xiàn)預(yù)計(jì)的各種功能。圖224點(diǎn)游戲運(yùn)行圖3.2界面設(shè)計(jì)24點(diǎn)游戲所用控件說明圖如下:表1控件類型、ID及相關(guān)說明對(duì)象IDCaption或說明變量名進(jìn)程IDC_PROGRESS1耗時(shí)m_Progress1靜態(tài)文本IDC_STATIC靜態(tài)文字說明一級(jí)單選按鈕IDC_RADIO1一級(jí)m_Hardleve二級(jí)單選按鈕IDC_RADIO2二級(jí)三級(jí)單選按鈕IDC_RADIO3三級(jí)位圖IDC_Picture0位圖位圖IDC_Picture1位圖位圖IDC_Picture2位圖位圖IDC_Picture3位圖編輯框IDC_EDIT1輸入計(jì)算m_Edit1編輯框IDC_STATIC10時(shí)間SpendTime編輯框IDC_STATIC11得分m_score按鈕IDC_Start開始按鈕IDC_YanSuan驗(yàn)算續(xù)表對(duì)象IDCaption或說明變量名按鈕IDC_OK退出按鈕IDC_PARENL_BUTTON(按鈕IDC_ADD_BUTTON+按鈕IDC_SUB_BUTTON-按鈕IDC_MUL_BUTTON*按鈕IDC_DEVIDE_BUTTON/按鈕IDC_PARENR_BUTTON)3.3關(guān)鍵功能的實(shí)現(xiàn)3.3.1發(fā)牌功能的實(shí)現(xiàn)首先,通過BOOLCDingluDlg::OnInitDialog()中,根據(jù)紙牌對(duì)應(yīng)的ID號(hào)加載紙牌,例如:Bitmap[7].LoadBitmap(IDB_BITMAP7)這條語句加載標(biāo)有7的紙牌。利用該函數(shù)加載了標(biāo)號(hào)1~10的十張紙牌和兩張背景紙牌。然后運(yùn)行中的以下一段代碼,即可在圖像框中得到四張鋪開的紙牌。代碼如下:srand((int)time(0));for(inti=0;i<4;i++)Number[i]=rand()%13;//產(chǎn)生一個(gè)0—12的隨機(jī)數(shù)((CStatic*)GetDlgItem(IDC_Picture0))->SetBitmap(HBITMAP(Bitmap[Number[0]]));((CStatic*)GetDlgItem(IDC_Picture1))->SetBitmap(HBITMAP(Bitmap[Number[1]]));((CStatic*)GetDlgItem(IDC_Picture2))->SetBitmap(HBITMAP(Bitmap[Number[2]]));((CStatic*)GetDlgItem(IDC_Picture3))->SetBitmap(HBITMAP(Bitmap[Number[3]]));srand(seed)用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed必須是個(gè)整數(shù),通??梢岳胓eypid()或time(0)的返回值來當(dāng)做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。rand的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過是因?yàn)槠渲芷谔貏e長,所以有一定的范圍里可看成是隨機(jī)的,rand()會(huì)返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。rand()產(chǎn)生的是假隨機(jī)數(shù)字,每次執(zhí)行時(shí)是相同的。若要不同,以不同的值來初始化它.初始化的函數(shù)就是srand()。3.3.2計(jì)時(shí)功能的實(shí)現(xiàn)首先,在voidCDingluDlg::OnStart()中,通過m_Progress->SetStep(1)和m_Progress->SetPos(0)設(shè)置進(jìn)度條的步長為1,進(jìn)度條的初始位置居左。然后調(diào)用voidCDingluDlg::OnTimer(UINTnIDEvent)來完成計(jì)時(shí)功能。利用函數(shù)if(m_Progress1->GetPos()>=m_Hardlevel)來判斷即使結(jié)束了沒有,如果括號(hào)中的條件滿足,則計(jì)時(shí)結(jié)束,跳出“TimeOver!”的提示框。如果括號(hào)中的條件不滿足,則執(zhí)行以下代碼:CProgressCtrl*m_Progress1=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);m_Progress1->SetRange(0,m_Hardlevel);m_Progress1->SetPos(m_Progress1->GetPos()+1);//進(jìn)度條前進(jìn)一步上述代碼表示,如果時(shí)間沒到,時(shí)間每流逝1秒,進(jìn)度條就前進(jìn)一步。當(dāng)游戲時(shí)間即將結(jié)束的時(shí)候,進(jìn)度條亦前進(jìn)到最后一步。3.3.3計(jì)算功能的實(shí)現(xiàn)對(duì)于輸入結(jié)果的驗(yàn)算,主要是通過intLastPos(CStringStr),intFirstPos(CStringStr),charFirstF(CStringStr),intSubCompute(CStringStr),intTotalCompute(CStringStr)等函數(shù)來來確定運(yùn)算式各符號(hào)優(yōu)先級(jí)和最終計(jì)算出輸入算式的結(jié)果?,F(xiàn)摘兩段代碼進(jìn)行詳細(xì)說明。代碼1:intPluPos=Str.Find('+')+1;intPos=200;if(PluPos==0)PluPos=200;if(Pos>PluPos)Pos=PluPos;charResult='-';inttempPos=SubPos;if(PluPos<tempPos){Result='+';tempPos=PluPos;}returnResult;代碼1的作用是判斷最先出現(xiàn)的符號(hào)是不是+號(hào)。Pluspos表示+號(hào)出現(xiàn)的位置,如果沒有+號(hào)出現(xiàn),對(duì)pluspos負(fù)一個(gè)不可能的值;如果+號(hào)存在,將pluspos與pos比較大小。如果pluspos小于pos,將pluspos的值負(fù)給pos。pluspos再與tempos比較,如果在減號(hào)之前出現(xiàn),顯示的結(jié)果是+號(hào)。代碼2:intCDingluDlg::TotalCompute(CStringStr){ intFirst=Str.ReverseFind('(')+1; while(First) {CStringSubStr=Str.Mid(First,(Str.GetLength()-First)); intLast=SubStr.Find(')')+1; Last+=First CStringLeft=Str.Mid(0,First-1) CStringMiddle=Str.Mid(First,Last-First-1) CStringRight=Str.Mid(Last,Str.GetLength()-Last) intResult=SubCompute(Middle) Middle.Format("%d",Result); Str=Left+Middle+Right; First=Str.ReverseFind('(')+1; } intResult=SubCompute(Str); returnResult;}代碼2的作用是對(duì)于編輯框中輸入的表達(dá)式進(jìn)行計(jì)算,系統(tǒng)通過Str.ReverseFind('(')+1來反向查找定位第一個(gè)“(”所在的位置。然后通過while循環(huán)查找到表達(dá)式最內(nèi)層的括號(hào),又借助于Str=Left+Middle+Right;將有優(yōu)先級(jí)差別同時(shí)不帶括號(hào)的表達(dá)式傳送到SubCompute()函數(shù)中,最終計(jì)算出輸入到編輯框中的表達(dá)式結(jié)果Result,并將其返回。3.3.4驗(yàn)算功能的實(shí)現(xiàn)1.彈出框的實(shí)現(xiàn)在規(guī)定的時(shí)間內(nèi)輸入算式進(jìn)行驗(yàn)算,根據(jù)不同的情況會(huì)出現(xiàn)不同的對(duì)話框。有以下四種情況:如果用戶沒在輸入算式中輸入算式,直接按“驗(yàn)算”按鈕,會(huì)彈出“表達(dá)式不能為空白!”的提示對(duì)話框;如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“你的輸入不正確!”的提示對(duì)話框;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會(huì)彈出“Theresultis:!”;如果輸入算式經(jīng)運(yùn)算后所得答案正確,則會(huì)彈出“你做對(duì)了!”。具體代碼如下:if(Str==""){MessageBox("表達(dá)式不能為空白!","Warning!",MB_OK);flag=0;}if(Result==24)MessageBox("你輸入正確!","TURE!",MB_OK);由于代碼太長,只摘取不輸入與輸入計(jì)算結(jié)果正確兩種情況進(jìn)行說明。當(dāng)輸入Str為空時(shí),通過MessageBox()顯示“表達(dá)式不能為空白!”。當(dāng)輸入算式正確,判斷計(jì)算結(jié)果Result==24,通過MessageBox()顯示“你輸入正確!”。當(dāng)輸入字符有錯(cuò),通過一段很長的程序判斷,然后通過MessageBox()顯示“你輸入的不正確!”。2.等分功能的實(shí)現(xiàn)當(dāng)用戶在每局游戲結(jié)束后,如果沒有計(jì)算出正確結(jié)果,得分會(huì)顯示為0分;如果計(jì)算出了正確結(jié)果,則會(huì)顯示一個(gè)0~100之間的整數(shù)值。用戶最終得分的確定是由其選擇的游戲級(jí)別和游戲所花費(fèi)時(shí)間長短來確定的。實(shí)現(xiàn)代碼如下:if(Result==24){CStringSscore; m_score=100*(m_Hardlevel-SpendTime)/m_Hardlevel;Sscore.Format("%d",m_score); GetDlgItem(IDC_STATIC11)->SetWindowText(""+Sscore+"分");UpdateData(FALSE);}OnYanSuan()函數(shù)來對(duì)編輯框中運(yùn)算出的結(jié)果進(jìn)行驗(yàn)算,如果Result==24,則if語句被執(zhí)行。語句m_score=100*(m_Hardlevel-SpendTime)/m_Hardlevel;說明用戶花費(fèi)時(shí)間越長或者游戲剩余時(shí)間占總時(shí)間比重越小,則本局游戲得分也相應(yīng)越小。而通過語句Sscore.Format("%d",m_score);的作用則將int量m_score轉(zhuǎn)換為Cstring量Sscore。同時(shí),SetWindowText()函數(shù)發(fā)揮作用,顯示出分?jǐn)?shù)Sscore。4結(jié)論與心得體會(huì)VC++的課程設(shè)計(jì)終于接近尾聲了,又到了寫課程設(shè)計(jì)報(bào)告的時(shí)間了。這次課設(shè)比以往的課設(shè)任務(wù)重、安排緊。之所以這么安排,我是這么理解的,這次安排單片機(jī)的課設(shè)是為了鞏固上課所學(xué)的知識(shí),將其應(yīng)用到實(shí)踐中來,好歹也是這學(xué)期學(xué)的。至于安排VC++的課設(shè),我開始是很不能理解,因?yàn)槲覀兪谴蠖蠈W(xué)期學(xué)的,丟了快一年了,現(xiàn)在做課設(shè)又得重新將它撿起來,這很費(fèi)時(shí)間。后來做完課設(shè),看著自己的游戲界面,可以像平時(shí)玩的小游戲一樣玩,感覺還挺自豪的,覺得這一星期沒有白過。這一星期走來,我感受頗多,大約有以下幾點(diǎn):首先,這次課設(shè)對(duì)VC+起到溫故知新的作用。課程設(shè)計(jì)之初,思路全無,舉步維艱,對(duì)于理論知識(shí)學(xué)習(xí)不夠扎實(shí)的我深感“書到用時(shí)方恨少”。于是,重新?lián)炱鹫n本,對(duì)照課本基本控件這一章,將計(jì)算器和菜單欄制作這兩個(gè)范例做了幾遍。對(duì)于進(jìn)程條的設(shè)置不清楚,又找同學(xué)復(fù)制了以前的課件來看,經(jīng)與同學(xué)的再三討論,終于弄清了進(jìn)程條的設(shè)置。至于編程這一塊,那是忘得更多了,于是又借了基本參考書來看,遇到難處先是仔細(xì)的思考然后在向同學(xué)請(qǐng)教??梢哉f開始的那么幾天都是在查找資料,翻閱相關(guān)的書籍。其次,這次課設(shè)讓我明白了實(shí)踐出真理的道理。最初答辯弄完后,還有一些程序不知道怎么寫。于是,又從網(wǎng)上收集相關(guān)程序,經(jīng)分析、查詢資料仍有一些地方看不懂。只能采用嘗試往對(duì)話框中添加相應(yīng)代碼的方法。根據(jù)一大段的分析,感覺程序執(zhí)行某個(gè)功能,將這段代碼添加到對(duì)應(yīng)位置。所有的代碼添加完后,運(yùn)行、調(diào)試,開始會(huì)有很多錯(cuò)誤出現(xiàn)。我記得最多的時(shí)候有63個(gè)錯(cuò)誤,逐條進(jìn)行修改,再進(jìn)行運(yùn)行和調(diào)試。也不知道改了多少次和重做了多少次,終于做出了完美的游戲界面。再者,讓我學(xué)會(huì)了如何創(chuàng)新。得到游戲界面后,我又從網(wǎng)上下了幾個(gè)24點(diǎn)游戲與我的相比較。相比較發(fā)現(xiàn),網(wǎng)上的游戲出牌比較合理,我的游戲出牌很雜亂,很多情況都是無解,我也相應(yīng)做了調(diào)整。再者,我發(fā)現(xiàn)很多游戲都是倒計(jì)時(shí),我也進(jìn)行了嘗試。除此,我發(fā)現(xiàn)有些游戲也加了四張牌的按鈕,一發(fā)牌,對(duì)應(yīng)的牌就顯示在快捷鍵上,這點(diǎn)我也做了嘗試。以上三點(diǎn),就是我關(guān)于本次課設(shè)的創(chuàng)新,雖然最后沒能實(shí)現(xiàn),但這個(gè)過程的實(shí)踐是快樂的,代表我開動(dòng)了腦筋。最后,這是一場毅力的考驗(yàn)。課設(shè)開始給人感覺很難,但很慶幸我們都沒有畏懼,還是盡力去查資料、想辦法解決。怎么說,“態(tài)度決定一切”,我們終于跨越了這道障礙,圓滿完成了課設(shè)。5參考文獻(xiàn)[1]劉於勛等.C++程序設(shè)計(jì).科學(xué)出版社,2007[2]榮欽科技.VisualC++游戲編程基礎(chǔ).電子工業(yè)出版社,2004[3]揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐.西安電子科技大學(xué)出版社,2005[4]羅偉堅(jiān).VisualC++經(jīng)典游戲程序設(shè)計(jì).人民郵電出版社,20066思考題1.改變難度可以變化游戲的限時(shí)和游戲加分的規(guī)則,如何實(shí)現(xiàn)?游戲的限時(shí)是通過對(duì)進(jìn)度條的設(shè)置來實(shí)現(xiàn)的,通過定義一個(gè)m_Hardlevel變量之后,用它來設(shè)置進(jìn)度條的范圍(SetRange(0,m_Hardlevel);),即當(dāng)用戶選擇不同級(jí)別的游戲時(shí),進(jìn)度條的范圍會(huì)隨著m_Hardlevel的值而不同,游戲難度越大,m_Hardlevel的值越?。ū居螒蛑泄苍O(shè)置了100秒、60秒、50秒三個(gè)級(jí)別),時(shí)間也就越短,反之時(shí)間越長。游戲的加分規(guī)則綜合考慮了用戶選擇的游戲級(jí)別和一局游戲所花費(fèi)時(shí)間的長短,即:m_score=100*(m_Hardlevel-SpendTime)/m_Hardlevel;也就是說難度的選擇和用戶所用時(shí)間同時(shí)決定最后的得分。2.如何保證程序是根據(jù)給出的牌來書寫算式的?答:首先通過每張紙牌的ID號(hào),將它們加載到Bitmap[]中,通過隨機(jī)函數(shù)得到四個(gè)隨機(jī)數(shù)之后,亦即得到四張系統(tǒng)隨機(jī)發(fā)放的紙牌;然后利用指針將得到的紙牌在voidCDingluDlg::OnStart()中進(jìn)行相應(yīng)設(shè)置;最后在voidCDingluDlg::OnYanSuan()中,通過Mid()和intm=(int)(int)(strtod(Mul1.GetBuffer(Mul1.GetLength()),&stopstring));獲取用戶輸入到編輯框中的數(shù)據(jù),將m和Number[i]進(jìn)行比較,從而最終確保程序是根據(jù)給出的牌來書寫算式的。3.如何使用隨機(jī)函數(shù)控制撲克牌的顯示?答:首先在BOOLCDingluDlg::OnInitDialog()中,用紙牌對(duì)應(yīng)的ID號(hào)對(duì)紙牌進(jìn)行加載(如Bitmap[12].LoadBitmap(IDB_BITMAP12)),然后在voidCDingluDlg::OnStart()中,利用srand((int)time(0));和Number[i]=rand()%13;兩條語句選出相對(duì)應(yīng)的四張紙牌,即可得到隨機(jī)發(fā)放的四張撲克牌了。7附錄7.1調(diào)試報(bào)告7.1.1變量未定義造成錯(cuò)誤在代碼添加過程中,由于涉及很多的函數(shù)和變量,可能會(huì)出現(xiàn)某幾個(gè)變量忘定義的情況,這些變量有可能是在頭文件中忘記定義或者在某個(gè)函數(shù)體中忘記定義。下面舉一個(gè)在頭文件中變量忘定義的例子,如下所示:圖3因變量未定義而出現(xiàn)的錯(cuò)誤截面圖在添加完各個(gè)函數(shù)的代碼完畢后,以為頭文件會(huì)自動(dòng)對(duì)相應(yīng)得變量進(jìn)行定義,但頭文件沒有對(duì)所有的變量都定義,才出現(xiàn)了如上圖所示的錯(cuò)誤。打開頭文件,雙擊dingluDlg.h,在classCDingluDlg:publicCdialog類定義函數(shù)中添加對(duì)m_Hardlevel參數(shù)的定義。添加完畢后,程序不再報(bào)這個(gè)錯(cuò)誤。7.1.2關(guān)鍵類未添加在畫圖對(duì)話框中,擺好各種控件后,逐一對(duì)每個(gè)控件添加類向?qū)?。?duì)話框中出現(xiàn)的控件一般都不會(huì)忘記建立類向?qū)?,但有1個(gè)類向?qū)侨菀淄浀?,它是IDC_PROGRESS1建立的類向?qū)Q是OnOutofmemoryProgress1。下面用圖形表示這個(gè)錯(cuò)誤,如下所示:根據(jù)錯(cuò)誤提示,重新選中圖片,建立OnOutofmemoryProgress1的類向?qū)?。建立完畢后,重新運(yùn)行程序,不再提示開錯(cuò)誤。圖4因關(guān)鍵類未添加而出現(xiàn)的錯(cuò)誤截面圖7.1.3進(jìn)度條錯(cuò)誤類導(dǎo)向和代碼添加完后,運(yùn)行程序,出現(xiàn)游戲界面。點(diǎn)擊游戲界面內(nèi)的“發(fā)牌”按鈕,出現(xiàn)四張撲克展開,但是沒過2秒鐘跳出“TimeOver!”對(duì)話框,并且進(jìn)度條不動(dòng)。下面用圖形表示這個(gè)錯(cuò)誤,如下圖所示:圖5進(jìn)度條設(shè)置錯(cuò)誤而出現(xiàn)的錯(cuò)誤截面圖這個(gè)錯(cuò)誤可能是計(jì)時(shí)時(shí)間設(shè)置的太短,進(jìn)度條的步長設(shè)置的不合理。重新設(shè)置計(jì)時(shí)時(shí)間范圍和進(jìn)度條步長,然后運(yùn)行程序,錯(cuò)誤仍然存在。再從頭到尾把程序檢查一遍,做相應(yīng)修改,再運(yùn)行,錯(cuò)誤仍然存在。于是將所有類刪除后重新添加,并且添加相應(yīng)程序,重新運(yùn)行,錯(cuò)誤消失。7.2測(cè)試結(jié)果7.2.1在規(guī)定時(shí)間內(nèi)完成點(diǎn)擊“驗(yàn)算”按鈕操作測(cè)試過程中,由于既涉及到紙牌點(diǎn)數(shù)和運(yùn)算符,又會(huì)涉及到運(yùn)算式結(jié)果,于是相應(yīng)地會(huì)顯示出四種結(jié)果,分別是:如果用戶沒在輸入算式中輸入算式,直接按“驗(yàn)算”按鈕,會(huì)彈出“表達(dá)式不能為空白!”的提示對(duì)話框;如果輸入的數(shù)字與給出的不符或者符號(hào)不合法,會(huì)彈出“你的輸入不正確!”的提示對(duì)話框;如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,會(huì)彈出“Theresultis:!”;如果輸入算式經(jīng)運(yùn)算后所得答案正確,則會(huì)彈出“你做對(duì)了!”。下面用圖形做相應(yīng)說明:[1]輸入算式為空,點(diǎn)擊“驗(yàn)算”,顯示“表達(dá)式不能為空白!”,如下圖所示:圖6輸入表達(dá)式為空而出現(xiàn)的游戲界面[2]輸入的數(shù)字與給出的不符或者符號(hào)不合法,點(diǎn)擊“驗(yàn)算”,會(huì)彈出“你的輸入不正確!”,如下圖所示:圖7輸入字符錯(cuò)誤而出現(xiàn)的游戲界面[3]如果輸入的數(shù)字與四張牌相符、字符亦合法但是答案不正確,點(diǎn)擊“驗(yàn)算”,會(huì)彈出“Theresultis:!”,如下圖所示:圖8輸入字符正確而運(yùn)算結(jié)果不正確出現(xiàn)的游戲界面[4]如果輸入算式經(jīng)運(yùn)算后所得答案正確,點(diǎn)擊“驗(yàn)算”,則會(huì)彈出“你做對(duì)了!”,如下圖所示:圖9輸入結(jié)果正確而出現(xiàn)的游戲界面7.2.2在規(guī)定時(shí)間內(nèi)未完成點(diǎn)擊“驗(yàn)算”按鈕操作規(guī)定時(shí)間內(nèi)未進(jìn)行輸入,或輸入后未完成點(diǎn)擊“驗(yàn)算”按鈕操作,顯示“TimeOver!”,如下圖所示:7.3關(guān)鍵源代碼BOOLCDingluDlg::OnInitDialog()/程序初始化{ CDialog::OnInitDialog(); Bitmap[0].LoadBitmap(IDB_BITMAP13);//為紙牌圖片的數(shù)組加載13張初始圖像Bitmap[1].LoadBitmap(IDB_BITMAP1);Bitmap[2].LoadBitmap(IDB_BITMAP2); Bitmap[3].LoadBitmap(IDB_BITMAP3);Bitmap[4].LoadBitmap(IDB_BITMAP4);Bitmap[5].LoadBitmap(IDB_BITMAP5);Bitmap[6].LoadBitmap(IDB_BITMAP6); Bitmap[7].LoadBitmap(IDB_BITMAP7);Bitmap[8].LoadBitmap(IDB_BITMAP8); Bitmap[9].LoadBitmap(IDB_BITMAP9); Bitmap[10].LoadBitmap(IDB_BITMAP10); Bitmap[11].LoadBitmap(IDB_BITMAP11); Bitmap[12].LoadBitmap(IDB_BITMAP12);CProgressCtrl*m_Progress1=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);/設(shè)置時(shí)間的指針m_Progress1->SetRange(0,1000);/設(shè)置進(jìn)度條的取值范圍 m_Progress1->SetPos(0);//設(shè)置進(jìn)度條的初值GetDlgItem(IDC_YanSuan)->EnableWindow(FALSE);/使驗(yàn)算按鈕無效CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO2);/測(cè)試選中的難度級(jí)別UpdateData(FALSE);/難度級(jí)別顯示voidCDingluDlg::OnStart()/發(fā)牌代碼{ S=1; m_Edit1=_T("");/對(duì)編輯框清空 m_score=0;/將等分初始化為0 UpdateData(FALSE);/用負(fù)給控件變量的值來刷新控件,讓控件把操作后的變量顯示出srand((int)time(0));/以(int)time(0)做為srand()函數(shù)的種子seed for(inti=0;i<4;i++)/應(yīng)用for語句來為四張牌賦值Number[i]=rand()%13;/產(chǎn)生一個(gè)0—12的隨機(jī)數(shù)((CStatic*)GetDlgItem(IDC_Picture0))->SetBitmap(HBITMAP(Bitmap[Number[0]]));((CStatic*)GetDlgItem(IDC_Picture1))->SetBitmap(HBITMAP(Bitmap[Number[1]]));((CStatic*)GetDlgItem(IDC_Picture2))->SetBitmap(HBITMAP(Bitmap[Number[2]]));((CStatic*)GetDlgItem(IDC_Picture3))->SetBitmap(HBITMAP(Bitmap[Number[3]]));/將隨機(jī)產(chǎn)生的四張圖片加載在四張撲克牌位置 GetDlgItem(IDC_Start)->SetWindowText("重新開始");/將“發(fā)牌”按鈕的名字改為“重新開始” GetDlgItem(IDC_YanSuan)->EnableWindow(TRUE);/使驗(yàn)算按鈕被鼠標(biāo)點(diǎn)擊有效 /設(shè)置三個(gè)難度級(jí)別intiRADIO=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3); if(iRADIO==IDC_RADIO1){m_Hardlevel=100;}/一級(jí),允許時(shí)間為100秒elseif(iRADIO==IDC_RADIO2){m_Hardlevel=60;}/二級(jí),允許時(shí)間為60秒 elseif(iRADIO==IDC_RADIO3){m_Hardlevel=50;}/三級(jí),允許時(shí)間為50秒CProgressCtrl*m_Progress=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);/定義進(jìn)度條指針變量m_Progressm_Progress->SetStep(1);//設(shè)置步長值為1m_Progress->SetPos(0);//進(jìn)度條初始位置居左SetTimer(1,1000,NULL);/設(shè)置計(jì)時(shí)器,每隔1秒發(fā)出一個(gè)消息映射 SpendTime=0;/游戲耗時(shí)初始化為0GetDlgItem(IDC_RADIO1)->EnableWindow(FALSE);/游戲開始后,難度選擇按鈕禁用GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);GetDlgItem(IDC_RADIO3)->EnableWindow(FALSE); }voidCDingluDlg::OnTimer(UINTnIDEvent){if(nIDEvent==1)/判斷計(jì)時(shí)器 { CProgressCtrl*m_Progress1=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);/定義進(jìn)度條指針變量m_progress1 m_Progress1->SetPos(m_Progress1->GetPos()+1);/進(jìn)度條前進(jìn)一步 m_Progress1->SetRange(0,m_Hardlevel);/進(jìn)度條的變化范圍在0與m_Hardlevel之間 if(m_Progress1->GetPos()>=m_Hardlevel)/計(jì)時(shí)是否結(jié)束的判斷語句 { KillTimer(nIDEvent);/計(jì)時(shí)停止 AfxMessageBox("TimeOver!",MB_OK);/顯示“TimeOver!”對(duì)話框GetDlgItem(IDC_YanSuan)->EnableWindow(FALSE);/使驗(yàn)算按鈕無效GetDlgItem(IDC_RADIO1)->EnableWindow(TRUE);GetDlgItem(IDC_RADIO2)->EnableWindow(TRUE);GetDlgItem(IDC_RADIO3)->EnableWindow(TRUE);/使三個(gè)難度級(jí)別按鈕無效 } } SpendTime++;/時(shí)間的流逝,執(zhí)行一次,自加一次 CStringSSpendTime;/定義指針變量SSpendTime SSpendTime.Format("%d",SpendTime);/輸出SSpendTime字符串中的內(nèi)容 GetDlgItem(IDC_EDIT3)->SetWindowText(""+SSpendTime+"秒");/顯示時(shí)鐘秒的時(shí)間 CStringSscore;/定義指針變量SscoreSscore.Format("%d",m_score);/輸出字符串Sscore中的內(nèi)容GetDlgItem(IDC_EDIT4)->SetWindowText(""+Sscore+"分");/顯示時(shí)鐘分的時(shí)間 CDialog::OnTimer(nIDEvent); }/判斷最先出現(xiàn)的符號(hào)是+號(hào)、-號(hào)、*號(hào)還是/號(hào)charCDingluDlg::FirstF(CStringStr){ intSubPos=Str.Find('-')+1;/從字符串Str中查找減號(hào)的位置 intPluPos=Str.Find('+')+1;/從字符串Str中查找加號(hào)的位置 intMulPos=Str.Find('*')+1;/從字符串Str中查找乘號(hào)的位置 intDivPos=Str.Find('/')+1;/從字符串Str中查找除號(hào)的位置 intPos=200;/設(shè)定一個(gè)變量,并賦初值200 if(SubPos==0) SubPos=200;/如果沒有減號(hào),給SubPos賦一個(gè)不可能的值 if(PluPos==0) PluPos=200;/如果沒有加號(hào),給PluPos賦一個(gè)不可能的值 if(MulPos==0) MulPos=200;/如果沒有乘號(hào),給MulPos賦一個(gè)不可能的值 if(DivPos==0) DivPos=200;/如果沒有除號(hào),給DivPos賦一個(gè)不可能的值 if(Pos>SubPos) Pos=SubPos;/減號(hào)存在,并且把SubPos的值賦給Posif(Pos>PluPos) Pos=PluPos;/加號(hào)存在,并且把PlusPos的值賦給Pos if(Pos>MulPos) Pos=MulPos;/乘號(hào)存在,并且把MulPos的值賦給Pos if(Pos>DivPos) Pos=DivPos;/除號(hào)存在,并且把DivPos的值賦給Pos charResult='-';/將'-'賦給Result inttempPos=SubPos;/定義變量tempPos,并將SubPos的值賦給tempPos if(PluPos<tempPos) { Result='+'; tempPos=PluPos;/如果+號(hào)在-號(hào)之前出現(xiàn),Result的值為'+' } if(MulPos<tempPos) { Result='*'; tempPos=MulPos;/如果*號(hào)在-號(hào)之前出現(xiàn),Result的值為'*' } if(DivPos<tempPos) { Result='/'; tempPos=DivPos;/如果/號(hào)在-號(hào)之前出現(xiàn),Result的值為'/' } returnResult;/將Result的值返回}/定位第一個(gè)算術(shù)符號(hào)的位置intCDingluDlg::FirstPos(CStringStr) { intSubPos=Str.Find('-')+1;/從字符串Str中查找減號(hào)的位置 intPluPos=Str.Find('+')+1;/從字符串Str中查找加號(hào)的位置 intMulPos=Str.Find('*')+1;/從字符串Str中查找乘號(hào)的位置 intDivPos=Str.Find('/')+1;/從字符串Str中查找除號(hào)的位置 intPos=200; if(SubPos==0)/如果沒有-號(hào) SubPos=200;/將SubPos設(shè)置成一個(gè)不可能的值 if(PluPos==0)/如果沒有+號(hào) PluPos=200;/將PluPos設(shè)置成一個(gè)不可能的值 if(MulPos==0)/如果沒有*號(hào) MulPos=200;/將MulPos設(shè)置成一個(gè)不可能的值 if(DivPos==0)/如果沒有/號(hào) DivPos=200;/將DivPos設(shè)置成一個(gè)不可能的值 if(Pos>SubPos) Pos=SubPos;/減號(hào)存在,并且把SubPos的值賦給Posif(Pos>PluPos) Pos=PluPos;/加號(hào)存在,并且把PlusPos的值賦給Pos if(Pos>MulPos) Pos=MulPos;/乘號(hào)存在,并且把MulPos的值賦給Pos if(Pos>DivPos) Pos=DivPos;/除號(hào)存在,并且把DivPos的值賦給Pos returnPos;/將Pos的值返回 }/定位最后一個(gè)算術(shù)符號(hào)的位置intCDingluDlg::LastPos(CStringStr) { intSubPos=Str.ReverseFind('-')+1;/從字符串Str中查找減號(hào)的位置 intPluPos=Str.ReverseFind('+')+1;/從字符串Str中查找加號(hào)的位置 intMulPos=Str.ReverseFind('*')+1;/從字符串Str中查找乘號(hào)的位置 intDivPos=Str.ReverseFind('/')+1;/從字符串Str中查找除號(hào)的位置 intPos=SubPos;/定義變量Pos,并給它賦初值 if(Pos<PluPos)/通過以下條件更改Pos的值 Pos=PluPos; if(Pos<MulPos) Pos=MulPos; if(Pos<DivPos) Pos=DivPos; returnPos;/返回Pos的值 }intCDingluDlg::SubCompute(CStringStr){ CStringMiddle=""; CStringMul2=""; CStringRight="";/定義三個(gè)變量,Middle、Mul2、Right intMulPos=Str.Find('*')+1;/定義*號(hào)的位置 intDivPos=Str.Find('/')+1;/定義/號(hào)的位置 intFirst=MulPos; if(MulPos>DivPos) First=DivPos;/如果/號(hào)在*號(hào)之前出現(xiàn),將DivPos的值送給First if(DivPos==0&&MulPos!=0) { First=MulPos; DivPos=2000;/除號(hào)不存在,并且乘號(hào)存在,將MulPos的值送給First,并且將DivPos設(shè)為不可能值 } if(MulPos==0&&DivPos!=0) { First=DivPos; MulPos=2000;/乘號(hào)不存在,并且除號(hào)存在,將DivPos的值送給First,并且將MulPos設(shè)為不可能值} while(First) { CStringtempStr=Str.Mid(0,First-1);inttemp=LastPos(tempStr); CStringLeft=Str.Mid(0,temp); CStringMul1=Str.Mid(temp,First-temp-1); tempStr=Str.Mid(First,Str.GetLength()-First); temp=FirstPos(tempStr); if(temp==200) {Mul2=tempStr; Right=""; } else { Mul2=tempStr.Mid(0,temp-1); Right=tempStr.Mid(temp-1,tempStr.GetLength()-temp+1); } if(MulPos>DivPos) Middle.Format("%d",(int)(strtod(Mul1.GetBuffer(Mul1.GetLength()),&stopstring)/ strtod(Mul2.GetBuffer(Mul2.GetLength()),&stopstring))); elseMiddle.Format("%d",(int)(strtod(Mul1.GetBuffer(Mul1.GetLength()),&stopstring)* strtod(Mul2.GetBuffer(Mul2.GetLength()),&stopstring))); Str=Left+Middle+Right; MulPos=Str.Find('*')+1; DivPos=Str.Find('/')+1;First=MulPos; if(MulPos>DivPos) First=DivPos; if(DivPos==0&&MulPos!=0) {First=MulPos; DivPos=2000;}/將除號(hào)所在位置設(shè)置成一個(gè)大于MulPos但又不可能的值 if(MulPos==0&&DivPos!=0) {First=DivPos; MulPos=2000;}/將乘號(hào)所在的位置設(shè)置成一個(gè)大于DivPos但不可能的值 }/定位+號(hào)、-號(hào)首先出現(xiàn)的位置 First=FirstPos(Str); if(First==200)/如果沒有+號(hào)、-號(hào),則可以直接返回結(jié)果 return(int)strtod(Str.GetBuffer(Str.GetLength()),&stopstring); charFuhao=FirstF(Str);/確定首先出現(xiàn)的符號(hào)是+號(hào)還是-號(hào) while(First) {/如果找到+號(hào)或-號(hào) CStringtempStr=Str.Mid(0,First-1);inttemp=LastPos(tempStr); CStringLeft=Str.Mid(0,temp); CStringMul1=Str.Mid(temp,First-temp-1);tempStr=Str.Mid(First,Str.GetLength()-First); temp=FirstPos(tempStr); if(temp==200) {Mul2=tempStr;Right="";} else {Mul2=tempStr.Mid(0,temp-1);Right=tempStr.Mid(temp-1,tempStr.GetLength()-temp+1);} if(Fuhao=='+') Middle.Format("%d",(int)(strtod(Mul1.GetBuffer(Mul1.GetLength()),&stopstring)+ strtod(Mul2.GetBuffer(Mul2.GetLength()),&stopstring))); elseMiddle.Format("%d",(int)(strtod(Mul1.GetBuffer(Mul1.GetLength()),&stopstring)- strtod(Mul2.GetBuffer(Mul2.GetLength()),&stopstring))); Str=Left+Middle+Right; First=FirstPos(Str); if(First==200)break; Fuhao=FirstF(Str);} return(int)strtod(Middle.GetBuffer(Middle.GetLength()),&stopstring);}/用于計(jì)算表達(dá)式的結(jié)果intCDingluDlg::TotalCompute(CStringStr){ intFirst=Str.ReverseFind('(')+1; while(First) {CStringSubStr=Str.Mid(First,(Str.GetLength()-First)); intLast=SubStr.Find(')')+1; Last+=First;/定位最后一個(gè)(號(hào)以后的最開始的)號(hào)位置 CStringLeft=Str.Mid(0,First-1);/(號(hào)左邊的字符串 CStringMiddle=Str.Mid(First,Last-First-1);/()號(hào)中間的字符串 CStringRight=Str.Mid(Last,Str.GetLength()-Last);/()號(hào)右邊的字符串 intResult=SubCompute(Middle);/進(jìn)入下面的計(jì)算 Middle.Format("%d",Result); Str=Left+Middle+Right; First=Str.ReverseFind('(')+1; } intResult=SubCompute(Str); returnResult;}voidCDingluDlg::OnYanSuan(){KillTimer(1);/點(diǎn)擊驗(yàn)算按鈕后停止計(jì)時(shí) UpdateData();/數(shù)據(jù)刷新 intflag=1;/設(shè)置變量flag,作為后續(xù)程序的判斷標(biāo)準(zhǔn)CStringStr=m_Edit1;intFirst=Str.ReverseFind('(')+1;while(First) {CStringSubStr=Str.Mid(First,(Str.GetLength()-First)); intLast=SubStr.Find(')')+1; Last+=First; CStringLeft=Str.Mid(0,First-1); CStringMiddle=Str.Mid(First,Last-First-1); CStringRight=Str.Mid(Last,Str.GetLength()-Last); Str=Left+Mid
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版烤鴨店學(xué)員培訓(xùn)學(xué)費(fèi)支付合同范本3篇
- 2024年版藝術(shù)區(qū)參觀文化交流協(xié)議3篇
- 2025版跨境電商股權(quán)投資與增資合作協(xié)議3篇
- 2025版金融資產(chǎn)證券化項(xiàng)目合作協(xié)議3篇
- 2024年車輛使用授權(quán)書(免責(zé))3篇
- 2025版鋼構(gòu)制造勞務(wù)分包技術(shù)培訓(xùn)合同樣本2篇
- 2025年上海市二手房買賣合同違約責(zé)任與賠償范本3篇
- 2024年版物業(yè)交易全程委托代理協(xié)議
- 2024年翡翠工藝品購銷合同
- 2025版環(huán)境治理工程款抵頂土地開發(fā)合作合同2篇
- [玻璃幕墻施工方案]隱框玻璃幕墻施工方案
- 中聯(lián)QY100T汽車吊主臂起重性能表
- 支付寶手持承諾函
- 國航因私免折票系統(tǒng)
- 三相自耦變壓器設(shè)計(jì)模版
- 國家開放大學(xué)電大本科《管理案例分析》2023-2024期末試題及答案(試卷代號(hào):1304)
- 生產(chǎn)安全事故的應(yīng)急救援預(yù)案
- 行業(yè)場所從業(yè)人員登記表
- 二面角的求法---三垂線法
- 煤礦井下供電設(shè)計(jì)課件
- 結(jié)構(gòu)化教學(xué)解讀PPT課件
評(píng)論
0/150
提交評(píng)論