试题五(共15分)阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。【说明】已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。【C++代码】//头文件和域名空间略const int EMPLOYEE_NUM=5;class Employee{protected:int empCode; ∥员工号string name; ∥员工姓名double salary; ∥周发放工资public:Employee( const int empCode, const string name){this-empCode= empCode; this-name= name;}virtual~Employee(){}virtual void pay()=0;double getSalary(){ return this-salary; }};class Salaried (1){private: double payRate; //年薪public:Salaried(const int empCode,const string name,double payRate):Employee(empCode,name){this-payRate= payRate;}void pay(){this-salary=(2) ;//计算正式员工的周发放工资数coutthis-name":"this-salaryendl;}};class Hourly (3) {private:double payRate; //小时工资数int hours; //周工作小时数public:Hourly(const int empCode, const string name, int hours, double payRate):Employee(empCode,name){this-payRate= payRate; this-hours= hours,}void pay(){this-salary= (4) ;//计算计时工的周发放工资数coutthis-name":"this-salaryendl;}};class PayRoll{public:void pay(Employee* e[]){for (int i=0;iEMPLOYEE_ NUM; i++){e[i]-pay();}}};int main(){PayRoll* payRoll= new PayRoll;(5)employees[EMPLOYEE_ NUM]={new Salaried(l00l,"Zhang San", 58000.00),//此处省略对其他职工对象的生成new Hourly(1005,"L1", 12, 50.00),};payRoll-pay ( (6) );double total= 0.0;for (int i=0;i EMPLOYEE_NUM; i++){ total+=employees[il-getSalary(); } //统计周发放工资总额cout"总发放额="totalendl;delete payRoll; retum 0;}

试题五(共15分)

阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。

【说明】

已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。

下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。

【C++代码】

//头文件和域名空间略

const int EMPLOYEE_NUM=5;

class Employee{

protected:

int empCode; ∥员工号

string name; ∥员工姓名

double salary; ∥周发放工资

public:

Employee( const int empCode, const string &name){

this->empCode= empCode; this->name= name;

}

virtual~Employee(){}

virtual void pay()=0;

double getSalary(){ return this->salary; }

};

class Salaried (1){

private: double payRate; //年薪

public:

Salaried(const int empCode,const string &name,double payRate)

:Employee(empCode,name){

this->payRate= payRate;

}

void pay(){

this->salary=(2) ;//计算正式员工的周发放工资数

cout<<this->name<<":"<<this->salary<<endl;

}

};

class Hourly (3) {

private:

double payRate; //小时工资数

int hours; //周工作小时数

public:

Hourly(const int empCode, const string &name, int hours, double payRate)

:Employee(empCode,name){

this->payRate= payRate; this->hours= hours,

}

void pay(){

this->salary= (4) ;//计算计时工的周发放工资数

cout<<this->name<<":"<<this->salary<<endl;

}

};

class PayRoll{

public:

void pay(Employee* e[]){

for (int i=0;i<EMPLOYEE_ NUM; i++){

e[i]->pay();

}

}

};

int main(){

PayRoll* payRoll= new PayRoll;

(5)employees[EMPLOYEE_ NUM]={

new Salaried(l00l,"Zhang San", 58000.00),

//此处省略对其他职工对象的生成

new Hourly(1005,"L1", 12, 50.00),

};

payRoll->pay ( (6) );

double total= 0.0;

for (int i=0;i< EMPLOYEE_NUM; i++)

{ total+=employees[il->getSalary(); } //统计周发放工资总额

cout<<"总发放额="<<total<<endl;

delete payRoll; retum 0;

}


相关考题:

阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。从下列的3道试题(试题五至试题七)中任选1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。[说明] 编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1. dat”中。(1)include <fstream. h >include < stdlib. h >void main ( ) {(2)if ( ! four) {cerr < <“文件没有找开!” < <end1;exit (1);}int x;cin > >x;while((3)){(4)cin> >x;}(5)}

请阅读以下技术说明、类图及C++代码,根据要求将(1)~(5)空缺处的内容填写完整。[说明]已知对某载客车辆(Car)进行类建模,如图4-19所示。其中,类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[C++代码]car.run();}

阅读以下说明,回答问题1~6。ADSL是接入Internet的一种宽带技术,如图2所示为一台带网卡的PC机采用ADSL接入Internet的网络拓扑结构图。(1)和(2)空缺名称填写在答题纸对应的解答栏内。

