 |
Assistance With Data Entry I |
|
|
The Unique Value of a Column |
|
When performing data entry, there are various ways you can
either assist the user or impose some behaviors on your application. You can:
- Configure some columns of a table to accept only some types of value and reject
others
- You can create a scenario that would make sure that each value under a
column is unique
- You can create an expression that would specify the value of a column
rather than the user entering it
- Using the data grid view or some other controls of the Toolbox, you can
present a list of values to the user who would only select from that list
instead of typing a value
All these functionalities are already available, either in
the classes of the data set system or built-in the available Windows controls.
|
Practical
Learning: Assisting With Data Entry
|
|
- Start Microsoft Visual C# and create a Windows Application named WattsALoan4
- To create a new form, in the Solution Explorer, right-click WattsALoan4
-> Add -> Windows Forms...
- Set the Name to LoanAllocations and click Add
- From the Data section of the Toolbox, click DataSet and click the form
- Select the Untyped Dataset radio button and click OK
- In the Properties window, change the following characteristics:
DataSetName: dsLoanAllocations
(Name): LoanAllocations
- Click Tables and click its ellipsis button
- To create a new table, click Add and change the properties as follows:
TableName: Loan
(Name): tblLoan
- Click Columns and click its ellipsis button
- Click Add 10 times and change the properties as follows:
| ColumnName |
(Name) |
| DateAllocated |
colDateAllocated |
| LoanNumber |
colLoanNumber |
| PreparedBy |
colPreparedBy |
| PreparedFor |
colPreparedFor |
| Principal |
colPrincipal |
| InterestRate |
colInterestRate |
| Periods |
colPeriods |
| InterestEarned |
colInterestEarned |
| FutureValue |
colFutureValue |
| MonthlyPayment |
colMonthlyPayment |
|
Controlling the Unique Value |
|
During data entry, the user is expected to enter various
values under each column and each value would belong to a particular record. As
a result, it is not unusual to have the same value belonging to different
records. For example, it is not surprising to have two employees holding the
same first or last name, just as it is not unusual to have two customers living
in the same city. On the hand, there are values that should be unique among the
records. For example, two employees should not have the same employee number and
two customer orders from two different customers should not have the same
receipt number. In these cases, you would want each record to hold a different
value under the same column. This is referred to as a unique value.
To support unique values, the DataColumn class is
equipped with a Boolean property named Unique. The default value of this
property is false, which means various records can have the same values for a
column.
To visually specify that a column would require (or not
require) unique values, in the Members list of the Columns Collection Editor,
click the name of the column and, in the Properties list, (accept or) change the
value of the Unique field. To programmatically control the uniqueness of values,
assign the desired Boolean value to the Unique property of the column.
|
Practical
Learning: Controlling the Uniqueness of a Column
|
|
- In the Members list, click LoanNumber
- In the Properties list, double-click Unique to change its value to True
|
Controlling the Type of Value of a Column |
|
|
The Data Type of a Column |
|
If you create an application that allows the
user to enter some values, you would wish the user
enter the right type of data under each column. To assist you with this, the DataColumn class allows you to specify
an appropriate or desired data type for each column. The data type of a column
allows it to accept or reject an inappropriate value. Although we saw that the name was the most important
aspect of a column, in reality, a data type is also required.
To specify the data type of a column, if you are visually
creating the table, in the Columns Collection Editor, under Members, create or
select the name of a column. In the Properties list, click the arrow of the
DataType field and select from the list:

