Pages

Tuesday, 12 May 2015

Creating simple login and registration form in WPF

Download the source code of the project from here : Login.ZIP

Introduction : 
In this article we are going to create a WPF application for simple login and registration process.

Step 1.
Open Visual Studio 2010 -> File -> New -> Project.
New project template will display and select WPF Application like as follows:


Give your project a meaningful name, I am naming my project as “CustomerRelationManagement”

Step 2. 
Here you will get MainWindow.xaml window, you can rename it to Login.xaml

Step 3.
Code in app.xaml

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="conn"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Step 4.
Login.xaml

<Window x:Class="CustomerRelationManagement.Login"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Login" Height="400" Width="500" WindowStartupLocation="CenterScreen">
    <Grid Height="390" Width="475">
        <TextBox Height="23" HorizontalAlignment="Left" Margin="130,104,0,0" Name="txtemail" VerticalAlignment="Top" Width="246" BorderBrush="#FF1A0202" />
        <PasswordBox Height="23" HorizontalAlignment="Left" Margin="130,144,0,0" Name="txtpassword" VerticalAlignment="Top" Width="246" BorderBrush="#FF1A0202" />
        <Label Content="Email ID :" Height="28" HorizontalAlignment="Left" Margin="55,99,0,0" Name="label1" VerticalAlignment="Top" Foreground="#FF0062FF" FontSize="13" FontWeight="Bold" />
        <Label Content="Password :" Height="28" HorizontalAlignment="Left" Margin="48,139,0,0" Name="label2" VerticalAlignment="Top" Foreground="#FF0062FF" FontSize="13" FontWeight="Bold" />
        <Button Content="Login" Height="23" HorizontalAlignment="Left" Margin="130,192,0,0" Name="button1" VerticalAlignment="Top" Width="246" Click="button1_Click" />
        <Label Content="Sample Login Form" Height="35" HorizontalAlignment="Left" Margin="83,27,0,0" Name="label3" VerticalAlignment="Top" Width="282" HorizontalContentAlignment="Center" Foreground="Red" FontSize="15" FontWeight="SemiBold" />
        <Label Content="New User" FontSize="13" FontWeight="Bold" Foreground="#FF0062FF" Height="28" HorizontalAlignment="Left" Margin="207,257,0,0" Name="label4" VerticalAlignment="Top" />
        <Button Content="Register Here" Height="23" HorizontalAlignment="Left" Margin="282,262,0,0" Name="button2" VerticalAlignment="Top" Width="122" Click="button2_Click" />
    </Grid>
</Window>

Step 5. 
Login.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace CustomerRelationManagement
{
    /// <summary>
    /// Interaction logic for Login.xaml
    /// </summary>
    public partial class Login : Window
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ToString());
        public Login()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            Register reg = new Register();
            reg.Show();
            this.Hide();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            SqlDataAdapter da = new SqlDataAdapter("select * from employee where email = '" + txtemail.Text.Trim() + "' and password = '" + txtpassword.Password.Trim() + "'", con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                Welcome wel = new Welcome(dt.Rows[0]["name"].ToString());
                wel.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("Invalid Details.");
            }
        }
    }
}


Step 6. 
Register.xaml

<Window x:Class="CustomerRelationManagement.Register"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Register" Height="500" Width="500" WindowStartupLocation="CenterScreen">
    <Grid Height="480" Width="480">
        <Label Content="Sample Registration Form" FontSize="15" FontWeight="SemiBold" Foreground="Red" Height="35" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="71,27,0,0" Name="label3" VerticalAlignment="Top" Width="282" />
        <TextBox BorderBrush="#FF1A0202" Height="23" HorizontalAlignment="Left" Margin="126,97,0,0" Name="txtemail" VerticalAlignment="Top" Width="246" />
        <Label Content="Email ID :" FontSize="13" FontWeight="Bold" Foreground="#FF0062FF" Height="28" HorizontalAlignment="Left" Margin="51,92,0,0" Name="label1" VerticalAlignment="Top" />
        <TextBox BorderBrush="#FF1A0202" Height="23" HorizontalAlignment="Left" Margin="126,139,0,0" Name="txtname" VerticalAlignment="Top" Width="246" />
        <Label Content="Name :" FontSize="13" FontWeight="Bold" Foreground="#FF0062FF" Height="28" HorizontalAlignment="Left" Margin="66,134,0,0" Name="label2" VerticalAlignment="Top" />
        <PasswordBox BorderBrush="#FF1A0202" Height="23" HorizontalAlignment="Left" Margin="126,180,0,0" Name="txtpassword" VerticalAlignment="Top" Width="246" />
        <Label Content="Password :" FontSize="13" FontWeight="Bold" Foreground="#FF0062FF" Height="28" HorizontalAlignment="Left" Margin="44,177,0,0" Name="label4" VerticalAlignment="Top" />
        <Button Content="Register" Height="23" HorizontalAlignment="Left" Margin="126,230,0,0" Name="btnreg" VerticalAlignment="Top" Width="246" Click="button1_Click" />
        <Button Content="Back to Login" Height="23" HorizontalAlignment="Left" Margin="12,296,0,0" Name="button2" VerticalAlignment="Top" Width="122" Click="button2_Click" />
    </Grid>
