2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  * * * * 大 學(xué)</p><p>  操 作 系 統(tǒng) 課 程 設(shè) 計(jì)</p><p>  學(xué)生班級(jí)__________________________</p><p>  學(xué)生學(xué)號(hào)__________________________</p><p>  學(xué)生姓名__________________________&

2、lt;/p><p>  ______年 ___月 ___日</p><p><b>  一、設(shè)計(jì)要求</b></p><p><b>  設(shè)計(jì)目的</b></p><p>  掌握進(jìn)程和線程的概念;掌握進(jìn)程進(jìn)程控制原語(yǔ)或進(jìn)程控制系統(tǒng)調(diào)用的使用;掌握多道程序設(shè)計(jì)的基本理論、方法和技術(shù);掌握相關(guān)語(yǔ)言進(jìn)程控

3、制的函數(shù)及windows進(jìn)程控制的API函數(shù)的使用 </p><p><b>  設(shè)計(jì)內(nèi)容</b></p><p>  在windows操作系統(tǒng)下,使用的VC、VB、java或C等編程語(yǔ)言,采用多道程序設(shè)計(jì)技術(shù)編寫(xiě)一個(gè)游戲軟件或解決一個(gè)簡(jiǎn)單的實(shí)際問(wèn)題。</p><p><b>  設(shè)計(jì)要求</b></p>

4、<p>  經(jīng)調(diào)試后程序能夠正常運(yùn)行,并體現(xiàn)多道程序的特點(diǎn)。</p><p>  采用多進(jìn)程或多線程方式運(yùn)行,盡量體現(xiàn)進(jìn)程間的同步和互斥關(guān)系。</p><p><b>  二、設(shè)計(jì)思想</b></p><p>  2.1多線程思想:根據(jù)設(shè)計(jì)要求 “在windows操作系統(tǒng)下,使用的VC、VB、java或C等編程語(yǔ)言,采用多道程序設(shè)計(jì)

5、技術(shù)編寫(xiě)一個(gè)游戲軟件” “采用多進(jìn)程或多線程方式運(yùn)行”,本程序使用Java語(yǔ)言,編寫(xiě)的是多線程的小游戲。</p><p>  由于操作系統(tǒng)對(duì)于程序的管理是通過(guò)這樣一種方式,即為每個(gè)程序都建立一個(gè)進(jìn)程,然后通過(guò)對(duì)進(jìn)程進(jìn)行管理從而間接的管理程序。每個(gè)進(jìn)程又可以進(jìn)一步細(xì)分成多個(gè)線程,多線程意味著一個(gè)程序的多行語(yǔ)句同時(shí)執(zhí)行。于是運(yùn)用多任務(wù)操作系統(tǒng)的這種進(jìn)程并發(fā)機(jī)制,我們就可以在程序中加入多線程,每個(gè)線程完成程序的一部分功

6、能,并可以和其他線程并發(fā)執(zhí)行。</p><p>  一個(gè)線程在其生命周期內(nèi)總是處于某種狀態(tài):</p><p>  創(chuàng)建: 當(dāng)一個(gè)線程對(duì)象被聲明并創(chuàng)建后,它處于“創(chuàng)建”狀態(tài);</p><p>  就緒:線程對(duì)象調(diào)用 start() 方法后,將進(jìn)入“就緒”狀態(tài),處于“就緒”狀態(tài)的線程不是立即執(zhí)行,而是進(jìn)入就緒隊(duì)列,等待CPU;</p><p> 

7、 運(yùn)行:當(dāng)就緒隊(duì)列中具有最高優(yōu)先級(jí)的就緒線程被調(diào)度并獲得CPU時(shí),便進(jìn)入“運(yùn)行”狀態(tài),執(zhí)行 run() 方法,run 方法中定義了線程的操作和功能;</p><p>  非運(yùn)行:處于“運(yùn)行”狀態(tài)的線程可能因?yàn)槟承┰?(例如人為掛起)進(jìn)入“非運(yùn)行”狀態(tài),讓出CPU并臨時(shí)中止自己的執(zhí)行;</p><p>  停止:線程完成了它的全部工作或調(diào)用 stop() 方法強(qiáng)制中止線程,線程就進(jìn)入“停止