To supports data types for a column, the DataColumn
class relies on the following .NET Framework structures: Boolean, Byte, Char, DateTime, Decimal,
Double, Int16, Int32, Int64, SByte, Single,
String, TimeSpan, UInt16, UInt32, and UInt64.
The DataColumn class can also support an array of Byte values, as
in Byte[], for a column.
When creating a new column, if
you do not specify its data type, it is assumed to be a string and
the string data type is automatically applied to it.
To programmatically specify the data type of a column, you have two main
alternatives. When declaring a column, to specify its data type, you can
initialize the DataColumn variable using the third constructor of the
class. Its syntax is:
public DataColumn(string columnName, Type dataType);
To specify a column's data type, select one from the Type
class of the System namespace by calling the Type.GetType() method. The GetType()
method is overloaded with three versions. The first version has the following
syntax:
public static Type GetType(string typeName);
This method expects as argument a valid data type defined in
the .NET Framework. The data type must be retrieved from the Type class of the
System namespace. The name of the data type must be qualified with a period
operator. Here is an example:
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
public class Exercise : Form
{
DataSet dsRedOakHighSchool;
DataTable tblRegistration;
DataColumn colStudentNumber;
public Exercise()
{
InitializeComponent();
}
void InitializeComponent()
{
Text = "Students Records";
Size = new Size(320, 160);
colStudentNumber = new DataColumn("StudentNumber", Type.GetType("System.Int32"));
tblRegistration = new DataTable("Student");
tblRegistration.Columns.Add(colStudentNumber);
dsRedOakHighSchool = new DataSet("SchoolRecords");
dsRedOakHighSchool.Tables.Add(tblRegistration);
}
}
public class Program
{
static int Main()
{
System.Windows.Forms.Application.Run(new Exercise());
return 0;
}
}
If you used the default constructor to create a DataColumn,
to specify its data type, assign its qualified type to the DataColumn.DataType
property. Here is an example:
public class Exercise : Form
{
DataColumn colStudentNumber;
DataColumn colFirstName;
DataColumn colLivesInASingleParentHome;
public Exercise()
{
InitializeComponent();
}
void InitializeComponent()
{
Text = "Students Records";
Size = new Size(320, 160);
colStudentNumber = new DataColumn("StudentNumber",
Type.GetType("System.Int32"));
colFirstName = new DataColumn("FullName");
colFirstName .DataType = Type.GetType("System.String");
colLivesInASingleParentHome = new DataColumn("LSPH");
colLivesInASingleParentHome.DataType = Type.GetType("System.Boolean");
}
}
Remember that there are various techniques you can use to
create a column by specifying its name and its data type.
|
Practical
Learning: Applying Data Types on Columns
|
|
- In the Members list, click Principal
- In the Properties list, click DataType, click the arrow of its combo box
and select System.Double
- In the same way, change the data types of the following columns:
| Member |
DataType |
| DateAllocated |
System.DateTime |
| LoanNumber |
System.String |
| PreparedBy |
System.String |
| PreparedFor |
System.String |
| Principal |
System.Double |
| InterestRate |
System.Double |
| Periods |
System.Double |
| InterestEarned |
System.Double |
| FutureValue |
System.Double |
| MonthlyPayment |
System.Double |
When performing data entry, the user is expected to enter a
value for each column. Sometimes, most values under a certain column would be
the same. For example, if you are creating an application that would be used in
a tri-state area such as MD-DC-VA and the product would be used to dry-clean
items from customers all over the region, most customers would come from the
state where the company is based. In the column used to enter the state, you can
provide a default value so that, if the user does not enter it, it would be
selected by default.
A default value is one that is automatically applied to a
column so the user can simply accept it but the user can change it if it does not
apply.
To visually create a default value on a column, in the
Column Collection Editor, select a column in the Members list. In the Properties
list, click DefaultValue and replace <DBNull> with the desired value.
To programmatically specify the default value, assign the
desired value to the DefaultValue property of the data column variable.
|
Practical
Learning: Applying Data Types on Columns
|
|
- In the Members list, click Principal
- In the Properties list, click DefaultValue and delete <DBNull>
- Type 0.00
- In the same way, change the default values of the following columns:
| Member |
DefaultValue |
| Principal |
0.00 |
| InterestRate |
8.75 |
| Periods |
36 |
|
The Expression of a Column |
|
So far, to perform data entry, we created the data fields
and expected the user to enter values in them. In some cases, instead of the user
typing data, you may want to specify your own constant value or you may want to
combine some values. An expression can be:
- A constant value such as 288, "Aaron Watts", or 48550.95
- A combination of two or more constants such 50 + 428, "HourlySalary"
+ 25.85, or "John" & " " & "Santini",
- The name of a column such as Filename, CountryCode or DateOfBirth
- The combination of a constant and one or more column names such as
Username & "@gmail.com"
- Or a combination of two or more columns such as FirstName & LastName
Besides the items in this list, you can also use some
functions and/or combine them with the items in the above list. The expression
then creates or represents a value. To create an expression, there are various
rules you must follow:
- If the expression is algebraic, you can use the normal math operations (+,
-, *, and /) applied to one or more constants combined to one or more column
names
- To create a combination of strings, you can use the + operator
Once you have decided about this expression, you can use it
as the value assigned to a column.
If you are visually creating a column, under the Members
list of the Column Collection Editor, select a column. To specify an expression
for it, in the Properties list, click Expression and type the desired
expression. Here is an example:

To programmatically specify the expression used on a column,
assign the expression, as a string, to its variable name. Here is an example:
public class Exercise : Form
{
DataSet dsRedOakHighSchool;
DataTable tblRegistration;
DataColumn colFirstName;
DataColumn colLastName;
DataColumn colFullName;
DataGridView dgvStudents;
public Exercise()
{
InitializeComponent();
}
void InitializeComponent()
{
Text = "Students Records";
Size = new Size(550, 160);
colFirstName = new DataColumn("FirstName");
colFirstName.DataType = Type.GetType("System.String");
colLastName = new DataColumn("LastName");
colLastName.DataType = Type.GetType("System.String");
colFullName = new DataColumn("FullName");
colFullName.DataType = Type.GetType("System.String");
colFullName.Expression = "FirstName + ' ' + LastName";
tblRegistration = new DataTable("Student");
tblRegistration.Columns.Add(colFirstName);
tblRegistration.Columns.Add(colLastName);
tblRegistration.Columns.Add(colFullName);
dsRedOakHighSchool = new DataSet("StudentsRecords");
dsRedOakHighSchool.Tables.Add(tblRegistration);
dgvStudents = new DataGridView();
dgvStudents.Location = new Point(12, 12);
dgvStudents.Size = new Size(400, 100);
dgvStudents.DataSource = dsRedOakHighSchool;
dgvStudents.DataMember = "Student";
Controls.Add(dgvStudents);
}
}

Thanks to this code, the user can type both the first and
the last names. Then two things:
- When the user moves to the next record, the expression is used to create
the value of the full name column

- The user cannot enter a value in the column that has an expression
|
Practical
Learning: Creating Expressions on Columns
|
|
- In the Members list, click FutureValue
- In the Properties list, click Expression and type Principal + InterestEarned
- In the same way, change the data types of the following columns:
| Member |
Expression |
| InterestEarned |
Principal * (InterestRate / 100) * (Periods / 12) |
| FutureValue |
Principal + InterestEarned |
| MonthlyPayment |
FutureValue / Periods |
|
Using Operators and Expressions |
|
To create an expression, you use the logical operators
from the Visual Basic language. Most of the operators are the same you are
already familiar with from your knowledge of C#, except as follows:
| Operator Name |
C# |
Visual Basic |
Data View |
| Equal |
== |
= |
= |
| Less Than |
< |
< |
< |
| Less Than Or Equal To |
<= |
<= |
<= |
| Greater Than |
> |
> |
> |
| Greater Than Or Equal To |
>= |
>= |
>= |
| Not Equal |
!= |
<> |
<> |
You can also use the other logical operators, such as the negation operator,
the conjunction operator, and the disjunction operator. Once again, you must use
them as they are implemented in the Visual Basic language as follows:
| Operator Name |
C# |
Visual Basic |
Data View |
| Negation |
! |
NOT |
NOT |
| Logical Conjunction |
&& |
AND |
AND |
| Logical Disjunction |
|| |
OR |
OR |
The ADO.NET system (but remember that ADO.NET is not a library; it is just a name) ships with various functions (because C# does not have the concept
of function, consider that a function is a type of method but that does not
belong to a (specific) class) you can use for data filtering.
The following logical functions available are (although the names are given
here in uppercase, the language is actually case-insensitive):
The following functions are used to evaluate the values from one particular
column. They are called aggregate functions and they are:
- Avg: This function is used to calculate the average of a series
of values. The values would stored in one particular column
- Sum:
- Min:
- Max:
- Count:
- Var:
- StdDev:
- CONVERT:
To manipulate strings, the following functions are available (although the
names are given here in uppercase, the language is actually case-insensitive):
|
Text Length and Null Values |
|
|
The Maximum Length of a Column |
|
If a column is configured to receive text, that is, if its
data type is set to string, by default, it can hold 0 to 32767 characters. This
is (too) long for most cases. For example, if a column is made for people's
names, this length is certainly too high. Fortunately, to customize the behavior
of a column, you can limit the number of the characters that can be entered in a
column.
To support the ability to control the number of characters
that a text-based column would allow, the DataColumn class is equipped
with a property named MaxLength. The default value of this property is
-1, which means there is no limit.
To visually set the maximum length, in the Columns
Collection Editor, click a column in the Members list. In the Properties list,
click MaxLength and type the desired value. To programmatically specify
the maximum length, assign an integer value to the MaxLength property of
the column's variable.
When performing data entry, if the user does not have a
value for a certain column, he or she may skip it. In some cases, you may want a
value to be required; that is, you would not let the column to be left empty.
When a column is left empty, it is referred to as null.
To support the ability to have a null value or to require
it, the DataColumn class is equipped with a Boolean property named AllowDBNull.
If you want the user to be able to skip a column and not provide a value, you
can ignore this property or set it to true. To require a value for a column, set
this property to false.
|
Practical
Learning: Nullifying a Column
|
|
- In the Members list, click DateAllocated
- In the Properties list, double-click the value of the AllowDBNull field to
set it to False
- In the Members list, click LoanNumber
- In the Properties list, double-click the value of the AllowDBNull field to
set it to False
- Click Close and click Close
- To create a new form, in the Solution Explorer, right-click WattsALoan4
-> Add -> Windows Forms...
- Set the Name to Employees and click Add
- From the Data section of the Toolbox, click DataSet and click the form
- Select the Untyped Dataset radio button and click OK
- In the Properties window, change the following characteristics:
DataSetName: dsEmployees
(Name): Employees
- Click Tables and click its ellipsis button
- To create a new table, click Add and change the properties as follows:
TableName: Employee
(Name): tblEmployee
- Click Columns and click its ellipsis button
- Click Add 5 times and change the properties as follows:
| AllowDBNull |
ColumnName |
DefaultValue |
DataType |
Expression |
Unique |
(Name) |
| False |
EmployeeNumber |
|
|
|
True |
colEmployeeNumber |
| |
FirstName |
|
|
|
|
colFirstName |
| False |
LastName |
|
|
|
|
colLastName |
| |
FullName |
|
|
LastName + ', ' + FirstName |
|
colFullName |
| |
Title |
|
|
|
|
colTitle |
| |
HourlySalary |
8.75 |
System.Double |
|
|
colHourlySalary |
- Click Close and click Close
- Design the form as follows:
 |