</Window>

Step 7.
Register.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Configuration;
using System.Data.SqlClient;

namespace CustomerRelationManagement
{
    /// <summary>
    /// Interaction logic for Register.xaml
    /// </summary>
    public partial class Register : Window
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ToString());
        public Register()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            Login log = new Login();
            log.Show();
            this.Hide();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            if (txtemail.Text.Trim() != "" && txtname.Text.Trim() != "" && txtpassword.Password.Trim() != "")
            {
                try
                {
                    if (con.State == System.Data.ConnectionState.Closed)
                    {
                        con.Open();
                    }
                    SqlCommand cmd = new SqlCommand("proc_register", con);
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@email", txtemail.Text.Trim());
                    cmd.Parameters.AddWithValue("@name", txtname.Text.Trim());
                    cmd.Parameters.AddWithValue("@password", txtpassword.Password.Trim());
                    int i = cmd.ExecuteNonQuery();
                    if (i > 0)
                    {
                        MessageBox.Show("Registration Successfull.");
                        Login log = new Login();
                        log.Show();
                        this.Hide();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    con.Close();
                }
            }
            else
            {
                MessageBox.Show("Please fill all details");
            }
        }
    }
}


Step 8. 
Welcome.xaml

<Window x:Class="CustomerRelationManagement.Welcome"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Welcome" Height="300" Width="500" WindowStartupLocation="CenterScreen" Loaded="Window_Loaded">
    <Grid>
        <Label Content="Label" Height="33" HorizontalAlignment="Left" Margin="100,95,0,0" Name="label1" VerticalAlignment="Top" Width="303" />
    </Grid>
</Window>


Step 9. 
Welcome.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace CustomerRelationManagement
{
    /// <summary>
    /// Interaction logic for Welcome.xaml
    /// </summary>
    public partial class Welcome : Window
    {
        static string nm;
        public Welcome(string name)
        {
            InitializeComponent();
            nm = name;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            label1.Content = "Welcome " + nm;
        }
    }
}

 Step 10. 
App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="conn"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

 Step 11. 
Add service base database model to your project, in my case I have named it as Database1.mdf
And create a table named employee as


And a stored procedure named proc_register as

ALTER PROCEDURE dbo.proc_register
       @email nvarchar(max), @name nvarchar(max), @password nvarchar(max)
AS
begin
if not exists(select * from employee where email <> @email)
begin
  insert into employee(name, email, password)
  values(@name, @email, @password)
end  
end


to learn more about sql click here...




download the source code for the file from here : Login.ZIP

Saturday, 2 May 2015

Javascript Function to Convert Number to Words

function totext(value) {
             var fraction = Math.round(frac(value) * 100);
             var f_text = "";

             if (fraction > 0) {
                 f_text = "AND " + convert_number(fraction) + " PAISE";
             }

             return convert_number(value) + " RUPEE " + f_text + " ONLY";
         }

         function frac(f) {
             return f % 1;
         }

         function convert2number(number) {
             if ((number < 0) || (number > 999999999)) {
                 return "NUMBER OUT OF RANGE!";
             }
             var Gn = Math.floor(number / 10000000);  /* Crore */
             number -= Gn * 10000000;
             var kn = Math.floor(number / 100000);     /* lakhs */
             number -= kn * 100000;
             var Hn = Math.floor(number / 1000);      /* thousand */
             number -= Hn * 1000;
             var Dn = Math.floor(number / 100);       /* Tens (deca) */
             number = number % 100;               /* Ones */
             var tn = Math.floor(number / 10);
             var one = Math.floor(number % 10);
             var res = "";

             if (Gn > 0) {
                 res += (convert2number(Gn) + " CRORE");
             }
             if (kn > 0) {
                 res += (((res == "") ? "" : " ") +
                 convert2number(kn) + " LAKH");
             }
             if (Hn > 0) {
                 res += (((res == "") ? "" : " ") +
                     convert2number(Hn) + " THOUSAND");
             }

             if (Dn) {
                 res += (((res == "") ? "" : " ") +
                     convert2number(Dn) + " HUNDRED");
             }


             var ones = Array("", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN");
             var tens = Array("", "", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY");

             if (tn > 0 || one > 0) {
                 if (!(res == "")) {
                     res += " AND ";
                 }
                 if (tn < 2) {
                     res += ones[tn * 10 + one];
                 }
                 else {

                     res += tens[tn];
                     if (one > 0) {
                         res += ("-" + ones[one]);
                     }
                 }
             }

             if (res == "") {
                 res = "zero";
             }
             return res;
         }