Example Solutions: The Time Sheet |
|
A time sheet is a list that holds the time values worked by an employee or a contractor over a time period. In many companies, employees or contractors are usually asked to use a piece of paper on which they should record the necessary information for one or two weeks worth of the time they spent performing a duty. Nowadays, most companies use an electronic means of collecting the time. In an Intranet, employees may have to access an application from a shared drive, open the appropriate document, fill out their time sheet, and submit it. |
A paper time sheet is a physical list of values on a piece of paper. An employee would usually keep the paper that he or she can pick up at any time and modify it various times during the time period. If people from the accounting or payroll department wants to examine the time sheet of one particular employee, they would have to call the employee and request it. This is can be difficult or problematic if the employee and the company's accounting are not physically close, which is not uncommon nowadays (it is not surprising anymore for somebody located in New York to work for an employer who resides in San Francisco, or for a contractor in Adelaide to work for a company in Sydney). When the time period is over, such as at the end of the week or at the end of the two-week period, the employee can submit the time sheet. The time sheet is then sent to the accounting or payroll department.
An electronic time sheet is accessed using a computer. Usually, all employees time sheets are stored somewhere in a database on a computer. As stated earlier, an employee can access it any time, so can the accounting or payroll department. This means that, at any time, a supervisor can check the time sheet, for any reason. To make this possible, an application, namely a database is created, stored somewhere in a common computer such as a server, and given access to those who can use it. One of the advantages of using paper time sheet is that, since the employee keeps the time sheet, there is no risk of having a duplicate time sheet. On the other hand, if you create an electronic table of time sheets, when an employee who wants to fill out his or her time sheet opens it, you need to make sure that the right time sheet is opened. In the same way, if somebody from the payroll department wants to check one particular employee's time sheet, you need to make it possible and easy to locate the right time sheet. In the solution we are going to apply, we will create a table of employees and the time sheet they can fill out. In our time sheet, we will create a certain column, named TimeSheetCode, that will hold a unique number. We will come back to the role of this column.
To address our problem of an electronic time, we will create a time sheet in which two pieces of information are required: an employee's number and a starting period. After an employee has opened a time sheet:
After the the employee or contractor has entered a valid employee number and a start date, we will create a number called a time sheet code, represented in the TimeSheet as the TimeSheetCode column. This number is created as follows: 0000000000000 The first 5 digits represent the employee's number. The second 4 digits represent the year of the start date. The next 2 digits represent the month, and the last 2 digits represent the day. This number must be unique so that there would not be a duplicate number throughout the time sheet. To make sure the value of the TimeSheetCode is unique for each record, after the employee has provided a valid employee number and a start date, we will create the time sheet code and check if that number exists in the TimeSheet table already:
|
using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { bool ValidTimeSheet; bool bNewRecord; string strTimeSheetCode; protected void Page_Load(object sender, EventArgs e) { } protected void btnLocateEmployee_Click(object sender, EventArgs e) { if (this.txtEmployeeNumber.Text == "") { ValidTimeSheet = false; return; } string strSelect = string.Concat("SELECT * FROM Employees WHERE EmployeeNumber = '", this.txtEmployeeNumber.Text, "';"); SqlConnection conDatabase = new SqlConnection("Data Source=(local);Database='ynb1';" + "Integrated Security=true"); SqlCommand cmdDatabase = new SqlCommand(strSelect, conDatabase); DataSet dsEmployees = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmdDatabase; sda.Fill(dsEmployees); try { DataRow recEmployee = dsEmployees.Tables[0].Rows[0]; if (recEmployee.IsNull("EmployeeNumber")) { ValidTimeSheet = false; throw new System.IndexOutOfRangeException("Bad Employee Number!"); } else { String strFullName = (string)recEmployee["FirstName"] + " " + (string)recEmployee["LastName"]; lblEmployeeName.Text = "Welcome " + strFullName; ValidTimeSheet = true; } } catch (IndexOutOfRangeException) { ValidTimeSheet = false; lblEmployeeName.Text = ""; lblEmployeeName.Text = "There is no employee with that number!"; txtEmployeeNumber.Text = ""; } txtStartDate.Text = DateTime.Today.ToString("dddd MMMM dd, yyyy"); txtEndDate.Text = DateTime.Today.AddDays(14).ToString("dddd MMMM dd, yyyy"); txtWeek1Monday.Text = "0.00"; txtWeek1Tuesday.Text = "0.00"; txtWeek1Wednesday.Text = "0.00"; txtWeek1Thursday.Text = "0.00"; txtWeek1Friday.Text = "0.00"; txtWeek1Saturday.Text = "0.00"; txtWeek1Sunday.Text = "0.00"; txtWeek2Monday.Text = "0.00"; txtWeek2Tuesday.Text = "0.00"; txtWeek2Wednesday.Text = "0.00"; txtWeek2Thursday.Text = "0.00"; txtWeek2Friday.Text = "0.00"; txtWeek2Saturday.Text = "0.00"; txtWeek2Sunday.Text = "0.00"; conDatabase.Close(); } protected void btnLocateTimeSheet_Click(object sender, EventArgs e) { txtEndDate.Text = DateTime.Parse(txtStartDate.Text).AddDays(14).ToString("dddd MMMM dd, yyyy"); if (txtEmployeeNumber.Text.Equals("")) { ValidTimeSheet = false; return; } string strMonth; string strDay; int iMonth; int iDay; DateTime dteStart = DateTime.Today; try { dteStart = DateTime.Parse(txtStartDate.Text); } catch (FormatException) { // Invalid date } iMonth = dteStart.Month; iDay = dteStart.Day; if (iMonth < 10) strMonth = dteStart.Year + "0" + iMonth.ToString(); else strMonth = dteStart.Year + iMonth.ToString(); if (iDay < 10) strDay = strMonth + "0" + iDay.ToString(); else strDay = strMonth + iDay.ToString(); strTimeSheetCode = txtEmployeeNumber.Text + strDay; SqlConnection conTimeSheet = null; string strSQL = String.Concat("SELECT * FROM dbo.TimeSheets WHERE TimeSheetCode = '", strTimeSheetCode, "';"); conTimeSheet = new SqlConnection("Data Source=(local);Database='ynb1';" + "Integrated Security=true"); SqlCommand cmdTimeSheet = new SqlCommand(strSQL, conTimeSheet); DataSet dsTimeSheet = new DataSet("TimeSheetSet"); SqlDataAdapter sdaTimeSheet = new SqlDataAdapter(); sdaTimeSheet.SelectCommand = cmdTimeSheet; sdaTimeSheet.Fill(dsTimeSheet); conTimeSheet.Close(); try { DataRow recTimeSheet = dsTimeSheet.Tables[0].Rows[0]; strTimeSheetCode = (string)(recTimeSheet["TimeSheetCode"]); if (recTimeSheet.IsNull("TimeSheetCode")) { bNewRecord = true; throw new System.IndexOutOfRangeException( "No TimeSheet with that number exists!"); } else { txtWeek1Monday.Text = (string)recTimeSheet["Week1Monday"]; txtWeek1Tuesday.Text = (string)recTimeSheet["Week1Tuesday"]; txtWeek1Wednesday.Text = (string)recTimeSheet["Week1Wednesday"]; txtWeek1Thursday.Text = (string)recTimeSheet["Week1Thursday"]; txtWeek1Friday.Text = (string)recTimeSheet["Week1Friday"]; txtWeek1Saturday.Text = (string)recTimeSheet["Week1Saturday"]; txtWeek1Sunday.Text = (string)recTimeSheet["Week1Sunday"]; txtWeek2Monday.Text = (string)recTimeSheet["Week2Monday"]; txtWeek2Tuesday.Text = (string)recTimeSheet["Week2Tuesday"]; txtWeek2Wednesday.Text = (string)recTimeSheet["Week2Wednesday"]; txtWeek2Thursday.Text = (string)recTimeSheet["Week2Thursday"]; txtWeek2Friday.Text = (string)recTimeSheet["Week2Friday"]; txtWeek2Saturday.Text = (string)recTimeSheet["Week2Saturday"]; txtWeek2Sunday.Text = (string)recTimeSheet["Week2Sunday"]; bNewRecord = false; } } catch (IndexOutOfRangeException) { txtWeek1Monday.Text = "0.00"; txtWeek1Tuesday.Text = "0.00"; txtWeek1Wednesday.Text = "0.00"; txtWeek1Thursday.Text = "0.00"; txtWeek1Friday.Text = "0.00"; txtWeek1Saturday.Text = "0.00"; txtWeek1Sunday.Text = "0.00"; txtWeek2Monday.Text = "0.00"; txtWeek2Tuesday.Text = "0.00"; txtWeek2Wednesday.Text = "0.00"; txtWeek2Thursday.Text = "0.00"; txtWeek2Friday.Text = "0.00"; txtWeek2Saturday.Text = "0.00"; txtWeek2Sunday.Text = "0.00"; bNewRecord = true; } } protected void btnSubmit_Click(object sender, EventArgs e) { string strTimeSheet = ""; // If this is new record, then create a new time sheet if (bNewRecord == true) { strTimeSheet = String.Concat("INSERT INTO dbo.TimeSheets(TimeSheetCode, ", "EmployeeNumber, StartDate, Week1Monday, Week1Tuesday, ", "Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, ", "Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, ", "Week2Saturday, Week2Sunday, Notes) ", "VALUES('", strTimeSheetCode, "', '", txtEmployeeNumber.Text, "', '", DateTime.Parse(txtStartDate.Text).ToString("MM/dd/yyyy"), "', '", txtWeek1Monday.Text, "', '", txtWeek1Tuesday.Text, "', '", txtWeek1Wednesday.Text, "', '", txtWeek1Thursday.Text, "', '", txtWeek1Friday.Text, "', '", txtWeek1Saturday.Text, "', '", txtWeek1Sunday.Text, "', '", txtWeek2Monday.Text, "', '", txtWeek2Tuesday.Text, "', '", txtWeek2Wednesday.Text, "', '", txtWeek2Thursday.Text, "', '", txtWeek2Friday.Text, "', '", txtWeek2Saturday.Text, "', '", txtWeek2Sunday.Text, "', '", txtNotes.Text, "');"); } // If this is an existing record, then, only update it if (bNewRecord == false) { strTimeSheet = String.Concat("UPDATE TimeSheets SET Week1Monday = '", txtWeek1Monday.Text, "', Week1Tuesday = '", txtWeek1Tuesday.Text, "', Week1Wednesday = '", txtWeek1Wednesday.Text, "', Week1Thursday = '", txtWeek1Thursday.Text, "', Week1Friday = '", txtWeek1Friday.Text, "', Week1Saturday = '", txtWeek1Saturday.Text, "', Week1Sunday = '", txtWeek1Sunday.Text, "', Week2Monday = '", txtWeek2Monday.Text, "', Week2Tuesday = '", txtWeek2Tuesday.Text, "', Week2Wednesday = '", txtWeek2Wednesday.Text, "', Week2Thursday = '", txtWeek2Thursday.Text, "', Week2Friday = '", txtWeek2Friday.Text, "', Week2Saturday = '", txtWeek2Saturday.Text, "', Week2Sunday = '", txtWeek2Sunday.Text, "', Notes = '", txtNotes.Text, "' WHERE TimeSheetCode = '", strTimeSheetCode, "';"); } if (this.ValidTimeSheet == true) { SqlConnection conTimeSheet = new SqlConnection("Data Source=(local);Database='ynb1';" + "Integrated Security=true"); SqlCommand cmdTimeSheet = new SqlCommand(strTimeSheet, conTimeSheet); conTimeSheet.Open(); cmdTimeSheet.ExecuteNonQuery(); conTimeSheet.Close(); } } }
|
||
Home | Copyright © 2007-2013, FunctionX | |
|
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="timesheet.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Yugo National Bank - Employees Time Sheet</title> </head> <body> <form id="frmTimeSheet" runat="server" method="post"> <div> <h1>YNB - Employees Time Sheet</h1> <table width="520"> <tr> <td style="width: 84px"> <asp:Label ID="Label1" runat="server" Text="Employee #:"></asp:Label></td> <td style="width: 52px"> <asp:TextBox ID="txtEmployeeNumber" runat="server" Width="57px"></asp:TextBox> <asp:Button ID="btnLocateEmployee" runat="server" OnClick="btnLocateEmployee_Click" Text="..." /></td> <td style="width: 227px"> <asp:Label ID="lblEmployeeName" runat="server" Text="." Width="202px"></asp:Label></td> </tr> <tr> <td style="width: 84px"> <asp:Label ID="Label2" runat="server" Text="Start Date:"></asp:Label></td> <td colspan="1" style="width: 100px"> <asp:TextBox ID="txtStartDate" runat="server" Width="198px"></asp:TextBox></td> <td style="width: 100px" colspan="2"> <asp:Button ID="btnLocateTimeSheet" runat="server" OnClick="btnLocateTimeSheet_Click" Text="Locate" /></td> </tr> <tr> <td style="width: 84px"> <asp:Label ID="Label3" runat="server" Text="End Date:"></asp:Label></td> <td colspan="1" style="width: 100px"> <asp:TextBox ID="txtEndDate" runat="server" Width="197px"></asp:TextBox></td> <td style="width: 100px" colspan="2"> </td> </tr> </table> <br /> <table width="520"> <tr> <td style="width: 200px"> </td> <td style="width: 100px"> Mon</td> <td style="width: 100px"> Tue</td> <td style="width: 100px"> Wed</td> <td style="width: 100px"> Thu</td> <td style="width: 100px"> Fri</td> <td style="width: 100px"> Sat</td> <td style="width: 100px"> Sun</td> </tr> <tr> <td style="width: 200px"> Week 1:</td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Monday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Tuesday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Wednesday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Thursday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Friday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Saturday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek1Sunday" runat="server" Width="40px">0.00</asp:TextBox></td> </tr> <tr> <td style="width: 200px"> Week 2:</td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Monday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Tuesday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Wednesday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Thursday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Friday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Saturday" runat="server" Width="40px">0.00</asp:TextBox></td> <td style="width: 100px"> <asp:TextBox ID="txtWeek2Sunday" runat="server" Width="40px">0.00</asp:TextBox></td> </tr> </table> </div> <table width="520"> <tr> <td style="width: 208px" valign="top"> Notes:</td> <td style="width: 472px"> <asp:TextBox ID="txtNotes" runat="server" Height="77px" TextMode="MultiLine" Width="431px"></asp:TextBox></td> </tr> </table> <table width="520"> <tr> <td style="width: 5103px"> </td> <td style="width: 434px"> <asp:Button ID="btnSubmit" runat="server" Text="Submit" Width="91px" /></td> </tr> </table> </form> </body> </html>