| Control |
Text |
Name |
Other Properties |
| DataGridView |
|
dgvEmployees |
DataSource: dsEmployees
DataMember: Employee |
| Button |
Close |
btnClose |
|
|
| Data Grid Columns |
| DataPropertyName |
HeaderText |
Width |
| EmployeeNumber |
Empl # |
65 |
| FirstName |
First Name |
65 |
| LastName |
Last Name |
65 |
| FullName |
Full Name |
120 |
| Title |
|
110 |
| HourlySalary |
Salary/hr |
60 |
|
- Double-click an unoccupied area of the form and implement the event as
follows:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WattsALoan4
{
public partial class Employees : Form
{
public Employees()
{
InitializeComponent();
}
private void Employees_Load(object sender, EventArgs e)
{
string strFilename = "employees.xml";
if (File.Exists(strFilename))
dsEmployees.ReadXml(strFilename);
}
}
}
|
- Return to the form and click an unoccupied area of its body
- In the Properties window, click the Events button and double-click
FormClosing
- Implement the event as follows:
private void Employees_FormClosing(object sender, FormClosingEventArgs e)
{
dsEmployees.WriteXml("employees.xml");
}
|
- Return to the form and double-click the Close button
- Implement the event as follows:
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
|
- Return to the form
- Under the form, right-click dsEmployees and click Copy
- Display the LoanAllocations form
- Right-click it and click Paste
- To create a new form, in the Solution Explorer, right-click WattsALoan4
-> Add -> Windows Forms...
- Set the Name to Customers and click Add
- From the Data section of the Toolbox, click DataSet and click the form
- Select the Untyped Dataset radio button and click OK
- In the Properties window, change the following characteristics:
DataSetName: dsCustomers
(Name): Customers
- Click Tables and click its ellipsis button
- To create a new table, click Add and change the properties as follows:
TableName: Customer
(Name): tblCustomer
- Click Columns and click its ellipsis button
- Click Add 5 times and change the properties as follows:
| AllowDBNull |
ColumnName |
Unique |
(Name) |
| False |
AccountNumber |
True |
colAccountNumber |
| False |
FullName |
|
colFullName |
| |
EmailAddress |
|
colEmailAddress |
| |
PhoneNumber |
|
colPhoneNumber |
- Click Close and click Close
- Design the form as follows:
 |
