Friday, March 25, 2011

Travel Agent and Airline service using JSP and Databases

Question - Consider a case where we have two web Services- an airline service and a travel agent and the travel agent is searching for an airline. Implement this scenario using Web Services and Data base.

Coding


Database used: MS Access

index.jsp


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Travel Agency</title>
    </head>
    <body>
        <center><h1>Travel Easy</h1>
            <h3> - A Smarter way to travel</h3>
            <br><br>
            <b> Enter your Details</b>
            <form name="index" action="AirlineList.jsp" method="post">
                <br>
                <table cellpadding="6" cellspacing="6">
                    <tr>
                        <td><b>From</b></td>
                        <td><input type="text" name="txt_from"</td>
                    </tr>
                    <tr>
                        <td><b>To</b></td>
                        <td><input type="text" name="txt_to"</td>
                    </tr>
                    <tr>
                        <td><b>Date of Journey</b></td>
                        <td><input type="text" name="txt_depart"</td>
                    </tr>
                    <tr>
                        <td><b>Number of Passengers</b></td>
                        <td><input type="text" name="txt_no"</td>
                    </tr>
                <tr>
                    <td><b>Type of Flight</b></td>
                        <td><input type="Radio" name="group1" value="domestic">Domestic Flights</td
                </tr>
                <tr>
                    <td></td>
                    <td><input type="Radio" name="group1" value="international">International Flights</td>
                </tr>
                <tr>
                    <td><b>Select desired Airlines</b></td>
                    <td>
                        <select name="airline">
                            <option>Kingfisher</option>
                            <option>SpiceJet</option>
                        </select>
                    </td>
                </tr>
                </table>
                <br><br>
                <input type="Submit" name="Submit" value="Find Flights">
            </form>
          
        </center>
    </body>
</html>

airlinelist.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Domestic Flights</title>
    </head>
    <body>
        <center><h1>Travel Easy</h1>
            <h3> - A Smarter way to travel</h3>
        </center>
        <br><br>
        <%@ page language="java" %>
        <%@ page import ="java.sql.*" %>
        <%@ page import = "java.util.Date,java.text.SimpleDateFormat,java.text.ParseException"%>
        <%
            String type = request.getParameter("group1");
            String from= request.getParameter("txt_from");
            String to = request.getParameter("txt_to");
            String depart= request.getParameter("txt_depart");
            String ret = request.getParameter("txt_return");
            String no = request.getParameter("txt_no");
            String airline = request.getParameter("airline");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sTable = type;
            String sSql = "SELECT * FROM "   sTable   " WHERE From='" from "' and TO='" to "' and DepartDate='" depart "' and SeatCapacity>=" no "";
            String sDBQ = "d:/"  airline ".mdb";

            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="   sDBQ   ";DriverID=22;READONLY=true";
            Connection cn = null;
            Statement st = null;
            ResultSet rs = null;
            try {
                cn = DriverManager.getConnection( database ,"","");
                st = cn.createStatement();
                rs = st.executeQuery( sSql );
                ResultSetMetaData rsmd = rs.getMetaData();
                String s1,s2,s3,s4,s5,s6,s7,s8;
                int i=1;
                String flight_no[] = new String[100];
                //out.println("<form name='AirlLine' action='' method='post'><b>" i " . "   rs.getString(1)   "</b><br><br>");
                out.println("<h3><b>" airline  " Flights</b></h3><br>");
                out.println("<table cellspacing=20 cellpaddinng=15>");
                out.println("<tr><th>Flight No</th><th>From</th><th>To</th><th>Departure Date</th><th>Arrival Date</th><th>Start Time</th>");
                out.println("<th>Reach Time</th><th>Seats Remaining</th></tr>");
                while(rs.next())
                {
                s1 = rs.getString(1);
                flight_no[i] = s1;
                s2 = rs.getString(2);
                s3 = rs.getString(3);
                s4 = rs.getString(4);
                s5 = rs.getString(5);
                s6 = rs.getString(6);
                s7 = rs.getString(7);
                s8 = rs.getString(8);
                out.println("<tr><td>" s1 "</td>");
                out.println("<td>" s2 "</td>");
                out.println("<td>" s3 "</td>");
                out.println("<td>" s4 "</td>");
                out.println("<td>" s5 "</td>");
                out.println("<td>" s6 "</td>");
                out.println("<td>" s7 "</td>");
                out.println("<td>" s8 "</td></tr>");
                i  ;
                }
                out.println("</table>");
                if(i==1)
                {
                    out.println("<br><center><b>Sorry!! No flights scheudle available</b></center><br>");
                }
                else
                {
                    out.println("<form name='AirlineList' action='" airline ".jsp' method='post'>");
                    out.println("<br><table><tr><td>Select Flight</td><td>");
                    out.println("<select name='flight_no'>");
                    for(int temp=1;temp<i;temp  )
                    {
                        out.println("<option>" flight_no[temp] "</option>");
                    }
                    out.println("</select></td></tr><tr></tr>");
                    out.println("<tr><td><input type='hidden' name='no' value='" no "'</td>");
                    out.println("<td><input type='hidden' name='air_type' value='" type "'</td></tr>");
                    for(int j=1;j<=Integer.parseInt(no);j  )
                    {
                        out.println("<tr><th>Passenger " j  " details</th></tr>");
                        out.println("<tr></tr>");
                        out.println("<tr><td>Name</td><td><input type='text' name='pas" j "_name'</td></tr>");
                        out.println("<tr><td>Age</td><td><input type='text' name='pas" j "_age'</td></tr>");
                        out.println("<tr><td>Sex</td><td><input type='text' name='pas" j "_sex'</td></tr>");
                        out.println("<tr></tr>");
                    }
                    out.println("</table><br><br><input type='Submit' name='Submit' value='Book Now'/></form>");
                }
                //out.println("<input name ='submit' value='Submit' type='submit'/>");
            }
            finally {
                try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
                try { if( null != st ) st.close(); } catch( Exception ex ) {}
                try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
                    }

        %>
    </body>
