MS Visual F# Simple Application: Payroll Evaluation - 1 Week
MS Visual F# Simple Application: Payroll Evaluation - 1 Week
Introduction
We are continuing to learn programming in the F# computer language. In this exercise, we will calculate the salary for daily time worked for two weeks.
Practical Learning: Creating the Application
// Indicate the libraries that will be used for this project
open System
open System.Drawing
open System.Windows.Forms
// Create a form by declaring a Form variable
let exercise : Form = new Form()
(* The form will contain three group boxes that act as sections.
* Therefore, declare a GroupBox variable for each section. *)
let gpxEmployeeIdentification : GroupBox = new GroupBox()
let gbxCalculation : GroupBox = new GroupBox()
let gbxTimeValues : GroupBox = new GroupBox()
// Suspend the layout of each group box
gpxEmployeeIdentification.SuspendLayout()
gbxCalculation.SuspendLayout()
gbxTimeValues.SuspendLayout()
// Also suspend the layout of the main form
exercise.SuspendLayout()
exercise.AutoScaleDimensions <- new SizeF(10F, 25F)
exercise.AutoScaleMode <- AutoScaleMode.Font
exercise.ClientSize <- new Size(1033, 589)
exercise.StartPosition <- FormStartPosition.CenterScreen
exercise.Text <- "Payroll Evaluation"
// Specify the characteristics of the Employee Identification group box
gpxEmployeeIdentification.Location <- new Point(24, 27)
gpxEmployeeIdentification.Size <- new Size(985, 110)
gpxEmployeeIdentification.TabIndex <- 3
gpxEmployeeIdentification.TabStop <- false
gpxEmployeeIdentification.Text <- "Employee Identification"
// Create a label for the name of the employee
let lblEmployeeName : Label = new Label()
lblEmployeeName.AutoSize <- true
lblEmployeeName.Location <- new Point(27, 50)
lblEmployeeName.Size <- new Size(146, 25)
lblEmployeeName.TabIndex <- 0
lblEmployeeName.Text <- "&Employee Name:"
gpxEmployeeIdentification.Controls.Add(lblEmployeeName)
// Create a text box for the employee name
let txtEmployeeName : TextBox = new TextBox()
txtEmployeeName.Location <- new Point(179, 44)
txtEmployeeName.Size <- new Size(272, 31)
txtEmployeeName.TabIndex <- 1
gpxEmployeeIdentification.Controls.Add(txtEmployeeName)
// Create a label for the hourly salary
let lblHourlySalary : Label = new Label()
lblHourlySalary.AutoSize <- true
lblHourlySalary.Location <- new Point(490, 50)
lblHourlySalary.Size <- new Size(121, 25)
lblHourlySalary.TabIndex <- 2
lblHourlySalary.Text <- "Hourly &Salary:"
gpxEmployeeIdentification.Controls.Add(lblHourlySalary)
// Create a text box for the hourly salary
let txtHourlySalary : TextBox = new TextBox()
txtHourlySalary.Location <- new Point(627, 47)
txtHourlySalary.Size <- new Size(95, 31)
txtHourlySalary.TabIndex <- 3
txtHourlySalary.Text <- "0.00"
txtHourlySalary.TextAlign <- HorizontalAlignment.Right
gpxEmployeeIdentification.Controls.Add(txtHourlySalary)
// Specify the characteristics of the Time Values section
gbxTimeValues.Location <- new Point(24, 161)
gbxTimeValues.Size <- new Size(985, 186)
gbxTimeValues.TabIndex <- 4
gbxTimeValues.TabStop <- false
gbxTimeValues.Text <- "Time Values"
// Create the labels for each day.
// Monday, for the first and second week
let lblMonday : Label = new Label()
lblMonday.AutoSize <- true
lblMonday.Location <- new Point(179, 29)
lblMonday.Size <- new Size(78, 25)
lblMonday.TabIndex <- 0
lblMonday.Text <- "Monday"
gbxTimeValues.Controls.Add(lblMonday)
// Tuesday, for the first and second week
let lblTuesday : Label = new Label()
lblTuesday.AutoSize <- true
lblTuesday.Location <- new Point(291, 29)
lblTuesday.Size <- new Size(77, 25)
lblTuesday.TabIndex <- 1
lblTuesday.Text <- "Tuesday"
gbxTimeValues.Controls.Add(lblTuesday)
// Wednesday, for the first and second week
let lblWednesday : Label = new Label()
lblWednesday.AutoSize <- true
lblWednesday.Location <- new Point(405, 29)
lblWednesday.Size <- new Size(104, 25)
lblWednesday.TabIndex <- 2
lblWednesday.Text <- "Wednesday"
gbxTimeValues.Controls.Add(lblWednesday)
// Thursday, for the first and second week
let lblThursday : Label = new Label()
lblThursday.AutoSize <- true
lblThursday.Location <- new Point(515, 29)
lblThursday.Size <- new Size(84, 25)
lblThursday.TabIndex <- 3
lblThursday.Text <- "Thursday"
gbxTimeValues.Controls.Add(lblThursday)
// Friday, for the first and second week
let lblFriday : Label = new Label()
lblFriday.AutoSize <- true
lblFriday.Location <- new Point(627, 29)
lblFriday.Size <- new Size(60, 25)
lblFriday.TabIndex <- 4
lblFriday.Text <- "Friday"
gbxTimeValues.Controls.Add(lblFriday)
// Saturday, for the first and second week
let lblSaturday : Label = new Label()
lblSaturday.AutoSize <- true
lblSaturday.Location <- new Point(739, 29)
lblSaturday.Size <- new Size(82, 25)
lblSaturday.TabIndex <- 5
lblSaturday.Text <- "Saturday"
gbxTimeValues.Controls.Add(lblSaturday)
// Sunday, for the first and second week
let lblSunday : Label = new Label()
lblSunday.AutoSize <- true
lblSunday.Location <- new Point(851, 29)
lblSunday.Size <- new Size(71, 25)
lblSunday.TabIndex <- 6
lblSunday.Text <- "Sunday"
gbxTimeValues.Controls.Add(lblSunday)
// Creatw a label for the times worked for the first week
let lblFirstWeek : Label = new Label()
lblFirstWeek.AutoSize <- true
lblFirstWeek.Location <- new Point(27, 74)
lblFirstWeek.Size <- new Size(97, 25)
lblFirstWeek.TabIndex <- 7
lblFirstWeek.Text <- "First Week:"
gbxTimeValues.Controls.Add(lblFirstWeek)
// Create a text box for the time worked on Monday of the first week
let txtWeek1Monday : TextBox = new TextBox()
txtWeek1Monday.Location <- new Point(179, 71)
txtWeek1Monday.Size <- new Size(106, 31)
txtWeek1Monday.TabIndex <- 8
txtWeek1Monday.Text <- "0.00"
txtWeek1Monday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Monday)
// Create a text box for the time worked on Tuesday of the first week
let txtWeek1Tuesday : TextBox = new TextBox()
txtWeek1Tuesday.Location <- new Point(291, 71)
txtWeek1Tuesday.Size <- new Size(106, 31)
txtWeek1Tuesday.TabIndex <- 9
txtWeek1Tuesday.Text <- "0.00"
txtWeek1Tuesday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Tuesday)
// Create a text box for the time worked on Wednesday of the first week
let txtWeek1Wednesday : TextBox = new TextBox()
txtWeek1Wednesday.Location <- new Point(403, 71)
txtWeek1Wednesday.Size <- new Size(106, 31)
txtWeek1Wednesday.TabIndex <- 10
txtWeek1Wednesday.Text <- "0.00"
txtWeek1Wednesday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Wednesday)
// Create a text box for the time worked on Thursday of the first week
let txtWeek1Thursday : TextBox = new TextBox()
txtWeek1Thursday.Location <- new Point(515, 71)
txtWeek1Thursday.Size <- new Size(106, 31)
txtWeek1Thursday.TabIndex <- 11
txtWeek1Thursday.Text <- "0.00"
txtWeek1Thursday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Thursday)
// Create a text box for the time worked on Friday of the first week
let txtWeek1Friday : TextBox = new TextBox()
txtWeek1Friday.Location <- new Point(627, 71)
txtWeek1Friday.Size <- new Size(106, 31)
txtWeek1Friday.TabIndex <- 12
txtWeek1Friday.Text <- "0.00"
txtWeek1Friday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Friday)
// Create a text box for the time worked on Saturday of the first week
let txtWeek1Saturday : TextBox = new TextBox()
txtWeek1Saturday.Location <- new Point(739, 71)
txtWeek1Saturday.Size <- new Size(106, 31)
txtWeek1Saturday.TabIndex <- 13
txtWeek1Saturday.Text <- "0.00"
txtWeek1Saturday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Saturday)
// Create a text box for the time worked on Sunday of the first week
let txtWeek1Sunday : TextBox = new TextBox()
txtWeek1Sunday.Location <- new Point(851, 71)
txtWeek1Sunday.Size <- new Size(106, 31)
txtWeek1Sunday.TabIndex <- 14
txtWeek1Sunday.Text <- "0.00"
txtWeek1Sunday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek1Sunday)
// Creatw a label for the times worked for the second week
let lblSecondWeek : Label = new Label()
lblSecondWeek.AutoSize <- true
lblSecondWeek.Location <- new Point(27, 130)
lblSecondWeek.Size <- new Size(123, 25)
lblSecondWeek.TabIndex <- 15
lblSecondWeek.Text <- "Second Week:"
gbxTimeValues.Controls.Add(lblSecondWeek)
// Create a text box for the time worked on Monday of the second week
let txtWeek2Monday : TextBox = new TextBox()
txtWeek2Monday.Location <- new Point(179, 127)
txtWeek2Monday.Size <- new Size(106, 31)
txtWeek2Monday.TabIndex <- 16
txtWeek2Monday.Text <- "0.00"
txtWeek2Monday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Monday)
// Create a text box for the time worked on Tuesday of the second week
let txtWeek2Tuesday : TextBox = new TextBox()
txtWeek2Tuesday.Location <- new Point(291, 127)
txtWeek2Tuesday.Size <- new Size(106, 31)
txtWeek2Tuesday.TabIndex <- 17
txtWeek2Tuesday.Text <- "0.00"
txtWeek2Tuesday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Tuesday)
// Create a text box for the time worked on Wednesday of the second week
let txtWeek2Wednesday : TextBox = new TextBox()
txtWeek2Wednesday.Location <- new Point(403, 127)
txtWeek2Wednesday.Size <- new Size(106, 31)
txtWeek2Wednesday.TabIndex <- 18
txtWeek2Wednesday.Text <- "0.00"
txtWeek2Wednesday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Wednesday)
// Create a text box for the time worked on Thursday of the second week
let txtWeek2Thursday : TextBox = new TextBox()
txtWeek2Thursday.Location <- new Point(515, 127)
txtWeek2Thursday.Size <- new Size(106, 31)
txtWeek2Thursday.TabIndex <- 19
txtWeek2Thursday.Text <- "0.00"
txtWeek2Thursday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Thursday)
// Create a text box for the time worked on Friday of the second week
let txtWeek2Friday : TextBox = new TextBox()
txtWeek2Friday.Location <- new Point(627, 127)
txtWeek2Friday.Size <- new Size(106, 31)
txtWeek2Friday.TabIndex <- 20
txtWeek2Friday.Text <- "0.00"
txtWeek2Friday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Friday)
// Create a text box for the time worked on Saturday of the second week
let txtWeek2Saturday : TextBox = new TextBox()
txtWeek2Saturday.Location <- new Point(739, 127)
txtWeek2Saturday.Size <- new Size(106, 31)
txtWeek2Saturday.TabIndex <- 21
txtWeek2Saturday.Text <- "0.00"
txtWeek2Saturday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Saturday)
// Create a text box for the time worked on Sunday of the second week
let txtWeek2Sunday : TextBox = new TextBox()
txtWeek2Sunday.Location <- new Point(851, 127)
txtWeek2Sunday.Size <- new Size(106, 31)
txtWeek2Sunday.TabIndex <- 22
txtWeek2Sunday.Text <- "0.00"
txtWeek2Sunday.TextAlign <- HorizontalAlignment.Right
gbxTimeValues.Controls.Add(txtWeek2Sunday)
// Specify the characteristics of the Calculation section
gbxCalculation.Location <- new Point(24, 369)
gbxCalculation.Size <- new Size(985, 192)
gbxCalculation.TabIndex <- 5
gbxCalculation.TabStop <- false
gbxCalculation.Text <- "Calculation"
// Create a button that will be used to handle the calculations
let btnCalculate : Button = new Button()
btnCalculate.Location <- new Point(27, 70)
btnCalculate.Size <- new Size(258, 73)
btnCalculate.TabIndex <- 0
btnCalculate.Text <- "Calculate"
btnCalculate.UseVisualStyleBackColor <- true
gbxCalculation.Controls.Add(btnCalculate)
// The controls in the following section will be used to display the pay summary
// Create a label that displays Time
let lblTime : Label = new Label()
lblTime.AutoSize <- true
lblTime.Location <- new Point(414, 35)
lblTime.Size <- new Size(50, 25)
lblTime.TabIndex <- 2
lblTime.Text <- "Time"
gbxCalculation.Controls.Add(lblTime)
// Create a label that displays Pay Amount
let lblPayAmount : Label = new Label()
lblPayAmount.AutoSize <- true
lblPayAmount.Location <- new Point(525, 35)
lblPayAmount.Size <- new Size(78, 25)
lblPayAmount.TabIndex <- 4
lblPayAmount.Text <- "Pay Amt"
gbxCalculation.Controls.Add(lblPayAmount)
// Create a label that displays Regular Time
let lblRegular : Label = new Label()
lblRegular.AutoSize <- true
lblRegular.Location <- new Point(324, 76)
lblRegular.Size <- new Size(71, 25)
lblRegular.TabIndex <- 1
lblRegular.Text <- "Regular"
gbxCalculation.Controls.Add(lblRegular)
// Create a text box that will the regular time
let txtRegularTime : TextBox = new TextBox()
txtRegularTime.Enabled <- false
txtRegularTime.Location <- new Point(414, 73)
txtRegularTime.Size <- new Size(95, 31)
txtRegularTime.TabIndex <- 3
txtRegularTime.Text <- "0.00"
txtRegularTime.TextAlign <- HorizontalAlignment.Right
gbxCalculation.Controls.Add(txtRegularTime)
// Create a text box that will the regular pay
let txtRegularPay : TextBox = new TextBox()
txtRegularPay.Enabled <- false
txtRegularPay.Location <- new Point(525, 73)
txtRegularPay.Size <- new Size(95, 31)
txtRegularPay.TabIndex <- 5
txtRegularPay.Text <- "0.00"
txtRegularPay.TextAlign <- HorizontalAlignment.Right
gbxCalculation.Controls.Add(txtRegularPay)
// Create a label that displays Overtime
let lblOvertime : Label = new Label()
lblOvertime.AutoSize <- true
lblOvertime.Size <- new Size(85, 25)
lblOvertime.TabIndex <- 6
lblOvertime.Text <- "Overtime"
lblOvertime.Location <- new Point(324, 122)
gbxCalculation.Controls.Add(lblOvertime)
// Create a text box that will the amount of overtime worked
let txtOverTime : TextBox = new TextBox()
txtOverTime.Enabled <- false
txtOverTime.Location <- new Point(414, 119)
txtOverTime.Size <- new Size(95, 31)
txtOverTime.TabIndex <- 7
txtOverTime.Text <- "0.00"
txtOverTime.TextAlign <- HorizontalAlignment.Right
gbxCalculation.Controls.Add(txtOverTime)
// Create a text box that will the Overtime pay
let txtOvertimePay : TextBox = new TextBox()
txtOvertimePay.Enabled <- false
txtOvertimePay.Location <- new Point(525, 119)
txtOvertimePay.Size <- new Size(95, 31)
txtOvertimePay.TabIndex <- 8
txtOvertimePay.Text <- "0.00"
txtOvertimePay.TextAlign <- HorizontalAlignment.Right
gbxCalculation.Controls.Add(txtOvertimePay)
// Create a label that displays Net Pay
let lblNetPay : Label = new Label()
lblNetPay.AutoSize <- true
lblNetPay.Location <- new Point(772, 73)
lblNetPay.Size <- new Size(71, 25)
lblNetPay.TabIndex <- 9
lblNetPay.Text <- "Regular"
gbxCalculation.Controls.Add(lblNetPay)
// Create a text box that will the net pay
let txtNetPay : TextBox = new TextBox()
txtNetPay.Enabled <- false
txtNetPay.Location <- new Point(862, 70)
txtNetPay.Size <- new Size(95, 31)
txtNetPay.TabIndex <- 10
txtNetPay.Text <- "0.00"
txtNetPay.TextAlign <- HorizontalAlignment.Right
gbxCalculation.Controls.Add(txtNetPay)
// This function is used to perform the calculations related to the payroll
let btnCalculateClick(e) =
// Declare the variables that will get the values of the time worked from the time sheet
let mutable week1Monday : double = 0.00
let mutable week1Tuesday = 0.00
let mutable week1Wednesday = 0.00
let mutable week1Thursday = 0.00
let mutable week1Friday = 0.00
let mutable week1Saturday = 0.00
let mutable week1Sunday = 0.00
let mutable week2Monday = 0.00
let mutable week2Ttuesday = 0.00
let mutable week2Wednesday = 0.00
let mutable week2Thursday = 0.00
let mutable week2Friday = 0.00
let mutable week2Saturday = 0.00
let mutable week2Sunday = 0.00
// Declare a value for the hourly salary
let mutable hourlySalary : double = 0.00
// Get the hourly salary. Use exception handling in case the user types a bad value.
try
hourlySalary <- float txtHourlySalary.Text
with
| :? FormatException -> MessageBox.Show("The value you typed for the salary is invalid. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
(* Get the value for each day worked.
* Use exception handling for each text box in case the user types a bad value.
* Get the value worked for Monday of the first week. *)
try
week1Monday <- float txtWeek1Monday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Monday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Tuesday of the first week
try
week1Tuesday <- float txtWeek1Tuesday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Tuesday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Wednesday of the first week
try
week1Wednesday <- float txtWeek1Wednesday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Wednesday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Thursday of the first week
try
week1Thursday <- float txtWeek1Thursday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Thursday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Friday of the first week
try
week1Friday <- float txtWeek1Friday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Firday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Saturday of the first week
try
week1Saturday <- float txtWeek1Saturday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Saturday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Sunday of the first week
try
week1Sunday <- float txtWeek1Sunday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Sunday of the first week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Monday of the second week
try
week2Monday <- float txtWeek2Monday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Monday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Tuesday of the second week
try
week2Ttuesday <- float txtWeek2Tuesday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Tuesday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Wednesday of the second week
try
week2Wednesday <- float txtWeek2Wednesday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Wednesday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Thursday of the second week
try
week2Thursday <- float txtWeek2Thursday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Thursday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Friday of the second week
try
week2Friday <- float txtWeek2Friday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Friday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Saurday of the second week
try
week2Saturday <- float txtWeek2Saturday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Saturday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Get the value worked for Sunday of the second week
try
week2Sunday <- float txtWeek2Sunday.Text
with
| :? FormatException -> MessageBox.Show("You typed an invalid value for Sunday of the second week. " +
"Please try again.", "Payroll Evaluation",
MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore
// Calculate the total time worked for the first week
let week1TotalTime = week1Monday + week1Tuesday + week1Wednesday +
week1Thursday + week1Friday + week1Saturday + week1Sunday;
// Calculate the total time worked for the second week
let week2TotalTime = week2Monday + week2Ttuesday + week2Wednesday +
week2Thursday + week2Friday + week2Saturday + week2Sunday;
// The overtime is paid time and half
let ovtSalary = hourlySalary * 1.5;
// Declare the variables that will be involved in the calculations
let mutable week1RegularTime = 0.00
let mutable week2RegularTime = 0.00
let mutable week1OverTime = 0.00
let mutable week2OverTime = 0.00
let mutable week1RegularPay = 0.00
let mutable week2RegularPay = 0.00
let mutable week1OvertimePay = 0.00
let mutable week2OvertimePay = 0.00
// If the employee worked below 40 hours, there is no overtime
if week1TotalTime < 40.00 then
week1RegularTime <- week1TotalTime
week1RegularPay <- hourlySalary * week1RegularTime
week1OverTime <- 0.00
week1OvertimePay <- 0.00
elif week1TotalTime >= 40.00 then // If the employee worked over 40 hours, calculate the overtime
week1RegularTime <- 40.00
week1RegularPay <- hourlySalary * 40.00
week1OverTime <- week1TotalTime - 40.00
week1OvertimePay <- week1OverTime * ovtSalary
// Use the same logic for the second week and perform the calculations
if week2TotalTime < 40 then
week2RegularTime <- week2TotalTime
week2RegularPay <- hourlySalary * week2RegularTime
week2OverTime <- 0.00
week2OvertimePay <- 0.00
elif week2TotalTime >= 40.00 then
week2RegularTime <- 40.00
week2RegularPay <- hourlySalary * 40.00
week2OverTime <- week2TotalTime - 40.00
week2OvertimePay <- week2OverTime * ovtSalary
// To get the total regular time, add the regular times of the first and the second week
let regularTime = week1RegularTime + week2RegularTime
// To get the total overtime, add the ovetimes of the first and the second week
let overTime = week1OverTime + week2OverTime
// To get the total regular pay, add the regular pays of the first and the second week
let regularPay = week1RegularPay + week2RegularPay
// To get the total overtime pay, add the overtime pays of the first and the second week
let overtimePay = week1OvertimePay + week2OvertimePay
// To get the total pay, add the net pays of the first and the second week
let netPay = regularPay + overtimePay
// Display the results as a pay summary
txtRegularTime.Text <- regularTime.ToString("F")
txtOverTime.Text <- overTime.ToString("F")
txtRegularPay.Text <- regularPay.ToString("F")
txtOvertimePay.Text <- overtimePay.ToString("F")
txtNetPay.Text <- netPay.ToString("F")
// Pass the calculation function to the Click event of the Calculate button
btnCalculate.Click.Add(btnCalculateClick)
// Create a button that will be used to close the form
let btnClose : Button = new Button()
btnClose.Location <- new Point(772, 119)
btnClose.Size <- new Size(185, 34)
btnClose.TabIndex <- 11
btnClose.Text <- "Close"
btnClose.UseVisualStyleBackColor <- true
let btnCloseClick(e) =
exercise.Close()
btnClose.Click.Add(btnCloseClick)
gbxCalculation.Controls.Add(btnClose)
exercise.Controls.Add(gbxCalculation)
exercise.Controls.Add(gbxTimeValues)
exercise.Controls.Add(gpxEmployeeIdentification)
gbxCalculation.ResumeLayout(false)
gbxCalculation.PerformLayout()
gbxTimeValues.ResumeLayout(false)
gbxTimeValues.PerformLayout()
gpxEmployeeIdentification.ResumeLayout(false)
gpxEmployeeIdentification.PerformLayout()
exercise.ResumeLayout(false)
Application.Run(exercise)
Employee Name: Gertrude Monay
Hourly Salary: 28.46
First Week
Monday: 8
Tuesday: 7.5
Wednesday: 6
Thursday: 7.5
Friday: 6.5
Saturday: 0
Sunday: 0
Second Week
Monday: 7
Tuesday: 8
Wednesday: 6
Thursday: 6
Friday: 8
Saturday: 0
Sunday: 0


Employee Name: Thomas Stones
Hourly Salary: 31.68
First Week
Monday: 8
Tuesday: 10
Wednesday: 9
Thursday: 8.5
Friday: 8
Saturday: 0
Sunday: 0
Second Week
Monday: 9
Tuesday: 8
Wednesday: 10.5
Thursday: 9
Friday: 8.5
Saturday: 0
Sunday: 0
|
|
|||
| Home | Copyright © 2010-2025, FunctionX | Thursday 12 December 2024, 09:34 | Home |
|
|
|||