| Control |
Text |
Name |
Other Properties |
| DataGridView |
|
dgvCustomers |
DataSource: dsCustomers
DataMember: Customer |
| Button |
Close |
btnClose |
|
|
| Data Grid Columns |
| DataPropertyName |
HeaderText |
Width |
| AccountNumber |
Account # |
65 |
| FullName |
Full Name |
120 |
| EmailAddress |
Email Address |
120 |
| PhoneNumber |
Phone # |
90 |
|
- Double-click an unoccupied area of the form and implement the event as
follows:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WattsALoan4
{
public partial class Customers : Form
{
public Customers()
{
InitializeComponent();
}
private void Customers_Load(object sender, EventArgs e)
{
string strFilename = "customers.xml";
if (File.Exists(strFilename))
dsCustomers.ReadXml(strFilename);
}
}
}
|
- Return to the form and click an unoccupied area of its body
- In the Properties window, click the Events button and double-click
FormClosing
- Implement the event as follows:
private void Customers_FormClosing(object sender, FormClosingEventArgs e)
{
dsCustomers.WriteXml("customers.xml");
}
|
- Return to the form and double-click the Close button
- Implement the event as follows:
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
|
- Return to the form
- Under the form, right-click dsCustomers and click Copy
- Display the LoanAllocations form
- Right-click it and click Paste
- Design the form as follows:
 |
| Control |
Text |
Name |
Other Properties |
| DataGridView |
|
dgvCustomers |
DataSource: dsCustomers
DataMember: Customer |
| Button |
Close |
btnClose |
|
|
| Data Grid Columns |
| DataPropertyName |
HeaderText |
Width |
DefaultCellStyle -> Format |
|
| DateAllocated |
Date Allocated |
|
Date Time |
|
| LoanNumber |
Loan # |
65 |
|
|
| PreparedBy |
Prepared By |
110 |
|
ColumnType: DataGridViewComboBoxColumn
DataSource: dsEmployees
DisplayMember: Employee.EmployeeNumber |
| PreparedFor |
Prepared For |
110 |
|
ColumnType: DataGridViewComboBoxColumn
DataSource: dsCustomers
DisplayMember: Customer.AccountNumber |
| Principal |
|
70 |
Currency |
|
| InterestRate |
Rate (%) |
65 |
Numeric |
|
| Periods |
Prd (Months) |
65 |
Numeric |
|
| InterestEarned |
Interest Earned |
|
Currency |
|
| FutureValue |
Future Value |
|
Currency |
|
| MonthlyPayment |
Pmt/Month |
|
Currency |
|
|
- Double-click an unoccupied area of the form and implement the event as
follows:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WattsALoan4
{
public partial class LoanAllocations : Form
{
public LoanAllocations()
{
InitializeComponent();
}
private void LoanAllocations_Load(object sender, EventArgs e)
{
string strFilename = "employees.xml";
if (File.Exists(strFilename))
dsEmployees.ReadXml(strFilename);
strFilename = "customers.xml";
if (File.Exists(strFilename))
dsCustomers.ReadXml(strFilename);
strFilename = "loans.xml";
if (File.Exists(strFilename))
dsLoanAllocations.ReadXml(strFilename);
}
}
}
|
- Return to the form and click an unoccupied area of its body
- In the Properties window, click the Events button and double-click
FormClosing
- Implement the event as follows:
private void LoanAllocations_FormClosing(object sender, FormClosingEventArgs e)
{
dsLoanAllocations.WriteXml("loans.xml");
}
|
- Return to the form and double-click the Close button
- Implement the event as follows:
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
|
- To create a new form, in the Solution Explorer, right-click WattsALoan4
-> Add -> Windows Forms...
- Set the Name to Payments and click Add
- Display the Employees form
- Right-click dsEmployees and click Copy
- Display the Payments form
- Right-click it and click Paste
- Display the LoanAllocations form
- Right-click dsLoanAllocations and click Copy
- Display the Payments form
- Right-click it and click Paste
- From the Data section of the Toolbox, click DataSet and click the Payments
form
- Select the Untyped Dataset radio button and click OK
- In the Properties window, change the following characteristics:
DataSetName: dsPayments
(Name): Payments
- Click Tables and click its ellipsis button
- To create a new table, click Add and change the properties as follows:
TableName: Payment
(Name): tblPayment
- Click Columns and click its ellipsis button
- Click Add 6 times and change the properties as follows:
| AllowDBNull |
ColumnName |
DataType |
DefaultValue |
Expression |
Unique |
(Name) |
| False |
PaymentNumber |
|
|
|
True |
colPaymentNumber |
| False |
PaymentDate |
System.DateTime |
|
|
|
colPaymentDate |
| False |
ReceivedBy |
|
|
|
|
colReceivedBy |
| False |
PaymentFor |
|
|
|
|
colPaymentFor |
| False |
PaymentAmount |
System.Double |
0.00 |
|
|
colPaymentAmount |
| |
Balance |
System.Double |
0.00 |
|
|
colBalance |
- Click Close and click Close
- Design the form as follows:
 |