</html>

Kingfisher.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Kingfisher Airlines</title>
    </head>
    <body>
        <%@ page language="java" %>
        <%@ page import ="java.sql.*" %>
        <%
            String s = request.getParameter("no");
            out.println("<h1><center>Kingfisher Airlines</h1><br><h3>- Have a nice trip!!!</h3></center><br>");
            out.println("<br><br>Your Booking Details");
            out.println("<br><br><table cellspacing=10 cellpaddin=10>");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sTable = request.getParameter("air_type");
            String sSql = "SELECT * FROM "   sTable   " WHERE FlightNo='" request.getParameter("flight_no") "'";
            String sDBQ = "d:/kingfisher.mdb";

            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="   sDBQ   ";DriverID=22;READONLY=true";
            Connection cn = null;
            Statement st = null;
            ResultSet rs = null;
            String name,age,sex,flightno,from,to,departure,arrival,starttime,reachtime,seat;
            out.println("<tr><th>Name</th><th>Age</th><th>Sex</th><th>Flight No</th><th>From</th><th>To</th><th>Departure Date</th><th>Arrival Date</th><th>Start Time</th><th>Reach Time</th><th>Seat No</th></tr>");
            try
            {
             cn = DriverManager.getConnection( database ,"","");
             st = cn.createStatement();
             rs = st.executeQuery( sSql );
             ResultSetMetaData rsmd = rs.getMetaData();
             int seat1=1;
             while(rs.next())
             {
                 flightno = rs.getString(1);
                 from = rs.getString(2);
                 to = rs.getString(3);
                 departure = rs.getString(4);
                 arrival = rs.getString(5);
                 starttime = rs.getString(6);
                 reachtime = rs.getString(7);
                 seat = rs.getString(8);
                 seat1 = Integer.parseInt(seat);
                 for(int i=1;i<=Integer.parseInt(s);i  )
            {
                name= request.getParameter("pas" i "_name");
                age = request.getParameter("pas" i "_age");
                sex = request.getParameter("pas" i "_sex");
                flightno = request.getParameter("flight_no");

                out.println("<tr><td>" name "</td><td>" age "</td><td>" sex "</td>");
                out.println("<td>" flightno "</td><td>" from "</td><td>" to "</td><td>" departure "</td>");


                out.println("<td>" arrival "</td><td>" starttime "</td><td>" reachtime "</td><td>" seat1 "</td>");
                seat1--;
               }
                
             }
             Connection cn1 = null;
            Statement st1 = null;
            ResultSet rs1 = null;
           try
           {
            sSql = "update "   sTable   " set SeatCapacity=" seat1 " WHERE FlightNo='" request.getParameter("flight_no") "'";
            rs1 = st.executeQuery( sSql );
            }
           catch(Exception e)
           {
            }
            
            }
            finally {
                try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
                try { if( null != st ) st.close(); } catch( Exception ex ) {}
                try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
                    }
        %>
    </body>
