1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
#include <iostream>
#include <string.h>
#include <fstream.h>
#include <Math.h>
using namespace std;
long Val(char NumChars[]){
if ( strlen(NumChars)== 1 )
{ return (int) NumChars[0]-48 ; }
long rtn = 0;
for (int i = strlen(NumChars) -1 ; i >=0 ; i--)
{
rtn += ceil(pow( 10 ,strlen(NumChars) -1- i)) * ((int) NumChars[i]-48) ;
}
return rtn ;
}
class Invoice{
private :
public :
Invoice (): CounterNum(0), Address("nowhere"),
InvoiceNum(0), AllFees(0),
FeesKind(0), CounterPreSign(0),
CounterCurSign(0), CycleNum(1),
Year(2009), ReleaseDate(0)
{}
// end of the default Constructor
long CounterNum ;
string Address;
long InvoiceNum ;
long AllFees;
int FeesKind ;
long CounterPreSign;
long CounterCurSign;
int CycleNum ;
int Year ;
long ReleaseDate;
// end of fields
long ConsumAmount() {
return CounterCurSign - CounterPreSign;
}
double InvoiceAmount() {
long CA = ConsumAmount();
long rtn = 0 ;
if (CA > 2000)
{
rtn = CA * 400;
rtn += AllFees ;
return rtn *1.0 /100 ;
}
if (CA >=1001 && CA <= 2000)
{
rtn += (CA - 1000) * 350 ;
CA -= CA - 1000 ;
}
if (CA >=801 && CA <= 1000)
{
rtn += (CA - 800) * 300 ;
CA -= CA - 800;
}
if (CA >=601 && CA <= 800)
{
rtn += (CA - 600) * 200 ;
CA -= CA - 600 ;
}
if (CA >=401 && CA <= 600)
{
rtn += (CA - 400) * 75 ;
CA -= CA - 400 ;
}
if (CA >=201 && CA <= 400)
{
rtn += (CA - 200) * 50 ;
CA -= CA - 200 ;
}
if (CA >=101 && CA <= 200)
{
rtn += (CA - 100) * 35 ;
CA -= CA - 100 ;
}
if (CA >=1 && CA <= 100)
{
rtn += CA * 25 ;
}
rtn += AllFees ;
return rtn *1.0 /100 ;
}
void Update(long CntrNum , string Adres,
long nvsNum , long AlFs,
int FsKind , long CntrPreSign,
long CntrCurSign, int CycleN ,
int Yr , long RlsDt
){
CounterNum =CntrNum ; Address = Adres ;
InvoiceNum = nvsNum ; AllFees = AlFs;
FeesKind= FsKind; CounterPreSign = CntrPreSign ;
CounterCurSign = CntrCurSign ; CycleNum = CycleN;
Year=Yr; ReleaseDate=RlsDt;
}
friend istream &operator >> (istream &in,Invoice &inv );
friend ostream &operator << (ostream &out ,Invoice &inv );
};
istream &operator >> (istream &in,Invoice &inv ){
cout << "Enter Counter Number\t"; in >> inv.CounterNum;
cout << "Enter Address \t"; in >> inv.Address;
cout << "Enter Invoice Number\t"; in >> inv.InvoiceNum;
cout << "Enter All Fees \t"; in >> inv.AllFees;
cout << "Enter Fees Kind \t"; in >> inv.FeesKind ;
cout << "Enter Counter Previous Sign\t"; in >> inv.CounterPreSign;
cout << "Enter Counter Current Sign\t"; in >> inv.CounterCurSign;
cout << "Enter Cycle Number \t"; in >> inv.CycleNum ;
cout << "Enter Invoice Year \t"; in >> inv.Year;
cout << "Enter Release Date\t"; in >> inv.ReleaseDate;
return in;
}
ostream &operator << (ostream &out,Invoice &inv ){
out << "Counter Number\t" << inv.CounterNum << "\n" ;
out << "Address \t" << inv.Address << "\n" ;
out << "Invoice Number\t" << inv.InvoiceNum << "\n" ;
out << "All Fees \t" << inv.AllFees << "\n" ;
out << "All Fees Kind \t" << inv.FeesKind << "\n" ;
out << "Counter Previous Sign\t" << inv.CounterPreSign << "\n" ;
out << "Counter Current Sign\t" << inv.CounterCurSign << "\n" ;
out << "Cycle Number \t" << inv.CycleNum << "\n" ;
out << "Invoice Year \t" << inv.Year << "\n" ;
out << "Release Date\t" << inv.ReleaseDate << "\n" ;
out << "Invoice Amount\t" << inv.InvoiceAmount()<< "\n" ;
return out;
}
| |