| Control |
Text |
Name |
Other Properties |
| DataGridView |
|
dgvPayments |
DataSource: dsPayments
DataMember: Payment |
| Button |
Loans... |
btnLoans |
|
| Button |
Close |
btnClose |
|
|
| Data Grid Columns |
| DataPropertyName |
HeaderText |
Width |
DefaultCellStyle -> Format |
|
| PaymentNumber |
Pmt # |
55 |
|
|
| PaymentDate |
Pmt Date |
70 |
Date Time |
|
| ReceivedBy |
Received By |
|
|
ColumnType: DataGridViewComboBoxColumn
DataSource: dsEmployees
DisplayMember: Employee.EmployeeNumber |
| PaymentFor |
Payment For |
|
|
ColumnType: DataGridViewComboBoxColumn
DataSource: dsLoanAllocations
DisplayMember: Loan.LoanNumber |
| PaymentAmount |
Pmt Amt |
70 |
Currency |
|
| Balance |
|
80 |
Currency |
|
|
- Double-click an unoccupied area of the form and implement the event as
follows:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WattsALoan4
{
public partial class Payments : Form
{
public Payments()
{
InitializeComponent();
}
private void Payments_Load(object sender, EventArgs e)
{
string strFilename = "loans.xml";
if (File.Exists(strFilename))
dsLoanAllocations.ReadXml(strFilename);
strFilename = "payments.xml";
if (File.Exists(strFilename))
dsPayments.ReadXml(strFilename);
}
}
}
|
- Return to the form and click an unoccupied area of its body
- In the Properties window, click the Events button and double-click
FormClosing
- Implement the event as follows:
private void Payments_FormClosing(object sender, FormClosingEventArgs e)
{
dsPayments.WriteXml("payments.xml");
}
|
- Return to the form and double-click the Loans button
- Implement the event as follows:
private void btnLoans_Click(object sender, EventArgs e)
{
LoanAllocations frmLoans = new LoanAllocations();
frmLoans.Show();
}
|
- Return to the form and double-click the Close button
- Implement the event as follows:
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
|
- In the Solution Explorer, right-click Form1.cs and click Rename
- Type Central.cs and press Enter twice to display the form
- Design the form as follows:
 |