</html>

SpiceJet.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>SpiceJet Airlines</title>
    </head>
    <body>
        <%@ page language="java" %>
        <%@ page import ="java.sql.*" %>
        <%
            String s = request.getParameter("no");
            out.println("<h1><center>SpiceJet Airlines</h1><br><h3>- Have a nice trip!!!</h3></center><br>");
            out.println("<br><br>Your Booking Details");
            out.println("<br><br><table cellspacing=10 cellpaddin=10>");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sTable = request.getParameter("air_type");
            String sSql = "SELECT * FROM "   sTable   " WHERE FlightNo='" request.getParameter("flight_no") "'";
            String sDBQ = "d:/SpiceJet.mdb";

            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="   sDBQ   ";DriverID=22;READONLY=true";
            Connection cn = null;
            Statement st = null;
            ResultSet rs = null;
            String name,age,sex,flightno,from,to,departure,arrival,starttime,reachtime,seat;
            out.println("<tr><th>Name</th><th>Age</th><th>Sex</th><th>Flight No</th><th>From</th><th>To</th><th>Departure Date</th><th>Arrival Date</th><th>Start Time</th><th>Reach Time</th><th>Seat No</th></tr>");
            try
            {
             cn = DriverManager.getConnection( database ,"","");
             st = cn.createStatement();
             rs = st.executeQuery( sSql );
             ResultSetMetaData rsmd = rs.getMetaData();
             int seat1=1;
             while(rs.next())
             {
                 flightno = rs.getString(1);
                 from = rs.getString(2);
                 to = rs.getString(3);
                 departure = rs.getString(4);
                 arrival = rs.getString(5);
                 starttime = rs.getString(6);
                 reachtime = rs.getString(7);
                 seat = rs.getString(8);
                 seat1 = Integer.parseInt(seat);
                 for(int i=1;i<=Integer.parseInt(s);i  )
            {
                name= request.getParameter("pas" i "_name");
                age = request.getParameter("pas" i "_age");
                sex = request.getParameter("pas" i "_sex");
                flightno = request.getParameter("flight_no");

                out.println("<tr><td>" name "</td><td>" age "</td><td>" sex "</td>");
                out.println("<td>" flightno "</td><td>" from "</td><td>" to "</td><td>" departure "</td>");


                out.println("<td>" arrival "</td><td>" starttime "</td><td>" reachtime "</td><td>" seat1 "</td>");
                seat1--;
               }
                
             }
             Connection cn1 = null;
            Statement st1 = null;
            ResultSet rs1 = null;
           try
           {
            sSql = "update "   sTable   " set SeatCapacity=" seat1 " WHERE FlightNo='" request.getParameter("flight_no") "'";
            rs1 = st.executeQuery( sSql );
            }
           catch(Exception e)
           {
            }
            
            }
            finally {
                try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
                try { if( null != st ) st.close(); } catch( Exception ex ) {}
                try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
                    }
        %>
    </body>
</html>

Screenshots


Database








(similarly add for SpiceJet.mdb)


Output


index.jsp




airlinelist.jsp




Kingfisher.jsp









Monday, March 14, 2011

Joli OS is Cool

Just now installed Joli OS 1.2 in my Dell Laptop and it is pretty cool. It has a very aesthetic user interface and it can be considered as a perfect OS for Netbooks, or if you have any 10 year old computers or so means this OS can be extremely useful for you.

It is an 'Ubuntu' based operating system and its makes the best use of Cloud Computing. You need to create an account in http://www.jolicloud.com/ and you can use it to store your files, install apps, share your apps and make friends. So obviously it can be used in other computers too. Just access it from the cloud..:P Ain't it great???

The coolest thing if you aren't a geek or something is that Wifi and Bluetooth installation is very easy in this. You can easily connect within a matter of minutes.

The OS itself looks like a Social networking site...:)

Pros : Its interface, its ease to use, very less boot time, makes efficient use of you hardware, "Desktop portability", Aesthetic Design that gives you the feel of a social networking site..

Cons : Most of the apps here are web apps (although you have native apps), so internet connection becomes a constraint. But again this won't be a much of concern...

Given below are some screenshots,






