欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      程序設(shè)計報告

      時間:2019-05-14 01:48:15下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《程序設(shè)計報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《程序設(shè)計報告》。

      第一篇:程序設(shè)計報告

      《程序設(shè)計》課程設(shè)計

      題目名稱:

      學 院:

      專業(yè)班級: 學 號: 姓 名: 指導教師: 完成日期: 2015年 12月

      程序設(shè)計報告

      《程序設(shè)計課程設(shè)計》

      一.概述(題目內(nèi)容)

      本次設(shè)計程序題目為“愛”。

      “愛”是世界上最美好的感情,我們愛家人,愛朋友,愛動物,愛自然,愛這美好的世界??墒?,你是否羞于向你最親近的人表達你最真實的感受,尤其是對父母,害羞沒關(guān)系,讓本程序幫幫你。

      二.設(shè)計內(nèi)容及其要求

      內(nèi)容要表達出,體現(xiàn)出“愛”。

      要求:1.有音樂 2.有背景 3.有視頻 4.有表達愛的字樣

      三.設(shè)計思路、設(shè)計方法、設(shè)計工具

      設(shè)計思路:需要繪圖程序,怎樣體現(xiàn)I LOVE U,需要插入圖片,音樂和視頻,出現(xiàn)對話框提示。

      設(shè)計方法:用劃線和設(shè)置顏色來體現(xiàn)I LOVE U,設(shè)計函數(shù)在有背景圖的情況下實現(xiàn)文字的移動。

      設(shè)計工具:VC6 + EasyX 20140321 四.整體流程,各部分介紹

      提示 是否開啟音樂(Y打開音樂 N 不打開音樂)繪制I LOVE U 文字移動

      提示是否打開視頻(Y打開視頻,關(guān)閉音樂N不打開視頻音樂繼續(xù))

      #include //調(diào)用圖形庫 #include //控制臺輸入輸出 #include #include //從系統(tǒng)時鐘獲取時間

      #pragma comment(lib,“Winmm.lib”)

      // 引用 Windows Multimedia API myouttextxy函數(shù)實現(xiàn)文字在背景上的移動 主函數(shù)

      loadimage()//加載圖片

      Putimage()//顯示圖片

      mciSendString()//加載音樂,播放音樂,循環(huán)播放音樂,暫停音樂

      Setline()//繪制線 用for,while循環(huán)實現(xiàn)I LOVE U的繪制 MessageBox()//獲取窗柄,實現(xiàn)選擇

      mciSendString()//加載視頻,播放視頻,關(guān)閉視頻 getch();//從鍵盤獲取 closegraph();//關(guān)閉程序

      四.設(shè)計結(jié)果

      五.總結(jié)

      可以將其他的分辨率為530*300左右的照片重命名為background.jpg作為背景圖片,與編譯文件放在一起,將其他的MP4的音樂和MP4視頻分別重命名為background.,mp3 background.mp4,分別復制一份,一份與編譯文件放在一起,另一份放入debug文件中。缺點:必須壓縮至D盤根目錄下,否則,圖片不能加載。

      第二篇:Java程序設(shè)計報告

      楚雄師范學院

      2015年春季期末Java程序設(shè)計報告

      項目名稱:基于Java平臺開發(fā)的五子棋程序設(shè)計

      學 院: 物理與電子科學學院

      專 業(yè):電子信息科學與技術(shù)

      班 級:2 0 1 3 級 電 信 一 班

      組員姓名:楊邦桂 許勇 董俊宏 課程教師: 程 滿

      目錄

      引言...........................................................................................................................................4 第一章 設(shè)計目的和要求.........................................................................................................4 第二章JAVA語言概述.........................................................................................................4 2.1 JAVA簡介........................................................................................................................4 2.1.1 JAVA的基本特點.....................................................................................................4 2.2 JAVA工具

      JDK............................................................................................................5 第三章 程序的設(shè)計思路和算法.............................................................................................5 3.1 人機博弈的要點............................................................................................................5 3.2 五子棋特點及規(guī)則......................................................................................................5 3.3 設(shè)計思路......................................................................................................................6 3.3.1...................................................................................................................................6 第四章 測試及運行效果.........................................................................................................6 4.1棋盤系統(tǒng)主界面.............................................................................................................6 4.2下期博弈過程界面.........................................................................................................7 4.3黑方贏的結(jié)果.................................................................................................................7 4.4白方贏的結(jié)果.................................................................................................................8 第五章 設(shè)計體會與總結(jié).........................................................................................................9 附錄.........................................................................................................................................10 源程序代碼及簡要說明:.................................................................................................10

      引言

      隨著計算機技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)的普及范圍越來越廣,網(wǎng)絡(luò)能夠提供的服務(wù)多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑借健康、方便、互動性強、益智等諸多優(yōu)點,成為大部分現(xiàn)代人休閑娛樂的首選。

      網(wǎng)絡(luò)五子棋游戲是使用Java語言開發(fā)的一款游戲。它使用SOCKET建立連接,多線程處理數(shù)據(jù),以及可嵌入網(wǎng)絡(luò)瀏覽器的APPLET作為客戶端,這些特點使這款游戲無論是服務(wù)器還是客戶端的實現(xiàn)都相對容易。通過對該軟件的編寫,還可以鞏固學生對以上各種知識的掌握和理解。

      第一章 設(shè)計目的和要求

      1.1 實現(xiàn)一個簡單的五子棋游戲程序,包括如下兩個界面:(1)對弈及角色(黑方先落棋)。

      (2)在游戲界面,有游戲欄(開局、悔棋、退出),幫助欄; 顯示區(qū);棋盤區(qū)。1.2在實際系統(tǒng)中使用、實現(xiàn)人工智能的相關(guān)算法

      1.3進一步加深對人工智能算法的理解

      第二章JAVA語言概述

      2.1 JAVA簡介

      JAVA是Sun Microsystem公司開發(fā)的編程語言,是一個簡單,面向?qū)ο?,分布式,解釋性,強壯,安全,與系統(tǒng)無關(guān),可移植,高性能,多線程和動態(tài)的語言。

      2.1.1 JAVA的基本特點

      (1)簡單性

      Java與C++語言非常相近,但Java比C++簡單,它拋棄了C++中的一些不是絕對必要的功能,如頭文件、預處理文件、指針、結(jié)構(gòu)、運算符重載、多重繼承以及自動強迫同型。Java實現(xiàn)了自動的垃圾收集,簡化了內(nèi)存管理的工作。

      (2)面向?qū)ο?/p>

      Java提供了簡單的類機制和動態(tài)的構(gòu)架模型。對象中封裝了它的狀態(tài)變量和方法,很好地實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現(xiàn)了代碼的復用,又提供了一種動態(tài)的解決方案。

      (3)多線程

      多線程使應(yīng)用程序可以同時進行不同的操作,處理不同的事件。在多線程機制中,不同的線程處理不同的任務(wù),他們之間互不干涉,不會由于一處等待影響其他部分,這樣容易實現(xiàn)網(wǎng)絡(luò)上的實時交互操作。

      (4)分布性

      Java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡(luò)上很方便的訪問其他對象。(5)體系結(jié)構(gòu)中立

      Java是一種網(wǎng)絡(luò)語言,為使Java程序能在網(wǎng)絡(luò)的任何地方運行,Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼結(jié)構(gòu)的文件格式。為了使Java的應(yīng)用程序能不依賴于具體的系統(tǒng),Java語言環(huán)境還提供了用于訪問底層操作系統(tǒng)功能的類組成的包,當程序使用這些包時,可以確保它能運行在各種支持Java的平臺上。

      (6)安全性

      用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了程序員使用欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。

      2.2 JAVA工具

      JDK

      (1)Java編譯器

      Java編譯器將Java源代碼文件編譯成可執(zhí)行的Java字節(jié)碼。Java源代碼文件的擴展名為.java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產(chǎn)生一個class文件,這意味一個Java源代碼文件可能編譯生成多個class文件。

      (2)Java解釋器

      Java解釋器對編譯生成的字節(jié)碼格式的可執(zhí)行程序的運行提供支持,它是運行非圖形Java程序的命令行工具。

      第三章 程序的設(shè)計思路和算法

      3.1 人機博弈的要點

      人機對弈的程序,至少應(yīng)具備以下5個部分:

      (1)某種在機器中表示棋局的方法,能夠讓程序知道博弈的狀態(tài)。(2)產(chǎn)生合法走法的規(guī)則,以使博弈公正地進行,并可判斷人類對手是否亂走。(3)從所有合法的走法中選擇最佳的走法技術(shù)。(4)一種評估局面優(yōu)劣的方法,用以同上面的技術(shù)配合做出智能的選擇。(5)一個界面,有了他,這個程序才能用。

      3.2 五子棋特點及規(guī)則

      五子棋的娛樂性強、規(guī)則簡單、易學、流行性廣。普通人不需長時間專門訓練即可自如行棋。因此極受大眾歡迎。五子棋的規(guī)則為:

      (1)棋盤

      采用像圍棋盤一樣的15路或19路線的棋盤,在此采用19路的棋盤。

      (2)下法

      兩人分別執(zhí)黑白兩色棋子。輪流在棋盤上選擇一個無子的交叉點落子,無子的交叉點又被稱為空點。

      (3)輸贏判斷

      黑、白雙方有一方的五個棋子在橫、豎或斜方向上連接成一線即為該方贏。

      (4)特殊規(guī)定

      職業(yè)五子棋雖然對黑棋采取了種種限制,但黑子先行的優(yōu)勢依然很大。因此,在高段位的職業(yè)比賽中,又出現(xiàn)了三種特殊的規(guī)定。

      a.指定打法:是指比賽雙方按照約定好的開局進行對弈,由白棋先行。

      b.三手可交換:是指黑棋下盤面第3手棋后,白方在下第四手之前,如感覺黑方棋形不利于己方,可提出交換,即執(zhí)白棋一方變?yōu)閳?zhí)黑棋一方,而黑方不可以不換。

      c.五手兩打法:是指黑棋在下盤面上關(guān)鍵的第5手棋時,必須下兩步棋,讓白棋在這兩步棋中拿掉一粒棋子,然后再繼續(xù)對弈。一般說來,白棋肯定拿掉對白方不利的一點,而保留對黑方較為不利的那點讓黑方行棋。3.3 設(shè)計思路

      3.3.1開始——下棋——判斷輸贏——結(jié)束游戲或重新再來——退出。

      1.建立一個棋盤類,繪制棋盤的樣式,在棋盤面板上添加各種按鈕及相應(yīng)胡觸發(fā)事件。同時注意面板的設(shè)計,使面板設(shè)計的盡量胡的合理美觀。2.編寫一個功能判斷落子的位置及畫出相應(yīng)的黑白棋子。3.判斷勝負

      第四章 測試及運行效果

      4.1棋盤系統(tǒng)主界面

      圖4-1初始化棋盤效果,玩家為黑棋 4.2下棋博弈過程界面

      圖4-2黑白棋博弈

      4.3黑方贏的結(jié)果

      圖4-3黑方勝利界面

      4.4白方贏的結(jié)果

      圖4-4白方勝利界面

      第五章 設(shè)計體會與總結(jié)

      Java編程最強大的地方不是它是容易學,或者難學,而是它擁有一個強大的庫。JAVA是一個完全面向?qū)ο蟮恼Z言,JAVA的命名規(guī)則是很容易讓人接受的。而且容易被編程人員記住。經(jīng)過實踐訓練,對JAVA的綜合應(yīng)用能力有了較大的提高,另外對JAVA的特點有了更深層次的認識。這次實踐中使用的代碼雖然不長,但類與類之間也有很強的邏輯關(guān)系,這就是面向?qū)ο笳Z言的最大優(yōu)勢,這樣可使我們更輕松的運用JAVA。

      經(jīng)過努力,查閱相關(guān)資料,終于完成該課題,雖然效果不是很好,但親手做過之后還是很有成就感的。

      通過此次課程設(shè)計,將我本學期所學的JAVA知識得到鞏固和應(yīng)用,在設(shè)計的過程中我遇到了很到問題,不過在老師和同學們的幫助和自己的思考下還是很好的完成了。這此課程設(shè)計還讓我懂得了寫程序不能閉門造車,要努力拓寬知識面,開闊視野,拓展思維。它還讓我學會了在網(wǎng)上查閱那些無限的資料。通過對此課題的開發(fā),使我對用Eclipse開發(fā)平臺有了一個比較清楚的認識,體會到理論和實踐的重要性。由于自己的分析設(shè)計和程序經(jīng)驗不足,該系統(tǒng)設(shè)計和實現(xiàn)過程中,還有許多沒有完善的地方,比如用戶界面設(shè)計不夠美觀,異常出錯處理比較差等多方面問題,這些都有待進一步完善和提高。

      附錄

      源程序代碼及簡要說明:

      import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Timer;import java.util.TimerTask;import java.lang.Thread;public class WZQ_2008 extends Frame implements ActionListener { Timer t=new Timer(true);//Thread mt=new MyThread(this);MenuBar mb=new MenuBar();Menu myx=new Menu(“游戲”);Menu mbz=new Menu(“幫助”);MenuItem mikj=new MenuItem(“開局”);MenuItem mihq=new MenuItem(“悔棋”);MenuItem mitc=new MenuItem(“退出”);MenuItem migy=new MenuItem(“關(guān)于”);int x=0;int y=0;String stb=“五子棋游戲

      請黑方落子”;String stw=“五子棋游戲

      請白方落子”;boolean isBlack=true;String str=“Game Over”;boolean over=false;int count=0;int jj=30;int r=25;String str1;int [][]date=new int[15][15];

      int i=0;public WZQ_2008(){

      this.setMenuBar(mb);

      mb.add(myx);

      mb.add(mbz);

      myx.add(mikj);mikj.addActionListener(this);mikj.setEnabled(false);myx.add(mihq);mihq.setEnabled(false);mihq.addActionListener(this);myx.add(mitc);mitc.addActionListener(this);mbz.add(migy);migy.addActionListener(this);this.setTitle(stb);this.setBounds(100,100,485,500);this.setBackground(new Color(206,148,49));this.setResizable(false);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });this.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){

      if(over)

      {

      return;

      }

      x=(e.getX()-30+jj/2)/jj;

      y=(e.getY()-60+jj/2)/jj;

      if(x<0||x>14||y<0||y>14)

      {

      return;

      }

      if(date[x][y]!=0)

      {

      return;

      }

      if(isBlack)

      {

      setTitle(stw);

      date[x][y]=1;

      }

      else

      {

      setTitle(stb);

      date[x][y]=2;

      }

      mikj.setEnabled(true);

      mihq.setEnabled(true);

      isBlack=!isBlack;

      pd();

      repaint();

      } });this.setVisible(true);

      } public void pd(){ int xq=0,xz=14;int yq=0,yz=14;if(x-4>0){

      xq=x-4;} if(x+4<14){

      xz=x+4;} if(y-4>0){

      yq=y-4;} if(y+4<14){

      yz=y+4;} pdh(xq,xz);count =0;pds(yq,yz);count=0;pdfx(xq,xz);count=0;pdzx(xq,xz);} public void pdzx(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(y+x-i<0)

      {

      break;

      }

      if(y+x-i>14)

      {

      continue;

      }

      if(date[i][y+x-i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void pdfx(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(y-x+i<0)

      {

      continue;

      }

      if(y-x+i>14)

      {

      break;

      }

      if(date[i][y-x+i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } }

      } public void pds(int yq,int yz){ for(int i=yq;i<=yz;i++){

      if(date[x][i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void pdh(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(date[i][y]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void isOver(){ if(count==5){

      over=true;

      if(date[x][y]==1)

      {

      str1=“黑方勝利”;

      }

      else if(date[x][y]==2)

      {

      str1=“白方勝利”;

      }

      //mt.start();

      //for(int i=0)

      t.schedule(new MyTimer(this),100,500);

      this.repaint();} } public void actionPerformed(ActionEvent e){ if(e.getSource()==mikj){

      mikj.setEnabled(false);

      mihq.setEnabled(false);

      for(int i=0;i

      {

      for(int j=0;j

      {

      date[i][j]=0;

      }

      }

      isBlack=true;

      this.setTitle(stb);

      over=false;

      this.repaint();} if(e.getSource()==mihq){

      mihq.setEnabled(false);

      date[x][y]=0;

      if(isBlack)

      {

      this.setTitle(stw);

      }

      else

      {

      this.setTitle(stb);

      }

      isBlack=!isBlack;

      this.repaint();} if(e.getSource()==mitc){

      this.dispose();}

      if(e.getSource()==migy){

      new MyAbout(this);} } public void update(Graphics g){ paint(g);} public void paint(Graphics g){ Image ii=this.createImage(485,500);Graphics gg=ii.getGraphics();paintBuffer(gg);g.drawImage(ii,0,0,this);} public void paintBuffer(Graphics g){ for(int i=0;i<15;i++){

      g.drawLine(30,60+i*jj,30+14*jj,60+i*jj);

      g.drawLine(30+i*jj,60,30+i*jj,60+14*jj);} for(int i=0;i

      for(int j=0;j

      {

      if(date[i][j]==1)

      {

      g.setColor(Color.BLACK);

      }

      else if(date[i][j]==2)

      {

      g.setColor(Color.WHITE);

      }

      else

      {

      continue;

      }

      //抗鋸齒,使繪畫出來的圖形更圓滑

      Graphics2D g2d=(Graphics2D)g;

      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

      g.fillOval(30-jj/2+i*jj,60-jj/2+j*jj,r,r);

      }

      }

      if(over)

      {

      g.setColor(Color.GRAY);

      g.setFont(new Font(“楷體”,3,70));

      g.drawString(str,45,250);

      g.drawString(str1,48,350);

      g.setColor(Color.RED);

      g.setFont(new Font(“楷體”,3,70));

      g.drawString(str,50,253);

      g.drawString(str1,60,353);

      mihq.setEnabled(false);

      } } public static void main(String[]args){

      new WZQ_2008();

      } } class MyAbout extends Dialog { Button bok=new Button(“確定”);public MyAbout(WZQ_2008 wzq){

      super(wzq,“百納科技五子棋”,true);

      this.add(bok);

      bok.setBounds(180,250,60,20);

      this.setLayout(null);

      this.addWindowListener(new WindowAdapter()

      {

      public void windowClosing(WindowEvent e)

      {

      dispose();

      }

      });

      bok.addActionListener(new ActionListener()

      {

      public void actionPerformed(ActionEvent e)

      {

      dispose();

      }

      });

      this.setBounds(100,100,400,300);

      this.setResizable(false);

      this.setVisible(true);} public void paint(Graphics g){

      Image ii=new ImageIcon(“about.jpg”).getImage();

      g.drawImage(ii,0,0,this);} } class MyTimer extends TimerTask { WZQ_2008 wzq;boolean b=true;public MyTimer(WZQ_2008 wzq){

      this.wzq=wzq;} public void run(){

      if(!wzq.over)

      {

      return;

      }

      if(b)

      {

      wzq.str=“Game Over”;

      }

      else

      {

      wzq.str=“";

      }

      b=!b;

      wzq.repaint();

      wzq.i++;

      if(wzq.i==11)

      {

      cancel();

      wzq.i=0;

      }

      System.out.println(wzq.i);} } /*class MyThread extends Thread { WZQ_2008 wzq;boolean b=true;public MyThread(WZQ_2008 wzq){

      this.wzq=wzq;} public void run(){

      if(!wzq.over)

      {

      return;

      }

      if(b)

      {

      wzq.str=”Game Over“;

      }

      else

      {

      wzq.str=”";

      }

      b=!b;

      wzq.repaint();}

      }*/

      第三篇:《數(shù)據(jù)結(jié)構(gòu)》程序設(shè)計報告

      《數(shù)據(jù)結(jié)構(gòu)》 課程設(shè)計報告

      課程名稱: 課程設(shè)計題目:姓

      名:

      院系: 專

      業(yè): 年

      級: 學

      號: 指導教師: 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計 約瑟夫環(huán)

      俞曉沁 計算機學院

      計算機科學與技術(shù)

      大二

      0905120

      4王立波

      2011年5月22日

      1、課程設(shè)計的目的

      (1)熟練使用C++語言編寫程序,解決實際問題;

      (2)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;(3)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;(4)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;

      2、需求分析

      1、任務(wù):編號是1,2,??,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數(shù))。一開始任選一個正整數(shù)作為報數(shù)上限值m,從第一個仍開始順時針方向自1開始順序報數(shù),報到m時停止報數(shù)。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。設(shè)計一個程序來求出出列順序。

      要求:利用不帶表頭結(jié)點的單向循環(huán)鏈表存儲結(jié)構(gòu)模擬此過程,按照出列的順序輸出各個人的編號。

      2、測試數(shù)據(jù)

      m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么?

      3、課程設(shè)計報告內(nèi)容

      概要設(shè)計

      (1)在分析題目要求的基礎(chǔ)上,我首先設(shè)計了一個節(jié)點的結(jié)構(gòu)體 struct LNode { int xuhao;int data;LNode *next;};

      //存儲每個人的信息(序號,密碼)以及下個人的信息(2)然后構(gòu)造了類LinkList class LinkList { public:

      LinkList();

      void Make_L(int n);

      void GetXuhao(int m,int n);private:

      LNode *tail;

      };

      (3)基本操作

      Void LinkList::LinkList();

      //構(gòu)造函數(shù)

      Void LinkList::Make_L(int n);//建立單向循環(huán)鏈表

      Void LinkList::GetXuhao(int m,int n);//按照出列順序輸出各個人的編號(4)主函數(shù)

      初始化

      輸入人數(shù)n, 上限數(shù)m以及每個人的密碼.L.Make_L(n);

      L.GetXuhao(m,n);

      4、總結(jié)

      一、這次課程設(shè)計的心得體會通過實踐我的收獲如下:

      鞏固和加深了對線性表兩種存儲結(jié)構(gòu)—順序存儲和鏈式存儲的理解,提高了綜合運用本章節(jié)所學知識的能力。

      二、根據(jù)我在實習中遇到得問題,我將在以后的學習過程中注意以下幾點:

      1、認真上好專業(yè)課,牢固掌握課本中的基本知識。

      2、寫程序時多思考,克服不愿觸碰不懂地方的障礙,完善知識結(jié)構(gòu)。

      3、寫程序要嚴謹,多寫備注,方便檢查。

      4、在課余時間多翻閱課外相關(guān)書籍,多看程序,吸取別人程序中好的方法,熟悉后多加利用。

      5、程序清單:

      #include using namespace std;struct LNode

      { int xuhao;int data;

      LNode *next;};class LinkList { public:

      LinkList();void Make_L(int n);void GetXuhao(int m,int n);private:

      };

      LinkList::LinkList()

      { tail=new LNode;tail->next=NULL;

      } void LinkList::Make_L(int n){

      } LNode *p,*q;if(n!=0){

      } tail->xuhao=1;cin>>tail->data;q=tail;for(int i=2;i

      } tail->next=q;p=new LNode;cin>>p->data;p->xuhao=i;tail->next=p;tail=p;

      LNode *tail;void LinkList:: GetXuhao(int m,int n){

      } int main(){

      int m,n;

      LinkList L;

      cout<<“請輸入人數(shù)n:”;

      cin>>n;

      cout<<“請輸入一個正整數(shù)作為報數(shù)的上限數(shù)m:”;cin>>m;cout<<“請輸入每個人的密碼:”;L.Make_L(n);cout<<“正確的出列順序為:”;L.GetXuhao(m,n);LNode *p=tail,*q;int i,j;for(i=0;i

      j=0;while(j

      } p=p->next;++j;cout << p->next->xuhao<<“ ”;m=p->next->data;q=p->next;p->next=q->next;delete q;}

      system(“pause”);

      return 0;}

      6、參考文獻

      [1] 萬健 主編 數(shù)據(jù)結(jié)構(gòu)實用教程(C++版)——電子工業(yè)出版社.[2]網(wǎng)上搜索相關(guān)程序作為參考

      7、程序運行結(jié)果

      《數(shù)據(jù)結(jié)構(gòu)》 課程設(shè)計報告

      課程名稱: 課程設(shè)計題目:姓

      名:

      院系: 專

      業(yè): 年

      級: 學

      號: 指導教師: 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計 魔王語言解釋

      俞曉沁 計算機學院

      計算機科學與技術(shù)

      大二

      0905120

      4王立波

      2011年5月22日

      1.課程設(shè)計的目的

      (5)熟練使用C++語言編寫程序,解決實際問題;

      (6)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備初步的獨立分析和設(shè)計能力;(7)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;(8)提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;

      2.需求分析

      1、[問題描述] 有一個魔王總是使用自己的一種非常精練而又抽象的語言講話,沒有人能聽得懂,但他的語言是可以逐步解釋成人能聽懂的語言,因為他的語言是由以下兩種形式的規(guī)則由人的語言逐步抽象上去的:

      (1)α -> β1β2?βm(2)(θδ1δ2?δn)->θδnθδn-1? θδ1θ

      在這兩種形式中,從左到右均表示解釋。試寫一個魔王語言的解釋系統(tǒng),把他的話解釋成人能聽得懂的話。[基本要求] 用下述兩條具體規(guī)則和上述規(guī)則形式(2)實現(xiàn)。設(shè)大寫字母表示魔王語言的詞匯;小寫字母表示人的語言詞匯;希臘字母表示可以用大寫字母或小寫字母代換的變量。魔王語言可含人的詞匯。

      (1)B -> tAdA(2)A -> sae [測試數(shù)據(jù)] B(ehnxgz)B解釋成tsaedsaeezegexenehetsaedsae 若將小寫字母與漢字建立下表所示的對應(yīng)關(guān)系,則魔王說的話是:“天上一只鵝地上一只鵝鵝追鵝趕鵝下鵝蛋鵝恨鵝天上一只鵝地上一只鵝”。[小寫字母與漢字對應(yīng)關(guān)系] t d s a e z g x n h 天 地 上 一只 鵝 追 趕 下 蛋 恨

      3、課程設(shè)計報告內(nèi)容

      概要設(shè)計

      (1)建立了一個結(jié)構(gòu)體,用來定義棧

      struct SeqStack

      {

      char elem[Stack_Size];

      int top;};(2)基本操作

      void InitStack(SeqStack *s)//構(gòu)建棧

      void Push(SeqStack *s,char x)

      //入棧 void Pop(SeqStack *s,char *x)

      //出棧

      int Empty(SeqStack *s)

      //判棧是否為空

      (3)主函數(shù)

      定義所需的棧并初始化

      輸入要翻譯的魔王語言,入棧s

      將tAdA入棧B,將sae入棧A

      翻譯魔王語言:while(Empty(&s))

      {

      …..if(ch=='B'){…}

      else if(ch=='A'){…}

      else if(ch==')'){…}

      else Push(&r,ch);

      }

      輸出翻譯后的結(jié)果

      選擇是否繼續(xù)翻譯為漢語: 輸入1-? 輸出翻譯后的漢語,然后結(jié)束程序

      輸入0-? 結(jié)束程序

      4、總結(jié)

      一、這次課程設(shè)計的心得體會通過實踐我的收獲如下:

      鞏固和加深了對棧的理解,熟練地掌握了棧的運用(棧的初始化,判???,入棧,出棧等)。

      二、根據(jù)我在實習中遇到得問題,我將在以后的學習過程中注意以下幾點:

      1、認真上好專業(yè)課,牢固掌握課本中的基本知識。

      2、寫程序時多思考,克服不愿觸碰不懂地方的障礙,完善知識結(jié)構(gòu)。

      3、寫程序要嚴謹,多寫備注,方便檢查。

      4、在課余時間多翻閱課外相關(guān)書籍,多看程序,吸取別人程序中好的方法,熟悉后多加利用。

      5、程序清單:

      #include #define Stack_Size 100 using namespace std;

      struct SeqStack

      //定義棧 {

      char elem[Stack_Size];

      int top;};

      void InitStack(SeqStack *s)//構(gòu)建棧 {

      s->top=-1;}

      void Push(SeqStack *s,char x)

      //入棧 {

      if(s->top==Stack_Size-1)

      cout<<“棧已滿!”<

      else

      {

      s->top++;s->elem[s->top]=x;

      } }

      void Pop(SeqStack *s,char *x)

      //出棧 {

      if(s->top==-1)

      cout<<“棧為空!”<

      else

      {

      *x=s->elem[s->top];

      s->top--;

      } } int Empty(SeqStack *s)

      //判棧是否為空 {

      if(s->top==-1)

      return(0);

      else

      return(1);}

      void main(){

      SeqStack B,A,s,B1,A1,r,M,R;

      //定義棧

      char ch,ch1,ch2,x;

      char aa[100];

      int n;

      InitStack(&B);InitStack(&A);InitStack(&s);InitStack(&r);InitStack(&M);

      //對定義的棧初始化

      cout<

      //輸入要翻譯的魔王語言

      cin>>aa;

      Push(&B,'t');Push(&B,'A');Push(&B,'d');Push(&B,'A');

      //進棧B→tAdA

      Push(&A,'s');Push(&A,'a');Push(&A,'e');

      //進棧A→sae

      for(int i=0;aa[i]!='