LAB
MANUAL:
CSE 300
SOFTWARE
DEVELOPMENT
USING C# and .NET
MD MAMUNUR RASHID
AKAND & NABIL BIN HANNAN
Lecturer, Dept of CSE, AUST.
                               1
CONTENTS
LAB 01: INTRODUCTION TO .NET AND VISUAL C# ........................................................................................ 4
   Downloading visual studio ........................................................................................................................ 4
   Different versions of visual studio (paid and free ones) ........................................................................... 4
   Creating a simple console application which displays hello world ........................................................... 4
   Taking non-numeric data from keyboard into console application.......................................................... 4
   Taking numeric data in console application ............................................................................................. 5
   Handling errors using try and catch block ................................................................................................ 5
LAB 02: C# CONSOLE APPLICATION .............................................................................................................. 6
   Using "IF" and "ELSE" to define conditions in C# applications ................................................................. 6
   Putting comments in c# code ................................................................................................................... 6
   Using FOR loop .......................................................................................................................................... 7
   Creating a simple console calculator ........................................................................................................ 7
LAB 03: C# WINDOWS APPLICATION ............................................................................................................ 8
   Creating windows application................................................................................................................... 8
   Creating a simple customer screen which takes Customer name, Country, Gender, Hobby and Status
   ................................................................................................................................................................ 10
   Creating a preview screen that will display data entered in to the customer data entry screen .......... 11
LAB 04: NAVIGATIONAL MENUS, OOP AND CONNECTING TO DATABASE ................................................. 13
   Creating navigational menus which will help us to navigate Customer entry screen and display screens
   easily ....................................................................................................................................................... 13
   Reusing code by creating classes and objects and form validation ........................................................ 14
   Connecting to SQL Server, getting data and getting acquainted with ADO.NET components, like
   connection, command and data reader ................................................................................................. 16
LAB 05: INSERTING INTO DATABASE AND DYNAMIC CONNECTION STRING.............................................. 18
   Inserting data from the UI to SQL Server ................................................................................................ 18
   Making the connection string configurable by storing it in a XML configuration files rather than hard-
   coding it in the C# code........................................................................................................................... 19
LAB 06: UPDATING AND DELETING FROM DATABASE ................................................................................ 19
   Selecting data when a user clicks on the data grid hyper link ................................................................ 19
   updating data by using the UPDATE SQL command using the ADO.NET command object ................... 20
   Implementing delete functionality by writing the delete SQL command in the ADO.NET command
   object ...................................................................................................................................................... 21
                                                                                                                                                                    2
LAB 07: TWO-LAYERED ARCHITECTURE ...................................................................................................... 21
   Breaking the project into a 2-layered architecture, the first layer will have UI + business logic and the
   second layer will have the SQL part i.e. data access............................................................................... 21
LAB 08: CREATING ASP.NET WEB APPLICATION ......................................................................................... 21
   Creating an ASP.NET web application UI that will interact with the customer data entry database..... 21
   Connecting the ASP.NET Web application UI with the data access layer ............................................... 21
   Implementing insert, update and delete functionality for the ASP.NET web application UI. ................ 21
LAB 09: THREE-LAYERED ARCHITECTURE.................................................................................................... 22
   Converting the 2-layered architecture to 3-layered architecture (3 layers: UI, business logic and data
   access) ..................................................................................................................................................... 22
LAB 10: SECURITY ........................................................................................................................................ 23
   Implementing security in Windows applications .................................................................................... 23
   Implementing Web security using Forms Authentication ...................................................................... 23
LAB 11: VALIDATION AND CRYSTAL REPORT .............................................................................................. 23
   Implementing email validation easily using a regular expression (REGEX) ............................................ 23
   Creating Crystal Reports ......................................................................................................................... 23
LAB 12: DATABASE NORMALIZATION AND RELATIONSHIPS....................................................................... 23
   Applying normalization rules to make our database more structured so that we can avoid redundant
   and duplicate data .................................................................................................................................. 23
   Understanding 1 to many relationship between customer and hobbies............................................ 23
                                                                                                                                                                 3
LAB 01: INTRODUCTION TO .NET AND VISUAL C#
DOWNLOADING VISUAL STUDIO
DIFFERENT VERSIONS OF VISUAL STUDIO (PAID AND FREE ONES)
         Download Visual Studio 2010 Full Version and choose the Visual C#
          template/environment when creating a new project.