8、”狀態(tài)</p><p>  于是,利用多線程,就可以在同一時(shí)刻運(yùn)行多個(gè)線程,并且設(shè)置按鈕的監(jiān)聽(tīng),監(jiān)聽(tīng)事件中運(yùn)用start()方法讓線程進(jìn)入就緒隊(duì)列,或者運(yùn)用stop()方法中止一個(gè)線程,或者運(yùn)行其他事件。</p><p>  2.2 游戲的思想:點(diǎn)擊窗口內(nèi)由于多線程和隨機(jī)數(shù)坐標(biāo)而實(shí)現(xiàn)的隨機(jī)出現(xiàn)位置不定的按鈕,按鈕設(shè)置不同的加減分,在規(guī)定的時(shí)間內(nèi)盡量多得分。并且不同的按鈕sleep時(shí)間不同,

9、即在屏幕上停留的時(shí)間不同,加分多的按鈕停留時(shí)間短,要想多得分反應(yīng)要夠快!其中還有“地雷”按鈕,點(diǎn)擊后會(huì)強(qiáng)制中止游戲,游戲結(jié)束。以此來(lái)鍛煉人們的反應(yīng)敏捷性。</p><p><b>  三、程序流程圖</b></p><p><b>  四、程序清單</b></p><p>  package duoxiancheng;&l

10、t;/p><p>  import java.awt.event.ActionEvent;</p><p>  import java.awt.event.ActionListener;</p><p>  import java.util.Random;</p><p>  import javax.swing.Icon;</p>

11、<p>  import javax.swing.JButton;</p><p>  import javax.swing.JFrame;</p><p>  import javax.swing.JLabel;</p><p>  import javax.swing.JOptionPane;</p><p>  //定義一個(gè)

12、JFrame窗體作為顯示載體</p><p>  public class saolei extends JFrame{</p><p>  private static final long serialVersionUID = 1L;</p><p>  public static boolean stop;</p><p>  publ

13、ic static int s; </p><p>  public static int t=30;//stop、s、t分別用于停止控制、得分統(tǒng)計(jì)與倒計(jì)時(shí)時(shí)間</p><p>  private JButton begin = new JButton("開(kāi)始");</p><p>  private JButton exit = new JBu

14、tton("退出"); </p><p>  private jiafen1 add1 = new jiafen1("加1分");</p><p>  private jiafen2 add2= new jiafen2("加2分");</p><p>  private jianfen1 sub1=new

15、jianfen1("減1分");</p><p>  private dilei dl=new dilei("地雷");</p><p>  private shijian sj=new shijian("30");</p><p>  private JLabel score=new JLabel();

16、//定義窗體載體中的組件</p><p>  public saolei(){</p><p>  super("小心地雷");</p><p>  setLayout(null);</p><p>  setBounds(200, 50, 1000, 800);</p><p>  add(add

17、1);</p><p>  add1.setBounds(320, 350, 80, 30);</p><p>  add(add2);</p><p>  add2.setBounds(320, 400, 80, 30);</p><p>  add(sub1);</p><p>  sub1.setBounds(4

18、20, 350, 80, 30);</p><p><b>  add(dl);</b></p><p>  dl.setBounds(420, 400, 80, 30);</p><p><b>  add(sj);</b></p><p>  sj.setBounds(700,30,50,50)

19、;</p><p>  add(begin);begin.setBounds(300, 700, 80, 30);</p><p>  add(exit);exit.setBounds(600, 700, 80, 30); </p><p>  add(score);score.setBounds(300, 50, 100 ,20);</p><

20、p>  score.setText("您的得分為:"+s);</p><p>  setVisible(true);//向窗體載體添加組件并初始化</p><p>  begin.addActionListener(new ActionListener() {//開(kāi)始按鈕設(shè)置監(jiān)聽(tīng),執(zhí)行時(shí)啟動(dòng)線程</p><p>  public void

21、actionPerformed(ActionEvent e) {</p><p>  new Thread(add1).start();</p><p>  new Thread(add2).start();</p><p>  new Thread(sub1).start();</p><p>  new Thread(dl).start(

22、);</p><p>  new Thread(sj).start();</p><p>  begin.setVisible(false);</p><p>  } </p><p><b>  });</b></p><p&

23、gt;  exit.addActionListener(new ActionListener() {//退出鍵設(shè)置監(jiān)聽(tīng)</p><p>  public void actionPerformed(ActionEvent e) {</p><p>  System.exit(0);</p><p><b>  }</b></p>&

24、lt;p><b>  });</b></p><p>  add1.addActionListener(new ActionListener(){//“加一分”按鈕設(shè)置監(jiān)聽(tīng)</p><p>  public void actionPerformed(ActionEvent e) {</p><p><b>  s+=1;<

25、/b></p><p>  add1.setVisible(false);</p><p>  score.setText("您的得分為:"+s);</p><p>  } </p><p><b>  });</b>&l

