《面向对象程序设计》课程界面设计练习题目

合集下载

面向对象程序设计练习题

面向对象程序设计练习题

面向对象程序设计练习题面向对象程序设计练习题面向对象程序设计是一种常用的软件开发方法,它将现实世界中的事物抽象成对象,通过定义对象的属性和方法来描述其行为。

这种编程方法可以提高代码的可重用性、可维护性和可扩展性。

下面将介绍几个面向对象程序设计的练习题,帮助读者更好地理解和应用这一编程方法。

1. 汽车租赁系统设计一个汽车租赁系统,包括汽车类、客户类和租赁记录类。

汽车类包括车牌号、品牌、型号和日租金等属性,客户类包括姓名、联系方式等属性,租赁记录类包括租车日期、租期和总租金等属性。

实现以下功能:- 客户可以查看可租赁的汽车列表;- 客户可以选择汽车租赁,并记录租车日期和租期;- 客户可以查看自己的租赁记录和总租金。

2. 图书管理系统设计一个图书管理系统,包括图书类、读者类和借阅记录类。

图书类包括书名、作者、出版社和价格等属性,读者类包括姓名、学号等属性,借阅记录类包括借书日期、归还日期等属性。

实现以下功能:- 图书管理员可以添加、删除和修改图书信息;- 读者可以查询图书信息,并借阅或归还图书;- 读者可以查看自己的借阅记录和逾期情况。

3. 银行账户管理系统设计一个银行账户管理系统,包括账户类、客户类和交易记录类。

账户类包括账户号码、余额等属性,客户类包括姓名、联系方式等属性,交易记录类包括交易日期、交易类型和交易金额等属性。

实现以下功能:- 客户可以查询账户余额;- 客户可以进行存款和取款操作,并记录交易记录;- 客户可以查看自己的交易记录和账户余额变动情况。

通过以上练习题,读者可以锻炼面向对象程序设计的能力,熟悉类的定义、属性和方法的使用,以及对象之间的交互。

在实现这些功能的过程中,读者需要考虑如何合理组织代码结构,如何处理异常情况,以及如何提高代码的可读性和可维护性。

在实际的软件开发中,面向对象程序设计是一种非常常用的编程方法。

它不仅可以提高代码的质量,还可以提高开发效率。

因此,掌握面向对象程序设计的技巧对于软件开发人员来说是非常重要的。

面向对象程序设计模拟题(C)

面向对象程序设计模拟题(C)

面向对象程序设计模拟题一、简答题:1. 什么是对象?什么是对象的事件和方法?试列举几个常用的事件和方法?答:对象是代码和数据的组合,可以作为一个单位来处理。

对象可以使应用程序的一部分,也可以是整个应用程序。

对象事件是对象可以识别的动作,即窗体、控件和其他对象可以识别的动作。

常用的事件有Click事件、Paint事件、Load事件等。

方法是对象要执行的动作,常见的有Clear、AddIRem、RemoveITem等。

2.VB有几种类型的表达式?请举例说明。