CREATING A SIMPLE CONSOLE APPLICATION WHICH DISPLAYS HELLO WORLD
         Create a new project and select Console Application
         Give a project name
         The namespace keyword is used to declare a scope. This namespace
          scope lets you organize code and gives you a way to create
          globally unique types.
using   System;
using   System.Collections.Generic;
using   System.Linq;
using   System.Text;
namespace Lab01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Output:
Hello World!
TAKING NON-NUMERIC DATA FROM KEYBOARD INTO CONSOLE APPLICATION
         ReadLine () function works similar to scanf () function. Waits
          for the user until an input is given from the keyboard
         Write () and WriteLine () functions work similar to printf ()
          function
                                                                             4
namespace Lab01
{
    class Program
    {
        static void Main(string[] args)
        {
            string Name = "";
            Console.Write("Please Enter your name: ");
            Name = Console.ReadLine();
            Console.WriteLine ("User Name: " + Name);
        }
    }
}
Please Enter your name: Mamun
User Name: Mamun
TAKING NUMERIC DATA IN CONSOLE APPLICATION
       ReadLine () function returns a string, so in case we want to
        work with an integer number we have to convert the string to
        integer by using Convert.ToInt16 (string). According to the
        integers size you can also use ToInt32, ToInt64 etc.
namespace Lab01
{
    class Program
    {
        static void Main(string[] args)
        {
            int Age = 0;
            Console.Write("Please Enter your age: ");
            Age = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("User Age: " + Age);
        }
    }
}
Please Enter your age: 25
User Age: 25
HANDLING ERRORS USING TRY AND CATCH BLOCK
       Similar to Java, in Visual C# we have to use try and catch block
        to handle different types of errors.
namespace Lab01
{
    class Program
    {
        static void Main(string[] args)
                                                                           5
         {
              int Age = 0;
              Console.Write("Please Enter your age: ");
              try
              {
                  Age = Convert.ToInt16(Console.ReadLine());
                  Console.WriteLine("User Name: " + Age);
              }
              catch (Exception)
              {
                  Console.WriteLine("You must Enter Numeric value as your age.");
              }
         }
    }
}
Sample Output:
Please Enter your age: Mamun
You must Enter Numeric value as your age.
LAB 02: C# CONSOLE APPLICATION
USING "IF" AND "ELSE" TO DEFINE CONDITIO NS IN C# APPLICATIONS
       This program takes a name as input which should be 10 characters
        long. If not then it will display an error message.
namespace Lab02
{
    class Program
    {
        static void Main(string[] args)
        {
            string Name = "";
            Console.Write("Please enter your name: ");
            Name = Console.ReadLine();
            if (Name.Length > 10)
                 Console.WriteLine("Name must be within 10 characters.");
            else
                 Console.WriteLine("User Name: " + Name);
        }
    }
}
Please enter your name: Mamunur Rashid Akand
Name must be within 10 characters.
PUTTING COMMENTS IN C# CODE
       Comments in Visual C# are same as C programming language.
                                                                                    6
class Program
{
    static void Main(string[] args)
    {
        string Name = "";
        Console.Write("Please enter your name: "); // You can put a single line comment
        /* or, if you wish,
         * you can put a multiple line comment
         * like this
         * */
    }
}
USING FOR LOOP
      This program prints 0 to 9 using for loop.
class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < 10; i++)
            Console.Write(i);
    }
}
Sample Output:
0123456789
CREATING A SIMPLE CONSOLE CALCULATOR
      This program takes 2 number as input using ReadLine () function.
       As we have said earlier, ReadLine () function only takes input as
       string datatype. So, to calculate real numbers we need to use
       datatype such as double, float etc.
      To convert to double we can use the ToDouble () function and to
       convert to float use ToSingle () function.
      Then we have to take another input that is the operator. Because
       we have to specify which type of operation we want to perform.
      If we give operator input anything except +,-,*,/ then we are
       showing an error message: Invalid Operator!
