2023年高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)_第1頁(yè)
2023年高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)_第2頁(yè)
2023年高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)_第3頁(yè)
2023年高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)_第4頁(yè)
2023年高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

高級(jí)語(yǔ)言程序設(shè)計(jì)大作業(yè)

班級(jí):001112

十一月二十四

1.需求分析

11問(wèn)題描述

用C#語(yǔ)言編寫(xiě)“電視機(jī)-遙控器”仿真程序,實(shí)現(xiàn):

1、電視機(jī)可以打開(kāi)、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺(tái)。

2、遙控器可以遙控電視機(jī)進(jìn)行打開(kāi)、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺(tái)、數(shù)字換

臺(tái)(輸入1、2、3.…可以切換頻道)。

3、通過(guò)遙控器可以進(jìn)行數(shù)字換臺(tái),通過(guò)操作電視機(jī)不能進(jìn)行數(shù)字換臺(tái)。

4、搜索電視頻道用隨機(jī)數(shù)實(shí)現(xiàn),也即,每一次搜索到的頻道數(shù)不同。

5、使用遙控器上的數(shù)字換臺(tái)時(shí),假如沒(méi)有相應(yīng)頻道(如:選擇45,而保存的頻道只有

29個(gè))應(yīng)給出相應(yīng)提醒。

6,實(shí)現(xiàn)每個(gè)頻道音量單獨(dú)調(diào)整(選做).

12對(duì)問(wèn)題的理解

這個(gè)問(wèn)題的設(shè)定重要是老師為了考察一下我們這些初接觸面向?qū)ο笳Z(yǔ)言(C#)的學(xué)生面

向?qū)ο蟮乃枷胧欠癯醪叫纬桑}目以平常生活中我們頻繁接觸的電視機(jī)和遙控器作為仿真對(duì)

象,通過(guò)建立一些類及其屬性和方法,來(lái)實(shí)現(xiàn)對(duì)真實(shí)電視機(jī)和遙控器的功能及交互關(guān)系的仿

真。

這個(gè)題目一方面需要電視機(jī)和遙控器的兩個(gè)類,而電視機(jī)上的控制功能遙控器都能實(shí)現(xiàn),

但是我認(rèn)為又不將遙控器類設(shè)計(jì)成對(duì)電視機(jī)類的繼承。由于頻道的儲(chǔ)存存在于電視機(jī)類中,

遙控器和電視機(jī)控制頻道和音量都是存儲(chǔ)于這個(gè)二維數(shù)組,所以在遙控器類中應(yīng)將各種方法

的參數(shù)設(shè)為對(duì)電視機(jī)類的引用,在遙控器類中增長(zhǎng)頻道搜索功能。和多種換臺(tái)模式

2.程序設(shè)計(jì)

21概要設(shè)計(jì)

根據(jù)題目的規(guī)定,我要實(shí)現(xiàn)的功能應(yīng)當(dāng)有:電視機(jī)的打開(kāi),關(guān)閉,音量調(diào)節(jié),加減換臺(tái)。遙

控器對(duì)電視機(jī)的打開(kāi),關(guān)閉,搜索節(jié)目,調(diào)節(jié)音量,加減換臺(tái),(涉及“1——”)

鍵數(shù)字換臺(tái)、0~9數(shù)字鍵盤(pán)換臺(tái).

22具體設(shè)計(jì);

對(duì)于電視機(jī)類,根據(jù)題目規(guī)定和我對(duì)自己家中老“春蘭”牌彩電的了解,設(shè)計(jì)了符合題

目規(guī)定的“春蘭”彩電和遙控器的仿真,具體設(shè)計(jì)如下:

定義二維數(shù)組Channel[200,2]用來(lái)存儲(chǔ)最多200個(gè)臺(tái)(0?199)和每個(gè)臺(tái)的可單獨(dú)調(diào)

節(jié)的音量。

?一一-一構(gòu)造函數(shù)電視機(jī)類構(gòu)造函數(shù)中,運(yùn)用隨機(jī)數(shù)函數(shù)產(chǎn)生一個(gè)21-200的隨機(jī)數(shù),來(lái)表

達(dá)電視機(jī)當(dāng)前能搜到的所有臺(tái)數(shù)。

用for循環(huán)將每個(gè)臺(tái)音量初始化為20,由于對(duì)于作者熟悉的“春蘭”彩電,最大音量

為63,通常情況下正常收看電視時(shí)音量為20。這樣可方便用戶直接觀看。

---開(kāi)關(guān)機(jī)方法PublicvoidTV_Open()

。publicvoidTVClose()

看關(guān)機(jī)方法在屏幕上輸出提醒,并顯示電視機(jī)品牌的“Log。”,在屏幕上打出“一

__________________”

