Below is the C# code for my Appliance rental application:
Login Form Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Diagnostics.Eventing.Reader;

namespace DForm1
{
    public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
        }
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db_users.mdb");
        OleDbCommand cmd = new OleDbCommand();
        OleDbDataAdapter da = new OleDbDataAdapter();                       //Connection to Database


        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
        //Failed attempts Maximum 5
        int failedAttempts = 0;
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            




                string username = txtUsername.Text;
                string password = txtPassword.Text;
                
                failedAttempts++;
                
            

                if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
                {
                    MessageBox.Show("Please enter a username and password.");
                
                }
                else if (username.Length > 20)
                {
                    MessageBox.Show("Username is too long. Maximum 20 characters.");
                    
                    

                }
                else if (password.Length < 8 || password.Length > 16)
                {
                    MessageBox.Show("Password must be between 8 and 16 characters.");
                    
                    

                }
                else if (!password.Any(char.IsLower) || !password.Any(char.IsUpper))
                {
                    MessageBox.Show("Password must contain at least one lowercase and one uppercase letter.");
                    
                    

                }
                else if (username == "Admin123" && password == "Admin123") //Admin Dashboard
                {
                     
                    AdminForm adminForm = new AdminForm();
                    adminForm.Show();
                    this.Hide();
                }
                else 
                {
                    con.Open();
                    string login = "SELECT * FROM tbl_users WHERE username = '" + txtUsername.Text + "' and password= '" + txtPassword.Text + "'";
                    cmd = new OleDbCommand(login, con);
                    OleDbDataReader dr = cmd.ExecuteReader();
                    if (dr.Read() == true)
                    {
                        new CustomerForm().Show();
                        this.Hide();
                    }
                    else
                    {
                        MessageBox.Show("Invalid login information, Please try again");

                        txtUsername.Text = "";
                        txtPassword.Text = "";
                    }
                    con.Close();
                }
                //Failed Attempts Maximum 5
                 if (failedAttempts >= 5)
            {
                MessageBox.Show("Maximum login attempts reached.");
                this.Close();

            }

        }

        private void btnReg_Click(object sender, EventArgs e)                        //Registration Form
        {
            RegForm form2 = new RegForm();
            form2.Show();
            this.Hide();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)                 //Show Password
        {
            if (checkbox.Checked)
            {
                txtPassword.PasswordChar = '\0';
                
            }
            else
            {
                txtPassword.PasswordChar = '•';
            }
        }

        private void txtPassword_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtUsername_TextChanged(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }
    }
    }

Registration Form Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;


namespace DForm1
{
    public partial class RegForm : Form
    {
        public RegForm()
        {
            InitializeComponent();
        }
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db_users.mdb");
        OleDbCommand cmd = new OleDbCommand();
        OleDbDataAdapter da = new OleDbDataAdapter();              //Connection to Database


