版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计大作业
班级:001112
二零一二年十一月二十四
1.需求分析
1.1.问题描述
用C#语言编写“电视机-遥控器”仿真程序,实现:
1、电视机可以打开、关闭、搜索节目、调整音量、加减换台。
2、遥控渊可以遥控电视机进行打开、关闭、搜索节目、调整音量、加减换台、数字换
台(输入1、2、3….可以切换频道)。
3、通过遥控器可以进行数字换台,通过操作电视机不能进行数字换台。
4、搜索电视频道用随机数实现,也即,每一次搜索到的频道数不一样。
5、使用遥控器上的数字换台时,假如没有对应频道(如:选择45,而保留的频道只有
29个)应给出对应提醒。
6,实现每个频道音量单独调整(选做)。
12对问题的理解
这个问题时设定重要是老师为了考察一下我们这些初接触面向对象语言(C#)的学生
面向对象aj思想与否初步形成,题目以平常生活中我们频繁接触的电视机和遥控器作为仿真
对象,通过建立某些类及其属性和措施,来实现对真实电视机和遥控器日勺功能及交互关系口勺
仿真。
这个题目首先需要电视机和遥控器的两个类,而电视机上的控制功能遥控器都能实现,
不过我认为又不将遥控器类设计成对电视机类的继承。由于频道的储存存在于电视机类中,
遥控器和电视机控制频道和音量都是存储于这个二维数组,因此在遥控器类中应将多种措施
的参数设为对电视机类的引用,在遥控器类中增长频道搜索功能。和多种换台模式
2.程序设计
21概要设计
根据题目“勺规定,我要实现的功能应当有:电视机的打开,关闭,音量调整,加减换台。
遥控器对电视机的打开,关闭,搜索节目,调整音量,加减换台,(包括
键数字换台、0~9数字键盘换台.
22详细设计;
对于电视机类,根据题目规定和我对自己家中老“春兰”牌彩电的理解,设计了符合题
目规定的“春兰”彩电和遥控器日勺仿真,详细设计如下:
定义二维数组Chann叫200,2]用来存储最多200个台(0〜199)和每个台的可单独调整
口勺音量。
--构造函数电视机类构造函数中,运用随机数函数产生一种2I〜200的随机数,来
表达电视机目前能搜到的所有台数。
用for循环将每个台音量初始化为20,由于对于作者熟悉的“春兰”彩电,最大音量为
63,一般状况下正常收看电视时音量为20。这样可以便顾客直接观看。
---开关机措施publicvoidTVOpen0
publicvoidTVCloseO
看关机措施在屏幕上输出提醒,并显示电视机品牌日勺“Logo”,在屏幕上打出
“春吐”
---频道加减措施publicvoidPAdd()
publicvoidP_Sublract()
我们平时遥控器I二和电视机上控制频道加减的按键上都是字母“P”,因此这两个措施名字设为P加和
P减。本措施仿照电视机在换台时在屏幕上显示出目前频道,因火打印出
“PresentP:Present_Channel”的字符串。其中Present_Chamel是表达目前频道数的int整型变量。
在本措施中做了变化之后的频道值站在原频道数变化的基础上对总频道值取余的操作,这样便实现了当频
道变化范围超过。〜199时,频道数循环。
----音量加减措施publicvoidVAdd()
publicvoidVSubtract()
我们平时遥控器上和电视机上控制音量加减的按键上都是字母“V”,因此这两个措施名字设为V加和
V减。本措施仿照电视机在换台时在屏幕上显示出目前音量,因此打印出
Volume:Channel[Present_Channel,1]『、J字符串。其中
Channel[Present_Channel,1]表达目前频道的音量。
在本措施中做了对目前音量值的判断,假如音量变化超过0〜63,则本措施对声音加减的操
作不做出响应,这与实际相符。
在设计这些措施时,我设置了一种bool类型的变量publicboolTVopened;作为状态变量,
表达这个电视机目前与否被打开,这样在调用开机措施时必须是关机状态才会有响应,在调
用其他措施时必须是开机状态才有响应。
对r遥控器类,它实现了电视机类中的每一种措施,每个措施与在电视机类中对应措施
同名且以电视机口勺的实例化引用为参数并在措施的实现上直接调用电视机类对应措施。同步
按规定和常识,我们懂得遥控器上应增长“频道搜索”功能。及遥控渊类应增长频道搜索措
施,作者在设计中实现了频道自动搜索和对单个台口勺单独搜索频道功能。
----频道自动搜索措施publicvoidAuto_Channel_Search(Television_setTV),在设计这个措
施时,我按照自己对题目规定的理解,按照如下操作设计了此措施:对电视自动搜台即把所有台用随机数
的措施找出来,存储在前TV.Channels个频道中。
-频道手动搜索措施publicvoidManual_Channel_Search(Television_setTV),这个措施用来
对任意一种频道进行搜台。
一换台措施publicvoidChangeChannel(TelevisionsetTV,stringcommand),在执行中假如输
入或“一”或,则可以跳跃换台,此时再次输入一种命令,此措施把此命令由string转换为
int从而实现对Present_Channel的赋值操作,在此处由于我觉得在二次输入命令时需要进行输入格式的
检查,但实现起来对我来说太困难了,因此就没行了格式检查这一步。
3.代码清单
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text:
namespace电视机和遥控器仿真
|
〃*******************材*电视机类*************************************************
classTelevisionset
publicint[,]Channel=newint[200,2];//设电视机共能存储200个台,编号为0〜
199,每个台都能单独调整音昼
inti;
publicintChannels
{get;set;}
publicboolTVopened;〃电视机目前状态与否开机
publicTelevisionset()
(
System.Randoma=newRandom(System.DateTime.Now.Millisecond);
Channels=a.Next(21,200);〃此构造函数确定电视机目前能搜
到的所有台数,我假定台数在21〜200之间
for(i=0;i<200;i++)
Channel[i,1]=20;〃初始化每个台均有默认音量20;
}
publicintPresentChannel=l;
publicvoidTV_0puii()
(
if(!TVopened)
{
Console.WriteLine("TVopened");
Console.WriteLine(*-------------------春兰------------*);
Console.WriteLineO;
TVopened=true;
)
)
publicvoidTV_Close()
(
if(TVopened)
(
Console.WriteLine(~TVclosedz,);
Console.WriteLine(*-------------------春兰------------*);
Console.WriteLineO;
TVopened=false;
)
}
publicvoidPAddO
(
if(TVopened)
{
this.Bres«it_Channel=(Present_Channel1)%200;
Console.WriteLine(Z,P:10!",PresentChannel);
if(Channel[Present_Channel,0]==0)
Console.WriteLineC^Xochannel!");
else
Console.WriteLine("Channel:O,",Channel[PresentChannel,0]);
)
)
publicvoidP_Subtract()
(
if(TVopened)
{
this.PresentChannel=(PresentChannel-1+200)%200:
Console.WritcLinc(z,P:{0}Prcscnt_Channcl);
if(Channel[Present_Channel,0]==0)
Console.WrileLine(z,Nochannel!");
else
Console.WriteLine("Channel:O",Channel[PresentChannel,0]);
)
)
publicvuidV_Add0
(
if(TVopened)
{
if(Channel(Presentchannel,1]<63)〃春兰电视机最
大音量为63
(
Channel[Present_Channel,1]++;
)
Console.WriteLine(Volume:{0}”,Channel[Eresent_Channel,1]);
)
)
publicvoidV_Subtract()
(
if(TVopened)
(
if(Channel[Prcscnt_Channcl,1]>0)〃春兰电视机最大
音量为63
{
Channel[Present_Channel,1]一;
}
Console.WriteLino("Volume:{01,z,Channel[Prcscnt_Channcl,1]);
)
)
classDistantController
publicvoidTVOp«i(TelevisionsetTV)
(
TV.TV_Open();
)
publicvoidTV_Close(Television_setTV)
(
TV.TV_C1OSQ();
)
publicvoidP_Add(To1evision_sctTV)
(
TV.P_Add();
)
publicvoidPSubtract(TelevisionsetTV)
(
TV.PSubtract0;
)
publicvoidV_Add(TelevisionsetTV)
(
TV.V_Add();
)
publicvoid'[Subtract(TelevisionsetTV)
(
TV.VSubtractO;
)
publicvoidAuto_Channel_Search(To1evisionsetTV)
(
if(TV.TVopened)
(
System.Randoma=newRandom(System.Date!ime.Now.Millisecond);
intj,k:
intChannelFound1;
for(j=0;j<200&&j<TV.Channels;j++)//设自动搜索时电视
机把每个台随机口勺搜出并保留在前面口勺频道数中,搜出所有台后停止搜索
{
for(k=0,Channel_Foundl=a.Next(l,TV.Channels):k<j;k++)
(
if(TV.Channel[k,0]=Channcl_Foundl)continue;
}
TV.Channel[j,0J=Channel_Found1;
Console.WriteLine(w.Autochannelsearchcompleted");
}
publicvoidManual_Channel_Search(TelevisionsetTV)
(
if(TV.TVopened)
{
intChannel_Found2;
System.Randomb=newRandom(System.Date!ime.Now.Millisecond):〃额手动
搜索又用到个随机数,换个名字吧
Channol_Found2=b.Next(1,TV.Channels);
TV.Channel[TV.PresentChannel,O'=ChannelFound2:
Console.WritcLinc("Manualsearchcompletedz);
Console.WriteLine(*P:{0}ThechannelofthisP:{1!*,TV.Present_Channel,
TV.Channel[TV.PresentChannel,0]);
)
)
publicvoidChange_Channel(lcIevisionsetTV,stringcommand)
(
if(TV.TVupvnud)
{
TV.PresentChannel=int.Parse(command);
if(TV.Channel[TV.Present_Channel,0]==0)
(
Console.WriteLineCP:{0}”,TV.Present_Channel);
Console.WriteLineCNochannel!");
}
else
Console.WriteLine("Channel::0;\TV.Channel[TV.Present_Channei,0]);
)
)
publicvoidPrint_P(Television_setTV)〃输所有频道
(
if(TV.TVopened)
(
intm;
for(m=0:m<TV.Channels;m++)
{
Console.WriteLine(*P:{0}Channel:{1}m,TV.Channel[m,0]);
}
Console.WritcLincCAl1oftheChannelsisshown.");
)
)
//********************Prograin类***************************************
classProgram
staticvoidMain(string[]args)
(
Television_setMyTV=newTelevision_set0;
DistantControl1erMyDC=newDistantControl1er();
StringCommand;
while(true)
|
Command=C(xisole.ReadLineO;
〃下面是电视机上操作
if(Command==*o*){MyTV.TV_Open();}
if(Command==*c*){MyTV.TV_Close();}
if(Command==*p+*)(MyTV.P_Add():}
if(Command==*p-*)(MyTV.PSubtract();}
if(Coiimiuud==*v+*){MyTV.V_Add(),}
if(Command==*v-*){MyTV.V_Subtract():}
〃下面是遥控器上操作
if(Command==*ro*){MyDC.TV_Open(MyTV);)
if(Command==*rc*){MyDC.TV_Close(MyTV);}
if(Command==*rp+*){MyDC.P_Add(MyTV):}
if(Command=="rp-"){MyDC.P_Subtract(MyTV);}
if(Command=="rv+"){MyDC.V_Add(MyTV);}
if(Command==*rv-*){MyDC.VSubtract(MyTV);}
if(Command==as){MylX^.Auto_Channel_Search(MyTV);}
if(Command=="ms"){MyDC.Manual_Channel_Search(MyTV);}
if(Command==“show一p"){MyDC.Print_P(MyTV);}
if(Command;||Command==*一*||Command==*1-")〃没能力实现输
入格式的检查
Command=Console.ReadLineO:
MyDC.Change_Channcl(MyTV,Command);
}
)
5运行成果
电视机开机显示的log。,春兰大彩电
频道加,频道减,显示FI前各频道都没有台
■file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/电视暹控方真/.
TUopened
------------春兰------------
P:2
Nochannel?
□channel?
p
p2
ochannel?
音量加减
■file:///C:/Users/Administrator/Documents/VisualStudio2008/Projects/电视机和遥控器(方真/...1=1里区
opened
P*
P:2
ochannel!
p
P3
bchannel!
P-
P:2
bchannel!
Uolume:21
Uolume:22
Uolume:21
遥控器在实现上述功能时命令符前都加上“r”
下面是遥控器特有操作:
手动搜台:
f■file:///C:/Users/Administrator/Documents/VisualStudio2008/Project.。回汉
TUopened
------------春兰------------
P+
P:2
Nochannel!
P+
P:3
Nochannel?
P-
P:2
Nochannel?
Iw+
lUolune:21
IBU"olume:22
■Uolune"21
■ms
■Manualsearchcompleted
■P:2ThechannelofthisP:152
自动搜台
■file:///C:/Users/Administrator/Documents/VisualStudio2008/Proiects/^,?fil^FUfli8^§§4^M/....=回法
TUopened
------------春兰------------
ochannel?
channel?
p
p2
ochannelf
Uolune:21
Uolune:22
olune:2i
nanualsearchcompleted
P:2ThechannelofthisP:152
Autochannelsearchcompleted
自动搜台后显示所有搜到的台:下图显示搜到143个台
*file:///C:/Users/Administrator/Documents/VisuaIStudio2008/Project"电视海口遥控割方真/…—―1一二
P:137Channel:115
P:138Channel1125
P:139Channel:94
P:140Channel:19
P:141Channel:54
P:142Channel:143
P:143Channel;130
P:144Channel:35
P:145Channel:??
P:146Channel二26
P:147Channel:1
P:148Channel:158
P:149Channel:96
P:150Channel:121
P:151Channel:19
P:152Channel:68
p:153Channel:86
P:154Channel:59
P:155Channel:6s
P:156Channel:47
P:157Channel:67
P:158Channel:68
P:159Channels143
AlloftheChannelsisshown.
换台
,回龙
file:///C:/Users/Administrator/Documents/VisualStudio2008/「「0)6€15/电视^^口遥控器仿真/...
:140Channel:!?
Channel:54
:142Channel:!.43
Channel:130
:144Channel:35
:145Channel:99
Channel:2b
:147Channel:1
:148Channel:158
:149Channel:96
Channel:121
:151Channel:!?
:152Channel:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中八年级数学一元二次方程的应用之增长率问题与利润问题教学设计
- 小学三年级科学教学设计:地球科普海报制作与科学表达
- 初中语文新课标古诗文深度剖析教学设计:《次北固山下》备考演练
- 小学四年级道德与法治《生命至上 拒绝踩踏》教学设计
- 高二地理教学设计:区际联系与区域协调发展期中复习
- 七年级地理教学设计:海洋资源的开发利用与保护
- 小学六年级道德与法治教学设计:红色基因润童心-以《红米饭南瓜汤》为例的主题班会实践探索
- 2026年甘肃省甘南州卓尼县刀告乡卫生院招聘村医考试备考试题及答案解析
- 2026年山西邮政人员招聘考试备考试题及答案
- 2026年天津市混凝土工理论知识专项训练习题及答案
- GB/Z 270-2026安全与韧性业务连续性管理体系业务连续性策略指南
- 2026年医疗废物分类及处理培训考试试题(附答案)
- GB/T 48315-2026鲁班工坊运行质量评估指南
- 2025年荆州市文旅集团公开招聘10名工作人员笔试参考题库附带答案详解
- 2026年初中物理教师能力测试卷
- 女性权益保障课件
- 2025国家药品监督管理局药品审评中心招聘笔试历年题及答案
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- 追寻合唱简谱国家大剧院
- 坡度变化条件下的车辆质量与道路参数联合估计算法
- 装饰工程计算培训
评论
0/150
提交评论