namespace Lab02
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter first Number: ");
            double n1 = Convert.ToDouble(Console.ReadLine());
            Console.Write("Enter second Number: ");
            double n2 = Convert.ToDouble(Console.ReadLine());
                                                                                          7
             Console.Write("Enter operator: ");
             string op = Console.ReadLine();
             double result = 0;
             bool valid = true;
             switch (op)
             {
                 case "+":
                     result = n1 + n2;
                     break;
                 case "-":
                     result = n1 - n2;
                     break;
                 case "*":
                     result = n1 * n2;
                     break;
                 case "/":
                     result = n1 / n2;
                     break;
                 default:
                     valid = false;
                     break;
             }
             if (valid) Console.WriteLine("Result is: " + result);
             else Console.WriteLine("Invalid Operator!");
         }
    }
}
Enter first Number: 4                             Enter first Number: 4
Enter second Number: 2                            Enter second Number: 2
Enter operator: +                                 Enter operator: 2
Result is: 6                                      Invalid Operator!
LAB 03: C# WINDOWS APPLICATION
CREATING WINDOWS APPLICATION
       Until now all we have done is created console applications which
        have no good representation of Graphical User Interface (GUI).
       For doing this, we need to create windows application that can
        have single or multiple forms which are the means of GUI
        representation.
       For the program below, we have to first Create a new project 
        Select Windows Form Application  Give a proper project name
       Then go to View  ToolBox. Drag 2 TextBoxes from the ToolBox to
        the Design form named Form1. In these 2 textboxes we will input 2
        numbers for calculation. Give the TextBoxes unique names: Select
                                                                           8
       the TextBox  Right Click  Properties  In Properties find
       Name field and give a unique name to the Textbox. Suppose the
       1st TextBox name is txtNumber1 and the 2nd TextBox name is
       txtNumber2.
      Then we have to go to View  ToolBox and add 4 Buttons for the
       operations (+,-,*, /). Similarly give each Button a unique name
       in the Name field. Here we have given the Buttons name as
       follows: btnPlus, btnMinus, btnMultiplication and btnDivision. We
       also have to show the symbols (+,-,*, /) on the Button. To do
       that, Select the 1st Button Right Click  Properties  Find
       Text field and write +. Do this for the other buttons as well.
      We want to click the Buttons and perform the operations
       accordingly. So we have to write some code for each Buttons
       ClickEvent. To do that, double click each button in the form and
       then write the corresponding operations for the 2 numbers given
       input in the Textboxes.
      Here we are showing the output using a MessageBox.
using System.Windows.Forms;
namespace SimpleForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btnPlus_Click(object sender, EventArgs e)
        {
            double n1 = Convert.ToDouble(txtNumber1.Text);
            double n2 = Convert.ToDouble(txtNumber2.Text);
            double result = n1 + n2;
            MessageBox.Show(n1 + "+" + n2 + " = " + result);
        }
        private void btnMinus_Click(object sender, EventArgs e)
        {
            double n1 = Convert.ToDouble(txtNumber1.Text);
            double n2 = Convert.ToDouble(txtNumber2.Text);
            double result = n1 - n2;
            MessageBox.Show(n1 + "-" + n2 + " = " + result);
        }
        private void btnMultiplication_Click(object sender, EventArgs e)
        {
            double n1 = Convert.ToDouble(txtNumber1.Text);
            double n2 = Convert.ToDouble(txtNumber2.Text);
            double result = n1 * n2;
            MessageBox.Show(n1 + "*" + n2 + " = " + result);
        }
                                                                           9
        private void btnDivision_Click(object sender, EventArgs e)
        {
            double n1 = Convert.ToDouble(txtNumber1.Text);
            double n2 = Convert.ToDouble(txtNumber2.Text);
            double result = n1 / n2;
            MessageBox.Show(n1 + "/" + n2 + " = " + result);
        }
    }
}
CREATING A SIMPLE CUSTOMER SCREEN WHICH TAKES CUSTOMER NAME, COUNTRY,
GENDER, HOBBY AND STATUS
       Create a Windows Form and in the Text Properties of the Form
        write: Customer Data Entry Screen
       Add Labels from the ToolBox and Add corresponding TextBoxes for
        Name and Country field.
       Use radioButton when you want to select a single option from
        multiple choices.
       To keep the radioButtons in a group, first Drag a GroupBox and
        inside it drag the radioButtons.
       Use checkbox when you want to select multiple options from a set
        of choices.
       Give unique names for each radioButtons and checkboxes
       In the following form radioButton for Male is named as radioMale
        and for Female as radioFemale
       Similarly the checkbox for Reading and Painting are named as
        chkReading and chkPainting.
       radioButton for Married is named as radioMarried and for
        Unmarried as radioUnmarried.
       Finally, a Preview Button is added at the bottom of the form
        which when clicked will show the given data in another form. Name
        the preview button as btnPreview.
                                                                        10
CREATING A PREVIEW SCREEN THAT WILL DISP LAY DATA ENTERED IN TO THE CUSTOMER
DATA ENTRY SCREEN
      In the Customer Data Entry form, double click the button Preview
       and write down the functionality of the clicking event that is
       show a form which will contain 5 labels for the titles and
       another 5 Labels to show the data that was given as input.
      Write a user-defined function SetValues (. . .) that sets the
       value of the given input to the Labels.