答:VB有5中类型的表达式,它们是算术表达式(例2*Pi*r*r)、字符串表达式(例“欢迎您”)、日期型表达式(例#11/22/98)、关系表达式(”abc”>”abcd”)和布尔表达式(2<=4AND6>3)。

二、填空题:1.单选按钮用于建立一组多选一的选项供用户选择,即在这些选项中,用户一次只能选择其中的一个选项选项,并且必须选择其中一个选项。

同时,当一个单选钮被选中时,其他选项自动关闭。

2.列表框是以列表形式显示一系列项目和信息,用户可通过单击其中某一项来选择的自己所需项目或信息。

在Windows中,使用列表框输出数据是保证数据标准化的重要手段,它是一个重要的输出控件。

在工具栏中它是一个标着带有滚动条的列表图案的按钮。

3.MsgBox 函数用来在对话框中显示消息,等待用户单击按钮,并返回一个整数,告诉程序用户单击了哪一个按钮。

4.在VB中有三种形式的数组,静态数组、动态的数组和控件数组。

静态数组就是指数组元素的个数在程序运行时保持不变,动态数组是指数组中的元素个数在程序运行时可以变化的数组,控件数组是使用VB中某些常用控件创建的数组。

使用静态数组、动态数组前必须要先声明,才能在程序中使用。

5.VB提供了图形控件,如Shape控件和Line控件。

它们提供一定的绘图样式,虽比较简单,但是使用非常方便,不需要编写代码,只要设置相应的属性即可。

面向对象程序设计练习题库与答案

面向对象程序设计练习题库与答案

面向对象程序设计练习题库与答案一、单选题(共36题,每题1分,共36分)1.下列关于静态内部类的说法,错误的是()A、静态内部类不能直接访问外部类的非静态成员B、静态内部类只能访问外部类的静态成员C、创建静态内部类的对象时,必须要先创建外部类的对象D、静态内部类,就是使用static关键字修饰的成员内部类正确答案:C2.以下选项中,哪个是FileInputStream的父类()A、FileB、FileOutputC、OutputStreamD、InputStream正确答案:D答案解析:FileInputStream是用来读取文件的字节流,属于InputStream类的子类。

3.下面关于FileInputStream和FileOutputStream的说法中,错误的是()A、FileInputStream是InputStream的子类,它是操作文件的字节输入流B、FileOutputStream是OutputStream的子类,它是操作文件的字节输出流C、如果使用FileOutputStream向一个已存在的文件中写入数据,那么写入的数据会被追加到该文件原先的数据后面D、使用FileInputStream读取文件数据时,必须保证要读取的文件存在并且是可读的正确答案:C答案解析:如果使用FileOutputStream向一个已存在的文件中写入数据,如果构造函数FileOutputStream的参数append的值是true,那么写入的数据才会追加到原先数据之后,否则的话,原先的数据会被清空,然后再写入新的数据。

4.下列关于类的说法中,错误的是()A、Java中创建类的关键字是class。

B、类中可以有属性与方法,属性用于描述对象的特征,方法用于描述对象的行为。

C、Java中对象的创建,首先需要定义出一个类。

D、一个类只能创建一个对象。

正确答案:D答案解析:类是对象的模板,对象是类的实例,一个类是可以创建多个对象的。

《面向对象程序设计(Java)》机试题库(含答案)

《面向对象程序设计(Java)》机试题库(含答案)

《面向对象程序设计(Java)》机试题库(含答案)1.编写一个字符界面的Java Application 程序,接受用户从键盘输入的一个正整数,然后统计并输出从1到这个正整数的累加和。

2.编写一个字符界面的Java Application 程序,接受用户输入的10个整数,并输出这10个整数的最大值和最小值。

3.编写一个完整的Java Applet 程序使用复数类Complex验证两个复数1+2i 和3+4i 相加产生一个新的复数4+6i 。

复数类Complex必须满足如下要求:(1)复数类Complex 的属性有:RealPart : int型,代表复数的实数部分ImaginPart : int型,代表复数的虚数部分(2)复数类Complex 的方法有:Complex( ) : 构造函数,将复数的实部和虚部都置0Complex( int r , int i ) : 构造函数,形参r 为实部的初值,i为虚部的初值。

Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。

String ToString( ) : 把当前复数对象的实部、虚部组合成a+bi 的字符串形式,其中a 和b 分别为实部和虚部的数据。

4.编写一个学生类Student ,要求:(1) 学生类Student 属性有:id : long型,代表学号name : String类对象,代表姓名age : int型,代表年龄sex : boolen型,代表性别(其中:true表示男,false表示女)phone : String类对象,代表联系电话(2) 学生类Student的方法有:Student(long i , String n , int a , boolean s , long p): 有参构造函数,形参表中的参数分别初始化学号、姓名、年龄、性别和联系电话。

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。

A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。

A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。

A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。

C++有(B)关联。

A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。

A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。

A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。

A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。

A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。

面向对象程序设计模拟试题-1

面向对象程序设计模拟试题-1
B、记录可以包含一个或多个字段,一种标准类型的数据也可以当成一条记录
C、对随机文件可以根据记录号进行读写
D、可用Input函数和Print函数进行随机文件的读写
10.在下列的( )事件中可以获取用户按下的键的ASCII码
A、KeyPressB、KeyUpC、KeyDownD、MouseUp
11.要使得文件列表框file1中只显示文件后缀名为bmp和jpg的图片文件,以下哪个语句是对的:()
4.水平滚动条HScroll1的LargeChange属性值为100,表示(C)为100
A、该滚动条值的最大值
B、拖动滚动框时滚动条值的变化量
C、单击滚动箭头和滚动框之间某位置时的滚动条值的变化量
D、单击滚动箭头时的滚动条值的变化量
5.与Microsoft SQL Server数据库连接,一般应采用中的()连接对象
14.要使窗体运行时,显示在屏幕的中央,应设置窗体的(C)属性
A、WindowState
B、StartPosition
C、CenterScreen
D、CenterParent
15.当一个窗体在可见状态下,由非活动窗体变成活动窗体时,产生的事件是:()
A、Load事件
B、Resize事件
C、Initialize事件
说明:此题中所需的数据库文件Henry Books.mdb在上机考试文件中,请找到此文件,用Access打开,找到Branch表,了解表结构设计。
二、单项选择题(在每小题的四个备选答案中选出一个正确答案,并将其号码填在题后的括号内。每小题2分,共30分)
1.下述的说法中,哪种是的程序设计方法:(D)
4.(共15分)数据库操作(在窗体Form3中完成,界面已设计好)

面向对象程序设计-1-标准答案

面向对象程序设计-1-标准答案

面向对象程序设计试卷标准答案及评分标准(1)一、上机题(70 分)1.(共20 分)(1)界面设计部分(1 分),将Form1~Form3 设成MDIFORM 的子窗体(设置Mdichild 属性为true)1 分,其余代码如下2 分Private Sub MDIForm_Load()Me.WindowState = 2End Sub(2)设计菜单1 分(过程略)Private Sub mnuExit_Click()If MsgBox("Are you sure?", vbQuestion + vbokcancel, "上机考试") = vbok Then Unload MeEnd IfEnd Sub ….2 分Private Sub mnuForm1_Click()Form1.ShowEnd SubPrivate Sub mnuForm2_Click()form2.ShowEnd SubPrivate Sub mnuForm3_Click()Form3.ShowEnd Sub ….2 分(3)设计状态栏2 分Private Sub Form_Activate()MDIForm1.StatusBar1.Panels(1).Text = Me.CaptionEnd Sub ….2 分(4)在菜单编辑器中设计菜单1 分Private Sub MDIForm_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 ThenPopupMenu mnureportEnd IfEnd Sub ….2 分(5)设计工具栏2 分Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.IndexCase 1mnuForm1_ClickCase 2mnuForm2_ClickCase 3mnuForm3_ClickCase 5mnuExit_ClickEnd SelectEnd Sub ….2 分2.(共12 分)(1)2.947676Private Sub Command1_Click()Dim n As IntegerDim E As SingleFor n = 0 To 50E = E + 1 / (2 * n + 1)NexttxtAnswer1.Text = CStr(E)End Sub变量定义正确,For 循环结构正确2 分,功能正确4 分(2)7.54293670171318Private Sub Command2_Click()Dim E As DoubleDim S As DoubleDim n As LongS = 1DoE = E + Sn = n + 1S = 1 / (2 * n + 1)Loop Until S < 0.000001txtAnswer2.Text = CStr(E)End Sub变量定义正确,Do 循环结构正确2 分,功能正确4 分4.(共23 分)Private mvarPName As StringPrivate mvarPrice As CurrencyPrivate mvarNumber As LongPublic Event NumberBelowPoint() ….2 分Public Enum errcodedierror = vbObjectError + 512 + 1End Enum ….1 分Public Sub ShowMe() ….2 分MsgBox "Name:" & mvarPName & "-Price:" & mvarPrice & "-Number:" & mvarNumber End SubPublic Sub Sale(ByVal intAmount As Long) ….3分mvarNumber = mvarNumber - intAmountIf mvarNumber < 20 ThenRaiseEvent NumberBelowPoint ….1分End IfEnd SubPublic Sub Add(ByVal intAmount As Long) ….3分If intAmount < 0 ThenErr.ClearErr.Raise dierror, "Class1", "无效的上架数量" ….2分End IfmvarNumber = mvarNumber + intAmountIf mvarNumber < 20 ThenRaiseEvent NumberBelowPoint ….1分End IfEnd SubPublic Property Let Number(ByVal vData As Long)mvarNumber = vDataIf mvarNumber < 20 ThenRaiseEvent NumberBelowPointEnd IfEnd Property ….1 分Public Property Get Number() As LongNumber = mvarNumberEnd Property ….1 分Public Property Let Price(ByVal vData As Currency)mvarPrice = vDataEnd Property ….1 分Public Property Get Price() As CurrencyPrice = mvarPriceEnd Property ….1 分Public Property Let PName(ByVal vData As String)mvarPName = vDataEnd Property ….1 分Public Property Get PName() As StringPName = mvarPNameEnd Property ….1分Private Sub Class_Initialize()mvarPName = "Computer"mvarPrice = 12.6mvarNumber = 20End Sub ….2 分4.(共15 分)Private Sub Command1_Click() ….1分DataEnvironment1.rsCommand1.MoveFirstEnd SubPrivate Sub Command2_Click() ….1分DataEnvironment1.rsCommand1.MovePreviousIf DataEnvironment1.rsCommand1.BOF Then DataEnvironment1.rsCommand1.MoveFirst End SubPrivate Sub Command3_Click() ….1分DataEnvironment1.rsCommand1.MoveNextIf DataEnvironment1.rsCommand1.EOF Then DataEnvironment1.rsCommand1.MoveLast End SubPrivate Sub Command4_Click() ….1分DataEnvironment1.rsCommand1.MoveLastEnd SubPrivate Sub Command5_Click() ….1分DataEnvironment1.rsCommand1.AddNewEnd SubPrivate Sub Command6_Click() ….1分DataEnvironment1.rsCommand1.UpdateEnd SubPrivate Sub Command7_Click() ….1分DataEnvironment1.rsCommand1.DeleteDataEnvironment1.rsCommand1.MoveNextIf DataEnvironment1.rsCommand1.EOF Then DataEnvironment1.rsCommand1.MoveLast End Sub报表设计略其中:表头正确1 分有日期栏1 分报表结束的汇总信息2 分报表显示正确:3 分二、选择题:(每题2 分,共30 分)1.D2.C3.D4.A5.C6.D7.C8.A9.D10. A11. C12. C13. D14. A15. D。

面向对象程序设计样卷

面向对象程序设计样卷

面向对象程序设计样卷一、选择题( 本大题共10小题, 每题2分, 共20分)4.在下列定义的引用中, ( B )是错误的。

A. int i;B. int i;int &j = i; float &j=i;C. float i;D. char d;float &j = i; char &e = d;5. 假定BB为一个类,则执行BB y;语句时将自动调用该类的( B )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7.下列对派生类的描述中, ( C )是错误的。

A. 一个派生类能够作为另一个派生类的基类B.派生类至少应有一个基类C. 基类中成员访问权限继承到派生类中都保持不变D.派生类成员除了自己定义的成员外, 还包含了它的基类成员10.控制输出格式的控制符中, ( D )是设置输出宽度的。

A.wsB.endsC. setfill()D.setw()二、填空题( 本大题共10小题, 每题2分, 共20分)1.以/*开始, 以*/结束, 在/*和*/之间的部分即为注释。

2.重载函数在参数类型或参数个数上不同, 但函数名和类名_相同。

3. 假如一个类的名称为MyClass, 使用这个类的一个对象初始化该类的另一个对象时, 能够调用__拷贝______构造函数来完成此功能。

4.当删除对象时, 程序自动调用析构函数。

5. 对于每一个类的非静态成员函数, 都有一个隐含的_this_______指针。

8. 抽象类是指类里有一个函数, 是纯嘘函数。

三、改错题( 下面程序或程序段中有一处错误, 请用注释标明错误所在行的出错原因。

本大题共5小题, 每题2分, 共10分) 1. #include<iostream>using namespace std;int main(){ cout<<"This is a program."<<endl;return 0;}2. #include<iostream>using namespace std;int main(){x=3;int y=x*x;cout<<"y="<<y<<"\n";return 0;}3. #include<iostream>using namespace std;class Aa{public:Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; } ~Aa(){ cout<<"Destructor "<<a<<endl; }void print( ){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}4.class A{int a,b;public:A(int aa,int bb=78){a=aa;b=bb;} };int main(){A x(2), y(4,9);return 0;}5. #include<iostream>using namespace std;class Test{public:static int x;};int Test :: x=20;int main(){cout<<Test::x;return 0;}四、程序分析题( 分析程序, 写出运行结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象程序设计》课程界面设计练习题目Windows NT系统内建了若干个的常用控件,极大地方便了Windows下可视化程序的开发。

对于初学者来说,能够熟练地使用这些控件,是学好C++面向对象编程的关键步骤。

为了指引初学者或者检验学习效果,下面设计了五个练习题目,囊括了大部分的常用控件,以及程序界面开发中常常使用的技术。

练习题目如下:一、播放器配置程序二、消息提示器三、流媒体管理器四、可定制背景的视图五、通讯簿一、播放器配置程序内容:制作一个基于对话框的播放器配置程序,能够从配置文件(*.ini )中读取设置信息;能够将修改后的设置信息保存在配置文件中。

界面如图1所示:图1 播放器设置界面目的:掌握使用VS 建立基于对话框的应用程序;熟悉标签(Static Text )、分组(Group Box )、按钮(Button )、编辑框(Edit Control )、组合框(Combo Box )、单选按钮(Radio Button )、复选框(Check Box )、热键设置控件(Hot Key )等常用控件的属性、事件;掌握配置文件(*.ini )的读写;学习MSDN 文档的查阅等。

要求:1、 控件1(组合框):不可输入文字,只能从下拉列表中选取一项,列表中的内容为:简体中文、繁軆中文、English ;2、 控件2(复选框):默认勾选。

3、 控件3(热键设置控件):当控件2勾选时,控件才3可编辑;当控件2未12 345678912 1314 15 161011勾选时,控件3灰掉(不可编辑);4、控件4~7(复选框):默认勾选控件4和控件5;5、控件8(编辑框):只能输入数字,范围1~60;6、控件9~11(一组单选按钮):默认选中控件9;7、控件12(按钮):当点击按钮时,在13中输出如图1所示的文字;8、控件13(编辑框):能够输入换行符,具有垂直滚动条,当文本框内容不能全部显示时,滚动条自动有效;9、控件14~16(按钮):按钮15初始不可用,当更改设置信息后才激活;接收回车提交命令;点击该按钮,将新的设置信息(控件12和13不触发配置信息改变)写回与程序同目录下,名称为config.ini配置文件中;点击按钮14时,如果设置信息有更改,将设置信息写入配置文件,并关闭对话框;若设置信息未发生改变,直接关闭对话框;点击16直接关闭对话框;10、配置文件读写要求:程序启动时若没有找到配置文件,能够按照默认设置初始化界面(按钮15激活),点击按钮14和15生成配置文件并写入设置信息,点击16则不生成配置文件;若找到配置文件,从文件中加载配置信息并初始化程序界面;11、对话框样式:对话框可以最小化,不能最大化,不可以改变大小;界面布局要工整;对话框初始时控件1取得焦点,按tab键焦点将按图中标注的序号逐一移动到下个控件上。

提示:1、复选框勾选状态的获取:可以将复选框与一个BOOL变量关联,通过BOOL变量得知其勾选与否;也可以获取其控件状态(state)来得到是否被勾选;可以响应复选框的单击事件来处理复选框状态改变时的任务;2、单选按钮组的概念:点选按钮有组的概念,同一组内的单选按钮相互排斥,只能有一个被点选;一个单选按钮A若具有GROUP=true属性,则紧跟其后的GROUP=false属性的单选按钮同A为一组,可以为A关联一个int型变量,改变量反应了该组内那个按钮被点选;3、配置文件的读写:配置文件(*.ini)为文本文件,常用于保存配置信息;系统具有GetPrivateProfileString、WritePrivateProfileString等函数用于操作配置文件,具体可参见MSDN中相关介绍;4、使用Tab键移动焦点:需要控件具有Tabstop属性;焦点移动的顺序与界面控件的排放顺序有关,可以在界面编辑界面按Ctrl+D显示控件的序号,在序号上点击可以修改控件的顺序。

二、消息提示器内容:制作一个基于对话框的消息提示器,能够添加、删除消息,轮流展现消息。

主界面如图2所示;点击“消息管理”,弹出消息管理界面,如图3所示;在消息管理界面点击“+”,弹出新建消息对话框,如图4所示。

图2 消息提示器 目的:进一步了解对话框的设置,如模态和非模态、置顶等;学会界面布局管理;掌握界面逻辑控制;掌握列表(List Box )控件的使用;掌握定时器的使用。

要求:1、控件1-1(复选框):设置属性为按钮样式;点击一次,按钮凹下,文字变为“取消置顶”,对话框置顶(主界面失去焦点,获得焦点的其他程序界面仍不能遮盖住主界面),再次点击按钮,按钮弹出,文字恢复为“置顶”,主界面取消置顶;2、控件1-2、1-3(按钮):点击按钮1-2弹出消息管理界面(模态),主界面不可操作;点击按钮1-3,按钮1-2灰掉(不可操作),按钮1-3文字变为“停止提示”,1-5中开始显示消息;再次点击按钮1-3,按钮1-2激活,按钮1-3文字恢复为“开始提示”;点击1-4,若正在提示消息,停止提示,然后退出程序;3、控件1-5(编辑框):用于显示提示的消息,能够显示多行文字,具有水平、垂直滚动条,只读,无边框;未进行消息提示时,内容为空;4、控件2-1、2-2(列表):项为消息名称;列表2-1显示不进行提示的消息;列1-11-51-2 1-31-4表2-2显示要进行提示的消息;图3 消息管理对话框图4 新建消息对话框5、 控件2-3(按钮):点击弹出新建消息对话框;6、 新建消息:输入名称和消息内容,点击按钮3-3,检查消息名称是否不为空,3-13-23-3 3-42-1 2-22-3 2-4 2-9 2-102-112-122-13 2-52-62-72-8若为空给出修改提示,不为空则创建新的消息,消息列表增加一项;点击“取消”不创建新的消息;7、控件2-4(按钮):点击按钮,若消息列表未选中一项给出提示;已选中一项,将选中项删除;8、控件2-5(按钮):点击按钮,若消息列表未选中一项给出提示;已选中一项,将其移动到提示列表;9、控件2-6(按钮):点击按钮,若提示列表未选中一项给出提示;已选中一项,将其移动到消息列表;10、控件2-7(按钮):点击按钮,将消息列表中的项全部移到提示列表;11、控件2-8(按钮):点击按钮,将提示列表中所有项移到消息列表;12、控件2-9(按钮):点击按钮,若提示列表未选中一项给出提示;已选中一项,将选中项上移一次(已位于最顶端的项不再移动);13、控件2-10(按钮):点击按钮,若提示列表未选中一项给出提示;已选中一项,将选中项下移一次(已位于最底端项不再移动);14、控件2-11(编辑框):用于设定轮流提示消息的时间隔,仅可输入数字,数值范围500~30000;15、界面逻辑:当提示列表中没有要提示的消息时,1-3灰掉;当提示列表中存在消息时,1-3激活;点击1-3,启动消息提示,按设定的时间间隔,依照提示列表中消息的顺序逐一在1-5中显示提示列表中的消息;16、对话框样式:标题栏上动态显示当前时间;主界面可用鼠标动态调整大小;当主界面大小改变时,其中按钮相对窗口边缘的位置不变,只有1-5大小发生变化。

提示:1、定时器的使用:启动定时器采用Cwnd::SetTimer函数,程序退出前应该调用CWnd::KillTimer停止之前启动的定时器;函数的具体使用方法参考MSDN 文档;2、对话框的置顶,界面控件位置、大小修改:可通过Cwnd::SetWindowsPos函数实现;函数的具体使用方法参考MSDN文档;三、流媒体管理器内容:制作一个基于单文档框架的流媒体管理器(视图类的基类为CFormView ),能够添加、删除流媒体,查看流媒体属性等,主界面如图5所示,菜单结构如图6所示,添加流媒体对话框如图7所示:图5 流媒体管理器图6 菜单结构图7 添加流媒体界面目的: 熟悉单文档程序框架;学会菜单、工具栏的编辑以及消息响应;掌握表格控件(List Control )、IP 地址控件(IP Address )、选项卡控件(Tab Control )的使1-1 菜单结构如图6 1-21-32-12-22-32-42-52-6用;了解右击快捷菜单的使用等。

要求:1、程序框架:单文档程序框架,视图类的基类为CFormView;主框架可以用鼠标调节大小;具备菜单栏1-1、工具栏1-2,不要状态栏;将默认主界面标题栏中的“–无标题”去掉;按照图5图6修改默认菜单和工具栏,菜单“视图”和“帮助”项不变,工具栏按钮依次为“添加流媒体”、“删除流媒体”、“属性”;2、控件1-3(表格):具有如图5示的报表样式及表头;填充整个View区域,改变程序窗口大小,1-3也调节大小;右击1-3中一项数据弹出如图5所示的快捷菜单,内容同主菜单“流媒体”项;3、菜单“流媒体”-“添加流媒体”:点击弹出添加流媒体对话框;4、控件2-1(编辑框):限最大字符数16;5、控件2-2(组合框):默认列表数据为“RTSP”、“MMS”、“HTTP”;用户也可以输入文字;6、控件2-3(IP地址控件);7、控件2-4(编辑框):可输入多行文字;限制最大字符数128;8、控件2-5、2-6(按钮):输入完设置信息,点击按钮2-5添加一个流媒体,同时1-3对应添加一项;若设置信息除备注外有空,将不添加流媒体,给出提示;点击按钮2-6放弃添加新的流媒体;9、界面逻辑:若没有1-3中未选中一项,菜单“流媒体”中“删除流媒体”、“属性”不可用,工具栏对应按钮不可用;10、界面逻辑:若1-3中选中一项,点击菜单“流媒体”-“删除流媒体”,弹出删除确认对话框,确认后删除选中的流媒体,点击工具栏“删除流媒体”按钮具有同样响应;11、界面逻辑:若1-3中选中一项,点击菜单“流媒体”-“属性”或工具栏按钮“属性”,弹出下图8所示的“流媒体属性”对话框;对话框具有两个页面,“常规”页面显示选中流媒体的信息(均不可编辑),“网络”页面显示网络状态(为简单起见,固定为图示内容)。

点击“确定”关闭属性对话框。

图8 流媒体属性-常规页面图9 流媒体属性-网络页面提示:1、去掉标题栏的“–无标题”:可以在函数CMainFrame::PreCreateWindow中去掉框架样式FWS_ADDTOTITLE;2、IP 地址控件内容的获取:可通过关联字符串的方式获取输入的IP地址;可通过关联DWORD整数的方式获取输入的IP地址;3、选项卡的使用:图8和图9共使用了三个对话框;通过在TabControl控件的区域内创建嵌入式的子对话框实现图示效果,子对话框具有Border=None、Style=Child的样式,然后通过CDialog::Creat函数创建,再调用ShowWindow 显示出来;在TabControl的切换事件中,根据选中的要显示页面索引,将对应的子对话框显示出来,将其它对话框隐藏起来;4、选项卡的替代者:属性页(CPropertySheet、CPropertyPage)也能实现选项卡的效果,可以在网络上查找使用方法;四、可定制背景的视图内容:制作单文档程序,如图10所示的效果,能够根据设置的“画面属性”在视图中绘制背景:1-1图10 主界面及菜单结构2-12-2 2-32-42-5 2-62-7 2-8图11 画面属性设置界面目的:掌握滑块控件(Slider Control)、提示条(ToolTip Control)的使用;了解自定义控件的方法;掌握文件浏览对话框(CFileDialog)、颜色选择对话框(CColorDialog)等常用对话框的使用;了解使用GDI绘制简单图形图像的方法等。

相关文档
最新文档