| Control |
Text |
Name |
| Button |
... |
btnPayments |
| Label |
Loan Payments |
lblPayments |
| Button |
... |
btnAllocations |
| Label |
Loan Allocations |
lblAllocations |
| Button |
... |
btnCustomers |
| Label |
Customers |
lblCustomers |
| Button |
... |
btnEmployees |
| Label |
Employees |
lblEmployees |
| Button |
Close |
btnClose |
|
- Double-click the top button and implement its event as follows:
private void btnPayments_Click(object sender, EventArgs e)
{
Payments frmPayments = new Payments();
frmPayments.ShowDialog();
}
|
- Return to the form and double-click the Loan Payments label
- Implement its event as follows:
private void lblPayments_Click(object sender, EventArgs e)
{
Payments frmPayments = new Payments();
frmPayments.ShowDialog();
}
|
- Return to the form and double-click the second button from top
- Implement its event as follows:
private void btnLoanAllocations_Click(object sender, EventArgs e)
{
LoanAllocations frmLoans = new LoanAllocations();
frmLoans.ShowDialog();
}
|
- Return to the form and double-click the Loan Allocations label
- Implement its event as follows:
private void lblLoanAllocations_Click(object sender, EventArgs e)
{
LoanAllocations frmLoans = new LoanAllocations();
frmLoans.ShowDialog();
}
|
- Return to the form and double-click the third button from top
- Implement its event as follows:
private void btnCustomers_Click(object sender, EventArgs e)
{
Customers frmClients = new Customers();
frmClients.ShowDialog();
}
|
- Return to the form and double-click the Customers label
- Implement its event as follows:
private void lblCustomers_Click(object sender, EventArgs e)
{
Customers frmBorrowers = new Customers();
frmBorrowers.ShowDialog();
}
|
- Return to the form and double-click the fourth button from top
- Implement its event as follows:
private void btnEmployees_Click(object sender, EventArgs e)
{
Employees frmStaff = new Employees();
frmStaff.ShowDialog();
}
|
- Return to the form and double-click the Employees label
- Implement its event as follows:
private void lblEmployees_Click(object sender, EventArgs e)
{
Employees frmClerks = new Employees();
frmClerks.ShowDialog();
}
|
- Return to the form and double-click the Close button from top
- Implement its event as follows:
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
|
- Execute the application
- Click the Employees label and create the following records:
| Employee # |
First Name |
Last Name |
Title |
Salary/hr |
| 7973-45 |
Bernard |
Wallow |
Account Manager |
24.85 |
| 2497-94 |
Justine |
Bogley |
Sales Representative |
12.75 |
| 2930-75 |
Nestor |
Rosenblatt |
Sales Representative |
14.25 |
- Close the form
- Click the Customers label and create the following records:
| Account # |
Full Name |
Email Address |
Phone Number |
| 937-497 |
Joan Fairbanks |
fairbie1288@hotmail.com |
(301) 937-5888 |
| 293-759 |
Ernie Lipps |
ernie.rowdie@comcast.net |
(703) 506-0000 |
| 502-850 |
Christopher Owens |
owenchris@yahoo.com |
(202) 529-6100 |
| 520-840 |
Ann Rowdy |
rowdiant@msn.com |
(301) 855-2090 |
| 602-475 |
Sarah Thompson |
lolitta448@yahoo.com |
(301) 870-7454 |
- Close the form
- Click the Loan Allocations label and create the following records:
| Date Allocated |
Loan # |
Prepared By |
Prepared For |
Principal |
Rate (%) |
Prd (Months) |
| 08/18/06 |
52-9739-5 |
2497-94 |
937-497 |
6500 |
16.25 |
|
| 10/26/2006 |
20-5804-8 |
7973-45 |
602-475 |
3260 |
|
|
| 02/06/07 |
77-3907-2 |
2497-94 |
502-850 |
25605 |
12.50 |
60 |
| 03/20/07 |
92-7495-4 |
2930-75 |
293-759 |
14800 |
|
48 |
- Close the form
- Click the Loan Payments label and create the following records:
| Pmt # |
Pmt Date |
Received By |
Payment For |
Pmt Amt |
Balance |
| 1001 |
10/25/06 |
2497-94 |
52-9739-5 |
268.58 |
9400.17 |
| 1002 |
11/30/06 |
2930-75 |
52-9739-5 |
268.58 |
9131.59 |
| 1003 |
12/24/2006 |
7973-45 |
20-5804-8 |
114.33 |
4001.42 |
| 1004 |
12/28/06 |
2497-94 |
52-9739-5 |
268.58 |
8863.01 |
| 1005 |
01/26/07 |
2497-94 |
20-5804-8 |
114.33 |
3887.09 |
| 1006 |
01/31/07 |
2930-75 |
52-9739-5 |
268.58 |
8594.43 |
| 1007 |
02/20/07 |
2497-94 |
20-5804-8 |
114.33 |
3772.76 |
| 1008 |
03/02/07 |
2930-75 |
52-9739-5 |
268.58 |
8325.85 |
| 1009 |
03/25/2007 |
2930-75 |
20-5804-8 |
114.33 |
3658.43 |
| 1010 |
04/25/07 |
7973-45 |
92-7495-4 |
416.25 |
19563.75 |
| 1011 |
04/28/07 |
2497-94 |
77-3907-2 |
693.47 |
40914.66 |
| 1012 |
04/28/07 |
7973-45 |
20-5804-8 |
114.33 |
3544.10 |
| 1013 |
05/01/07 |
7973-45 |
52-9739-5 |
268.58 |
8057.27 |
| 1014 |
05/26/07 |
2497-94 |
77-3907-2 |
693.47 |
40221.19 |
- Close the forms and return to your programming environment