版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度融資居間服務(wù)協(xié)議(智能制造)3篇
- 雨刷器課程設(shè)計(jì)
- 紅色文化課程設(shè)計(jì)圖
- 軸承故障診斷課程設(shè)計(jì)
- 統(tǒng)計(jì)專業(yè)哪些課程設(shè)計(jì)
- 麥稈畫(huà)課程設(shè)計(jì)
- 鐵桶下底沖壓模課程設(shè)計(jì)
- 長(zhǎng)治衛(wèi)校課程設(shè)計(jì)
- 植物卡片課程設(shè)計(jì)
- 長(zhǎng)發(fā)造型打理課程設(shè)計(jì)
- 常用靜脈藥物溶媒的選擇
- 當(dāng)代西方文學(xué)理論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購(gòu)銷協(xié)議3篇
- 2024-2030年中國(guó)高端私人會(huì)所市場(chǎng)競(jìng)爭(zhēng)格局及投資經(jīng)營(yíng)管理分析報(bào)告
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
- 《消防設(shè)備操作使用》培訓(xùn)
- 新交際英語(yǔ)(2024)一年級(jí)上冊(cè)Unit 1~6全冊(cè)教案
- 2024年度跨境電商平臺(tái)運(yùn)營(yíng)與孵化合同
- 2024年電動(dòng)汽車充電消費(fèi)者研究報(bào)告-2024-11-新能源
- 湖北省黃岡高級(jí)中學(xué)2025屆物理高一第一學(xué)期期末考試試題含解析
- 上海市徐匯中學(xué)2025屆物理高一第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
評(píng)論
0/150
提交評(píng)論