You can download the OS from the following link,

http://www.jolicloud.com/download

References

http://en.wikipedia.org/wiki/Joli_OS

http://www.jolicloud.com/blog/

Have fun Joliclouding!!!

G.Vivek Venkatesh

Saturday, March 12, 2011

Recruitment System VB Project

In this post I am explaining how to create a simple mini project for Recruitment System using Visual Basic.

I am using VB 6.0 because many colleges still use that and are yet to update to Visual Studio 2010. 

Disclaimer - You can use this code for your project, but must not use as it is. Make some changes and then use it.

Download the Project in VB 6.0


Project Details


Front End : Visual Basic
Back End - MS Access (You can use Oracle however)

Steps Involved

1. Creating the database
  • In Visual Basic 6.0 open Add-Ins -> Visual Data Manger.
  • Select File -> New -> Microsoft Access ->Version 7.0 mdb.
  • Name it as 'record'
  • Create a table named 'record' with following fields
  1. Name - Text
  2. Age - Text
  3. DOB - Date
  4. Phno - Text
  5. Qualification - Text
  6. Percentage - Text
  7. Id - Integer
  8. Status - Text with size as 250. 
  • Now Select 'Build the table'. Your table gets created.
2. Creating the 'Home form' 

Before starting with the project go to Project->References and add Microsoft ActiveX Data Objects 2.0 Library and click ok. This is important. 

Design the form as shown below,


The basic idea here is that if a person is an applicant he can select wither 'Register' or 'Status' button. However if he is an HR then a login panel has given to them to differentiate them from applicants. Only after proper username and password they can enter into Admin Panel. If he provides a wrong password the Recruitment System will display an error.

The components in this form are,

(The text within brackets refers to the 'Name' property of the corresponding control.)

Command Buttons
  • Register (Command2)
  • Know Status (Command1)
  • Login (Command4)
Textboxes 
  • Username (hr_username)
  • Password (hr_password0
Images
  • Exit (Image2)
Code for this form


Private Sub Command1_Click()
Status.Show
End Sub

Private Sub Command2_Click()
Register.Show
End Sub

Private Sub Command4_Click()

If hr_username = "admin" And hr_password = "admin" Then
hr_username = ""
hr_password = ""
Hr.Show
Else
MsgBox "Invalid Username / Password", vbCritical, "Recruitment System"
End If
End Sub

Private Sub Image2_Click()
Unload Me
End Sub


3. Creating the 'Register' form

Design the form as below,


Here the user can enter his personal information and when they click submit button their information is added to the database.

The components in this form are,

Textboxes
  • Name (Text1)
  • Age (Text2)
  • D.O.B (Text3)
  • Phone No (Text4)
  • Qualification (Text5)
  • Percentage (Text6)
Command Buttons
  • Submit (Command1)
A timer control (Timer1) to display the current time.

Code for this form

This contains the code for connecting Visual Basic 6.0 with MS Access.

Dim c As Integer

Private Sub Command2_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.Open "record", cn, adOpenKeyset, adLockPessimistic, adCmdTable
c = c + 1
rs.AddNew
rs("Name") = Text1
rs("Age") = Text2
rs("DOB") = Text3
rs("Phno") = Text4
rs("Qualification") = Text5
rs("Percentage") = Text6
rs("Id") = c
rs("Status") = "Yet to be processed. Waiting for the response from HR. Stay Tuned for updates"
MsgBox "Registration Successful...Your Application id is " & c & "", vbInformation, "Recruitment System"
rs.Update
rs.Close
cn.Close
Unload Me
End Sub

Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.Open "select * from record", cn, adOpenKeyset, adLockOptimistic
c = rs.RecordCount
End Sub

Private Sub Timer1_Timer()
Label8.Caption = Now
End Sub
After the user enters the information the following dialog with 'Applicant Id' will be displayed




This applicant id will used by the applicant to check their application status. 

4. Creating the Status Form

Design the form as below,


The components in this form are,

Textboxes
  • Id (Text1)
  • Name (Text2)
  • Response text (Text3)
Command Button
  • Get Response (Command1)
Code for this form

Private Sub Command1_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.Open "select * from record where Id=" & Text1.Text & "", cn, adOpenKeyset, adLockOptimistic
If (rs(0).Value = Text2.Text) Then
Text3.Text = rs(7).Value
Else
MsgBox "Please verify the details you have given", vbCritical, "Recruitment System"
End If
End Sub

4. Creating the HR Admin form

The HR user will enter after entering the correct username and password in the 'Home' form.


Design the Admin Panel form as follows,


Components in this form,

DataGrid

To display the list of applications. To add this go to Project-> Components and in the dialog box that appears select Microsoft DataGrid control 6.0 (OLEDB).

Textboxes
  • Enter Applicant Id (Text1)
  • Enter response message (Text2).
Command Button
  •  Delete Applicant Id (Command2)
Code for this form

Private Sub Command1_Click()
On Error Resume Next
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.Open "update record set status='" + Text2.Text + "' where Id=" + Text1.Text + "", cn, adOpenKeyset, adLockOptimistic
MsgBox "Response sent successfully..", vbInformation, "Recruitment System"
Unload Me
Me.Show
End Sub

Private Sub Command2_Click()
On Error Resume Next
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.Open "delete from record where Id=" & Text1.Text & "", cn, adOpenKeyset, adLockOptimistic
MsgBox "Delete successfully..", vbInformation, "Recruitment System"
Unload Me
Me.Show
End Sub

Private Sub Form_Load()

On Error Resume Next
Dim oconn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
strSQL = "select * from record"
Set oconn = New ADODB.Connection
oconn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\record.mdb;Persist Security Info=False"
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
rs.Open strSQL, oconn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs
End Sub

Finally after this if the applicant checks his status, it will be displayed as follows,



Thats it!!! Your Project is completed in 5 Steps...:)

