C++第一单元实验一第二题-菜单选择程序

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

【设计题目】

设计菜单选择趣味程序

【设计要求】

菜单是应用程序的界面,本题的任务是设计一个比较实用的菜单,通过菜单选择不同的功能。设计分为两步:首先设计一个含有多个菜单项的菜单演示程序,然后再为这些菜单项配上相应的功能。

菜单内容

程序运行后,界面给出3个菜单项的内容和输入提示。

1.解一元二次方程

2.出圈游戏

3.退出程序

选择l-3:

使用数字1-3来选择菜单项,执行相应的菜单项功能,其他输入则不起作用。

【总体设计】

一、菜单驱动程序

输入1-3之间的任意一个数字,即可进入相应选择项。从程序测试结果可知,当选择相应选择项时,其输出信息分别为:解一元二次方程、出圈游戏和退出程序。

1.主程序的设计

假设使用文件select.cpp,内容如下:

/*********************************

*select.cpp主程序文件

*********************************/

#include"cpp2.h"

void main()

{

handle_menu(); //调用菜单处理函数

}

2.实现循环和功能选择的设计-菜单处理函数

/*********************************

*菜单处理函数

*********************************/

void handle_menu(void)

{

for(; ;)

{

switch(menu_select())//调用菜单选择函数

{

case 1:

FindIt();//求解一元二次方程

break;

case 2:

game();//出圈游戏

break;

case 3:

cout<<"\t再见!\n";

return;

}

}

}

这里使用for循环实现重复选择,假设输入选择用变量用cn存储,它作为menu_select()函数的返回值提供给switch语句。

3.得到cn的合理值的设计-菜单选择函数

应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数

值cn,以便供给switch语句使用。

/*********************************

*菜单选择函数

**********************************/

int menu_select()

{

char s[2];

int cn;

cout<<"\t1.解一元二次方程\n";

cout<<"\t2.出圈游戏\n";

cout<<"\t3.退出程序\n";

cout<<"\t选择1-3:";

for(; ;)

{

gets(s);

cn=atoi(s); // 是为了使输入的字符串转变为数字

if(cn<1||cn>3)

printf("\n\t输入错误,重选1-3:");

else

break;

}

return cn;

}

二、求解一元二次方程

1.设计要求

这里要求编制一个求方程aX2+bx+c=0的根的程序。一般将系数设成float型,可以把求根变量设成double型,使用库函数sqrt()求平方根,sqrt()在头文件math.h中定义。

假设:d=b*b-4*a-c可以根据d>0、=0或<0来决定求解方法。

if(d>0)

{//有两个不相等的实数解}

else if(d==0)

{//有两个相等的实数解}

else

{//有两个不相等的虚数解}

2.设计方法

(1)设计一个FindRoot 类表示这个方程。

(2)在头文件cpp2.h 中声明类,在FindRoot.cpp 文件中定义成员函数。

(3)使用函数Findlt()作为菜单项。

3.类FindRoot 的设计

为了方便,除了将方程系数设计为属性之外,还将方程的根x1和x2,以及用来作为判定条件的d(d=b*b-4*a*c)均设计成类的属性。如图1是其类图,图2是对象obj 的对象图。

其中,成员函数Find()是用来求方程的根,Display()则用来输出结果。由此可见,它们都需要用到属性d 。可在构造函数中求出d 的值,其他成员函数直接使用这个属性,不必再去计算。

图1 类图 图2obj 对象图

①.设计构造函数

FindRoot::FindRoot(float x,float y,float z)

{

a=x;b=y;c=z;

d=b*b-4*a*c;

}

② 设计求根成员函数Find()

void FindRoot::Find()

{

if ( d>0)

{

x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);

return;

}

else if(d==0)

{

x1=x2=(-b)/(2*a);

return;

}

else

{

x1=(-b)/(2*a);

x2=sqrt(-d)/(2*a);

}

}

③设计输出结果的成员函数Display()

void FindRoot::Display()

{

if(d>0)

{

cout<<"x1="<

return;

}

else if(d==0)

{

cout<<"xl=x2="<

return;

}

else

{

cout<<"Xl="<

相关文档
最新文档