26、t;/p><p>  add2.addActionListener(new ActionListener(){//“加兩分”按鈕設(shè)置監(jiān)聽(tīng)</p><p>  public void actionPerformed(ActionEvent e) {</p><p><b>  s+=2;</b></p><p>  add2.

27、setVisible(false);</p><p>  score.setText("您的得分為:"+s);</p><p>  } </p><p><b>  });</b></p><p>  sub1.addActio

28、nListener(new ActionListener(){//“減一分”按鈕設(shè)置監(jiān)聽(tīng)</p><p>  public void actionPerformed(ActionEvent e) {</p><p><b>  s-=1;</b></p><p>  sub1.setVisible(false);</p><

29、p>  score.setText("您的得分為:"+s);</p><p>  } </p><p><b>  });</b></p><p>  dl.addActionListener(new ActionListener() {//“地雷

30、”按鈕設(shè)置監(jiān)聽(tīng)</p><p>  public void actionPerformed(ActionEvent e) {</p><p>  stop=true;</p><p>  JOptionPane.showMessageDialog(saolei.this,</p><p>  "很不幸踩中地雷!最后得分為"

31、+s);</p><p>  score.setText("您的得分為:"+s);</p><p>  } </p><p><b>  });</b></p><p><b>  }</b></p>

32、<p>  public static void main(String[] args) { //main函數(shù)開(kāi)始,新建窗體載體對(duì)象</p><p>  new saolei();</p><p><b>  } </b></p><p>  class jiafen1 extends JButton implements Ru

33、nnable //創(chuàng)建加一分線程</p><p><b>  {</b></p><p>  private static final long serialVersionUID = 1L;</p><p>  public jiafen1(String name) {</p><p>  super(name);&l

34、t;/p><p><b>  }</b></p><p>  public jiafen1(Icon icon) {</p><p>  super(icon);</p><p><b>  }</b></p><p><b>  int x, y;</b>

35、</p><p>  public void run()</p><p><b>  {</b></p><p>  Random r = new Random();</p><p>  while (!stop){</p><p>  x = r.nextInt(100)*8;</p>

36、;<p>  y = r.nextInt(100)*6;</p><p>  this.setVisible(true); </p><p>  setLocation(x, y); //重新定位組件</p><p><b>  try {</b></p><p>  Thread.sleep(22

37、00);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

38、  }</b></p><p><b>  }</b></p><p>  class jiafen2 extends JButton implements Runnable //創(chuàng)建加二分線程</p><p><b>  {</b></p><p>  private static

