I make a RiskScore class. Here I made this class re-useable by making them separate like this:
1. Header// Member function or class definition
2. Source code or implementation// This where I put how and what the program does.
3. The driver or main.// This the file that will execute the source code.
Problems in text:
My functions does wrong calculations. Please check the error.pdf. I am not sure why the math is wrong.
Help me figure it out. Thanks.
Code:
#include<iostream>
#include<string>
using namespace std;
#ifndef RISKSCORE_H
#define RISKSCORE_H
//Place a class in a separate file for re-usability
class RiskScore
{
int dataClass;
int dataSpread;
double dataPercent;
int dataBizuse;
int dataEnviron;
int sum;
double overPercdata;
string deviceName;
public:
RiskScore(string, int, int, double, int, int ); //it shows all member functions
void setDeviceName(string);//name of devices involved
string getDeviceName();
void setDataClass(int);//data classification
int getDataClass();
void setDataSpread(int);//how widely the threat spread
int getDataSpread();
void setDataPercent(double);//percentage of data under risk
double getDataPercent();
void setDataBizuse(int);//highly, often and rarely used
int getDataBizuse();
void setDataEnviron(int);//environment in which data is used P/stage/T
int getDataEnviron();
double riskPrior();//Calculate all attributes of the Risk score per device
void print()const;
double addCalc();//total sum up of the scores
void instruct();
private:
};
#endif
****************************source code**************************************
Code:
#include <limits>
#include <iostream>
#include <stdexcept>
#include <iomanip>
#include "RiskScore.h";
using namespace std;
RiskScore::RiskScore(string deviceName_r,int dataClass_sum, int dataSpread_sum, double dataPercent_l, int dataBizuse_sum, int dataEnviron_sum)
{
setDeviceName(deviceName_r);//validation and store of device name
setDataClass(dataClass_sum);//validation and store of data class
setDataSpread(dataSpread_sum);//validation and store data incident spread
setDataPercent(dataPercent_l);//validation and store of device data percentage
setDataBizuse(dataBizuse_sum);//validation and store of device BIZ use
setDataEnviron(dataEnviron_sum);//validation and store of device environment
}
void RiskScore::instruct()//program guide and detail
{
cout << " This program is to help the department obtain the risk scores \n"<<endl;
cout << " for all security incident. In turn the department can use this \n"<<endl;
cout << " to tally up the financial lose that comes with the incidents. \n"<<endl;
cout << " This will help the department with budgeting for IT security. \n "<<endl;
}
void RiskScore::setDeviceName(string deviceName_r )
{
deviceName=deviceName_r;
cout<<"\n Device Name"<<setw(20)<<"Value"<<endl;//header
cout<<setw(4)<<"STANDARD WORKSTATION"<<setw(10)<<"sw"<<endl;
cout<<setw(4)<<"WORKSTATION"<<setw(19)<<"w"<<endl;
cout<<setw(4)<<"STANDARD SERVER"<<setw(15)<<"ss"<<endl;
cout<<setw(4)<<"SERVER"<<setw(24)<<"s"<<endl;
do {
cout<<"\n You must enter the value from the above table:"<<endl;
cin>>deviceName_r;
deviceName=deviceName_r;
if (deviceName_r.compare("sw") == 0 || deviceName_r.compare("SW")==0)
{
cout<<"\n You have selected " << " " <<deviceName_r<<" "<<"-->"<<
"\n ************************STANDARD WORKSTATION*************************\n"<<endl;
}
else if (deviceName_r.compare("w")==0 || deviceName_r.compare("W")==0)
{
cout<<"\n You have selected "<< " "<<deviceName_r<<" "<<"-->"<<
"\n ***************************WORKSTATION******************************* \n"<<endl;
}
else if(deviceName_r.compare("ss")==0 || deviceName_r.compare("SS")==0 )
{
cout << "\n You have selected "<< " "<<deviceName_r<<" "<<"-->"<<
"\n **************************STANDARD SERVER**************************** \n"<<endl;
}
else if(deviceName_r.compare("s") == 0 || deviceName_r.compare("S") == 0)
{
cout << "\n You have selected "<<" "<< deviceName_r<<" "<<"-->"<<
"\n *****************************SERVER********************************** \n"<<endl;
}
} while((deviceName_r!="sw") && (deviceName_r!="SW")&&(deviceName_r!="w") &&
(deviceName_r!="W")&&(deviceName_r!="ss") && (deviceName_r!="SS")&&
(deviceName_r !="s") && (deviceName_r!="S"));
}
string RiskScore::getDeviceName()
{
return deviceName;
}
void RiskScore::setDataClass(int dataClass_sum )
{
//dataClass=dataClass_sum;
int pii=9; int phi=10; int sysFile=1; int nonPhiPii=2;
cout<<"\n Data Class"<<setw(20)<<"Value"<<endl;//header
cout<<setw(4)<<"PII"<<setw(26)<<pii<<endl;
cout<<setw(4)<<"PHI"<<setw(26)<<phi<<endl;
cout<<setw(12)<<"SYSTEM FILE"<<setw(18)<<sysFile<<endl;
cout<<setw(11)<<"NON PHIPII"<<setw(19)<<nonPhiPii<<endl;
cout<<"\n Please choose the data class values from above table:"<<endl;
cin>>dataClass_sum;
dataClass=dataClass_sum;
if(dataClass_sum==pii)
{
dataClass=dataClass_sum;
cout<<"\n This is PII and the system is critical.\n"<<endl;
cout<< "\n The value is: "<<" "<<dataClass_sum<<endl;
}
else if(dataClass_sum==phi)
{
dataClass=dataClass_sum;
cout<<"\n This is PHI and the system is critical.\n"<<endl;
}
else if (dataClass_sum==sysFile)
{
dataClass=dataClass_sum;
cout<<"\n This data class is System file and it is moderate.\n"<<endl;
}
else if (dataClass_sum==nonPhiPii)
{
dataClass=dataClass_sum;
cout<<"\n This is standard Non-PII or PHI and the system is low.\n"<<endl;
}
}
int RiskScore::getDataClass()
{
return dataClass;
}
void RiskScore::setDataSpread(int dataSpread_sum)
{
dataSpread = dataSpread_sum;
int wiSpread=9, moSpread=3;
bool right_integers = false;
cout<<"\n Data Incident Spread "<<setw(30)<<"Value"<<endl;
cout<<setw(13)<<"Widely Spread"<<setw(36)<<wiSpread<<endl;
cout<<setw(17)<<"Moderately Spread"<<setw(32)<<moSpread<<endl;
cout<<"\n Please choose the data spread from the table above:"<<endl;
while (!(cin>>dataSpread_sum) )
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << "Please input one of the numbers in the table above 3 or 9: " << endl;
}
while (!right_integers)
{
if(dataSpread_sum==wiSpread)
{
right_integers = true;
dataSpread=dataSpread_sum;
cout<<" This incident is widely spread and the coverage is HIGH:\n"<<endl;
cout << "\n The value is:"<<" "<< dataSpread_sum<< endl;
}
else if(dataSpread_sum == moSpread)
{
dataSpread=dataSpread_sum;
right_integers = true;
cout<<" This event is moderately spread and the coverage is MODERATE:\n"<<endl;
}
else
{
cout << "Try input one of the numbers in the table above 3 or 9, thank you!: " << endl;
cin>>dataSpread_sum;
}
}
}
int RiskScore::getDataSpread()
{
return dataSpread;
}
void RiskScore::setDataPercent(double dataPercent_l)
{
this->dataPercent = dataPercent_l;
double totnum_asset=0.0;
double one_twenty=0.2;
double twenty1_forty = 0.4;
double forty1_sixty=0.6;
double sixty1_eighty= 0.8;
double eighty1_cent= 1.0;
cout<<"\nPlease enter the total number of data held in the device or locale:\n"<<endl;
cin>>totnum_asset;
cout<<"\nThe Percentage Range"<<setw(30)<<"Percentage"<<endl;//header
cout<<setw(1)<<"Between 1-20 percent"<<setw(30)<<one_twenty<<endl;
cout<<setw(1)<<"Between 21-40 percent"<<setw(29)<<twenty1_forty<<endl;
cout<<setw(1)<<"Between 41-60 percent"<<setw(29)<<forty1_sixty<<endl;
cout<<setw(1)<<"Between 61-80 percent"<<setw(29)<<sixty1_eighty<<endl;
cout<<setw(1)<<"Between 81-100 percent"<<setw(26)<<eighty1_cent<<endl;
cout<<"\n Please enter the percentage of data loss from table below.\n"<<endl;
cin>>dataPercent_l;
if(dataPercent_l<=0.2)
{
//dataPercent = dataPercent_l;
cout<<" The data loss is about 20% of the total:\n"<<endl;
}
else if(dataPercent_l<=0.4)
{
//dataPercent = dataPercent_l;
cout<<" The data loss is about 40% of the total:\n"<<endl;
}
else if(dataPercent_l<=0.6)
{
//dataPercent = dataPercent_l;
cout<<" The data loss is about 60% of the total:\n"<<endl;
}
else if(dataPercent_l<=0.8)
{
//dataPercent = dataPercent_l;
cout<<" The data loss is about 80% of the total:\n"<<endl;
}
else if(dataPercent_l<=1 )
{
//dataPercent = dataPercent_l;
cout<<"The data loss is about 100% of the total:\n"<<endl;
}
else
throw invalid_argument("\n You must re-enter in the shown in decimal form e.g.20, .40, .60, .80 and 1");
}
double RiskScore::getDataPercent()
{
return dataPercent;
}
void RiskScore::setDataBizuse(int dataBizuse_sum)
{
dataBizuse=dataBizuse_sum;
int everyday=9;
int often=5;
int noncritical=2;
bool right_integer = false;
cout<<"\n Business Use "<<setw(30)<<"Value"<<endl;//header
cout<<setw(1)<<"Used on a daily basis"<<setw(22)<<everyday<<endl;
cout<<setw(1)<<"Used so often"<<setw(30)<<often<<endl;
cout<<setw(1)<<"Used on a rare occasion"<<setw(20)<<noncritical<<endl;
cout<<"\n Please choose the business uses by entering the values in table above:\n"<<endl;
while (!(cin>>dataBizuse_sum))
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout <<"Please input one of the numbers in the table above 2 or 5 or 9:\n " << endl;
}
while (!right_integer)
{
if(dataBizuse_sum==everyday)
{
right_integer = true;
cout<<" The business use for this machine is daily operations. \n"<<endl;
}
else if(dataBizuse_sum==often)
{
right_integer = true;
cout<<" The business use for this machine is so often. \n"<<endl;
}
else if(dataBizuse_sum==noncritical)
{
right_integer = true;
cout<<" The business use for this machine is rarely (non-critical). \n"<<endl;
}
else
{
cout << "Try input one of the numbers in the table above 2 or 5 or 9:\n";
cout<< "\n Thank you! \n" << endl;
cin>>dataBizuse_sum;
}
}
}
int RiskScore::getDataBizuse()
{
return dataBizuse;
}
void RiskScore::setDataEnviron(int dataEnviron_sum)
{
this->dataEnviron=dataEnviron_sum;
int prod=9;
int stagn=5;
int test=2;
bool r_integers = false;
cout<<"\n Environment "<<setw(30)<<"Value"<<endl;//header
cout<<setw(1)<<"Used in Production"<<setw(23)<<prod<<endl;
cout<<setw(1)<<"Used in Staging"<<setw(26)<<stagn<<endl;
cout<<setw(1)<<"Used in Testing"<<setw(26)<<test<<endl;
cout<<"\n Please choose the device environment by entering the value from the table:\n"<<endl;
while (!(cin>>dataEnviron_sum))
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << "Please input one of the numbers in the table above 2 or 5 or 9: " << endl;
}
while (!r_integers)
{
if(dataEnviron_sum==prod)
{
r_integers=true;
cout<<" This machine is in production environment. \n"<<endl;
}
else if(dataEnviron_sum==stagn)
{
r_integers=true;
cout<<" This machine is in staging environment. \n"<<endl;
}
else if(dataEnviron_sum==test)
{
r_integers=true;
cout<<" This machine is in testing environment. \n"<<endl;
}
else
{
cout << "Try input one of the numbers in the table above 2 or 5 or 9:\n";
cout<<"\n Thank you\n" << endl;
cin>>dataEnviron_sum;
}
}
}
int RiskScore::getDataEnviron()
{
return dataEnviron;
}
double RiskScore::addCalc()
{
int dataClass_sum;
int dataSpread_sum;
int dataBizuse_sum;
int dataEnviron_sum;
double totnum_asset;
double dataPercent;
double overPercdata =0.0;
this->sum = dataClass_sum + dataSpread_sum + dataBizuse_sum + dataEnviron_sum;
this->overPercdata += totnum_asset * dataPercent;
}
double RiskScore::riskPrior()
{
int dataClass_sum;
int dataSpread_sum;
int dataBizuse_sum;
int dataEnviron_sum;
sum = dataClass_sum + dataSpread_sum + dataBizuse_sum + dataEnviron_sum;
if(sum>=1 && sum<=20)
{
cout<<"This is a risk score of"<<" "<< sum <<" "<< "It is low"<<" "<<"priority P4"<<endl;
//int dataClass=dataClass_sum;
}
else if(sum>=21 && sum<=36)
{
cout<<"This is a risk score of"<<" "<< sum <<" "<< "It is medium"<<" "<<"priority P3"<<endl;
dataClass=dataClass_sum;
}
else if(sum>=36 && sum<=46)
{
cout<<"This is a risk score of"<< sum << "It is high"<<" "<<"priority P2"<<endl;
dataClass=dataClass_sum;
}
else if(sum >= 46)
{
cout<<"\n This is a risk score of"<<" "<< sum <<" "<< "It is critical"<<" "<<"priority P1\n"<<endl;
dataClass=dataClass_sum;
}
}
void RiskScore::print()const
{
cout << "*************************************************************************\n";
cout << "************************DHEC RISK SCORE RESULT***************************\n";
cout << "*************************************************************************\n";
cout << "\n The device name is"<<" "<< deviceName <<" "<<"has a risk score of"<<" "<<sum<<endl;
cout << "\n The overall percentage data loss is"<<" "<< overPercdata <<endl;
string critical="\n*******Red disclosure of restricted information (P1)*******";
string high = "****Orange disclosure of non-restricted information (P2)***";
string medium = "**Yellow minimal impact by non-restricted disclosure (P3)**";
string low = "**********Green risk is low as in informational (P4)*******";
cout<<"\n RISK SCORE NOTIFICATIONS"<<setw(70)<<"RANGE OF RISK SCORE"<<endl;
cout<<setw(1)<<critical<<setw(32)<<"greater than 46"<<endl;
cout<<setw(1)<<high<<setw(30)<<"Between 36-46"<<endl;
cout<<setw(1)<<medium<<setw(30)<<"Between 21-35"<<endl;
cout<<setw(1)<<low<<setw(29)<<"Between 1-20"<<endl;
}
*****************************driver file- main.cpp************************************
Code:
#include <iostream>
#include <iomanip>
#include "RiskScore.h";
using namespace std;
int main()
{
string deviceName;
int dataClass;
int dataSpread;
double dataPercent;
int dataBizuse;
int dataEnviron;
double totnum_asset;
double overPercdata;
RiskScore riskScore(deviceName,dataClass, dataSpread, dataPercent, dataBizuse, dataEnviron);
riskScore.instruct();
riskScore.riskPrior();
riskScore.getDataClass();
riskScore.getDataSpread();
riskScore.getDataPercent();
riskScore.getDataBizuse();
riskScore.getDataEnviron();
riskScore.addCalc();
riskScore.print();
}
***********************************Problem***************************************
See visual of Output in error.pdf