阅读下面的说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。[说明]阅读以下说明,回答问题1~问题4,将解答填入答题纸对应的解答栏内。windows Server 2003是一个多任务多用户的操作系统,能够以集中或分布的方式实现各种应用服务器角色,是目前应用比较广的操作系统之一。Windows内置许多应用服务功能,将下表中(1)~(5)处空缺的服务器名称填写在答题纸对应的解答栏内。(1)

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。[说明]传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-15所示。下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。[C++代码1]请将以上[C++代码1]与[C++代码2]程序段中的(1)~(7)空缺处的语句填写完整。

阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 以下C++代码实现一个简单的聊天室系统(ChatRoomSystem),多个用户(User)可以向聊天室(ChatRoom)发送消息,聊天室将消息展示给所有用户。类图如图6-1所表示。图6-1 类图【C++代码】 includeiostream include string using namespace std; class User { private: string name; public: User(string name){ (1) =name; } ~User(){} void setName(string name) { this-name=name; } string getName(){ return name; } void sendMessage(string message); }; class ChatRoom { . public: static void showMessage(User* user, string message) { cout[user-getName()] : messageendl; } }; void User::sendMessage(string message) { (2) (this,message); } class ChatRoomSystem{ public: . . void startup() { User* zhang = new User(John); User* li = new User(Leo); zhang-sendMessage(Hi! Leo!); li_sendMessage(Hi! John!); } void join(User* user) { (3) (HeIIo Everyone! l am+user-getName()); } . }; int main(){ ChatRoomSystem*crs= (4) ; crs-startup(); crs-join( (5) (Wayne)); delete crs; } /* 程序运行结果: [John]:Hi! Leo! [Leo]:Hi! John! [Wayne]:Hello Everyone! I am Wayne /*

阅读以下关于软件测试的说明,回答司题l至问题3,将解答填入答题纸的对应栏内。【说明】使用在汽车、飞机中的嵌入式软件, 日于直接影响人的生命及财产安全,测试要求更为严格。语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖是通常对这类软件的要求。以下是一段C语言代码,请仔细阅读并回答相关问题:【问题1】(6分)请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖和MC/DC覆盖的含义。将答案填写在答题纸的对应栏中。【问题2】(5分)画出以上代码的流程图,将答案填写在答题纸的对应栏中。【问题3】(4分)请根据【说明】中的C语言代码,计算满足MC/DC覆盖要求的用例数量及条件取值范围,将答案填写在答题纸的对应栏中.

阅读下列说明、c++代码和运行结果,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。【说明】很多依托扑克牌进行的游戏都要先洗牌。下面的c++程序运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。【c++代码】inciude <iostream>4Finclude <stdlib. h>include <ctime>inciude <aigorithm>include <string>Using namespace stdConst string Rank[13]={”A”,”2”,”3”,”4“,“5”,”6,”’“7”8“,9”,”10,”J”,”Q”,”K”}j//扑克牌点数

阅读以下说明和Java程序,填补代码中的空缺(1)~(6),将解答填入答题纸的对应栏内。【说明】很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。【Java代码】

阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某灯具厂商欲生产一个灯具遥控器,该遥控器具有7个可编程的插槽,每个插槽都有开关按钮,对应着一个不同的灯。利用该遥控器能够统一控制房间中该厂商所有品牌灯具的开关,现采用Command(命令)模式实现该遥控器的软件部分。Command模式的类图如图5-1所示。【c++代码】}

试题三(共 15 分)阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

试题六(共 15 分)阅读以下说明和 C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]C++标准模板库中提供了 vector 模板类,可作为动态数组使用,并可容纳任意数据类型,其所属的命名空间为 std。vector模板类的部分方法说明如下表所示:[C++代码]include iostreaminclude vectorusing namespace (1) ;typedef vector (2) INTVECTOR;const int ARRAY_SIZE = 6;void ShowVector(INTVECTOR theVector);int main(){INTVECTOR theVector;// 初始化 theVector,将 theVector的元素依次设置为 0 至 5for (int cEachItem = 0; cEachItem ARRAY_SIZE; cEachItem++)theVector.push_back( (3) );ShowVector(theVector); // 依次输出 theVector中的元素theVector.erase(theVector.begin() + 3);ShowVector(theVector);}void ShowVector(INTVECTOR theVector) {if (theVector.empty()) {cout "theVector is empty." endl; return;}INTVECTOR::iterator (4) ;for (theIterator = theVector.begin(); theIterator != theVector.end(); theIterator++){cout *theIterator;if (theIterator != theVector.end()-1) cout ", ";}cout endl;}该程序运行后的输出结果为:0, 1, 2, 3, 4, 5(5)

从下列2道试题(试题五至试题六)中任选 1道解答。如果解答的试题数超过1道,则题号小的1道解答有效。试题五(共15分)阅读以下说明、图和C++代码,填补C++代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。【说明】已知对某几何图形绘制工具进行类建模的结果如图5.1所示,其中Shape为抽象类(应至少包含一个纯虚拟( virtual)函数),表示通用图形,Box表示矩形,Ellipse表示椭圆,Circle表示圆(即特殊的椭圆),Line表示线条。下面的C++代码用于实现图5-1所给出的设计思路,将其空缺处填充完整并编译运行,输出结果为:EllipseCircleEllipseCE【C++代码】include stringinclude iostreamusing namespace std;class Shape{public:Shape(const string name){m_name= name;}~Shape(){}(1) void paint() = 0;stringgetName()const {retumm name;}Private:string m_name;};//Box和 Line类的定义与 Ellipse类似,其代码略classEllipse (2) {public:Ellipse(const string name) : Shape(name){ cout"Ellipse" endl; }Voidpaint() { coutgetName()endl;}};classCircle (3) {public:Circle(const string name) : Ellipse(name){ cout"Circl"endl; }};class Diagram {public:void drawAShap(Shape* shape){ shape-paint(); }void drawShapes() {shapes[0] = new Circle("C");shapes[l] = new Ellipse("E");for (int i=O;i2; ++1) {drawAShap(shapes[i]);}}void close (){ /*删除形状,代码略 */ }private:Shape* shapes[2];};int main( ){Diagram* diagram = (4)diagram-drawShapes();diagram-close ();(5) diagram;}

