Класс, Для Полей Которого Нужно Использовать Класс.

OLat

New member
23.12.2013
1
0
#1
Создайте класс Payment (зарплата), используя для представления полей начислений и удержаний класс Money. Класс Payment содержит поля: Фамилия-Имя-Отчество, оклад, год приёма на работу, процент надбавки, подоходный налог, количество отработанных дней в месяце, количество рабочих дней в месяце, начисленная и удержанная суммы.

Реализуйте методы вычисления начисленной суммы, вычисления удержанной суммы, вычисления суммы, выдаваемой на руки, вычисления стажа. Стаж вычисляется от года трудоустройства до текущего года, Начисления есть сумма за отработанные дни + надбавка ( % ) от этой же суммы. Удержания есть отчисления обязательного 13%-ного налога + 1% отчисления в пенсионный фонд.

Класс Money используется для работы с денежными суммами. Число предоставляется двумя полями: типа long для рублей и unsigned char для копеек (можно для обоих использовать double). Дробная часть при выводе должна отеделяться запятой при выводе на экран. Реализовать операции сложения, вычитания, деления сумм, деления суммы на дробное число и операции сравнения.
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;

class payment
{

public: char fio[30]; //Фио
float oklad; //оклад
int year; //год поступления на работу
float procent; //процент надбавки
float nalog; //подоходный налог
int rab_day_month; //кол-во отработанных дней
float day_month; //кол-во рабочих дней
float nach_summ; //начисленная сумма
float yder_summ; //удержанная сумма
float stag; //стаж (полное кол-во лет)
float zp; //зарплата

float vichisl_nach_summ();
float vichisl_yder_summ();
float vichisl_zp();float vichisl_stag();

};

float payment::vichisl_nach_summ(){return (oklad*rab_day_month+oklad*rab_day_month*procent/100);}
float payment::vichisl_yder_summ(){return ((oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.01+(oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.13);}
float payment::vichisl_zp(){return ((oklad*rab_day_month+oklad*rab_day_month*procent/100)-((oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.01+(oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.13));}
float payment::vichisl_stag(){return (2013-year);}

void main(){
payment* f=new payment();
setlocale (LC_ALL, "russian");
cout<<"Введите фамилию, имя и отчество сотрудника - ";
cin.getline(f->fio, 30);
cout<<"Введите оклад сотрудника - \n";
cin>>f->oklad;
cout<<"Введите год поступления сотрудника на работу - \n";
cin>>f->year;
cout<<"Введите процент надбавки - \n";
cin>>f->procent;
cout <<"Введите кол-во отработанных дней - \n";
cin>>f->rab_day_month;
cout <<"Количество рабочих дней в месяце - \n";
cin>>f->day_month;
cout<<"Начисленная сумма составляет: "<<f->vichisl_nach_summ()
<<"\n";
cout<<"Удержанная сумма составляет: "<<f->vichisl_yder_summ()<<"\n";
cout<<"Итоговая сумма выплаты "<<f->vichisl_zp()<<"\n";
cout<<"Стаж : "<<f->vichisl_stag()<<"\n";
delete f;
getch();}