39、final long serialVersionUID = 1L;</p><p>  public jiafen2(String name) {</p><p>  super(name);</p><p><b>  }</b></p><p>  public jiafen2(Icon icon) {</p&

40、gt;<p>  super(icon);</p><p><b>  }</b></p><p><b>  int x, y;</b></p><p>  public void run()</p><p><b>  {</b></p><

41、;p>  Random r = new Random();</p><p>  while (!stop){</p><p>  x = r.nextInt(100)*8;</p><p>  y = r.nextInt(100)*6;</p><p>  this.setVisible(true);</p><p&

42、gt;  setLocation(x, y);</p><p><b>  try {</b></p><p>  Thread.sleep(1000);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p&g

43、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class jianfen1 extends JButton im

44、plements Runnable //創(chuàng)建減一分線程</p><p><b>  {</b></p><p>  private static final long serialVersionUID = 1L;</p><p>  public jianfen1(String name) {</p><p>  su

45、per(name);</p><p><b>  }</b></p><p>  public jianfen1(Icon icon) {</p><p>  super(icon);</p><p><b>  }</b></p><p><b>  int x,

46、 y;</b></p><p>  public void run()</p><p><b>  {</b></p><p>  Random r = new Random();</p><p>  while (!stop){</p><p>  x = r.nextInt(100

47、)*8;</p><p>  y = r.nextInt(100)*6;</p><p>  this.setVisible(true);</p><p>  setLocation(x, y);</p><p><b>  try {</b></p><p>  Thread.sleep(250

48、0);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b> 

49、 }</b></p><p><b>  }</b></p><p>  class shijian extends JLabel implements Runnable //創(chuàng)建時(shí)間線程</p><p><b>  {</b></p><p>  private static fina

50、l long serialVersionUID = 1L;</p><p>  public shijian(String name) {</p><p>  super(name);</p><p><b>  }</b></p><p>  public shijian(Icon icon) {</p>

51、<p>  super(icon);</p><p><b>  }</b></p><p>  public void run()</p><p><b>  {</b></p><p>  while (t>0)</p><p><b>  {

52、</b></p><p><b>  if(!stop)</b></p><p><b>  {</b></p><p><b>  try {</b></p><p>  Thread.sleep(1000);</p><p>  } ca

53、tch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  t--;</b></p><p>  sj.setText(t+"");</p&g

54、t;<p><b>  }</b></p><p><b>  }</b></p><p>  stop=true;</p><p>  JOptionPane.showMessageDialog(saolei.this,</p><p>  "時(shí)間到!最后得分為"

55、+s);</p><p>  //score.setText("您的得分為:"+s);</p><p><b>  }</b></p><p><b>  }</b></p><p>  class dilei extends JButton implements Runnabl

56、e//創(chuàng)建“地雷”線程</p><p><b>  {</b></p><p>  private static final long serialVersionUID = 1L;</p><p>  public dilei(String name) {</p><p>  super(name);</p>

57、<p><b>  }</b></p><p>  public dilei(Icon icon) {</p><p>  super(icon);</p><p><b>  }</b></p><p><b>  int x, y;</b></p>

58、<p>  public void run()</p><p><b>  {</b></p><p>  Random r = new Random();</p><p>  while (!stop){</p><p>  x = r.nextInt(100)*8;</p><p&g

59、t;  y = r.nextInt(100)*6;</p><p>  setLocation(x, y);</p><p><b>  try {</b></p><p>  Thread.sleep(1500);</p><p>  } catch (InterruptedException e) {</p&g

60、t;<p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>&

61、lt;p><b>  }</b></p><p><b>  五、運(yùn)行結(jié)果</b></p><p>  1.開(kāi)始初始化界面:</p><p><b>  2.游戲運(yùn)行界面</b></p><p>  3.時(shí)間到,游戲結(jié)束</p><p><b

62、>  4.點(diǎn)中地雷</b></p><p><b>  六、心得體會(huì)呢</b></p><p>  這次設(shè)計(jì)中遇到最難的問(wèn)題就是多線程的實(shí)現(xiàn),由于之前很少接觸多線程編程,所以通過(guò)查閱各種資料,終于實(shí)現(xiàn)了功能,能夠?qū)⑽鍌€(gè)線程同時(shí)運(yùn)行,同時(shí)倒計(jì)時(shí)也是用線程實(shí)現(xiàn)的。 </p><p>  主要解決多線程問(wèn)題和按鈕監(jiān)聽(tīng)問(wèn)題,由于Jav

63、a編程能力有限,程序編寫(xiě)的很普通,而且還有部分功能未能實(shí)現(xiàn),例如:將按鈕換成圖片實(shí)現(xiàn),添加背景音樂(lè),設(shè)置簡(jiǎn)單、普通、困難等級(jí)別以及玩的時(shí)間長(zhǎng)短控制速度等功能。這些問(wèn)題還有待深入學(xué)習(xí)和探討。</p><p>  通過(guò)幾天來(lái)的設(shè)計(jì)和學(xué)習(xí),真的學(xué)習(xí)到了很多東西。通過(guò)這次的操作系統(tǒng)的課程設(shè)計(jì),在同學(xué)和老師的幫助下,終于做出了此程序,能夠簡(jiǎn)單運(yùn)用多線程實(shí)現(xiàn)一個(gè)小游戲,因此加深了對(duì)多線程的理解。</p><

64、;p><b>  七、參考文獻(xiàn)</b></p><p>  1.《計(jì)算機(jī)操作系統(tǒng)》(第三版)(西安電子科技大學(xué)出版社) 梁小丹 梁紅兵 湯子瀛 編著</p><p>  2.《JAVA語(yǔ)言最新實(shí)用案例教案》 (清華大學(xué)出版社) 楊樹(shù)林 胡潔萍 編著</p><p>  3.《數(shù)據(jù)結(jié)構(gòu)與算法 Java語(yǔ)言版》 (機(jī)械工業(yè)出版社) (美)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論