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.
****************************source code**************************************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
*****************************driver file- main.cpp************************************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; }
***********************************Problem***************************************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(); }
See visual of Output in error.pdf




Reply With Quote
