版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
高級(jí)語言程序設(shè)計(jì)大作業(yè)
班級(jí):001112
十一月二十四
1.需求分析
11問題描述
用C#語言編寫“電視機(jī)-遙控器”仿真程序,實(shí)現(xiàn):
1、電視機(jī)可以打開、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺(tái)。
2、遙控器可以遙控電視機(jī)進(jìn)行打開、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺(tái)、數(shù)字換
臺(tái)(輸入1、2、3.…可以切換頻道)。
3、通過遙控器可以進(jìn)行數(shù)字換臺(tái),通過操作電視機(jī)不能進(jìn)行數(shù)字換臺(tái)。
4、搜索電視頻道用隨機(jī)數(shù)實(shí)現(xiàn),也即,每一次搜索到的頻道數(shù)不同。
5、使用遙控器上的數(shù)字換臺(tái)時(shí),假如沒有相應(yīng)頻道(如:選擇45,而保存的頻道只有
29個(gè))應(yīng)給出相應(yīng)提醒。
6,實(shí)現(xiàn)每個(gè)頻道音量單獨(dú)調(diào)整(選做).
12對(duì)問題的理解
這個(gè)問題的設(shè)定重要是老師為了考察一下我們這些初接觸面向?qū)ο笳Z言(C#)的學(xué)生面
向?qū)ο蟮乃枷胧欠癯醪叫纬桑}目以平常生活中我們頻繁接觸的電視機(jī)和遙控器作為仿真對(duì)
象,通過建立一些類及其屬性和方法,來實(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ī)類的引用,在遙控器類中增長頻道搜索功能。和多種換臺(tái)模式
2.程序設(shè)計(jì)
21概要設(shè)計(jì)
根據(jù)題目的規(guī)定,我要實(shí)現(xiàn)的功能應(yīng)當(dāng)有:電視機(jī)的打開,關(guān)閉,音量調(diào)節(jié),加減換臺(tái)。遙
控器對(duì)電視機(jī)的打開,關(guān)閉,搜索節(jié)目,調(diào)節(jié)音量,加減換臺(tái),(涉及“1——”)
鍵數(shù)字換臺(tái)、0~9數(shù)字鍵盤換臺(tái).
22具體設(shè)計(jì);
對(duì)于電視機(jī)類,根據(jù)題目規(guī)定和我對(duì)自己家中老“春蘭”牌彩電的了解,設(shè)計(jì)了符合題
目規(guī)定的“春蘭”彩電和遙控器的仿真,具體設(shè)計(jì)如下:
定義二維數(shù)組Channel[200,2]用來存儲(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ù),來表
達(dá)電視機(jī)當(dāng)前能搜到的所有臺(tái)數(shù)。
用for循環(huán)將每個(gè)臺(tái)音量初始化為20,由于對(duì)于作者熟悉的“春蘭”彩電,最大音量
為63,通常情況下正常收看電視時(shí)音量為20。這樣可方便用戶直接觀看。
---開關(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)頻
道變化范圍超過。?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)前音量值的判斷,假如音量變化超過0?63,則本方法對(duì)聲音加減的
操作不做出響應(yīng),這與實(shí)際相符。
。在設(shè)計(jì)這些方法時(shí),我設(shè)立了一個(gè)b0O1類型的變量pub1icboolTVopened;作為狀態(tài)變
量,表達(dá)這個(gè)電視機(jī)目前是否被打開,這樣在調(diào)用開機(jī)方法時(shí)必須是關(guān)機(jī)狀態(tài)才會(huì)有響應(yīng),在
調(diào)用其他方法時(shí)必須是開機(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)增長“頻道搜索”功能。及遙控器類應(yī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ù)的方法找出來,存儲(chǔ)在前TV.Channels個(gè)頻道中。
--頻道手動(dòng)搜索方法PublicvoidManua1_Channe1_Search(Television_setT
V),這個(gè)方法用來對(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的賦值操作,在此處由于我覺得在二次輸入
命令時(shí)需要進(jìn)行輸入格式的檢查,但實(shí)現(xiàn)起來對(duì)我來說太困難了,所以就沒有了格式檢查這一步。
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)是否開機(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
-—〃)//沒能力實(shí)現(xiàn)輸入格式的檢查
{
Command=Conso1e.ReadLine();
MyDC.Change_Channe1(MyTV,Command);
)
5運(yùn)營結(jié)果
電視機(jī)開機(jī)顯示的1Ogo,春蘭大彩電
?file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/電視機(jī)彳仿真/…回區(qū)
o
TUopened
------------春蘭.
頻道加,頻道減,顯示當(dāng)前各頻道都沒有臺(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026新疆圖木舒克市馨潤園藝工程有限公司招聘1人備考題庫及一套答案詳解
- 2026江西九江市湖口縣第一批單位選調(diào)事業(yè)編制工作人員備考題庫有完整答案詳解
- 2026上半年云南事業(yè)單位聯(lián)考普洱招聘766人備考題庫附答案詳解
- 2026新疆新業(yè)有資產(chǎn)經(jīng)營(集團(tuán))有限責(zé)任公司招聘?jìng)淇碱}庫及1套完整答案詳解
- 2026四川綿陽三臺(tái)縣人民醫(yī)院招聘7人筆試參考題庫及答案解析
- 2026安徽省礦業(yè)機(jī)電裝備有限責(zé)任公司招聘1人備考題庫及1套完整答案詳解
- 2026中國醫(yī)學(xué)科學(xué)院醫(yī)藥生物技術(shù)研究所社會(huì)招聘18人備考題庫有答案詳解
- 2026中國人民財(cái)產(chǎn)保險(xiǎn)股份有限公司蚌埠市分公司醫(yī)療保險(xiǎn)崗位招聘2人備考題庫(安徽)及參考答案詳解1套
- 2026四川德陽市廣漢市廣電文化傳媒有限責(zé)任公司招聘6人備考題庫及答案詳解(易錯(cuò)題)
- 2026浙江溫州市蒼南縣人才發(fā)展有限公司招聘銀行勞務(wù)外包人員備考考試試題及答案解析
- (一診)重慶市九龍坡區(qū)區(qū)2026屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測(cè)(第一次)物理試題
- 2026新疆伊犁州新源縣總工會(huì)面向社會(huì)招聘工會(huì)社會(huì)工作者3人考試備考試題及答案解析
- 2026年榆能集團(tuán)陜西精益化工有限公司招聘?jìng)淇碱}庫完整答案詳解
- 2026廣東省環(huán)境科學(xué)研究院招聘專業(yè)技術(shù)人員16人筆試參考題庫及答案解析
- 2026年保安員理論考試題庫
- 2026年《必背60題》抖音本地生活BD經(jīng)理高頻面試題包含詳細(xì)解答
- 駱駝祥子劇本殺課件
- 2025首都文化科技集團(tuán)有限公司招聘9人考試筆試備考題庫及答案解析
- 農(nóng)業(yè)科技合作協(xié)議2025
- 2025年人保保險(xiǎn)業(yè)車險(xiǎn)查勘定損人員崗位技能考試題及答案
- DGTJ08-10-2022 城鎮(zhèn)天然氣管道工程技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論