Beam.Example.Advanced.EmployeeCommissionV2.Program.Main C# (CSharp) Метод

Main() статический приватный Метод

static private Main ( Array args ) : void
args Array
Результат void
        static void Main(string[] args)
        {
            Console.Title = "Intermediate Employee Commission Calculator";

            // clear screen
            Console.Clear();

            // number of personnel to process
            int numPersonnel = 0;

            // method variables
            double fiveZero = 0.050; 
            double fiveFive = 0.055;
            double sixFive = 0.065;
            double sevenFive = 0.075;
            double nineZero = 0.090;
            double hourly1 = 14.50;
            double hourly2 = 20.25;
            double hourly3 = 16.50;
            double hourly4 = 19.75;
            double baseHours = 40.0;
            double overTimeRate = 1.5;

            // error messages
            string error1 = "Sales Class Error, no commission paid.";
            string error2 = "Sales Class Error, no wages paid.";

            // accumulated totals
            double totalCommission = 0;
            double totalHourlyWages = 0;
            double totalPayroll = 0;

            // Method: print header
            printHeader();

            // set number of personnel to process (array of struct)
            Console.Write(" Number of personnel ....: ");
            numPersonnel = Convert.ToInt16(Console.ReadLine());
            employeeRecord[] allRecords = new employeeRecord[numPersonnel];

            // start - employee main loop
            for (int pCount = 0; pCount < numPersonnel; pCount++)
            {
                // initialize new employee record ( employee main loop )
                allRecords[pCount] = new employeeRecord();

                // enter values into record array ( employee main loop )
                Console.WriteLine();
                Console.Write(" Salespersons's Name ....: ");
                allRecords[pCount].empName = Console.ReadLine();

                Console.Write(" Salespersons's Number ..: ");
                allRecords[pCount].empId = Console.ReadLine();

                Console.Write(" Hours Worked ...........: ");
                allRecords[pCount].empHoursWorked = Convert.ToDouble(Console.ReadLine());

                Console.Write(" Sales Amount ...........: ");
                allRecords[pCount].empSalesAmount = Convert.ToDouble(Console.ReadLine());

                Console.Write(" Sales Class ............: ");
                allRecords[pCount].empClass = Console.ReadLine();

                // begin - commission and hourly rates calculations ( employee main loop )
                if (allRecords[pCount].empClass == "1" | allRecords[pCount].empClass == "2" | allRecords[pCount].empClass == "3" | allRecords[pCount].empClass == "4")
                {
                    // set initial values for error1/2
                    allRecords[pCount].empError1 = 0;
                    allRecords[pCount].empError2 = 0;

                    if (allRecords[pCount].empClass == "1") // CLass-1 hourly rate, all = $14.50
                    {
                        allRecords[pCount].empHourlyRate = hourly1;

                        if (allRecords[pCount].empSalesAmount <= 2500)
                        {
                            allRecords[pCount].empComRate = fiveZero; // 5.0 %
                        }
                        else if (allRecords[pCount].empSalesAmount > 2500 & allRecords[pCount].empSalesAmount < 4500)
                        {
                            allRecords[pCount].empComRate = sixFive; // 6.5%
                        }
                        else
                        {
                            allRecords[pCount].empComRate = nineZero; // 9.0%
                        }
                    }
                    else if (allRecords[pCount].empClass == "2") // Class-2 hourly rate, all = $20.25
                    {
                        allRecords[pCount].empHourlyRate = hourly2;

                        if (allRecords[pCount].empSalesAmount <= 2500)
                        {
                            allRecords[pCount].empComRate = fiveFive; // 5.5%
                        }
                        else
                        {
                            allRecords[pCount].empComRate = sixFive;
                        }
                    }
                    else if (allRecords[pCount].empClass == "3") // Class-3 hourly rate, all = $16.50
                    {
                        allRecords[pCount].empHourlyRate = hourly3;
                        allRecords[pCount].empComRate = sevenFive; // 7.5%
                    }
                    else if (allRecords[pCount].empClass == "4") // Class-4 hourly rate, all = $19.75
                    {
                        allRecords[pCount].empHourlyRate = hourly4;
                        allRecords[pCount].empComRate = nineZero; // 9.0%
                    }
                }
                else
                {
                    // set hourly and commission rate to 0 for unknown sales class
                    // set error1/2 status for unknown sales class
                    allRecords[pCount].empError1 = 1;
                    allRecords[pCount].empError2 = 1;
                    allRecords[pCount].empHourlyRate = 0;
                    allRecords[pCount].empComRate = 0;
                }

                // determine employee and total commission ( employee main loop )
                if (allRecords[pCount].empError1 == 0)
                {
                    totalCommission = totalCommission + (allRecords[pCount].empComRate * allRecords[pCount].empSalesAmount);
                    allRecords[pCount].empComAmount = allRecords[pCount].empComRate * allRecords[pCount].empSalesAmount;
                }

                // determine hourly wages ( employee main loop )
                if (allRecords[pCount].empError2 == 0)
                {
                    // calculate overtime rate & wage + standard rate & time
                    if (allRecords[pCount].empHoursWorked > 40)
                    {
                        allRecords[pCount].empOvertimeHours = allRecords[pCount].empHoursWorked - baseHours;
                        allRecords[pCount].empOvertimeRate = allRecords[pCount].empHourlyRate * overTimeRate;
                        allRecords[pCount].empOvertimeWage = allRecords[pCount].empOvertimeHours * allRecords[pCount].empOvertimeRate;
                        allRecords[pCount].empBaseHours = allRecords[pCount].empHoursWorked - allRecords[pCount].empOvertimeHours;
                        allRecords[pCount].empBaseWage = allRecords[pCount].empBaseHours * allRecords[pCount].empHourlyRate;
                        allRecords[pCount].empWage = allRecords[pCount].empBaseWage + allRecords[pCount].empOvertimeWage;
                    }
                    else
                    {
                        // if no overtime, just use base rates and hours worked
                        allRecords[pCount].empWage = allRecords[pCount].empHoursWorked * allRecords[pCount].empHourlyRate;
                    }

                    // add wages to totalHourlyWages
                    totalHourlyWages = totalHourlyWages + allRecords[pCount].empWage;
                }

                // sum up employee GrossPay ( employee main loop )
                if (allRecords[pCount].empError2 == 0)
                {
                    allRecords[pCount].empGrossPay = allRecords[pCount].empWage + allRecords[pCount].empComAmount;
                }
            }
            // end - employee main loop

            // print header - grand totals for all employee's
            totalPayroll = totalCommission + totalHourlyWages;
            Console.WriteLine();
            Console.WriteLine("****************************************");
            Console.WriteLine(" Total Commission .......: {0:c}", totalCommission);
            Console.WriteLine(" Total Hourly Wages  ....: {0:c}", totalHourlyWages);
            Console.WriteLine(" Total Gross Pay ........: {0:c}", totalPayroll);
            Console.WriteLine("****************************************");

            // start loop - employee summary
            foreach (employeeRecord thisRecord in allRecords)
            {
                // employee summary
                Console.WriteLine();
                Console.WriteLine(" {0} Summary", thisRecord.empName);
                Console.WriteLine(" Salesperson's ID .......: {0:c}", thisRecord.empId);

                // conditional print if Sales Class is != ( 1,2,3,4 )
                if (thisRecord.empError1 != 0 | thisRecord.empError2 != 0)
                {
                    // print employee summary error messages
                    Console.WriteLine(" Total Wage .............: {0}", error2);
                    Console.WriteLine(" Commission .............: {0}", error1);
                    Console.WriteLine(" Gross Pay...............: {0}", error2);
                }
                else
                {
                    // print employee summary messages
                    Console.WriteLine(" Total Wage .............: {0:c}", thisRecord.empWage);
                    Console.WriteLine(" Commission .............: {0:c}", thisRecord.empComAmount);
                    Console.WriteLine(" Gross Pay...............: {0:c}", thisRecord.empGrossPay);
                }
            }
            // end loop - employee summary

            // Method: print footer
            printFooter();

        }