namespace CustomerDataEntry
{
    public partial class frmCustomerDataEntry : Form
    {
        public frmCustomerDataEntry()
        {
            InitializeComponent();
        }
       private void btnPreview_Click(object sender, EventArgs e)
       {
           string Gender, Hobby, Status = "";
           if(radioMale.Checked) Gender = "Male";
           else Gender = "Female";
           if(chkReading.Checked) Hobby = "Reading";
           else Hobby = "Painting";
           if(radioMarried.Checked) Status = "Married";
                                                                               11
            else Status = "Unmarried";
            frmCustomerPreview objPreview = new frmCustomerPreview();
            objPreview.SetValues(txtName.Text, cmbCountry.Text, Gender, Hobby, Status);
            objPreview.Show();
        }
    }
}
namespace CustomerDataEntry
{
    public partial class frmCustomerPreview : Form
    {
        public frmCustomerPreview()
        {
            InitializeComponent();
        }
        public void SetValues(string Name, string Country, string Gender,
                               string Hobby, string Status)
        {
            lblName.Text = Name;
            lblCountry.Text = Country;
            lblGender.Text = Gender;
            lblHobby.Text = Hobby;
            lblStatus.Text = Status;
        }
    }
}
                                                                                          12
LAB 04: NAVIGATIONAL MENUS, OOP AND CONNECTING TO DATABASE
CREATING NAVIGATIONAL MENUS WHICH WILL HELP US TO NAVIGATE CUSTOMER ENTRY
SCREEN AND DISPLAY SCREENS EASILY
      To create a user friendly interface we can use something called
       MDIParent Form and name it as MDICustomer.
      View  Solution Explorer  Select your project  Right Click 
       Add  New Item  Choose MDIParent Form and then add it.
      In the Design View of MDIParent, Click File and you will find
       some menu options
      Edit a menu name and give it Enter Customer
      Then double click the Enter Customer menu
      When this menu is clicked you have to invoke the Customer Data
       Entry Form which is named here as frmCustomerDataEntry
      To keep the form within the MDIParent select the obj.MdiParent =
       this;
      To show the form use the function Show ()
      In the program.cs file specify the form MDICustomer. This will
       invoke the MDICustomer form when the application is run.
In MDI Parent form:
private void customerDataEntryToolStripMenuItem_Click(object sender, EventArgs e)
{
    frmCustomerDataEntry obj = new frmCustomerDataEntry();
    obj.MdiParent = this;
    obj.Show();
}
In program.cs:
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new MDICustomer());
}
                                                                                    13
REUSING CODE BY CREATING CLASSES AND OBJECTS AND FORM VALIDATION
      An important feature of programming is to avoid the reusability
       of code.
      To write the validations of different types, create a new class.
      View  Solution Explorer  Select your project  Right Click 
       Add  New Item  Add a new Class and name it as
       CustomerValidation.cs
      In CustomerValidation.cs you can define various functions with
       different names and parameters. An example is given below -
In project Validations:
namespace Validations
{
    public class CustomerValidation
    {
        public void CheckCustomerName(string CustomerName)
        {
            if (CustomerName.Length > 10)
                throw new Exception("Name should be within 10 characters.");
                                                                               14
                 else if (CustomerName == "")
                     throw new Exception("Name is required.");
            }
             }
        }
}
In frmCustomerDataEntry:
           In the Preview button Click event we                 have write some code to
            specify that if the user does not enter              any Customer Name then an
            error message should be displayed.
           We have to call the CheckCustomerName                (string) function in the
            CustomerValidation class.
           This code is specified in the try-catch              block below -