        private void txtUsername_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnRegister_Click(object sender, EventArgs e) 
        {
            string password = txtPassword.Text;
            string confirmPassword = txtConfirmPassword.Text;
            string username = txtUsername.Text;

            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                MessageBox.Show("Please enter a username and password.");
                return;
            }
            else if (!Regex.IsMatch(username, "^[a-zA-Z0-9]*$"))
            {
                MessageBox.Show("Username must only contain letters and numbers.");
            }
            else if (username.Length > 20)
            {
                MessageBox.Show("Username is too long. Maximum 20 characters.");
                return;
            }
            else if (password.Length < 8 || password.Length > 16)
            {
                MessageBox.Show("Password must be between 8 and 16 characters.");
                return;
            }
            else if (!password.Any(char.IsLower) || !password.Any(char.IsUpper))
            {
                MessageBox.Show("Password must contain at least one lowercase and one uppercase letter.");
                return;
            }
            else if (password != confirmPassword)
            {
                MessageBox.Show("Passwords do not match. Please try again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else if (!Regex.IsMatch(txtEmail.Text, @"^[^@\s]+@[^@\s]+\.[^@\s]+$"))            
            {
                MessageBox.Show("Please enter a valid email address.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;                                           //Validation to Register
            }                                                                   
            else
            {
                con.Open();
                string register = "INSERT INTO tbl_users VALUES ('" + txtUsername.Text + "','" + txtPassword.Text + "','" + txtEmail.Text + "','" + txtPhoneNumber.Text + "','" + txtSurname.Text + "','" + txtForename.Text + "')";
                cmd = new OleDbCommand(register, con);
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Registration successful.");
                this.Hide();
                LoginForm loginForm = new LoginForm();
                loginForm.Show();                                         //Login Form
            }
        }







        private void txtName_TextChanged(object sender, EventArgs e)
        {

        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void label8_Click(object sender, EventArgs e)
        {
            new LoginForm().Show();
            this.Hide();                                             //Back to Login Form
        }
        private void checkBox1_CheckedChanged(object sender, EventArgs e)       
        {
            if (checkBox1.Checked)
            {
                txtPassword.PasswordChar = '\0';
                txtConfirmPassword.PasswordChar = '\0';
            }
            else
            {
                txtPassword.PasswordChar = '•';
                txtConfirmPassword.PasswordChar = '•';                   //Show Password
            }
        }

        private void txtEmail_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtPassword_TextChanged(object sender, EventArgs e)
        {

        }

        
    }
}

Customer Form Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace DForm1
{
    public partial class CustomerForm : Form
    {
        private OleDbConnection connection;
        private OleDbDataAdapter adapter;
        private DataSet dataSet;
        private DataTable dataTable;
        private DataView dataView;
        public CustomerForm()
        {
            InitializeComponent();

        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void UserForm_Load(object sender, EventArgs e)
        {
            connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db_appliances.mdb");
            adapter = new OleDbDataAdapter("SELECT * FROM tbl_appliances", connection);
            dataSet = new DataSet();
            adapter.Fill(dataSet, "tbl_appliances");
            dataTable = dataSet.Tables["tbl_appliances"];
            dataView = new DataView(dataTable);
            dataGridView1.DataSource = dataView;
            dataGridView2.CellContentClick += dataGridView2_CellContentClick;
                                                                              //Connection to Database and Table with Data
        }







        private void button1_Click(object sender, EventArgs e)
            {
            DataGridViewRow newRow = new DataGridViewRow();
            newRow.CreateCells(dataGridView2);
            newRow.Cells[0].Value = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            newRow.Cells[1].Value = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            newRow.Cells[2].Value = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
            newRow.Cells[3].Value = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            dataGridView2.Rows.Add(newRow);

            
            double totalPrice = 0;
            foreach (DataGridViewRow row in dataGridView2.Rows)
            {
                double price = Convert.ToDouble(row.Cells[3].Value);
                totalPrice += price;                                                      // Adding To Cart
            } 

            
            txtTotalPrice.Text = "£" + totalPrice.ToString("#,##0.00");
        }

        













        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            {
                if (radioButton1.Checked)
                {


                    DataView dv = dataTable.DefaultView;
                    dv.Sort = "Power Usage";
                    dataGridView1.DataSource = dv;                                //Sorting by Power Usage
                }
            }
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {


            DataView dv = dataTable.DefaultView;
            dv.Sort = "Estimated annual running costs"; 
            dataGridView1.DataSource = dv.ToTable();                               //Sorting by Cost


        }

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            double totalPrice = 0;
            foreach (DataGridViewRow row in dataGridView2.Rows)
            {
                double price = Convert.ToDouble(row.Cells[3].Value);
                totalPrice += price;
            }

                                                                                   //Calculation of Total price
            txtTotalPrice.Text = totalPrice.ToString();
        }

        private void txtTotalPrice_TextChanged(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (dataGridView2.SelectedRows.Count > 0)
            {
                int rowIndex = dataGridView2.SelectedRows[0].Index;
                dataGridView2.Rows.RemoveAt(rowIndex);

                // Recalculate total price
                double totalPrice = 0;
                foreach (DataGridViewRow row in dataGridView2.Rows)
                {
                    double price = Convert.ToDouble(row.Cells[3].Value);
                    totalPrice += price;
                }                                                                      //Removing From Cart
                txtTotalPrice.Text = "£" + totalPrice.ToString("#,##0.00");
            }
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }
    }
}


Admin Form Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
using System.Xml.Linq;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;

namespace DForm1
{
    public partial class AdminForm : Form
    {
        string connectionString = $@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = {Path.Combine(Application.StartupPath, "db_appliances.mdb")}";
        OleDbDataAdapter da;
        OleDbConnection con;
        OleDbCommandBuilder cb;
        DataTable dt;                                                 //Connection to Database


        public AdminForm()
        {
            InitializeComponent();
            con = new OleDbConnection(connectionString);
        }




        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void AdminForm_Load(object sender, EventArgs e)
        {
            
            this.tbl_appliancesTableAdapter3.Fill(this.db_appliancesDataSet5.tbl_appliances);

            

            string query = "SELECT * FROM tbl_appliances";
            da = new OleDbDataAdapter(query, con);
            OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(da);

            dt = new DataTable();
            da.Fill(dt);                                                             //Connection to Table with Data
            dataGridView1.DataSource = dt;

        }


        private void button4_Click(object sender, EventArgs e)
        {
            using (OleDbCommand insertCommand = new OleDbCommand("INSERT INTO tbl_appliances ([Appliance], [Power Usage], [Typical Usage], [Estimated annual running costs]) VALUES (?, ?, ?, ?)", con),
                                  updateCommand = new OleDbCommand("UPDATE tbl_appliances SET [Appliance]=?, [Power Usage]=?, [Typical Usage]=?, [Estimated annual running costs]=? WHERE ID=?", con),
                                  deleteCommand = new OleDbCommand("DELETE FROM tbl_appliances WHERE ID=?", con))
            {

                da.InsertCommand = insertCommand;
                insertCommand.Parameters.Add("@Appliance", OleDbType.VarWChar, 0, "Appliance");
                insertCommand.Parameters.Add("@Power_Usage", OleDbType.VarWChar, 0, "Power Usage");
                insertCommand.Parameters.Add("@Typical_Usage", OleDbType.VarWChar, 0, "Typical Usage");
                insertCommand.Parameters.Add("@Estimated_annual_running_costs", OleDbType.Currency, 0, "Estimated annual running costs");
                                                                                                   //Adding Data

                da.UpdateCommand = updateCommand;
                updateCommand.Parameters.Add("@Appliance", OleDbType.VarWChar, 0, "Appliance");
                updateCommand.Parameters.Add("@Power_Usage", OleDbType.VarWChar, 0, "Power Usage");
                updateCommand.Parameters.Add("@Typical_Usage", OleDbType.VarWChar, 0, "Typical Usage");
                updateCommand.Parameters.Add("@Estimated_annual_running_costs", OleDbType.Currency, 0, "Estimated annual running costs");
                                                                                                   //Updating Data

                da.DeleteCommand = deleteCommand;
                deleteCommand.Parameters.Add("@ID", OleDbType.Integer, 0, "ID");
                deleteCommand.Parameters.Add("@Appliance", OleDbType.VarWChar, 0, "Appliance");
                deleteCommand.Parameters.Add("@Power_Usage", OleDbType.VarWChar, 0, "Power Usage");
                deleteCommand.Parameters.Add("@Typical_Usage", OleDbType.VarWChar, 0, "Typical Usage");
                deleteCommand.Parameters.Add("@Estimated_annual_running_costs", OleDbType.Currency, 0, "Estimated annual running costs");
                                                                                                   //Removing Data

                
                con.Open();

                da.Update(dt);

                con.Close();


                dt.Clear();
                da.Fill(dt);
            }
        }

        

    }

}
    

Justify the design of the classes with around 550 words.