第六次作业解法一:一个类

以下源码使用一个类解决问题,耦合性较强,仅供参考

/**********************************************************/ //Function : main,雨刷控制程序 //parm : //comment : //return : void //Author : //date : 2011.11.6 /**********************************************************/ #include <iostream.h> #include <stdlib.h> class WindshieldWiper{ private: int wiperSpeed; //雨刷速度 int leverPosition; //控制杆位置 int dialPosition; //刻度盘位置 public: WindshieldWiper(int w,int l,int d); //构造函数 int getWiperSpeed(); //获取雨刷速度,用于显示输出 void setWiperSpeed(); //设置雨刷速度 int getLeverPostion(); //获取控制杆位置 void setLeverPosition(int); //设置控制杆位置 int getDialPosition(); //获取刻度盘位置 void setDialPosition(int); //设置刻度盘位置 void senseLeverUp(); //感知控制杆升挡 void senseLeverDown(); //感知控制杆降挡 void senseDialUp(); //感知刻度盘升挡 void senseDialDown(); //感知刻度盘降挡 }; WindshieldWiper::WindshieldWiper(int w,int l,int d) //Parm: w:雨刷速度; l:控制杆位置; d:刻度盘位置 { wiperSpeed = w; leverPosition = l; dialPosition = d; } int WindshieldWiper::getDialPosition() { return dialPosition; } int WindshieldWiper::getLeverPostion() { return leverPosition; } int WindshieldWiper::getWiperSpeed() { return wiperSpeed; } void WindshieldWiper::setDialPosition(int d) { dialPosition = d; } void WindshieldWiper::setLeverPosition(int l) { leverPosition = l; } void WindshieldWiper::setWiperSpeed() { if(leverPosition == 0) //控制杆位置为0挡 wiperSpeed = 0; //雨刷速度为0 else if(leverPosition == 1) //控制杆位置为1挡 { if(dialPosition == 1) //刻度盘位置为1挡 wiperSpeed = 4; else if(dialPosition == 2) //刻度盘位置为2挡 wiperSpeed = 6; else //刻度盘位置为3挡 wiperSpeed = 12; } else if(leverPosition == 2) //控制杆位置为2挡 wiperSpeed = 30; else //控制杆位置为3挡 wiperSpeed = 60; cout<<"Lever position is: "<<leverPosition<<endl; //输出 cout<<"Dial position is: "<<dialPosition<<endl; cout<<"Wiper speed is: "<<wiperSpeed<<endl; } void WindshieldWiper::senseDialDown() { switch(dialPosition) { case 1: break; case 2: setDialPosition(1);break; case 3: setDialPosition(2);break; } setWiperSpeed(); } void WindshieldWiper::senseDialUp() { switch(dialPosition) { case 1: setDialPosition(2);break; case 2: setDialPosition(3);break; case 3: break; } setWiperSpeed(); } void WindshieldWiper::senseLeverDown() { switch(leverPosition) { case 0: break; case 1: setLeverPosition(0);break; case 2: setLeverPosition(1);break; case 3: setLeverPosition(2);break; } setWiperSpeed(); } void WindshieldWiper::senseLeverUp() { switch(leverPosition) { case 0: setLeverPosition(1);break; case 1: setLeverPosition(2);break; case 2: setLeverPosition(3);break; case 3: break; } setWiperSpeed(); } void menu(WindshieldWiper &w) //菜单,此处将w作为参数并不好 { int flag; while(1) { cout<<"Please choose operation:"<<endl; cout<<endl<<"\t========1:Lever Up========"<<endl; cout<<"\t========2:Lever Down======"<<endl; cout<<"\t========3:Dial Up========="<<endl; cout<<"\t========4:Dial Down======="<<endl; cout<<"\t========0:Quit============"<<endl<<endl; cin>>flag; switch(flag) //选择操作 { case 1:w.senseLeverUp();break; case 2:w.senseLeverDown();break; case 3:w.senseDialUp();break; case 4:w.senseDialDown();break; case 0:exit(0); default: cout<<"Invalid number"<<endl; } } } //main函数 void main() { WindshieldWiper w(0,0,1); w.setWiperSpeed(); menu(w); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值