ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:290.52KB ,
资源ID:24933046      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24933046.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高级语言程序的设计大作业.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高级语言程序的设计大作业.docx

1、高级语言程序的设计大作业 高级语言程序设计大作业 班级:001112二零一二年十一月二十四1. 需求分析1.1. 问题描述用C#语言编写“电视机-遥控器”仿真程序,实现:1、 电视机可以打开、关闭、搜索节目、调节音量、加减换台。2、 遥控器可以遥控电视机进行打开、关闭、搜索节目、调节音量、加减换台、数字换台(输入1、2、3.可以切换频道)。3、 通过遥控器可以进行数字换台,通过操作电视机不能进行数字换台。4、 搜索电视频道用随机数实现,也即,每一次搜索到的频道数不同。5、 使用遥控器上的数字换台时,如果没有相应频道(如:选择45,而保存的频道只有29个)应给出相应提示。6,实现每个频道音量单独

2、调整(选做)。1.2. 对问题的理解这个问题的设定主要是老师为了考察一下我们这些初接触面向对象语言(C#)的学生面向对象的思想是否初步形成,题目以日常生活中我们频繁接触的电视机和遥控器作为仿真对象,通过建立一些类及其属性和方法,来实现对真实电视机和遥控器的功能及交互关系的仿真。 这个题目首先需要电视机和遥控器的两个类,而电视机上的控制功能遥控器都能实现,但是我认为又不将遥控器类设计成对电视机类的继承。因为频道的储存存在于电视机类中,遥控器和电视机控制频道和音量都是存储于这个二维数组,所以在遥控器类中应将各种方法的参数设为对电视机类的引用,在遥控器类中增加频道搜索功能。和多种换台模式2. 程序设

3、计2.1. 概要设计根据题目的要求,我要实现的功能应该有:电视机的打开,关闭,音量调节,加减换台。遥控器对电视机的打开,关闭,搜索节目,调节音量,加减换台,“-”(包括“-”,“1-”)键数字换台、09数字键盘换台.2.2. 详细设计; 对于电视机类,根据题目要求和我对自己家中老“春兰”牌彩电的了解,设计了符合题目要求的“春兰”彩电和遥控器的仿真,详细设计如下: 定义二维数组Channel200,2用来存储最多200个台(0199)和每个台的可单独调节的音量。 -构造函数 电视机类构造函数中,利用随机数函数产生一个21200的随机数,来表示电视机当前能搜到的所有台数。用for循环将每个台音量初

4、始化为20,因为对于作者熟悉的“春兰”彩电,最大音量为63,通常情况下正常收看电视时音量为20。这样可方便用户直接观看。-开关机方法public void TV_Open() public void TV_Close() 看关机方法在屏幕上输出提示,并显示电视机品牌的“Logo”,在屏幕上打出“-春兰-” -频道加减方法public void P_Add() public void P_Subtract() 我们平时遥控器上和电视机上控制频道加减的按键上都是字母“P”,所以这两个方法名字设为P加 和P减。本方法仿照电视机在换台时在屏幕上显示出当前频道,所以打印出“Present P: Pres

5、ent_Channel”的字符串。其中Present_Channel是表示当前频道数的int整型变量。在本方法中做了变化之后的频道值是在原频道数变化的基础上对总频道值取余的操作,这样便实现了当频道变化范围超出0199时,频道数循环。 -音量加减方法public void V_Add() public void V_Subtract() 我们平时遥控器上和电视机上控制音量加减的按键上都是字母“V”,所以这两个方法名字设为V加 和V减。本方法仿照电视机在换台时在屏幕上显示出当前音量,所以打印出Volume: ChannelPresent_Channel, 1的字符串。其中ChannelPresen

6、t_Channel, 1表示当前频道的音量。在本方法中做了对当前音量值的判断,如果音量变化超过063,则本方法对声音加减的操作不做出响应,这与实际相符。 在设计这些方法时,我设置了一个bool类型的变量public bool TVopened;作为状态变量,表示这个电视机目前是否被打开,这样在调用开机方法时必须是关机状态才会有响应,在调用其他方法时必须是开机状态才有响应。对于遥控器类,它实现了电视机类中的每一个方法,每个方法与在电视机类中对应方法同名且以电视机的的实例化引用为参数并在方法的实现上直接调用电视机类对应方法。同时按要求和常识,我们知道遥控器上应增加“频道搜索”功能。及遥控器类应增加

7、频道搜索方法,作者在设计中实现了频道自动搜索和对单个台的单独搜索频道功能。-频道自动搜索方法public void Auto_Channel_Search(Television_set TV),在设计这个方法时,我按照自己对题目要求的理解,按照如下操作设计了此方法:对电视自动搜台即把所有台用随机数的方法找出来,存储在前TV.Channels个频道中。- 频道手动搜索方法public void Manual_Channel_Search(Television_set TV),这个方法用来对 任意一个频道进行搜台。-换台方法public void Change_Channel(Television

8、_set TV,string command),在执行中如果输入“-”或“-”或“1-”,则可以跳跃换台,此时再次输入一个命令,此方法把此命令由string转换为int从而实现对Present_Channel的赋值操作,在此处由于我觉得在二次输入命令时需要进行输入格式的检验,但实现起来对我来说太困难了,所以就没有了格式检验这一步。3. 代码清单using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 电视机和遥控器仿真 /*电视机类* class Television_

9、set public int, Channel=new int200,2; /设电视机共能存储200个台,编号为0199,每个台都能单独调节音量 int i; public int Channels get;set; public bool TVopened; /电视机当前状态是否开机 public Television_set() System.Random a = new Random(System.DateTime.Now.Millisecond); Channels = a.Next(21, 200); /此构造函数确定电视机当前能搜到的所有台数,我假定台数在21200之间 for(i

10、=0;i200;i+) Channeli,1=20; /初始化每个台都有默认音量20; public int Present_Channel=1; public void TV_Open() if (!TVopened) Console.WriteLine(TV opened); Console.WriteLine(-春兰-); Console.WriteLine(); TVopened = true; public void TV_Close() if (TVopened) Console.WriteLine(TV closed); Console.WriteLine(-春兰-); Cons

11、ole.WriteLine(); TVopened = false; public void P_Add() if(TVopened) this.Present_Channel = (Present_Channel + 1) % 200; Console.WriteLine(P:0, Present_Channel); if (ChannelPresent_Channel, 0 = 0) Console.WriteLine(No channel!); else Console.WriteLine(Channel:0, ChannelPresent_Channel, 0); public voi

12、d P_Subtract() if (TVopened) this.Present_Channel = (Present_Channel - 1 + 200) % 200; Console.WriteLine(P:0, Present_Channel); if (ChannelPresent_Channel, 0 = 0) Console.WriteLine(No channel!); else Console.WriteLine(Channel:0, ChannelPresent_Channel, 0); public void V_Add() if (TVopened) if (Chann

13、elPresent_Channel, 1 0) /春兰电视机最大音量为63 ChannelPresent_Channel, 1-; Console.WriteLine(Volume:0, ChannelPresent_Channel, 1); /*遥控器类* class Distant_Controller public void TV_Open(Television_set TV) TV.TV_Open(); public void TV_Close(Television_set TV) TV.TV_Close(); public void P_Add(Television_set TV)

14、TV.P_Add(); public void P_Subtract(Television_set TV) TV.P_Subtract(); public void V_Add(Television_set TV) TV.V_Add(); public void V_Subtract(Television_set TV) TV.V_Subtract(); public void Auto_Channel_Search(Television_set TV) if (TV.TVopened) System.Random a = new Random(System.DateTime.Now.Mill

15、isecond); int j, k; int Channel_Found1; for (j = 0; j 200 & j TV.Channels; j+) /设自动搜索时电视机把每个台随机的搜出并保存在前面的频道数中,搜出所有台后停止搜索 for (k = 0, Channel_Found1 = a.Next(1, TV.Channels); k j; k+) if (TV.Channelk, 0 = Channel_Found1) continue; TV.Channelj, 0 = Channel_Found1; Console.WriteLine(Auto channel search

16、 completed); public void Manual_Channel_Search(Television_set TV) if (TV.TVopened) int Channel_Found2; System.Random b = new Random(System.DateTime.Now.Millisecond); /额 手动搜索又用到个随机数,换个名字吧 Channel_Found2 = b.Next(1, TV.Channels); TV.ChannelTV.Present_Channel, 0 = Channel_Found2; Console.WriteLine(Manu

17、al search completed); Console.WriteLine(P:0 The channel of this P:1, TV.Present_Channel, TV.ChannelTV.Present_Channel, 0); public void Change_Channel(Television_set TV,string command) if (TV.TVopened) TV.Present_Channel = int.Parse(command); if (TV.ChannelTV.Present_Channel, 0 = 0) Console.WriteLine

18、(P:0, TV.Present_Channel); Console.WriteLine(No channel!); else Console.WriteLine(Channel:0, TV.ChannelTV.Present_Channel, 0); public void Print_P(Television_set TV) /输出所有频道 if (TV.TVopened) int m; for (m = 0; m TV.Channels; m+) Console.WriteLine(P:0 Channel:1, m, TV.Channelm, 0); Console.WriteLine(

19、All of the Channels is shown.); /*Program类* class Program static void Main(string args) Television_set MyTV=new Television_set(); Distant_Controller MyDC = new Distant_Controller(); String Command; while(true) Command=Console.ReadLine();/下面是电视机上操作 if (Command = o) MyTV.TV_Open(); if (Command = c) My

20、TV.TV_Close(); if (Command = p+) MyTV.P_Add(); if (Command = p-) MyTV.P_Subtract(); if (Command = 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-) MyD

21、C.P_Subtract(MyTV); if (Command = rv+) MyDC.V_Add(MyTV); if (Command = rv-) MyDC.V_Subtract(MyTV); if (Command = as) MyDC.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-) /没能力实现输入格式的

22、检验 Command = Console.ReadLine(); MyDC.Change_Channel(MyTV, Command); 5运行结果电视机开机显示的logo,春兰大彩电频道加,频道减,显示当前各频道都没有台音量加减遥控器在实现上述功能时命令符前都加上“r”下面是遥控器特有操作:手动搜台:自动搜台自动搜台后显示所有搜到的台:下图显示搜到143个台换台遥控器关机6感谢与体会这是我在学了C#这门面向对象语言后,第一次全方位的相对比较自由的设计“类”,印象很深刻的是老师布置完作业时,感觉这可麻烦大了,我面向对象思想还没形成呢。而且老师还说不要去详细的把C#学玩,这只是个大作业而已。我当

23、时心想,这不学根本做不了啊。后来老师在课堂上举了像建立“汽车”这样的类的例子,于是自己慢慢有了些想法,但是对大作业还是一筹莫展。其实大一结束我就开始由C转向学C+了,但是选了这门课之后,我又转向学C#了,自己书桌上放了本C#的参考书。于是自己C#语法基础还算可以。 我是在十一月23号左右开始认真着手做大作业的,经过半天的思考,自己由一筹莫展渐渐开始有眉目了,于是我是在写大作业的同时编写程序的,甚至大作业要超前于报告的进程。自己的程序真是这样,从刚开始的一点点,一个方法一个方法的添,自己C语言编程的很多习惯还没完全改过来,有些函数在C#中不会用,以及变量的受限等等一些问题是自己经过看书上网搜逐一解决的。 于是渐渐发现老师布置的作业真的挺简单的,就是设计两个类而已,C#的语法根本用不多少。自己的这点底子再加上网络的帮助完全应付的了,自己在写报告的时候很真实的记录下来了自己的想法历程和一些小的idea。 这个大作业做下来,感觉收获太多了,最重要的是用C#编程时感觉自己在真正的像个程序员在工作了

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1