阅读以下说明和C++程序代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】在下面的C++代码中,类SalesTicket能够完成打印票据正文的功能,类HeadDec- orator与FootDecorator分别能够完成打印票据的台头和脚注的功能。已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。这是票据的台头!这是票据正文!这是票据的脚注!---------------这是票据的台头!这是票据的脚注!【C++程序代码】#includeusing namespace std;class SalesTicket {public:(1) printTicket() { cout " 是票据正文!" endl;}class Decorator : public SalesTicket{SalesTicket *ticket;public:Decorator(SalesTicket *t){ ticket = t; }void printTicket(){if(ticket != NULL)ticket->printTicket();}};class HeadDecorator : public Decorator{public:HeadDecorator(SalesTicket *t): (2) { }void printTicket() {sour "这是票据的台头!" endl;Decorator::printTicket();}};class FootDecorator :public Decorator{public:FootDecorator(SalesTicket *t): (3)void printTicket() {Decorator::printTicket();cout "这是票据的脚注!" endl;}};void main(void) {SalesTicket t;FootDecorator f(t);HeadDecorator h( (4) );h.printTicket();cout "-------------------------" endl;FootDecorator a(NULL);HeadDecorator b( (5) );b.printTicket();}

阅读下列说明和 C ++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留 下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图 6-1 所示。【C++ 代码】#includeusing namespace std;class BrakeBehavior{public:(1) ; /*其余代码省略*/};class LongWheelBrake : public BrakeBehavior{public:void stop(){cout

阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】 #include using namespace std; class invoice{ public: (1){ cout

阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。 【说明】以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。【C++代码】#include #include using namespace std;class DrawCircle { //绘制圆形,抽象类 public: (1) ;//定义参数为 int radius, int x, int y virtual~DrawCircle() { }}; class RedCircle:public DrawCircle { //绘制红色圆形 public: void drawCircle(int radius, int x, int y) { cout drawCircle = drawCircle; } virtual~shape() { } public: virtual void draw() = 0;}; class Circle:public Shape { //圆形 private: int x,y,radius; public: Circle(int x,int y,int radius,DrawCircle *drawCircle) (3) { this->x = x; this->y = y; this->radius = radius; } public: void draw() { drawCircle -> (4) ; }}; int main(){ Shape *redCircle=new Circle(100,100,10, (5) );//绘制红色圆形 Shape *greenCircle=new Circle(100,100,10, (6) );//绘制绿色圆形 redCircle ->draw(); greenCircle ->draw(); return 0;}

阅读以下C代码,回答问题1和问题2,将解答填入答题纸的对应栏内。【C代码1】【问题2】写出【代码2】的运行时的输出结果。

