版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
高級語言程序設(shè)計(jì)大作業(yè)
班級:001112
十一月二十四
1.需求分析
11問題描述
用C#語言編寫“電視機(jī)-遙控器”仿真程序,實(shí)現(xiàn):
1、電視機(jī)可以打開、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺。
2、遙控器可以遙控電視機(jī)進(jìn)行打開、關(guān)閉、搜索節(jié)目、調(diào)節(jié)音量、加減換臺、數(shù)字換
臺(輸入1、2、3.…可以切換頻道)。
3、通過遙控器可以進(jìn)行數(shù)字換臺,通過操作電視機(jī)不能進(jìn)行數(shù)字換臺。
4、搜索電視頻道用隨機(jī)數(shù)實(shí)現(xiàn),也即,每一次搜索到的頻道數(shù)不同。
5、使用遙控器上的數(shù)字換臺時(shí),假如沒有相應(yīng)頻道(如:選擇45,而保存的頻道只有
29個(gè))應(yīng)給出相應(yīng)提醒。
6,實(shí)現(xiàn)每個(gè)頻道音量單獨(dú)調(diào)整(選做).
12對問題的理解
這個(gè)問題的設(shè)定重要是老師為了考察一下我們這些初接觸面向?qū)ο笳Z言(C#)的學(xué)生面
向?qū)ο蟮乃枷胧欠癯醪叫纬?,題目以平常生活中我們頻繁接觸的電視機(jī)和遙控器作為仿真對
象,通過建立一些類及其屬性和方法,來實(shí)現(xiàn)對真實(shí)電視機(jī)和遙控器的功能及交互關(guān)系的仿
真。
這個(gè)題目一方面需要電視機(jī)和遙控器的兩個(gè)類,而電視機(jī)上的控制功能遙控器都能實(shí)現(xiàn),
但是我認(rèn)為又不將遙控器類設(shè)計(jì)成對電視機(jī)類的繼承。由于頻道的儲存存在于電視機(jī)類中,
遙控器和電視機(jī)控制頻道和音量都是存儲于這個(gè)二維數(shù)組,所以在遙控器類中應(yīng)將各種方法
的參數(shù)設(shè)為對電視機(jī)類的引用,在遙控器類中增長頻道搜索功能。和多種換臺模式
2.程序設(shè)計(jì)
21概要設(shè)計(jì)
根據(jù)題目的規(guī)定,我要實(shí)現(xiàn)的功能應(yīng)當(dāng)有:電視機(jī)的打開,關(guān)閉,音量調(diào)節(jié),加減換臺。遙
控器對電視機(jī)的打開,關(guān)閉,搜索節(jié)目,調(diào)節(jié)音量,加減換臺,(涉及“1——”)
鍵數(shù)字換臺、0~9數(shù)字鍵盤換臺.
22具體設(shè)計(jì);
對于電視機(jī)類,根據(jù)題目規(guī)定和我對自己家中老“春蘭”牌彩電的了解,設(shè)計(jì)了符合題
目規(guī)定的“春蘭”彩電和遙控器的仿真,具體設(shè)計(jì)如下:
定義二維數(shù)組Channel[200,2]用來存儲最多200個(gè)臺(0?199)和每個(gè)臺的可單獨(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)前能搜到的所有臺數(shù)。
用for循環(huán)將每個(gè)臺音量初始化為20,由于對于作者熟悉的“春蘭”彩電,最大音量
為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ī)在換臺時(shí)在屏幕上顯示出當(dāng)前頻道,所以打印出
“PresentP:PresentChannelw的字符串。其中Present_Channel是表達(dá)當(dāng)前頻道數(shù)的i
nt整型變量。
在本方法中做了變化之后的頻道值是在原頻道數(shù)變化的基礎(chǔ)上對總頻道值取余的操作,這樣便實(shí)現(xiàn)了當(dāng)頻
道變化范圍超過。?199時(shí),頻道數(shù)循環(huán)。
。------音量加減方法publicvoidV_Add()
。。publicvoidVSubtrac10
我們平時(shí)遙控器上和電視機(jī)上控制音量加減的按鍵上都是字母“V",所以這兩個(gè)方法名字設(shè)為V加
和V減。本方法仿照電視機(jī)在換臺時(shí)在屏幕上顯示出當(dāng)前音量,所以打印出
Volume:Channe1[Present_Channel,1]的字符串。其中
Channel[Present_Channe1,1]表達(dá)當(dāng)前頻道的音量。
在本方法中做了對當(dāng)前音量值的判斷,假如音量變化超過0?63,則本方法對聲音加減的
操作不做出響應(yīng),這與實(shí)際相符。
。在設(shè)計(jì)這些方法時(shí),我設(shè)立了一個(gè)b0O1類型的變量pub1icboolTVopened;作為狀態(tài)變
量,表達(dá)這個(gè)電視機(jī)目前是否被打開,這樣在調(diào)用開機(jī)方法時(shí)必須是關(guān)機(jī)狀態(tài)才會有響應(yīng),在
調(diào)用其他方法時(shí)必須是開機(jī)狀態(tài)才有響應(yīng)。
對于遙控器類,它實(shí)現(xiàn)了電視機(jī)類中的每一個(gè)方法,每個(gè)方法與在電視機(jī)類中相應(yīng)方法同
名且以電視機(jī)的的實(shí)例化引用為參數(shù)并在方法的實(shí)現(xiàn)上直接調(diào)用電視機(jī)類相應(yīng)方法。同時(shí)按
規(guī)定和常識,我們知道遙控器上應(yīng)增長“頻道搜索”功能。及遙控器類應(yīng)增長頻道搜索方法,
作者在設(shè)計(jì)中實(shí)現(xiàn)了頻道自動搜索和對單個(gè)臺的單獨(dú)搜索頻道功能。
一—一頻道自動搜索方法publicvoidAutoChanne1_Search(TeIevisionset
TV),在設(shè)計(jì)這個(gè)方法時(shí),我按照自己對題目規(guī)定的理解,按照如下操作設(shè)計(jì)了此方法:對電視自動搜臺即
把所有臺用隨機(jī)數(shù)的方法找出來,存儲在前TV.Channels個(gè)頻道中。
--頻道手動搜索方法PublicvoidManua1_Channe1_Search(Television_setT
V),這個(gè)方法用來對任意一個(gè)頻道進(jìn)行搜臺。
----換臺方法pub1icvoidChange_Channel(Te1evision_setTV,stringcomma
nd),在執(zhí)行中假如輸入"-”或“--”或,則可以跳躍換臺,此時(shí)再次輸入一個(gè)命令,此方法把
此命令由string轉(zhuǎn)換為int從而實(shí)現(xiàn)對Present_Channe1的賦值操作,在此處由于我覺得在二次輸入
命令時(shí)需要進(jìn)行輸入格式的檢查,但實(shí)現(xiàn)起來對我來說太困難了,所以就沒有了格式檢查這一步。
3.代碼清單
usingSystem;
usingSystem.Co11ections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespace電視機(jī)和遙控器仿真
{
//**********************電視機(jī)類**************************************
classTelevision_set
(
pub1icint[,]Channel=newint[200,2];//設(shè)電視機(jī)共能存儲200個(gè)
臺,編號為0~199,每個(gè)臺都能單獨(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)前能搜到的所有臺數(shù),我假定臺數(shù)在2r200之間
for(i=0;i<200;i++)
Channel[i,11=20:〃初始化每個(gè)臺都有默認(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è)自動搜索時(shí)電視機(jī)把每個(gè)臺隨機(jī)的搜出并保存在前面的頻道數(shù)中,搜出所有臺后停止搜索
(
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);
〃額手動搜索又用到個(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)前各頻道都沒有臺
?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”
下面是遙控器特有操作:
手動搜臺:
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
自動搜臺
?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
自動搜臺后顯示所有搜到的臺:下圖顯示搜到143個(gè)臺
?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.
換臺
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)流程優(yōu)化基于數(shù)據(jù)的決策支持方案
- 珠寶鑒定與法律法規(guī)關(guān)系解析
- 2023九年級化學(xué)下冊 第九章 現(xiàn)在生活與化學(xué)9.4 化學(xué)物質(zhì)與健康第3課時(shí) 治病用的藥品、防范有害化學(xué)物質(zhì)、保護(hù)身體健康說課稿 科粵版
- Unit1 Making friends Part A Letters and sounds(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 3 學(xué)習(xí)有方法 說課稿-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- Unit 3 Fascinating parks Discover Useful Structures 說課稿 -2024-2025學(xué)年高中英語人教版(2019)選擇性必修第一冊
- 《2 拉拉手交朋友》說課稿-2023-2024學(xué)年道德與法治一年級上冊統(tǒng)編版
- 2023六年級數(shù)學(xué)上冊 三 分?jǐn)?shù)除法 1分?jǐn)?shù)除法第1課時(shí) 倒數(shù)的認(rèn)識說課稿 西師大版
- 2023三年級數(shù)學(xué)上冊 六 年、月、日第1課時(shí) 認(rèn)識年月日說課稿 西師大版
- 16海上日出J說課稿-2023-2024學(xué)年四年級下冊語文統(tǒng)編版
- 電力服務(wù)收費(fèi)標(biāo)準(zhǔn)附表
- 小學(xué)主題班會教學(xué)設(shè)計(jì)-《給你點(diǎn)個(gè)“贊”》通用版
- 【教學(xué)創(chuàng)新大賽】《系統(tǒng)解剖學(xué)》教學(xué)創(chuàng)新成果報(bào)告
- 賽意EAM設(shè)備管理IOT解決方案
- 氫氰酸安全技術(shù)說明書MSDS
- 動物檢疫技術(shù)-動物檢疫的范圍(動物防疫與檢疫技術(shù))
- 比較思想政治教育學(xué)
- 醫(yī)用內(nèi)窺鏡冷光源產(chǎn)品技術(shù)要求深圳邁瑞
- 砌墻磚和砌塊檢測作業(yè)指導(dǎo)書
- 護(hù)理教學(xué)查房評分標(biāo)準(zhǔn)
- GB/T 23505-2017石油天然氣工業(yè)鉆機(jī)和修井機(jī)
評論
0/150
提交評論