———頻道加減方法pub1icvoidP_Add()

。opublicvoidP_Subtract()

。我們平時(shí)遙控器上和電視機(jī)上控制頻道加減的按鍵上都是字母“P",所以這兩個(gè)方法名字設(shè)為P加和

P減。本方法仿照電視機(jī)在換臺(tái)時(shí)在屏幕上顯示出當(dāng)前頻道,所以打印出

“PresentP:PresentChannelw的字符串。其中Present_Channel是表達(dá)當(dāng)前頻道數(shù)的i

nt整型變量。

在本方法中做了變化之后的頻道值是在原頻道數(shù)變化的基礎(chǔ)上對(duì)總頻道值取余的操作,這樣便實(shí)現(xiàn)了當(dāng)頻

道變化范圍超過(guò)。?199時(shí),頻道數(shù)循環(huán)。

。------音量加減方法publicvoidV_Add()

。。publicvoidVSubtrac10

我們平時(shí)遙控器上和電視機(jī)上控制音量加減的按鍵上都是字母“V",所以這兩個(gè)方法名字設(shè)為V加

和V減。本方法仿照電視機(jī)在換臺(tái)時(shí)在屏幕上顯示出當(dāng)前音量,所以打印出

Volume:Channe1[Present_Channel,1]的字符串。其中

Channel[Present_Channe1,1]表達(dá)當(dāng)前頻道的音量。

在本方法中做了對(duì)當(dāng)前音量值的判斷,假如音量變化超過(guò)0?63,則本方法對(duì)聲音加減的

操作不做出響應(yīng),這與實(shí)際相符。

。在設(shè)計(jì)這些方法時(shí),我設(shè)立了一個(gè)b0O1類型的變量pub1icboolTVopened;作為狀態(tài)變

量,表達(dá)這個(gè)電視機(jī)目前是否被打開(kāi),這樣在調(diào)用開(kāi)機(jī)方法時(shí)必須是關(guān)機(jī)狀態(tài)才會(huì)有響應(yīng),在

調(diào)用其他方法時(shí)必須是開(kāi)機(jī)狀態(tài)才有響應(yīng)。

對(duì)于遙控器類,它實(shí)現(xiàn)了電視機(jī)類中的每一個(gè)方法,每個(gè)方法與在電視機(jī)類中相應(yīng)方法同

名且以電視機(jī)的的實(shí)例化引用為參數(shù)并在方法的實(shí)現(xiàn)上直接調(diào)用電視機(jī)類相應(yīng)方法。同時(shí)按

規(guī)定和常識(shí),我們知道遙控器上應(yīng)增長(zhǎng)“頻道搜索”功能。及遙控器類應(yīng)增長(zhǎng)頻道搜索方法,

作者在設(shè)計(jì)中實(shí)現(xiàn)了頻道自動(dòng)搜索和對(duì)單個(gè)臺(tái)的單獨(dú)搜索頻道功能。

一—一頻道自動(dòng)搜索方法publicvoidAutoChanne1_Search(TeIevisionset

TV),在設(shè)計(jì)這個(gè)方法時(shí),我按照自己對(duì)題目規(guī)定的理解,按照如下操作設(shè)計(jì)了此方法:對(duì)電視自動(dòng)搜臺(tái)即

把所有臺(tái)用隨機(jī)數(shù)的方法找出來(lái),存儲(chǔ)在前TV.Channels個(gè)頻道中。

--頻道手動(dòng)搜索方法PublicvoidManua1_Channe1_Search(Television_setT

V),這個(gè)方法用來(lái)對(duì)任意一個(gè)頻道進(jìn)行搜臺(tái)。

----換臺(tái)方法pub1icvoidChange_Channel(Te1evision_setTV,stringcomma

nd),在執(zhí)行中假如輸入"-”或“--”或,則可以跳躍換臺(tái),此時(shí)再次輸入一個(gè)命令,此方法把

此命令由string轉(zhuǎn)換為int從而實(shí)現(xiàn)對(duì)Present_Channe1的賦值操作,在此處由于我覺(jué)得在二次輸入

命令時(shí)需要進(jìn)行輸入格式的檢查,但實(shí)現(xiàn)起來(lái)對(duì)我來(lái)說(shuō)太困難了,所以就沒(méi)有了格式檢查這一步。

3.代碼清單

usingSystem;

usingSystem.Co11ections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespace電視機(jī)和遙控器仿真

