久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

程序設計報告

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

第一篇:程序設計報告

《程序設計》課程設計

題目名稱:

學 院:

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

程序設計報告

《程序設計課程設計》

一.概述(題目內容)

本次設計程序題目為“愛”。

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

二.設計內容及其要求

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

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

三.設計思路、設計方法、設計工具

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

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

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

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

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

#include //調用圖形庫 #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()//加載視頻,播放視頻,關閉視頻 getch();//從鍵盤獲取 closegraph();//關閉程序

四.設計結果

五.總結

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

第二篇:Java程序設計報告

楚雄師范學院

2015年春季期末Java程序設計報告

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

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

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

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

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

目錄

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

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

引言

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

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

第一章 設計目的和要求

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

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

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

第二章JAVA語言概述

2.1 JAVA簡介

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

2.1.1 JAVA的基本特點

(1)簡單性

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

(2)面向對象

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

(3)多線程

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

(4)分布性

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

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

(6)安全性

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

2.2 JAVA工具

JDK

(1)Java編譯器

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

(2)Java解釋器

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

第三章 程序的設計思路和算法

3.1 人機博弈的要點

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

(1)某種在機器中表示棋局的方法,能夠讓程序知道博弈的狀態(tài)。(2)產生合法走法的規(guī)則,以使博弈公正地進行,并可判斷人類對手是否亂走。(3)從所有合法的走法中選擇最佳的走法技術。(4)一種評估局面優(yōu)劣的方法,用以同上面的技術配合做出智能的選擇。(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.五手兩打法:是指黑棋在下盤面上關鍵的第5手棋時,必須下兩步棋,讓白棋在這兩步棋中拿掉一粒棋子,然后再繼續(xù)對弈。一般說來,白棋肯定拿掉對白方不利的一點,而保留對黑方較為不利的那點讓黑方行棋。3.3 設計思路

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

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

第四章 測試及運行效果

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

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

圖4-2黑白棋博弈

4.3黑方贏的結果

圖4-3黑方勝利界面

4.4白方贏的結果

圖4-4白方勝利界面

第五章 設計體會與總結

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

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

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

附錄

源程序代碼及簡要說明:

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(“關于”);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ù)結構》程序設計報告

《數(shù)據(jù)結構》 課程設計報告

課程名稱: 課程設計題目:姓

名:

院系: 專

業(yè): 年

級: 學

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

俞曉沁 計算機學院

計算機科學與技術

大二

0905120

4王立波

2011年5月22日

1、課程設計的目的

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

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

2、需求分析

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

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

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

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

3、課程設計報告內容

概要設計

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

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

LinkList();

void Make_L(int n);

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

LNode *tail;

};

(3)基本操作

Void LinkList::LinkList();

//構造函數(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é)所學知識的能力。

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

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

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

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

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

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ù)結構實用教程(C++版)——電子工業(yè)出版社.[2]網(wǎng)上搜索相關程序作為參考

7、程序運行結果

《數(shù)據(jù)結構》 課程設計報告

課程名稱: 課程設計題目:姓

名:

院系: 專

業(yè): 年

級: 學

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

俞曉沁 計算機學院

計算機科學與技術

大二

0905120

4王立波

2011年5月22日

1.課程設計的目的

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

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

2.需求分析

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

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

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

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

3、課程設計報告內容

概要設計

(1)建立了一個結構體,用來定義棧

struct SeqStack

{

char elem[Stack_Size];

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

void InitStack(SeqStack *s)//構建棧

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);

}

輸出翻譯后的結果

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

輸入0-? 結束程序

4、總結

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

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

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

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

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

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

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

5、程序清單:

#include #define Stack_Size 100 using namespace std;

struct SeqStack

//定義棧 {

char elem[Stack_Size];

int top;};

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

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]!='

主站蜘蛛池模板: 老熟女高潮一区二区三区| 久久丝袜脚交足免费播放导航| 午夜亚洲aⅴ无码高潮片苍井空| 国产韩国精品一区二区三区| 国产成人精品2021| 国产成人久久精品一区二区三区| 免费观看全黄做爰的视频| 人妻丰满熟妇av无码区hd| 国产无套粉嫩白浆在线观看| 高潮又爽又无遮挡又免费| 日本一卡二卡3卡四卡网站精品| 国产高欧美性情一线在线| 国产亚洲精品久久久久蜜臀| 97精品人妻一区二区三区香蕉| 国产精品欧美久久久久久日木一道| 国产成人精品999视频| 无码免费的毛片基地| 麻豆国产av穿旗袍强迫女佣人| 精品一区二区不卡无码av| 亚洲中文字幕无码中文字在线| 玩弄japan白嫩少妇hd| 久艾草在线精品视频在线观看| 无码囯产精品一区二区免费| 曰韩无码av片免费播放不卡| 欧美牲交a欧美牲交aⅴ免费| 国产伦精品一区二区三区| mm1313亚洲国产精品无码试看| 人妻夜夜爽天天爽三区丁香花| 国产麻豆一精品av一免费软件| 精品久久久久久无码专区不卡| 亚洲av无码专区在线电影| 高清无码一区二区在线观看吞精| 亚洲 激情 小说 另类 欧美| 久久99精品久久久久久琪琪| 亚洲va久久久噜噜噜久久男同| 娇妻玩4p被三个男人伺候电影| 美丽的熟妇中文字幕| 国产系列丝袜熟女精品网站| 亚洲精品久久久久久动漫| 黑人大战日本人妻嗷嗷叫不卡视频| 77777_亚洲午夜久久多人|