Hope You all liked it....If you like this I can post other projects that I did.

(The project has been put only under partial testing. There may be some slight errors in it. In case you find any please modify it or mail me.)

G.Vivek Venkatesh

Recruitment System UML Diagrams, SRS

Hi guys, in this post I have added the UML Diagrams for Recruitment system and a download link for problem statement and SRS.


Download Recruitment System Problem Statement and SRS

Download Recruitment System UML Diagrams

Use case diagram


Class Diagram


Sequence Diagram for 'Register'



Sequence Diagram for 'Status'


Sequence Diagram for 'Admin Panel'


Collaboration Diagram for 'Register'


Collaboraion Diagram for 'Status'


Collaboration Diagram for 'Admin Panel'


Activity Diagram

Thursday, March 10, 2011

Open Source Lab Anna University

One of the best labs of CSE...What do you say????

(You can find the programs soon in this blog, the link is http://www.csewiki.co.cc/search/label/Open%20Source%20Lab)

OBJECTIVE: 

To expose students to FOSS environment and introduce them to use open source
packages


1.  Kernel configuration, compilation and  installation : Download / access the
latest kernel source code from kernel.org,compile the kernel and install it in the
local  system.Try to view the source code of the kernel

2.  Virtualisation environment (e.g., xen, kqemu or lguest) to test an applications,
new kernels and isolate applications. It could also be used to expose students to
other alternate OSs like *BSD

.  Compiling from source : learn about the various build systems used like the
auto* family, cmake, ant etc. instead of just running the commands. This could
involve the full process like fetching from a cvs and also  include autoconf,
automake etc.,

4.  Introduction to packet management system : Given a set of RPM or DEB,
how to build and maintain, serve packages over http or ftp. and also how do you
configure client systems to access the package repository.

5.  Installing various software packages 
Either the package is yet to be installed or an older version is existing. The
student can practice installing the latest version. Of course, this might need
internet access.   Install samba and share files to windows   Install Common Unix Printing System(CUPS)

6.  Write userspace drivers using fuse  -- easier to debug and less dangerous to
the system (Writing full-fledged drivers is difficult at student level)

7.  GUI programming : a sample programme  – using Gambas since the students
have VB knowledge. However, one should try using GTK or QT.

8.  Version Control System setup and usage using RCS, CVS, SVN

9.  Text processing with Perl:  simple programs, connecting with database  e.g.,  
MYSQL 

10. Running PHP : simple applications like login forms after setting up a LAMP stack

11. Running Python : some simple exercise – e.g. Connecting with MySql database

12. Set up the complete network interface usinf ifconfig command liek setting
gateway, DNS, IP tables, etc., 

(Source - Anna University R 2008 Syllabus)

Tuesday, March 8, 2011

Happy Women's Day

Hi friends, I wish all those who represent motherhood a "Happy Women's day" on this 100th Anniversary of International Women's day.