版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
淮海工學(xué)院計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:面向?qū)ο笳n程設(shè)計(jì)選題名稱:益智類小游戲——俄羅斯方塊姓名:苦茶(筆名)學(xué)號(hào):************專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)G計(jì)111系院):計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間:2013.6.17~2013.6.30設(shè)計(jì)地點(diǎn):計(jì)算機(jī)樓204機(jī)房成績(jī):指導(dǎo)教師評(píng)語(yǔ):成績(jī):簽名:年月日面向?qū)ο笳n程設(shè)計(jì)報(bào)告第33頁(yè),共33頁(yè)
1.課程設(shè)計(jì)目的《面向?qū)ο蟪绦蛟O(shè)計(jì)》是一門實(shí)踐性很強(qiáng)的計(jì)算機(jī)專業(yè)基礎(chǔ)課程,課程設(shè)計(jì)是學(xué)習(xí)完該課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于通過(guò)實(shí)踐加深學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的理論、方法和基礎(chǔ)知識(shí)的理解,掌握使用Java語(yǔ)言進(jìn)行面向?qū)ο笤O(shè)計(jì)的基本方法,提高運(yùn)用面向?qū)ο笾R(shí)分析實(shí)際問(wèn)題、解決實(shí)際問(wèn)題的能力。2.課程設(shè)計(jì)任務(wù)與要求:課程設(shè)計(jì)可選用NetBeans、Eclipse、JBuilder等作為開(kāi)發(fā)平臺(tái)以提高開(kāi)發(fā)效率,盡可能熟練掌握其中一種集成開(kāi)發(fā)環(huán)境。建議采用UML建模技術(shù)進(jìn)行系統(tǒng)的分析設(shè)計(jì),在Visio中畫出系統(tǒng)用例圖和類圖,并將UML圖復(fù)制到設(shè)計(jì)報(bào)告中。通過(guò)這次設(shè)計(jì),要求掌握以下內(nèi)容:面向?qū)ο蠹夹g(shù)中的繼承與多態(tài)(重載和覆蓋)機(jī)制、各種修飾符的使用類、包、接口的定義與使用常用工具類與算法的實(shí)現(xiàn)(數(shù)組、向量、字符串、鏈表)Java常用標(biāo)準(zhǔn)GUI組件及其事件處理Java的異常處理機(jī)制Java的數(shù)據(jù)庫(kù)連接技術(shù)Java的多線程技術(shù)與動(dòng)畫制作Java的網(wǎng)絡(luò)編程
3.課程設(shè)計(jì)說(shuō)明書流程圖:(主界面)游戲界面:游戲:文字說(shuō)明:主界面做了五個(gè)按鈕,分別是創(chuàng)建用戶、開(kāi)始游戲、游戲記錄、游戲設(shè)置和退出。其中創(chuàng)建用戶和游戲記錄是和數(shù)據(jù)庫(kù)有關(guān)的事件,游戲設(shè)置里面有三個(gè)單選框設(shè)置游戲的難度,退出按鈕不解釋。游戲界面是重點(diǎn)制作的界面,使用擴(kuò)展JPanel面板繪制游戲主界面,以20像素為一個(gè)單位,做成10*18的矩形框,添加相應(yīng)的按鈕如圖。首先用一個(gè)4*4的二維數(shù)組制定7個(gè)方塊,有圖像為1反之為0,在用隨機(jī)函數(shù)Randomran=newRandom(7);產(chǎn)生0~6的隨機(jī)數(shù)用switch語(yǔ)句產(chǎn)生相應(yīng)的方塊,在用paintComponent(Graphicsg)方法畫出產(chǎn)生的方塊。解決了方塊問(wèn)題隨之而來(lái)的就是如何讓它移動(dòng),加入implementsKeyListener的接口實(shí)現(xiàn)鍵盤輸入控制方塊的移動(dòng),但在這之前必須加入焦點(diǎn)事件。這里面還加入了時(shí)間監(jiān)聽(tīng)方法為了是讓方塊每隔多長(zhǎng)時(shí)間下落一個(gè)單位。移動(dòng)的問(wèn)題解決了就會(huì)發(fā)現(xiàn)只要在界面里移動(dòng)都是可以的,所以必須給方塊的移動(dòng)加上范圍,讓它不能出黑邊矩形框,那么如何判斷方塊是否出界呢?很簡(jiǎn)單只用記住產(chǎn)生方塊的二維數(shù)組的二維坐標(biāo)就能輕易解決,判斷if(x<-3||x>=7||y<0||y>=18)如果符合要求那么說(shuō)明方塊出界,應(yīng)該回返false讓方塊不能執(zhí)行down()方法。這時(shí)你會(huì)發(fā)現(xiàn)新的方塊會(huì)落在舊的方塊以占據(jù)的位置,解決這個(gè)問(wèn)題的方法就是重新創(chuàng)建一個(gè)10*18的二維數(shù)組,一旦方塊落在就用這個(gè)二維數(shù)組記下方塊落下的坐標(biāo),賦值為1,在判斷邊界的的方法里在增加一個(gè)判斷語(yǔ)句就是判斷將要落下的坐標(biāo)是否在10*18的二維數(shù)組中值為1如果為1不執(zhí)行down()方法,產(chǎn)生新的方塊。以上問(wèn)題解決了,只要解決旋轉(zhuǎn)和消行那么俄羅斯方塊小游戲基本完成了。首先看看如何翻轉(zhuǎn),其實(shí)也很簡(jiǎn)單,這里我們使用中心順時(shí)針旋轉(zhuǎn),主要算法初中就涉及過(guò)就是坐標(biāo)相互交換具體實(shí)現(xiàn)語(yǔ)句為:round[i].x=x0-y0+fang[i].y; round[i].y=x0+y0-fang[i].x;然后重新制定方塊的坐標(biāo)repaint()就好了。再說(shuō)消行之前用到的10*18的二維數(shù)組現(xiàn)在排上大用場(chǎng)了,這里使用二重循環(huán)判斷如果有有一行(這里說(shuō)行其實(shí)在二維數(shù)組中是列)都為1那么整個(gè)數(shù)組向下移動(dòng)覆蓋這一行,重新為數(shù)組的第一行賦值為0,repaint()方法后就產(chǎn)生了消行的效果,同時(shí)統(tǒng)計(jì)分?jǐn)?shù)。最后完善一下程序吧,設(shè)置按鈕的相應(yīng)及其功能;用一新的二維數(shù)組記下下一個(gè)產(chǎn)生的方塊顯示先界面上,幫助游戲者更好的排列方塊;記錄分?jǐn)?shù)達(dá)到一定數(shù)值增加游戲的等級(jí)及方塊的下落速度,方塊達(dá)到界面的頂端也就是新產(chǎn)生的方塊越出了外矩形框的范圍那么游戲結(jié)束,如果游戲者游戲前創(chuàng)建用戶那么將用戶名和得分一起寫入數(shù)據(jù)庫(kù),下次游戲的時(shí)候可以通過(guò)查看游戲記錄查看到。4.課程設(shè)計(jì)成果實(shí)驗(yàn)截圖:創(chuàng)建用戶:游戲等級(jí):游戲記錄:開(kāi)始游戲:游戲運(yùn)行界面:源程序代碼:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;importjava.util.*;importjavax.swing.Timer;classFang{ intx; inty;}classgameWinextendsJPanelimplementsActionListener,KeyListener{ JButtonstart,stop,exit; intscore=0,score1=0,leave=0,kuai=0,speed=0,s; Stringname; Fangfang[]=newFang[4]; Fangfang2[]=newFang[4]; Randomran=newRandom(); booleanbin=false,xin=false,pan=false,shudu=false; JButtondeal=newJButton("確定"); JDialogdia=newJDialog(); JLabellab; int[][]map=newint[10][18]; Timert; inttemp; gameWin(Stringn,intspd) { s=spd; name=n; for(inti=0;i<4;i++) { fang[i]=newFang(); fang2[i]=newFang(); } setLayout(null); start=newJButton("開(kāi)始游戲"); stop=newJButton("暫停游戲"); exit=newJButton("退出游戲"); start.setBounds(240,280,90,22); stop.setBounds(240,310,90,22); exit.setBounds(240,340,90,22); add(start); add(stop); add(exit); start.addActionListener(this); stop.addActionListener(this); exit.addActionListener(this); addKeyListener(this); lab=newJLabel(); dia.setLayout(newFlowLayout()); dia.add(lab); dia.add(deal); dia.setBounds(550,250,200,100); dia.setVisible(false); deal.addActionListener(this); dia.validate(); } publicvoidpaintComponent(Graphicsg) { super.paintComponent(g); g.drawRect(9,10,200,360); g.drawString("下一個(gè)方塊:",230,40); g.drawLine(220,180,480,180); g.drawString("分?jǐn)?shù):"+score,240,220); g.drawString("等級(jí):"+leave,240,250); if(bin) { g.setColor(Color.black); for(inti=0;i<4;i++) { g.fillRect(70+fang[i].x*20,10+fang[i].y*20,20,20); } for(inti=0;i<4;i++) { g.setColor(Color.blue); g.fillRect(240+fang2[i].x*20,80+fang2[i].y*20,20,20); } } for(inti=0;i<10;i++) { for(intj=0;j<18;j++) { if(map[i][j]==1) { g.setColor(Color.gray); g.fillRect(10+i*20,10+j*20,20,20); } } } } publicbooleannewKuai() { switch(temp) { case0: fang[0].x=0;fang[0].y=0; fang[1].x=1;fang[1].y=0; fang[2].x=2;fang[2].y=0; fang[3].x=3;fang[3].y=0; break; case1: fang[0].x=2;fang[0].y=0; fang[1].x=3;fang[1].y=0; fang[2].x=2;fang[2].y=1; fang[3].x=3;fang[3].y=1; break; case2: fang[0].x=2;fang[0].y=0; fang[1].x=2;fang[1].y=1; fang[2].x=2;fang[2].y=2; fang[3].x=3;fang[3].y=2; break; case3: fang[0].x=3;fang[0].y=0; fang[1].x=3;fang[1].y=1; fang[2].x=3;fang[2].y=2; fang[3].x=2;fang[3].y=2; break; case4: fang[0].x=2;fang[0].y=0; fang[1].x=1;fang[1].y=1; fang[2].x=2;fang[2].y=1; fang[3].x=3;fang[3].y=1; break; case5: fang[0].x=1;fang[0].y=0; fang[1].x=2;fang[1].y=0; fang[2].x=2;fang[2].y=1; fang[3].x=3;fang[3].y=1; break; case6: fang[0].x=2;fang[0].y=0; fang[1].x=3;fang[1].y=0; fang[2].x=1;fang[2].y=1; fang[3].x=2;fang[3].y=1; break; } for(inti=0;i<4;i++) { if(!fanhui(fang[i].x,fang[i].y)) { returnfalse; } } returntrue; } publicvoidnextKuai() { switch(temp) { case0: fang2[0].x=0;fang2[0].y=0; fang2[1].x=1;fang2[1].y=0; fang2[2].x=2;fang2[2].y=0; fang2[3].x=3;fang2[3].y=0; break; case1: fang2[0].x=2;fang2[0].y=0; fang2[1].x=3;fang2[1].y=0; fang2[2].x=2;fang2[2].y=1; fang2[3].x=3;fang2[3].y=1; break; case2: fang2[0].x=2;fang2[0].y=0; fang2[1].x=2;fang2[1].y=1; fang2[2].x=2;fang2[2].y=2; fang2[3].x=3;fang2[3].y=2; break; case3: fang2[0].x=3;fang2[0].y=0; fang2[1].x=3;fang2[1].y=1; fang2[2].x=3;fang2[2].y=2; fang2[3].x=2;fang2[3].y=2; break; case4: fang2[0].x=2;fang2[0].y=0; fang2[1].x=1;fang2[1].y=1; fang2[2].x=2;fang2[2].y=1; fang2[3].x=3;fang2[3].y=1; break; case5: fang2[0].x=1;fang2[0].y=0; fang2[1].x=2;fang2[1].y=0; fang2[2].x=2;fang2[2].y=1; fang2[3].x=3;fang2[3].y=1; break; case6: fang2[0].x=2;fang2[0].y=0; fang2[1].x=3;fang2[1].y=0; fang2[2].x=1;fang2[2].y=1; fang2[3].x=2;fang2[3].y=1; break; } } publicbooleanbianjie(intx,inty) { for(inti=0;i<4;i++) { if(!fanhui(fang[i].x+x,fang[i].y+y)) { returnfalse; } } returntrue; } publicbooleanfanhui(intx,inty) { if(x<-3||x>=7||y<0||y>=18) { returnfalse; } if(map[x+3][y]==1) { returnfalse; } returntrue; } publicvoiddown() { if(bianjie(0,1)) { for(inti=0;i<4;i++) { fang[i].y+=1; } repaint(); } else { for(inti=0;i<4;i++) { map[fang[i].x+3][fang[i].y]=1; } if(!newKuai()) { t.stop(); if(name!=null) { Connectioncon; Statementsql; ResultSetrs; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptione1) { System.out.println(""+e1); } try { con=DriverManager.getConnection("jdbc:odbc:game","",""); sql=con.createStatement(); sql.executeUpdate("insertintojiluvalues"+"("+"'"+name+"'"+","+score+")"); con.close(); } catch(SQLExceptione2) { System.out.println(e2); } } lab.setText("游戲結(jié)束,您的分?jǐn)?shù):"+score); dia.validate(); dia.setVisible(true); System.out.print("deal"); } kuai=delect(); if(kuai>0) { score+=kuai*kuai*50+100; score1+=kuai*kuai*50+100; if(score1>=1000) { score1-=1000; leave++; speed++; t.stop(); t=newTimer(1000-50*speed,newmyTimer()); t.start(); } } temp=ran.nextInt(7); nextKuai(); repaint(); } } publicvoidup() { Fanground[]=newFang[4]; intx0,y0; for(inti=0;i<4;i++) { round[i]=newFang(); } x0=(fang[0].x+fang[1].x+fang[2].x+fang[3].x)/4; y0=(fang[0].y+fang[1].y+fang[2].y+fang[3].y)/4; for(inti=0;i<4;i++) { round[i].x=x0-y0+fang[i].y; round[i].y=x0+y0-fang[i].x; } for(inti=0;i<4;i++) { if(!fanhui(round[i].x,round[i].y)) { return; } } for(inti=0;i<4;i++) { fang[i].x=round[i].x; fang[i].y=round[i].y; } repaint(); } publicintdelect() { intline=0,lie=0; for(inti=17;i>=0;i--) { for(intj=0;j<10;j++) { if(map[j][i]==1) { lie++; } else { break; } } if(lie==10) { lie=0; line++; for(intj=0;j<10;j++) { map[j][i]=0; } for(intk=i;k>0;k--) { for(intj=0;j<10;j++) { map[j][k]=map[j][k-1]; } } for(intj=0;j<10;j++) { map[0][j]=0; } i=18; } else { lie=0; } } repaint(); returnline; } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==start) { if(!bin) { bin=true; speed=s; if(s==0) { score=0; } elseif(s==7) { score=7000; } elseif(s==14) { score=14000; } t=newTimer(1000-50*speed,newmyTimer()); t.start(); } temp=ran.nextInt(7); if(newKuai()) { for(inti=0;i<10;i++) { for(intj=0;j<18;j++) { map[i][j]=0; } } start.setText("重新開(kāi)始"); temp=ran.nextInt(7); nextKuai(); repaint(); requestFocus(true); } } elseif(e.getSource()==stop) { if(!pan) { t.stop(); stop.setText("繼續(xù)游戲"); pan=true; } else { requestFocus(true); t.start(); stop.setText("暫停游戲"); pan=false; } } elseif(e.getSource()==exit) { //fra.setVisible(false); newCanvs(); } elseif(e.getSource()==deal) { dia.setVisible(false); score=0;score1=0;leave=0;speed=0; bin=false; start.setText("開(kāi)始游戲"); for(inti=0;i<10;i++) { for(intj=0;j<18;j++) { map[i][j]=0; } } repaint(); } } publicvoidkeyPressed(KeyEvente) { switch(e.getKeyCode()) { caseKeyEvent.VK_UP: up(); break; caseKeyEvent.VK_LEFT: Fmove(-1,0); break; caseKeyEvent.VK_RIGHT: Fmove(1,0); break; caseKeyEvent.VK_DOWN: Fmove(0,1); down(); break; } } publicvoidkeyTyped(KeyEvente) { } publicvoidkeyReleased(KeyEvente) { } publicvoidFmove(intx,inty) { if(bianjie(x,y)) { for(inti=0;i<4;i++) { fang[i].x+=x; fang[i].y+=y; } repaint(); } } publicclassmyTimerimplementsActionListener { publicvoidactionPerformed(ActionEvente) { down(); } }}classJie{ JFramefra; gameWinwin; Jie(Stringname,intspeed) { win=newgameWin(name,speed); fra=newJFrame("俄羅斯方塊"); fra.setBounds(500,180,380,420); fra.add(win); fra.setVisible(true); fra.setResizable(false); fra.validate(); }}/////////////////////////以上是游戲界面////////////////////////////classCanvsimplementsActionListener,ItemListener//,ScrollPaneConstants//{ Connectioncon; Statementsql; ResultSetrs; JFramezhu,youxi,zhuce,j,shezhi; JLabellabel; JPanelpanel; JButtonbutton1,button2,button3,button4,button5; JTextFieldtext1; ImageIconimage; JScrollPanescroll; privateintspeed,score; Stringname=null; Canvs() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptione1) { System.out.println(""+e1); } zhu=newJFrame("俄羅斯方塊"); image=newImageIcon("aisi.jpg"); label=newJLabel(image); label.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); panel=(JPanel)zhu.getContentPane(); panel.setOpaque(false); zhu.setLayout(null); button1=newJButton("創(chuàng)建用戶"); button2=newJButton("開(kāi)始游戲"); button3=newJButton("游戲記錄"); button4=newJButton("游戲設(shè)置"); button5=newJButton("退出"); button1.setBounds(320,270,90,22); button2.setBounds(320,300,90,22); button3.setBounds(320,330,90,22); button4.setBounds(320,360,90,22); button5.setBounds(320,390,90,22); //scroll=newScrollPane(ScrollPane.SCROLLBARS_ALWAYS); zhu.add(button1); zhu.add(button2); zhu.add(button3); zhu.add(button4); zhu.add(button5); zhu.add(label); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); button4.addActionListener(this); button5.addActionListener(this); zhu.getLayeredPane().add(label,newInteger(Integer.MIN_VALUE)); zhu.setBounds(100,80,image.getIconWidth(),image.getIconHeight()); zhu.setVisible(true); zhu.setResizable(false); zhu.validate(); zhu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button1) { zhuce=newJFrame("注冊(cè)"); zhuce.setLayout(newFlowLayout()); zhuce.setBounds(370,300,200,100); JLabellabel1=newJLabel("用戶名"); text1=newJTextField(10); JButtonbutton=newJButton("提交"); zhuce.add(label1); zhuce.add(text1); zhuce.add(button); zhuce.setVisible(true); zhuce.setResizable(false); zhuce.validate(); button.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente) { name=text1.getText(); zhuce.setVisible(false); } }); } elseif(e.getSource()==button2) { newJie(name,speed); zhu.setVisible(false); } elseif(e.getSource()==button3) { j=newJFrame("游戲記錄"); JTextAreatext2=newJTextArea(10,14); JButtonbutton=newJButton("back"); j.setBounds(370,300,200,260); j.setLayout(newFlowLayout()); //scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); //scroll.add(text2); scroll=newJScrollPane(text2); j.add(scroll); j.add(button); try { con=DriverManager.getConnection("jdbc:odbc:game","",""); sql=con.createStatement(); rs=sql.executeQuery("select*fromjilu"); text2.setText(null); while(rs.next()) { text2.append("用戶名:"+rs.getString(1)+" 得分:"+rs.getInt(2)+"\n"); } con.close(); } catch(SQLExceptione4) { System.out.println(e4); } button.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente3) { j.setVisible(false); } }); j.setVisible(true); j.setResizable(false); j.validate(); } elseif(e.getSource()==button4) { shezhi=newJFrame("游戲等級(jí)設(shè)置"); shezhi.setBounds(370,300,220,120); JButtonbutton=newJButton("確定"); shezhi.setLayout(newFlowLayout()); Checkboxbox1,box2,box3; CheckboxGroupdengji; dengji=newCheckboxGroup(); box1=newCheckbox("初級(jí)",true,dengji); box2=newCheckbox("中級(jí)",false,dengji); box3=newCheckbox("高級(jí)",false,dengji); box1.addItemListener(this); box2.addItemListener(this); box3.addItemListener(this); shezhi.add(box1); shezhi.add(box2); shezhi.add(box3); shezhi.add(button); shezhi.setVisible(true); shezhi.validate(); button.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvente5) { shezhi.setVisible(false); } }); } elseif(e.getSource()==button5) { System.exit(0); } } publicvoiditemStateChanged(ItemEvente) { Checkboxbox=(Checkbox)e.getSource(); if(box.getLabel().equals("初級(jí)")) { speed=0; } elseif(box.getLabel().equals("中級(jí)")) { speed=7; } elseif(box.getLabel().equals("高級(jí)")) { speed=14; } }}publicclassGame{ publicstaticvoidmain(Stringa[]) { newCanvs();
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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養(yǎng)殖行業(yè)疫病防控與生物安全合作協(xié)議3篇
- 低溫倉(cāng)儲(chǔ)的設(shè)備運(yùn)維與維護(hù)保養(yǎng)考核試卷
- 圖書館數(shù)字資源利用考核試卷
- 收藏品市場(chǎng)消費(fèi)心理與購(gòu)買動(dòng)機(jī)考核試卷
- 摩托車節(jié)氣門清洗與調(diào)整考核試卷
- 二零二五年度葡萄酒經(jīng)銷商售后服務(wù)協(xié)議范本
- 醫(yī)療設(shè)備在精準(zhǔn)醫(yī)療領(lǐng)域的創(chuàng)新應(yīng)用與挑戰(zhàn)應(yīng)對(duì)策略研究考核試卷
- 2025-2030年地震波速測(cè)試與分析系統(tǒng)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 會(huì)展旅游行業(yè)的國(guó)際合作與交流考核試卷
- 2025-2030年名人故居雕塑復(fù)原行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 女性生殖系統(tǒng)解剖與生理 生殖系統(tǒng)的血管淋巴和神經(jīng)
- 江蘇省2023年對(duì)口單招英語(yǔ)試卷及答案
- 易制毒化學(xué)品安全管理制度匯編
- GB/T 35506-2017三氟乙酸乙酯(ETFA)
- GB/T 25784-20102,4,6-三硝基苯酚(苦味酸)
- 特種設(shè)備安全監(jiān)察指令書填寫規(guī)范(特種設(shè)備安全法)參考范本
- 硬筆書法全冊(cè)教案共20課時(shí)
- 《長(zhǎng)方形的面積》-完整版課件
- PDCA降低I類切口感染發(fā)生率
- 工業(yè)企業(yè)現(xiàn)場(chǎng)監(jiān)測(cè)工況核查表
- 沉淀池及排水溝清理記錄表
評(píng)論
0/150
提交評(píng)論