{

//**********************電視機(jī)類**************************************

classTelevision_set

(

pub1icint[,]Channel=newint[200,2];//設(shè)電視機(jī)共能存儲(chǔ)200個(gè)

臺(tái),編號(hào)為0~199,每個(gè)臺(tái)都能單獨(dú)調(diào)節(jié)音量

inti;

pub1icintChannels

{get;set;}

pub1icboolTVopened;//電視機(jī)當(dāng)前狀態(tài)是否開(kāi)機(jī)

publicTelevision_set()

{

System.Randonia=newRandom(System.DateTime.Now.Millisecond);

Channels=a.Next(21,200);〃此構(gòu)造函數(shù)擬

定電視機(jī)當(dāng)前能搜到的所有臺(tái)數(shù),我假定臺(tái)數(shù)在2r200之間

for(i=0;i<200;i++)

Channel[i,11=20:〃初始化每個(gè)臺(tái)都有默認(rèn)音量20;

)

publicintPresent_Channe1=1;

publicvoidTVOpen()

(

if(!TVopened)

(

Console.WriteLine(HTVopened");

Console.WriteLine("------------------春蘭----------------");

Conso1e.WriteLine();

TVopened=true;

)

}

publicvoidTV_Close()

(

if(TVopened)

(

Console.WriteLine("TVclosed");

Conso1e.WriteLine('-------------------春蘭------------------

Console.WriteLine();

TVopened=false;

)

)

pub1icvoidP_Adcl()

{

if(TVopened)

(

this.Present_Channel=(Present_Channel+1)%200;

Console.WriteLine('P:{0}”,Present_Channel);

if(Channe1[Present_Channel,0]==0)

Console.WriteLine('*Nochannel!”);

else

Console.WriteLine(,zChannel:{O}^,Channel[Present_Channel,

0]);

)

}

publicvoidP_Subtract()

(

if(TVopened)

{

this.Present_Channe1=(Present_Channe1-1+200)%200;

Conso1e.WriteLine("P:{0}u,Present_Channe1);

if(Channe1[Present_Channel,0]==0)

Console.WriteLineNochanne1!”);

else

Conso1e.WriteLine("Channel:{0}”,Channel[Present_Channel,

0]);

)

)

publicvoidV_Add()

(

if(TVopened)

(

if(Channe1[Present_Channe1,1]<63)

//春蘭電視機(jī)最大音量為63

Channe1[PresentChanne1,1]++;

)

Console.WriteLine("Volume:{0}",Channe1[Present_Channe

1,1]);

)

}

publicvoidV_Subtract()

(

1f(TVopened)

(

if(Channel[PresentChannel,1]>0)

//春蘭電視機(jī)最大音量為63

{

Channe1[PresentChanne1,1]一;

)

Console.WriteLine(,zVoIurae:{0}",Channel[PresentChannel,1]);

}

}

)

//*********************遙控器類********************************

c1assDistantControl1er

(

publicvoidTV_Open(Te1evisionsetTV)

(

TV.TV_0pen();

)

pub1icvoidTVClose(Te1evision_setTV)

(

TV.TVCloseO;

}

publievoidPAdd(Television_setTV)

(

TV.P_Add();

)

pub1icvoidPSubtract(Te1evisionsetTV)

(

TV.P_Subtract();

)

pub1icvoidVAdd(TelevisionsetTV)

(

TV.V_Add();

)

publicvoidVSubtract(Television_setTV)

TV.V_Subtract();

publicvoidAutoChannel.Search(TelevisionsetTV)

(

if(TV.TVopened)

(

System.Randoma=newRandom(System.DateTime.Now.Mi11i

second);

intj,k;

intChannel_Found1;

for(j=0;j<200&&j<TV.Channels;j++)//

設(shè)自動(dòng)搜索時(shí)電視機(jī)把每個(gè)臺(tái)隨機(jī)的搜出并保存在前面的頻道數(shù)中,搜出所有臺(tái)后停止搜索

(

for(k=0,Channel_Found1=a.Next(1,TV.Channe1s);k<j;

k++)

(

if(TV.Channe1[k,0]==Channe1_Found1)continu

e;

)

TV.Channel[j,0]=Channel_Found1;

)

Console.WriteLine(z,Autochanne1searchcompleted");

)

}

publicvoidManua1_Channe1_Search(To1evisionsetTV)

{

if(TV.TVopened)

{

intChanneI_Found2;

System.Randomb=newRandom(System.DateTime.Now.Mi1lisecond);

〃額手動(dòng)搜索又用到個(gè)隨機(jī)數(shù),換個(gè)名字吧

ChanneIFound2=b.Next(1,TV.Channe1s);

TV.Channe1[TV.Present_Channel,0]=Channe1_Found2;

Console.WriteLine('*Manualsearchcompleted");

Console.WriteLine("P:{0}Thechanne1ofthisP:{1}”,TV.Pr

esent_Channel,TV.Channe1[TV.Present_Channe1,0]);

)

}

publicvoidChange_Channe1(TeIevision_setTV,stringcommand)

(

if(TV.TVopened)

TV.PresentChannel=int.Parse(command);

if(TV.Channel[TV.Present_Channel,0]==0)

(

Conso1e.WriteLine("P:{0}”,TV.Present_Channel);

Console.WriteLine("Nochanne1!”);

)

else

Console.WriteLine("Channel:{0}z/,TV.Channe1[TV.Present

_Channel,0]);

}

}

publievoidPrint_P(Television_setTV)//輸出所有頻道

(

if(TV.TVopened)

(

intm:

for(m=0;m<TV.Channels;m++)

(

Console.WriteLine('P:{0}Channel:{1}”,叫TV.Channel[m,0]);

)

Console.WriteLine(MA11oftheChanne1sisshown.");

}

)

)

//**************火*****Program類*************大**********大**************

classProgram

staticvoidMain(string[]args)

(

TelevisionsetMyTV=newTelevisionset();

DistantContro1JerMyDC=newDi$tant_Contvollei();

StringCommand;

whi1e(true)

(

Command=Console.ReadLine();

〃下面是電視機(jī)上操作

if(Command=="o"){MyTV.TV_Open。;}

if(Command==nc"){MyTV.TV_Close();}

if(Command二="p+"){MyTV.P_Add();}

if(Command=="p-"){MyTV.P_Subtract();}

if(Command=="v+"){MyTV.VAddO;}

if(Commancl=="v-"){MyTV.V_Subtract();}

〃下面是遙控器上操作

if(Command="ro"){MyDC.TV_Open(MyTV);}

if(Command=="rc"){MyDC.TVClose(MyTV);}

if(Command=二"rp+〃){MyDC.P_Add(MyTV);}

if(Coinmand=="rp—"){MyDC.P_Subtract(MyTV);}

if(Command="rv+"){MyDC.V_Add(MyTV);}

if(Command=="rv—"){MyDC.V_Subtract(MyTV);}

if(Command=="as"){MyDC.Auto_Channe1Search(MyTV);}

if(Command="ms"){MyDC.Manual_Channel_Search(MyTV);}

if(Command=="showp"){MyDC.Print_P(MyTV);}

if(Command=="-"|ICommand=="—"IICommand=="1

-—〃)//沒(méi)能力實(shí)現(xiàn)輸入格式的檢查

{

Command=Conso1e.ReadLine();

MyDC.Change_Channe1(MyTV,Command);

)

5運(yùn)營(yíng)結(jié)果

電視機(jī)開(kāi)機(jī)顯示的1Ogo,春蘭大彩電

?file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/電視機(jī)彳仿真/…回區(qū)

o

TUopened

------------春蘭.

頻道加,頻道減,顯示當(dāng)前各頻道都沒(méi)有臺(tái)

?file:///C:/Users/Administrator/Documents/VisualStudio2008/Project、健視機(jī)和遙控器仿真/…0回

o

TUopened

春蘭------------

■Nochannel?

P+

P:3

Nochanne1?

P-

P:2

Nochannel?

音量加減

遙控器在實(shí)現(xiàn)上述功能時(shí)命令符前都加上“r”

下面是遙控器特有操作:

手動(dòng)搜臺(tái):

1?file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/電視機(jī)和?真/.,10?回區(qū)

o

TUopened

春蘭,

P+

P:2

Nochannel?

P+

P:3

Nochannel?

P-

P:2

Nochannel?

u+

Uolune:21

u+

Uolune:22

Uolune:21

ms

Manualsearchcompleted

P:2ThechannelofthisP:152

自動(dòng)搜臺(tái)

?file:///C:/Users/Administrator/Documents/VisualStudio2008/Project$/電視機(jī)和?真/…三回

[TUopened

春蘭,

l:

■No2channel!

P+

P:3

Nochannel?

P:2

Nochannel?

ftJolune:21

lUolume:22

u-

Uolune:21

ms

Manualsearchcompleted

P:2ThechannelofthisP:152

as

Autochannelsearchcompleted

自動(dòng)搜臺(tái)后顯示所有搜到的臺(tái):下圖顯示搜到143個(gè)臺(tái)

?file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/電視機(jī)彳器仿助I口I回漢

P:137Channel:115

P:138Channel:125

P:139Channel:94

P:140Channel:19

P:141Channel:54

P:142Channel:143

P:143Channel:130

P:144Channel:35

P:145Channel:99

P:146Channel:26

P:147Channel:!

P:148Channel:158

P:149Channel:96

P:150Channel:121

P:151Channel:19

|P:152Channel:68

|P:153Channel:86

P:154Channel:59

P:155Channel:65

P:156Channel:47

P:157Channel:67

P:158Channel:68

P:159Channel:143

AlloftheChannelsisshov/n.

換臺(tái)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論