《C++语言程序设计实验问题详解-大数据地共享与保护.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计实验问题详解-大数据地共享与保护.docx(5页珍藏版)》请在第一文库网上搜索。
1、程序段当“常量表达式”非O时编译本程序段#endif形式2#if常量表达式程序段1当“常量表达式”非O时编译本程序段# eIse程序段2当“常量表达式”为O时编译本程序段# endif形式3# if常量表达式1程序段1当“常量表达式1”非O时编译本程序段# eIif常量表达式2程序段2/否则,当“常量表达式2”非O时编译本程序段#eIif常量表达式n程序段n否则,当“常量表达式n”非O时编译本程序段#e1se程序段n+1其他情况下编译本程序段#endif形式4#ifdef标识符程序段1若“标识符”经#CIefine定义过,且未经#iIndef删除,则编译本程序段#e1se程序段2/否则编译本程
2、序段#endif#ifdef标识符程序段若“标识符”经#define定义过,且未经#iJndef删除,则编译本程序段#endif形式5#ifndef标识符程序段1若“标识符”未定义过,则编译本程序段#eIse程序段2否则编译本程序段#endif#ifdef标识符程序段若“标识符”未定义过,则编译本程序段#endif4. defined操作符defined是一个预处理操作符,而不是指令,因此不栗以#开头。defined(标识符)若“标识符”在此前经#define定义过,且未经#iIndef删除,则上述表达式为非0,否则为0。下面两种写法是完全等效的:ifndefMYHEAD_H#defineMY
3、HEAD_H#endif#if!define(MYHEAD_H)#defineMYHEAD_H#endif由于文件包含指令可以嵌套使用,在设计程序时要避免多次重复包含同一个头文件,否则会引起变量及类的重复定义。例,某个工程包括如下四个源文件。/main.cppinc1ude“fiIe1.h”inc1ude“fiIe2.h”voidmain().1/fiIe1.h#incIudehead,h”/fiIe2.h#incIudehead.h/head,h.错误cIassPoint)/head.h#ifndefHEAD_H/正确#defineHEAD_HcIassPoint()#endif5.7程序实
4、例人员信息管理程序P151基于上一章的例4-7o 在类emp1oyee中增加一个静态数据成员empIoyeeNo来设置本公司编号目前最大值,新增加的人员编号将在创建对象的同时自动在当前最大值基础上增加,从而减少了调用成员函数IncreaseEmpNo(intsteps)的麻烦。 将empo1yee类的声明部分和实现部分分成两个文件。例5T1人员信息管理程序整个程序分为三个文件:empIoyee.h是类定义头文件empIoyee.cpp是类实现文件pmain.cpp是主函数文件图5-9小型公司的人员信息管理程序的UM1图empIoyee# IndividuaIEmpNo:int# grade:i
5、nt# accumPay:fIoat#empIoyeeNo:int=1000+empIoyee()+empIoyee()+promote(:int):void+SetaccumPay(:fIoat):void+GetindividuaIEmpNo():int+Getgrade():int+GetaccumPay():fIoat类声明头文件:5_11empIoyee.h/5_11emp1oyee.hcIassempIoyee(protected:intindividua1EmpNo;个人编号intgrade;/级别fIoataccumPay;/BMstaticintempIoyeeNo;/本公司
6、职员编号目前最大值pubIic:empIoyee();/构造函数emp1oyee();/析构函数voidPrOmOte(int);/升级voidSetaccumPay(fIoat);/设置月薪intGetindiVidUaIEmPNO();提取编号intGetgrade();提取级别fIoatGetaCCUmPay();/提取月薪;类实现程序文件:5_11emp1oyee,cpp/5_11emp1oyee.cpp#incIude#incIude5_11empIoyee.husingnamespacestd;intempIoyee:empIoyeeNO=IOo0;/员工编号基数,静态变量定义和初
7、始化empIoyee:empIoyee()/新输入员工编号为目前最大编号加1,级别初值为1,月薪总额indiViduaIEmpNo=empIoyeeNo+;grade=1;accumPay=O.0;empIoyee:empIoyee()voidempIoyee:promote(intincrement)grade+=increment;/升级voidempIoyee:SetaccumPay(fIoatpa)accumPay=pa;/设置月薪intempIoyee:GetindividuaIEmpNo()returnIndividuaIEmpNo;/获取职员编号intempIoyee:Getgr
8、ade()returngrade;/获取级另fIoatempIoyee:GetaccumPay()returnaccumPay;/获取月薪主函数文件:5_11main.cpp/5_11main.cpp#incIude#incIude5_11empIoyee.hUSingnamespacestd;voidmain()(empIoyeem1,t1,sm1,s1;CoUt请输入下一个雇员的月薪:”;fIoatpa;cinpa;m1.promote(3);/m1提升3级m1.SetaccumPay(pa);/设置m1的月薪COUt请输入下一个雇员的月薪:”;cinpa;t1.promote(2);/t
9、1提升3级t1.SetaccumPay(pa);/设置t1的月薪COUt请输入下一个雇员的月薪:”;cinpa;sm1.promote(2);/sm1提升2级sm1.SetaccumPay(pa);/设置sm1的月薪CoUt请输入下一个雇员的月薪:”;cinpa;51. SetaccumPay(pa);/设置s1的月薪/显示m1信息COUtX编号Xm1.GetindividuaIEmpNo()”级别为,m1.Getgrade() ”级,本月工资,m1.GetaccumPay()endI;/显示t1信息COUt编号t1.GetindividuaIEmpNo()”级别为,t1.Getgrade()
10、 ”级,本月工资,t1.GetaccumPay()endI;/显示sm1信息CoUt编号Xsm1.GetindividuaIEmpNo()X”级别为,sm1.Getgrade() ”级,本月工资,sm1.GetaccumPay()endI;/显示S1信息COUtX编号Xs1.GetindividuaIEmpNo()”级别为,s1.Getgrade() ”级,本月工资“s1.GetaccumPay()endI;运行结果1:回*E:aaDebugaa.exe*00 00 81d0 06 1e-:4:7:1工工工工nu月月月ti月月月月本本本本On的的的的心s,g.心C口因因因我W箱遇to雇雇雇雇为为为为y个个个个别别别别ke一一一一级级级级y下下下下入入入入言IJIP03es请请请请编编编编Pr