试题六(共 15 分)阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下 C++代码实现一个简单的聊天室系统(ChatRoomSystem),多个用户 (User)可以向聊天室(ChatRoom)发送消息,聊天室将消息展示给所有用户。 类图如图 6-1 所表示。 【C++代码】#include#include using namespace std; class User {private:string name; public:User(string name){ (1) =name;}~User(){} void setName(string name) {this->name=name; } string getName(){return name;}void sendMessage(string message); }; class ChatRoom { . public:static void showMessage(User* user, string message) { coutgetName()"] : " zhang->sendMessage("Hi! Leo!");li_>sendMessage("Hi! John!"); }void join(User* user) { (3) ("HeIIoEveryone!l am"+user->getName()); . ;} . };int main(){ChatRoomSystem*crs= (4) ; crs->startup();crs->join( (5) ("Wayne")); delete crs; }/* 程序运行结果: [John]:Hi! Leol [Leo]:Hi! John![Wayne】:Hello Everyone!Iam Wayne/*

试题六(共 15 分)阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下 C++代码实现一个简单客户关系管理系统(CrM)中通过工厂(Customerfactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(realCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取的对象。类间关系如图6-1 所示。【C++代码】#include#includeusing namespace std; class Customer{protected:string name;public:(1) boll isNil()=0;(2) string getName()=0;﹜; class realCustomer (3){public:realCustomer(string name){this->name=name;﹜bool isNil(){ return false;﹜string getName(){ return name;﹜﹜; class NullCustomer (4) {public:bool isNil(){ return true;﹜string getName(){ return 〝Not Available in Customer Database〞; ﹜﹜;class Customerfactory{public:string names[3]={〝rob〞, 〝Joe〞,〝Julie〞﹜;public:Customer*getCustomer(string name){for (int i=0;igetCustomer(〝rob〞);Customer*customer2=cf->getCustomer(〝Bob〞);Customer*customer3=cf->getCustomer(〝Julie〞);Customer*customer4=cf->getCustomer(〝Laura〞); coutgetName() getName() getName() getName() getCustomer();delete crs;return 0;﹜ /*程序输出为:CustomersrobNot Available in Customer DatabaseJulieNot Available in Customer Database*/

阅读以下C++代码,回答问题(1)~(5),将解答填入答题纸的对应栏内。【说明】以下C++代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如题6-1所示,包括:乐器(Instrument)、打击乐器(Percussion)、弦乐器(Stringed)、管乐器(Wind)、木管乐器(Woodwind)、铜管乐器(Brass)。

阅读下列说明,补充(1)-(9),将解答填入答题纸的对应栏内。

阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。【说明】设[a1b1],[a2b2],...[anbn]是数轴上从左到右排列的n个互不重叠的区间(a1

阅读以下说明,回答问题1至问题2,将解答填入答题纸对应的解答栏内。【说明】某留言系统采用ASP+Access开发,其后台管理登录页面如图4-1所示。【问题1】(9分)以下是该后台管理登录页面login.asp的部分代码,请仔细阅读该段代码,根据图4-1 将(1)~(9)的空缺代码补齐。【问题2】(6分)1.在登录页面 login.asp 中通过导入了bbb.asp的代码,以下是bbb.asp的部分代码,请仔细阅读该段代码,将空缺代码补齐。

阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明】 Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。

阅读下列说明和C++代码,回答问题,将解答填入答题纸的对应栏内。【说明】某航空公司的会员积分系统将其会员划分为:普卡 (Basic)、银卡(Silver)和金卡 (Gold) 三个等级。非会员 (NonMember) 可以申请成为普卡会员。会员的等级根据其一年内累积 的里程数进行调整。描述会员等级调整的状态图如图 5-1 所示。现采用状态 (State) 模式实现上述场景,得到如图 5-2 所示的类图。【问题1】(15分)阅读上述说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。【C++代码】using namespace std;class Book;class Visitor {public: virtual void visit(Book* book)=0; //其它物品visit方法}; class Item {public:virtual void accept(Visitor* visitor)=0; virtual doublegetPrice()=0;};class Book (1){private: double price;public: Book (double price){ //访问本元素 (2); } void accept(Visitor* visitor) { (3); }double getPrice(){ returnprice; }};class Cashier(4){private; double totalForCart;public: //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book->getPrice()getPrice(); } else totalForCart+=book->getPrice()*0.8; } //其它visit方法和折扣策略类似,此处略 double getTotal() { return totalForCart; }};class ShoppingCart {private: vectoritems;public: double calculatePrice() { Cashier* visitor=new Cashier(); for(int i=0;i getTotal(); return total; } void add(Item*e) { items.push_back(e); }};

阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。【说明】某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。