using Validations;
namespace Lab04
{
    public partial class frmCustomerDataEntry : Form
    {
        public frmCustomerDataEntry()
        {
            InitializeComponent();
        }
            private void btnPreview_Click(object sender, EventArgs e)
            {
                string Gender, Hobby, Status = "";
                 if (radioMale.Checked) Gender = "Male";
                 else Gender = "Female";
                 if (chkReading.Checked) Hobby = "Reading";
                 else Hobby = "Painting";
                 if (radioMarried.Checked) Status = "Married";
                 else Status = "Unmarried";
                 try
                 {
                       CustomerValidation objVal = new CustomerValidation();
                       objVal.CheckCustomerName(txtName.Text);
                       frmCustomerPreview objPreview = new frmCustomerPreview();
                       objPreview.SetValues(txtName.Text, cmbCountry.Text,
                                            Gender, Hobby, Status);
                     objPreview.Show();
                 }
                 catch (Exception ex)
                 {
                       MessageBox.Show(ex.Message.ToString());
                 }
            }
                                                                                        15
    }
}
CONNECTING TO SQL SERVER, GETTING DATA AND GETTING ACQUAINTED WITH ADO.NET
COMPONENTS, LIKE CONNECTION, COMMAND AND DATA READER
       As C# is a Microsoft Product so we have to use a Microsoft Data
        management software which is SQL Server
       ADO.NET (ActiveX Data Object) helps to connect the User Interface
        to the Database and also sends and retrieves data from SQL Server
       To Create a Database connection you have to follow the steps
        below 
           1. View  Server Explorer  Select Data Connections  Right
              Click  Create New SQL Server Database  Server Name:
              .\sqlexpress   Give a Database Name: CustomerDB  Ok
                                                                             16
          2. View  ToolBox  Data  Data GridView  Drag it to the
             frmCustomerDataEntry form and name it as dtgCustomer.
          3. View  Server Explorer  Here your connection is shown
             under Data Connection. Select that new connection  Right
             Click  Properties  Connection String (This string is
             needed in the code below)
          4. To create a new Table in the Database you have to select
             your new connection and under it there is an option Tables.
             Right Click on the Tables  Create New Table
          5. Save this and give a name (here CustomerDB is given) to the
             Table
          6. Now that your Table has been created, you can add different
             columns: Select your Table  Right Click  Show Table
             Definition  Now add column names with respective datatypes
          7. You can add data in your Table: Select your Table  Right
             Click  Show Table Data
private void frmCustomerDataEntry_Load(object sender, EventArgs e)
{
    loadCustomer();
}
private void loadCustomer()
{
    // Open a Connection
    string strConnection = "Data Source=.\\sqlexpress;Initial Catalog=CustomerDB;"
                            + "Integrated Security=True";
    SqlConnection objConnection = new SqlConnection(strConnection);
    objConnection.Open();
    // Fire a Command
    string strCommand = "Select * From CustomerTable";
    SqlCommand objCommand = new SqlCommand(strCommand, objConnection);
    // Bind Data with UI
    DataSet objDataSet = new DataSet();
    SqlDataAdapter objAdapter = new SqlDataAdapter(objCommand);
    objAdapter.Fill(objDataSet);
    dtgCustomer.DataSource = objDataSet.Tables[0];
    // Close the Connection
    objConnection.Close();
}
                                                                                     17
LAB 05: INSERTING INTO DATABASE AND DYNAMIC CONNECTION STRING
INSERTING DATA FROM THE UI TO SQL SERVER
private void btnAdd_Click(object sender, EventArgs e)
{
    string Gender, Hobby, Status = "";
   if (radioMale.Checked) Gender = "Male";
   else Gender = "Female";
   if (chkReading.Checked) Hobby = "Reading";
   else Hobby = "Painting";
   if (radioMarried.Checked) Status = "1";
   else Status = "0";
   // Open a Connection
   string strConnection = "Data Source=.\\sqlexpress;Initial Catalog=CustomerDB;"
                           + "Integrated Security=True";
   SqlConnection objConnection = new SqlConnection(strConnection);
   objConnection.Open();
   // Fire a Command
   string strCommand = "insert into CustomerTable values('"+txtName.Text+"', '"
                                                           +cmbCountry.Text+"','"
                                                           +Gender+"', '"
                                                           +Hobby+"', "
                                                           +Status+" )";
   SqlCommand objCommand = new SqlCommand(strCommand, objConnection);
                                                                                    18
    objCommand.ExecuteNonQuery();
    // Close the Connection
    objConnection.Close();
    loadCustomer();
}
MAKING THE CONNECTION STRING CONFIGURABLE BY STORING IT IN A XML
CONFIGURATION FILES RATHER THAN HARD-CODING IT IN THE C# CODE
LAB 06: UPDATING AND DELETING FROM DATABASE
SELECTING DATA WHEN A USER CLICKS ON THE DATA GRID HYPER LINK
private void dtgCellClick(object sender, DataGridViewCellEventArgs e)
{
    clearForm();
    string CustomerName = dtgCustomer.Rows[e.RowIndex].Cells[0].Value.ToString();
    displayCustomer(CustomerName);
                                                                                    19
}
private void clearForm()
{
    txtName.Text = "";
    cmbCountry.Text = "";
    radioMale.Checked = false;
    radioFemale.Checked = false;
    chkPainting.Checked = false;
    chkReading.Checked = false;
    radioMarried.Checked = false;
    radioUnmarried.Checked = false;
}
UPDATING DATA BY USING THE UPDATE SQL COMMAND USING THE ADO.NET COMMAND
OBJECT
private void displayCustomer(string strCustomer)
{
    // Open a Connection
    string strConnection = ConfigurationManager.ConnectionStrings["DBConn"].ToString();
    SqlConnection objConnection = new SqlConnection(strConnection);
    objConnection.Open();
    // Fire a Command
    string strCommand = "Select * From CustomerTable where CustomerName =
'"+strCustomer+"'";
    SqlCommand objCommand = new SqlCommand(strCommand, objConnection);
    // Bind Data with UI
    DataSet objDataSet = new DataSet();
    SqlDataAdapter objAdapter = new SqlDataAdapter(objCommand);
    objAdapter.Fill(objDataSet);
    objConnection.Close();
    txtName.Text = objDataSet.Tables[0].Rows[0][0].ToString();
    cmbCountry.Text = objDataSet.Tables[0].Rows[0][1].ToString();
    string Gender = objDataSet.Tables[0].Rows[0][2].ToString();
    if (Gender.Equals("Male")) radioMale.Checked = true;
    else radioFemale.Checked = true;
    string Hobby = objDataSet.Tables[0].Rows[0][3].ToString();
    if (Hobby.Equals("Reading")) chkReading.Checked = true;
    else chkPainting.Checked = true;
    string Married = objDataSet.Tables[0].Rows[0][4].ToString();
    if (Married.Equals("True")) radioMarried.Checked = true;
    else radioUnmarried.Checked = true;
}
                                                                                          20
