Create a C program or desktop application that is useful or
Create a C++ program or desktop application that is useful or relevant to the ethiopian society.How you tackle the problem is more important than the acual code.(Explain the purpose of the codes and overall application and its use.)
Solution
C++ Program for Ethiopian society payroll system
#include<iostream.h>
 #include<conio.h>
 #include<fstream.h>
 struct employee
 {
 char name[20],sex[7],id[10];
 float income,tax,penstion,netincome,allowance;
 };
 employee *accept(employee a[],int n);
 employee *tax(employee a[],int n);
 inline employee *penstion(employee a[],int n);
 inline employee *netincome(employee a[],int n);
 void putdata(employee a[],int n,ofstream &of);
 void getdata(ifstream &in);
 void main ()
 {
 clrscr ();
 ofstream of;
 ifstream in;
 employee *s;
 int n;
 int choice;
 char ch;
 do
 {
 clrscr ();
 cout<<endl;
 cout<<endl;
 cout<<\"Please choose from the following: \ \";
 cout<<\"\\t1. write Data. \ \";
 cout<<\"\\t2. read Data. \ \";
 cout<<\"\\t3. Quit. \ \";
 cout<<endl;
 cout<<\"Your choice: \";
 cin>>choice;
 switch(choice)
 {
 case 1:
 cout<<\"how many Employees\' detail data\";
 cout<<\"do you want yo feed:\ \";
 cin>>n;
 s=new employee[n];
 s=accept(s,n);
 s=tax(s,n);
 s=penstion(s,n);
 s=netincome(s,n);
 putdata(s,n,of);
 break;
 case 2:
 getdata(in);
 break;
 case 3:
 break;
 default:
 cout<<\"\\tInvalid entry!\"<<endl;
 }
 cout<<\"\ Would you like to try again (y/n): \";
 cin>>ch;
 
 }
 while(ch == \'y\' || ch == \'Y\');
 delete []s;
 getch ();
 }
 employee *accept(employee a[],int n)
 {
 cout<<\"please enter the employee detail:name,sex,id,income,allowance: \ \";
 cout<<endl;
 for(int i=0;i<n;i++)
 {
 cout<<\"feed employee\"<<\" \"<<(i+1)<<\" \"<<\"detail data:\ \";
 cin>>a[i].name>>a[i].sex>>a[i].id>>a[i].income>>a[i].allowance;
  }
 return a;
 }
 employee *tax(employee a[],int n)
 {
 for(int i=0;i<n;i++)
 {
 if(a[i].income<=150)
 a[i].tax=0;
 else if (a[i].income<=650)
 a[i].tax=(a[i].income*10/100)-15;
 else if (a[i].income<=1400)
 a[i].tax=((a[i].income*15/100)-47.5);
 else if (a[i].income<=2350)
 a[i].tax=((a[i].income*20/100)-117.5);
 else if(a[i].income<=3550)
 a[i].tax=((a[i].income*25/100)-235);
 else if (a[i].income<=5000)
 a[i].tax=((a[i].income*30/100)-412.5);
 else
 a[i].tax=((a[i].income*35/100)-662);
 }
 return a;
 }
 employee *penstion(employee a[],int n)
 {
 for (int i=0;i<n;i++)
 a[i].penstion=(a[i].income*6/100);
 return a;
 }
 employee *netincome(employee a[],int n)
 {
 for(int i=0;i<n;i++)
 a[i].netincome=(a[i].income+a[i].allowance-a[i].tax-a[i].penstion);
  return a;
 }
 void putdata(employee a[],int n,ofstream &of)
 {
 of.open(\"xyz.txt\",ios::out|ios::app);
 if(of.fail())
 {
 cerr<<\"unable to open /n\";
 return;
 }
 for(int i=0;i<n;i++)
 {
 of<<a[i].name<<\"\\t\"<<a[i].sex<<\"\\t\"<<a[i].id<<\"\\t\"<<a[i].income<<\"\\t\";
  of<<a[i].tax<<\"\\t\"<<a[i].penstion<<\"\\t\"<<a[i].allowance<<\"\\t\"<<a[i].netincome;
  }
 of.close();
 }
 void getdata(ifstream &in)
 {
 cout<<\"....................................................................\ \";
  cout<<\"E_Name \\tSex\\tID\\tIncome\\tTax\\tPenst.\\tAllow.\\tNetI.\ \";
 cout<<\"....................................................................\ \";
  in.open(\"xyz.txt\");
 employee p;
 if(in)
 {
 while(!in.eof())
 {
 in>>p.name>>p.sex>>p.id>>p.income;
 in>>p.tax>>p.penstion>>p.allowance>>p.netincome;
  if(in.eof())
 break;
 cout<<p.name<<\"\\t\"<<p.sex<<\"\\t\"<<p.id<<\"\\t\"<<p.income<<\"\\t\"<<p.tax;
  cout<<\"\\t\"<<p.penstion<<\"\\t\"<<p.allowance<<\"\\t\"<<p.netincome;
  cout<<endl;
 }
 in.close();
 }
 else
 cerr<<\"unable to open /n\";
 }