IMPLEMENTING DELETE FUNCTIONALITY BY WRITING THE DELETE SQL COMMAND IN THE
ADO.NET COMMAND OBJECT
private void btnDelete_Click(object sender, EventArgs e)
{
    // Open a Connection
    string strConnection = ConfigurationManager.ConnectionStrings["DBConn"].ToString();
    SqlConnection objConnection = new SqlConnection(strConnection);
    objConnection.Open();
    // Fire a Command
    string strCommand = "Delete from CustomerTable where CustomerName =
'"+txtName.Text+"'";
    SqlCommand objCommand = new SqlCommand(strCommand, objConnection);
    objCommand.ExecuteNonQuery();
    // Close the Connection
    objConnection.Close();
    clearForm();
    loadCustomer();
}
LAB 07: TWO-LAYERED ARCHITECTURE
BREAKING THE PROJECT INTO A 2-LAYERED ARCHITECTURE, THE FIRST LAYER WILL HAVE UI
+ BUSINESS LOGIC AND THE SECOND LAYER WIL L HAVE THE SQL PART I.E. DATA ACCESS.
LAB 08: CREATING ASP.NET WEB APPLICATION
CREATING AN ASP.NET WEB APPLICATION UI T HAT WILL INTERACT WITH THE CUSTOMER
DATA ENTRY DATABASE
CONNECTING THE ASP.NET WEB APPLICATION UI WITH THE DATA ACCESS LAYER
IMPLEMENTING INSERT, UPDATE AND DELETE FUNCTIONALITY FOR THE ASP.NET WEB
APPLICATION UI.
                                                                                          21
LAB 09: THREE-LAYERED ARCHITECTURE
CONVERTING THE 2-LAYERED ARCHITECTURE TO 3-LAYERED ARCHITECTURE (3 LAYERS: UI,
BUSINESS LOGIC AND DATA ACCESS)
                                                                             22
LAB 10: SECURITY
IMPLEMENTING SECURITY IN WINDOWS APPLICATIONS
IMPLEMENTING WEB SECURITY USING FORMS AUTHENTICATION
LAB 11: VALIDATION AND CRYSTAL REPORT
IMPLEMENTING EMAIL VALIDATION EASILY USING A REGULAR EXPRESSION (REGEX)
CREATING CRYSTAL REPORTS
LAB 12: DATABASE NORMALIZATION AND RELATIONSHIPS
APPLYING NORMALIZATION RULES TO MAKE OUR DATABASE MORE STRUCTURED SO THAT
WE CAN AVOID REDUNDANT AND DUPLICATE DATA
UNDERSTANDING 1 TO MANY RELATIONSHIP BETWEEN CUSTOMER AND HOBBIES
                                                                          23