diff --git a/.breakpoints b/.breakpoints
new file mode 100644
index 00000000..5cc232f0
--- /dev/null
+++ b/.breakpoints
@@ -0,0 +1,3 @@
+{
+  "files": {}
+}
\ No newline at end of file
diff --git a/.classpath b/.classpath
new file mode 100644
index 00000000..75b806fd
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="target/generated-sources/annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml
index a99cb363..df1d0727 100644
--- a/.github/workflows/auto-merge.yml
+++ b/.github/workflows/auto-merge.yml
@@ -1,23 +1,31 @@
-name: Auto-Merge PR
-
+name: Auto Merge PR
 on:
   pull_request:
     types:
-      - synchronize  # Trigger on any changes to the PR
-    branches:
-      - main  # Only trigger on PRs targeting the 'main' branch
-
+      - labeled
+      - unlabeled
+      - synchronize
+      - opened
+      - edited
+      - ready_for_review
+      - reopened
+      - unlocked
+  pull_request_review:
+    types:
+      - submitted
+  check_suite:
+    types:
+      - completed
+  status: {}
 jobs:
-  auto-merge:
+  automerge:
     runs-on: ubuntu-latest
-
     steps:
-      - name: Merge PR
-        run: |
-          git config user.name "${{ github.actor }}"
-          git config user.email "${{ github.actor }}@users.noreply.github.com"
-          git checkout -B auto-merge
-          git pull "${{ github.event.pull_request.head.repo.clone_url }}" "${{ github.event.pull_request.head.ref }}"
-          git push "${{ github.event.pull_request.head.repo.clone_url }}" auto-merge
+      - name: Merging PR
+        uses: "pascalgn/automerge-action@v0.14.3"
         env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+          MERGE_METHOD: "squash"
+          MERGE_LABELS: ""
+          MERGE_COMMIT_MESSAGE: "pull-request-title"
+          MERGE_REQUIRED_APPROVALS: "0"
diff --git a/.github/workflows/auto-pr.yml b/.github/workflows/auto-pr.yml
new file mode 100644
index 00000000..cd2d7032
--- /dev/null
+++ b/.github/workflows/auto-pr.yml
@@ -0,0 +1,31 @@
+name: Merge PR
+on:
+  pull_request:
+    types:
+      - labeled
+      - unlabeled
+      - synchronize
+      - opened
+      - edited
+      - ready_for_review
+      - reopened
+      - unlocked
+  pull_request_review:
+    types:
+      - submitted
+  check_suite:
+    types:
+      - completed
+  status: {}
+jobs:
+  automerge:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Merging PR
+        uses: "pascalgn/automerge-action@v0.14.3"
+        env:
+          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+          MERGE_LABELS: "!automerge"
+          MERGE_METHOD: "merge"
+          MERGE_COMMIT_MESSAGE: "pull-request-title"
+          MERGE_REQUIRED_APPROVALS: "0"
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..9902a215
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "UDP_VIDEO_CALLER"]
+	path = UDP_VIDEO_CALLER
+	url = https://github.com/Adidem23/UDP_VideoCaller.git
diff --git a/.project b/.project
new file mode 100644
index 00000000..a2380fe3
--- /dev/null
+++ b/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>myartifactid</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+	<filteredResources>
+		<filter>
+			<id>1679078569810</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.core.resources.regexFilterMatcher</id>
+				<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
+			</matcher>
+		</filter>
+	</filteredResources>
+</projectDescription>
diff --git a/.replit b/.replit
new file mode 100644
index 00000000..b5052298
--- /dev/null
+++ b/.replit
@@ -0,0 +1,64 @@
+compile = "javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')"
+run = "java -classpath .:target/dependency/* Main"
+entrypoint = "Main.java"
+hidden = ["**/*.class"]
+
+[packager]
+language = "java"
+
+[packager.features]
+packageSearch = true
+
+[languages.java]
+pattern = "**/*.java"
+
+[languages.java.languageServer]
+start = "jdt-language-server"
+
+[unitTest]
+language = "java"
+
+[nix]
+channel = "stable-22_11"
+
+[debugger]
+support = true
+
+[debugger.compile]
+command = "javac -classpath .:/run_dir/junit-4.12.jar:target/dependency/* -g -d . $(find . -type f -name '*.java')"
+
+[debugger.interactive]
+transport = "localhost:0"
+connectTimeout = 60
+startCommand = "java-debug"
+
+[debugger.interactive.initializeMessage]
+command = "initialize"
+type = "request"
+
+[debugger.interactive.initializeMessage.arguments]
+adapterID = "cppdbg"
+clientID = "replit"
+clientName = "replit.com"
+columnsStartAt1 = true
+linesStartAt1 = true
+locale = "en-us"
+pathFormat = "path"
+supportsInvalidatedEvent = true
+supportsProgressReporting = true
+supportsRunInTerminalRequest = true
+supportsVariablePaging = true
+supportsVariableType = true
+
+[debugger.interactive.launchMessage]
+command = "launch"
+type = "request"
+
+[debugger.interactive.launchMessage.arguments]
+classPaths = ["."]
+mainClass = "Main"
+
+[deployment]
+build = ["javac", "-classpath", ".:target/dependency/*", "-d", ".", "$(find . -type f -name '*.java')"]
+run = ["java", "-classpath", ".:target/dependency/*", "Main"]
+deploymentTarget = "cloudrun"
\ No newline at end of file
diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 00000000..d4313d4b
--- /dev/null
+++ b/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..ac8e7500
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000..f897a7f1
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/2048/.gitignore b/2048/.gitignore
new file mode 100644
index 00000000..814d83c0
--- /dev/null
+++ b/2048/.gitignore
@@ -0,0 +1,8 @@
+.DS_Store
+Thumbs.db
+db.json
+*.log
+node_modules/
+public/
+.deploy*/
+.history
\ No newline at end of file
diff --git a/2048/README.md b/2048/README.md
new file mode 100644
index 00000000..b9265e24
--- /dev/null
+++ b/2048/README.md
@@ -0,0 +1,3 @@
+# 2048 project made using HTML CSS Javascript
+
+
diff --git a/2048/css/keyframes.css b/2048/css/keyframes.css
new file mode 100644
index 00000000..24d459f3
--- /dev/null
+++ b/2048/css/keyframes.css
@@ -0,0 +1,30 @@
+@keyframes moveup{
+    0%{
+        transform: translateY(0);
+        opacity: 1;
+    }
+    100%{
+        transform: translateY(-150px);
+        opacity: 0;
+    }
+}
+@keyframes appear{
+    0%{
+        transform: scale(0);
+    }
+    100%{
+        transform: scale(1);
+    }
+}
+@keyframes add{
+    0%{
+        transform: scale(1);
+        box-shadow: 0 0 1px red;
+    }
+    50%{
+        transform: scale(1.2);
+    }
+    100%{
+        transform: scale(1);
+    }
+}
\ No newline at end of file
diff --git a/2048/css/media.css b/2048/css/media.css
new file mode 100644
index 00000000..4a9c685a
--- /dev/null
+++ b/2048/css/media.css
@@ -0,0 +1,55 @@
+@media screen and (max-width:1250px){
+    html,body{
+        font-size: 15px;
+    }
+    .container{
+        width: 280px;
+    }
+    h1.title{
+        font-size: 31px;
+    }
+    .score-container,
+    .best-container{
+        padding: 3px 10px;
+    }
+    .game-container{
+        margin-top: 10px;
+        width: 280px;
+        height: 280px;
+    }
+    .grid-container,
+    .tile-container{
+        width: 260px;
+        height: 260px;
+    }
+    .grid-row,
+    .tile{
+        height: 22.75%;
+    }
+    .grid-cell,
+    .tile{
+        width: 22.75%;
+    }
+    .grid-row{
+        margin-bottom: 3%;
+    }
+    .grid-cell{
+        margin-right: 3%;
+    }
+    .tile{
+        font-size: 35px;
+    }
+    .tile[data-val="128"],
+    .tile[data-val="256"],
+    .tile[data-val="512"]{
+        font-size: 25px;
+    }
+    .tile[data-val="1024"],
+    .tile[data-val="2048"]{
+        font-size: 21px;
+    }
+
+    .pop-container p{
+        font-size: 30px;
+    }
+}
\ No newline at end of file
diff --git a/2048/css/style.css b/2048/css/style.css
new file mode 100644
index 00000000..2b0ff70a
--- /dev/null
+++ b/2048/css/style.css
@@ -0,0 +1,329 @@
+@import "../font/clear-sans.css";
+
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+html,
+body {
+    font-family: "Clear Sans", "Helvetica Neue", Arial, sans-serif;
+    color: #776e65;
+    font-size: 18px;
+    background: rgba(238, 228, 218, 0.5);
+    overflow: hidden;
+    height: 100%;
+}
+
+a {
+    text-decoration: none;
+    color: inherit;
+    cursor: pointer;
+}
+
+.container {
+    position: relative;
+    margin: 0 auto;
+    display: flex;
+    flex-direction: column;
+    width: 450px;
+    height: 100vh;
+    box-sizing: content-box;
+}
+
+.heading {
+    margin: 20px 0;
+}
+
+.heading {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    flex-wrap: wrap;
+}
+
+h1.title {
+    font-size: 74px;
+    line-height: 66px;
+    font-weight: bold;
+}
+
+.scores-container {
+    float: right;
+}
+
+.score-container,
+.best-container {
+    float: left;
+    padding: 3px 20px;
+    background: #bbada0;
+    border-radius: 3px;
+    font-size: 25px;
+    font-weight: bold;
+    color: white;
+    text-align: center;
+}
+
+.score-container {
+    position: relative;
+    margin-right: 15px;
+    margin-bottom: 5px;
+}
+
+.score-container .title,
+.best-container .title {
+    font-size: 13px;
+    color: #eee4da;
+}
+
+.score-addition {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    color: rgba(119, 110, 101, 0.9);
+    z-index: 100;
+    opacity: 0;
+    font-size: 1rem;
+}
+
+.score-addition.action {
+    animation: 2s moveup;
+}
+
+.above-game {
+    font-size: 0.9rem;
+}
+
+.restart-btn {
+    margin: 5px 0 0 5px;
+    float: right;
+    padding: 0 8px;
+    background: #8f7a66;
+    color: white;
+    height: 40px;
+    line-height: 40px;
+    border-radius: 3px;
+    font-weight: bold;
+}
+
+h2.subtitle {
+    font-size: 1em;
+}
+
+.game-container {
+    position: relative;
+    margin-top: 15px;
+    width: 450px;
+    height: 450px;
+    background: #bbada0;
+    border-radius: 6px;
+    touch-action: none;
+}
+
+.grid-container,
+.tile-container,
+.pop-container {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    margin: auto;
+    width: 426px;
+    height: 426px;
+}
+
+
+.grid-row {
+    display: flex;
+    margin-bottom: 2%;
+}
+
+.grid-row,
+.tile {
+    height: 23.5%;
+}
+
+.grid-cell,
+.tile {
+    width: 23.5%;
+    border-radius: 3px;
+}
+
+.grid-cell {
+    margin-right: 2%;
+    background: rgba(238, 228, 218, 0.35);
+}
+
+.grid-cell:nth-of-type(4n) {
+    margin-right: 0;
+}
+
+.tile {
+    position: absolute;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 53px;
+    font-weight: bold;
+    background: #eee4da;
+    transition: all 0.15s ease;
+}
+
+.tile.new-tile {
+    animation: 0.5s appear;
+}
+
+.tile.addition {
+    animation: 0.3s add;
+}
+
+.tile[data-val] {
+    color: #f9f6f2;
+}
+
+.tile[data-val="2"],
+.tile[data-val="4"] {
+    color: #776e65;
+}
+
+.tile[data-val="128"],
+.tile[data-val="256"],
+.tile[data-val="512"] {
+    font-size: 45px;
+}
+
+.tile[data-val="1024"],
+.tile[data-val="2048"] {
+    font-size: 33px;
+}
+
+.tile[data-val="4"] {
+    background: #ede0c8;
+}
+
+.tile[data-val="8"] {
+    background: #f2b179;
+}
+
+.tile[data-val="16"] {
+    background: #f59563;
+}
+
+.tile[data-val="32"] {
+    background: #f67c5f;
+}
+
+.tile[data-val="64"] {
+    background: #f65e3b;
+}
+
+.tile[data-val="128"] {
+    background: #edcf72;
+}
+
+.tile[data-val="256"] {
+    background: #edcc61;
+    box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.31746), inset 0 0 0 1px rgba(255, 255, 255, 0.19048);
+}
+
+.tile[data-val="512"] {
+    background: #edc850;
+    box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.39683), inset 0 0 0 1px rgba(255, 255, 255, 0.2381);
+}
+
+.tile[data-val="1024"] {
+    background: #edc53f;
+    box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.47619), inset 0 0 0 1px rgba(255, 255, 255, 0.28571);
+}
+
+.tile[data-val="2048"] {
+    background: #edc22e;
+    box-shadow: 0 0 30px 10px rgba(243, 215, 116, 0.55556), inset 0 0 0 1px rgba(255, 255, 255, 0.33333);
+}
+
+.pop-container {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+    background: rgba(238, 228, 218, 0.8);
+    z-index: 100;
+    opacity: 0;
+    transition: all 1s ease;
+}
+
+.winning-container p:nth-child(1){
+    transform: rotate(90deg);
+}
+
+.winning-container.action p:nth-child(1){
+    transform-origin: center;
+    animation: winning 1.5s infinite;
+}
+
+.failure-container.action p:nth-child(1){
+    transform-origin: center;
+    animation: failure 5s infinite;
+}
+
+@keyframes winning{
+    0%,25%,50%,75%,100%{
+		transform: rotate(90deg) translateX(-5px);
+	}
+	12.5%{
+		transform: rotate(80deg);
+	}
+	37.5%{
+		transform: rotate(70deg);
+	}
+	62.5%{
+		transform: rotate(100deg);
+	}
+	87.5%{
+		transform: rotate(120deg);
+	}
+}
+
+@keyframes failure{
+    0%,25%,50%,75%,100%{
+		transform: rotate(90deg) scale(0.7,1) rotateX(40deg);
+	}
+	12.5%{
+		transform: rotate(90deg);
+	}
+	37.5%{
+		transform: rotate(90deg);
+	}
+	62.5%{
+		transform: rotate(90deg);
+	}
+	87.5%{
+		transform: rotate(90deg);
+	}
+}
+
+.pop-container.action {
+    opacity: 1;
+}
+
+.pop-container p {
+    font-size: 60px;
+    font-weight: bold;
+}
+
+.footer {
+    flex: 1;
+    padding: 10px 0;
+    text-align: center;
+    display: flex;
+    justify-content: space-around;
+    align-items: flex-end;
+    font-size: 0.75rem;
+    color: #333;
+    opacity: 0.7;
+}
\ No newline at end of file
diff --git a/2048/favicon.ico b/2048/favicon.ico
new file mode 100644
index 00000000..22109e04
Binary files /dev/null and b/2048/favicon.ico differ
diff --git a/2048/font/ClearSans-Bold-webfont.woff b/2048/font/ClearSans-Bold-webfont.woff
new file mode 100644
index 00000000..184a945d
Binary files /dev/null and b/2048/font/ClearSans-Bold-webfont.woff differ
diff --git a/2048/font/ClearSans-Regular-webfont.woff b/2048/font/ClearSans-Regular-webfont.woff
new file mode 100644
index 00000000..9d58858d
Binary files /dev/null and b/2048/font/ClearSans-Regular-webfont.woff differ
diff --git a/2048/font/clear-sans.css b/2048/font/clear-sans.css
new file mode 100644
index 00000000..de2811db
--- /dev/null
+++ b/2048/font/clear-sans.css
@@ -0,0 +1,30 @@
+@font-face {
+    font-family: "Clear Sans";
+    src: url("ClearSans-Light-webfont.eot");
+    src: url("ClearSans-Light-webfont.eot?#iefix") format("embedded-opentype"),
+         url("ClearSans-Light-webfont.svg#clear_sans_lightregular") format("svg"),
+         url("ClearSans-Light-webfont.woff") format("woff");
+    font-weight: 200;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: "Clear Sans";
+    src: url("ClearSans-Regular-webfont.eot");
+    src: url("ClearSans-Regular-webfont.eot?#iefix") format("embedded-opentype"),
+         url("ClearSans-Regular-webfont.svg#clear_sansregular") format("svg"),
+         url("ClearSans-Regular-webfont.woff") format("woff");
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: "Clear Sans";
+    src: url("ClearSans-Bold-webfont.eot");
+    src: url("ClearSans-Bold-webfont.eot?#iefix") format("embedded-opentype"),
+         url("ClearSans-Bold-webfont.svg#clear_sansbold") format("svg"),
+         url("ClearSans-Bold-webfont.woff") format("woff");
+    font-weight: 700;
+    font-style: normal;
+}
+
diff --git a/2048/index.html b/2048/index.html
new file mode 100644
index 00000000..d8e6919f
--- /dev/null
+++ b/2048/index.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <link rel="stylesheet" href="css/keyframes.css">
+    <link rel="stylesheet" href="css/style.css">
+    <link rel="stylesheet" href="css/media.css">
+    <link rel="shortcut icon" href="./favicon.ico">
+    <title>2048</title>
+</head>
+
+<body>
+    <div class="container">
+        <div class="heading">
+            <h1 class="title">
+                <a href="">2048</a>
+            </h1>
+            <div class="scores-container">
+                <div class="score-container">
+                    <p class="title">SCORE</p>
+                    <P class="score">0</P>
+                    <div class="score-addition">
+                        +4
+                    </div>
+                </div>
+                <div class="best-container">
+                    <p class="title">BEST</p>
+                    <P class="score">66666</P>
+                </div>
+            </div>
+        </div>
+        <div class="game-intro">
+            <a href="" class="restart-btn">New Game</a>
+            <h2 class="subtitle">
+                Play 2048 Game Online
+            </h2>
+            <p class="above-game">
+                Join the numbers and get to the <strong>2048</strong> tile!
+            </p>
+        </div>
+        <div class="game-container">
+            <div class="grid-container">
+                <div class="grid-row">
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                </div>
+                <div class="grid-row">
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                </div>
+                <div class="grid-row">
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                </div>
+                <div class="grid-row">
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                    <div class="grid-cell"></div>
+                </div>
+            </div>
+            <div class="tile-container">
+
+            </div>
+            <div class="failure-container pop-container">
+                <p>:(</span></p>
+                <p>FIALURE</p>
+            </div>
+            <div class="winning-container pop-container">
+                <p>:)</p>
+                <p>WINNING</p>
+            </div>
+        </div>
+        <div class="footer">
+            <span>
+                Crafted with by
+                @shrey141102<a href="https://github.com/shrey141102/"> -> GitHub</a>
+            </span>
+        </div>
+    </div>
+    <script src="js/config.js"></script>
+    <script src="js/data.js"></script>
+    <script src="js/utils.js"></script>
+    <script src="js/event.js"></script>
+    <script src="js/view.js"></script>
+    <script src="js/game.js"></script>
+    <script src="js/main.js"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/2048/js/config.js b/2048/js/config.js
new file mode 100644
index 00000000..cdfe9910
--- /dev/null
+++ b/2048/js/config.js
@@ -0,0 +1,4 @@
+var config = {
+    bonus_point: 4,
+    max : 2048,
+}
\ No newline at end of file
diff --git a/2048/js/data.js b/2048/js/data.js
new file mode 100644
index 00000000..9239c6ae
--- /dev/null
+++ b/2048/js/data.js
@@ -0,0 +1,37 @@
+var data = {
+    score: 0,
+    best: 0,
+    cell: [
+
+    ]
+}
+var indexs = [
+    // left
+    [
+        [0, 1, 2, 3],
+        [4, 5, 6, 7],
+        [8, 9, 10, 11],
+        [12, 13, 14, 15],
+    ],
+    // top
+    [
+        [0, 4, 8, 12],
+        [1, 5, 9, 13],
+        [2, 6, 10, 14],
+        [3, 7, 11, 15],
+    ],
+    // right
+    [
+        [3, 2, 1, 0],
+        [7, 6, 5, 4],
+        [11, 10, 9, 8],
+        [15, 14, 13, 12],
+    ],
+    // bottom
+    [
+        [12, 8, 4, 0],
+        [13, 9, 5, 1],
+        [14, 10, 6, 2],
+        [15, 11, 7, 3],
+    ]
+]
\ No newline at end of file
diff --git a/2048/js/event.js b/2048/js/event.js
new file mode 100644
index 00000000..e1233497
--- /dev/null
+++ b/2048/js/event.js
@@ -0,0 +1,46 @@
+function event(game) {
+
+    var down = false;
+
+    var gameContainer = $('.game-container')[0];
+
+    on(window, 'keydown', function (e) {
+        if (down) return;
+        down = true;
+        var num = e.keyCode - 37;
+        if (num >= 0 && num <= 3) {
+            game.move(num);
+        }
+    });
+
+    on(window, 'keyup', function () {
+        down = false;
+    });
+
+    touchMoveDir(gameContainer, 15, function (dir) {
+        game.move(dir);
+    });
+
+    on($('.restart-btn')[0], 'click', function (e) {
+        e.preventDefault();
+        game.restart();
+    });
+
+    on(window, 'resize', function () {
+        game.view.resize();
+    });
+
+    // 自动测试
+    var autoTest = false;
+
+    if (autoTest) {
+        (function () {
+            var timer = setInterval(function () {
+                var moveInfo = game.move(random(0, 3));
+                if (!moveInfo) {
+                    clearInterval(timer);
+                }
+            }, 20);
+        })();
+    }
+}
\ No newline at end of file
diff --git a/2048/js/game.js b/2048/js/game.js
new file mode 100644
index 00000000..ed532029
--- /dev/null
+++ b/2048/js/game.js
@@ -0,0 +1,313 @@
+var Game = (function () {
+
+    var cell = data.cell;
+    var over = false;
+    var move = false;
+
+    var Game = function (view) {
+
+    };
+    Game.prototype = {
+        init: function (view) {
+            var _this = this;
+            this.view = view;
+            var history = this.getHistory();
+            if (history) {
+                this.restoreHistory(history);
+            } else {
+                this.initCell();
+                this.start();
+            }
+            this.setBest();
+            setTimeout(function () {
+                _this.view.setup();
+            });
+        },
+        start: function () {
+            for (var i = 0; i < 2; i++) {
+                this.randomAddItem();
+            }
+        },
+        restart: function () {
+            var _this = this;
+            over = false;
+            this.initCell();
+            this.view.restart();
+            this.start();
+            data.score = 0;
+            this.save();
+            setTimeout(function () {
+                _this.view.setup();
+            });
+        },
+        save: function () {
+            localStorage.bestScore = data.best;
+            localStorage.gameState = JSON.stringify({
+                cell: data.cell,
+                socre: data.score,
+            });
+        },
+        winning(){
+            over = true;
+            localStorage.gameState = '';
+            this.view.winning();
+        },
+        checkWinning(){
+            var isWinning = cell.find(function(el){
+                return el.val === config.max
+            });
+            if (isWinning){
+                this.winning();
+            }
+        },
+        failure: function () {
+            over = true;
+            localStorage.gameState = '';
+            this.view.failure();
+        },
+        checkfailure: function () {
+            var _this = this;
+            var same = false;
+            var called = function (arr, str) {
+                if (same) return;
+                same = arr.some(function (el) {
+                    return _this.checkSame(el);
+                });
+            };
+            called(this.chunkX(), 'x');
+            called(this.chunkY(), 'y');
+            setTimeout(function () {
+                if (!same) {
+                    _this.failure();
+                }
+            });
+        },
+        checkSame: function (arr, index) {
+            same = arr.some(function (el, index, arr) {
+                if (index === arr.length - 1) return;
+                return el.val === arr[index + 1].val;
+                return true;
+            });
+            return same;
+        },
+        setBest: function () {
+            var best = getLocalStorage('bestScore');
+            data.best = best || 0;
+        },
+        getHistory: function () {
+            var gameState = getLocalStorage('gameState');
+            if (gameState && gameState.socre && gameState.cell) {
+                return gameState;
+            }
+        },
+        restoreHistory: function (history) {
+            data.cell = history.cell;
+            data.score = history.socre;
+            cell = data.cell;
+            this.view.restoreTile();
+        },
+        initCell: function () {
+            for (var i = 0; i < 16; i++) {
+                cell[i] = {
+                    val: 0,
+                    index: i,
+                };
+            }
+        },
+        addScore: function (score) {
+            data.score += score;
+            if (data.best < data.score) {
+                data.best = data.score;
+                this.view.updateBest();
+            }
+            this.view.updateScore(score);
+        },
+        chunkX: function () {
+            var new_cell = [];
+            for (var i = 0; i < cell.length; i += 4) {
+                new_cell.push(cell.slice(i, i + 4));
+            }
+            return new_cell;
+        },
+        chunkY: function () {
+            var arr = this.chunkX();
+            var new_cell = [
+                [],
+                [],
+                [],
+                []
+            ];
+            for (var i = 0; i < arr.length; i++) {
+                for (var j = 0; j < arr[i].length; j++) {
+                    new_cell[j][i] = arr[i][j];
+                }
+            }
+            return new_cell;
+        },
+        arrayInnerReverse: function (arr) {
+            arr.forEach(function (el, index) {
+                arr[index] = el.reverse();
+            });
+            return arr;
+        },
+        updatePos: function (old_index, index) {
+            cell[index].val = cell[old_index].val;
+            cell[old_index].val = 0;
+            move = true;
+            return old_index;
+        },
+        updateVal: function (index, val) {
+            var _this = this;
+            cell[index].val = val;
+            setTimeout(function () {
+                _this.view.updateVal(index);
+            }, 0);
+        },
+        updateItem: function (old_index, index) {
+            if (cell[old_index] === cell[index]) return;
+            var old_index = this.updatePos(old_index, index);
+            this.view.move(old_index, index);
+        },
+        removeItem: function (index) {
+            cell[index].val = 0;
+            this.view.remove(index);
+        },
+        getSum: function (obj, i, j) {
+            return obj[i].val + obj[j].val;
+        },
+        move: function (dir) {
+            if (over) return;
+            var _this = this;
+            var _score = 0;
+            var _move = false;
+            var new_cell = [];
+            if (dir === 0 || dir === 2) {
+                new_cell = this.chunkX();
+            } else if (dir === 1 || dir === 3) {
+                new_cell = this.chunkY();
+            }
+            if (dir === 2 || dir === 3) {
+                new_cell = this.arrayInnerReverse(new_cell);
+            }
+            new_cell.forEach(function (arr, index) {
+                var moveInfo = _this.moving(arr, indexs[dir][index]);
+                _score += moveInfo.score;
+            });
+            this.addScore(_score);
+            if (move) {
+                this.randomAddItem();
+                _move = true;
+                move = false;
+            }
+            this.save();
+            this.checkWinning();
+            if (this.isFull()) {
+                this.checkfailure();
+            }
+            return {
+                move: _move,
+            };
+        },
+        mergeMove: function (_cell, index, num1, num2, num3) {
+            var sum = this.getSum(_cell, num1, num2);
+            this.removeItem(_cell[num1].index);
+            this.updateItem(_cell[num2].index, index[num3]);
+            this.updateVal(index[num3], sum);
+        },
+        normalMove: function (_cell, index) {
+            var _this = this;
+            _cell.forEach(function (el, i) {
+                _this.updateItem(_cell[i].index, index[i]);
+            });
+        },
+        moving: function (arr, index) {
+            var _this = this;
+            var _score = 0;
+            var _cell = arr.filter(function (el) {
+                return el.val !== 0;
+            });
+            if (_cell.length === 0) {
+                return {
+                    score: 0,
+                }
+            };
+            var calls = [
+                function () {
+                    _this.normalMove(_cell, index);
+                },
+                function () {
+                    if (_cell[0].val === _cell[1].val) {
+                        _this.mergeMove(_cell, index, 0, 1, 0);
+                        _score += config.bonus_point;
+                    } else {
+                        _this.normalMove(_cell, index);
+                    }
+                },
+                function () {
+                    if (_cell[0].val === _cell[1].val) {
+                        _this.mergeMove(_cell, index, 0, 1, 0);
+                        _this.updateItem(_cell[2].index, index[1]);
+                        _score += config.bonus_point;
+                    } else if (_cell[1].val === _cell[2].val) {
+                        _this.updateItem(_cell[0].index, index[0]);
+                        _this.mergeMove(_cell, index, 1, 2, 1);
+                        _score += config.bonus_point;
+                    } else {
+                        _this.normalMove(_cell, index);
+                    }
+                },
+                function () {
+                    if (_cell[0].val === _cell[1].val) {
+                        _this.mergeMove(_cell, index, 0, 1, 0);
+                        _score += config.bonus_point;
+                        if (_cell[2].val === _cell[3].val) {
+                            _this.mergeMove(_cell, index, 2, 3, 1);
+                            _score += config.bonus_point;
+                        } else {
+                            _this.updateItem(_cell[2].index, index[1]);
+                            _this.updateItem(_cell[3].index, index[2]);
+                        }
+                    } else if (_cell[1].val === _cell[2].val) {
+                        _this.mergeMove(_cell, index, 1, 2, 1);
+                        _this.updateItem(_cell[3].index, index[2]);
+                        _score += config.bonus_point;
+                    } else if (_cell[2].val === _cell[3].val) {
+                        _this.mergeMove(_cell, index, 2, 3, 2);
+                        _score += config.bonus_point;
+                    }
+                }
+            ];
+            calls[_cell.length - 1]();
+            return {
+                score: _score,
+            };
+        },
+        isFull: function () {
+            var full = cell.filter(function (el) {
+                return el.val === 0;
+            });
+            return full.length === 0;
+        },
+        randomAddItem: function () {
+            if (this.isFull()) return;
+            while (true) {
+                var index = random(0, data.cell.length - 1);
+                var exist = data.cell[index].val !== 0;
+                if (!exist) {
+                    this.addItem(index, 2);
+                    break;
+                }
+            }
+        },
+        addItem: function (index, val) {
+            data.cell[index] = {
+                val: val,
+                index: index
+            };
+            this.view.appear(index);
+        }
+    };
+
+    return Game;
+
+})();
\ No newline at end of file
diff --git a/2048/js/main.js b/2048/js/main.js
new file mode 100644
index 00000000..5f2d145d
--- /dev/null
+++ b/2048/js/main.js
@@ -0,0 +1,6 @@
+on(window, 'load', function () {
+    var view = new View();
+    var game = new Game();
+    game.init(view);
+    event(game);
+});
\ No newline at end of file
diff --git a/2048/js/utils.js b/2048/js/utils.js
new file mode 100644
index 00000000..188d5d2f
--- /dev/null
+++ b/2048/js/utils.js
@@ -0,0 +1,64 @@
+var log = console.log.bind(console);
+var random = function (start, end) {
+    start = start === void 0 ? 0 : start;
+    end = end === void 0 ? 1 : end;
+    end = end + 1;
+    var rand = Math.random() * (end - start) + start;
+    return Math.floor(rand);
+};
+var $ = function (elem) {
+    return document.querySelectorAll(elem);
+}
+var on = function (elem, type, callback) {
+    elem.addEventListener(type, function (e) {
+        callback(e);
+    });
+}
+
+var indexToPos = function (index) {
+    return {
+        x: index % 4,
+        y: Math.floor(index / 4),
+    }
+}
+
+var getLocalStorage = function (key) {
+    return localStorage[key] ?
+        JSON.parse(localStorage[key]) : null;
+}
+
+var touchMoveDir = function (elem, min, callback) {
+    var touchPos = {
+        beforeX: 0,
+        beforeY: 0,
+        afterX: 0,
+        afterY: 0,
+    }
+    var move = false;
+    var dir;
+    on(elem, 'touchstart', function (e) {
+        touchPos.beforeX = e.touches[0].clientX;
+        touchPos.beforeY = e.touches[0].clientY;
+    });
+    on(elem, 'touchmove', function (e) {
+        move = true;
+        touchPos.afterX = e.touches[0].clientX;
+        touchPos.afterY = e.touches[0].clientY;
+    });
+    on(elem, 'touchend', function (e) {
+        if (!move) return;
+        var x = touchPos.beforeX - touchPos.afterX;
+        var y = touchPos.beforeY - touchPos.afterY;
+        log(x, y);
+        if (Math.abs(x) < min && Math.abs(y) < min) {
+            return;
+        }
+        if (Math.abs(x) > Math.abs(y)) {
+            dir = x > 0 ? 0 : 2;
+        } else {
+            dir = y > 0 ? 1 : 3;
+        }
+        move = false;
+        callback(dir);
+    });
+};
\ No newline at end of file
diff --git a/2048/js/view.js b/2048/js/view.js
new file mode 100644
index 00000000..8f1130bd
--- /dev/null
+++ b/2048/js/view.js
@@ -0,0 +1,126 @@
+var View = (function () {
+
+    var tileContainer = $('.tile-container')[0];
+    var scoreContainer = $('.score-container')[0];
+    var scoreDom = $('.score-container .score')[0];
+    var scoreAddition = $('.score-addition')[0];
+    var bestDom = $('.best-container .score')[0];
+    var failureContainer = $('.failure-container')[0];
+    var winningContainer = $('.winning-container')[0];
+
+    var View = function () {
+
+    };
+
+    View.prototype = {
+        setup: function () {
+            failureContainer.classList.remove('action');
+            winningContainer.classList.remove('action');
+            this.updateScore(data.score);
+            this.updateBest();
+        },
+        restart: function () {
+            tileContainer.innerHTML = "";
+        },
+        resize: function () {
+            var _this = this;
+            data.cell.forEach(function (el, index) {
+                var tile = _this.getTile(index);
+                if (!tile) return;
+                var pos = _this.getPos(indexToPos(index));
+                _this.setPos(tile, pos);
+            });
+        },
+        failure: function () {
+            failureContainer.classList.add('action');
+        },
+        winning: function () {
+            winningContainer.classList.add('action');
+        },
+        restoreTile: function () {
+            var _this = this;
+            data.cell.forEach(function (el, index) {
+                if (el.val !== 0) {
+                    _this.appear(index);
+                }
+            });
+        },
+        addScoreAnimation: function (score) {
+            if (!score) return;
+            scoreAddition.innerHTML = '+' + score;
+            scoreAddition.classList.add('action');
+            setTimeout(function () {
+                scoreAddition.classList.remove('action');
+            }, 500);
+        },
+        updateScore: function (score) {
+            scoreDom.innerHTML = data.score;
+            this.addScoreAnimation(score);
+        },
+        updateBest: function () {
+            bestDom.innerHTML = data.best;
+        },
+        setInfo: function (elem, pos, index) {
+            elem.style.left = pos.left + 'px';
+            elem.style.top = pos.top + 'px';
+            elem.setAttribute('data-index', index);
+        },
+        getTile: function (index) {
+            return $(`.tile[data-index='${index}']`)[0];
+        },
+        getPos: function (pos) {
+            var gridCell = $(`.grid-row:nth-child(${pos.y+1}) .grid-cell:nth-child(${pos.x+1})`)[0];
+            return {
+                left: gridCell.offsetLeft,
+                top: gridCell.offsetTop,
+            }
+        },
+        setPos: function (elem, pos) {
+            elem.style.left = pos.left + 'px';
+            elem.style.top = pos.top + 'px';
+        },
+        createTileHTML: function (obj) {
+            var tile = document.createElement('div');
+            tile.className = obj.classNames;
+            tile.innerHTML = obj.val;
+            tile.setAttribute('data-index', obj.index);
+            tile.setAttribute('data-val', obj.val);
+            this.setPos(tile, obj.pos);
+            return tile;
+        },
+        appear: function (index) {
+            var last = data.cell[index];
+            var pos = this.getPos(indexToPos(index));
+            var newTile = this.createTileHTML({
+                val: last.val,
+                pos: pos,
+                index: index,
+                classNames: " tile new-tile",
+            });
+            tileContainer.appendChild(newTile);
+        },
+        remove: function (index) {
+            var tile = this.getTile(index);
+            tile.parentElement.removeChild(tile);
+        },
+        move: function (old_index, index) {
+            var tile = this.getTile(old_index);
+            var pos = this.getPos(indexToPos(index));
+            this.setInfo(tile, pos, index);
+        },
+        updateVal: function (index) {
+            var tile = this.getTile(index);
+            var val = data.cell[index].val;
+            tile.setAttribute('data-val', val);
+            tile.innerHTML = val;
+            tile.classList.add('addition');
+            setTimeout(function () {
+                tile.classList.remove('addition');
+                tile.classList.remove('new-tile');
+            }, 300);
+        },
+    }
+
+    return View;
+
+})();
\ No newline at end of file
diff --git a/4sum.java b/4sum.java
new file mode 100644
index 00000000..a1047d56
--- /dev/null
+++ b/4sum.java
@@ -0,0 +1,30 @@
+class Solution {
+    public List<List<Integer>> fourSum(int[] nums, int target) {
+        Arrays.sort(nums);
+        Set<List<Integer>> s = new HashSet<>();
+        List<List<Integer>> output = new ArrayList<>();
+        for (int i = 0; i < nums.length; i++) {
+            for (int j = i + 1; j < nums.length; j++) {
+                int k = j + 1;
+                int l = nums.length - 1;
+                while (k < l) {
+                    long sum = nums[i];
+                    sum += nums[j];
+                    sum += nums[k];
+                    sum += nums[l];
+                    if (sum == target) {
+                        s.add(Arrays.asList(nums[i], nums[j], nums[k], nums[l]));
+                        k++;
+                        l--;
+                    } else if (sum < target) {
+                        k++;
+                    } else {
+                        l--;
+                    }
+                }
+            }
+        }
+        output.addAll(s);
+        return output;
+    }
+}
diff --git a/AI Riddle Game/RiddleGame.java b/AI Riddle Game/RiddleGame.java
new file mode 100644
index 00000000..0e03fe73
--- /dev/null
+++ b/AI Riddle Game/RiddleGame.java	
@@ -0,0 +1,66 @@
+import java.util.Scanner;
+
+public class RiddleGame {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        int score = 0;
+
+        // Define an array of riddles and their corresponding answers.
+        String[] riddles = {
+            "I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?",
+            "The more you take, the more you leave behind. What am I?",
+            "I'm not alive, but I can grow; I don't have lungs, but I need air; I don't have a mouth, but water kills me. What am I?"
+        };
+
+        String[] answers = {
+            "An echo",
+            "Footsteps",
+            "A fire"
+        };
+
+        // Define hints for each riddle.
+        String[] hints = {
+            "Hint: This thing is known for its ability to reflect sound.",
+            "Hint: Think about what you leave behind when you walk.",
+            "Hint: It produces heat and light."
+        };
+
+        int numRiddles = riddles.length;
+
+        while (true) {
+            int randomIndex = (int) (Math.random() * numRiddles);
+            String selectedRiddle = riddles[randomIndex];
+            String correctAnswer = answers[randomIndex];
+            String hint = hints[randomIndex];
+
+            // Display the riddle to the user.
+            System.out.println("Riddle: " + selectedRiddle);
+
+            // Get user's answer.
+            String userAnswer = scanner.nextLine();
+
+            if (userAnswer.equalsIgnoreCase(correctAnswer)) {
+                System.out.println("Correct!");
+                score++;
+            } else {
+                // If the answer is incorrect, offer a hint.
+                System.out.println("Wrong! Would you like a hint? (yes/no)");
+                String giveHint = scanner.nextLine().toLowerCase();
+                if (giveHint.equals("yes")) {
+                    System.out.println(hint);
+                }
+            }
+
+            // Allow the user to continue or exit.
+            System.out.println("Continue playing? (yes/no)");
+            String playAgain = scanner.nextLine().toLowerCase();
+            if (!playAgain.equals("yes")) {
+                break;
+            }
+        }
+
+        // Display final score.
+        System.out.println("Your final score: " + score);
+        System.out.println("Thanks for playing!");
+    }
+}
diff --git a/Add Your Code Hs/CI.js b/Add Your Code Hs/CI.js
new file mode 100644
index 00000000..7c8bfc2b
--- /dev/null
+++ b/Add Your Code Hs/CI.js	
@@ -0,0 +1,16 @@
+function calculateCompoundInterest() {
+    // Get input values
+    var principal = parseFloat(document.getElementById("principal").value);
+    var annualRate = parseFloat(document.getElementById("annualRate").value);
+    var compoundingFrequency = parseInt(document.getElementById("compoundingFrequency").value);
+    var years = parseInt(document.getElementById("years").value);
+
+    // Calculate compound interest
+    var amount = principal * Math.pow(1 + (annualRate / compoundingFrequency), compoundingFrequency * years);
+
+    // Round the result to two decimal places
+    amount = Math.round(amount * 100) / 100;
+
+    // Display the result
+    document.getElementById("result").innerHTML = "The final amount after " + years + " years is: $" + amount;
+}
diff --git a/Add Your Code Hs/Percentage.js b/Add Your Code Hs/Percentage.js
new file mode 100644
index 00000000..8c2528a5
--- /dev/null
+++ b/Add Your Code Hs/Percentage.js	
@@ -0,0 +1,11 @@
+function calculatePercentage() {
+    // Get input values
+    var number = parseFloat(document.getElementById("number").value);
+    var percentage = parseFloat(document.getElementById("percentage").value);
+
+    // Calculate the result
+    var result = (number * percentage) / 100;
+
+    // Display the result
+    document.getElementById("result").innerHTML = percentage + "% of " + number + " is " + result;
+}
diff --git a/Add Your Code Hs/SI.html b/Add Your Code Hs/SI.html
new file mode 100644
index 00000000..f62b343c
--- /dev/null
+++ b/Add Your Code Hs/SI.html	
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Simple Interest Calculator</title>
+    <script>
+        function calculateSimpleInterest() {
+            // Get principal, rate, and time values from input fields
+            var principal = parseFloat(document.getElementById("principal").value);
+            var rate = parseFloat(document.getElementById("rate").value);
+            var time = parseFloat(document.getElementById("time").value);
+
+            // Calculate simple interest
+            var interest = (principal * rate * time) / 100;
+
+            // Display the result
+            document.getElementById("result").innerHTML = "Simple Interest: $" + interest.toFixed(2);
+        }
+    </script>
+</head>
+<body>
+    <h1>Simple Interest Calculator</h1>
+    <p>Enter the following details to calculate simple interest:</p>
+    <form>
+        <label for="principal">Principal Amount:</label>
+        <input type="number" id="principal" placeholder="Enter principal amount"><br><br>
+        
+        <label for="rate">Rate of Interest:</label>
+        <input type="number" id="rate" placeholder="Enter rate of interest"><br><br>
+        
+        <label for="time">Time (in years):</label>
+        <input type="number" id="time" placeholder="Enter time in years"><br><br>
+
+        <button type="button" onclick="calculateSimpleInterest()">Calculate</button>
+    </form>
+
+    <p id="result"></p>
+</body>
+</html>
diff --git a/Add Your Code Hs/html b/Add Your Code Hs/html
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/Add Your Code Hs/html	
@@ -0,0 +1 @@
+
diff --git a/Added CGPA Calculator in Java b/Added CGPA Calculator in Java
new file mode 100644
index 00000000..2f4f156a
--- /dev/null
+++ b/Added CGPA Calculator in Java	
@@ -0,0 +1,47 @@
+import java.util.Scanner;
+
+class CGPACalculator {
+    private double[] marks;
+
+    public CGPACalculator(double[] marks) {
+        this.marks = marks;
+    }
+
+    public double calculateCGPA() {
+        double totalGradePoints = 0.0;
+        for (double mark : marks) {
+            double grade = mark / 10.0;
+            totalGradePoints += grade;
+        }
+        return totalGradePoints / marks.length;
+    }
+
+    public double calculatePercentage() {
+        double cgpa = calculateCGPA();
+        return cgpa * 9.5;
+    }
+}
+
+public class CGPA {
+    public static void main(String[] args) {
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Enter the number of subjects:");
+        int n = sc.nextInt();
+
+        double[] marks = new double[n];
+
+        System.out.println("Enter marks:");
+        for (int i = 0; i < n; i++) {
+            marks[i] = sc.nextDouble();
+        }
+
+        CGPACalculator calculator = new CGPACalculator(marks);
+
+        double cgpa = calculator.calculateCGPA();
+        System.out.println("CGPA: " + cgpa);
+
+        double percentage = calculator.calculatePercentage();
+        System.out.println("Percentage from CGPA: " + percentage);
+    }
+}
diff --git a/Added Text Editor in Java b/Added Text Editor in Java
new file mode 100644
index 00000000..e53f1194
--- /dev/null
+++ b/Added Text Editor in Java	
@@ -0,0 +1,100 @@
+import javafx.application.Application;
+import javafx.stage.Stage;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.layout.BorderPane;
+import java.io.*;
+import java.util.Scanner;
+
+public class JavaFXTextEditor extends Application {
+    private TextArea textArea;
+    private File currentFile;
+
+    public static void main(String[] args) {
+        launch(args);
+    }
+
+    @Override
+    public void start(Stage primaryStage) {
+        primaryStage.setTitle("JavaFX Text Editor");
+
+        textArea = new TextArea();
+        textArea.setWrapText(true);
+
+        MenuBar menuBar = createMenuBar();
+
+        BorderPane layout = new BorderPane();
+        layout.setTop(menuBar);
+        layout.setCenter(textArea);
+
+        Scene scene = new Scene(layout, 800, 600);
+        primaryStage.setScene(scene);
+        primaryStage.show();
+    }
+
+    private MenuBar createMenuBar() {
+        MenuBar menuBar = new MenuBar();
+
+        // File menu
+        Menu fileMenu = new Menu("File");
+        MenuItem newFile = new MenuItem("New");
+        MenuItem openFile = new MenuItem("Open");
+        MenuItem saveFile = new MenuItem("Save");
+        MenuItem exit = new MenuItem("Exit");
+
+        newFile.setOnAction(e -> newFile());
+        openFile.setOnAction(e -> openFile());
+        saveFile.setOnAction(e -> saveFile());
+        exit.setOnAction(e -> System.exit(0));
+
+        fileMenu.getItems().addAll(newFile, openFile, saveFile, new SeparatorMenuItem(), exit);
+
+        menuBar.getMenus().add(fileMenu);
+
+        return menuBar;
+    }
+
+    private void newFile() {
+        textArea.clear();
+        currentFile = null;
+    }
+
+    private void openFile() {
+        FileChooser fileChooser = new FileChooser();
+        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files", "*.txt"));
+        File selectedFile = fileChooser.showOpenDialog(null);
+
+        if (selectedFile != null) {
+            currentFile = selectedFile;
+            try {
+                Scanner scanner = new Scanner(selectedFile);
+                StringBuilder content = new StringBuilder();
+                while (scanner.hasNext()) {
+                    content.append(scanner.nextLine()).append("\n");
+                }
+                textArea.setText(content.toString());
+                scanner.close();
+            } catch (FileNotFoundException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private void saveFile() {
+        if (currentFile == null) {
+            FileChooser fileChooser = new FileChooser();
+            fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files", "*.txt"));
+            currentFile = fileChooser.showSaveDialog(null);
+        }
+
+        if (currentFile != null) {
+            try {
+                FileWriter writer = new FileWriter(currentFile);
+                writer.write(textArea.getText());
+                writer.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/Admission-counselling-system/.classpath b/Admission-counselling-system/.classpath
new file mode 100644
index 00000000..d6d450f0
--- /dev/null
+++ b/Admission-counselling-system/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" kind="lib" path="rs2xml.jar"/>
+	<classpathentry exported="true" kind="lib" path="sqlitejdbc-v056.jar"/>
+	<classpathentry kind="output" path="build/classes"/>
+</classpath>
diff --git a/Admission-counselling-system/.gitignore b/Admission-counselling-system/.gitignore
new file mode 100644
index 00000000..68fa45d9
--- /dev/null
+++ b/Admission-counselling-system/.gitignore
@@ -0,0 +1,2 @@
+/nbproject/private/
+/build/
\ No newline at end of file
diff --git a/Admission-counselling-system/.project b/Admission-counselling-system/.project
new file mode 100644
index 00000000..ccda3b5f
--- /dev/null
+++ b/Admission-counselling-system/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Admission</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/Admission-counselling-system/Choices.png b/Admission-counselling-system/Choices.png
new file mode 100644
index 00000000..d59c6a1d
Binary files /dev/null and b/Admission-counselling-system/Choices.png differ
diff --git a/Admission-counselling-system/My Choice.png b/Admission-counselling-system/My Choice.png
new file mode 100644
index 00000000..ea124690
Binary files /dev/null and b/Admission-counselling-system/My Choice.png differ
diff --git a/Admission-counselling-system/README.md b/Admission-counselling-system/README.md
new file mode 100644
index 00000000..c5b6f111
--- /dev/null
+++ b/Admission-counselling-system/README.md
@@ -0,0 +1,5 @@
+# Online-Admission-Counselling
+This is an addmission counselling system Java Swing.
+To run this project u need to install Netbeans with (java 1.8 ) recommended .
+Just Clone / Download And run
+This Project uses File System as database.
diff --git a/Admission-counselling-system/build.xml b/Admission-counselling-system/build.xml
new file mode 100644
index 00000000..b040e3d0
--- /dev/null
+++ b/Admission-counselling-system/build.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="Admission" default="default" basedir=".">
+    <description>Builds, tests, and runs the project Admission.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar:                  JAR building
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="Admission-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/Admission-counselling-system/choices.txt b/Admission-counselling-system/choices.txt
new file mode 100644
index 00000000..fbf3185a
--- /dev/null
+++ b/Admission-counselling-system/choices.txt
@@ -0,0 +1,16 @@
+5 Choice-1: BENNETT Choice-2: SNU Choice-3: SRM Choice-4: GNIOT Choice-5: AMITY Branch-Choice-1: COMPUTER_SCIENCE Branch-Choice-2: BIOTECH Branch-Choice-3: ECE Branch-Choice-4: MECHANICAL Branch-Choice-5: ECE 
+2 Choice-1: BENNETT Choice-2: SRM Choice-3: SNU Choice-4: GNIOT Choice-5: AMITY Branch-Choice-1: BIOTECH Branch-Choice-2: CIVIL Branch-Choice-3: MECHANICAL Branch-Choice-4: ECE Branch-Choice-5: COMPUTER_SCIENCE 
+
+2 Choice-1: BENNETT Choice-2: SNU Choice-3: AMITY Choice-4: SRM Choice-5: GNIOT Branch-Choice-1: CIVIL Branch-Choice-2: BIOTECH Branch-Choice-3: MECHANICAL Branch-Choice-4: ECE Branch-Choice-5: COMPUTER_SCIENCE 
+
+3 Choice-1: GNIOT Choice-2: SRM Choice-3: GNIOT Choice-4: BENNETT Choice-5: SNU Branch-Choice-1: MECHANICAL Branch-Choice-2: ECE Branch-Choice-3: CIVIL Branch-Choice-4: MECHANICAL Branch-Choice-5: ECE 
+
+3 Choice-1: SRM Choice-2: GNIOT Choice-3: SRM Choice-4: SNU Choice-5: AMITY Branch-Choice-1: COMPUTER_SCIENCE Branch-Choice-2: MECHANICAL Branch-Choice-3: BIOTECH Branch-Choice-4: CIVIL Branch-Choice-5: BIOTECH 
+
+2 Choice-1: GNIOT Choice-2: SRM Choice-3: SNU Choice-4: BENNETT Choice-5: SRM Branch-Choice-1: COMPUTER_SCIENCE Branch-Choice-2: MECHANICAL Branch-Choice-3: ECE Branch-Choice-4: MECHANICAL Branch-Choice-5: CIVIL 
+
+2 Choice-1: BENNETT Choice-2: GNIOT Choice-3: AMITY Choice-4: SRM Choice-5: AMITY Branch-Choice-1: ECE Branch-Choice-2: MECHANICAL Branch-Choice-3: COMPUTER_SCIENCE Branch-Choice-4: BIOTECH Branch-Choice-5: CIVIL 
+
+2 Choice-1: AMITY Choice-2: GNIOT Choice-3: BENNETT Choice-4: SNU Choice-5: SRM Branch-Choice-1: COMPUTER_SCIENCE Branch-Choice-2: MECHANICAL Branch-Choice-3: ECE Branch-Choice-4: MECHANICAL Branch-Choice-5: BIOTECH 
+
+101 Choice-1: AMITY Choice-2: SNU Choice-3: AMITY Choice-4: SNU Choice-5: SRM Branch-Choice-1: ECE Branch-Choice-2: COMPUTER_SCIENCE Branch-Choice-3: BIOTECH Branch-Choice-4: ECE Branch-Choice-5: CIVIL 
diff --git a/Admission-counselling-system/dist/Admission.jar b/Admission-counselling-system/dist/Admission.jar
new file mode 100644
index 00000000..086407b4
Binary files /dev/null and b/Admission-counselling-system/dist/Admission.jar differ
diff --git a/Admission-counselling-system/dist/README.TXT b/Admission-counselling-system/dist/README.TXT
new file mode 100644
index 00000000..a7d1532c
--- /dev/null
+++ b/Admission-counselling-system/dist/README.TXT
@@ -0,0 +1,32 @@
+========================
+BUILD OUTPUT DESCRIPTION
+========================
+
+When you build an Java application project that has a main class, the IDE
+automatically copies all of the JAR
+files on the projects classpath to your projects dist/lib folder. The IDE
+also adds each of the JAR files to the Class-Path element in the application
+JAR files manifest file (MANIFEST.MF).
+
+To run the project from the command line, go to the dist folder and
+type the following:
+
+java -jar "Admission.jar" 
+
+To distribute this project, zip up the dist folder (including the lib folder)
+and distribute the ZIP file.
+
+Notes:
+
+* If two JAR files on the project classpath have the same name, only the first
+JAR file is copied to the lib folder.
+* Only JAR files are copied to the lib folder.
+If the classpath contains other types of files or folders, these files (folders)
+are not copied.
+* If a library on the projects classpath also has a Class-Path element
+specified in the manifest,the content of the Class-Path element has to be on
+the projects runtime path.
+* To set a main class in a standard Java project, right-click the project node
+in the Projects window and choose Properties. Then click Run and enter the
+class name in the Main Class field. Alternatively, you can manually type the
+class name in the manifest Main-Class element.
diff --git a/Admission-counselling-system/dist/lib/AbsoluteLayout.jar b/Admission-counselling-system/dist/lib/AbsoluteLayout.jar
new file mode 100644
index 00000000..f5b265cf
Binary files /dev/null and b/Admission-counselling-system/dist/lib/AbsoluteLayout.jar differ
diff --git a/Admission-counselling-system/dist/lib/rs2xml.jar b/Admission-counselling-system/dist/lib/rs2xml.jar
new file mode 100644
index 00000000..75d9c622
Binary files /dev/null and b/Admission-counselling-system/dist/lib/rs2xml.jar differ
diff --git a/Admission-counselling-system/dist/lib/sqlitejdbc-v056.jar b/Admission-counselling-system/dist/lib/sqlitejdbc-v056.jar
new file mode 100644
index 00000000..f95d90eb
Binary files /dev/null and b/Admission-counselling-system/dist/lib/sqlitejdbc-v056.jar differ
diff --git a/Admission-counselling-system/f.png b/Admission-counselling-system/f.png
new file mode 100644
index 00000000..a27fc08b
Binary files /dev/null and b/Admission-counselling-system/f.png differ
diff --git a/Admission-counselling-system/manifest.mf b/Admission-counselling-system/manifest.mf
new file mode 100644
index 00000000..328e8e5b
--- /dev/null
+++ b/Admission-counselling-system/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/Admission-counselling-system/nbproject/build-impl.xml b/Admission-counselling-system/nbproject/build-impl.xml
new file mode 100644
index 00000000..d0167b0d
--- /dev/null
+++ b/Admission-counselling-system/nbproject/build-impl.xml
@@ -0,0 +1,1420 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - test compilation
+  - test execution
+  - test debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="Admission-impl">
+    <fail message="Please build using Ant 1.8.0 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.8.0"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.6"/>
+        <property name="default.javac.target" value="1.6"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <property name="platform.java" value="${java.home}/bin/java"/>
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="splashscreen.available">
+            <and>
+                <not>
+                    <equals arg1="${application.splash}" arg2="" trim="true"/>
+                </not>
+                <available file="${application.splash}"/>
+            </and>
+        </condition>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="profile.available">
+            <and>
+                <isset property="javac.profile"/>
+                <length length="0" string="${javac.profile}" when="greater"/>
+                <matches pattern="((1\.[89])|9)(\..*)?" string="${javac.source}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <or>
+                <not>
+                    <istrue value="${jar.archive.disabled}"/>
+                </not>
+                <istrue value="${not.archive.disabled}"/>
+            </or>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="do.archive"/>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+main.class.available">
+            <and>
+                <isset property="main.class.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+splashscreen.available">
+            <and>
+                <isset property="splashscreen.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+profile.available">
+            <and>
+                <isset property="profile.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="run.jvmargs.ide" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <property name="manifest.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <and>
+                <isset property="endorsed.classpath"/>
+                <not>
+                    <equals arg1="${endorsed.classpath}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
+            <isset property="profile.available"/>
+        </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="javac.fork">
+            <or>
+                <istrue value="${jdkBug6558476}"/>
+                <istrue value="${javac.external.vm}"/>
+            </or>
+        </condition>
+        <property name="jar.index" value="false"/>
+        <property name="jar.index.metainf" value="${jar.index}"/>
+        <property name="copylibs.rebase" value="true"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="junit.available">
+            <or>
+                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
+                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
+            </or>
+        </condition>
+        <condition property="testng.available">
+            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
+        </condition>
+        <condition property="junit+testng.available">
+            <and>
+                <istrue value="${junit.available}"/>
+                <istrue value="${testng.available}"/>
+            </and>
+        </condition>
+        <condition else="testng" property="testng.mode" value="mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <condition else="" property="testng.debug.mode" value="-mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <property name="java.failonerror" value="true"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete>
+                    <fileset file="${javac.includesfile.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-init">
+        <condition else="false" property="nb.junit.batch" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <not>
+                    <isset property="test.method"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="nb.junit.single" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <isset property="test.method"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-init-test-properties">
+        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
+        <property name="test.binarytestincludes" value=""/>
+        <property name="test.binaryexcludes" value=""/>
+    </target>
+    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+    <target if="${testng.available}" name="-init-macrodef-testng">
+        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
+                    <isset property="test.method"/>
+                </condition>
+                <union id="test.set">
+                    <fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
+                        <filename name="@{testincludes}"/>
+                    </fileset>
+                </union>
+                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="Admission" testname="TestNG tests" workingDir="${work.dir}">
+                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+                    <propertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </propertyset>
+                    <customize/>
+                </testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-test-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <echo>No tests executed.</echo>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
+        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <sequential>
+                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${testng.available}" name="-init-macrodef-testng-debug">
+        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element name="customize2" optional="true"/>
+            <sequential>
+                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
+                    <isset property="test.method"/>
+                </condition>
+                <condition else="-suitename Admission -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+                    <matches pattern=".*\.xml" string="@{testClass}"/>
+                </condition>
+                <delete dir="${build.test.results.dir}" quiet="true"/>
+                <mkdir dir="${build.test.results.dir}"/>
+                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
+                    <customize>
+                        <customize2/>
+                        <jvmarg value="-ea"/>
+                        <arg line="${testng.debug.mode}"/>
+                        <arg line="-d ${build.test.results.dir}"/>
+                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
+                        <arg line="${testng.cmd.args}"/>
+                    </customize>
+                </j2seproject3:debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
+        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element implicit="true" name="customize2" optional="true"/>
+            <sequential>
+                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2/>
+                </j2seproject3:testng-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2>
+                        <syspropertyset>
+                            <propertyref prefix="test-sys-prop."/>
+                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                        </syspropertyset>
+                    </customize2>
+                </j2seproject3:testng-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
+    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
+        <macrodef name="resolve">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${env.@{value}}"/>
+            </sequential>
+        </macrodef>
+        <macrodef name="profile">
+            <attribute default="${main.class}" name="classname"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property environment="env"/>
+                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
+                <java classname="@{classname}" dir="${profiler.info.dir}" failonerror="${java.failonerror}" fork="true" jvm="${profiler.info.jvm}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
+                    <jvmarg line="${profiler.info.jvmargs}"/>
+                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+                    <arg line="${application.args}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
+        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
+        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
+    </target>
+    <!--
+                end of pre NB7.2 profiling section
+            -->
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <attribute default="jvm" name="jvm"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${manifest.file}" name="manifest"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <filtermapper>
+                            <replacestring from=" " to="%20"/>
+                        </filtermapper>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" manifestencoding="UTF-8" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifestencoding="UTF-8">
+                <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: Admission was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <touch file="${tmp.manifest.file}" verbose="false"/>
+    </target>
+    <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <copy encoding="${manifest.encoding}" file="${manifest.file}" outputencoding="UTF-8" tofile="${tmp.manifest.file}"/>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="Profile" value="${javac.profile}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+        </manifest>
+    </target>
+    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
+        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
+        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
+        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
+            <isset property="main.class.available"/>
+        </condition>
+        <condition else="debug" property="jar.usage.level" value="info">
+            <isset property="main.class.available"/>
+        </condition>
+        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
+    </target>
+    <target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
+        <delete>
+            <fileset file="${tmp.manifest.file}"/>
+        </delete>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest" name="-do-jar-without-libraries"/>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest" name="-do-jar-with-libraries"/>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                =================
+                PROFILING SECTION
+                =================
+            -->
+    <!--
+                pre NB7.2 profiler integration
+            -->
+    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile/>
+    </target>
+    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
+        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="${profile.class}"/>
+    </target>
+    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </profile>
+    </target>
+    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <test name="${profile.class}"/>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+            <syspropertyset>
+                <propertyref prefix="test-sys-prop."/>
+                <mapper from="test-sys-prop.*" to="*" type="glob"/>
+            </syspropertyset>
+            <formatter type="brief" usefile="false"/>
+            <formatter type="xml"/>
+        </junit>
+    </target>
+    <!--
+                end of pre NB72 profiling section
+            -->
+    <target if="netbeans.home" name="-profile-check">
+        <condition property="profiler.configured">
+            <or>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
+            </or>
+        </condition>
+    </target>
+    <target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
+        <startprofiler/>
+        <antcall target="run"/>
+    </target>
+    <target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-single"/>
+    </target>
+    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
+    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <startprofiler/>
+        <antcall target="test-single"/>
+    </target>
+    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-test-with-main"/>
+    </target>
+    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <startprofiler/>
+        <antcall target="run-applet"/>
+    </target>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
+            <and>
+                <isset property="endorsed.classpath.cmd.line.arg"/>
+                <not>
+                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="bug5101868workaround" value="*.java">
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
+        </condition>
+        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${bug5101868workaround},${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+                <exclude name="*.java"/>
+            </fileset>
+            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                TEST COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                TEST EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+    <!--
+                =======================
+                TEST DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: Admission was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <and>
+                <not>
+                    <isset property="already.built.${call.subproject}"/>
+                </not>
+                <available file="${call.script}"/>
+            </and>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/Admission-counselling-system/nbproject/genfiles.properties b/Admission-counselling-system/nbproject/genfiles.properties
new file mode 100644
index 00000000..70cc4d01
--- /dev/null
+++ b/Admission-counselling-system/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=3fa495eb
+build.xml.script.CRC32=6c4ba5e8
+build.xml.stylesheet.CRC32=8064a381@1.80.1.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=3fa495eb
+nbproject/build-impl.xml.script.CRC32=f737ad99
+nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
diff --git a/Admission-counselling-system/nbproject/project.properties b/Admission-counselling-system/nbproject/project.properties
new file mode 100644
index 00000000..8d59df2e
--- /dev/null
+++ b/Admission-counselling-system/nbproject/project.properties
@@ -0,0 +1,81 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=Admission
+application.vendor=Hyrex
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# Files in build.classes.dir which should be excluded from distribution jar
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/Admission.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.rs2xml.jar=rs2xml.jar
+file.reference.sqlitejdbc-v056.jar=sqlitejdbc-v056.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${file.reference.sqlitejdbc-v056.jar}:\
+    ${file.reference.rs2xml.jar}:\
+    ${libs.absolutelayout.classpath}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.external.vm=true
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+javac.test.processorpath=\
+    ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=student.information.system.Login
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/Admission-counselling-system/nbproject/project.xml b/Admission-counselling-system/nbproject/project.xml
new file mode 100644
index 00000000..480d9208
--- /dev/null
+++ b/Admission-counselling-system/nbproject/project.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>Admission</name>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
diff --git a/Admission-counselling-system/output.txt b/Admission-counselling-system/output.txt
new file mode 100644
index 00000000..171d369f
--- /dev/null
+++ b/Admission-counselling-system/output.txt
@@ -0,0 +1,5 @@
+xkvn gndlh 22/1/1998 1 poadpiofs@gmail.com 98981100123 dasdg;m; csdondfohnfgo 65 2016001 
+Pawan gndlh 22/1/1998 2 poadpiofs@gmail.com 98981100123 dasdg;m; csdondfohnfgo 70 2016001 
+Saksham gndlh 22/1/1998 3 poadpiofs@gmail.com 98981100123 dasdg;m; csdondfohnfgo 80 2016001 
+Chandra basaa 14/09/98 5 basaaa@gmail.com 321455698 s13,gdfl hsgdgau 98 201310 
+yugesh verma 22/1/1996 101 yugesh@gmail.com 6263056779 da sdg;m; csdondfohnfgo zwenlfnsf,,vs 2016001 
\ No newline at end of file
diff --git a/Admission-counselling-system/rs2xml.jar b/Admission-counselling-system/rs2xml.jar
new file mode 100644
index 00000000..75d9c622
Binary files /dev/null and b/Admission-counselling-system/rs2xml.jar differ
diff --git a/Admission-counselling-system/sqlitejdbc-v056.jar b/Admission-counselling-system/sqlitejdbc-v056.jar
new file mode 100644
index 00000000..f95d90eb
Binary files /dev/null and b/Admission-counselling-system/sqlitejdbc-v056.jar differ
diff --git a/Admission-counselling-system/src/student/information/system/Audit_details.form b/Admission-counselling-system/src/student/information/system/Audit_details.form
new file mode 100644
index 00000000..e756c91c
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Audit_details.form
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+          </Group>
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jPanel4" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace min="-2" pref="20" max="-2" attributes="0"/>
+              <Component id="jPanel4" min="-2" max="-2" attributes="0"/>
+              <EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
+              <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel3">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="Login_Record">
+              <Font PropertyName="font" name="Adobe Arabic" size="14" style="1"/>
+            </TitledBorder>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jScrollPane3" pref="557" max="32767" attributes="0"/>
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jScrollPane3" pref="327" max="32767" attributes="0"/>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Container class="javax.swing.JScrollPane" name="jScrollPane3">
+          <AuxValues>
+            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+          </AuxValues>
+
+          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+          <SubComponents>
+            <Component class="javax.swing.JTable" name="tbl_3">
+              <Properties>
+                <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
+                  <Table columnCount="4" rowCount="4">
+                    <Column editable="true" title="Title 1" type="java.lang.Object"/>
+                    <Column editable="true" title="Title 2" type="java.lang.Object"/>
+                    <Column editable="true" title="Title 3" type="java.lang.Object"/>
+                    <Column editable="true" title="Title 4" type="java.lang.Object"/>
+                  </Table>
+                </Property>
+              </Properties>
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/erase-128.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Reset"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JPanel" name="jPanel4">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="Search">
+              <Font PropertyName="font" name="Adobe Arabic" size="14" style="1"/>
+            </TitledBorder>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                  <Component id="txt_search" max="32767" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_search" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="ID:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_search">
+          <Events>
+            <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txt_searchKeyReleased"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/Audit_details.java b/Admission-counselling-system/src/student/information/system/Audit_details.java
new file mode 100644
index 00000000..fc5fec30
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Audit_details.java
@@ -0,0 +1,281 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+import javax.swing.JOptionPane;
+import java.awt.*;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import javax.swing.*;
+import net.proteanit.sql.DbUtils;
+
+/**
+ *
+ * @author Hyrex
+ */
+public class Audit_details extends javax.swing.JFrame {
+Connection conn=null;
+ResultSet rs=null;
+PreparedStatement pst=null;
+    /**
+     * Creates new form Audit_details
+     */
+    public Audit_details() {
+        initComponents();
+        conn=db.java_db();
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+
+        Update_table3();
+      
+    }
+   
+
+    private void Update_table3() {
+    try{
+        
+        
+        String sql ="select * from Audit";
+        
+        pst=conn.prepareStatement(sql);
+        rs=pst.executeQuery();
+        tbl_3.setModel(DbUtils.resultSetToTableModel(rs)); 
+
+    }
+    catch(Exception e){
+    JOptionPane.showMessageDialog(null, e);
+    }
+    finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }
+            catch(Exception e){
+                
+            }
+        }
+    }
+     
+    
+    
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel3 = new javax.swing.JPanel();
+        jScrollPane3 = new javax.swing.JScrollPane();
+        tbl_3 = new javax.swing.JTable();
+        jButton1 = new javax.swing.JButton();
+        jPanel4 = new javax.swing.JPanel();
+        jLabel2 = new javax.swing.JLabel();
+        txt_search = new javax.swing.JTextField();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        setResizable(false);
+
+        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Login_Record", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Adobe Arabic", 1, 14))); // NOI18N
+
+        tbl_3.setModel(new javax.swing.table.DefaultTableModel(
+            new Object [][] {
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null},
+                {null, null, null, null}
+            },
+            new String [] {
+                "Title 1", "Title 2", "Title 3", "Title 4"
+            }
+        ));
+        jScrollPane3.setViewportView(tbl_3);
+
+        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/erase-128.png"))); // NOI18N
+        jButton1.setText("Reset");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+        jPanel3.setLayout(jPanel3Layout);
+        jPanel3Layout.setHorizontalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel3Layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 557, Short.MAX_VALUE)
+                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+                        .addGap(0, 0, Short.MAX_VALUE)
+                        .addComponent(jButton1)))
+                .addContainerGap())
+        );
+        jPanel3Layout.setVerticalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel3Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 327, Short.MAX_VALUE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addComponent(jButton1)
+                .addGap(6, 6, 6))
+        );
+
+        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Search", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Adobe Arabic", 1, 14))); // NOI18N
+
+        jLabel2.setText("ID:");
+
+        txt_search.addKeyListener(new java.awt.event.KeyAdapter() {
+            public void keyReleased(java.awt.event.KeyEvent evt) {
+                txt_searchKeyReleased(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
+        jPanel4.setLayout(jPanel4Layout);
+        jPanel4Layout.setHorizontalGroup(
+            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel4Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel2)
+                .addGap(18, 18, 18)
+                .addComponent(txt_search)
+                .addContainerGap())
+        );
+        jPanel4Layout.setVerticalGroup(
+            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel4Layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_search, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel2))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(0, 0, Short.MAX_VALUE))
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGap(20, 20, 20)
+                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(26, 26, 26)
+                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void txt_searchKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_searchKeyReleased
+        // TODO add your handling code here:
+         try{
+            
+            String sql ="select * from Audit where emp_id=? ";
+           
+            
+            pst=conn.prepareStatement(sql); 
+            pst.setString(1,txt_search.getText()); 
+            rs=pst.executeQuery();
+            tbl_3.setModel(DbUtils.resultSetToTableModel(rs)); 
+           
+       
+            
+        }catch(Exception e){
+            JOptionPane.showMessageDialog(null, e);
+        }
+        finally {
+            
+            try{
+                
+                rs.close();
+                pst.close();
+
+            }
+            catch(Exception e){
+                
+            }
+         } 
+         
+         
+        
+    }//GEN-LAST:event_txt_searchKeyReleased
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        // TODO add your handling code here:
+        
+        Update_table3();
+        txt_search.setText("");
+
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(Audit_details.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(Audit_details.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(Audit_details.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(Audit_details.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new Audit_details().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton jButton1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JPanel jPanel3;
+    private javax.swing.JPanel jPanel4;
+    private javax.swing.JScrollPane jScrollPane3;
+    private javax.swing.JTable tbl_3;
+    private javax.swing.JTextField txt_search;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/src/student/information/system/Choice.form b/Admission-counselling-system/src/student/information/system/Choice.form
new file mode 100644
index 00000000..e2d8336a
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Choice.form
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-43,0,0,3,116"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+    <Property name="useNullLayout" type="boolean" value="false"/>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="CHOICES">
+              <Border PropertyName="innerBorder" info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
+                <LineBorder thickness="4"/>
+              </Border>
+              <Font PropertyName="font" name="Tahoma" size="24" style="1"/>
+            </TitledBorder>
+          </Border>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="40" y="20" width="830" height="670"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="23" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Group type="103" groupAlignment="0" attributes="0">
+                                      <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                                          <Component id="jLabel3" alignment="0" pref="95" max="32767" attributes="0"/>
+                                          <Component id="jLabel2" alignment="0" max="32767" attributes="0"/>
+                                      </Group>
+                                      <Component id="jLabel4" alignment="0" min="-2" pref="82" max="-2" attributes="0"/>
+                                      <Component id="jLabel5" alignment="0" min="-2" pref="82" max="-2" attributes="0"/>
+                                      <Component id="jLabel6" alignment="0" min="-2" pref="82" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                      <Component id="jComboBox1" max="32767" attributes="0"/>
+                                      <Component id="jComboBox2" pref="136" max="32767" attributes="0"/>
+                                      <Component id="jComboBox3" max="32767" attributes="0"/>
+                                      <Component id="jComboBox4" alignment="0" max="32767" attributes="0"/>
+                                      <Component id="jComboBox5" max="32767" attributes="0"/>
+                                  </Group>
+                              </Group>
+                          </Group>
+                          <EmptySpace pref="223" max="32767" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="1" attributes="0">
+                          <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                          <Component id="jButton1" min="-2" pref="99" max="-2" attributes="0"/>
+                          <EmptySpace max="32767" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel7" alignment="0" min="-2" max="-2" attributes="0"/>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="1" max="-2" attributes="0">
+                              <Component id="jLabel12" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jLabel11" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jLabel10" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jLabel9" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jLabel8" alignment="0" pref="85" max="32767" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                              <Component id="jComboBox6" max="32767" attributes="0"/>
+                              <Component id="jComboBox7" max="32767" attributes="0"/>
+                              <Component id="jComboBox8" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jComboBox9" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jComboBox10" alignment="0" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <Group type="102" attributes="0">
+                          <EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
+                          <Component id="Print" min="-2" pref="118" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace min="-2" pref="23" max="-2" attributes="0"/>
+              </Group>
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="164" max="-2" attributes="0"/>
+                  <Component id="jLabel13" min="-2" pref="126" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="104" max="-2" attributes="0"/>
+                  <Component id="jTextField1" min="-2" pref="125" max="-2" attributes="0"/>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Component id="jLabel13" pref="36" max="32767" attributes="0"/>
+                      <Component id="jTextField1" max="32767" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox6" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="49" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox2" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox7" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="53" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox3" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel10" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox8" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="66" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox4" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox9" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="63" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox5" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel12" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jComboBox10" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace pref="61" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="Print" alignment="3" min="-2" pref="38" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="46" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Select your college"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 1"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox1">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="BENNETT"/>
+                <StringItem index="2" value="AMITY"/>
+                <StringItem index="3" value="SNU"/>
+                <StringItem index="4" value="GNIOT"/>
+                <StringItem index="5" value="SRM"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel3">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 2"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="BENNETT"/>
+                <StringItem index="2" value="SNU"/>
+                <StringItem index="3" value="SRM"/>
+                <StringItem index="4" value="GNIOT"/>
+                <StringItem index="5" value="AMITY"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel4">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 3"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox3">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="BENNETT"/>
+                <StringItem index="2" value="AMITY"/>
+                <StringItem index="3" value="SNU"/>
+                <StringItem index="4" value="SRM"/>
+                <StringItem index="5" value="GNIOT"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel5">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 4"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox4">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="BENNETT"/>
+                <StringItem index="2" value="SNU"/>
+                <StringItem index="3" value="SRM"/>
+                <StringItem index="4" value="GNIOT"/>
+                <StringItem index="5" value="AMITY"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel6">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 5"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox5">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="BENNETT"/>
+                <StringItem index="2" value="SNU"/>
+                <StringItem index="3" value="SRM"/>
+                <StringItem index="4" value="AMITY"/>
+                <StringItem index="5" value="GNIOT"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel7">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Select your branch"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel8">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 1"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox6">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="COMPUTER_SCIENCE"/>
+                <StringItem index="2" value="ECE"/>
+                <StringItem index="3" value="MECHANICAL"/>
+                <StringItem index="4" value="CIVIL"/>
+                <StringItem index="5" value="BIOTECH"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox6ActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel9">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 2"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox7">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="COMPUTER_SCIENCE"/>
+                <StringItem index="2" value="MECHANICAL"/>
+                <StringItem index="3" value="ECE"/>
+                <StringItem index="4" value="CIVIL"/>
+                <StringItem index="5" value="BIOTECH"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel10">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 3"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox8">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="select"/>
+                <StringItem index="1" value="COMPUTER_SCIENCE"/>
+                <StringItem index="2" value="ECE"/>
+                <StringItem index="3" value="MECHANICAL"/>
+                <StringItem index="4" value="BIOTECH"/>
+                <StringItem index="5" value="CIVIL"/>
+              </StringArray>
+            </Property>
+            <Property name="toolTipText" type="java.lang.String" value=""/>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel11">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 4"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox9">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="COMPUTER_SCIENCE"/>
+                <StringItem index="2" value="ECE"/>
+                <StringItem index="3" value="MECHANICAL"/>
+                <StringItem index="4" value="CIVIL"/>
+                <StringItem index="5" value="BIOTECH"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel12">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Choice 5"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="jComboBox10">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="6">
+                <StringItem index="0" value="Select"/>
+                <StringItem index="1" value="COMPUTER_SCIENCE"/>
+                <StringItem index="2" value="ECE"/>
+                <StringItem index="3" value="MECHANICAL"/>
+                <StringItem index="4" value="CIVIL"/>
+                <StringItem index="5" value="BIOTECH"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="OK"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="Print">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Print"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="PrintActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel13">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Dialog" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Student ID"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="jTextField1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jTextField1"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jTextField1ActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/Choice.java b/Admission-counselling-system/src/student/information/system/Choice.java
new file mode 100644
index 00000000..a2356733
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Choice.java
@@ -0,0 +1,408 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.awt.Component;
+import java.awt.HeadlessException;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.imageio.ImageIO;
+
+/**
+ *
+ */
+public class Choice extends javax.swing.JFrame {
+
+    /**
+     * Creates new form Choice
+     */
+    public Choice() {
+        initComponents();
+    }
+    public Choice(String dat){
+    initComponents();
+    this.jTextField1.setText(dat);
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel1 = new javax.swing.JPanel();
+        jLabel1 = new javax.swing.JLabel();
+        jLabel2 = new javax.swing.JLabel();
+        jComboBox1 = new javax.swing.JComboBox<>();
+        jLabel3 = new javax.swing.JLabel();
+        jComboBox2 = new javax.swing.JComboBox<>();
+        jLabel4 = new javax.swing.JLabel();
+        jComboBox3 = new javax.swing.JComboBox<>();
+        jLabel5 = new javax.swing.JLabel();
+        jComboBox4 = new javax.swing.JComboBox<>();
+        jLabel6 = new javax.swing.JLabel();
+        jComboBox5 = new javax.swing.JComboBox<>();
+        jLabel7 = new javax.swing.JLabel();
+        jLabel8 = new javax.swing.JLabel();
+        jComboBox6 = new javax.swing.JComboBox<>();
+        jLabel9 = new javax.swing.JLabel();
+        jComboBox7 = new javax.swing.JComboBox<>();
+        jLabel10 = new javax.swing.JLabel();
+        jComboBox8 = new javax.swing.JComboBox<>();
+        jLabel11 = new javax.swing.JLabel();
+        jComboBox9 = new javax.swing.JComboBox<>();
+        jLabel12 = new javax.swing.JLabel();
+        jComboBox10 = new javax.swing.JComboBox<>();
+        jButton1 = new javax.swing.JButton();
+        Print = new javax.swing.JButton();
+        jLabel13 = new javax.swing.JLabel();
+        jTextField1 = new javax.swing.JTextField();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 4), "CHOICES", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 24))); // NOI18N
+
+        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel1.setText("Select your college");
+
+        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel2.setText("Choice 1");
+
+        jComboBox1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "BENNETT", "AMITY", "SNU", "GNIOT", "SRM" }));
+
+        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel3.setText("Choice 2");
+
+        jComboBox2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox2.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "BENNETT", "SNU", "SRM", "GNIOT", "AMITY" }));
+
+        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel4.setText("Choice 3");
+
+        jComboBox3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox3.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "BENNETT", "AMITY", "SNU", "SRM", "GNIOT" }));
+
+        jLabel5.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel5.setText("Choice 4");
+
+        jComboBox4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox4.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "BENNETT", "SNU", "SRM", "GNIOT", "AMITY" }));
+
+        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel6.setText("Choice 5");
+
+        jComboBox5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox5.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "BENNETT", "SNU", "SRM", "AMITY", "GNIOT" }));
+
+        jLabel7.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel7.setText("Select your branch");
+
+        jLabel8.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel8.setText("Choice 1");
+
+        jComboBox6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox6.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "COMPUTER_SCIENCE", "ECE", "MECHANICAL", "CIVIL", "BIOTECH" }));
+        jComboBox6.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jComboBox6ActionPerformed(evt);
+            }
+        });
+
+        jLabel9.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel9.setText("Choice 2");
+
+        jComboBox7.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox7.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "COMPUTER_SCIENCE", "MECHANICAL", "ECE", "CIVIL", "BIOTECH" }));
+
+        jLabel10.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel10.setText("Choice 3");
+
+        jComboBox8.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox8.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "select", "COMPUTER_SCIENCE", "ECE", "MECHANICAL", "BIOTECH", "CIVIL" }));
+        jComboBox8.setToolTipText("");
+
+        jLabel11.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel11.setText("Choice 4");
+
+        jComboBox9.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox9.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "COMPUTER_SCIENCE", "ECE", "MECHANICAL", "CIVIL", "BIOTECH" }));
+
+        jLabel12.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jLabel12.setText("Choice 5");
+
+        jComboBox10.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jComboBox10.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Select", "COMPUTER_SCIENCE", "ECE", "MECHANICAL", "CIVIL", "BIOTECH" }));
+
+        jButton1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jButton1.setText("OK");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        Print.setText("Print");
+        Print.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                PrintActionPerformed(evt);
+            }
+        });
+
+        jLabel13.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N
+        jLabel13.setText("Student ID");
+
+        jTextField1.setText("jTextField1");
+        jTextField1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jTextField1ActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addGap(23, 23, 23)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel1)
+                            .addGroup(jPanel1Layout.createSequentialGroup()
+                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                                        .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
+                                        .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                                    .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))
+                                .addGap(18, 18, 18)
+                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                    .addComponent(jComboBox1, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .addComponent(jComboBox2, 0, 136, Short.MAX_VALUE)
+                                    .addComponent(jComboBox3, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .addComponent(jComboBox4, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                    .addComponent(jComboBox5, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 223, Short.MAX_VALUE))
+                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
+                        .addGap(0, 0, Short.MAX_VALUE)
+                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel7)
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                            .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE))
+                        .addGap(32, 32, 32)
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                            .addComponent(jComboBox6, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jComboBox7, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jComboBox8, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jComboBox9, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(jComboBox10, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGap(26, 26, 26)
+                        .addComponent(Print, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addGap(23, 23, 23))
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addGap(164, 164, 164)
+                .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(104, 104, 104)
+                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel1)
+                    .addComponent(jLabel7))
+                .addGap(18, 18, 18)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                    .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE)
+                    .addComponent(jTextField1))
+                .addGap(29, 29, 29)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel2)
+                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel8)
+                    .addComponent(jComboBox6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(49, 49, 49)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel3)
+                    .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel9)
+                    .addComponent(jComboBox7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(53, 53, 53)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel4)
+                    .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel10)
+                    .addComponent(jComboBox8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(66, 66, 66)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel5)
+                    .addComponent(jComboBox4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel11)
+                    .addComponent(jComboBox9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(63, 63, 63)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel6)
+                    .addComponent(jComboBox5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel12)
+                    .addComponent(jComboBox10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jButton1)
+                    .addComponent(Print, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(46, 46, 46))
+        );
+
+        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 20, 830, 670));
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jComboBox6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox6ActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_jComboBox6ActionPerformed
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+String t1=jTextField1.getText();
+        String c1 = jComboBox1.getSelectedItem().toString();
+String c2 = jComboBox2.getSelectedItem().toString();
+String c3 = jComboBox3.getSelectedItem().toString();
+String c4 = jComboBox4.getSelectedItem().toString();
+String c5 = jComboBox5.getSelectedItem().toString();
+String b1 = jComboBox6.getSelectedItem().toString();
+String b2 = jComboBox7.getSelectedItem().toString();
+String b3= jComboBox8.getSelectedItem().toString();
+String b4 = jComboBox9.getSelectedItem().toString();
+String b5 = jComboBox10.getSelectedItem().toString();
+        ChoicesData ch;
+        try {
+            ch = new ChoicesData(t1,c1,c2,c3,c4,c5,b1,b2,b3,b4,b5);
+        } catch (HeadlessException ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IOException ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+        try {
+            // TODO add your handling code here:
+            new CounsellingResult(String.valueOf(this.jTextField1.getText())).setVisible(true);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        }
+  this.setVisible(false);
+    }//GEN-LAST:event_jButton1ActionPerformed
+public static BufferedImage getScreenShot(Component component){
+BufferedImage image =new BufferedImage(component.getWidth(),component.getHeight(),BufferedImage.TYPE_INT_RGB);
+component.paint(image.getGraphics());
+return image;
+}                                        
+public static void SaveScreenShot(Component component,String filename)throws Exception{
+BufferedImage img = getScreenShot(component);
+       ImageIO.write(img, "png", new File(filename));}
+    private void PrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PrintActionPerformed
+        // TODO add your handling code here:
+          try{       // TODO add your handling code here:
+SaveScreenShot(jPanel1,"Choices.png");
+        } 
+ catch (Exception ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }//GEN-LAST:event_PrintActionPerformed
+
+    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed
+        try {
+            // TODO add your handling code here:
+            new CounsellingResult(String.valueOf(jTextField1.getText())).setVisible(true);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        this.setVisible(false);
+    }//GEN-LAST:event_jTextField1ActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(Choice.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(Choice.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(Choice.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(Choice.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new Choice().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton Print;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JComboBox<String> jComboBox1;
+    private javax.swing.JComboBox<String> jComboBox10;
+    private javax.swing.JComboBox<String> jComboBox2;
+    private javax.swing.JComboBox<String> jComboBox3;
+    private javax.swing.JComboBox<String> jComboBox4;
+    private javax.swing.JComboBox<String> jComboBox5;
+    private javax.swing.JComboBox<String> jComboBox6;
+    private javax.swing.JComboBox<String> jComboBox7;
+    private javax.swing.JComboBox<String> jComboBox8;
+    private javax.swing.JComboBox<String> jComboBox9;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel10;
+    private javax.swing.JLabel jLabel11;
+    private javax.swing.JLabel jLabel12;
+    private javax.swing.JLabel jLabel13;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JLabel jLabel7;
+    private javax.swing.JLabel jLabel8;
+    private javax.swing.JLabel jLabel9;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JTextField jTextField1;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/src/student/information/system/ChoicesData.java b/Admission-counselling-system/src/student/information/system/ChoicesData.java
new file mode 100644
index 00000000..3e7e1e8a
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/ChoicesData.java
@@ -0,0 +1,69 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.awt.HeadlessException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import static student.information.system.StudentData.newWriter;
+
+/**
+ *
+ * @author pawan saxena
+ */
+    public class ChoicesData {
+    public static Writer ChoicesWriter,SortWriter;
+
+        String cChoice1;
+    String cChoice2;
+    String cChoice3;
+    String cChoice4;
+    String cChoice5;
+    String bChoice1;
+    String bChoice2;
+    String bChoice3;
+    String bChoice4;
+    String bChoice5;
+    
+    
+
+    ChoicesData(String stud,String cChoice1, String cChoice2, String cChoice3, String cChoice4, String cChoice5, String bChoice1, String bChoice2, String bChoice3, String bChoice4, String bChoice5) throws HeadlessException, IOException {
+        this.cChoice1 = cChoice1;
+        this.cChoice2 = cChoice2;
+        this.cChoice3 = cChoice3;
+        this.cChoice4 = cChoice4;
+        this.cChoice5 = cChoice5;
+        this.bChoice1 = bChoice1;
+        this.bChoice2 = bChoice2;
+        this.bChoice3 = bChoice3;
+        this.bChoice4 = bChoice4;
+        this.bChoice5 = bChoice5;
+        Store(stud);
+    }
+
+public void Store(String txt) throws IOException{
+ChoicesWriter= new FileWriter("choices.txt",true);
+    ChoicesWriter.write(System.lineSeparator());
+        String value1 = this.cChoice1;
+                String value2 = this.cChoice2;
+                String value3 = this.cChoice3;
+                String value4 = this.cChoice4;
+                String value5 = this.cChoice5;
+                String value6 = this.bChoice1;
+                String value7 = this.bChoice2;
+                String value8 = this.bChoice3;
+                String value9= this.bChoice4;
+                String value10 = this.bChoice5;
+ChoicesWriter.write(txt+" Choice-1: "+value1+" Choice-2: "+value2+" Choice-3: "+value3+" Choice-4: "+value4+" Choice-5: "+value5+" Branch-Choice-1: "+value6+" Branch-Choice-2: "+value7+" Branch-Choice-3: "+value8+" Branch-Choice-4: "+value9+" Branch-Choice-5: "+value10+" ");
+                 ChoicesWriter.write(System.lineSeparator());
+
+
+             ChoicesWriter.flush();
+             ChoicesWriter.close();
+
+}
+}
diff --git a/Admission-counselling-system/src/student/information/system/CounsellingResult.form b/Admission-counselling-system/src/student/information/system/CounsellingResult.form
new file mode 100644
index 00000000..220893eb
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/CounsellingResult.form
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-21,0,0,3,-125"/>
+  </AuxValues>
+
+  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+    <Property name="useNullLayout" type="boolean" value="false"/>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
+            <LineBorder thickness="3"/>
+          </Border>
+        </Property>
+      </Properties>
+      <Constraints>
+        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+          <AbsoluteConstraints x="20" y="20" width="860" height="460"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace min="-2" pref="308" max="-2" attributes="0"/>
+                          <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="260" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                  <Component id="jLabel4" alignment="0" min="-2" pref="160" max="-2" attributes="0"/>
+                                  <Component id="jLabel3" alignment="0" min="-2" pref="132" max="-2" attributes="0"/>
+                                  <Component id="jLabel5" max="32767" attributes="0"/>
+                                  <Component id="jLabel6" alignment="0" max="32767" attributes="0"/>
+                              </Group>
+                              <Component id="jButton1" min="-2" pref="88" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="45" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                              <Component id="jTextField2" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jTextField1" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jTextField3" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jTextField4" alignment="0" max="32767" attributes="0"/>
+                              <Component id="jButton2" alignment="0" pref="200" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <EmptySpace pref="160" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="21" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel1" min="-2" pref="33" max="-2" attributes="0"/>
+                      <Component id="jLabel2" min="-2" pref="48" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="57" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jTextField1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jTextField2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                      <Component id="jTextField3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="37" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
+                      <Component id="jTextField4" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace pref="45" max="32767" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jButton2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="COUNSELLING RESULT"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel3">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Name"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="jTextField1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jTextField1"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jTextField1ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel4">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Student ID"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="jTextField2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jTextField2"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jTextField2ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel5">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="College Allotted"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="jTextField3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jTextField3"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel6">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="24" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Branch Allotted"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="jTextField4">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="jTextField4"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jTextField4ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="ok"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="18" style="1"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Save as Image"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/CounsellingResult.java b/Admission-counselling-system/src/student/information/system/CounsellingResult.java
new file mode 100644
index 00000000..cf975be3
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/CounsellingResult.java
@@ -0,0 +1,338 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.awt.Component;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.imageio.ImageIO;
+
+/**
+ *
+ * @author HP
+ */
+public class CounsellingResult extends javax.swing.JFrame {
+
+    /**
+     * Creates new form CounsellingResult
+     */
+    public CounsellingResult() {
+        initComponents();
+    }
+    public CounsellingResult(String value) throws FileNotFoundException {
+        initComponents();
+       this.jTextField2.setText(value);
+       File f = new File("output.txt");
+       Scanner sc =new Scanner(f);
+       while(sc.hasNextLine()){
+    String data = sc.nextLine();
+String variable[] = data.split("\\s+");
+String p=variable[3];
+      if(p.equals(value)){
+         
+
+      this.jTextField1.setText(variable[0]+" "+variable[1]);
+     
+    
+     
+     
+      }}}
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel1 = new javax.swing.JPanel();
+        jLabel1 = new javax.swing.JLabel();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel3 = new javax.swing.JLabel();
+        jTextField1 = new javax.swing.JTextField();
+        jLabel4 = new javax.swing.JLabel();
+        jTextField2 = new javax.swing.JTextField();
+        jLabel5 = new javax.swing.JLabel();
+        jTextField3 = new javax.swing.JTextField();
+        jLabel6 = new javax.swing.JLabel();
+        jTextField4 = new javax.swing.JTextField();
+        jButton1 = new javax.swing.JButton();
+        jButton2 = new javax.swing.JButton();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+        jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 3));
+
+        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel2.setText("COUNSELLING RESULT");
+
+        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel3.setText("Name");
+
+        jTextField1.setText("jTextField1");
+        jTextField1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jTextField1ActionPerformed(evt);
+            }
+        });
+
+        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel4.setText("Student ID");
+
+        jTextField2.setText("jTextField2");
+        jTextField2.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jTextField2ActionPerformed(evt);
+            }
+        });
+
+        jLabel5.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel5.setText("College Allotted");
+
+        jTextField3.setText("jTextField3");
+
+        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
+        jLabel6.setText("Branch Allotted");
+
+        jTextField4.setText("jTextField4");
+        jTextField4.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jTextField4ActionPerformed(evt);
+            }
+        });
+
+        jButton1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jButton1.setText("ok");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        jButton2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
+        jButton2.setText("Save as Image");
+        jButton2.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton2ActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGap(308, 308, 308)
+                        .addComponent(jLabel2)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(jLabel1))
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGap(260, 260, 260)
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                                .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                            .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addGap(45, 45, 45)
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                            .addComponent(jTextField2)
+                            .addComponent(jTextField1)
+                            .addComponent(jTextField3)
+                            .addComponent(jTextField4)
+                            .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE))))
+                .addContainerGap(160, Short.MAX_VALUE))
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addGap(21, 21, 21)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(57, 57, 57)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel3))
+                .addGap(29, 29, 29)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel4)
+                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(39, 39, 39)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel5)
+                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(37, 37, 37)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel6)
+                    .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 45, Short.MAX_VALUE)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jButton1)
+                    .addComponent(jButton2))
+                .addGap(29, 29, 29))
+        );
+
+        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 860, 460));
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_jTextField1ActionPerformed
+
+    private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField2ActionPerformed
+   String val= this.jTextField2.getText();
+String q="";
+        File ci=new File("output.txt");
+        try {
+            Scanner c1=new Scanner(ci); 
+            while(c1.hasNextLine()){
+               String data = c1.nextLine();
+String variable[] = data.split("\\s+");
+String p=variable[3];
+                if(p.equals(val)){
+                q=variable[8];
+                }
+        }// TODO add your handling code here:
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(CounsellingResult.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        
+   File choices = new File("choices.txt");   
+   
+Scanner sc = null;
+        try {
+            sc = new Scanner(choices);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(CounsellingResult.class.getName()).log(Level.SEVERE, null, ex);
+        }
+while(sc.hasNextLine()){
+ String data = sc.nextLine();
+String variable[] = data.split("\\s+");
+String p=variable[0];
+int k=Integer.parseInt(q);
+if(p.equals(val))
+    if (k>=90 ){
+jTextField3.setText(variable[2]);
+jTextField4.setText(variable[12]);
+}
+    else if (k<90 && k>=80){
+jTextField3.setText(variable[4]);
+jTextField4.setText(variable[14]);
+}
+    else if (k>=75&& k<80){
+jTextField3.setText(variable[6]);
+jTextField4.setText(variable[16]);
+}
+    else if (k>=70&& k<75){
+jTextField3.setText(variable[8]);
+jTextField4.setText(variable[18]);
+}
+    else if (k>=60&& k<70){
+jTextField3.setText(variable[10]);
+jTextField4.setText(variable[20]);
+}
+    else{
+jTextField3.setText(" No seat alloted ");
+jTextField4.setText(" No seat alloted ");
+}
+
+}
+    }//GEN-LAST:event_jTextField2ActionPerformed
+public static BufferedImage getScreenShot(Component component){
+BufferedImage image =new BufferedImage(component.getWidth(),component.getHeight(),BufferedImage.TYPE_INT_RGB);
+component.paint(image.getGraphics());
+return image;
+}                                        
+public static void SaveScreenShot(Component component,String filename)throws Exception{
+BufferedImage img = getScreenShot(component);
+       ImageIO.write(img, "png", new File(filename));}
+    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
+
+        // TODO add your handling code here:
+     try{       // TODO add your handling code here:
+SaveScreenShot(jPanel1,"My Choice.png");
+        } 
+ catch (Exception ex) {
+            Logger.getLogger(Choice.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }//GEN-LAST:event_jButton2ActionPerformed
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        this.setVisible(false);
+
+        // TODO add your handling code here:
+       
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    private void jTextField4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField4ActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_jTextField4ActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(CounsellingResult.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(CounsellingResult.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(CounsellingResult.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(CounsellingResult.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new CounsellingResult().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton jButton1;
+    private javax.swing.JButton jButton2;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JTextField jTextField1;
+    private javax.swing.JTextField jTextField2;
+    private javax.swing.JTextField jTextField3;
+    private javax.swing.JTextField jTextField4;
+    // End of variables declaration//GEN-END:variables
+
+   
+}
diff --git a/Admission-counselling-system/src/student/information/system/DbUtils.java b/Admission-counselling-system/src/student/information/system/DbUtils.java
new file mode 100644
index 00000000..163dc83e
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/DbUtils.java
@@ -0,0 +1,14 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author Hyrex
+ */
+class DbUtils {
+    
+}
diff --git a/Admission-counselling-system/src/student/information/system/Emp.java b/Admission-counselling-system/src/student/information/system/Emp.java
new file mode 100644
index 00000000..c627c475
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Emp.java
@@ -0,0 +1,17 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author AliHyrex
+ */
+public class Emp {
+    public static int empId;
+   
+   
+    
+}
diff --git a/Admission-counselling-system/src/student/information/system/Login.form b/Admission-counselling-system/src/student/information/system/Login.form
new file mode 100644
index 00000000..37ca3379
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Login.form
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="txt_date">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Date"/>
+          </Properties>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="txt_time">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Time"/>
+          </Properties>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" pref="661" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" pref="433" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="ff" green="ff" red="ff" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Username :"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="20" y="280" width="90" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel3">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="ff" green="ff" red="ff" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Password :"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="20" y="320" width="80" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Login"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="180" y="390" width="70" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_username">
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_usernameActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="110" y="270" width="160" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JPasswordField" name="txt_password">
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="110" y="310" width="160" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JComboBox" name="txt_combo">
+          <Properties>
+            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+              <StringArray count="2">
+                <StringItem index="0" value="Admin"/>
+                <StringItem index="1" value="Student"/>
+              </StringArray>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_comboActionPerformed"/>
+          </Events>
+          <AuxValues>
+            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
+          </AuxValues>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="110" y="350" width="160" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel4">
+          <Properties>
+            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+              <Font name="Tahoma" size="14" style="1"/>
+            </Property>
+            <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+              <Color blue="ff" green="ff" red="ff" type="rgb"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Division :"/>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="20" y="360" width="70" height="-1"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/Presentation1.jpg"/>
+            </Property>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="0" y="0" width="660" height="430"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/Login.java b/Admission-counselling-system/src/student/information/system/Login.java
new file mode 100644
index 00000000..3f2b1f50
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Login.java
@@ -0,0 +1,290 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import javax.swing.JOptionPane;
+import com.sun.glass.events.KeyEvent;
+import java.awt.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import javax.swing.*;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.LinkedList;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author Hyrex
+ */
+public class Login extends javax.swing.JFrame {
+public static Writer newWriter,SortWriter;
+
+    Connection conn=null;
+ResultSet rs=null;
+PreparedStatement pst=null;
+
+    /**
+     * Creates new form Login
+     */
+    public Login() {
+        initComponents();
+         conn=db.java_db();
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+        currentDate();
+    }
+ public void currentDate (){
+        
+        Calendar cal =new GregorianCalendar();
+        int month = cal.get(Calendar.MONTH);
+        int year = cal.get(Calendar.YEAR);
+        int day = cal.get(Calendar.DAY_OF_MONTH);
+        
+        txt_date.setText((month+1)+"/"+day+"/"+year);
+    }
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel1 = new javax.swing.JPanel();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel3 = new javax.swing.JLabel();
+        jButton1 = new javax.swing.JButton();
+        txt_username = new javax.swing.JTextField();
+        txt_password = new javax.swing.JPasswordField();
+        txt_combo = new javax.swing.JComboBox<>();
+        jLabel4 = new javax.swing.JLabel();
+        jLabel1 = new javax.swing.JLabel();
+        jMenuBar1 = new javax.swing.JMenuBar();
+        txt_date = new javax.swing.JMenu();
+        txt_time = new javax.swing.JMenu();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setResizable(false);
+
+        jPanel1.setLayout(null);
+
+        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jLabel2.setForeground(new java.awt.Color(255, 255, 255));
+        jLabel2.setText("Username :");
+        jPanel1.add(jLabel2);
+        jLabel2.setBounds(20, 280, 90, 17);
+
+        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jLabel3.setForeground(new java.awt.Color(255, 255, 255));
+        jLabel3.setText("Password :");
+        jPanel1.add(jLabel3);
+        jLabel3.setBounds(20, 320, 80, 17);
+
+        jButton1.setText("Login");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+        jPanel1.add(jButton1);
+        jButton1.setBounds(180, 390, 70, 30);
+
+        txt_username.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_usernameActionPerformed(evt);
+            }
+        });
+        jPanel1.add(txt_username);
+        txt_username.setBounds(110, 270, 160, 30);
+        jPanel1.add(txt_password);
+        txt_password.setBounds(110, 310, 160, 30);
+
+        txt_combo.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Admin", "Student" }));
+        txt_combo.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_comboActionPerformed(evt);
+            }
+        });
+        jPanel1.add(txt_combo);
+        txt_combo.setBounds(110, 350, 160, 30);
+
+        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
+        jLabel4.setForeground(new java.awt.Color(255, 255, 255));
+        jLabel4.setText("Division :");
+        jPanel1.add(jLabel4);
+        jLabel4.setBounds(20, 360, 70, 17);
+
+        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/Presentation1.jpg"))); // NOI18N
+        jPanel1.add(jLabel1);
+        jLabel1.setBounds(0, 0, 660, 430);
+
+        txt_date.setText("Date");
+        jMenuBar1.add(txt_date);
+
+        txt_time.setText("Time");
+        jMenuBar1.add(txt_time);
+
+        setJMenuBar(jMenuBar1);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 661, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 433, Short.MAX_VALUE)
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+   
+          String access;
+    access = this.txt_combo.getSelectedItem().toString();
+            
+          
+           String p=String.valueOf(this.txt_password.getPassword());
+           if(access.equals("Admin") && this.txt_username.getText().equals("admin") && p.equals("admin")) {
+           
+              
+                   JOptionPane.showMessageDialog(null,"Sucess" );
+                   MainMenu j = new MainMenu();
+                   j.setVisible(true);
+                   this.dispose();
+                   
+                   
+                    Date currentDate = GregorianCalendar.getInstance().getTime();
+                  DateFormat df = DateFormat.getDateInstance();
+                  String dateString = df.format(currentDate);
+
+                  Date d = new Date();
+                  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                  String timeString = sdf.format(d);
+
+                  String value0 = timeString;
+                  String values = dateString;
+                   
+                   
+                  
+                   this.dispose();
+                 
+           
+           }
+           else if(access.equals("Student")){
+          this.jLabel2.setText("Firstname");
+          this.jLabel3.setText("12h Roll No");
+               File f=new File("output.txt");
+          
+           
+
+    Scanner sc = null;
+        try {
+            sc = new Scanner(f);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(StudentInformation.class.getName()).log(Level.SEVERE, null, ex);
+        }
+while(sc.hasNextLine()){
+    String data = sc.nextLine();
+    System.out.println(data);
+String variable[] = data.split("\\s+");
+String user=variable[0];
+String perc=variable[3];
+      if(perc.equals(String.valueOf(this.txt_password.getPassword())) && user.equals(String.valueOf(this.txt_username.getText()))){
+                      new StudentInformation(perc).setVisible(true);
+                     this.setVisible(false);
+    
+     
+      }  
+           }
+   
+    }//GEN-LAST:event_jButton1ActionPerformed
+    }
+    private void txt_usernameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_usernameActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_txt_usernameActionPerformed
+
+    private void txt_comboActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_comboActionPerformed
+        // TODO add your handling code here:
+String id1=this.txt_combo.getSelectedItem().toString();
+if(id1.equals("Student")){
+          this.jLabel2.setText("Firstname");
+          this.jLabel3.setText("12h Roll No");
+
+}
+    }//GEN-LAST:event_txt_comboActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new Login().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton jButton1;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JMenuBar jMenuBar1;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JComboBox<String> txt_combo;
+    private javax.swing.JMenu txt_date;
+    private javax.swing.JPasswordField txt_password;
+    private javax.swing.JMenu txt_time;
+    private javax.swing.JTextField txt_username;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/src/student/information/system/MainMenu.form b/Admission-counselling-system/src/student/information/system/MainMenu.form
new file mode 100644
index 00000000..a2775502
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/MainMenu.form
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Audit"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem2">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Users"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem2ActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" pref="799" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jPanel1" alignment="0" pref="529" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/Add.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Student Manager"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="570" y="430" width="190" height="60"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton5">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/logout.png"/>
+            </Property>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton5ActionPerformed"/>
+          </Events>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="750" y="10" width="40" height="30"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/pnbennet.png"/>
+            </Property>
+          </Properties>
+          <Constraints>
+            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
+              <AbsoluteConstraints x="0" y="0" width="800" height="530"/>
+            </Constraint>
+          </Constraints>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/MainMenu.java b/Admission-counselling-system/src/student/information/system/MainMenu.java
new file mode 100644
index 00000000..eccc97ab
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/MainMenu.java
@@ -0,0 +1,232 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import javax.swing.JOptionPane;
+
+/**
+ *
+ * @author Hyrex
+ */
+public class MainMenu extends javax.swing.JFrame {
+Connection conn=null;
+ResultSet rs=null;
+PreparedStatement pst=null;
+    /**
+     * Creates new form MainMenu
+     */
+    public MainMenu() {
+      conn=db.java_db();
+        initComponents(); 
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel1 = new javax.swing.JPanel();
+        jButton1 = new javax.swing.JButton();
+        jButton5 = new javax.swing.JButton();
+        jLabel1 = new javax.swing.JLabel();
+        jMenuBar1 = new javax.swing.JMenuBar();
+        jMenu1 = new javax.swing.JMenu();
+        jMenuItem1 = new javax.swing.JMenuItem();
+        jMenuItem2 = new javax.swing.JMenuItem();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        setResizable(false);
+
+        jPanel1.setLayout(null);
+
+        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/Add.png"))); // NOI18N
+        jButton1.setText("Student Manager");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+        jPanel1.add(jButton1);
+        jButton1.setBounds(570, 430, 190, 60);
+
+        jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/logout.png"))); // NOI18N
+        jButton5.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton5ActionPerformed(evt);
+            }
+        });
+        jPanel1.add(jButton5);
+        jButton5.setBounds(750, 10, 40, 30);
+
+        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/pnbennet.png"))); // NOI18N
+        jPanel1.add(jLabel1);
+        jLabel1.setBounds(0, 0, 800, 530);
+
+        jMenu1.setText("File");
+
+        jMenuItem1.setText("Audit");
+        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jMenuItem1ActionPerformed(evt);
+            }
+        });
+        jMenu1.add(jMenuItem1);
+
+        jMenuItem2.setText("Users");
+        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jMenuItem2ActionPerformed(evt);
+            }
+        });
+        jMenu1.add(jMenuItem2);
+
+        jMenuBar1.add(jMenu1);
+
+        setJMenuBar(jMenuBar1);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 799, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 529, Short.MAX_VALUE)
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
+        // TODO add your handling code here:
+                   Login j = new Login();
+                   j.setVisible(true);
+                   this.dispose();
+                   
+                   
+                   try{
+                   Date currentDate = GregorianCalendar.getInstance().getTime();
+                  DateFormat df = DateFormat.getDateInstance();
+                  String dateString = df.format(currentDate);
+
+                  Date d = new Date();
+                  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+                  String timeString = sdf.format(d);
+
+                  String value0 = timeString;
+                  String values = dateString;
+                   
+                   
+                   int value = Emp.empId;
+                   String reg = "insert into Audit (emp_id,date,status) values ('"+value+"','"+value0+" / "+values+"','Logged out')";
+                   pst=conn.prepareStatement(reg);
+                   pst.execute();
+                   this.dispose();
+          }catch (Exception e){
+              
+               JOptionPane.showMessageDialog(null, e);
+
+        }
+        finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }
+            catch(Exception e){
+                
+            }
+                   }
+        
+    }//GEN-LAST:event_jButton5ActionPerformed
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        // TODO add your handling code here:
+        
+         StudentInformation j= new StudentInformation();
+                   j.setVisible(true);
+                  
+                   
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
+        // TODO add your handling code here:
+                   Audit_details j = new Audit_details();
+                   j.setVisible(true);
+    }//GEN-LAST:event_jMenuItem1ActionPerformed
+
+    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
+        // TODO add your handling code here:
+        
+                  users j = new users();
+                   j.setVisible(true);
+    }//GEN-LAST:event_jMenuItem2ActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(MainMenu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new MainMenu().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton jButton1;
+    private javax.swing.JButton jButton5;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JMenu jMenu1;
+    private javax.swing.JMenuBar jMenuBar1;
+    private javax.swing.JMenuItem jMenuItem1;
+    private javax.swing.JMenuItem jMenuItem2;
+    private javax.swing.JPanel jPanel1;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/src/student/information/system/Result.form b/Admission-counselling-system/src/student/information/system/Result.form
new file mode 100644
index 00000000..3434b1bc
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Result.form
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace min="-2" pref="181" max="-2" attributes="0"/>
+              <Component id="jLabel1" min="-2" pref="170" max="-2" attributes="0"/>
+              <EmptySpace pref="388" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace min="-2" pref="64" max="-2" attributes="0"/>
+              <Component id="jLabel1" min="-2" pref="36" max="-2" attributes="0"/>
+              <EmptySpace pref="340" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Dialog" size="24" style="1"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="        Name  :"/>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/Result.java b/Admission-counselling-system/src/student/information/system/Result.java
new file mode 100644
index 00000000..8b19cbd3
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/Result.java
@@ -0,0 +1,95 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author pawan saxena
+ */
+public class Result extends javax.swing.JFrame {
+
+    /**
+     * Creates new form Result
+     */
+    public Result() {
+        initComponents();
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jLabel1 = new javax.swing.JLabel();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+        jLabel1.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N
+        jLabel1.setText("        Name  :");
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGap(181, 181, 181)
+                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(388, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGap(64, 64, 64)
+                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(340, Short.MAX_VALUE))
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(Result.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(Result.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(Result.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(Result.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new Result().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JLabel jLabel1;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/src/student/information/system/StudentData.java b/Admission-counselling-system/src/student/information/system/StudentData.java
new file mode 100644
index 00000000..7f1ea37b
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/StudentData.java
@@ -0,0 +1,76 @@
+/*
+     * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import static student.information.system.Login.newWriter;
+
+/**
+ *
+ * @author pawan saxena
+ */
+public class StudentData {
+    public static Writer newWriter,SortWriter;
+String firstname;
+String lastname;
+String dob;
+String studId;
+String email;
+String tel;
+String address;
+String add2;
+String apt;
+String pc;
+StudentData(String firstname,
+String lastname,
+String dob,
+String studId,
+String email,
+String tel,
+String address,
+String add2,
+String apt,
+String pc) throws IOException, FileNotFoundException, InterruptedException {
+
+    this.firstname=firstname;
+this.lastname=lastname;
+this.dob=dob;
+this.studId=studId;
+this.email=email;
+this.tel=tel;
+this.address=address;
+this.add2=add2;
+this.apt=apt;
+this.pc=pc;
+Store();
+}       
+
+public void Store() throws FileNotFoundException, IOException, InterruptedException {
+    newWriter= new FileWriter("output.txt",true);
+    newWriter.write(System.lineSeparator());
+        String value1 = this.firstname;
+                String value2 = this.lastname;
+                String value3 = this.dob;
+                String value4 = this.studId;
+                String value5 = this.email;
+                String value6 = this.tel;
+                String value7 = this.address;
+                String value9 = this.add2;
+                String value10 = this.apt;
+                String value11 = this.pc;
+
+newWriter.write(value1+" " + value2+" "+ value3+" "+ value4+" "+ value5+" "+ value6+" "+ value7+" "+ value9+" "+ value10+" "+ value11+" ");
+             
+
+             newWriter.flush();
+             newWriter.close();
+
+
+    }
+}
diff --git a/Admission-counselling-system/src/student/information/system/StudentInformation.form b/Admission-counselling-system/src/student/information/system/StudentInformation.form
new file mode 100644
index 00000000..ce6fb2ab
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/StudentInformation.form
@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Container class="javax.swing.JMenuBar" name="jMenuBar2">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
+        <Property name="useNullLayout" type="boolean" value="true"/>
+      </Layout>
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="jMenu2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Edit"/>
+          </Properties>
+        </Menu>
+      </SubComponents>
+    </Container>
+    <Container class="javax.swing.JDialog" name="jDialog1">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+    </Container>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="File">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Attach Image"/>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="lbl_date">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Date"/>
+          </Properties>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="lbl_time">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Time"/>
+          </Properties>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="resizable" type="boolean" value="false"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <EmptySpace min="-2" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <Component id="jPanel5" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="415" max="-2" attributes="0"/>
+                      <Component id="jLabel10" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="txt_emp" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="32767" attributes="0"/>
+                      <Component id="jPanel5" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="jLabel10" alignment="3" max="32767" attributes="0"/>
+                          <Component id="txt_emp" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel3">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="Student Information">
+              <Font PropertyName="font" name="Adobe Arabic" size="36" style="1"/>
+            </TitledBorder>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel6" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel7" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel11" alignment="0" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="r_male" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
+                                  <Component id="r_female" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                                  <Component id="txt_tel" alignment="0" max="32767" attributes="0"/>
+                                  <Component id="txt_email" min="-2" pref="168" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
+                              <Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/>
+                          </Group>
+                          <EmptySpace min="-2" pref="58" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="1" max="-2" attributes="0">
+                              <Component id="txt_surname" alignment="0" max="32767" attributes="0"/>
+                              <Component id="txt_firstname" alignment="1" max="32767" attributes="0"/>
+                              <Component id="txt_dob" alignment="1" max="32767" attributes="0"/>
+                              <Component id="txt_studentid" pref="168" max="32767" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <Group type="103" alignment="0" groupAlignment="1" attributes="0">
+                          <Group type="102" attributes="0">
+                              <EmptySpace min="-2" pref="141" max="-2" attributes="0"/>
+                              <Component id="button2" min="-2" pref="168" max="-2" attributes="0"/>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="jLabel14" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel15" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel16" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel8" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="48" pref="48" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="txt_pc" alignment="1" min="-2" pref="168" max="-2" attributes="0"/>
+                                  <Group type="103" alignment="0" groupAlignment="1" attributes="0">
+                                      <Component id="txt_apt" min="-2" pref="168" max="-2" attributes="0"/>
+                                      <Group type="103" alignment="1" groupAlignment="1" max="-2" attributes="0">
+                                          <Component id="txt_add2" alignment="0" max="32767" attributes="0"/>
+                                          <Component id="txt_address" min="-2" pref="168" max="-2" attributes="0"/>
+                                      </Group>
+                                  </Group>
+                              </Group>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="57" max="-2" attributes="0"/>
+                          <Component id="jDesktopPane1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="243" max="-2" attributes="0"/>
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Component id="jButton3" alignment="1" min="-2" pref="134" max="-2" attributes="0"/>
+                              <Component id="cmd_save" alignment="1" min="-2" pref="134" max="-2" attributes="0"/>
+                              <Component id="jButton1" alignment="1" min="-2" pref="134" max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <EmptySpace pref="112" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace max="32767" attributes="0"/>
+                  <Component id="jDesktopPane1" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace type="separate" max="-2" attributes="0"/>
+                  <Component id="cmd_save" min="-2" pref="44" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="32" max="-2" attributes="0"/>
+                  <Component id="jButton3" min="-2" pref="44" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="37" max="-2" attributes="0"/>
+                  <Component id="jButton1" min="-2" pref="44" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="93" max="-2" attributes="0"/>
+              </Group>
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="1" attributes="0">
+                      <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                      <Component id="txt_studentid" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="txt_firstname" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                      <Component id="txt_surname" alignment="0" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
+                      <Component id="txt_dob" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="r_male" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="r_female" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_email" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_tel" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_address" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_add2" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel14" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_apt" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel15" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="jLabel16" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="txt_pc" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
+                  <Component id="button2" min="-2" pref="42" max="-2" attributes="0"/>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel7">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Contact Number :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_tel">
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_email">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel6">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Email :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel11">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Gender:"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JRadioButton" name="r_male">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Male"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="r_maleActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JRadioButton" name="r_female">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Female"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="r_femaleActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_dob">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Date of Birth :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_surname">
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Surname :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="First name :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_firstname">
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_firstnameActionPerformed"/>
+          </Events>
+        </Component>
+        <Container class="javax.swing.JDesktopPane" name="jDesktopPane1">
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="lbl_img" pref="231" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Component id="lbl_img" pref="145" max="32767" attributes="0"/>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="lbl_img">
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JLabel" name="jLabel8">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Address Line 1 :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel14">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Address Line 2 :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel15">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="12th Percentage"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel16">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Post Code :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_pc">
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_apt">
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_aptActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_add2">
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_address">
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_addressActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="cmd_save">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/Save-icon.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Add Record"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmd_saveActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/erase-128.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Clear"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton3">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/delete_16x16.gif"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Delete"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JLabel" name="jLabel5">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Student ID :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_studentid">
+        </Component>
+        <Component class="java.awt.Button" name="button2">
+          <Properties>
+            <Property name="label" type="java.lang.String" value="Select Your Choices"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="button2ActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Component class="javax.swing.JLabel" name="txt_emp">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="emp"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel10">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Logged in As :"/>
+      </Properties>
+    </Component>
+    <Container class="javax.swing.JPanel" name="jPanel5">
+      <Properties>
+        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+          <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+            <TitledBorder title="Search">
+              <Font PropertyName="font" name="Adobe Arabic" size="14" style="1"/>
+            </TitledBorder>
+          </Border>
+        </Property>
+      </Properties>
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="32767" attributes="0"/>
+                  <Component id="jLabel13" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                  <Component id="txt_search1" min="-2" pref="565" max="-2" attributes="0"/>
+                  <EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="3" attributes="0">
+                      <Component id="txt_search1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      <Component id="jLabel13" alignment="3" min="-2" max="-2" attributes="0"/>
+                  </Group>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JLabel" name="jLabel13">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Student ID :"/>
+          </Properties>
+        </Component>
+        <Component class="javax.swing.JTextField" name="txt_search1">
+          <Events>
+            <EventHandler event="componentRemoved" listener="java.awt.event.ContainerListener" parameters="java.awt.event.ContainerEvent" handler="txt_search1ComponentRemoved"/>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="txt_search1ActionPerformed"/>
+            <EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txt_search1KeyReleased"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/StudentInformation.java b/Admission-counselling-system/src/student/information/system/StudentInformation.java
new file mode 100644
index 00000000..0ce7afaf
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/StudentInformation.java
@@ -0,0 +1,903 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package student.information.system;
+
+/**
+ *
+ * @author Hyrex
+ */
+import net.proteanit.sql.DbUtils;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.LinkedList;
+import java.util.Scanner;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.imageio.ImageIO;
+import javax.swing.*;
+
+
+
+public class StudentInformation extends javax.swing.JFrame {
+Connection conn=null;
+ResultSet rs=null;
+PreparedStatement pst=null;
+    /**
+     * Creates new form Staff_details
+     */
+    public StudentInformation() {
+        initComponents();
+        conn=db.java_db();
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+        currentDate();
+        txt_emp.setText(String.valueOf(Emp.empId).toString());
+    }
+    public StudentInformation(String StudsId) {
+        initComponents();
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+        currentDate();
+        txt_search1.setText(StudsId);
+        cmd_save.setVisible(false);
+        jButton3.setVisible(false);
+        cmd_save.setEnabled(false);
+        jButton3.setEnabled(false);
+    }
+   
+    public void currentDate (){
+        
+        Calendar cal =new GregorianCalendar();
+        int month = cal.get(Calendar.MONTH);
+        int year = cal.get(Calendar.YEAR);
+        int day = cal.get(Calendar.DAY_OF_MONTH);
+        
+        lbl_date.setText((month+1)+"/"+day+"/"+year);
+        
+        //Time
+      
+        int second = cal.get(Calendar.SECOND);
+        int minute = cal.get(Calendar.MINUTE);
+        int hour = cal.get(Calendar.HOUR);
+        
+        lbl_time.setText(hour+":"+(minute)+":"+second);
+        
+       
+    }
+   
+ 
+    
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jMenuBar2 = new javax.swing.JMenuBar();
+        jMenu1 = new javax.swing.JMenu();
+        jMenu2 = new javax.swing.JMenu();
+        jDialog1 = new javax.swing.JDialog();
+        jPanel3 = new javax.swing.JPanel();
+        jLabel7 = new javax.swing.JLabel();
+        txt_tel = new javax.swing.JTextField();
+        txt_email = new javax.swing.JTextField();
+        jLabel6 = new javax.swing.JLabel();
+        jLabel11 = new javax.swing.JLabel();
+        r_male = new javax.swing.JRadioButton();
+        r_female = new javax.swing.JRadioButton();
+        txt_dob = new javax.swing.JTextField();
+        jLabel3 = new javax.swing.JLabel();
+        txt_surname = new javax.swing.JTextField();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel1 = new javax.swing.JLabel();
+        txt_firstname = new javax.swing.JTextField();
+        jDesktopPane1 = new javax.swing.JDesktopPane();
+        lbl_img = new javax.swing.JLabel();
+        jLabel8 = new javax.swing.JLabel();
+        jLabel14 = new javax.swing.JLabel();
+        jLabel15 = new javax.swing.JLabel();
+        jLabel16 = new javax.swing.JLabel();
+        txt_pc = new javax.swing.JTextField();
+        txt_apt = new javax.swing.JTextField();
+        txt_add2 = new javax.swing.JTextField();
+        txt_address = new javax.swing.JTextField();
+        cmd_save = new javax.swing.JButton();
+        jButton1 = new javax.swing.JButton();
+        jButton3 = new javax.swing.JButton();
+        jLabel5 = new javax.swing.JLabel();
+        txt_studentid = new javax.swing.JTextField();
+        button2 = new java.awt.Button();
+        txt_emp = new javax.swing.JLabel();
+        jLabel10 = new javax.swing.JLabel();
+        jPanel5 = new javax.swing.JPanel();
+        jLabel13 = new javax.swing.JLabel();
+        txt_search1 = new javax.swing.JTextField();
+        jMenuBar1 = new javax.swing.JMenuBar();
+        File = new javax.swing.JMenu();
+        jMenuItem1 = new javax.swing.JMenuItem();
+        lbl_date = new javax.swing.JMenu();
+        lbl_time = new javax.swing.JMenu();
+
+        jMenu1.setText("File");
+        jMenuBar2.add(jMenu1);
+
+        jMenu2.setText("Edit");
+        jMenuBar2.add(jMenu2);
+
+        javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
+        jDialog1.getContentPane().setLayout(jDialog1Layout);
+        jDialog1Layout.setHorizontalGroup(
+            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 400, Short.MAX_VALUE)
+        );
+        jDialog1Layout.setVerticalGroup(
+            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGap(0, 300, Short.MAX_VALUE)
+        );
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        setResizable(false);
+
+        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Student Information", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Adobe Arabic", 1, 36))); // NOI18N
+
+        jLabel7.setText("Contact Number :");
+
+        jLabel6.setText("Email :");
+
+        jLabel11.setText("Gender:");
+
+        r_male.setText("Male");
+        r_male.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                r_maleActionPerformed(evt);
+            }
+        });
+
+        r_female.setText("Female");
+        r_female.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                r_femaleActionPerformed(evt);
+            }
+        });
+
+        jLabel3.setText("Date of Birth :");
+
+        jLabel2.setText("Surname :");
+
+        jLabel1.setText("First name :");
+
+        txt_firstname.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_firstnameActionPerformed(evt);
+            }
+        });
+
+        jDesktopPane1.setLayer(lbl_img, javax.swing.JLayeredPane.DEFAULT_LAYER);
+
+        javax.swing.GroupLayout jDesktopPane1Layout = new javax.swing.GroupLayout(jDesktopPane1);
+        jDesktopPane1.setLayout(jDesktopPane1Layout);
+        jDesktopPane1Layout.setHorizontalGroup(
+            jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jDesktopPane1Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(lbl_img, javax.swing.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+        jDesktopPane1Layout.setVerticalGroup(
+            jDesktopPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jDesktopPane1Layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(lbl_img, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
+                .addContainerGap())
+        );
+
+        jLabel8.setText("Address Line 1 :");
+
+        jLabel14.setText("Address Line 2 :");
+
+        jLabel15.setText("12th Percentage");
+
+        jLabel16.setText("Post Code :");
+
+        txt_apt.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_aptActionPerformed(evt);
+            }
+        });
+
+        txt_address.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_addressActionPerformed(evt);
+            }
+        });
+
+        cmd_save.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/Save-icon.png"))); // NOI18N
+        cmd_save.setText("Add Record");
+        cmd_save.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                cmd_saveActionPerformed(evt);
+            }
+        });
+
+        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/erase-128.png"))); // NOI18N
+        jButton1.setText("Clear");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/delete_16x16.gif"))); // NOI18N
+        jButton3.setText("Delete");
+        jButton3.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton3ActionPerformed(evt);
+            }
+        });
+
+        jLabel5.setText("Student ID :");
+
+        button2.setLabel("Select Your Choices");
+        button2.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                button2ActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+        jPanel3.setLayout(jPanel3Layout);
+        jPanel3Layout.setHorizontalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel3Layout.createSequentialGroup()
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel6)
+                            .addComponent(jLabel7)
+                            .addComponent(jLabel11))
+                        .addGap(41, 41, 41)
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addGroup(jPanel3Layout.createSequentialGroup()
+                                .addComponent(r_male)
+                                .addGap(4, 4, 4)
+                                .addComponent(r_female))
+                            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                                .addComponent(txt_tel, javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(txt_email, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel1)
+                            .addComponent(jLabel2)
+                            .addComponent(jLabel3)
+                            .addComponent(jLabel5))
+                        .addGap(58, 58, 58)
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                            .addComponent(txt_surname, javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(txt_firstname)
+                            .addComponent(txt_dob)
+                            .addComponent(txt_studentid, javax.swing.GroupLayout.DEFAULT_SIZE, 168, Short.MAX_VALUE)))
+                    .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                        .addGroup(jPanel3Layout.createSequentialGroup()
+                            .addGap(141, 141, 141)
+                            .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup()
+                            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(jLabel14)
+                                .addComponent(jLabel15)
+                                .addComponent(jLabel16)
+                                .addComponent(jLabel8))
+                            .addGap(48, 48, 48)
+                            .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(txt_pc, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                    .addComponent(txt_apt, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
+                                    .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                                        .addComponent(txt_add2, javax.swing.GroupLayout.Alignment.LEADING)
+                                        .addComponent(txt_address, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)))))))
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGap(57, 57, 57)
+                        .addComponent(jDesktopPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                    .addGroup(jPanel3Layout.createSequentialGroup()
+                        .addGap(243, 243, 243)
+                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(cmd_save, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE))))
+                .addContainerGap(112, Short.MAX_VALUE))
+        );
+        jPanel3Layout.setVerticalGroup(
+            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(jDesktopPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(18, 18, 18)
+                .addComponent(cmd_save, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(32, 32, 32)
+                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(37, 37, 37)
+                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(93, 93, 93))
+            .addGroup(jPanel3Layout.createSequentialGroup()
+                .addGap(18, 18, 18)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                    .addComponent(jLabel5)
+                    .addComponent(txt_studentid, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel1)
+                    .addComponent(txt_firstname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel2)
+                    .addComponent(txt_surname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(jLabel3)
+                    .addComponent(txt_dob, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel11)
+                    .addComponent(r_male)
+                    .addComponent(r_female))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_email, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel6))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_tel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel7))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_address, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel8))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_add2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel14))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_apt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel15))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel16)
+                    .addComponent(txt_pc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(39, 39, 39)
+                .addComponent(button2, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        txt_emp.setText("emp");
+
+        jLabel10.setText("Logged in As :");
+
+        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Search", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Adobe Arabic", 1, 14))); // NOI18N
+
+        jLabel13.setText("Student ID :");
+
+        txt_search1.addContainerListener(new java.awt.event.ContainerAdapter() {
+            public void componentRemoved(java.awt.event.ContainerEvent evt) {
+                txt_search1ComponentRemoved(evt);
+            }
+        });
+        txt_search1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                txt_search1ActionPerformed(evt);
+            }
+        });
+        txt_search1.addKeyListener(new java.awt.event.KeyAdapter() {
+            public void keyReleased(java.awt.event.KeyEvent evt) {
+                txt_search1KeyReleased(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
+        jPanel5.setLayout(jPanel5Layout);
+        jPanel5Layout.setHorizontalGroup(
+            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel5Layout.createSequentialGroup()
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addComponent(jLabel13)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addComponent(txt_search1, javax.swing.GroupLayout.PREFERRED_SIZE, 565, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addGap(8, 8, 8))
+        );
+        jPanel5Layout.setVerticalGroup(
+            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel5Layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_search1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel13))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        File.setText("File");
+
+        jMenuItem1.setText("Attach Image");
+        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jMenuItem1ActionPerformed(evt);
+            }
+        });
+        File.add(jMenuItem1);
+
+        jMenuBar1.add(File);
+
+        lbl_date.setText("Date");
+        jMenuBar1.add(lbl_date);
+
+        lbl_time.setText("Time");
+        jMenuBar1.add(lbl_time);
+
+        setJMenuBar(jMenuBar1);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(layout.createSequentialGroup()
+                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addGap(415, 415, 415)
+                        .addComponent(jLabel10)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(txt_emp))
+                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(layout.createSequentialGroup()
+                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                    .addGroup(layout.createSequentialGroup()
+                        .addGap(6, 6, 6)
+                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                            .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(txt_emp))))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
+        // TODO add your handling code here:
+        
+        JFileChooser chooser = new JFileChooser();
+        chooser.showOpenDialog(null);
+        File f = chooser.getSelectedFile();
+        
+        filename =f.getAbsolutePath();
+        ImageIcon imageIcon = new ImageIcon(new ImageIcon(filename).getImage().getScaledInstance(lbl_img.getWidth(), lbl_img.getHeight(), Image.SCALE_DEFAULT));
+        lbl_img.setIcon(imageIcon);
+      try {
+
+            File image = new File(filename);
+            FileInputStream fis = new FileInputStream (image);
+            ByteArrayOutputStream bos= new ByteArrayOutputStream();
+            byte[] buf = new byte[1024];
+
+            for(int readNum; (readNum=fis.read(buf))!=-1; ){
+
+                bos.write(buf,0,readNum);
+            }
+            person_image=bos.toByteArray();
+        }
+
+        catch(Exception e){
+            JOptionPane.showMessageDialog(null,e);
+
+        }
+       
+    }//GEN-LAST:event_jMenuItem1ActionPerformed
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        // TODO add your handling code here:
+        
+        txt_firstname.setText("");
+        txt_surname.setText("");
+        txt_tel.setText("");
+        txt_dob.setText("");
+        txt_email.setText("");
+        txt_address.setText("");
+
+        txt_studentid.setText("");
+   
+        txt_add2.setText("");
+        txt_pc.setText("");
+        txt_apt.setText("");
+        lbl_img.setIcon(null);
+        txt_search1.setText("");
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    private void cmd_saveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmd_saveActionPerformed
+        // TODO add your handling code here:
+        int p = JOptionPane.showConfirmDialog(null, "Are you sure you want to add record?","Add Record",JOptionPane.YES_NO_OPTION);
+  
+    
+        if(p==0){
+            
+            String value110 = txt_firstname.getText();
+            String value2 = txt_surname.getText();
+            String value3 = txt_dob.getText();
+            String value4 = txt_studentid.getText();
+            String value5 = txt_email.getText();
+            String value6 = txt_tel.getText();
+            String value7 = txt_address.getText();
+            String value9 = txt_add2.getText();
+            String value10 = txt_apt.getText();
+            String value11 = txt_pc.getText();
+            try {
+                StudentData stud= new StudentData(value110,value2,value3,value4,value5,value6,value7,value9,value10,value11);
+            } catch (IOException ex) {
+                Logger.getLogger(StudentInformation.class.getName()).log(Level.SEVERE, null, ex);
+            } catch (InterruptedException ex) {
+                Logger.getLogger(StudentInformation.class.getName()).log(Level.SEVERE, null, ex);
+            }
+
+          
+                
+
+      
+                JOptionPane.showMessageDialog(null,"Data is saved successfully");
+                
+
+            
+            
+            Date currentDate = GregorianCalendar.getInstance().getTime();
+            DateFormat df = DateFormat.getDateInstance();
+            String dateString = df.format(currentDate);
+
+            Date d = new Date();
+            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+            String timeString = sdf.format(d);
+
+            String value0 = timeString;
+            String value1 = dateString;
+            String val = txt_emp.getText().toString();
+         
+             
+        
+        
+        }
+        
+    }//GEN-LAST:event_cmd_saveActionPerformed
+
+       
+
+
+
+    
+    private void txt_aptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_aptActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_txt_aptActionPerformed
+
+    private void txt_firstnameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_firstnameActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_txt_firstnameActionPerformed
+
+    private void r_femaleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_r_femaleActionPerformed
+        // TODO add your handling code here:
+        gender ="Female";
+        r_female.setSelected(true);
+        r_male.setSelected(false);
+        
+    }//GEN-LAST:event_r_femaleActionPerformed
+
+    private void r_maleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_r_maleActionPerformed
+        // TODO add your handling code here:
+        gender ="Male";
+        r_male.setSelected(true);
+        r_female.setSelected(false);
+    }//GEN-LAST:event_r_maleActionPerformed
+
+    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
+        // TODO add your handling code here:
+        
+         int p = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete record?","Delete",JOptionPane.YES_NO_OPTION);
+        if(p==0){
+            Date currentDate = GregorianCalendar.getInstance().getTime();
+            DateFormat df = DateFormat.getDateInstance();
+            String dateString = df.format(currentDate);
+
+            Date d = new Date();
+            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+            String timeString = sdf.format(d);
+
+            String value0 = timeString;
+            String value1 = dateString;
+            String val = txt_emp.getText().toString();
+           
+            try{
+String notobedel= String.valueOf(txt_studentid.getText());
+File f1 = new File("output.txt");
+BufferedWriter writer;
+                writer = new BufferedWriter(new FileWriter(f1));
+Scanner sc =new Scanner (f1);
+while(sc.hasNextLine()){String data = sc.nextLine();
+String variable[] = data.split("\\s+");
+String da=data.trim();
+String studid=variable[3];
+if(studid.equals(notobedel)){
+continue;
+}
+writer.write(data+System.lineSeparator());
+writer.close();
+sc.close();
+}
+                JOptionPane.showMessageDialog(null,"Record Deleted");
+
+            }catch(Exception e){
+
+                JOptionPane.showMessageDialog(null, e);
+            }finally {
+
+                try{
+                    rs.close();
+                    pst.close();
+
+                }
+                catch(Exception e){
+
+                }
+            }
+        
+        }
+        
+        
+    }//GEN-LAST:event_jButton3ActionPerformed
+
+    private void txt_search1ComponentRemoved(java.awt.event.ContainerEvent evt) {//GEN-FIRST:event_txt_search1ComponentRemoved
+        // TODO add your handling code here:
+    }//GEN-LAST:event_txt_search1ComponentRemoved
+
+    private void txt_search1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_search1ActionPerformed
+
+            File f = new File("output.txt");    
+
+    Scanner sc = null;
+        try {
+            sc = new Scanner(f);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(StudentInformation.class.getName()).log(Level.SEVERE, null, ex);
+        }
+while(sc.hasNextLine()){
+    String data = sc.nextLine();
+String variable[] = data.split("\\s+");
+String p=variable[3];
+      if(p.equals(String.valueOf(this.txt_search1.getText()))){//linear Search
+         
+
+          this.txt_studentid.setText(variable[3]);
+      this.txt_firstname.setText(variable[0]);
+      this.txt_surname.setText(variable[1]);
+     // this.jcmbDepartment.setText(variable[4]);
+      this.txt_dob.setText(variable[2]);
+      this.txt_email.setText(variable[4]);
+      this.txt_tel.setText(variable[5]);
+      this.txt_address.setText(variable[6]);
+      this.txt_add2.setText(variable[7]);
+      this.txt_apt.setText(variable[8]);
+      this.txt_pc.setText(variable[9]);
+     
+      }
+     
+}
+  
+    }//GEN-LAST:event_txt_search1ActionPerformed
+
+    private void txt_search1KeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_search1KeyReleased
+        // TODO add your handling code here:
+        try{
+
+            String sql ="select * from Student_Information where id=? ";
+
+            pst=conn.prepareStatement(sql);
+            pst.setString(1,txt_search1.getText());
+            rs=pst.executeQuery();
+
+            String add1 =rs.getString("id");
+            txt_studentid.setText(add1);
+
+            String add2 =rs.getString("first_name");
+            txt_firstname.setText(add2);
+
+            String add3 =rs.getString("surname");
+            txt_surname.setText(add3);
+
+            String add4 =rs.getString("Dob");
+            txt_dob.setText(add4);
+
+            String add5 =rs.getString("Email");
+            txt_email.setText(add5);
+
+            String add6 =rs.getString("Telephone");
+            txt_tel.setText(add6);
+
+            String add7 =rs.getString("Address");
+            txt_address.setText(add7);
+
+            String add8 =rs.getString("Address2");
+            txt_add2.setText(add8);
+
+            String add9 =rs.getString("Apartment");
+            txt_apt.setText(add9);
+
+            String add10 =rs.getString("Post_code");
+            txt_pc.setText(add10);
+
+           
+           
+
+            byte[] img = rs.getBytes("Image");
+            ImageIcon imageIcon = new ImageIcon(new ImageIcon(img).getImage().getScaledInstance(lbl_img.getWidth(), lbl_img.getHeight(), Image.SCALE_SMOOTH));
+            lbl_img.setIcon(imageIcon);
+
+        }catch(Exception e){
+            
+        }
+        finally {
+
+            try{
+
+                rs.close();
+                pst.close();
+
+            }
+            catch(Exception e){
+
+            }
+        }
+    }//GEN-LAST:event_txt_search1KeyReleased
+
+    private void button2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button2ActionPerformed
+  new Choice(String.valueOf(this.txt_studentid.getText())).setVisible(true);        // TODO add your handling code here:
+        
+    }//GEN-LAST:event_button2ActionPerformed
+
+    private void txt_addressActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_addressActionPerformed
+        // TODO add your handling code here:
+    }//GEN-LAST:event_txt_addressActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(StudentInformation.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(StudentInformation.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(StudentInformation.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(StudentInformation.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new StudentInformation().setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JMenu File;
+    private java.awt.Button button2;
+    private javax.swing.JButton cmd_save;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JButton jButton3;
+    private javax.swing.JDesktopPane jDesktopPane1;
+    private javax.swing.JDialog jDialog1;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel10;
+    private javax.swing.JLabel jLabel11;
+    private javax.swing.JLabel jLabel13;
+    private javax.swing.JLabel jLabel14;
+    private javax.swing.JLabel jLabel15;
+    private javax.swing.JLabel jLabel16;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JLabel jLabel7;
+    private javax.swing.JLabel jLabel8;
+    private javax.swing.JMenu jMenu1;
+    private javax.swing.JMenu jMenu2;
+    private javax.swing.JMenuBar jMenuBar1;
+    private javax.swing.JMenuBar jMenuBar2;
+    private javax.swing.JMenuItem jMenuItem1;
+    private javax.swing.JPanel jPanel3;
+    private javax.swing.JPanel jPanel5;
+    private javax.swing.JMenu lbl_date;
+    private javax.swing.JLabel lbl_img;
+    private javax.swing.JMenu lbl_time;
+    private javax.swing.JRadioButton r_female;
+    private javax.swing.JRadioButton r_male;
+    private javax.swing.JTextField txt_add2;
+    private javax.swing.JTextField txt_address;
+    private javax.swing.JTextField txt_apt;
+    private javax.swing.JTextField txt_dob;
+    private javax.swing.JTextField txt_email;
+    private javax.swing.JLabel txt_emp;
+    private javax.swing.JTextField txt_firstname;
+    private javax.swing.JTextField txt_pc;
+    private javax.swing.JTextField txt_search1;
+    private javax.swing.JTextField txt_studentid;
+    private javax.swing.JTextField txt_surname;
+    private javax.swing.JTextField txt_tel;
+    // End of variables declaration//GEN-END:variables
+     
+    private ImageIcon format =null;
+    //strin filename
+    String filename = null;
+    byte[] person_image = null;
+    
+    private String gender;
+    
+    
+}
diff --git a/Admission-counselling-system/src/student/information/system/StudentInformationSystem.java b/Admission-counselling-system/src/student/information/system/StudentInformationSystem.java
new file mode 100644
index 00000000..3f9f439f
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/StudentInformationSystem.java
@@ -0,0 +1,21 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author Hyrex
+ */
+public class StudentInformationSystem {
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        // TODO code application logic here
+    }
+    
+}
diff --git a/Admission-counselling-system/src/student/information/system/db.java b/Admission-counselling-system/src/student/information/system/db.java
new file mode 100644
index 00000000..38dc8b41
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/db.java
@@ -0,0 +1,33 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author Hyrex
+ */
+import java.sql.*;
+import javax.swing.*;
+public class db {
+
+    Connection conn=null;
+    public static Connection java_db(){
+        
+        try{
+            Class.forName("org.sqlite.JDBC");
+            Connection conn =DriverManager.getConnection("jdbc:sqlite:studentInfo.sqlite");
+            //JOptionPane.showMessageDialog(null, "Connection to database is successful");
+      
+            return conn;
+           
+            
+        }catch (Exception e){
+            JOptionPane.showMessageDialog(null, e);
+            return null;
+        }
+        
+    }
+}
\ No newline at end of file
diff --git a/Admission-counselling-system/src/student/information/system/images/Add.png b/Admission-counselling-system/src/student/information/system/images/Add.png
new file mode 100644
index 00000000..04c46166
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/Add.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/Presentation1.jpg b/Admission-counselling-system/src/student/information/system/images/Presentation1.jpg
new file mode 100644
index 00000000..74a78a0c
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/Presentation1.jpg differ
diff --git a/Admission-counselling-system/src/student/information/system/images/Save-icon.png b/Admission-counselling-system/src/student/information/system/images/Save-icon.png
new file mode 100644
index 00000000..fcc18dc7
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/Save-icon.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/Search.png b/Admission-counselling-system/src/student/information/system/images/Search.png
new file mode 100644
index 00000000..3838cfc4
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/Search.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/Update.png b/Admission-counselling-system/src/student/information/system/images/Update.png
new file mode 100644
index 00000000..c1312686
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/Update.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/attach.png b/Admission-counselling-system/src/student/information/system/images/attach.png
new file mode 100644
index 00000000..6310fa18
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/attach.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/bk.jpg b/Admission-counselling-system/src/student/information/system/images/bk.jpg
new file mode 100644
index 00000000..9116c7eb
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/bk.jpg differ
diff --git a/Admission-counselling-system/src/student/information/system/images/bk2.jpg b/Admission-counselling-system/src/student/information/system/images/bk2.jpg
new file mode 100644
index 00000000..ece7844c
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/bk2.jpg differ
diff --git a/Admission-counselling-system/src/student/information/system/images/bk3.jpg b/Admission-counselling-system/src/student/information/system/images/bk3.jpg
new file mode 100644
index 00000000..65aa2cb2
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/bk3.jpg differ
diff --git a/Admission-counselling-system/src/student/information/system/images/bk4.jpg b/Admission-counselling-system/src/student/information/system/images/bk4.jpg
new file mode 100644
index 00000000..af404351
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/bk4.jpg differ
diff --git a/Admission-counselling-system/src/student/information/system/images/delete_16x16.gif b/Admission-counselling-system/src/student/information/system/images/delete_16x16.gif
new file mode 100644
index 00000000..327af2a5
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/delete_16x16.gif differ
diff --git a/Admission-counselling-system/src/student/information/system/images/erase-128.png b/Admission-counselling-system/src/student/information/system/images/erase-128.png
new file mode 100644
index 00000000..9f86d130
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/erase-128.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/logout.png b/Admission-counselling-system/src/student/information/system/images/logout.png
new file mode 100644
index 00000000..35c88106
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/logout.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/pnbennet.png b/Admission-counselling-system/src/student/information/system/images/pnbennet.png
new file mode 100644
index 00000000..50fc3ae4
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/pnbennet.png differ
diff --git a/Admission-counselling-system/src/student/information/system/images/update icon.png b/Admission-counselling-system/src/student/information/system/images/update icon.png
new file mode 100644
index 00000000..3778d945
Binary files /dev/null and b/Admission-counselling-system/src/student/information/system/images/update icon.png differ
diff --git a/Admission-counselling-system/src/student/information/system/users.form b/Admission-counselling-system/src/student/information/system/users.form
new file mode 100644
index 00000000..3fbb8d45
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/users.form
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jPanel2" min="-2" max="-2" attributes="0"/>
+              <EmptySpace pref="11" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace min="-2" pref="27" max="-2" attributes="0"/>
+              <Component id="jPanel2" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JPanel" name="jPanel2">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="0" attributes="0">
+                  <EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
+                  <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+                  <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                      <Component id="cmd_add" alignment="0" max="32767" attributes="0"/>
+                      <Component id="cmd_delete" alignment="0" max="32767" attributes="0"/>
+                      <Component id="cmd_update" alignment="0" max="32767" attributes="0"/>
+                      <Component id="jButton1" max="32767" attributes="0"/>
+                  </Group>
+                  <EmptySpace pref="40" max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" attributes="0">
+                  <Group type="103" groupAlignment="0" attributes="0">
+                      <Group type="102" attributes="0">
+                          <EmptySpace min="-2" pref="48" max="-2" attributes="0"/>
+                          <Component id="cmd_add" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="cmd_update" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="cmd_delete" min="-2" max="-2" attributes="0"/>
+                          <EmptySpace max="-2" attributes="0"/>
+                          <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <Group type="102" alignment="0" attributes="0">
+                          <EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
+                          <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                  </Group>
+                  <EmptySpace max="32767" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="cmd_add">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/Save-icon.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Add "/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmd_addActionPerformed"/>
+          </Events>
+        </Component>
+        <Container class="javax.swing.JPanel" name="jPanel1">
+          <Properties>
+            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+              <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
+                <TitledBorder title="Login_Information">
+                  <Font PropertyName="font" name="Adobe Arabic" size="18" style="1"/>
+                </TitledBorder>
+              </Border>
+            </Property>
+          </Properties>
+
+          <Layout>
+            <DimensionLayout dim="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="103" groupAlignment="0" attributes="0">
+                              <Group type="102" alignment="1" attributes="0">
+                                  <Group type="103" groupAlignment="1" attributes="0">
+                                      <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
+                                      <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  </Group>
+                                  <EmptySpace min="-2" pref="29" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace min="-2" pref="20" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <Group type="102" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                          </Group>
+                      </Group>
+                      <Group type="103" groupAlignment="1" max="-2" attributes="0">
+                          <Component id="txt_dep" max="32767" attributes="0"/>
+                          <Component id="txt_password" alignment="0" max="32767" attributes="0"/>
+                          <Component id="txt_username" alignment="0" max="32767" attributes="0"/>
+                          <Component id="txt_combo" alignment="0" pref="160" max="32767" attributes="0"/>
+                          <Component id="txt_id" alignment="0" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace pref="42" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+            <DimensionLayout dim="1">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace pref="25" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="txt_combo" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="txt_id" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="txt_dep" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="txt_username" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="txt_password" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+            </DimensionLayout>
+          </Layout>
+          <SubComponents>
+            <Component class="javax.swing.JLabel" name="jLabel1">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Select Users"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="txt_password">
+            </Component>
+            <Component class="javax.swing.JComboBox" name="txt_combo">
+              <Properties>
+                <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+                  <StringArray count="0"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="popupMenuWillBecomeInvisible" listener="javax.swing.event.PopupMenuListener" parameters="javax.swing.event.PopupMenuEvent" handler="txt_comboPopupMenuWillBecomeInvisible"/>
+              </Events>
+            </Component>
+            <Component class="javax.swing.JLabel" name="jLabel3">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Password"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="txt_username">
+            </Component>
+            <Component class="javax.swing.JLabel" name="jLabel2">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Username"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="jLabel4">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Id"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="txt_id">
+              <Properties>
+                <Property name="editable" type="boolean" value="false"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JLabel" name="jLabel5">
+              <Properties>
+                <Property name="text" type="java.lang.String" value="Division"/>
+              </Properties>
+            </Component>
+            <Component class="javax.swing.JTextField" name="txt_dep">
+            </Component>
+          </SubComponents>
+        </Container>
+        <Component class="javax.swing.JButton" name="cmd_delete">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/delete_16x16.gif"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Delete"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmd_deleteActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="cmd_update">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/update icon.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Update"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmd_updateActionPerformed"/>
+          </Events>
+        </Component>
+        <Component class="javax.swing.JButton" name="jButton1">
+          <Properties>
+            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+              <Image iconType="3" name="/student/information/system/images/erase-128.png"/>
+            </Property>
+            <Property name="text" type="java.lang.String" value="Clear"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
diff --git a/Admission-counselling-system/src/student/information/system/users.java b/Admission-counselling-system/src/student/information/system/users.java
new file mode 100644
index 00000000..0b839355
--- /dev/null
+++ b/Admission-counselling-system/src/student/information/system/users.java
@@ -0,0 +1,471 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package student.information.system;
+
+/**
+ *
+ * @author Hyrex
+ */
+import java.awt.*;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import javax.swing.*;
+public class users extends javax.swing.JFrame {
+Connection conn=null;
+ResultSet rs=null;
+PreparedStatement pst=null;
+    /**
+     * Creates new form Users_details
+     */
+    public users() {
+        initComponents();
+        conn=db.java_db();
+        Toolkit toolkit = getToolkit();
+        Dimension size = toolkit.getScreenSize();
+        setLocation(size.width/2 - getWidth()/2, 
+        size.height/2 - getHeight()/2);
+        Fillcombobox();
+    }
+private void Fillcombobox(){
+        
+        try {
+            String sql ="select * from Users";
+            pst=conn.prepareStatement(sql);
+            rs=pst.executeQuery();
+            
+            while(rs.next()) {
+                String name =rs.getString("username");
+                txt_combo.addItem(name);
+            }
+        }catch (Exception e){
+            
+            JOptionPane.showMessageDialog(null, e);  
+        } finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }catch (Exception e){
+            
+        }
+        }
+    
+    }
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jPanel2 = new javax.swing.JPanel();
+        cmd_add = new javax.swing.JButton();
+        jPanel1 = new javax.swing.JPanel();
+        jLabel1 = new javax.swing.JLabel();
+        txt_password = new javax.swing.JTextField();
+        txt_combo = new javax.swing.JComboBox();
+        jLabel3 = new javax.swing.JLabel();
+        txt_username = new javax.swing.JTextField();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel4 = new javax.swing.JLabel();
+        txt_id = new javax.swing.JTextField();
+        jLabel5 = new javax.swing.JLabel();
+        txt_dep = new javax.swing.JTextField();
+        cmd_delete = new javax.swing.JButton();
+        cmd_update = new javax.swing.JButton();
+        jButton1 = new javax.swing.JButton();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+        cmd_add.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/Save-icon.png"))); // NOI18N
+        cmd_add.setText("Add ");
+        cmd_add.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                cmd_addActionPerformed(evt);
+            }
+        });
+
+        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Login_Information", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Adobe Arabic", 1, 18))); // NOI18N
+
+        jLabel1.setText("Select Users");
+
+        txt_combo.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
+            public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
+            }
+            public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
+                txt_comboPopupMenuWillBecomeInvisible(evt);
+            }
+            public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
+            }
+        });
+
+        jLabel3.setText("Password");
+
+        jLabel2.setText("Username");
+
+        jLabel4.setText("Id");
+
+        txt_id.setEditable(false);
+
+        jLabel5.setText("Division");
+
+        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addContainerGap()
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
+                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                                .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING)
+                                .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING))
+                            .addGap(29, 29, 29))
+                        .addGroup(jPanel1Layout.createSequentialGroup()
+                            .addComponent(jLabel5)
+                            .addGap(20, 20, 20)))
+                    .addGroup(jPanel1Layout.createSequentialGroup()
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                            .addComponent(jLabel4)
+                            .addComponent(jLabel1))
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+                    .addComponent(txt_dep)
+                    .addComponent(txt_password, javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(txt_username, javax.swing.GroupLayout.Alignment.LEADING)
+                    .addComponent(txt_combo, javax.swing.GroupLayout.Alignment.LEADING, 0, 160, Short.MAX_VALUE)
+                    .addComponent(txt_id, javax.swing.GroupLayout.Alignment.LEADING))
+                .addContainerGap(42, Short.MAX_VALUE))
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel1Layout.createSequentialGroup()
+                .addContainerGap(25, Short.MAX_VALUE)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_combo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel1))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_id, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel4))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel5)
+                    .addComponent(txt_dep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel2))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(txt_password, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel3))
+                .addContainerGap())
+        );
+
+        cmd_delete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/delete_16x16.gif"))); // NOI18N
+        cmd_delete.setText("Delete");
+        cmd_delete.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                cmd_deleteActionPerformed(evt);
+            }
+        });
+
+        cmd_update.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/update icon.png"))); // NOI18N
+        cmd_update.setText("Update");
+        cmd_update.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                cmd_updateActionPerformed(evt);
+            }
+        });
+
+        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/student/information/system/images/erase-128.png"))); // NOI18N
+        jButton1.setText("Clear");
+        jButton1.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                jButton1ActionPerformed(evt);
+            }
+        });
+
+        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+        jPanel2.setLayout(jPanel2Layout);
+        jPanel2Layout.setHorizontalGroup(
+            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel2Layout.createSequentialGroup()
+                .addGap(18, 18, 18)
+                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                    .addComponent(cmd_add, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(cmd_delete, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(cmd_update, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                    .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                .addContainerGap(40, Short.MAX_VALUE))
+        );
+        jPanel2Layout.setVerticalGroup(
+            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(jPanel2Layout.createSequentialGroup()
+                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel2Layout.createSequentialGroup()
+                        .addGap(48, 48, 48)
+                        .addComponent(cmd_add)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(cmd_update)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(cmd_delete)
+                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                        .addComponent(jButton1))
+                    .addGroup(jPanel2Layout.createSequentialGroup()
+                        .addGap(28, 28, 28)
+                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(11, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGap(27, 27, 27)
+                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void cmd_deleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmd_deleteActionPerformed
+        // TODO add your handling code here:
+        
+         int p = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete record?","Delete",JOptionPane.YES_NO_OPTION);
+        if(p==0){
+         String sql ="delete from Users where username=? ";
+        try{
+            pst=conn.prepareStatement(sql);
+            pst.setString(1, txt_username.getText());
+            pst.execute();
+            JOptionPane.showMessageDialog(null,"Record Deleted");
+            
+            
+        }catch(Exception e){
+            
+            JOptionPane.showMessageDialog(null, e);
+        }finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }
+            catch(Exception e){
+                
+            }
+        }
+        
+        }
+       Fillcombobox();
+    }//GEN-LAST:event_cmd_deleteActionPerformed
+
+    private void txt_comboPopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_txt_comboPopupMenuWillBecomeInvisible
+        
+         String tmp =(String) txt_combo.getSelectedItem();
+         String sql="select * from Users where username=?";
+        
+        
+        try{
+            pst=conn.prepareStatement(sql);
+            pst.setString(1, tmp);
+            rs=pst.executeQuery();
+            
+            if(rs.next()){
+                
+                String add1 =rs.getString("username");
+                txt_username.setText(add1);
+                
+                String add2 =rs.getString("password");
+                txt_password.setText(add2);
+                
+                String add3 =rs.getString("id");
+                txt_id.setText(add3);
+                
+                String add4 =rs.getString("division");
+                txt_dep.setText(add4);
+                
+               
+            }
+            
+        }catch (Exception e){
+            JOptionPane.showMessageDialog(null, e);
+        }
+        finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }
+            catch(Exception e){
+                
+            }
+        }// TODO add your handling code here:
+        
+       
+    }//GEN-LAST:event_txt_comboPopupMenuWillBecomeInvisible
+
+    private void cmd_updateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmd_updateActionPerformed
+        // TODO add your handling code here:
+        int p = JOptionPane.showConfirmDialog(null, "Are you sure you want to update record?","Update Record",JOptionPane.YES_NO_OPTION);
+        if(p==0){
+         try{
+            
+            String value1 = txt_id.getText();
+            String value2 = txt_username.getText();
+            String value3 = txt_password.getText();
+            String value4 = txt_dep.getText();
+            
+            
+            String sql= "update Users set id='"+value1+"', username='"+value2+"', password='"+value3+"',division='"+value4+"' where id='"+value1+"' ";
+            
+            pst=conn.prepareStatement(sql);
+            pst.execute();
+            JOptionPane.showMessageDialog(null, "Record Updated");
+            
+        }catch(Exception e){
+       JOptionPane.showMessageDialog(null, e);
+        }
+        finally {
+            
+            try{
+                rs.close();
+                pst.close();
+                
+            }
+            catch(Exception e){
+                
+            }
+        }
+        }
+        Fillcombobox();
+    }//GEN-LAST:event_cmd_updateActionPerformed
+
+    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+        // TODO add your handling code here:
+        txt_username.setText("");
+        txt_password.setText("");
+        txt_dep.setText("");
+        txt_id.setText("");       
+    }//GEN-LAST:event_jButton1ActionPerformed
+
+    private void cmd_addActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmd_addActionPerformed
+   int p = JOptionPane.showConfirmDialog(null, "Are you sure you want to add record?","Add Record",JOptionPane.YES_NO_OPTION);
+        if(p==0){        // TODO add your handling code here:
+
+        try {
+
+            String sql ="insert into Users (username,password,division) values (?,?,?) ";
+
+            pst=conn.prepareStatement(sql);
+            pst.setString(1,txt_username.getText());
+            pst.setString(2,txt_password.getText());
+            pst.setString(3,txt_dep.getText());
+
+            pst.execute();
+            JOptionPane.showMessageDialog(null,"Data is saved successfully");
+
+        }
+        catch (Exception e)
+
+        {
+            JOptionPane.showMessageDialog(null,e);
+        }
+        finally {
+
+            try{
+                rs.close();
+                pst.close();
+
+            }
+            catch(Exception e){
+
+            }
+        }
+        } 
+        Fillcombobox();
+    }//GEN-LAST:event_cmd_addActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[]) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(users.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(users.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(users.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(users.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+        //</editor-fold>
+
+        /* Create and display the form */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                new users().setVisible(true);
+            }
+        });
+    }
+
+    
+    
+    
+    
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JButton cmd_add;
+    private javax.swing.JButton cmd_delete;
+    private javax.swing.JButton cmd_update;
+    private javax.swing.JButton jButton1;
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JPanel jPanel2;
+    private javax.swing.JComboBox txt_combo;
+    private javax.swing.JTextField txt_dep;
+    private javax.swing.JTextField txt_id;
+    private javax.swing.JTextField txt_password;
+    private javax.swing.JTextField txt_username;
+    // End of variables declaration//GEN-END:variables
+}
diff --git a/Admission-counselling-system/studentInfo.sqlite b/Admission-counselling-system/studentInfo.sqlite
new file mode 100644
index 00000000..3e4485b0
Binary files /dev/null and b/Admission-counselling-system/studentInfo.sqlite differ
diff --git a/Age_Frame_Calculator.java b/Age_Frame_Calculator.java
new file mode 100644
index 00000000..8e642e9c
--- /dev/null
+++ b/Age_Frame_Calculator.java
@@ -0,0 +1,64 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.time.LocalDate;
+import java.time.Period;
+
+public class AgeCalculatorApp {
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(() -> {
+            createAndShowGUI();
+        });
+    }
+
+    private static void createAndShowGUI() {
+        JFrame frame = new JFrame("Age Calculator");
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new GridLayout(3, 2));
+
+        JLabel birthDateLabel = new JLabel("Enter Birthdate (yyyy-mm-dd): ");
+        JTextField birthDateField = new JTextField();
+        JLabel ageLabel = new JLabel("Your Age: ");
+        JLabel ageResult = new JLabel("");
+        JLabel remainingDaysLabel = new JLabel("Remaining Days Until Next Birthday: ");
+        JLabel remainingDaysResult = new JLabel("");
+
+        JButton calculateButton = new JButton("Calculate");
+
+        calculateButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                String birthDateText = birthDateField.getText();
+                LocalDate birthDate = LocalDate.parse(birthDateText);
+                LocalDate currentDate = LocalDate.now();
+
+                Period age = Period.between(birthDate, currentDate);
+                ageResult.setText(age.getYears() + " years, " + age.getMonths() + " months, " + age.getDays() + " days");
+
+                LocalDate nextBirthday = birthDate.withYear(currentDate.getYear());
+                if (nextBirthday.isBefore(currentDate) || nextBirthday.isEqual(currentDate)) {
+                    nextBirthday = nextBirthday.plusYears(1);
+                }
+
+                Period remainingDays = Period.between(currentDate, nextBirthday);
+                remainingDaysResult.setText(remainingDays.getDays() + " days");
+            }
+        });
+
+        panel.add(birthDateLabel);
+        panel.add(birthDateField);
+        panel.add(ageLabel);
+        panel.add(ageResult);
+        panel.add(remainingDaysLabel);
+        panel.add(remainingDaysResult);
+
+        frame.getContentPane().add(panel, BorderLayout.CENTER);
+        frame.getContentPane().add(calculateButton, BorderLayout.SOUTH);
+
+        frame.pack();
+        frame.setVisible(true);
+    }
+}
diff --git a/AirlineReservationSystem.java b/AirlineReservationSystem.java
new file mode 100644
index 00000000..d5dbe903
--- /dev/null
+++ b/AirlineReservationSystem.java
@@ -0,0 +1,147 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+class Passenger {
+    private String name;
+    private int age;
+    private String passportNumber;
+
+    public Passenger(String name, int age, String passportNumber) {
+        this.name = name;
+        this.age = age;
+        this.passportNumber = passportNumber;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String toString() {
+        return "Name: " + name + ", Age: " + age + ", Passport Number: " + passportNumber;
+    }
+}
+
+class Flight {
+    private String flightNumber;
+    private String destination;
+    private int availableSeats;
+    private List<Passenger> passengers;
+
+    public Flight(String flightNumber, String destination, int availableSeats) {
+        this.flightNumber = flightNumber;
+        this.destination = destination;
+        this.availableSeats = availableSeats;
+        this.passengers = new ArrayList<>();
+    }
+
+    public String getFlightNumber() {
+        return flightNumber;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+    public int getAvailableSeats() {
+        return availableSeats;
+    }
+
+    public List<Passenger> getPassengers() {
+        return passengers;
+    }
+
+    public boolean bookSeat(Passenger passenger) {
+        if (availableSeats > 0) {
+            passengers.add(passenger);
+            availableSeats--;
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "Flight Number: " + flightNumber + ", Destination: " + destination + ", Available Seats: " + availableSeats;
+    }
+}
+
+public class AirlineReservationSystem {
+    private static List<Flight> flights = new ArrayList<>();
+
+    public static void main(String[] args) {
+        initializeFlights();
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("Airline Reservation System Menu:");
+            System.out.println("1. List Available Flights");
+            System.out.println("2. Book a Flight");
+            System.out.println("3. Exit");
+            System.out.print("Enter your choice: ");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline character
+
+            switch (choice) {
+                case 1:
+                    listAvailableFlights();
+                    break;
+                case 2:
+                    bookAFlight(scanner);
+                    break;
+                case 3:
+                    System.out.println("Exiting the program. Thank you!");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please enter a valid option.");
+            }
+        }
+    }
+
+    private static void initializeFlights() {
+        flights.add(new Flight("F101", "New York", 100));
+        flights.add(new Flight("F102", "Los Angeles", 120));
+        flights.add(new Flight("F103", "Chicago", 90));
+    }
+
+    private static void listAvailableFlights() {
+        System.out.println("Available Flights:");
+        for (Flight flight : flights) {
+            System.out.println(flight);
+        }
+    }
+
+    private static void bookAFlight(Scanner scanner) {
+        System.out.print("Enter your name: ");
+        String name = scanner.nextLine();
+        System.out.print("Enter your age: ");
+        int age = scanner.nextInt();
+        scanner.nextLine(); // Consume the newline character
+        System.out.print("Enter your passport number: ");
+        String passportNumber = scanner.nextLine();
+        System.out.print("Enter the flight number you want to book: ");
+        String flightNumber = scanner.nextLine();
+
+        Flight selectedFlight = null;
+        for (Flight flight : flights) {
+            if (flight.getFlightNumber().equalsIgnoreCase(flightNumber)) {
+                selectedFlight = flight;
+                break;
+            }
+        }
+
+        if (selectedFlight != null) {
+            Passenger passenger = new Passenger(name, age, passportNumber);
+            if (selectedFlight.bookSeat(passenger)) {
+                System.out.println("Seat booked successfully!");
+            } else {
+                System.out.println("Sorry, the flight is fully booked.");
+            }
+        } else {
+            System.out.println("Invalid flight number. Please enter a valid flight number.");
+        }
+    }
+}
diff --git a/Alaram_clock.java b/Alaram_clock.java
new file mode 100644
index 00000000..7786dff3
--- /dev/null
+++ b/Alaram_clock.java
@@ -0,0 +1,25 @@
+import java.util.Timer;
+import java.util.TimerTask;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class AlarmClock {
+
+    public static void main(String[] args) {
+        // Set the alarm time (24-hour format)
+        String alarmTime = "15:30"; // Change this to your desired alarm time
+
+        // Create a timer
+        Timer timer = new Timer();
+
+        // Define a task to be executed when the alarm time is reached
+        TimerTask task = new TimerTask() {
+            public void run() {
+                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                String currentTime = sdf.format(new Date());
+                if (currentTime.equals(alarmTime)) {
+                    System.out.println("Alarm! It's time to wake up!");
+                    // You can replace the message with any action you want
+                }
+            }
+        };
diff --git a/Analog Clock.java b/Analog Clock.java
new file mode 100644
index 00000000..95c08ec0
--- /dev/null
+++ b/Analog Clock.java	
@@ -0,0 +1,73 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+public class AnalogClock extends JPanel {
+    private int radius;
+    private int centerX;
+    private int centerY;
+
+    public AnalogClock(int radius) {
+        this.radius = radius;
+        this.setPreferredSize(new Dimension(2 * radius, 2 * radius));
+        Timer timer = new Timer(1000, new ClockListener());
+        timer.start();
+    }
+
+    private class ClockListener implements ActionListener {
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            repaint();
+        }
+    }
+
+    private void drawClockHand(Graphics g, int handLength, int angle, int value) {
+        int x = (int) (centerX + handLength * Math.sin(Math.toRadians(angle)));
+        int y = (int) (centerY - handLength * Math.cos(Math.toRadians(angle)));
+        g.drawLine(centerX, centerY, x, y);
+        if (value != -1) {
+            g.drawString(Integer.toString(value), x, y);
+        }
+    }
+
+    @Override
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+        centerX = getWidth() / 2;
+        centerY = getHeight() / 2;
+
+        Calendar now = new GregorianCalendar();
+        int hour = now.get(Calendar.HOUR);
+        int minute = now.get(Calendar.MINUTE);
+        int second = now.get(Calendar.SECOND);
+
+        g.setColor(Color.BLACK);
+        g.drawOval(centerX - radius, centerY - radius, 2 * radius, 2 * radius);
+        g.drawString("12", centerX - 5, centerY - radius + 15);
+        g.drawString("3", centerX + radius - 10, centerY + 5);
+        g.drawString("6", centerX - 5, centerY + radius - 5);
+        g.drawString("9", centerX - radius + 5, centerY + 5);
+
+        int hourAngle = (360 / 12) * (hour % 12) - 90;
+        int minuteAngle = (360 / 60) * minute - 90;
+        int secondAngle = (360 / 60) * second - 90;
+
+        g.setColor(Color.BLUE);
+        drawClockHand(g, (int) (0.5 * radius), hourAngle, hour);
+        g.setColor(Color.GREEN);
+        drawClockHand(g, (int) (0.8 * radius), minuteAngle, minute);
+        g.setColor(Color.RED);
+        drawClockHand(g, (int) (0.9 * radius), secondAngle, second);
+    }
+
+    public static void main(String[] args) {
+        JFrame frame = new JFrame("Analog Clock");
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.add(new AnalogClock(200));
+        frame.pack();
+        frame.setVisible(true);
+    }
+}
diff --git a/AppletAnalogClock.java b/AppletAnalogClock.java
new file mode 100644
index 00000000..5464e050
--- /dev/null
+++ b/AppletAnalogClock.java
@@ -0,0 +1,101 @@
+import java.applet.*;  
+import java.awt.*;  
+import java.util.*;  
+import java.text.*;  
+  
+public class MyClock extends Applet implements Runnable {  
+  
+   int width, height;  
+   Thread t = null;  
+   boolean threadSuspended;  
+   int hours=0, minutes=0, seconds=0;  
+   String timeString = "";  
+  
+   public void init() {  
+      width = getSize().width;  
+      height = getSize().height;  
+      setBackground( Color.black );  
+   }  
+  
+   public void start() {  
+      if ( t == null ) {  
+         t = new Thread( this );  
+         t.setPriority( Thread.MIN_PRIORITY );  
+         threadSuspended = false;  
+         t.start();  
+      }  
+      else {  
+         if ( threadSuspended ) {  
+            threadSuspended = false;  
+            synchronized( this ) {  
+               notify();  
+            }  
+         }  
+      }  
+   }  
+  
+   public void stop() {  
+      threadSuspended = true;  
+   }  
+  
+   public void run() {  
+      try {  
+         while (true) {  
+  
+            Calendar cal = Calendar.getInstance();  
+            hours = cal.get( Calendar.HOUR_OF_DAY );  
+            if ( hours > 12 ) hours -= 12;  
+            minutes = cal.get( Calendar.MINUTE );  
+            seconds = cal.get( Calendar.SECOND );  
+  
+            SimpleDateFormat formatter  
+               = new SimpleDateFormat( "hh:mm:ss", Locale.getDefault() );  
+            Date date = cal.getTime();  
+            timeString = formatter.format( date );  
+  
+            // Now the thread checks to see if it should suspend itself  
+            if ( threadSuspended ) {  
+               synchronized( this ) {  
+                  while ( threadSuspended ) {  
+                     wait();  
+                  }  
+               }  
+            }  
+            repaint();  
+            t.sleep( 1000 );  // interval specified in milliseconds  
+         }  
+      }  
+      catch (Exception e) { }  
+   }  
+  
+   void drawHand( double angle, int radius, Graphics g ) {  
+      angle -= 0.5 * Math.PI;  
+      int x = (int)( radius*Math.cos(angle) );  
+      int y = (int)( radius*Math.sin(angle) );  
+      g.drawLine( width/2, height/2, width/2 + x, height/2 + y );  
+   }  
+  
+   void drawWedge( double angle, int radius, Graphics g ) {  
+      angle -= 0.5 * Math.PI;  
+      int x = (int)( radius*Math.cos(angle) );  
+      int y = (int)( radius*Math.sin(angle) );  
+      angle += 2*Math.PI/3;  
+      int x2 = (int)( 5*Math.cos(angle) );  
+      int y2 = (int)( 5*Math.sin(angle) );  
+      angle += 2*Math.PI/3;  
+      int x3 = (int)( 5*Math.cos(angle) );  
+      int y3 = (int)( 5*Math.sin(angle) );  
+      g.drawLine( width/2+x2, height/2+y2, width/2 + x, height/2 + y );  
+      g.drawLine( width/2+x3, height/2+y3, width/2 + x, height/2 + y );  
+      g.drawLine( width/2+x2, height/2+y2, width/2 + x3, height/2 + y3 );  
+   }  
+  
+   public void paint( Graphics g ) {  
+      g.setColor( Color.gray );  
+      drawWedge( 2*Math.PI * hours / 12, width/5, g );  
+      drawWedge( 2*Math.PI * minutes / 60, width/3, g );  
+      drawHand( 2*Math.PI * seconds / 60, width/2, g );  
+      g.setColor( Color.white );  
+      g.drawString( timeString, 10, height-10 );  
+   }  
+}  
diff --git a/AppletCom.java b/AppletCom.java
new file mode 100644
index 00000000..371f046f
--- /dev/null
+++ b/AppletCom.java
@@ -0,0 +1,21 @@
+import java.applet.*;  
+import java.awt.*;  
+import java.awt.event.*;  
+public class ContextApplet extends Applet implements ActionListener{  
+Button b;  
+  
+public void init(){  
+b=new Button("Click");  
+b.setBounds(50,50,60,50);  
+  
+add(b);  
+b.addActionListener(this);  
+}  
+  
+public void actionPerformed(ActionEvent e){  
+  
+AppletContext ctx=getAppletContext();  
+Applet a=ctx.getApplet("app2");  
+a.setBackground(Color.yellow);  
+}  
+}  
diff --git a/Authentication System b/Authentication System
new file mode 100644
index 00000000..56e93223
--- /dev/null
+++ b/Authentication System	
@@ -0,0 +1,47 @@
+import java.util.HashMap;
+import java.util.Map;
+
+public class AuthenticationSystem {
+
+    private Map<String, User> users;
+
+    public AuthenticationSystem() {
+        this.users = new HashMap<>();
+    }
+
+    public void registerUser(User user) {
+        this.users.put(user.getUsername(), user);
+    }
+
+    public User login(String username, String password) {
+        User user = this.users.get(username);
+        if (user != null && user.isAuthenticated(password)) {
+            return user;
+        } else {
+            return null;
+        }
+    }
+
+    public static class User {
+
+        private String username;
+        private String password;
+
+        public User(String username, String password) {
+            this.username = username;
+            this.password = password;
+        }
+
+        public String getUsername() {
+            return username;
+        }
+
+        public String getPassword() {
+            return password;
+        }
+
+        public boolean isAuthenticated(String password) {
+            return this.password.equals(password);
+        }
+    }
+}
diff --git a/AwtMouseListener.java b/AwtMouseListener.java
new file mode 100644
index 00000000..4f09c6d9
--- /dev/null
+++ b/AwtMouseListener.java
@@ -0,0 +1,33 @@
+import java.awt.*;  
+import java.awt.event.*;  
+public class MouseListenerExample extends Frame implements MouseListener{  
+    Label l;  
+    MouseListenerExample(){  
+        addMouseListener(this);  
+          
+        l=new Label();  
+        l.setBounds(20,50,100,20);  
+        add(l);  
+        setSize(300,300);  
+        setLayout(null);  
+        setVisible(true);  
+    }  
+    public void mouseClicked(MouseEvent e) {  
+        l.setText("Mouse Clicked");  
+    }  
+    public void mouseEntered(MouseEvent e) {  
+        l.setText("Mouse Entered");  
+    }  
+    public void mouseExited(MouseEvent e) {  
+        l.setText("Mouse Exited");  
+    }  
+    public void mousePressed(MouseEvent e) {  
+        l.setText("Mouse Pressed");  
+    }  
+    public void mouseReleased(MouseEvent e) {  
+        l.setText("Mouse Released");  
+    }  
+public static void main(String[] args) {  
+    new MouseListenerExample();  
+}  
+}  
diff --git a/BMI.java b/BMI.java
new file mode 100644
index 00000000..e97e22a3
--- /dev/null
+++ b/BMI.java
@@ -0,0 +1,14 @@
+import java.util.Scanner;
+public class Example {
+   public static void main(String args[]) {
+      Scanner sc = new Scanner(System.in);
+      System.out.print("Input weight in kilogram: ");
+      double weight = sc.nextDouble();
+      System.out.print("
+Input height in meters: ");
+      double height = sc.nextDouble();
+      double BMI = weight / (height * height);
+      System.out.print("
+The Body Mass Index (BMI) is " + BMI + " kg/m2");
+   }
+}
diff --git a/BMI_calculator.java b/BMI_calculator.java
new file mode 100644
index 00000000..c4221550
--- /dev/null
+++ b/BMI_calculator.java
@@ -0,0 +1,40 @@
+import java.util.Scanner;
+
+public class BMICalculator {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("BMI Calculator");
+        System.out.println("---------------");
+
+        System.out.print("Enter your weight in kilograms: ");
+        double weight = scanner.nextDouble();
+
+        System.out.print("Enter your height in meters: ");
+        double height = scanner.nextDouble();
+
+        double bmi = calculateBMI(weight, height);
+
+        System.out.println("\nYour BMI is: " + bmi);
+        interpretBMI(bmi);
+
+        scanner.close();
+    }
+
+    public static double calculateBMI(double weight, double height) {
+        return weight / (height * height);
+    }
+
+    public static void interpretBMI(double bmi) {
+        System.out.print("BMI Interpretation: ");
+        if (bmi < 18.5) {
+            System.out.println("Underweight");
+        } else if (bmi < 25) {
+            System.out.println("Normal Weight");
+        } else if (bmi < 30) {
+            System.out.println("Overweight");
+        } else {
+            System.out.println("Obese");
+        }
+    }
+}
diff --git a/Banking.java b/Banking.java
new file mode 100644
index 00000000..4e44c979
--- /dev/null
+++ b/Banking.java
@@ -0,0 +1,150 @@
+import java.util.Scanner;
+
+class BankDetails {
+    private String accno;
+    private String name;
+    private String acc_type;
+    private long balance;
+    Scanner sc = new Scanner(System.in);
+
+    // Method to open a new account
+    public void openAccount() {
+        System.out.print("Enter Account No: ");
+        accno = sc.next();
+        System.out.print("Enter Account type: ");
+        acc_type = sc.next();
+        System.out.print("Enter Name: ");
+        name = sc.next();
+        System.out.print("Enter Balance: ");
+        balance = sc.nextLong();
+    }
+
+    // Method to display account details
+    public void showAccount() {
+        System.out.println("Name of account holder: " + name);
+        System.out.println("Account no.: " + accno);
+        System.out.println("Account type: " + acc_type);
+        System.out.println("Balance: " + balance);
+    }
+
+    // Method to deposit money
+    public void deposit() {
+        long amt;
+        System.out.println("Enter the amount you want to deposit: ");
+        amt = sc.nextLong();
+        balance = balance + amt;
+    }
+
+    // Method to withdraw money
+    public void withdrawal() {
+        long amt;
+        System.out.println("Enter the amount you want to withdraw: ");
+        amt = sc.nextLong();
+        if (balance >= amt) {
+            balance = balance - amt;
+            System.out.println("Balance after withdrawal: " + balance);
+        } else {
+            System.out.println("Your balance is less than " + amt + "\tTransaction failed...!!");
+        }
+    }
+
+    // Method to search an account number
+    public boolean search(String ac_no) {
+        if (accno.equals(ac_no)) {
+            showAccount();
+            return true;
+        }
+        return false;
+    }
+}
+
+public class BankingApp {
+    public static void main(String arg[]) {
+        Scanner sc = new Scanner(System.in);
+
+        // Create initial accounts
+        System.out.print("How many number of customers do you want to input? ");
+        int n = sc.nextInt();
+        BankDetails[] accounts = new BankDetails[n];
+
+        for (int i = 0; i < accounts.length; i++) {
+            accounts[i] = new BankDetails();
+            accounts[i].openAccount();
+        }
+
+        // Main menu loop
+        int choice;
+        do {
+            System.out.println("\n ***Banking System Application***");
+            System.out.println("1. Display all account details");
+            System.out.println("2. Search by Account number");
+            System.out.println("3. Deposit the amount");
+            System.out.println("4. Withdraw the amount");
+            System.out.println("5. Exit");
+            System.out.print("Enter your choice: ");
+            choice = sc.nextInt();
+
+            switch (choice) {
+                case 1:
+                    // Display all account details
+                    for (int i = 0; i < accounts.length; i++) {
+                        accounts[i].showAccount();
+                    }
+                    break;
+                case 2:
+                    // Search by Account number
+                    System.out.print("Enter account no. you want to search: ");
+                    String ac_no = sc.next();
+                    boolean found = false;
+                    for (int i = 0; i < accounts.length; i++) {
+                        found = accounts[i].search(ac_no);
+                        if (found) {
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        System.out.println("Search failed! Account doesn't exist..!!");
+                    }
+                    break;
+                case 3:
+                    // Deposit the amount
+                    System.out.print("Enter Account no. : ");
+                    ac_no = sc.next();
+                    found = false;
+                    for (int i = 0; i < accounts.length; i++) {
+                        found = accounts[i].search(ac_no);
+                        if (found) {
+                            accounts[i].deposit();
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        System.out.println("Search failed! Account doesn't exist..!!");
+                    }
+                    break;
+                case 4:
+                    // Withdraw the amount
+                    System.out.print("Enter Account No : ");
+                    ac_no = sc.next();
+                    found = false;
+                    for (int i = 0; i < accounts.length; i++) {
+                        found = accounts[i].search(ac_no);
+                        if (found) {
+                            accounts[i].withdrawal();
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        System.out.println("Search failed! Account doesn't exist..!!");
+                    }
+                    break;
+                case 5:
+                    System.out.println("See you soon...");
+                    break;
+                default:
+                    System.out.println("Invalid choice! Please select a valid option.");
+                    break;
+            }
+        } while (choice != 5);
+    }
+}
diff --git a/Basic Jarvis-like AI b/Basic Jarvis-like AI
new file mode 100644
index 00000000..697eb217
--- /dev/null
+++ b/Basic Jarvis-like AI	
@@ -0,0 +1,33 @@
+import java.util.Scanner;
+
+public class Jarvis {
+
+    private SpeechRecognizer speechRecognizer;
+    private TextToSpeech textToSpeech;
+    private NaturalLanguageProcessor nlp;
+    private KnowledgeBase knowledgeBase;
+
+    public Jarvis(SpeechRecognizer speechRecognizer, TextToSpeech textToSpeech, NaturalLanguageProcessor nlp, KnowledgeBase knowledgeBase) {
+        this.speechRecognizer = speechRecognizer;
+        this.textToSpeech = textToSpeech;
+        this.nlp = nlp;
+        this.knowledgeBase = knowledgeBase;
+    }
+
+    public void listenAndRespond() {
+        String userInput = speechRecognizer.recognizeSpeech();
+        String response = nlp.processInput(userInput, knowledgeBase);
+        textToSpeech.speak(response);
+    }
+
+    public static void main(String[] args) {
+        SpeechRecognizer speechRecognizer = new GoogleCloudSpeechRecognizer();
+        TextToSpeech textToSpeech = new GoogleCloudTextToSpeech();
+        NaturalLanguageProcessor nlp = new OpenNLPProcessor();
+        KnowledgeBase knowledgeBase = new WikidataKnowledgeBase();
+
+        Jarvis jarvis = new Jarvis(speechRecognizer, textToSpeech, nlp, knowledgeBase);
+
+        jarvis.listenAndRespond();
+    }
+}
diff --git a/Basic_Bank_System/Basic_Bank_System.java b/Basic_Bank_System/Basic_Bank_System.java
new file mode 100644
index 00000000..c8fabad4
--- /dev/null
+++ b/Basic_Bank_System/Basic_Bank_System.java
@@ -0,0 +1,83 @@
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Scanner;
+
+class Bank {
+    private Map<String, Account> accounts;
+
+    public Bank() {
+        this.accounts = new HashMap<>();
+    }
+
+    public void addAccount(String accountNumber, String customerName, double balance) {
+        Account account = new Account(accountNumber, customerName, balance);
+        accounts.put(accountNumber, account);
+    }
+
+    public void displayAccountInfo(String accountNumber) {
+        if (accounts.containsKey(accountNumber)) {
+            Account account = accounts.get(accountNumber);
+            System.out.println("Account Number: " + account.getAccountNumber());
+            System.out.println("Customer Name: " + account.getCustomerName());
+            System.out.println("Balance: $" + account.getBalance());
+        } else {
+            System.out.println("Account not found!");
+        }
+    }
+
+    public void performTransaction(String accountNumber, double amount) {
+        if (accounts.containsKey(accountNumber)) {
+            Account account = accounts.get(accountNumber);
+            account.deposit(amount);
+            System.out.println("Transaction successful. Updated balance: $" + account.getBalance());
+        } else {
+            System.out.println("Account not found!");
+        }
+    }
+}
+
+class Account {
+    private String accountNumber;
+    private String customerName;
+    private double balance;
+
+    public Account(String accountNumber, String customerName, double balance) {
+        this.accountNumber = accountNumber;
+        this.customerName = customerName;
+        this.balance = balance;
+    }
+
+    public String getAccountNumber() {
+        return accountNumber;
+    }
+
+    public String getCustomerName() {
+        return customerName;
+    }
+
+    public double getBalance() {
+        return balance;
+    }
+
+    public void deposit(double amount) {
+        balance += amount;
+    }
+}
+
+public class BankingSystem {
+    public static void main(String[] args) {
+        Bank bank = new Bank();
+
+        // Adding a few accounts
+        bank.addAccount("101", "John Doe", 1000.0);
+        bank.addAccount("102", "Jane Smith", 1500.0);
+
+        // Performing transactions
+        bank.performTransaction("101", 500.0);
+        bank.performTransaction("103", 200.0); // This account doesn't exist
+
+        // Displaying account information
+        bank.displayAccountInfo("101");
+        bank.displayAccountInfo("102");
+    }
+}
diff --git a/Billing-system/.classpath b/Billing-system/.classpath
new file mode 100644
index 00000000..d1ded76c
--- /dev/null
+++ b/Billing-system/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="img"/>
+	<classpathentry kind="src" path="res"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/Billing-system/.project b/Billing-system/.project
new file mode 100644
index 00000000..003b6103
--- /dev/null
+++ b/Billing-system/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>RestaurantBillingSystem</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/Billing-system/bin/billingsystem/Login.fxml b/Billing-system/bin/billingsystem/Login.fxml
new file mode 100644
index 00000000..93f816d1
--- /dev/null
+++ b/Billing-system/bin/billingsystem/Login.fxml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="pane" prefHeight="400" prefWidth="600" stylesheets="@login.css" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="billingsystem.MainController">
+   <children>
+      <Button fx:id="login" layoutX="254.0" layoutY="296.0" mnemonicParsing="false" onAction="#handleLogin" prefHeight="24.0" prefWidth="93.0" text="Login">
+         <font>
+            <Font name="System Bold" size="12.0" />
+         </font></Button>
+      <TextField fx:id="user" layoutX="226.0" layoutY="166.0" onAction="#handleLogin" />
+      <PasswordField fx:id="pwdFld" layoutX="226.0" layoutY="216.0" onAction="#handleLogin" />
+      <Label layoutX="226.0" layoutY="141.0" prefHeight="25.0" prefWidth="149.0" text="Username" textFill="IVORY" />
+      <Label layoutX="226.0" layoutY="191.0" prefHeight="25.0" prefWidth="149.0" text="Password" textFill="IVORY" />
+      <Label alignment="CENTER" layoutX="151.0" layoutY="52.0" prefHeight="54.0" prefWidth="299.0" text="Restaurant Billing System" textFill="IVORY">
+         <font>
+            <Font name="System Bold" size="20.0" />
+         </font>
+      </Label>
+   </children>
+</AnchorPane>
diff --git a/Billing-system/bin/billingsystem/Main.class b/Billing-system/bin/billingsystem/Main.class
new file mode 100644
index 00000000..5bf4e430
Binary files /dev/null and b/Billing-system/bin/billingsystem/Main.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$1.class b/Billing-system/bin/billingsystem/MainController$1.class
new file mode 100644
index 00000000..2d7f941c
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$10.class b/Billing-system/bin/billingsystem/MainController$10.class
new file mode 100644
index 00000000..8fc74b4f
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$10.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$11.class b/Billing-system/bin/billingsystem/MainController$11.class
new file mode 100644
index 00000000..15b60741
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$11.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$2$1.class b/Billing-system/bin/billingsystem/MainController$2$1.class
new file mode 100644
index 00000000..846737d5
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$2$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$2$2.class b/Billing-system/bin/billingsystem/MainController$2$2.class
new file mode 100644
index 00000000..9aff8034
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$2$2.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$2.class b/Billing-system/bin/billingsystem/MainController$2.class
new file mode 100644
index 00000000..386fbcad
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$2.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$3$1.class b/Billing-system/bin/billingsystem/MainController$3$1.class
new file mode 100644
index 00000000..9b4e9479
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$3$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$3.class b/Billing-system/bin/billingsystem/MainController$3.class
new file mode 100644
index 00000000..ea6a0b13
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$3.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$4$1.class b/Billing-system/bin/billingsystem/MainController$4$1.class
new file mode 100644
index 00000000..6ab0434f
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$4$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$4$2.class b/Billing-system/bin/billingsystem/MainController$4$2.class
new file mode 100644
index 00000000..04e5ce46
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$4$2.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$4$3.class b/Billing-system/bin/billingsystem/MainController$4$3.class
new file mode 100644
index 00000000..2533bd58
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$4$3.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$4.class b/Billing-system/bin/billingsystem/MainController$4.class
new file mode 100644
index 00000000..0e7379db
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$4.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$5$1.class b/Billing-system/bin/billingsystem/MainController$5$1.class
new file mode 100644
index 00000000..2223e115
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$5$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$5.class b/Billing-system/bin/billingsystem/MainController$5.class
new file mode 100644
index 00000000..0a47614e
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$5.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$6$1.class b/Billing-system/bin/billingsystem/MainController$6$1.class
new file mode 100644
index 00000000..3a6d45f9
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$6$1.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$6$2.class b/Billing-system/bin/billingsystem/MainController$6$2.class
new file mode 100644
index 00000000..f09f07ad
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$6$2.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$6.class b/Billing-system/bin/billingsystem/MainController$6.class
new file mode 100644
index 00000000..3f65d731
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$6.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$7.class b/Billing-system/bin/billingsystem/MainController$7.class
new file mode 100644
index 00000000..7fca743e
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$7.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$8.class b/Billing-system/bin/billingsystem/MainController$8.class
new file mode 100644
index 00000000..ab023ab0
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$8.class differ
diff --git a/Billing-system/bin/billingsystem/MainController$9.class b/Billing-system/bin/billingsystem/MainController$9.class
new file mode 100644
index 00000000..932da29a
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController$9.class differ
diff --git a/Billing-system/bin/billingsystem/MainController.class b/Billing-system/bin/billingsystem/MainController.class
new file mode 100644
index 00000000..5e0deec5
Binary files /dev/null and b/Billing-system/bin/billingsystem/MainController.class differ
diff --git a/Billing-system/bin/billingsystem/Order.class b/Billing-system/bin/billingsystem/Order.class
new file mode 100644
index 00000000..4576a9c7
Binary files /dev/null and b/Billing-system/bin/billingsystem/Order.class differ
diff --git a/Billing-system/bin/billingsystem/Table.class b/Billing-system/bin/billingsystem/Table.class
new file mode 100644
index 00000000..6b258a68
Binary files /dev/null and b/Billing-system/bin/billingsystem/Table.class differ
diff --git a/Billing-system/bin/billingsystem/User.class b/Billing-system/bin/billingsystem/User.class
new file mode 100644
index 00000000..dfcf746f
Binary files /dev/null and b/Billing-system/bin/billingsystem/User.class differ
diff --git a/Billing-system/bin/billingsystem/login.css b/Billing-system/bin/billingsystem/login.css
new file mode 100644
index 00000000..537feecb
--- /dev/null
+++ b/Billing-system/bin/billingsystem/login.css
@@ -0,0 +1,3 @@
+#pane {
+    -fx-background-image:url('login.jpg');
+}
\ No newline at end of file
diff --git a/Billing-system/bin/billingsystem/login.jpg b/Billing-system/bin/billingsystem/login.jpg
new file mode 100644
index 00000000..7d2fe852
Binary files /dev/null and b/Billing-system/bin/billingsystem/login.jpg differ
diff --git a/Billing-system/bin/login.jpg b/Billing-system/bin/login.jpg
new file mode 100644
index 00000000..7d2fe852
Binary files /dev/null and b/Billing-system/bin/login.jpg differ
diff --git a/Billing-system/bin/main.jpg b/Billing-system/bin/main.jpg
new file mode 100644
index 00000000..dad82c17
Binary files /dev/null and b/Billing-system/bin/main.jpg differ
diff --git a/Billing-system/bin/main_area.jpg b/Billing-system/bin/main_area.jpg
new file mode 100644
index 00000000..2efc0758
Binary files /dev/null and b/Billing-system/bin/main_area.jpg differ
diff --git a/Billing-system/bin/systemstyle/Format.class b/Billing-system/bin/systemstyle/Format.class
new file mode 100644
index 00000000..9885b718
Binary files /dev/null and b/Billing-system/bin/systemstyle/Format.class differ
diff --git a/Billing-system/img/login.jpg b/Billing-system/img/login.jpg
new file mode 100644
index 00000000..7d2fe852
Binary files /dev/null and b/Billing-system/img/login.jpg differ
diff --git a/Billing-system/img/main.jpg b/Billing-system/img/main.jpg
new file mode 100644
index 00000000..dad82c17
Binary files /dev/null and b/Billing-system/img/main.jpg differ
diff --git a/Billing-system/img/main_area.jpg b/Billing-system/img/main_area.jpg
new file mode 100644
index 00000000..2efc0758
Binary files /dev/null and b/Billing-system/img/main_area.jpg differ
diff --git a/Billing-system/src/billingsystem/Login.fxml b/Billing-system/src/billingsystem/Login.fxml
new file mode 100644
index 00000000..93f816d1
--- /dev/null
+++ b/Billing-system/src/billingsystem/Login.fxml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.PasswordField?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.text.Font?>
+
+<AnchorPane id="pane" prefHeight="400" prefWidth="600" stylesheets="@login.css" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="billingsystem.MainController">
+   <children>
+      <Button fx:id="login" layoutX="254.0" layoutY="296.0" mnemonicParsing="false" onAction="#handleLogin" prefHeight="24.0" prefWidth="93.0" text="Login">
+         <font>
+            <Font name="System Bold" size="12.0" />
+         </font></Button>
+      <TextField fx:id="user" layoutX="226.0" layoutY="166.0" onAction="#handleLogin" />
+      <PasswordField fx:id="pwdFld" layoutX="226.0" layoutY="216.0" onAction="#handleLogin" />
+      <Label layoutX="226.0" layoutY="141.0" prefHeight="25.0" prefWidth="149.0" text="Username" textFill="IVORY" />
+      <Label layoutX="226.0" layoutY="191.0" prefHeight="25.0" prefWidth="149.0" text="Password" textFill="IVORY" />
+      <Label alignment="CENTER" layoutX="151.0" layoutY="52.0" prefHeight="54.0" prefWidth="299.0" text="Restaurant Billing System" textFill="IVORY">
+         <font>
+            <Font name="System Bold" size="20.0" />
+         </font>
+      </Label>
+   </children>
+</AnchorPane>
diff --git a/Billing-system/src/billingsystem/Main.java b/Billing-system/src/billingsystem/Main.java
new file mode 100644
index 00000000..e89d85e5
--- /dev/null
+++ b/Billing-system/src/billingsystem/Main.java
@@ -0,0 +1,118 @@
+package billingsystem;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.logging.FileHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.stage.Stage;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+
+/**
+ * 
+ * @author Jason Li
+ * @version 1.0
+ * @since 19.12.2016
+ * 
+ * 
+ * The Class Main.
+ */
+public class Main extends Application {
+
+	/** The Constant logger. */
+	private static final Logger logger = Logger.getLogger(Main.class.getName());
+	
+	/** The fh log. */
+	private static FileHandler fhLog;
+	
+	/** The user path. */
+	private String userPath = "res/users.ser";
+	
+	/** The log path. */
+	private String logPath = "res/activity.log";
+	
+	/** The root admin. */
+	private final String rootAdmin = "admin";
+	
+	/** The users list. */
+	private ArrayList<User> usersList = null;
+	
+	/** The jarpath. */
+	private String jarpath;
+
+	/* (non-Javadoc)
+	 * @see javafx.application.Application#start(javafx.stage.Stage)
+	 */
+	@Override
+	public void start(Stage primaryStage) {
+		
+		try {
+			fhLog = new FileHandler(logPath, true);
+			logger.addHandler(fhLog);
+			SimpleFormatter formatter = new SimpleFormatter();
+			fhLog.setFormatter(formatter);
+		} catch (SecurityException e) {
+			logger.log(Level.SEVERE, "" + e);
+		} catch (IOException e) {
+			logger.log(Level.WARNING,
+					"Logger could not be set up to log to activity log. Logs will only be displayed in the console. \n"
+							+ e);
+		}
+		try {
+			try {
+				FileInputStream fileIn = new FileInputStream(userPath);
+				ObjectInputStream in = new ObjectInputStream(fileIn);
+				usersList = (ArrayList<User>) in.readObject();
+				in.close();
+				fileIn.close();
+			} catch (IOException i) {
+				logger.log(Level.INFO, "Root admin account 'admin' created on first time login.");
+				// Create admin account if not existent
+				User admin = new User(rootAdmin, "", true);
+				usersList = new ArrayList<User>();
+				usersList.add(admin);
+				try {
+					// Create user list with initial admin account
+					FileOutputStream fileOut = new FileOutputStream(userPath);
+					ObjectOutputStream out = new ObjectOutputStream(fileOut);
+					out.writeObject(usersList);
+					out.close();
+					fileOut.close();
+				} catch (IOException i2) {
+					logger.log(Level.WARNING, "" + i2);
+				}
+			}
+
+			// Create Login Screen
+			Parent root = FXMLLoader.load(getClass().getResource("/billingsystem/Login.fxml"));
+			Scene scene = new Scene(root);
+			scene.getStylesheets().add(getClass().getResource("login.css").toExternalForm());
+			primaryStage.setScene(scene);
+			primaryStage.setResizable(false);
+			primaryStage.show();
+			fhLog.close();
+
+		} catch (Exception e) {
+			logger.log(Level.SEVERE,
+					"Login Screen file has been deleted or is corrupted. Please restore 'Login.fxml' links. \n" + e);
+		}
+	}
+
+	/**
+	 * The main method.
+	 *
+	 * @param args the arguments
+	 */
+	public static void main(String[] args) {
+		launch(args);
+	}
+}
diff --git a/Billing-system/src/billingsystem/MainController.java b/Billing-system/src/billingsystem/MainController.java
new file mode 100644
index 00000000..da3edd0b
--- /dev/null
+++ b/Billing-system/src/billingsystem/MainController.java
@@ -0,0 +1,1724 @@
+package billingsystem;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.Scanner;
+import java.util.logging.FileHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+import java.util.stream.Collectors;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.Node;
+import javafx.scene.Scene;
+import javafx.scene.control.Alert;
+import javafx.scene.control.Alert.AlertType;
+import javafx.scene.control.Button;
+import javafx.scene.control.ButtonBar.ButtonData;
+import javafx.scene.control.ButtonType;
+import javafx.scene.control.CheckBox;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.DatePicker;
+import javafx.scene.control.Dialog;
+import javafx.scene.control.Label;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.control.ScrollPane.ScrollBarPolicy;
+import javafx.scene.control.Separator;
+import javafx.scene.control.TextArea;
+import javafx.scene.control.TextField;
+import javafx.scene.control.Tooltip;
+import javafx.scene.input.MouseButton;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.ColumnConstraints;
+import javafx.scene.layout.GridPane;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+import javafx.stage.FileChooser;
+import javafx.stage.Screen;
+import javafx.stage.Stage;
+import javafx.stage.WindowEvent;
+
+import systemstyle.Format;
+
+// TODO: Auto-generated Javadoc
+/**
+ * * @author Jason Li.
+ *
+ * @version 1.0
+ * @since 19.12.2016 *
+ * 
+ * 
+ *        The Class MainController.
+ */
+public class MainController {
+
+	/** The login. */
+	@FXML
+	private Button login;
+
+	/** The user. */
+	@FXML
+	private TextField user;
+
+	/** The pwd fld. */
+	@FXML
+	private PasswordField pwdFld;
+
+	/** The users list. */
+	private ArrayList<User> usersList;
+
+	/** The current user. */
+	private User currentUser;
+
+	/** The Constant userLogger. */
+	private static final Logger userLogger = Logger.getLogger(MainController.class.getName() + "_User");
+
+	/** The fh user. */
+	private static FileHandler fhUser;
+
+	/** The Constant logger. */
+	private static final Logger logger = Logger.getLogger(MainController.class.getName());
+
+	/** The fh log. */
+	private static FileHandler fhLog;
+
+	/** The file. */
+	private File file;
+
+	/** The menubook. */
+	private ArrayList<Order> menubook = new ArrayList<Order>();
+
+	/** The order log. */
+	private ArrayList<Order> orderLog = new ArrayList<Order>();
+
+	/** The full format. */
+	private static DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL, Locale.getDefault());
+
+	/** The date format. */
+	private static DateFormat dateFormat = new SimpleDateFormat("HH:mm dd/MM/yyyy");
+
+	/** The time format. */
+	private static DateFormat timeFormat = new SimpleDateFormat("HH:mm");
+
+	/** The date time format. */
+	private static DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("HH:mm");
+
+	/** The user path. */
+	private String userPath = "res/users.ser";
+
+	/** The user log path. */
+	private String userLogPath = "res/";
+
+	/** The log path. */
+	private String logPath = "res/activity.log";
+
+	/** The order log path. */
+	private String orderLogPath = "res/orderlog.ser";
+
+	/** The csv path. */
+	private String csvPath = "res/export.csv";
+
+	/** The menu path. */
+	private String menuPath = "res/menubook.ser";
+
+	/**
+	 * Handle login.
+	 *
+	 * @param evt
+	 *            the login event
+	 * 
+	 */
+	@FXML
+	private void handleLogin(ActionEvent evt) {
+
+		// Set up general logger
+		try {
+			fhLog = new FileHandler(logPath, true);
+			logger.addHandler(fhLog);
+			SimpleFormatter formatter = new SimpleFormatter();
+			fhLog.setFormatter(formatter);
+		} catch (SecurityException e) {
+			logger.log(Level.SEVERE, "" + e);
+		} catch (IOException e) {
+			logger.log(Level.WARNING,
+					"Logger could not be set up to log to activity log. Logs will only be displayed in the console. \n"
+							+ e);
+		}
+
+		// Load available users for system
+		try {
+			FileInputStream fileIn = new FileInputStream(userPath);
+			ObjectInputStream in = new ObjectInputStream(fileIn);
+			usersList = (ArrayList<User>) in.readObject();
+			in.close();
+			fileIn.close();
+		} catch (IOException i) {
+			logger.log(Level.SEVERE, "No user list have been found. Try reloading program. ");
+		} catch (ClassNotFoundException c) {
+			logger.log(Level.SEVERE, "" + c);
+		}
+
+		// Login validation section
+		// Loop through stored users to see if entered user matches any
+		boolean matchFound = false;
+		for (int i = 0; i < usersList.size(); i++) {
+			String enteredUser = user.getText();
+			String storedUser = usersList.get(i).getUserName();
+			if (enteredUser.equals(storedUser)) {
+				String enteredPwd = pwdFld.getText();
+				if (enteredPwd.equals(usersList.get(i).getUserPassword())) {
+					matchFound = true;
+					currentUser = usersList.get(i);
+					userLogPath += (currentUser.getUserName() + "_activity.log");
+					// Set up user logger
+					try {
+						fhUser = new FileHandler(userLogPath, true);
+						fhUser.setLevel(Level.FINE);
+						userLogger.setLevel(Level.FINE);
+						userLogger.addHandler(fhUser);
+						SimpleFormatter formatter = new SimpleFormatter();
+						fhUser.setFormatter(formatter);
+					} catch (SecurityException e) {
+						logger.log(Level.SEVERE, "" + e);
+					} catch (IOException e) {
+						logger.log(Level.WARNING,
+								"User activity logger failed to set up. An unlogged user session has been started by "
+										+ currentUser.getUserName());
+						logger.log(Level.WARNING,
+								"Logger could not be set up to log to activity log. Logs will only be displayed in the console. \n"
+										+ e);
+					}
+					userLogger.log(Level.FINE, currentUser.getUserName() + " has logged into the system. ");
+				}
+				break;
+			}
+		}
+		// Login & password correct
+		if (matchFound) {
+			constructMainScreen();
+		}
+		// Else error message
+		else {
+			Alert alert = new Alert(AlertType.ERROR);
+			alert.setTitle("Login failed");
+			alert.setHeaderText("Login failed");
+			alert.setContentText("Login or password incorrect");
+
+			alert.showAndWait();
+		}
+	}
+
+	// Main Screen construction section
+
+	/** The v menu. */
+	// Variables for Main Screen Menu
+	private VBox vMenu;
+
+	/** The account. */
+	private Button account;
+
+	/** The v manager. */
+	// Variables for Manager Menu
+	private VBox vManager;
+
+	/** The manage users. */
+	private Button manageUsers;
+
+	/** The add menubook. */
+	private Button addMenubook;
+
+	/** The tbl pane. */
+	// Variables for Main Screen Scroll Pane
+	private Pane tblPane;
+
+	/** The tbl scrl pane. */
+	private ScrollPane tblScrlPane;
+
+	/** The lbl. */
+	private Table lbl;
+
+	/** The pane height. */
+	int paneWidth = 1000, paneHeight = 600;
+
+	/** The btn height. */
+	int btnWidth = 125, btnHeight = 35;
+
+	/** The tbl height. */
+	int tblWidth = 100, tblHeight = 100;
+
+	/** The v menu width. */
+	int vMenuWidth = 200;
+
+	/** The v manager height. */
+	int vManagerHeight = 200;
+
+	/** The file chooser. */
+	private static FileChooser fileChooser = new FileChooser();
+
+	/**
+	 * Construct main screen.
+	 */
+	private void constructMainScreen() {
+
+		Stage stage = null;
+		Pane root;
+		stage = (Stage) login.getScene().getWindow();
+		root = new Pane();
+		root.setPadding(new Insets(25));
+
+		// General Menu section
+		vMenu = new VBox(15);
+		vMenu.setPadding(new Insets(25));
+		// vMenu.setStyle("-fx-background-color: #a0522d;");
+		vMenu.setAlignment(Pos.TOP_CENTER);
+		vMenu.setPrefSize(vMenuWidth, paneHeight);
+
+		account = new Button("Account settings");
+		account.setPrefSize(btnWidth, btnHeight);
+		account.setOnAction(new EventHandler<ActionEvent>() {
+			@Override
+			public void handle(ActionEvent at) {
+				Dialog dialog = new Dialog();
+				dialog.setTitle("Account Setting");
+				dialog.setHeaderText("Enter new password and click save");
+
+				GridPane grid = new GridPane();
+				grid.setHgap(10);
+				grid.setVgap(10);
+
+				PasswordField password = new PasswordField();
+				password.setPromptText("Password");
+				PasswordField passwordConfirm = new PasswordField();
+				passwordConfirm.setPromptText("Password");
+
+				Button save = new Button("Change password");
+				save.setOnAction(new EventHandler<ActionEvent>() {
+					@Override
+					public void handle(ActionEvent change) {
+						String passwordSet = password.getText();
+						String passwordSetConfirm = passwordConfirm.getText();
+						// Check if both fields are filled
+						if (!(passwordSet.equals("") || (passwordSetConfirm.equals("")))) {
+							// Check if passwords matched
+							if (passwordSet.equals(passwordSetConfirm)) {
+								currentUser.setPassword(passwordSetConfirm);
+								userLogger.log(Level.FINE, "Successfully changed password.");
+
+								Alert alert = new Alert(AlertType.INFORMATION);
+								alert.setTitle("Password changed");
+								alert.setHeaderText("Password changed");
+								alert.setContentText("You have successfully changed your password");
+								alert.showAndWait();
+
+								try {
+									FileOutputStream fileOut = new FileOutputStream(userPath);
+									ObjectOutputStream out = new ObjectOutputStream(fileOut);
+									out.writeObject(usersList);
+									out.close();
+									fileOut.close();
+								} catch (IOException i) {
+									logger.log(Level.SEVERE, "" + i);
+								}
+
+							} else {
+
+							}
+						} else {
+							invalidInputAlert();
+						}
+					}
+				});
+
+				grid.add(new Label("Logged in as: "), 0, 0);
+				grid.add(new Label(currentUser.getUserName()), 1, 0);
+				grid.add(new Label("New Password:"), 0, 1);
+				grid.add(password, 1, 1);
+				grid.add(new Label("Confirm new password:"), 0, 2);
+				grid.add(passwordConfirm, 1, 2);
+				grid.add(save, 1, 3);
+
+				ButtonType exit = new ButtonType("Exit", ButtonData.OK_DONE);
+				dialog.getDialogPane().getButtonTypes().addAll(ButtonType.CANCEL);
+
+				dialog.getDialogPane().setContent(grid);
+				dialog.showAndWait();
+			}
+		});
+
+		Button allOrders = new Button("View Order Log");
+		allOrders.setPrefSize(btnWidth, btnHeight);
+		allOrders.setOnAction(new EventHandler<ActionEvent>() {
+			@Override
+			@SuppressWarnings("deprecation")
+			public void handle(ActionEvent ravt) {
+				Dialog dialog = new Dialog();
+				dialog.setTitle("Order Log Manager");
+				dialog.setHeaderText("Order Log:");
+
+				GridPane grid = new GridPane();
+				grid.setHgap(10);
+				grid.setVgap(10);
+
+				grid.add(new Label("Search orders"), 0, 0);
+				String[] searchColumns = { "Table No.", "Order Name", "From", "Until", "From", "Until", "Comments" };
+				// Populating columns
+				for (int i = 0; i < searchColumns.length; i++) {
+					Label searchLbl = new Label(searchColumns[i]);
+					grid.add(searchLbl, i, 1);
+				}
+
+				// Inner display of all orders
+				GridPane searchInner = new GridPane();
+				Format.innergrid(searchInner);
+				searchInner.setPrefWidth(400);
+				searchInner.setMinHeight(200);
+				String[] searchInnerCol = { "Table No.", "Order Name", "Price", "Quantity", "Total", "Order Datetime",
+						"Comments" };
+				double multiplier = 1;
+				boolean localRights = currentUser.getUserRights();
+				// Create list for selection
+				ArrayList<Order> selectedList = new ArrayList<Order>();
+				// Adjust column width depending on user type
+				if (localRights) {
+					multiplier = 0.95;
+				}
+				ColumnConstraints scol1 = new ColumnConstraints();
+				scol1.setPercentWidth(45 / (searchInnerCol.length - 4) * multiplier);
+				searchInner.getColumnConstraints().add(scol1);
+				ColumnConstraints scol2 = new ColumnConstraints();
+				scol2.setPercentWidth(25 * multiplier);
+				searchInner.getColumnConstraints().add(scol2);
+				ColumnConstraints scol3 = new ColumnConstraints();
+				scol3.setPercentWidth(10 * multiplier);
+				searchInner.getColumnConstraints().add(scol3);
+				ColumnConstraints scol4 = new ColumnConstraints();
+				scol4.setPercentWidth(10 * multiplier);
+				searchInner.getColumnConstraints().add(scol4);
+				ColumnConstraints scol5 = new ColumnConstraints();
+				scol5.setPercentWidth(10 * multiplier);
+				searchInner.getColumnConstraints().add(scol5);
+				ColumnConstraints scol6 = new ColumnConstraints();
+				scol6.setPercentWidth(45 / (searchInnerCol.length - 4) * multiplier);
+				searchInner.getColumnConstraints().add(scol6);
+				ColumnConstraints scol7 = new ColumnConstraints();
+				scol7.setPercentWidth(45 / (searchInnerCol.length - 4) * multiplier);
+				searchInner.getColumnConstraints().add(scol7);
+				if (localRights) {
+					ColumnConstraints scol8 = new ColumnConstraints();
+					scol8.setPercentWidth(5);
+					searchInner.getColumnConstraints().add(scol8);
+				}
+
+				// Generate search display
+				ArrayList<Order> localLog = new ArrayList<Order>(orderLog);
+				for (int i = 0; i < currentTables.size(); i++) {
+					ArrayList<Order> innerLocal = new ArrayList<Order>(currentTables.get(i).getOrders());
+					for (int n = 0; n < innerLocal.size(); n++) {
+						localLog.add(innerLocal.get(n));
+					}
+				}
+				ArrayList<Order> displayList = new ArrayList<Order>(localLog);
+				Collections.reverse(displayList);
+				refreshSearch(searchInner, displayList, searchInnerCol, selectedList);
+				ScrollPane searchScroll = new ScrollPane();
+				searchScroll.setVbarPolicy(ScrollBarPolicy.ALWAYS);
+				searchScroll.setFitToWidth(true);
+				searchScroll.setPrefHeight(200);
+				searchScroll.setContent(searchInner);
+				grid.add(searchScroll, 0, 4, searchColumns.length, 1);
+
+				// Populate search fields
+				ArrayList<String> tblNames = new ArrayList<String>();
+				tblNames.add("Any");
+				for (int i = 1; i <= 15; i++) {
+					tblNames.add("Table" + i);
+				}
+				ObservableList<String> oTableList = FXCollections.observableArrayList(tblNames);
+				ComboBox searchTable = new ComboBox(oTableList);
+				searchTable.getSelectionModel().selectFirst();
+				grid.add(searchTable, 0, 2);
+
+				TextField searchName = new TextField();
+				grid.add(searchName, 1, 2);
+
+				DatePicker fromDate = new DatePicker();
+				fromDate.setPrefWidth(btnWidth);
+				fromDate.setValue(LocalDate.now().minusDays(1));
+				grid.add(fromDate, 2, 2);
+
+				DatePicker untilDate = new DatePicker();
+				untilDate.setPrefWidth(btnWidth);
+				untilDate.setValue(LocalDate.now());
+				grid.add(untilDate, 3, 2);
+
+				Date localNow = new Date();
+				Date localFrom = (Date) localNow.clone();
+				localFrom.setHours(localFrom.getHours() - 1);
+				TextField fromTime = new TextField();
+				fromTime.setText(timeFormat.format(localFrom));
+				grid.add(fromTime, 4, 2);
+
+				TextField untilTime = new TextField();
+				untilTime.setText(timeFormat.format(localNow));
+				grid.add(untilTime, 5, 2);
+
+				TextField searchComments = new TextField();
+				grid.add(searchComments, 6, 2);
+
+				Button launchSearch = new Button("Search");
+				launchSearch.setOnAction(new EventHandler<ActionEvent>() {
+					@Override
+					public void handle(ActionEvent sat) {
+						// Prepare filled out search fields
+						String localTbl = (String) searchTable.getValue();
+						String localName = searchName.getText();
+						LocalDate localFromD;
+						if (fromDate.getValue() != null) {
+							// from date - 1 to include current day
+							localFromD = fromDate.getValue().minusDays(1);
+						} else {
+							localFromD = fromDate.getValue();
+						}
+						LocalDate localUntilD;
+						if (untilDate.getValue() != null) {
+							// until date + 1 to include current day
+							localUntilD = untilDate.getValue().plusDays(1);
+						} else {
+							localUntilD = untilDate.getValue();
+						}
+						LocalTime localFromT;
+						if (!fromTime.getText().equals("")) {
+							localFromT = LocalTime.parse(fromTime.getText(), dateTimeFormat).minusSeconds(1);
+						} else {
+							localFromT = null;
+						}
+						LocalTime localUntilT;
+						if (!untilTime.getText().equals("")) {
+							localUntilT = LocalTime.parse(untilTime.getText(), dateTimeFormat).plusMinutes(1);
+						} else {
+							localUntilT = null;
+						}
+						String localComments = searchComments.getText();
+						if (!(localTbl.isEmpty() && localName.isEmpty() && localComments.isEmpty())) {
+							ArrayList<Order> searchDisplay = new ArrayList<Order>(displayList);
+							// Filter for table search value
+							if (!localTbl.equals("Any")) {
+								searchDisplay = (ArrayList<Order>) searchDisplay.stream()
+										.filter(result -> result.getSrcTbl().equals(localTbl))
+										.collect(Collectors.toList());
+							}
+							// Filter for order search value
+							if (!localName.isEmpty()) {
+								searchDisplay = (ArrayList<Order>) searchDisplay.stream()
+										.filter(result -> result.getName().equals(localName))
+										.collect(Collectors.toList());
+							}
+							// Filter for date intervals
+							if (!(localFromD == null || localUntilD == null)) {
+								searchDisplay = (ArrayList<Order>) searchDisplay
+										.stream().filter(result -> result.getDate().toInstant()
+												.atZone(ZoneId.systemDefault()).toLocalDate().isAfter(localFromD))
+										.collect(Collectors.toList());
+								searchDisplay = (ArrayList<Order>) searchDisplay
+										.stream().filter(result -> result.getDate().toInstant()
+												.atZone(ZoneId.systemDefault()).toLocalDate().isBefore(localUntilD))
+										.collect(Collectors.toList());
+							}
+							// Filter for time intervals
+							if (!(localFromT == null || localUntilT == null)) {
+								searchDisplay = (ArrayList<Order>) searchDisplay
+										.stream().filter(result -> result.getDate().toInstant()
+												.atZone(ZoneId.systemDefault()).toLocalTime().isAfter(localFromT))
+										.collect(Collectors.toList());
+								searchDisplay = (ArrayList<Order>) searchDisplay
+										.stream().filter(result -> result.getDate().toInstant()
+												.atZone(ZoneId.systemDefault()).toLocalTime().isBefore(localUntilT))
+										.collect(Collectors.toList());
+							}
+							// Filter for comments
+							if (!localComments.isEmpty()) {
+								searchDisplay = (ArrayList<Order>) searchDisplay.stream()
+										.filter(result -> result.getComment().equals(localComments))
+										.collect(Collectors.toList());
+							}
+							refreshSearch(searchInner, searchDisplay, searchInnerCol, selectedList);
+						} else {
+							invalidInputAlert();
+						}
+					}
+				});
+				grid.add(launchSearch, 5, 3);
+
+				// Manager Import Export Section
+				grid.add(new Label("Import orders to order list"), 2, 5);
+				Button importOrders = new Button("Import Orders");
+				importOrders.setOnAction(new EventHandler<ActionEvent>() {
+					@Override
+					public void handle(ActionEvent exporter) {
+						fileChooser.setTitle("Open Resource File");
+						// Set extension filter
+						FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Text delimited files",
+								"*.txt", "*.csv");
+						fileChooser.getExtensionFilters().add(extFilter);
+						// Using login button simply because showOpenDialog
+						// requires a stage input
+						file = fileChooser.showOpenDialog(login.getScene().getWindow());
+						if (file != null) {
+							BufferedReader csvReader = null;
+							String line = "";
+							String delimiter = ",";
+							try {
+								csvReader = new BufferedReader(new FileReader(file));
+								while ((line = csvReader.readLine()) != null) {
+									String[] orderProperties = line.split(delimiter);
+									String impName = orderProperties[0];
+									Double impPrice = Double.parseDouble(orderProperties[1]);
+									int impQnty = Integer.parseInt(orderProperties[2]);
+									String impTbl = orderProperties[3];
+									Double impTotal = Double.parseDouble(orderProperties[4]);
+									String impComment = orderProperties[5];
+									Date impDate = dateFormat.parse(orderProperties[6]);
+									Order impOrder = new Order(impName, impPrice, impQnty, impTbl, impComment, impDate);
+
+									orderLog.add(impOrder);
+									displayList.add(0, impOrder);
+								}
+								refreshSearch(searchInner, displayList, searchInnerCol, selectedList);
+								Alert alert = new Alert(AlertType.INFORMATION);
+								alert.setTitle("Import Success");
+								alert.setHeaderText("Import Success");
+								alert.setContentText("Orders successfully imported!");
+								alert.showAndWait();
+								userLogger.log(Level.FINE, currentUser.getUserName()
+										+ " imported order from an external list to order log.");
+							} catch (IOException e) {
+								invalidInputAlert();
+							} catch (ParseException p) {
+								invalidInputAlert();
+							} catch (Exception ex) {
+								Alert alert = new Alert(AlertType.ERROR);
+								alert.setTitle("Import Error");
+								alert.setHeaderText("Import Error");
+								alert.setContentText(
+										"Import failed. Check if file content has the appropriate format. If yes and the error remains, consult the error log.");
+								alert.showAndWait();
+								logger.log(Level.WARNING, "Import failed due to " + ex);
+							} finally {
+
+								if (csvReader != null) {
+									try {
+										csvReader.close();
+									} catch (IOException ex) {
+										logger.log(Level.SEVERE, "" + ex);
+									}
+								}
+							}
+						}
+					}
+				});
+
+				grid.add(importOrders, 2, 6);
+				grid.add(new Label("Export selected orders as CSV"), 5, 5);
+				Button exportOrders = new Button("Export Orders");
+				exportOrders.setOnAction(new EventHandler<ActionEvent>() {
+					@Override
+					public void handle(ActionEvent exporter) {
+						if (selectedList.size() > 0) {
+							// Call toCsvRow for every object in list and
+							// collect in String
+							String ordersAsCsv = selectedList.stream().map(Order::toCsvRow)
+									.collect(Collectors.joining(System.getProperty("line.separator")));
+							FileWriter csvFw = null;
+							BufferedWriter csvWriter = null;
+							try {
+								csvFw = new FileWriter(csvPath);
+								csvWriter = new BufferedWriter(csvFw);
+								csvWriter.write(ordersAsCsv);
+
+								Alert alert = new Alert(AlertType.INFORMATION);
+								alert.setTitle("Export success");
+								alert.setHeaderText("Export success");
+								alert.setContentText("Selected orders successfully exported!");
+
+								alert.showAndWait();
+
+							} catch (IOException ex) {
+								logger.log(Level.SEVERE, "" + ex);
+							} finally {
+								try {
+									if (csvWriter != null)
+										csvWriter.close();
+									if (csvFw != null)
+										csvFw.close();
+								} catch (IOException e) {
+									logger.log(Level.SEVERE, "" + e);
+								}
+							}
+						} else {
+							Alert alert = new Alert(AlertType.ERROR);
+							alert.setTitle("Invalid Selection");
+							alert.setHeaderText("Invalid Selection");
+							alert.setContentText("No selected orders registered. Please select orders to be exported.");
+							alert.showAndWait();
+						}
+					}
+				});
+				grid.add(exportOrders, 5, 6);
+
+				ButtonType saveButton = new ButtonType("Done", ButtonData.OK_DONE);
+				dialog.getDialogPane().getButtonTypes().addAll(saveButton);
+				dialog.getDialogPane().setContent(grid);
+				Optional<ButtonType> result = dialog.showAndWait();
+				if (result.isPresent() && result.get() == saveButton) {
+					try {
+						// Creates new order log
+						FileOutputStream fileOut = new FileOutputStream(orderLogPath);
+						ObjectOutputStream out = new ObjectOutputStream(fileOut);
+						out.writeObject(orderLog);
+						out.close();
+						fileOut.close();
+					} catch (IOException logX2) {
+						logger.log(Level.WARNING, "" + logX2);
+					}
+				}
+			}
+		});
+
+		vMenu.getChildren().addAll(allOrders, account);
+
+		// Manager menu section, only available if user is admin type
+		if (currentUser.getUserRights()) {
+			vMenu.setPrefSize(vMenuWidth, paneHeight - vManagerHeight);
+			vManager = new VBox(15);
+			vManager.setPadding(new Insets(25));
+			// vManager.setStyle("-fx-background-color: #a0522d;");
+			vManager.setAlignment(Pos.TOP_CENTER);
+			vManager.setPrefSize(vMenuWidth, vManagerHeight - 10);
+			vManager.setLayoutY(paneHeight - vManagerHeight + 10);
+
+			manageUsers = new Button("Manage Users");
+			manageUsers.setPrefSize(btnWidth, btnHeight);
+			manageUsers.setOnAction(new EventHandler<ActionEvent>() {
+				@Override
+				public void handle(ActionEvent useravt) {
+					Dialog dialog = new Dialog();
+					dialog.setTitle("Manage Users");
+					dialog.setHeaderText("Choose any of the actions below");
+
+					GridPane grid = new GridPane();
+					grid.setHgap(10);
+					grid.setVgap(10);
+
+					TextField userName = new TextField();
+					ObservableList<String> userTypes = FXCollections.observableArrayList("Standard", "Admin");
+
+					final ComboBox userSelect = new ComboBox(userTypes);
+					userSelect.getSelectionModel().selectFirst();
+
+					GridPane userInner = new GridPane();
+					Format.innergrid(userInner);
+					int userInnerCol = 3;
+					for (int i = 0; i < userInnerCol; i++) {
+						ColumnConstraints column = new ColumnConstraints(100);
+						userInner.getColumnConstraints().add(column);
+					}
+					// ArrayList<User> localList = new
+					// ArrayList<User>(usersList);
+					refreshUsers(userInner, usersList);
+					ScrollPane userInnerScrl = new ScrollPane();
+					userInnerScrl.setVbarPolicy(ScrollBarPolicy.ALWAYS);
+					userInnerScrl.setPrefHeight(150);
+					userInnerScrl.setContent(userInner);
+
+					Button addUser = new Button("Add");
+					addUser.setTooltip(new Tooltip("Default password for new user is empty"));
+					addUser.setOnAction(new EventHandler<ActionEvent>() {
+						@Override
+						public void handle(ActionEvent userat) {
+							if (userName.getText().equals("")) {
+								invalidInputAlert();
+							} else {
+								String name = userName.getText();
+								boolean doubleEntry = false;
+								// Check if user exists already
+								for (int j = 0; j < usersList.size(); j++) {
+									if (usersList.get(j).getUserName().equals(name)) {
+										doubleEntry = true;
+										Alert alert = new Alert(AlertType.ERROR);
+										alert.setTitle("Invalid Input Error");
+										alert.setHeaderText("Double Entry Error");
+										alert.setContentText("This user already exists! No new user created.");
+										alert.showAndWait();
+										break;
+									}
+								}
+								if (!doubleEntry) {
+									boolean type;
+									if (userSelect.getValue().equals("Admin")) {
+										type = true;
+									} else {
+										type = false;
+									}
+									User user = new User(name, "", type);
+									usersList.add(user);
+									refreshUsers(userInner, usersList);
+									try {
+										FileOutputStream fileOut = new FileOutputStream(userPath);
+										ObjectOutputStream out = new ObjectOutputStream(fileOut);
+										out.writeObject(usersList);
+										userLogger.log(Level.FINE, "Added new user " + userName.getText() + " of type "
+												+ userSelect.getValue() + " to the system.");
+										out.close();
+										fileOut.close();
+									} catch (IOException i) {
+										logger.log(Level.SEVERE, "" + i);
+									}
+								}
+							}
+						}
+					});
+
+					grid.add(new Label("User Name"), 0, 0);
+					grid.add(new Label("User Type"), 1, 0);
+					grid.add(userName, 0, 1);
+					grid.add(userSelect, 1, 1);
+					grid.add(addUser, 2, 1);
+					grid.add(new Label("Existing users"), 0, 2);
+					grid.add(userInnerScrl, 0, 3, 3, 1);
+
+					ButtonType saveButton = new ButtonType("Done", ButtonData.OK_DONE);
+					dialog.getDialogPane().getButtonTypes().addAll(saveButton);
+					dialog.getDialogPane().setContent(grid);
+					dialog.showAndWait();
+				}
+			});
+			addMenubook = new Button("Menubook");
+			addMenubook.setPrefSize(btnWidth, btnHeight);
+			addMenubook.setOnAction(new EventHandler<ActionEvent>() {
+				@Override
+				public void handle(ActionEvent at) {
+					Dialog dialog = new Dialog();
+					dialog.setTitle("Menubook Manager");
+					dialog.setHeaderText("Make changes to menubook and click save");
+
+					GridPane grid = new GridPane();
+					grid.setHgap(10);
+					grid.setVgap(10);
+
+					TextField mnuName = new TextField();
+					TextField mnuPrice = new TextField();
+					Button addMnu = new Button("Add");
+					ArrayList<Order> localList = new ArrayList<Order>(menubook);
+					addMnu.setOnAction(new EventHandler<ActionEvent>() {
+						@Override
+						public void handle(ActionEvent a) {
+							if (mnuName.getText().equals("") || mnuPrice.getText().equals("")) {
+								invalidInputAlert();
+							} else {
+								String name = mnuName.getText();
+								boolean doubleEntry = false;
+								// Check if menu exists already
+								for (int j = 0; j < menubook.size(); j++) {
+									if (menubook.get(j).getName().equals(name)) {
+										doubleEntry = true;
+										Alert alert = new Alert(AlertType.ERROR);
+										alert.setTitle("Invalid Input Error");
+										alert.setHeaderText("Double Entry Error");
+										alert.setContentText(
+												"The item you entered already exists in the menubook. No new item entered.");
+										alert.showAndWait();
+										break;
+									}
+								}
+								if (!doubleEntry) {
+									try {
+										// Check if price has more than 2
+										// decimals
+										String numberText = mnuPrice.getText();
+										int integerPlaces = numberText.indexOf('.');
+										int decimalPlaces;
+										if (integerPlaces >= 0) {
+											decimalPlaces = numberText.length() - integerPlaces - 1;
+										} else {
+											decimalPlaces = 0;
+										}
+										// Check if price is an actual double
+										Double price = Double.parseDouble(mnuPrice.getText());
+										if (price < 0 || decimalPlaces > 2) {
+											throw new NumberFormatException();
+										}
+										Order newOrder = new Order(name, price);
+										localList.add(newOrder);
+
+										// Overwrite existing menubook with
+										// changes
+										menubook.clear();
+										for (int i = 0; i < localList.size(); i++) {
+											menubook.add(localList.get(i));
+										}
+										// Serialize menubook
+										try {
+											FileOutputStream fileOut = new FileOutputStream(menuPath);
+											ObjectOutputStream out = new ObjectOutputStream(fileOut);
+											out.writeObject(menubook);
+											out.close();
+											fileOut.close();
+											userLogger.log(Level.FINE,
+													"Added new menu " + mnuName.getText() + " into the system.");
+											Alert alert = new Alert(AlertType.INFORMATION);
+											alert.setTitle("Order item added");
+											alert.setHeaderText("Order item added");
+											alert.setContentText(
+													"Order item has been successfully added into the menubook and can now be used.");
+											alert.showAndWait();
+										} catch (IOException i) {
+											logger.log(Level.SEVERE, "" + i);
+										}
+									} catch (NumberFormatException n) {
+										invalidInputAlert();
+									}
+								}
+							}
+						}
+					});
+
+					Button browseBtn = new Button("Check out existing menubook");
+					browseBtn.setOnAction(new EventHandler<ActionEvent>() {
+						@Override
+						public void handle(ActionEvent browseat) {
+							Dialog dialog = new Dialog();
+							dialog.setTitle("Menubook");
+							dialog.setHeaderText("The following items are in the current menubook");
+
+							GridPane grid = new GridPane();
+							grid.setHgap(10);
+							grid.setVgap(10);
+
+							TextArea mnuArea = new TextArea();
+							mnuArea.setEditable(false);
+							DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
+							DecimalFormat df = new DecimalFormat("##0.00", formatSymbols);
+							for (int i = 0; i < menubook.size(); i++) {
+								Order localOrder = menubook.get(i);
+								mnuArea.appendText("Name: " + localOrder.getName() + ", Price: "
+										+ df.format(localOrder.getPrice()) + "\n");
+							}
+							grid.add(mnuArea, 0, 1);
+
+							ButtonType done = new ButtonType("Done", ButtonData.OK_DONE);
+							dialog.getDialogPane().getButtonTypes().addAll(done);
+
+							dialog.getDialogPane().setContent(grid);
+
+							Optional<ButtonType> result = dialog.showAndWait();
+						}
+					});
+
+					grid.add(new Label("Menu Name"), 0, 0);
+					grid.add(new Label("Menu Price"), 1, 0);
+					grid.add(mnuName, 0, 1);
+					grid.add(mnuPrice, 1, 1);
+					grid.add(addMnu, 2, 1);
+					grid.add(browseBtn, 0, 2);
+
+					// Set the button types.
+					ButtonType saveButton = new ButtonType("Done", ButtonData.OK_DONE);
+					dialog.getDialogPane().getButtonTypes().addAll(saveButton);
+
+					dialog.getDialogPane().setContent(grid);
+					dialog.showAndWait();
+				}
+			});
+
+			vManager.getChildren().addAll(manageUsers, addMenubook);
+			root.getChildren().add(vManager);
+		}
+
+		// Main screen graphical section
+		tblPane = new Pane();
+		tblPane.setPadding(new Insets(5));
+		tblPane.setStyle("-fx-background-image: url('main_area.jpg');");
+		// tblPane.setStyle("-fx-background-color: #d2b48c;");
+		tblPane.setLayoutX(vMenuWidth + 10);
+		tblPane.setPrefSize(paneWidth - tblPane.getLayoutX(), paneHeight);
+
+		boolean previousTables;
+		// Load currently occupied tables from currentTables, if any
+		try {
+			FileInputStream fileIn = new FileInputStream(tablePath);
+			ObjectInputStream in = new ObjectInputStream(fileIn);
+			currentTables = (ArrayList<Table>) in.readObject();
+			in.close();
+			fileIn.close();
+			previousTables = true;
+		} catch (Exception x) {
+			previousTables = false;
+		}
+
+		// if no previous tables exist, create dummy tables
+		// else load previous tables
+		// Format.table(Table lbl, String text, double posX, double posY, int
+		// width, int height)
+		if (previousTables) {
+			for (int i = 0; i < currentTables.size(); i++) {
+				lbl = currentTables.get(i);
+				String n = lbl.getName();
+				double x = lbl.getX(), y = lbl.getY();
+				Format.table(lbl, n, x, y, tblWidth, tblHeight);
+				handleTable(lbl);
+				tblPane.getChildren().add(lbl);
+			}
+		}
+
+		double posX, posY = 20;
+		double mainPaneWidth = paneWidth - tblPane.getLayoutX();
+		int tblPadding = 40;
+		int maxPosLine = 5;
+		int maxTbls = 15;
+
+		for (int i = 0; i < maxTbls; i++) {
+			String check = "Table" + (i + 1);
+			boolean exists = false;
+			for (int j = 0; j < currentTables.size(); j++) {
+				if (currentTables.get(j).getName().equals(check)) {
+					exists = true;
+					break;
+				}
+			}
+			if (!exists) {
+				lbl = new Table("Table" + (i + 1));
+				posX = (tblPadding + (i % maxPosLine) * (tblWidth + tblPadding));
+				posY = tblPadding + (i / maxPosLine) * (tblPadding + tblHeight + tblPadding);
+				Format.table(lbl, ("Table" + (i + 1)), posX, posY, tblWidth, tblHeight);
+				handleTable(lbl);
+				tblPane.getChildren().add(lbl);
+			}
+		}
+
+		tblScrlPane = new ScrollPane();
+		tblScrlPane.setLayoutX(vMenuWidth + 10);
+		tblScrlPane.setPrefSize(paneWidth - tblScrlPane.getLayoutX(), paneHeight);
+		tblScrlPane.setContent(tblPane);
+		root.getChildren().addAll(vMenu, tblScrlPane);
+		root.setStyle("-fx-background-image: url('main_area.jpg');");
+		// create a new scene with root and set the stage
+		Scene scene = new Scene(root, paneWidth, paneHeight);
+		// Align center of scene with window center
+		Rectangle2D screenBounds = Screen.getPrimary().getVisualBounds();
+		stage.setX((screenBounds.getWidth() - paneWidth) / 2);
+		stage.setY((screenBounds.getHeight() - paneHeight) / 2);
+		stage.setScene(scene);
+		stage.show();
+
+		// (De-)Serialize menubook
+		try {
+			FileInputStream fileIn = new FileInputStream(menuPath);
+			ObjectInputStream in = new ObjectInputStream(fileIn);
+			menubook = (ArrayList<Order>) in.readObject();
+			in.close();
+			fileIn.close();
+		} catch (Exception x) {
+			Alert alert = new Alert(AlertType.WARNING);
+			alert.setTitle("Warning");
+			alert.setHeaderText("No menubook available");
+			alert.setContentText(
+					"No available menubook has been found. Load menu items or create menu items before using order functionalities.");
+			alert.showAndWait();
+		}
+
+		// (De-)Serialize order log
+		try {
+			FileInputStream fileIn = new FileInputStream(orderLogPath);
+			ObjectInputStream in = new ObjectInputStream(fileIn);
+			orderLog = (ArrayList<Order>) in.readObject();
+			in.close();
+			fileIn.close();
+		} catch (Exception logX) {
+			logger.log(Level.INFO, "Order log created as no previous log found.");
+			try {
+				// Creates new order log
+				FileOutputStream fileOut = new FileOutputStream(orderLogPath);
+				ObjectOutputStream out = new ObjectOutputStream(fileOut);
+				out.writeObject(orderLog);
+				out.close();
+				fileOut.close();
+			} catch (IOException logX2) {
+				logger.log(Level.WARNING, "" + logX2);
+			}
+		}
+		// Confirm ending session and saving current Tables to a file
+		scene.getWindow().setOnCloseRequest(new EventHandler<WindowEvent>() {
+			public void handle(WindowEvent ev) {
+				Alert alert = new Alert(AlertType.CONFIRMATION);
+				alert.setTitle("Please confirm");
+				alert.setHeaderText("Confirm end of session");
+				alert.setContentText("Are you sure you want to log out?");
+
+				Optional<ButtonType> result = alert.showAndWait();
+				if (result.get() == ButtonType.OK) {
+					if (!(currentTables.isEmpty())) {
+						serialize(currentTables);
+					}
+					try {
+						// Creates new order log
+						FileOutputStream fileOut = new FileOutputStream(orderLogPath);
+						ObjectOutputStream out = new ObjectOutputStream(fileOut);
+						out.writeObject(orderLog);
+						out.close();
+						fileOut.close();
+					} catch (IOException logX2) {
+						logger.log(Level.WARNING, "" + logX2);
+					}
+					userLogger.log(Level.FINE, currentUser.getUserName() + " has logged out.");
+					fhUser.close();
+					fhLog.close();
+					// Let Window Closer if OK
+				} else {
+					ev.consume();
+				}
+			}
+
+		});
+
+	}
+
+	/**
+	 * Add table handlers.
+	 *
+	 * @param lbl
+	 *            the lbl
+	 */
+	// Table constructor section
+	private void handleTable(Table lbl) {
+		lbl.setOnMousePressed(tablePressedHandler);
+		lbl.setOnMouseClicked(tableMenuHandler);
+		lbl.setTooltip(new Tooltip("Click on table to add order"));
+	}
+
+	/** The current tables. */
+	// Serialization section
+	private ArrayList<Table> currentTables = new ArrayList<Table>();
+
+	/** The table path. */
+	private final String tablePath = "res/current_tables.ser";
+
+	/**
+	 * Serialize.
+	 *
+	 * @param currentTables
+	 *            the current tables
+	 */
+	private void serialize(ArrayList<Table> currentTables) {
+		try {
+			FileOutputStream fileOut = new FileOutputStream(tablePath);
+			ObjectOutputStream out = new ObjectOutputStream(fileOut);
+			out.writeObject(currentTables);
+			out.close();
+			fileOut.close();
+			// Message box "Serialized data is saved in tablePath"
+		} catch (IOException i) {
+			logger.log(Level.SEVERE, "" + i);
+		}
+	}
+
+	/** The src scene Y. */
+	// Table icon movement section
+	double srcSceneX, srcSceneY;
+
+	/** The src translate Y. */
+	double srcTranslateX, srcTranslateY;
+
+	/** The table pressed handler. */
+	// get original data
+	EventHandler<MouseEvent> tablePressedHandler = new EventHandler<MouseEvent>() {
+		@Override
+		public void handle(MouseEvent evt) {
+			srcSceneX = evt.getSceneX();
+			srcSceneY = evt.getSceneY();
+			srcTranslateX = ((Table) evt.getSource()).getTranslateX();
+			srcTranslateY = ((Table) evt.getSource()).getTranslateY();
+		}
+	};
+
+	/** The table menu handler. */
+	// Menu Adding Section
+	EventHandler<MouseEvent> tableMenuHandler = new EventHandler<MouseEvent>() {
+		public void handle(MouseEvent evt) {
+			if (evt.getButton().equals(MouseButton.PRIMARY)) {
+
+				if (evt.getClickCount() == 1) {
+					Table selectedTbl = ((Table) evt.getSource());
+					// Create the custom dialog.
+					Dialog dialog = new Dialog();
+					dialog.setTitle("Table Menu");
+					dialog.setHeaderText(selectedTbl.getText() + " Menu");
+
+					GridPane grid = new GridPane();
+					grid.setHgap(10);
+					grid.setVgap(10);
+
+					int rowNum = 0, lblRow = 0;
+
+					// Num of people
+					TextField people = new TextField();
+					people.setPromptText("Number of people");
+
+					// Innergrid to display ordered items
+					ArrayList<Order> localList = new ArrayList<Order>(selectedTbl.getOrders());
+					// initializing innergrid before addPane so EventListener
+					// can refresh innergrid
+					GridPane innergrid = new GridPane();
+					Format.innergrid(innergrid);
+					innergrid.setPrefWidth(600);
+					innergrid.setPadding(new Insets(0));
+					// Setting columns width
+					String[] innerColumns = { "Menu Name", "Price", "Qnty", "Total", "Comments", "Time added",
+							"Cancel Order" };
+					ColumnConstraints col1 = new ColumnConstraints();
+					col1.setPercentWidth(25);
+					innergrid.getColumnConstraints().add(col1);
+					ColumnConstraints col2 = new ColumnConstraints();
+					col2.setPercentWidth(5);
+					innergrid.getColumnConstraints().add(col2);
+					ColumnConstraints col3 = new ColumnConstraints();
+					col3.setPercentWidth(5);
+					innergrid.getColumnConstraints().add(col3);
+					ColumnConstraints col4 = new ColumnConstraints();
+					col4.setPercentWidth(10);
+					innergrid.getColumnConstraints().add(col4);
+					ColumnConstraints col5 = new ColumnConstraints();
+					col5.setPercentWidth(20);
+					innergrid.getColumnConstraints().add(col5);
+					ColumnConstraints col6 = new ColumnConstraints();
+					col6.setPercentWidth(20);
+					innergrid.getColumnConstraints().add(col6);
+					ColumnConstraints col7 = new ColumnConstraints();
+					col7.setPercentWidth(15);
+					innergrid.getColumnConstraints().add(col7);
+
+					// Populating columns
+					for (int i = 0; i < innerColumns.length; i++) {
+						Label menuLbl = new Label(innerColumns[i]);
+						innergrid.add(menuLbl, i, 0);
+					}
+
+					// Put innergrid in ScrollPane
+					ScrollPane innerScrlPane = new ScrollPane();
+					innerScrlPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
+					innerScrlPane.setPrefHeight(150);
+					innerScrlPane.setContent(innergrid);
+
+					// Amount due
+					Label amount = new Label();
+
+					// Add Orders section
+					GridPane addPane = new GridPane();
+					String[] addColumns = { "Menu Name", "Quantity", "Comments", "Browse Menu", "Add Order" };
+					// Populating columns
+					for (int i = 0; i < addColumns.length; i++) {
+						Label menuLbl = new Label(addColumns[i]);
+						addPane.add(menuLbl, i, 0);
+					}
+					addPane.prefWidth(600);
+					addPane.setHgap(10);
+					TextField addMenuName = new TextField();
+					addMenuName.setPrefWidth(200);
+					addPane.add(addMenuName, 0, 1);
+					TextField addMenuQnty = new TextField();
+					addMenuQnty.setText("1");
+					addMenuQnty.setPrefWidth(40);
+					addPane.add(addMenuQnty, 1, 1);
+					TextField addMenuComment = new TextField();
+					addMenuComment.setPrefWidth(150);
+					addPane.add(addMenuComment, 2, 1);
+					Button addBrowseBtn = new Button("Browse");
+					addBrowseBtn.setOnAction(new EventHandler<ActionEvent>() {
+						@Override
+						public void handle(ActionEvent browseat) {
+							Dialog dialog = new Dialog();
+							dialog.setTitle("Menubook");
+							dialog.setHeaderText("The following items are in the current menubook");
+
+							GridPane grid = new GridPane();
+							grid.setHgap(10);
+							grid.setVgap(10);
+
+							TextArea mnuArea = new TextArea();
+							mnuArea.setEditable(false);
+							for (int i = 0; i < menubook.size(); i++) {
+								Order localOrder = menubook.get(i);
+								mnuArea.appendText(
+										"Name: " + localOrder.getName() + ", Price: " + localOrder.getPrice() + "\n");
+							}
+							grid.add(mnuArea, 0, 1);
+
+							ButtonType done = new ButtonType("Done", ButtonData.OK_DONE);
+							dialog.getDialogPane().getButtonTypes().addAll(done);
+
+							dialog.getDialogPane().setContent(grid);
+
+							Optional<ButtonType> result = dialog.showAndWait();
+						}
+					});
+					addBrowseBtn.setPrefWidth(80);
+					addPane.add(addBrowseBtn, 3, 1);
+					Button addMenuBtn = new Button("Add Menu");
+					addMenuBtn.setPrefWidth(80);
+					addMenuBtn.setOnAction(new EventHandler<ActionEvent>() {
+						@Override
+						public void handle(ActionEvent at) {
+							if (addMenuName.getText().equals("") || addMenuQnty.getText().equals("")) {
+								invalidInputAlert();
+							} else {
+								// Match text of menubook with entered text, add
+								// order if match
+								String mnuName = addMenuName.getText();
+								boolean matchFound = false;
+								for (int i = 0; i < menubook.size(); i++) {
+									if (mnuName.equals(menubook.get(i).getName())) {
+										try {
+											int qnty = Integer.parseInt(addMenuQnty.getText());
+											if (qnty < 0) {
+												throw new NumberFormatException();
+											}
+											String cmt = addMenuComment.getText();
+											String srcTbl = selectedTbl.getName();
+											Order tblOrder = new Order(menubook.get(i), qnty, cmt, srcTbl);
+											localList.add(tblOrder);
+											matchFound = true;
+											refreshOrders(innergrid, localList, innerColumns, amount);
+										} catch (NumberFormatException n) {
+											break;
+										}
+										break;
+									}
+								}
+								if (!matchFound) {
+									invalidInputAlert();
+								}
+							}
+						}
+					});
+					addPane.add(addMenuBtn, 4, 1);
+
+					// Order List
+					// Loops through each order at table and fills label with
+					// each order information
+					refreshOrders(innergrid, localList, innerColumns, amount);
+
+					Separator separator1 = new Separator();
+
+					grid.add(new Label("Number of people: "), 0, lblRow++);
+					grid.add(people, 1, rowNum++);
+					grid.add(new Label("Add orders: "), 0, lblRow++);
+					grid.add(addPane, 1, rowNum++);
+					grid.add(new Label("Current orders: "), 0, lblRow++);
+					grid.add(innerScrlPane, 1, rowNum++);
+					lblRow++;
+					grid.add(separator1, 1, rowNum++);
+					grid.add(new Label("Total Amount Due"), 0, lblRow++);
+					grid.add(amount, 1, rowNum);
+
+					// If table exists already, load text information
+					if (currentTables.contains(selectedTbl)) {
+						int srcIndex = currentTables.indexOf(selectedTbl);
+						Table srcTable = currentTables.get(srcIndex);
+						people.setText(srcTable.getPeople());
+					}
+
+					// Set the button types.
+					ButtonType saveButton = new ButtonType("Save", ButtonData.OK_DONE);
+					ButtonType bill = new ButtonType("Pay", ButtonData.OK_DONE);
+					dialog.getDialogPane().getButtonTypes().addAll(saveButton, bill, ButtonType.CANCEL);
+					dialog.getDialogPane().setContent(grid);
+					Optional<ButtonType> result = dialog.showAndWait();
+					if (result.get() == saveButton) {
+						// Update Table order list
+						selectedTbl.setOrders(localList);
+						// If table exists already, override existing table
+						if (currentTables.contains(selectedTbl)) {
+							currentTables.remove(selectedTbl);
+						}
+						selectedTbl.setPeople(people.getText());
+						currentTables.add(selectedTbl);
+						userLogger.log(Level.FINE, "Saved changes made at " + selectedTbl.getName());
+
+					} else if (result.get() == bill) {
+						for (int i = 0; i < localList.size(); i++) {
+							orderLog.add(localList.get(i));
+						}
+						selectedTbl.clear();
+						currentTables.remove(selectedTbl);
+						userLogger.log(Level.FINE, "Received payment of table. Orders logged and table cleared.");
+					}
+				}
+			}
+		}
+	};
+
+	/**
+	 * Refresh users.
+	 *
+	 * @param innergrid
+	 *            the innergrid
+	 * @param userList
+	 *            the user list
+	 */
+	private void refreshUsers(GridPane innergrid, ArrayList<User> userList) {
+		innergrid.getChildren().clear();
+		String[] labels = { "Username", "Type", "Activity", "Options" };
+		for (int i = 0; i < labels.length; i++) {
+			Label lbl = new Label(labels[i]);
+			innergrid.add(lbl, i, 0);
+		}
+		for (int i = 1; i <= userList.size(); i++) {
+			User u = userList.get(i - 1);
+			String uName = u.getUserName();
+			boolean uAdmin = u.getUserRights();
+			Label usName = new Label();
+			usName.setText(uName);
+			innergrid.add(usName, 0, i);
+			Label usType = new Label();
+			if (uAdmin) {
+				usType.setText("Admin");
+			} else {
+				usType.setText("Standard");
+			}
+			innergrid.add(usType, 1, i);
+			Button viewLog = new Button("View Log");
+			viewLog.setOnAction(new EventHandler<ActionEvent>() {
+				@Override
+				public void handle(ActionEvent view) {
+					Dialog dialog = new Dialog();
+					dialog.setTitle("User Activity log");
+					dialog.setHeaderText("Selected activity log");
+
+					GridPane grid = new GridPane();
+					grid.setHgap(10);
+					grid.setVgap(10);
+
+					TextArea logArea = new TextArea();
+					logArea.setEditable(false);
+					grid.add(logArea, 0, 1);
+					int row = innergrid.getRowIndex((Button) view.getSource());
+					Label toView = (Label) getNodeByIndex(innergrid, 0, row);
+					String localPath = ("res/" + toView.getText() + "_activity.log");
+					try {
+						Scanner fileIn = new Scanner(new File(localPath));
+						while (fileIn.hasNextLine()) {
+							logArea.appendText(fileIn.nextLine() + "\n");
+						}
+						fileIn.close();
+					} catch (IOException i) {
+						logger.log(Level.WARNING,
+								"No activity log for user has been found. User might have deleted his/her log or has never logged in. \n Opening activity log failed due to: \n "
+										+ i);
+					}
+
+					ButtonType done = new ButtonType("Done", ButtonData.OK_DONE);
+					dialog.getDialogPane().getButtonTypes().addAll(done);
+
+					dialog.getDialogPane().setContent(grid);
+
+					Optional<ButtonType> result = dialog.showAndWait();
+				}
+			});
+			innergrid.add(viewLog, 2, i);
+			// Disable delete button for root admin (the first user)
+			if (i > 1) {
+				Button deleteUser = new Button("Delete");
+				deleteUser.setOnAction(new EventHandler<ActionEvent>() {
+					@Override
+					public void handle(ActionEvent userdlt) {
+						// Confirm before deletion of user
+						Alert alert = new Alert(AlertType.CONFIRMATION);
+						alert.setTitle("Confirm User Deletion");
+						alert.setHeaderText("Confirm User Deletion");
+						alert.setContentText("Are you sure you want to delete this user?");
+
+						Optional<ButtonType> result = alert.showAndWait();
+						if (result.get() == ButtonType.OK) {
+							@SuppressWarnings("static-access")
+							int row = innergrid.getRowIndex((Button) userdlt.getSource());
+							Label toDelete = (Label) getNodeByIndex(innergrid, 0, row);
+							String toDeleteName = toDelete.getText();
+							for (int n = 0; n < userList.size(); n++) {
+								String userName = userList.get(n).getUserName();
+								if (userName.equals(toDeleteName)) {
+									userList.remove(n);
+									userLogger.log(Level.FINE, toDeleteName + " has been deleted from the system.");
+									break;
+								}
+							}
+							refreshUsers(innergrid, userList);
+						}
+					}
+				});
+				innergrid.add(deleteUser, 3, i);
+			}
+		}
+	}
+
+	/**
+	 * Refresh search.
+	 *
+	 * @param innergrid
+	 *            the innergrid
+	 * @param ordersList
+	 *            the orders list
+	 * @param labels
+	 *            the labels
+	 * @param selectedList
+	 *            the selected list
+	 */
+	private void refreshSearch(GridPane innergrid, ArrayList<Order> ordersList, String[] labels,
+			ArrayList<Order> selectedList) {
+		innergrid.getChildren().clear();
+		for (int i = 0; i < labels.length; i++) {
+			Label menuLbl = new Label(labels[i]);
+			innergrid.add(menuLbl, i, 0);
+		}
+		// { "Table No.", "Order Name", "Price", "Quantity", "Total", "Order
+		// Datetime", "Comments" }
+		DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
+		DecimalFormat df = new DecimalFormat("##0.00", formatSymbols);
+		for (int i = 1; i <= ordersList.size(); i++) {
+			int localCol = 0;
+			Order mn = ordersList.get(i - 1);
+			String mnTbl = mn.getSrcTbl();
+			String mnName = mn.getName();
+			Double mnPrice = mn.getPrice();
+			int mnQnty = mn.getQnty();
+			Date mnDate = mn.getDate();
+			String mnComment = mn.getComment();
+			Label menuTbl = new Label();
+			menuTbl.setText(mnTbl);
+			innergrid.add(menuTbl, localCol++, i);
+			Label menuName = new Label();
+			menuName.setText(mnName);
+			innergrid.add(menuName, localCol++, i);
+			Label price = new Label();
+			price.setText("" + df.format(mnPrice));
+			innergrid.add(price, localCol++, i);
+			Label qnty = new Label();
+			qnty.setText("" + mnQnty);
+			innergrid.add(qnty, localCol++, i);
+			Label lineTotal = new Label();
+			lineTotal.setText("" + df.format(mnPrice * mnQnty));
+			innergrid.add(lineTotal, localCol++, i);
+			Label timeAdded = new Label();
+			timeAdded.setText(dateFormat.format(mnDate));
+			innergrid.add(timeAdded, localCol++, i);
+			Label menuComment = new Label();
+			menuComment.setText(mnComment);
+			innergrid.add(menuComment, localCol++, i);
+		}
+		if (currentUser.getUserRights()) {
+			Label menuLbl = new Label("Select");
+			innergrid.add(menuLbl, labels.length, 0);
+			for (int i = 1; i <= ordersList.size(); i++) {
+				CheckBox checkBox = new CheckBox();
+				checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
+					public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) {
+						// gets row of checkbox selected
+						int row = innergrid.getRowIndex(checkBox);
+						int cols = labels.length;
+						Node[] toExportNodes = getRowNodesByIndex(innergrid, row, cols);
+						String[] toExport = new String[toExportNodes.length];
+						for (int j = 0; j < toExportNodes.length; j++) {
+							Label l = (Label) toExportNodes[j];
+							String s = l.getText();
+							toExport[j] = s;
+						}
+						// Create new order here
+						try {
+							String expTbl = toExport[0];
+							String expName = toExport[1];
+							Double expPrice = Double.parseDouble(toExport[2]);
+							int expQnty = Integer.parseInt(toExport[3]);
+							Date expDate = dateFormat.parse(toExport[5]);
+							String expComment = toExport[6];
+							Order expOrder = new Order(expName, expPrice, expQnty, expTbl, expComment, expDate);
+							selectedList.add(expOrder);
+						} catch (ParseException p) {
+							logger.log(Level.SEVERE, "" + p);
+						}
+						checkBox.setDisable(true);
+					}
+				});
+				innergrid.add(checkBox, 7, i);
+			}
+		}
+	}
+
+	/**
+	 * Refresh orders.
+	 *
+	 * @param innergrid
+	 *            the innergrid
+	 * @param ordersList
+	 *            the orders list
+	 * @param labels
+	 *            the labels
+	 * @param amount
+	 *            the amount
+	 */
+	private void refreshOrders(GridPane innergrid, ArrayList<Order> ordersList, String[] labels, Label amount) {
+		innergrid.getChildren().clear();
+		double netAmount = 0.0;
+		// Recreating labels
+		for (int i = 0; i < labels.length; i++) {
+			Label menuLbl = new Label(labels[i]);
+			innergrid.add(menuLbl, i, 0);
+		}
+		DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
+		DecimalFormat df = new DecimalFormat("##0.00", formatSymbols);
+		for (int i = 1; i <= ordersList.size(); i++) {
+			int localCol = 0;
+			Order mn = ordersList.get(i - 1);
+			String mnName = mn.getName();
+			Double mnPrice = mn.getPrice();
+			int mnQnty = mn.getQnty();
+			Date mnDate = mn.getDate();
+			String mnComment = mn.getComment();
+			Label menuName = new Label();
+			menuName.setText(mnName);
+			innergrid.add(menuName, localCol++, i);
+			Label price = new Label();
+			price.setText("" + df.format(mnPrice));
+			innergrid.add(price, localCol++, i);
+			Label qnty = new Label();
+			qnty.setText("" + mnQnty);
+			innergrid.add(qnty, localCol++, i);
+			Label lineTotal = new Label();
+			lineTotal.setText("" + df.format(mnPrice * mnQnty));
+			innergrid.add(lineTotal, localCol++, i);
+			Label menuComment = new Label();
+			menuComment.setText(mnComment);
+			innergrid.add(menuComment, localCol++, i);
+			Label timeAdded = new Label();
+			timeAdded.setText(dateFormat.format(mnDate));
+			innergrid.add(timeAdded, localCol++, i);
+			Button deleteOrder = new Button("Delete Order");
+			deleteOrder.setOnAction(new EventHandler<ActionEvent>() {
+				@Override
+				public void handle(ActionEvent avt) {
+					// Confirm before deletion of order
+					Alert alert = new Alert(AlertType.CONFIRMATION);
+					alert.setTitle("Confirm Order Deletion");
+					alert.setHeaderText("Confirm Order Deletion");
+					alert.setContentText("Are you sure you want to delete this order?");
+
+					Optional<ButtonType> result = alert.showAndWait();
+					if (result.get() == ButtonType.OK) {
+						@SuppressWarnings("static-access")
+						int row = innergrid.getRowIndex((Button) avt.getSource());
+						Label toDelete = (Label) getNodeByIndex(innergrid, 0, row);
+						String toDeleteName = toDelete.getText();
+						for (int n = 0; n < ordersList.size(); n++) {
+							String orderName = ordersList.get(n).getName();
+							if (orderName.equals(toDeleteName)) {
+								ordersList.remove(n);
+								break;
+							}
+						}
+						refreshOrders(innergrid, ordersList, labels, amount);
+					}
+				}
+			});
+			innergrid.add(deleteOrder, localCol++, i);
+			netAmount += (mnPrice * mnQnty);
+		}
+		amount.setText("" + df.format(netAmount));
+	}
+
+	/**
+	 * Gets the node by index.
+	 *
+	 * @param grid
+	 *            the grid
+	 * @param col
+	 *            the col
+	 * @param row
+	 *            the row
+	 * @return the node by index
+	 */
+	private Node getNodeByIndex(GridPane grid, int col, int row) {
+		for (Node node : grid.getChildren()) {
+			if (GridPane.getColumnIndex(node) == col && GridPane.getRowIndex(node) == row) {
+				return node;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Gets the row nodes by index.
+	 *
+	 * @param grid
+	 *            the grid
+	 * @param row
+	 *            the row
+	 * @param colNum
+	 *            the col num
+	 * @return the row nodes by index
+	 */
+	private Node[] getRowNodesByIndex(GridPane grid, int row, int colNum) {
+		Node[] nodes = new Node[colNum];
+		int colCount = 0;
+		for (Node node : grid.getChildren()) {
+			if (GridPane.getColumnIndex(node) == colCount && GridPane.getRowIndex(node) == row) {
+				nodes[colCount] = node;
+				colCount++;
+			}
+			if (colCount == colNum) {
+				return nodes;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Invalid input alert.
+	 */
+	private void invalidInputAlert() {
+		Alert alert = new Alert(AlertType.ERROR);
+		alert.setTitle("Invalid Input");
+		alert.setHeaderText("Invalid Input");
+		alert.setContentText("Please enter a valid item. Fields cannot be all empty.");
+		alert.showAndWait();
+	}
+}
diff --git a/Billing-system/src/billingsystem/Order.java b/Billing-system/src/billingsystem/Order.java
new file mode 100644
index 00000000..d3277932
--- /dev/null
+++ b/Billing-system/src/billingsystem/Order.java
@@ -0,0 +1,170 @@
+package billingsystem;
+
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * 
+ * @author Jason Li
+ * @version 1.0
+ * @since 19.12.2016
+ * 
+ * 
+ * 
+ * The Class Order.
+ */
+public class Order implements Serializable {
+
+	/** The name. */
+	private String name;
+
+	/**
+	 * Gets the name.
+	 *
+	 * @return the name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * Sets the name.
+	 *
+	 * @param name2 the new name
+	 */
+	public void setName(String name2) {
+		this.name = name2;
+	}
+
+	/** The price. */
+	private double price;
+
+	/**
+	 * Gets the price.
+	 *
+	 * @return the price
+	 */
+	public double getPrice() {
+		return price;
+	}
+
+	/**
+	 * Sets the price.
+	 *
+	 * @param price2 the new price
+	 */
+	public void setPrice(double price2) {
+		this.price = price2;
+	}
+
+	/** The quantity. */
+	private int quantity;
+
+	/**
+	 * Gets the order quantity.
+	 *
+	 * @return the order quantity
+	 */
+	public int getQnty() {
+		return quantity;
+	}
+	
+	/** The date. */
+	private Date date;
+	
+	/**
+	 * Gets the date.
+	 *
+	 * @return the date
+	 */
+	public Date getDate() {
+		return date;
+	}
+	
+	/** The comment. */
+	private String comment;
+	
+	/**
+	 * Gets the comment.
+	 *
+	 * @return the comment
+	 */
+	public String getComment() {
+		return comment;
+	}
+	
+	/** The source table. */
+	private String sourceTable;
+	
+	/**
+	 * Gets the source table.
+	 *
+	 * @return the source table
+	 */
+	public String getSrcTbl() {
+		return sourceTable;
+	}
+	
+	/**
+	 * Return each order as a comma delimited row for csv output.
+	 *
+	 * @return the string
+	 */
+	public String toCsvRow() {
+		DateFormat dateFormat = new SimpleDateFormat("HH:mm dd/MM/yyyy");
+	    return Stream.of(name, ("" + price), ("" + quantity), ("" + sourceTable), ("" + price*quantity), comment, ("" + dateFormat.format(date)))
+	            .collect(Collectors.joining(","));
+	}
+
+	/**
+	 * Instantiates a new order.
+	 *
+	 * @param copyOrder the copy order
+	 * @param qnty the order quantity
+	 * @param comment the comment
+	 * @param sourceTable the source table
+	 */
+	public Order(Order copyOrder, int qnty, String comment, String sourceTable) {
+		this.name = copyOrder.name;
+		this.price = copyOrder.price;
+		this.quantity = qnty;
+		this.comment = comment;
+		this.sourceTable = sourceTable;
+		this.date = new Date();
+	}
+
+	/**
+	 * Instantiates a new order.
+	 *
+	 * @param name the name
+	 * @param price the price
+	 */
+	public Order(String name, double price) {
+		this.name = name;
+		this.price = price;
+	}
+	
+	
+	/**
+	 * Instantiates a new order.
+	 *
+	 * @param name the name
+	 * @param price the price
+	 * @param qnty the qnty
+	 * @param srcTable the src table
+	 * @param comment the comment
+	 * @param date the date
+	 */
+	public Order(String name, double price, int qnty, String srcTable, String comment, Date date) {
+		this.name = name;
+		this.price = price;
+		this.quantity = qnty;
+		this.comment = comment;
+		this.sourceTable = srcTable;
+		this.date = date;
+	}
+}
diff --git a/Billing-system/src/billingsystem/Table.java b/Billing-system/src/billingsystem/Table.java
new file mode 100644
index 00000000..bcfeeb88
--- /dev/null
+++ b/Billing-system/src/billingsystem/Table.java
@@ -0,0 +1,145 @@
+package billingsystem;
+
+import java.util.ArrayList;
+
+import javafx.scene.control.Label;
+
+/**
+ * 
+ * @author Jason Li
+ * @version 1.0
+ * @since 19.12.2016
+ * 
+ * 
+ * 
+ * The Class Table.
+ */
+public class Table extends Label implements java.io.Serializable {
+
+	/** The tbl name. */
+	private String tblName;
+	
+	/** The people. */
+	private String people;
+	
+	/** The orders. */
+	ArrayList<Order> orders = new ArrayList<Order>();
+	
+	/** The pos X. */
+	private double posX;
+	
+	/** The pos Y. */
+	private double posY;
+
+	/**
+	 * Gets the name.
+	 *
+	 * @return the name
+	 */
+	public String getName() {
+		return tblName;
+	}
+
+	/**
+	 * Gets the orders.
+	 *
+	 * @return the orders
+	 */
+	public ArrayList<Order> getOrders() {
+		return orders;
+	}
+
+	/**
+	 * Set new X and Y.
+	 *
+	 * @param x the x-position
+	 * @param y the y-position
+	 */
+	public void setXY(double x, double y) {
+		this.posX = x;
+		this.posY = y;
+	}
+
+	/**
+	 * Gets the x-position.
+	 *
+	 * @return the x
+	 */
+	public double getX() {
+		return posX;
+	}
+
+	/**
+	 * Gets the y-position.
+	 *
+	 * @return the y
+	 */
+	public double getY() {
+		return posY;
+	}
+
+	/**
+	 * Sets the number of people at the table.
+	 *
+	 * @param people -  Number of people
+	 */
+	public void setPeople(String people) {
+		this.people = people;
+	}
+
+	/**
+	 * Gets the number of people at the table.
+	 *
+	 * @return people - Number of people
+	 */
+	public String getPeople() {
+		return people;
+	}
+
+	/**
+	 * Adds the order.
+	 *
+	 * @param order item the order item
+	 */
+	public void addOrder(Order orderItem) {
+		orders.add(orderItem);
+	}
+
+	/**
+	 * Sets the orders.
+	 *
+	 * @param set new orders
+	 */
+	public void setOrders(ArrayList<Order> setOrders) {
+		this.orders = setOrders;
+	}
+
+	/**
+	 * Clear table
+	 */
+	public void clear() {
+		this.people = "";
+		this.orders.clear();;
+	}
+
+	/**
+	 * Instantiates a new table.
+	 *
+	 * @param tblName the table name
+	 */
+	public Table(String tblName) {
+		this.tblName = tblName;
+	}
+
+	/**
+	 * Instantiates a new table.
+	 *
+	 * @param copyTable - the table to copy
+	 */
+	public Table(Table copyTable) {
+		this.tblName = copyTable.tblName;
+		this.posX = copyTable.posX;
+		this.posY = copyTable.posY;
+	}
+
+}
diff --git a/Billing-system/src/billingsystem/User.java b/Billing-system/src/billingsystem/User.java
new file mode 100644
index 00000000..dd0d6c5d
--- /dev/null
+++ b/Billing-system/src/billingsystem/User.java
@@ -0,0 +1,80 @@
+/*
+ * 
+ */
+package billingsystem;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * 
+ * 
+ * @author Jason Li
+ * @version 1.0
+ * @since 19.12.2016
+ * 
+ * 
+ * 
+ * The Class User.
+ */
+@SuppressWarnings("serial")
+public class User implements Serializable {
+	
+	/** The user name. */
+	private String userName;
+	
+	/** The password. */
+	private String password;
+	
+	/** The admin rights. */
+	private boolean adminRights;
+	
+	/**
+	 * Instantiates a new user.
+	 *
+	 * @param userName the user name
+	 * @param password the password
+	 * @param adminRights the admin rights
+	 */
+	public User(String userName, String password, boolean adminRights) {
+		this.userName = userName;
+		this.password = password;
+		this.adminRights = adminRights;
+	}
+	
+	/**
+	 * Gets the user name.
+	 *
+	 * @return the user name
+	 */
+	public String getUserName() {
+		return userName;
+	}
+	
+	/**
+	 * Gets the user password.
+	 *
+	 * @return the user password
+	 */
+	public String getUserPassword() {
+		return password;
+	}
+	
+	/**
+	 * Sets the password.
+	 *
+	 * @param password the new password
+	 */
+	public void setPassword(String password) {
+		this.password = password;
+	}
+	
+	/**
+	 * Gets the user rights.
+	 *
+	 * @return the user rights
+	 */
+	public boolean getUserRights() {
+		return adminRights;
+	}
+}
diff --git a/Billing-system/src/billingsystem/login.css b/Billing-system/src/billingsystem/login.css
new file mode 100644
index 00000000..537feecb
--- /dev/null
+++ b/Billing-system/src/billingsystem/login.css
@@ -0,0 +1,3 @@
+#pane {
+    -fx-background-image:url('login.jpg');
+}
\ No newline at end of file
diff --git a/Billing-system/src/billingsystem/login.jpg b/Billing-system/src/billingsystem/login.jpg
new file mode 100644
index 00000000..7d2fe852
Binary files /dev/null and b/Billing-system/src/billingsystem/login.jpg differ
diff --git a/Billing-system/src/systemstyle/Format.java b/Billing-system/src/systemstyle/Format.java
new file mode 100644
index 00000000..9834720b
--- /dev/null
+++ b/Billing-system/src/systemstyle/Format.java
@@ -0,0 +1,48 @@
+package systemstyle;
+
+import billingsystem.Table;
+import javafx.event.EventHandler;
+import javafx.geometry.Insets;
+import javafx.geometry.Pos;
+import javafx.scene.Cursor;
+import javafx.scene.input.MouseEvent;
+import javafx.scene.layout.GridPane;
+
+/**
+ * The Class Format manages the styling of the system.
+ */
+public class Format {
+	
+	/**
+	 * Formats the innergrid.
+	 *
+	 * @param innergrid the inner gridpane
+	 */
+	public static void innergrid(GridPane innergrid) {
+		innergrid.setVgap(10);
+		innergrid.setMinHeight(150);
+		innergrid.setStyle("-fx-border-color: #A9A9A9;");
+		innergrid.setPadding(new Insets(10));
+	}
+	
+	/**
+	 * Formats the table.
+	 *
+	 * @param lbl the table label
+	 * @param text the table text
+	 * @param posX the table x-position
+	 * @param posY the table y-position
+	 * @param width the table width
+	 * @param height the table height
+	 */
+	public static void table(Table lbl, String text, double posX, double posY, int width, int height) {
+		lbl.setText(text);
+		lbl.setLayoutX(posX);
+		lbl.setLayoutY(posY);
+		lbl.setXY(posX, posY);
+		lbl.setAlignment(Pos.CENTER);
+		lbl.setPrefSize(width, height);
+		lbl.setStyle("-fx-background-color: #3F250B; -fx-text-fill: a9a9a9; -fx-font-weight: bold;");
+		lbl.setCursor(Cursor.HAND);
+	}
+}
diff --git a/BinaryDecimalConverto/convertor.java b/BinaryDecimalConverto/convertor.java
new file mode 100644
index 00000000..21522b61
--- /dev/null
+++ b/BinaryDecimalConverto/convertor.java
@@ -0,0 +1,33 @@
+import java.util.Scanner;
+
+public class BinaryDecimalConverter {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("Binary to Decimal and Decimal to Binary Converter");
+        System.out.print("Enter 1 to convert Binary to Decimal or 2 to convert Decimal to Binary: ");
+        int choice = scanner.nextInt();
+
+        if (choice == 1) {
+            System.out.print("Enter a binary number: ");
+            String binaryInput = scanner.next();
+            int decimalResult = binaryToDecimal(binaryInput);
+            System.out.println("Decimal result: " + decimalResult);
+        } else if (choice == 2) {
+            System.out.print("Enter a decimal number: ");
+            int decimalInput = scanner.nextInt();
+            String binaryResult = decimalToBinary(decimalInput);
+            System.out.println("Binary result: " + binaryResult);
+        } else {
+            System.out.println("Invalid choice. Please enter 1 for Binary to Decimal or 2 for Decimal to Binary.");
+        }
+    }
+
+    public static int binaryToDecimal(String binary) {
+        return Integer.parseInt(binary, 2);
+    }
+
+    public static String decimalToBinary(int decimal) {
+        return Integer.toBinaryString(decimal);
+    }
+}
diff --git a/BinaryDecimalConverto/readme.md b/BinaryDecimalConverto/readme.md
new file mode 100644
index 00000000..064806c7
--- /dev/null
+++ b/BinaryDecimalConverto/readme.md
@@ -0,0 +1,20 @@
+# Binary to Decimal and Decimal to Binary Converter
+
+This is a simple Java program that allows you to convert between Binary and Decimal numbers.
+
+## How to Use
+
+1. Compile and run `BinaryDecimalConverter.java`.
+2. Choose option 1 to convert Binary to Decimal or option 2 to convert Decimal to Binary.
+3. Follow the on-screen instructions to enter the number for conversion.
+
+## Features
+
+- Converts Binary to Decimal and Decimal to Binary.
+- Simple command-line interface for ease of use.
+
+## Technologies Used
+
+- Java
+
+Feel free to modify the code or integrate it into other Java applications as needed.
diff --git a/Binary_Search.java b/Binary_Search.java
new file mode 100644
index 00000000..fbebca0c
--- /dev/null
+++ b/Binary_Search.java
@@ -0,0 +1,40 @@
+public class Main{
+
+    public static int binarySearch(int array[], int left, int right, int item){
+
+        if (right >= left){
+
+            // calculation of new mid
+            int mid = left + (right - left)/2;
+
+            // returns position where found
+            if (array[mid] == item)
+                return mid+1;
+
+            // goes to recursive calls in left half
+            if (array[mid] > item)
+                return binarySearch(array, left, mid-1, item);
+
+                // goes to recursive calls in right half
+            else
+                return binarySearch(array, mid+1, right, item);
+        }
+        // if element is not found we return -1
+        else
+            return -1;
+    }
+    public static void main(String args[]){
+
+        int[ ] array = {10, 20, 30, 40, 50, 60, 70, 80};
+        int item = 70;
+        int size = array.length;
+
+        int position = binarySearch(array, 0, size-1, item);
+
+        if(position == -1)
+            System.out.println("Element not found");
+        else
+            System.out.println("The value " + item + " found at position: " + position);
+
+    }
+}
diff --git a/Bino.java b/Bino.java
new file mode 100644
index 00000000..d2b8d9d3
--- /dev/null
+++ b/Bino.java
@@ -0,0 +1,52 @@
+import java.util.Scanner;
+
+class Bino {
+    int p, m, e, w;
+    int comb;
+    Scanner sc = new Scanner(System.in);
+
+    Bino() {
+        p = 0;
+        m = 0;
+    }
+
+    void input() {
+        System.out.println("Enter the first number (p): ");
+        p = sc.nextInt();
+        System.out.println("Enter the second number (m): ");
+        m = sc.nextInt();
+        System.out.println("Enter the highest power (w): ");
+        w = sc.nextInt();
+        System.out.println("Enter the lowest power (e): ");
+        e = sc.nextInt();
+    }
+
+    int fact(int x) {
+        int s = 1;
+        for (int i = 1; i <= x; i++) {
+            s = s * i;
+        }
+        return s;
+    }
+
+    int compute() {
+        int a = fact(p);
+        int b = fact(m);
+        int k = fact(p - m);
+        comb = a / (b * k);
+        return comb;
+    }
+
+    void bmial() {
+        int d = compute();
+        System.out.print(d + " * " + Math.pow(p, w) + " * " + Math.pow(m, e));
+        w--;
+        e++;
+    }
+
+    public static void main(String[] args) {
+        Bino ob = new Bino();
+        ob.input();
+        ob.bmial();
+    }
+}
diff --git a/BlogBackend-main/blog-api-com/target/classes/application.properties b/BlogBackend-main/blog-api-com/target/classes/application.properties
new file mode 100644
index 00000000..53bda75c
--- /dev/null
+++ b/BlogBackend-main/blog-api-com/target/classes/application.properties
@@ -0,0 +1,16 @@
+server.port = 9090
+
+#Database Configuration
+spring.datasource.url=jdbc:mysql://localhost:3306/blog_app_apis
+spring.datasource.username=root
+spring.datasource.password=root
+
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
+
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+
+spring.servlet.multipart.max-file-size= 10MB
+spring.servlet.multipart.max-request-size = 10MB
+
+project.image = images/
\ No newline at end of file
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/BlogApplication.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/BlogApplication.class
new file mode 100644
index 00000000..3162d97f
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/BlogApplication.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/AppConstant.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/AppConstant.class
new file mode 100644
index 00000000..afa9beda
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/AppConstant.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/RestURIConstant.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/RestURIConstant.class
new file mode 100644
index 00000000..2c576d81
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/config/RestURIConstant.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CategoryController.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CategoryController.class
new file mode 100644
index 00000000..baa0aa3c
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CategoryController.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CommentController.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CommentController.class
new file mode 100644
index 00000000..7bdf9f52
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/CommentController.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/PostContoller.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/PostContoller.class
new file mode 100644
index 00000000..62392216
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/PostContoller.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/UserController.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/UserController.class
new file mode 100644
index 00000000..d18b68a9
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/controller/UserController.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CategoryRepo.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CategoryRepo.class
new file mode 100644
index 00000000..22b9a2b3
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CategoryRepo.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CommentRepo.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CommentRepo.class
new file mode 100644
index 00000000..383af67a
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/CommentRepo.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/PostRepo.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/PostRepo.class
new file mode 100644
index 00000000..f9b2ad84
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/PostRepo.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/UserRepo.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/UserRepo.class
new file mode 100644
index 00000000..b20ad90b
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/dao/UserRepo.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Category.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Category.class
new file mode 100644
index 00000000..d378b3c4
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Category.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Comment.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Comment.class
new file mode 100644
index 00000000..73275dec
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Comment.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Post.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Post.class
new file mode 100644
index 00000000..52f1708f
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/Post.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/User.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/User.class
new file mode 100644
index 00000000..62ea5781
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/entity/User.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/GlobalExceptionHandler.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/GlobalExceptionHandler.class
new file mode 100644
index 00000000..0773b7c9
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/GlobalExceptionHandler.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/ResourceNotFoundException.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/ResourceNotFoundException.class
new file mode 100644
index 00000000..14147ae8
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/exceptions/ResourceNotFoundException.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/ApiResponse.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/ApiResponse.class
new file mode 100644
index 00000000..fe9a83ad
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/ApiResponse.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CategoryDTO.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CategoryDTO.class
new file mode 100644
index 00000000..f9983719
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CategoryDTO.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CommentDto.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CommentDto.class
new file mode 100644
index 00000000..eaba5148
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/CommentDto.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/PostDto.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/PostDto.class
new file mode 100644
index 00000000..fb2a42c3
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/PostDto.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/UserDTO.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/UserDTO.class
new file mode 100644
index 00000000..9c41d366
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/payload/UserDTO.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CategoryService.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CategoryService.class
new file mode 100644
index 00000000..d4f05fe7
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CategoryService.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CommentService.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CommentService.class
new file mode 100644
index 00000000..d494ab1b
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/CommentService.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/FileService.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/FileService.class
new file mode 100644
index 00000000..a0a3f008
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/FileService.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/PostService.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/PostService.class
new file mode 100644
index 00000000..12eccbec
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/PostService.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/UserService.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/UserService.class
new file mode 100644
index 00000000..6eb24778
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/UserService.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CategoryServiceImpl.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CategoryServiceImpl.class
new file mode 100644
index 00000000..57fee5ed
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CategoryServiceImpl.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CommentServiceImpl.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CommentServiceImpl.class
new file mode 100644
index 00000000..ed27179c
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/CommentServiceImpl.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/FileServiceImpl.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/FileServiceImpl.class
new file mode 100644
index 00000000..c60f15ff
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/FileServiceImpl.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/PostServiceImpl.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/PostServiceImpl.class
new file mode 100644
index 00000000..1d4c3e05
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/PostServiceImpl.class differ
diff --git a/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/UserServiceImpl.class b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/UserServiceImpl.class
new file mode 100644
index 00000000..077d7d7e
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/classes/com/suraj/blog/service/impl/UserServiceImpl.class differ
diff --git a/BlogBackend-main/blog-api-com/target/test-classes/com/suraj/blog/DemoApplicationTests.class b/BlogBackend-main/blog-api-com/target/test-classes/com/suraj/blog/DemoApplicationTests.class
new file mode 100644
index 00000000..cb724fcb
Binary files /dev/null and b/BlogBackend-main/blog-api-com/target/test-classes/com/suraj/blog/DemoApplicationTests.class differ
diff --git a/Board.java b/Board.java
new file mode 100644
index 00000000..2f9fbaf8
--- /dev/null
+++ b/Board.java
@@ -0,0 +1,246 @@
+package com.zetcode;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.Timer;
+
+public class Board extends JPanel implements ActionListener {
+
+    private final int B_WIDTH = 300;
+    private final int B_HEIGHT = 300;
+    private final int DOT_SIZE = 10;
+    private final int ALL_DOTS = 900;
+    private final int RAND_POS = 29;
+    private final int DELAY = 140;
+
+    private final int x[] = new int[ALL_DOTS];
+    private final int y[] = new int[ALL_DOTS];
+
+    private int dots;
+    private int apple_x;
+    private int apple_y;
+
+    private boolean leftDirection = false;
+    private boolean rightDirection = true;
+    private boolean upDirection = false;
+    private boolean downDirection = false;
+    private boolean inGame = true;
+
+    private Timer timer;
+    private Image ball;
+    private Image apple;
+    private Image head;
+
+    public Board() {
+        
+        initBoard();
+    }
+    
+    private void initBoard() {
+
+        addKeyListener(new TAdapter());
+        setBackground(Color.black);
+        setFocusable(true);
+
+        setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));
+        loadImages();
+        initGame();
+    }
+
+    private void loadImages() {
+
+        ImageIcon iid = new ImageIcon("src/resources/dot.png");
+        ball = iid.getImage();
+
+        ImageIcon iia = new ImageIcon("src/resources/apple.png");
+        apple = iia.getImage();
+
+        ImageIcon iih = new ImageIcon("src/resources/head.png");
+        head = iih.getImage();
+    }
+
+    private void initGame() {
+
+        dots = 3;
+
+        for (int z = 0; z < dots; z++) {
+            x[z] = 50 - z * 10;
+            y[z] = 50;
+        }
+        
+        locateApple();
+
+        timer = new Timer(DELAY, this);
+        timer.start();
+    }
+
+    @Override
+    public void paintComponent(Graphics g) {
+        super.paintComponent(g);
+
+        doDrawing(g);
+    }
+    
+    private void doDrawing(Graphics g) {
+        
+        if (inGame) {
+
+            g.drawImage(apple, apple_x, apple_y, this);
+
+            for (int z = 0; z < dots; z++) {
+                if (z == 0) {
+                    g.drawImage(head, x[z], y[z], this);
+                } else {
+                    g.drawImage(ball, x[z], y[z], this);
+                }
+            }
+
+            Toolkit.getDefaultToolkit().sync();
+
+        } else {
+
+            gameOver(g);
+        }        
+    }
+
+    private void gameOver(Graphics g) {
+        
+        String msg = "Game Over";
+        Font small = new Font("Helvetica", Font.BOLD, 14);
+        FontMetrics metr = getFontMetrics(small);
+
+        g.setColor(Color.white);
+        g.setFont(small);
+        g.drawString(msg, (B_WIDTH - metr.stringWidth(msg)) / 2, B_HEIGHT / 2);
+    }
+
+    private void checkApple() {
+
+        if ((x[0] == apple_x) && (y[0] == apple_y)) {
+
+            dots++;
+            locateApple();
+        }
+    }
+
+    private void move() {
+
+        for (int z = dots; z > 0; z--) {
+            x[z] = x[(z - 1)];
+            y[z] = y[(z - 1)];
+        }
+
+        if (leftDirection) {
+            x[0] -= DOT_SIZE;
+        }
+
+        if (rightDirection) {
+            x[0] += DOT_SIZE;
+        }
+
+        if (upDirection) {
+            y[0] -= DOT_SIZE;
+        }
+
+        if (downDirection) {
+            y[0] += DOT_SIZE;
+        }
+    }
+
+    private void checkCollision() {
+
+        for (int z = dots; z > 0; z--) {
+
+            if ((z > 4) && (x[0] == x[z]) && (y[0] == y[z])) {
+                inGame = false;
+            }
+        }
+
+        if (y[0] >= B_HEIGHT) {
+            inGame = false;
+        }
+
+        if (y[0] < 0) {
+            inGame = false;
+        }
+
+        if (x[0] >= B_WIDTH) {
+            inGame = false;
+        }
+
+        if (x[0] < 0) {
+            inGame = false;
+        }
+        
+        if (!inGame) {
+            timer.stop();
+        }
+    }
+
+    private void locateApple() {
+
+        int r = (int) (Math.random() * RAND_POS);
+        apple_x = ((r * DOT_SIZE));
+
+        r = (int) (Math.random() * RAND_POS);
+        apple_y = ((r * DOT_SIZE));
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+
+        if (inGame) {
+
+            checkApple();
+            checkCollision();
+            move();
+        }
+
+        repaint();
+    }
+
+    private class TAdapter extends KeyAdapter {
+
+        @Override
+        public void keyPressed(KeyEvent e) {
+
+            int key = e.getKeyCode();
+
+            if ((key == KeyEvent.VK_LEFT) && (!rightDirection)) {
+                leftDirection = true;
+                upDirection = false;
+                downDirection = false;
+            }
+
+            if ((key == KeyEvent.VK_RIGHT) && (!leftDirection)) {
+                rightDirection = true;
+                upDirection = false;
+                downDirection = false;
+            }
+
+            if ((key == KeyEvent.VK_UP) && (!downDirection)) {
+                upDirection = true;
+                rightDirection = false;
+                leftDirection = false;
+            }
+
+            if ((key == KeyEvent.VK_DOWN) && (!upDirection)) {
+                downDirection = true;
+                rightDirection = false;
+                leftDirection = false;
+            }
+        }
+    }
+}
+
diff --git a/Brick-Breaker-Game/pom.xml b/Brick-Breaker-Game/pom.xml
new file mode 100644
index 00000000..64369fe0
--- /dev/null
+++ b/Brick-Breaker-Game/pom.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.mycompany</groupId>
+    <artifactId>Brick</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>15</maven.compiler.source>
+        <maven.compiler.target>15</maven.compiler.target>
+    </properties>
+</project>
\ No newline at end of file
diff --git a/Brick-Breaker-Game/src/main/java/com/mycompany/brick/GamePlay.java b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/GamePlay.java
new file mode 100644
index 00000000..a95373e2
--- /dev/null
+++ b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/GamePlay.java
@@ -0,0 +1,213 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.mycompany.brick;
+
+import javax.swing.JPanel;
+import javax.swing.Timer;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.Graphics;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+/**
+ *
+ * @author chinm
+ */
+public class GamePlay extends JPanel implements KeyListener, ActionListener {
+    
+     private boolean play = false;
+    private int score = 0;
+    private int totalbricks = 21;
+    private Timer Timer;
+    private int delay = 8;
+    private int playerX = 310;
+    private int ballposX = 120;
+    private int ballposY = 350;
+    private int ballXdir = -1;
+    private int ballYdir = -2;
+    private MapGenerator map;
+
+    public GamePlay() {
+        map = new MapGenerator(3, 7);
+        addKeyListener(this);
+        setFocusable(true);
+        setFocusTraversalKeysEnabled(false);
+        Timer = new Timer(delay, this);
+        Timer.start();
+    }
+    
+     public void paint(Graphics g) {
+        g.setColor(Color.black);
+        g.fillRect(1, 1, 692, 592);
+
+        map.draw((Graphics2D) g);
+
+        g.setColor(Color.yellow);
+        g.fillRect(0, 0, 3, 592);
+        g.fillRect(0, 0, 692, 3);
+        g.fillRect(691, 0, 3, 592);
+
+        g.setColor(Color.white);
+        g.setFont(new Font("serif", Font.BOLD, 25));
+        g.drawString("" + score, 590, 30);
+
+        g.setColor(Color.yellow);
+        g.fillRect(playerX, 550, 100, 8);
+
+        //ball
+        g.setColor(Color.GREEN);
+        g.fillOval(ballposX, ballposY, 20, 20);
+
+        if (ballposY > 570) {
+            play = false;
+            ballXdir = 0;
+            ballYdir = 0;
+            g.setColor(Color.red);
+            g.setFont(new Font("serif", Font.BOLD, 30));
+            g.drawString("    Game Over Score: " + score, 190, 300);
+
+            g.setFont(new Font("serif", Font.BOLD, 30));
+            g.drawString("   Press Enter to Restart", 190, 340);
+        }
+        if(totalbricks == 0){
+            play = false;
+            ballYdir = -2;
+            ballXdir = -1;
+            g.setColor(Color.red);
+            g.setFont(new Font("serif",Font.BOLD,30));
+            g.drawString("    Game Over: "+score,190,300);
+
+            g.setFont(new Font("serif", Font.BOLD, 30));
+            g.drawString("   Press Enter to Restart", 190, 340);
+
+
+        }
+
+        g.dispose();
+
+
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        Timer.start();
+
+        if (play) {
+            if (new Rectangle(ballposX, ballposY, 20, 20).intersects(new Rectangle(playerX, 550, 100, 8))) {
+                ballYdir = -ballYdir;
+            }
+
+            A:
+            for (int i = 0; i < map.map.length; i++) {
+                for (int j = 0; j < map.map[0].length; j++) {
+                    if (map.map[i][j] > 0) {
+                        int brickX = j * map.bricksWidth + 80;
+                        int brickY = i * map.bricksHeight + 50;
+                        int bricksWidth = map.bricksWidth;
+                        int bricksHeight = map.bricksHeight;
+
+                        Rectangle rect = new Rectangle(brickX, brickY, bricksWidth, bricksHeight);
+                        Rectangle ballrect = new Rectangle(ballposX, ballposY, 20, 20);
+                        Rectangle brickrect = rect;
+
+                        if (ballrect.intersects(brickrect)) {
+                            map.setBricksValue(0, i, j);
+                            totalbricks--;
+                            score += 5;
+                            if (ballposX + 19 <= brickrect.x || ballposX + 1 >= brickrect.x + bricksWidth) {
+                                ballXdir = -ballXdir;
+                            } else {
+                                ballYdir = -ballYdir;
+                            }
+                            break A;
+                        }
+                    }
+
+
+                }
+            }
+
+
+            ballposX += ballXdir;
+            ballposY += ballYdir;
+            if (ballposX < 0) {
+                ballXdir = -ballXdir;
+            }
+            if (ballposY < 0) {
+                ballYdir = -ballYdir;
+            }
+            if (ballposX > 670) {
+                ballXdir = -ballXdir;
+            }
+        }
+        repaint();
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+
+       }
+
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
+            if (playerX >= 600) {
+                playerX = 600;
+            } else {
+                moveRight();
+            }
+        }
+        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
+            if (playerX < 10) {
+                playerX = 10;
+            } else {
+                moveLeft();
+            }
+        }
+
+        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+            if (!play) {
+                ballposX = 120;
+                ballposY = 350;
+                ballXdir = -1;
+                ballYdir = -2;
+                score = 0;
+                playerX = 310;
+                totalbricks = 21;
+                map = new MapGenerator(3, 7);
+
+                repaint();
+            }
+        }
+
+
+        }
+
+        public void moveRight ()
+        {
+            play = true;
+            playerX += 20;
+        }
+        public void moveLeft ()
+        {
+            play = true;
+            playerX -= 20;
+        }
+        
+    
+    
+}
diff --git a/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MapGenerator.java b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MapGenerator.java
new file mode 100644
index 00000000..1f203c2a
--- /dev/null
+++ b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MapGenerator.java
@@ -0,0 +1,52 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.mycompany.brick;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+
+/**
+ *
+ * @author chinm
+ */
+public class MapGenerator {
+     public int map[][];
+    public int bricksWidth;
+    public int bricksHeight;
+    public MapGenerator(int row , int col){
+        map = new int[row][col];
+         for (int[] map1 : map) {
+             for (int j = 0; j < map[0].length; j++) {
+                 map1[j] = 1;
+             }
+         }
+        bricksWidth = 540/col;
+        bricksHeight = 150/row;
+    }
+    public void draw(Graphics2D g) {
+        for (int i = 0; i < map.length; i++) {
+            for (int j = 0; j < map[0].length; j++) {
+                if (map[i][j] > 0) {
+                    g.setColor(Color.red);
+                    g.fillRect(j * bricksWidth + 80, i * bricksHeight + 50, bricksWidth, bricksHeight);
+
+                    g.setStroke(new BasicStroke(3));
+                    g.setColor(Color.black);
+                    g.drawRect(j * bricksWidth + 80, i * bricksHeight + 50, bricksWidth, bricksHeight);
+
+                }
+            }
+
+        }
+    }
+    public void setBricksValue(int value,int row,int col)
+    {
+        map[row][col] = value;
+
+    }
+    
+}
diff --git a/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MyApp.java b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MyApp.java
new file mode 100644
index 00000000..f3d826e0
--- /dev/null
+++ b/Brick-Breaker-Game/src/main/java/com/mycompany/brick/MyApp.java
@@ -0,0 +1,26 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.mycompany.brick;
+
+import javax.swing.JFrame;
+
+/**
+ *
+ * @author chinm
+ */
+public class MyApp {
+    public static void main(String[] args) {
+        JFrame obj = new JFrame();
+        GamePlay gameplay = new GamePlay();
+        obj.setBounds(10,10,700,600);
+        obj.setTitle("BrickBreaker");
+        obj.setResizable(false);
+        obj.setVisible(true);
+        obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        obj.add(gameplay);
+    }
+    
+}
diff --git a/Brick-Breaker-Game/target/classes/com/mycompany/brick/GamePlay.class b/Brick-Breaker-Game/target/classes/com/mycompany/brick/GamePlay.class
new file mode 100644
index 00000000..c532198d
Binary files /dev/null and b/Brick-Breaker-Game/target/classes/com/mycompany/brick/GamePlay.class differ
diff --git a/Brick-Breaker-Game/target/classes/com/mycompany/brick/MapGenerator.class b/Brick-Breaker-Game/target/classes/com/mycompany/brick/MapGenerator.class
new file mode 100644
index 00000000..5fbb5b15
Binary files /dev/null and b/Brick-Breaker-Game/target/classes/com/mycompany/brick/MapGenerator.class differ
diff --git a/Brick-Breaker-Game/target/classes/com/mycompany/brick/MyApp.class b/Brick-Breaker-Game/target/classes/com/mycompany/brick/MyApp.class
new file mode 100644
index 00000000..2e211b94
Binary files /dev/null and b/Brick-Breaker-Game/target/classes/com/mycompany/brick/MyApp.class differ
diff --git a/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 00000000..82fac6fa
--- /dev/null
+++ b/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,3 @@
+com\mycompany\brick\MapGenerator.class
+com\mycompany\brick\MyApp.class
+com\mycompany\brick\GamePlay.class
diff --git a/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 00000000..0f925b0e
--- /dev/null
+++ b/Brick-Breaker-Game/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,3 @@
+C:\Users\chinm\OneDrive\Documents\NetBeansProjects\Brick\src\main\java\com\mycompany\brick\MyApp.java
+C:\Users\chinm\OneDrive\Documents\NetBeansProjects\Brick\src\main\java\com\mycompany\brick\GamePlay.java
+C:\Users\chinm\OneDrive\Documents\NetBeansProjects\Brick\src\main\java\com\mycompany\brick\MapGenerator.java
diff --git a/Brick-Breaker-Game/target/test-classes/.netbeans_automatic_build b/Brick-Breaker-Game/target/test-classes/.netbeans_automatic_build
new file mode 100644
index 00000000..e69de29b
diff --git a/Budget Tracker project/.cph/.BudgetTracker.java_16aeda78c6a917d37e3e9161668c0c60.prob b/Budget Tracker project/.cph/.BudgetTracker.java_16aeda78c6a917d37e3e9161668c0c60.prob
new file mode 100644
index 00000000..3b117b2b
--- /dev/null
+++ b/Budget Tracker project/.cph/.BudgetTracker.java_16aeda78c6a917d37e3e9161668c0c60.prob	
@@ -0,0 +1 @@
+{"name":"Local: BudgetTracker","url":"c:\\Users\\Administrator\\Desktop\\Java-Projects-Collections\\Budget Tracker project\\BudgetTracker.java","tests":[{"id":1696452999127,"input":"","output":""}],"interactive":false,"memoryLimit":1024,"timeLimit":3000,"srcPath":"c:\\Users\\Administrator\\Desktop\\Java-Projects-Collections\\Budget Tracker project\\BudgetTracker.java","group":"local","local":true}
\ No newline at end of file
diff --git a/Budget Tracker project/BudgetTracker.class b/Budget Tracker project/BudgetTracker.class
new file mode 100644
index 00000000..7e5cbd42
Binary files /dev/null and b/Budget Tracker project/BudgetTracker.class differ
diff --git a/Budget Tracker project/BudgetTracker.java b/Budget Tracker project/BudgetTracker.java
new file mode 100644
index 00000000..144ca617
--- /dev/null
+++ b/Budget Tracker project/BudgetTracker.java	
@@ -0,0 +1,56 @@
+import java.util.Scanner;
+
+public class BudgetTracker {
+    private double balance;
+
+    public BudgetTracker() {
+        balance = 0.0;
+    }
+
+    public void addIncome(double amount) {
+        balance += amount;
+    }
+
+    public void addExpense(double amount) {
+        balance -= amount;
+    }
+
+    public double getBalance() {
+        return balance;
+    }
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        BudgetTracker tracker = new BudgetTracker();
+
+        while (true) {
+            System.out.println("1. Add Income");
+            System.out.println("2. Add Expense");
+            System.out.println("3. View Balance");
+            System.out.println("4. Exit");
+            System.out.print("Enter your choice: ");
+            int choice = scanner.nextInt();
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter income amount: ");
+                    double income = scanner.nextDouble();
+                    tracker.addIncome(income);
+                    break;
+                case 2:
+                    System.out.print("Enter expense amount: ");
+                    double expense = scanner.nextDouble();
+                    tracker.addExpense(expense);
+                    break;
+                case 3:
+                    System.out.println("Current Balance: Rs" + tracker.getBalance());
+                    break;
+                case 4:
+                    System.out.println("Exiting... Thank you!");
+                    return;
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Bug3524.java b/Bug3524.java
new file mode 100644
index 00000000..f03beca7
--- /dev/null
+++ b/Bug3524.java
@@ -0,0 +1,11 @@
+import java.util.Scanner;
+public class Bug3524 {
+        public static void main(String[] param) {
+            System.out.println("2021503524 - Mugundh J B - 09/09/23 - 2.20 pm");
+            Scanner in = new Scanner(System.in);
+            System.out.println("Hello. Please type your name:");
+            String name = in.nextLine();
+            System.out.println("Hello "+name);
+            System.out.println ("Have a, nice day!");
+        }
+}
diff --git a/CArray.java b/CArray.java
new file mode 100644
index 00000000..91611b0a
--- /dev/null
+++ b/CArray.java
@@ -0,0 +1,60 @@
+import java.util.Scanner;  
+//This class will calculate the max and min values of the array  
+class TestArray  
+{  
+      
+    int MAX(int[]Arry)  
+    {  
+        int maxValue= Arry[0];  
+  
+        for(int i=1;i<Arry.length;i++)  
+        {  
+            if(Arry[i]>maxValue)  
+            {  
+                maxValue=Arry[i];  
+            }  
+        }  
+        return maxValue;//This method will return the max value present in the array.  
+    }  
+  
+    int MIN(int[]Arry)  
+    {  
+        int minValue=Arry[0];  
+  
+        for(int i=1;i<Arry.length;i++)  
+        {  
+            if(Arry[i]<minValue)  
+            {  
+                minValue=Arry[i];  
+            }  
+        }  
+        return minValue;  
+    }  
+}  
+  
+public class DifferenceArry  
+{  
+    public static void main(String[] args)  
+    {  
+        int n;  
+  
+        //It creates scanner object  
+        Scanner sc = new Scanner(System.in);  
+        System.out.print("Enter the array elements:" );  
+        n=sc.nextInt();  
+  
+        int arr[]=new int[n];  
+  
+        for(int i=0;i<arr.length;i++)  
+        {  
+            System.out.print("Enter ["+(i+1)+"] element :" );  
+            arr[i]=sc.nextInt();  
+        }  
+  
+        TestArray obj=new TestArray();  
+        System.out.println("Maximum value in the array is :" +obj.MAX(arr));  
+        System.out.println("Minimum value in the array is :" +obj.MIN(arr));  
+        int diff=obj.MAX(arr)-obj.MIN(arr);  
+        System.out.print("Difference between max and min elements is : " +diff );     
+    }  
+}  
diff --git a/CPUSchedullingAlgorithm.c b/CPUSchedullingAlgorithm.c
new file mode 100644
index 00000000..aacae849
--- /dev/null
+++ b/CPUSchedullingAlgorithm.c
@@ -0,0 +1,975 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+typedef struct array
+{
+    int *AT;
+    int *BT;
+    int *WT;
+    int *TAT;
+    int *CT;
+} Array;
+
+typedef struct readyQueue
+{
+    int pid;
+    int BT;
+    struct readyQueue *next;
+} ReadyQueue;
+
+Array *userInput(int processNum, int *AT, int *BT, Array *ptr)
+{
+
+    printf("Enter the input in the form of 'Arrival Time(AT)' 'Burst Time(BT)'\n");
+    for (int i = 0; i < processNum; i++)
+    {
+        scanf("%d %d", &AT[i], &BT[i]);
+        printf("\n");
+    }
+    ptr->AT = AT;
+    ptr->BT = BT;
+    return ptr;
+}
+
+Array *sortAT(int *AT, int *BT, int proccessNum, Array *ptr)
+{
+    bool swapped = false;
+    for (int i = 0; i < proccessNum - 1; i++)
+    {
+        swapped = false;
+        for (int j = 0; j < proccessNum - i - 1; j++)
+        {
+            if (AT[j] > AT[j + 1])
+            {
+                int temp = AT[j];
+                AT[j] = AT[j + 1];
+                AT[j + 1] = temp;
+                temp = BT[j];
+                BT[j] = BT[j + 1];
+                BT[j + 1] = temp;
+                swapped = true;
+            }
+        }
+
+        if (swapped == false)
+        {
+            break;
+        }
+    }
+
+    ptr->AT = AT;
+    ptr->BT = BT;
+    return ptr;
+}
+
+int *calculateWT(int *WT, int processNum, int *AT, int *BT)
+{
+    WT[0] = 0;
+    int currentTime = BT[0] + AT[0];
+    for (int i = 1; i < processNum; i++)
+    {
+        if (AT[i] > currentTime)
+        {
+            currentTime = AT[i];
+        }
+        WT[i] = currentTime - AT[i];
+        currentTime += BT[i];
+    }
+    return WT;
+}
+
+int *calculateTAT(int *TAT, int processNum, int *BT, int *WT)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        TAT[i] = WT[i] + BT[i];
+    }
+
+    return TAT;
+}
+
+int *calculateCT(int *CT, int proccessNum, int *AT, int *BT, int *WT)
+{
+    for (int i = 0; i < proccessNum; i++)
+    {
+        CT[i] = AT[i] + WT[i] + BT[i];
+    }
+
+    return CT;
+}
+
+void display(int *AT, int *BT, int *WT, int *TAT, int *CT, int proccessNum)
+{
+    printf("AT\t BT\t WT\t TAT\t CT\n");
+    float avgWT = 0;
+    float avgTAT = 0;
+    float avgCT = 0;
+    for (int i = 0; i < proccessNum; i++)
+    {
+        avgWT += WT[i];
+        avgTAT += TAT[i];
+        avgCT += CT[i];
+        printf("%d\t %d\t %d\t %d\t %d\n", AT[i], BT[i], WT[i], TAT[i], CT[i]);
+    }
+    printf("Average WT: %f\n", avgWT / proccessNum);
+    printf("Average TAT: %f\n", avgTAT / proccessNum);
+    printf("Average CT: %f\n", avgCT / proccessNum);
+}
+
+Array *dynAlloc(Array *ptr, int processNum)
+{
+    ptr = (Array *)malloc(sizeof(Array));
+    ptr->AT = (int *)malloc(processNum * sizeof(int));
+    ptr->BT = (int *)malloc(processNum * sizeof(int));
+    ptr->WT = (int *)malloc(processNum * sizeof(int));
+    ptr->TAT = (int *)malloc(processNum * sizeof(int));
+    ptr->CT = (int *)malloc(processNum * sizeof(int));
+    return ptr;
+}
+
+void FCFSNecessaryFunct(int processNum, int *AT, int *BT, int *WT, int *TAT, int *CT, Array *ptr)
+{
+    ptr = userInput(processNum, ptr->AT, ptr->BT, ptr);
+    ptr = sortAT(ptr->AT, ptr->BT, processNum, ptr);
+    ptr->WT = calculateWT(ptr->WT, processNum, ptr->AT, ptr->BT);
+    ptr->TAT = calculateTAT(ptr->TAT, processNum, ptr->BT, ptr->WT);
+    ptr->CT = calculateCT(ptr->CT, processNum, ptr->AT, ptr->BT, ptr->WT);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, processNum);
+}
+
+void FCFS()
+{
+    int processNum;
+    printf("Enter the number of processess to be executed\n");
+    scanf("%d", &processNum);
+    Array *ptr;
+    ptr = dynAlloc(ptr, processNum);
+    FCFSNecessaryFunct(processNum, ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, ptr);
+    free(ptr);
+}
+
+int *fillBT2(int processNum, int *BT, int *BT2)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        BT2[i] = BT[i];
+    }
+
+    return BT2;
+}
+
+int findMin(int processNum, int *BT2, int currentTime, int *AT)
+{
+    int res = 1;
+    for (int i = 1; i < processNum; i++)
+    {
+        if (BT2[i] <= BT2[res] && BT2[i] != -1 && AT[i] <= currentTime)
+        {
+            res = i;
+        }
+        else if (BT2[res] == -1)
+        {
+            res++;
+        }
+    }
+    return res;
+}
+
+int *sjfTAT(int processNum, int *AT, int *CT, int *TAT)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        TAT[i] = CT[i] - AT[i];
+    }
+
+    return TAT;
+}
+
+int *sjfWT(int processNum, int *BT, int *WT, int *TAT)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        WT[i] = TAT[i] - BT[i];
+    }
+
+    return WT;
+}
+
+int *sjfCT(int processNum, int *BT2, int *AT, int *BT, int *CT)
+{
+    int currentTime = BT2[0] + AT[0];
+    CT[0] = currentTime;
+    BT2[0] = -1;
+    for (int i = 1; i < processNum; i++)
+    {
+        int index = findMin(processNum, BT2, currentTime, AT);
+        currentTime += BT2[index];
+        CT[index] = currentTime;
+        BT2[index] = -1;
+    }
+    return CT;
+}
+
+void SJF()
+{
+    int proccessNum;
+    printf("Enter the number of proccesses\n");
+    scanf("%d", &proccessNum);
+    Array *ptr;
+    ptr = dynAlloc(ptr, proccessNum);
+    ptr = userInput(proccessNum, ptr->AT, ptr->BT, ptr);
+    ptr = sortAT(ptr->AT, ptr->BT, proccessNum, ptr);
+    int *BT2 = (int *)malloc(proccessNum * sizeof(int));
+    BT2 = fillBT2(proccessNum, ptr->BT, BT2);
+    ptr->CT = sjfCT(proccessNum, BT2, ptr->AT, ptr->BT, ptr->CT);
+    ptr->TAT = sjfTAT(proccessNum, ptr->AT, ptr->CT, ptr->TAT);
+    ptr->WT = sjfWT(proccessNum, ptr->BT, ptr->WT, ptr->TAT);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, proccessNum);
+    free(ptr);
+}
+
+ReadyQueue *enqueue(ReadyQueue *ptr, int data, int pid)
+{
+    ReadyQueue *newNode = (ReadyQueue *)malloc(sizeof(ReadyQueue));
+    newNode->BT = data;
+    newNode->pid = pid;
+    newNode->next = NULL;
+
+    if (ptr == NULL)
+    {
+        return newNode;
+    }
+    else if (data == 0)
+    {
+        free(newNode);
+        return ptr;
+    }
+    else
+    {
+        ReadyQueue *current = ptr;
+        while (current->next != NULL)
+        {
+            current = current->next;
+        }
+
+        current->next = newNode;
+
+        return ptr;
+    }
+}
+
+ReadyQueue *fillList(int *BT, ReadyQueue *list, int processNum)
+{
+
+    for (int i = 0; i < processNum; i++)
+    {
+        int pid = i + 1;
+        list = enqueue(list, BT[i], pid);
+    }
+    return list;
+}
+
+ReadyQueue *dequeue(ReadyQueue *ptr)
+{
+    if (ptr == NULL)
+    {
+        return NULL;
+    }
+
+    ReadyQueue *temp = ptr;
+    ptr = ptr->next;
+    free(temp);
+    return ptr;
+}
+
+int *rrCT(int *CT, int processNum, ReadyQueue *ptr, int TQ, int AT0)
+{
+    int currentTime = AT0;
+    while (ptr != NULL)
+    {
+        ReadyQueue *temp = ptr;
+        if (temp->BT > TQ)
+        {
+            temp->BT -= TQ;
+            currentTime += TQ;
+            ptr = enqueue(temp, temp->BT, temp->pid);
+        }
+        else if (temp->BT == 0)
+        {
+            CT[temp->pid - 1] = currentTime;
+        }
+        else if (temp->BT <= TQ)
+        {
+            CT[temp->pid - 1] = currentTime + temp->BT;
+            currentTime += temp->BT;
+        }
+        ptr = dequeue(ptr);
+    }
+
+    return CT;
+}
+
+int *rrWT(int *WT, int *BT, int *AT, int *CT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        WT[i] = CT[i] - BT[i] - AT[i];
+    }
+
+    return WT;
+}
+
+int *rrTAT(int *BT, int *WT, int *TAT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        TAT[i] = BT[i] + WT[i];
+    }
+
+    return TAT;
+}
+
+void RR()
+{
+    int TQ, processNum;
+    printf("Enter the time quantum for each process and the number of processess\n");
+    scanf("%d %d", &TQ, &processNum);
+    Array *ptr;
+    ptr = dynAlloc(ptr, processNum);
+    ptr = userInput(processNum, ptr->AT, ptr->BT, ptr);
+    ptr = sortAT(ptr->AT, ptr->BT, processNum, ptr);
+    ReadyQueue *rrListFront = (ReadyQueue *)malloc(sizeof(ReadyQueue));
+    rrListFront->BT = 0;
+    rrListFront->pid = 0;
+    rrListFront->next = NULL;
+    rrListFront = fillList(ptr->BT, rrListFront, processNum);
+    ptr->CT = rrCT(ptr->CT, processNum, rrListFront, TQ, ptr->AT[0]);
+    ptr->WT = rrWT(ptr->WT, ptr->BT, ptr->AT, ptr->CT, processNum);
+    ptr->TAT = rrTAT(ptr->BT, ptr->WT, ptr->TAT, processNum);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, processNum);
+    free(ptr);
+}
+
+int maxAT(int *AT, int processNum)
+{
+    int res = 0;
+    for (int i = 1; i < processNum; i++)
+    {
+        if (AT[res] < AT[i])
+        {
+            res = i;
+        }
+    }
+
+    return AT[res];
+}
+
+ReadyQueue *leastTime(ReadyQueue *ptr, int currentTime, int *AT, int processNum, int MAX_AT)
+{
+    ReadyQueue *temp = ptr;
+    ReadyQueue *res = ptr;
+    ReadyQueue *temp2 = ptr;
+    temp2 = temp2->next;
+    temp = temp->next;
+    int BT = ptr->BT;
+    if (currentTime < MAX_AT)
+    {
+        for (int i = ptr->pid; i < processNum; i++)
+        {
+            if (AT[i] == currentTime && BT > temp->BT)
+            {
+                BT = temp->BT;
+                res = temp;
+            }
+            else if (AT[i] > currentTime)
+
+            {
+                break;
+            }
+            temp = temp->next;
+        }
+    }
+    else
+    {
+        while (temp != NULL)
+        {
+            if (BT > temp->BT)
+            {
+                BT = temp->BT;
+                res = temp;
+            }
+            temp = temp->next;
+        }
+    }
+    while (temp2 != NULL)
+    {
+        if (AT[temp2->pid - 1] <= currentTime)
+        {
+            if (temp2->BT < res->BT)
+            {
+                res = temp2;
+            }
+            else if (temp2->BT == res->BT && temp2->pid < res->pid)
+            {
+                res = temp2;
+            }
+        }
+        temp2 = temp2->next;
+    }
+    return res;
+}
+
+ReadyQueue *addFront(ReadyQueue *temp, ReadyQueue *ptr)
+{
+    if (temp == ptr)
+    {
+        return ptr;
+    }
+
+    ReadyQueue *prev = NULL;
+    ReadyQueue *current = ptr;
+    while (current != NULL && current != temp)
+    {
+        prev = current;
+        current = current->next;
+    }
+
+    if (current == temp)
+    {
+        if (prev != NULL)
+        {
+            prev->next = temp->next;
+        }
+        else
+        {
+            ptr = temp->next;
+        }
+
+        temp->next = ptr;
+        ptr = temp;
+    }
+
+    return ptr;
+}
+
+int *strfCT(int *CT, ReadyQueue *ptr, int *AT, int processNum)
+{
+
+    int currentTime = AT[0];
+    int MAX_AT = maxAT(AT, processNum);
+    int i = 0;
+    while (ptr != NULL)
+    {
+        int BT = ptr->BT;
+        int pid = ptr->pid;
+        ReadyQueue *temp = ptr;
+        ReadyQueue *head = ptr;
+        if (ptr->BT != 0)
+        {
+            temp = leastTime(ptr, currentTime, AT, processNum, MAX_AT);
+        }
+        if (currentTime > MAX_AT && ptr->BT < temp->BT)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            ptr = dequeue(ptr);
+        }
+        else if (temp->BT == ptr->BT && temp->pid < ptr->pid)
+        {
+            ptr = dequeue(ptr);
+            ptr = enqueue(ptr, BT, pid);
+            ptr = addFront(temp, ptr);
+        }
+        else if (ptr->next == NULL)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            ptr = dequeue(ptr);
+        }
+        else if (ptr->BT == 0)
+        {
+            CT[ptr->pid - 1] = currentTime;
+            ptr = dequeue(ptr);
+        }
+        else if (temp->BT < ptr->BT)
+        {
+            ptr = dequeue(ptr);
+            ptr = enqueue(ptr, BT, pid);
+            ptr = addFront(temp, ptr);
+        }
+        else if (temp->BT == ptr->BT)
+        {
+            currentTime++;
+            ptr->BT--;
+        }
+    }
+    return CT;
+}
+
+int *strfWT(int *AT, int *BT, int *CT, int *WT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        WT[i] = CT[i] - BT[i] - AT[i];
+    }
+
+    return WT;
+}
+
+int *strfTAT(int *BT, int *WT, int *TAT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        TAT[i] = BT[i] + WT[i];
+    }
+
+    return TAT;
+}
+
+void STRF()
+{
+    int processNum;
+    printf("Enter the number of processess\n");
+    scanf("%d", &processNum);
+    Array *ptr;
+    ptr = dynAlloc(ptr, processNum);
+    ptr = userInput(processNum, ptr->AT, ptr->BT, ptr);
+    ptr = sortAT(ptr->AT, ptr->BT, processNum, ptr);
+    ReadyQueue *queue = (ReadyQueue *)malloc(sizeof(ReadyQueue));
+    queue = NULL;
+    queue = fillList(ptr->BT, queue, processNum);
+    ptr->CT = strfCT(ptr->CT, queue, ptr->AT, processNum);
+    printf("CT = %d\n", ptr->CT[0]);
+    ptr->WT = strfWT(ptr->AT, ptr->BT, ptr->CT, ptr->WT, processNum);
+    ptr->TAT = strfTAT(ptr->BT, ptr->WT, ptr->TAT, processNum);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, processNum);
+    free(ptr);
+}
+
+typedef struct array2
+{
+    int *AT;
+    int *BT;
+    int *WT;
+    int *TAT;
+    int *CT;
+    int *priority;
+} Array2;
+
+typedef struct queue
+{
+    int BT;
+    int pid;
+    int prority;
+    struct queue *next;
+} queue;
+
+Array2 *dynAlloc2(Array2 *ptr, int processNum)
+{
+    ptr = (Array2 *)malloc(sizeof(Array2));
+    ptr->AT = (int *)malloc(processNum * sizeof(int));
+    ptr->BT = (int *)malloc(processNum * sizeof(int));
+    ptr->WT = (int *)malloc(processNum * sizeof(int));
+    ptr->TAT = (int *)malloc(processNum * sizeof(int));
+    ptr->CT = (int *)malloc(processNum * sizeof(int));
+    ptr->priority = (int *)malloc(processNum * sizeof(int));
+    return ptr;
+}
+
+Array2 *userinputPR(Array2 *ptr, int *AT, int *BT, int *priority, int processNum)
+{
+    printf("Enter the input in the form of 'Priority' 'Arrival Time(AT)' 'Burst Time(BT)'\n");
+    for (int i = 0; i < processNum; i++)
+    {
+        scanf("%d %d %d", &priority[i], &AT[i], &BT[i]);
+        printf("\n");
+    }
+    ptr->AT = AT;
+    ptr->BT = BT;
+    ptr->priority = priority;
+    return ptr;
+}
+
+Array2 *sortATPR(int *AT, int *BT, int *priority, int proccessNum, Array2 *ptr)
+{
+    bool swapped = false;
+    for (int i = 0; i < proccessNum - 1; i++)
+    {
+        swapped = false;
+        for (int j = 0; j < proccessNum - i - 1; j++)
+        {
+            if (AT[j] > AT[j + 1])
+            {
+                int temp = AT[j];
+                AT[j] = AT[j + 1];
+                AT[j + 1] = temp;
+                temp = BT[j];
+                BT[j] = BT[j + 1];
+                BT[j + 1] = temp;
+                temp = priority[j];
+                priority[j] = priority[j + 1];
+                priority[j + 1] = temp;
+                swapped = true;
+            }
+        }
+
+        if (swapped == false)
+        {
+            break;
+        }
+    }
+
+    ptr->AT = AT;
+    ptr->BT = BT;
+    ptr->priority = priority;
+    return ptr;
+}
+
+queue *enqueuePR(queue *ptr, int data, int pid, int priority)
+{
+    queue *newNode = (queue *)malloc(sizeof(queue));
+    newNode->BT = data;
+    newNode->pid = pid;
+    newNode->prority = priority;
+    newNode->next = NULL;
+
+    if (ptr == NULL)
+    {
+        return newNode;
+    }
+    else if (data == 0)
+    {
+        free(newNode);
+        return ptr;
+    }
+    else
+    {
+        queue *current = ptr;
+        while (current->next != NULL)
+        {
+            current = current->next;
+        }
+
+        current->next = newNode;
+
+        return ptr;
+    }
+}
+
+queue *dequeuePR(queue *ptr)
+{
+    if (ptr == NULL)
+    {
+        return NULL;
+    }
+
+    queue *temp = ptr;
+    ptr = ptr->next;
+    free(temp);
+    return ptr;
+}
+
+queue *fillListPR(int *BT, int *priority, queue *list, int processNum)
+{
+
+    for (int i = 0; i < processNum; i++)
+    {
+        int pid = i + 1;
+        list = enqueuePR(list, BT[i], pid, priority[i]);
+    }
+    return list;
+}
+
+queue *addFrontPR(queue *temp, queue *ptr)
+{
+    if (temp == ptr)
+    {
+        return ptr;
+    }
+
+    queue *prev = NULL;
+    queue *current = ptr;
+    while (current != NULL && current != temp)
+    {
+        prev = current;
+        current = current->next;
+    }
+
+    if (current == temp)
+    {
+        if (prev != NULL)
+        {
+            prev->next = temp->next;
+        }
+        else
+        {
+            ptr = temp->next;
+        }
+
+        temp->next = ptr;
+        ptr = temp;
+    }
+
+    return ptr;
+}
+
+queue *maxPR(queue *ptr, int currentTime, int *AT, int processNum, int MAX_AT)
+{
+    queue *temp = ptr;
+    queue *res = ptr;
+    queue *temp2 = ptr;
+    temp2 = temp2->next;
+    temp = temp->next;
+    int priority = ptr->prority;
+    if (currentTime < MAX_AT)
+    {
+        for (int i = ptr->pid; i < processNum; i++)
+        {
+            if (AT[i] == currentTime && priority > temp->prority)
+            {
+                priority = temp->prority;
+                res = temp;
+            }
+            else if (AT[i] > currentTime)
+
+            {
+                break;
+            }
+            temp = temp->next;
+        }
+    }
+    else
+    {
+        while (temp != NULL)
+        {
+            if (priority > temp->prority)
+            {
+                priority = temp->prority;
+                res = temp;
+            }
+            temp = temp->next;
+        }
+    }
+    while (temp2 != NULL)
+    {
+        if (AT[temp2->pid - 1] <= currentTime)
+        {
+            if (temp2->prority < res->prority)
+            {
+                res = temp2;
+            }
+            else if (temp2->prority == res->prority && temp2->pid < res->pid)
+            {
+                res = temp2;
+            }
+        }
+        temp2 = temp2->next;
+    }
+    return res;
+}
+
+int *prCT(int *CT, int *AT, queue *ptr, int processNum)
+{
+    int currentTime = AT[0];
+    int MAX_AT = maxAT(AT, processNum);
+    int i = 0;
+    while (ptr != NULL)
+    {
+        int BT = ptr->BT;
+        int pid = ptr->pid;
+        int priority = ptr->prority;
+        queue *temp = ptr;
+        if (ptr->BT != 0)
+        {
+            temp = maxPR(ptr, currentTime, AT, processNum, MAX_AT);
+        }
+        if (currentTime >= MAX_AT && ptr == temp)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+        }
+        else if (temp->prority == ptr->prority && temp->pid < ptr->pid)
+        {
+            ptr = dequeuePR(ptr);
+            ptr = enqueuePR(ptr, BT, pid, priority);
+            ptr = addFrontPR(temp, ptr);
+        }
+        else if (ptr->next == NULL)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+        }
+        else if (ptr->BT == 0)
+        {
+            CT[ptr->pid - 1] = currentTime;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+        }
+        else if (temp->prority < ptr->prority)
+        {
+            ptr = dequeuePR(ptr);
+            ptr = enqueuePR(ptr, BT, pid, priority);
+            ptr = addFrontPR(temp, ptr);
+        }
+        else if (temp->prority == ptr->prority)
+        {
+            currentTime++;
+            ptr->BT--;
+        }
+    }
+    return CT;
+}
+
+int *prWT(int *AT, int *BT, int *CT, int *WT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        WT[i] = CT[i] - BT[i] - AT[i];
+    }
+
+    return WT;
+}
+
+int *prTAT(int *BT, int *WT, int *TAT, int processNum)
+{
+    for (int i = 0; i < processNum; i++)
+    {
+        TAT[i] = BT[i] + WT[i];
+    }
+
+    return TAT;
+}
+
+void PR()
+{
+    int processNum;
+    printf("Enter the number of proccesses\n");
+    scanf("%d", &processNum);
+    Array2 *ptr = dynAlloc2(ptr, processNum);
+    ptr = userinputPR(ptr, ptr->AT, ptr->BT, ptr->priority, processNum);
+    ptr = sortATPR(ptr->AT, ptr->BT, ptr->priority, processNum, ptr);
+    queue *queue1 = (queue *)malloc(sizeof(queue));
+    queue1 = NULL;
+    queue1 = fillListPR(ptr->BT, ptr->priority, queue1, processNum);
+    ptr->CT = prCT(ptr->CT, ptr->AT, queue1, processNum);
+    ptr->WT = prWT(ptr->AT, ptr->BT, ptr->CT, ptr->WT, processNum);
+    ptr->TAT = prTAT(ptr->BT, ptr->WT, ptr->TAT, processNum);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, processNum);
+    free(ptr);
+}
+
+int *nonPRCT(int *CT, int *AT, queue *ptr, int processNum)
+{
+    int currentTime = AT[0];
+    int MAX_AT = maxAT(AT, processNum);
+    while (ptr != NULL)
+    {
+        int BT = ptr->BT;
+        int pid = ptr->pid;
+        int priority = ptr->prority;
+        queue *temp = ptr;
+        queue *head = ptr;
+        if (ptr->BT != 0)
+        {
+            temp = maxPR(ptr, currentTime, AT, processNum, MAX_AT);
+        }
+        if (ptr == temp)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+        }
+        else if (currentTime >= MAX_AT && ptr == temp)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+        }
+        else if (temp->prority < ptr->prority)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+            ptr = addFrontPR(temp, ptr);
+        }
+        else if (temp->prority == ptr->prority && temp->pid < ptr->pid)
+        {
+            CT[ptr->pid - 1] = currentTime + ptr->BT;
+            currentTime += ptr->BT;
+            ptr = dequeuePR(ptr);
+            ptr = addFrontPR(temp, ptr);
+        }
+    }
+
+    return CT;
+}
+
+void nonPR()
+{
+    int processNum;
+    printf("Enter the number of processess\n");
+    scanf("%d", &processNum);
+    Array2 *ptr;
+    ptr = dynAlloc2(ptr, processNum);
+    ptr = userinputPR(ptr, ptr->AT, ptr->BT, ptr->priority, processNum);
+    ptr = sortATPR(ptr->AT, ptr->BT, ptr->priority, processNum, ptr);
+    queue *queue1 = (queue *)malloc(sizeof(queue));
+    queue1 = NULL;
+    queue1 = fillListPR(ptr->BT, ptr->priority, queue1, processNum);
+    ptr->CT = nonPRCT(ptr->CT, ptr->AT, queue1, processNum);
+    ptr->WT = prWT(ptr->AT, ptr->BT, ptr->CT, ptr->WT, processNum);
+    ptr->TAT = prTAT(ptr->BT, ptr->WT, ptr->TAT, processNum);
+    display(ptr->AT, ptr->BT, ptr->WT, ptr->TAT, ptr->CT, processNum);
+    free(ptr);
+}
+
+void main()
+{
+    int choice;
+    char option;
+    while (choice != 6)
+    {
+        printf("Choose the CPU scheduling\n 1.FCFS\n 2.SJF\n 3.RR\n 4.STRF\n 5.PR\n 6.Exit\n");
+        scanf("%d", &choice);
+
+        switch (choice)
+        {
+        case 1:
+            FCFS();
+            break;
+
+        case 2:
+            SJF();
+            break;
+
+        case 3:
+            RR();
+            break;
+
+        case 4:
+            STRF();
+            break;
+
+        case 5:
+            printf("Do you want to continue with preemptive Y or N? \n");
+            scanf("%c", &option);
+            scanf("%c", &option);
+            if (option == 'Y')
+            {
+                PR();
+            }
+            else if (option == 'N')
+            {
+                nonPR();
+            }
+            break;
+
+        case 6:
+            break;
+
+        default:
+            break;
+        }
+    }
+}
diff --git a/Calculator using Java/Calc.java b/Calculator using Java/Calc.java
new file mode 100644
index 00000000..f495f631
--- /dev/null
+++ b/Calculator using Java/Calc.java	
@@ -0,0 +1,170 @@
+package simplejavacalculator;
+
+import static java.lang.Double.NaN;
+import static java.lang.Math.log10;
+import static java.lang.Math.pow;
+
+
+
+
+public class Calculator {
+
+    public enum BiOperatorModes {
+
+        normal, add, minus, multiply, divide , xpowerofy 
+
+    }
+
+    public enum MonoOperatorModes {
+
+        square, squareRoot, oneDividedBy, cos, sin, tan ,log , rate, abs
+
+    }
+
+    private double num1, num2;
+
+    private BiOperatorModes mode = BiOperatorModes.normal;
+
+    private double calculateBiImpl() {
+
+        if (mode == BiOperatorModes.normal) {
+
+            return num2;
+
+        }
+
+        if (mode == BiOperatorModes.add) {
+
+            if (num2 != 0) {
+
+                return num1 + num2;
+
+            }
+
+            return num1;
+
+        }
+
+        if (mode == BiOperatorModes.minus) {
+
+            return num1 - num2;
+
+        }
+
+        if (mode == BiOperatorModes.multiply) {
+
+            return num1 * num2;
+
+        }
+
+        if (mode == BiOperatorModes.divide) {
+
+            return num1 / num2;
+
+        }
+
+        if (mode == BiOperatorModes.xpowerofy) {
+
+            return pow(num1,num2);
+
+        }
+
+        // never reach
+
+        throw new Error();
+
+    }
+
+    public Double calculateBi(BiOperatorModes newMode, Double num) {
+
+        if (mode == BiOperatorModes.normal) {
+
+            num2 = 0.0;
+
+            num1 = num;
+
+            mode = newMode;
+
+            return NaN;
+
+        } else {
+
+            num2 = num;
+
+            num1 = calculateBiImpl();
+
+            mode = newMode;
+
+            return num1;
+
+        }
+
+    }
+
+    public Double calculateEqual(Double num) {
+
+        return calculateBi(BiOperatorModes.normal, num);
+
+    }
+
+    public Double reset() {
+
+        num2 = 0.0;
+
+        num1 = 0.0;
+
+        mode = BiOperatorModes.normal;
+
+        return NaN;
+
+    }
+
+    public Double calculateMono(MonoOperatorModes newMode, Double num) {
+
+        if (newMode == MonoOperatorModes.square) {
+
+            return num * num;
+
+        }
+
+        if (newMode == MonoOperatorModes.squareRoot) {
+
+            return Math.sqrt(num);
+
+        }
+
+        if (newMode == MonoOperatorModes.oneDividedBy) {
+
+            return 1 / num;
+
+        }
+
+        if (newMode == MonoOperatorModes.cos) {
+
+            return Math.cos(Math.toRadians(num));
+
+        }
+
+        if (newMode == MonoOperatorModes.sin) {
+
+            return Math.sin(Math.toRadians(num));
+
+        }
+
+        if (newMode == MonoOperatorModes.tan) {
+            if (num == 0 || num % 180 == 0) {
+                return 0.0;
+            }
+            if (num % 90 == 0 && num % 180 != 0) {
+                return NaN;
+            }
+            return Math.tan(Math.toRadians(num));
+        }
+
+        if (newMode == MonoOperatorModes.log) {
+            return log10(num);
+        }
+
+        if (newMode == MonoOperatorModes.rate) {
+           return num / 100;
+        }
diff --git a/Calculator using Java/newfile b/Calculator using Java/newfile
new file mode 100644
index 00000000..d1998aba
--- /dev/null
+++ b/Calculator using Java/newfile	
@@ -0,0 +1,74 @@
+//Digital Clock mini project
+
+
+
+import javax.swing.*;
+import java.awt.*;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class Clock extends JFrame {
+
+    Calendar calendar;
+    SimpleDateFormat timeFormat;
+    SimpleDateFormat dayFormat;
+    SimpleDateFormat dateFormat;
+
+    JLabel timeLabel;
+    JLabel dayLabel;
+    JLabel dateLabel;
+    String time;
+    String day;
+    String date;
+    Clock() {
+        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.setTitle("Digital Clock");
+        this.setLayout(new FlowLayout());
+        this.setSize(350, 220);
+        this.setResizable(false);
+
+        timeFormat = new SimpleDateFormat("hh:mm:ss a");
+        dayFormat=new SimpleDateFormat("EEEE");
+        dateFormat=new SimpleDateFormat("dd MMMMM, yyyy");
+        timeLabel = new JLabel();
+        timeLabel.setFont(new Font("SANS_SERIF", Font.PLAIN, 59));
+        timeLabel.setBackground(Color.BLACK);
+        timeLabel.setForeground(Color.WHITE);
+        timeLabel.setOpaque(true);
+        dayLabel=new JLabel();
+        dayLabel.setFont(new Font("Ink Free",Font.BOLD,34));
+
+        dateLabel=new JLabel();
+        dateLabel.setFont(new Font("Ink Free",Font.BOLD,30));
+
+
+        this.add(timeLabel);
+        this.add(dayLabel);
+        this.add(dateLabel);
+        this.setVisible(true);
+
+        setTimer();
+    }
+
+    public void setTimer() {
+        while (true) {
+            time = timeFormat.format(Calendar.getInstance().getTime());
+            timeLabel.setText(time);
+
+            day = dayFormat.format(Calendar.getInstance().getTime());
+            dayLabel.setText(day);
+
+            date = dateFormat.format(Calendar.getInstance().getTime());
+            dateLabel.setText(date);
+
+            try {
+                Thread.sleep(1000);
+            } catch (Exception e) {
+                e.getStackTrace();
+            }
+        }
+    }
+    public static void main(String[] args) {
+        new Clock();
+    }
+}
diff --git a/Calculator-project/.classpath b/Calculator-project/.classpath
index 5e8a55fe..a8965644 100644
--- a/Calculator-project/.classpath
+++ b/Calculator-project/.classpath
@@ -23,5 +23,35 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="target/generated-sources/annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
 	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/Calculator-project/.settings/org.eclipse.jdt.apt.core.prefs b/Calculator-project/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 00000000..d4313d4b
--- /dev/null
+++ b/Calculator-project/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/Calculator-project/.settings/org.eclipse.jdt.core.prefs b/Calculator-project/.settings/org.eclipse.jdt.core.prefs
index 2f5cc74c..1b6e1ef2 100644
--- a/Calculator-project/.settings/org.eclipse.jdt.core.prefs
+++ b/Calculator-project/.settings/org.eclipse.jdt.core.prefs
@@ -4,5 +4,6 @@ org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
 org.eclipse.jdt.core.compiler.release=disabled
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Calculator.java b/Calculator.java
new file mode 100644
index 00000000..f5d22d55
--- /dev/null
+++ b/Calculator.java
@@ -0,0 +1,61 @@
+// Java program for simple calculator
+import java.io.*;
+import java.lang.*;
+import java.lang.Math;
+import java.util.Scanner;
+
+// Driver class
+public class BasicCalculator {
+	// main function
+	public static void main(String[] args)
+	{
+		// Stores two numbers
+		double num1, num2;
+
+		// Take input from the user
+		Scanner sc = new Scanner(System.in);
+
+		System.out.println("Enter the numbers:");
+
+		// Take the inputs
+		num1 = sc.nextDouble();
+		num2 = sc.nextDouble();
+
+		System.out.println("Enter the operator (+,-,*,/):");
+
+		char op = sc.next().charAt(0);
+		double o = 0;
+
+		switch (op) {
+		// case to add two numbers
+		case '+':
+			o = num1 + num2;
+			break;
+
+		// case to subtract two numbers
+		case '-':
+			o = num1 - num2;
+			break;
+
+		// case to multiply two numbers
+		case '*':
+			o = num1 * num2;
+			break;
+
+		// case to divide two numbers
+		case '/':
+			o = num1 / num2;
+			break;
+
+		default:
+			System.out.println("You enter wrong input");
+		}
+
+		System.out.println("The final result:");
+		System.out.println();
+
+		// print the final result
+		System.out.println(num1 + " " + op + " " + num2
+						+ " = " + o);
+	}
+}
diff --git a/CalculatorAWT.java b/CalculatorAWT.java
new file mode 100644
index 00000000..8913bac8
--- /dev/null
+++ b/CalculatorAWT.java
@@ -0,0 +1,266 @@
+import java.awt.*;  
+import java.awt.event.*;  
+class MyCalc extends WindowAdapter implements ActionListener{ 
+  Frame f; 
+Label l1;
+Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
+Button badd,bsub,bmult,bdiv,bmod,bcalc,bclr,bpts,bneg,bback;
+double xd;
+double num1,num2,check;
+
+MyCalc(){  
+  f= new Frame("MY CALCULATOR");
+// INSTANTIATING COMPONENETS 
+l1=new Label(); 
+l1.setBackground(Color.LIGHT_GRAY);
+l1.setBounds(50,50,260,60);
+
+
+b1=new Button("1");
+  b1.setBounds(50,340,50,50);
+b2=new Button("2");
+  b2.setBounds(120,340,50,50);
+b3=new Button("3");
+  b3.setBounds(190,340,50,50);
+b4=new Button("4");
+  b4.setBounds(50,270,50,50);
+b5=new Button("5");
+  b5.setBounds(120,270,50,50); 
+b6=new Button("6");
+  b6.setBounds(190,270,50,50);
+b7=new Button("7");
+  b7.setBounds(50,200,50,50);
+b8=new Button("8");
+  b8.setBounds(120,200,50,50);
+b9=new Button("9");
+  b9.setBounds(190,200,50,50);
+b0=new Button("0");
+  b0.setBounds(120,410,50,50);
+bneg=new Button("+/-");
+  bneg.setBounds(50,410,50,50);
+bpts=new Button(".");
+  bpts.setBounds(190,410,50,50);
+bback=new Button("back");
+ bback.setBounds(120,130,50,50);
+
+badd=new Button("+");
+  badd.setBounds(260,340,50,50);
+bsub=new Button("-");
+  bsub.setBounds(260,270,50,50);
+bmult=new Button("*");
+  bmult.setBounds(260,200,50,50);
+bdiv=new Button("/");
+  bdiv.setBounds(260,130,50,50);
+bmod=new Button("%");
+  bmod.setBounds(190,130,50,50);
+bcalc=new Button("=");
+  bcalc.setBounds(245,410,65,50);
+bclr=new Button("CE"); 
+  bclr.setBounds(50,130,65,50);
+
+
+b1.addActionListener(this); 
+b2.addActionListener(this);  
+b3.addActionListener(this);  
+b4.addActionListener(this);  
+b5.addActionListener(this); 
+b6.addActionListener(this); 
+b7.addActionListener(this); 
+b8.addActionListener(this); 
+b9.addActionListener(this);  
+b0.addActionListener(this);
+
+bpts.addActionListener(this);  
+bneg.addActionListener(this);
+bback.addActionListener(this); 
+
+badd.addActionListener(this);
+bsub.addActionListener(this);
+bmult.addActionListener(this);
+bdiv.addActionListener(this);
+bmod.addActionListener(this);
+bcalc.addActionListener(this);
+bclr.addActionListener(this); 
+
+f.addWindowListener(this);
+//ADDING TO FRAME   
+f.add(l1);  
+f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);f.add(b6); f.add(b7); f.add(b8);f.add(b9);f.add(b0);
+
+f.add(badd); f.add(bsub); f.add(bmod); f.add(bmult); f.add(bdiv); f.add(bmod);f.add(bcalc);
+
+f.add(bclr); f.add(bpts);f.add(bneg); f.add(bback);
+
+f.setSize(360,500);  
+f.setLayout(null);  
+f.setVisible(true);  
+} 
+                     //FOR CLOSING THE WINDOW
+public void windowClosing(WindowEvent e) {
+  f.dispose();
+}
+
+public void actionPerformed(ActionEvent e){ 
+  String z,zt;
+                        //NUMBER BUTTON 
+if(e.getSource()==b1){
+ zt=l1.getText();
+  z=zt+"1";
+  l1.setText(z);
+}
+if(e.getSource()==b2){
+zt=l1.getText();
+z=zt+"2";
+l1.setText(z);
+}
+if(e.getSource()==b3){
+  zt=l1.getText();
+  z=zt+"3";
+  l1.setText(z);
+}
+if(e.getSource()==b4){
+  zt=l1.getText();
+  z=zt+"4";
+  l1.setText(z);
+}
+if(e.getSource()==b5){
+  zt=l1.getText();
+  z=zt+"5";
+  l1.setText(z);
+}
+if(e.getSource()==b6){
+  zt=l1.getText();
+  z=zt+"6";
+  l1.setText(z);
+}
+if(e.getSource()==b7){
+  zt=l1.getText();
+  z=zt+"7";
+  l1.setText(z);
+}
+if(e.getSource()==b8){
+  zt=l1.getText();
+  z=zt+"8";
+  l1.setText(z);
+}
+if(e.getSource()==b9){
+  zt=l1.getText();
+  z=zt+"9";
+  l1.setText(z);
+}
+if(e.getSource()==b0){
+  zt=l1.getText();
+  z=zt+"0";
+  l1.setText(z);
+}
+
+if(e.getSource()==bpts){  //ADD DECIMAL PTS
+  zt=l1.getText();
+  z=zt+".";
+  l1.setText(z);
+}
+if(e.getSource()==bneg){ //FOR NEGATIVE
+  zt=l1.getText();
+  z="-"+zt;
+  l1.setText(z);
+}
+
+if(e.getSource()==bback){  // FOR  BACKSPACE
+  zt=l1.getText();
+  try{
+    z=zt.substring(0, zt.length()-1);
+    }catch(StringIndexOutOfBoundsException f){return;}
+  l1.setText(z);
+}
+                //AIRTHMETIC BUTTON
+if(e.getSource()==badd){                     //FOR ADDITION
+  try{
+    num1=Double.parseDouble(l1.getText());
+    }catch(NumberFormatException f){
+      l1.setText("Invalid Format");
+      return;
+    }
+  z="";
+  l1.setText(z);
+  check=1;
+}
+if(e.getSource()==bsub){                    //FOR SUBTRACTION
+  try{
+    num1=Double.parseDouble(l1.getText());
+    }catch(NumberFormatException f){
+      l1.setText("Invalid Format");
+      return;
+    }
+  z="";
+  l1.setText(z);
+  check=2;
+}
+if(e.getSource()==bmult){                   //FOR MULTIPLICATION
+  try{
+    num1=Double.parseDouble(l1.getText());
+    }catch(NumberFormatException f){
+      l1.setText("Invalid Format");
+      return;
+    }
+  z="";
+  l1.setText(z);
+  check=3;
+}
+if(e.getSource()==bdiv){                   //FOR DIVISION
+  try{
+    num1=Double.parseDouble(l1.getText());
+    }catch(NumberFormatException f){
+      l1.setText("Invalid Format");
+      return;
+    }
+  z="";
+  l1.setText(z);
+  check=4;
+}
+if(e.getSource()==bmod){                  //FOR MOD/REMAINDER
+  try{
+    num1=Double.parseDouble(l1.getText());
+    }catch(NumberFormatException f){
+      l1.setText("Invalid Format");
+      return;
+    }
+  z="";
+  l1.setText(z);
+  check=5;
+}
+                         //RESULT BUTTON
+if(e.getSource()==bcalc){          
+  try{
+    num2=Double.parseDouble(l1.getText());
+    }catch(Exception f){
+      l1.setText("ENTER NUMBER FIRST ");
+      return;
+    }
+  if(check==1)
+    xd =num1+num2;
+  if(check==2)
+    xd =num1-num2;
+  if(check==3)
+    xd =num1*num2;
+  if(check==4)
+    xd =num1/num2; 
+  if(check==5)
+    xd =num1%num2;    
+  l1.setText(String.valueOf(xd));
+}
+                        //FOR CLEARING THE LABEL and Memory
+if(e.getSource()==bclr){
+  num1=0;
+  num2=0;
+  check=0;
+  xd=0;
+   z="";
+   l1.setText(z);
+   } 
+
+}  
+//MAIN METHOD where objects of MyCalc is instantaiated
+ public static void main(String args[]){  
+       new MyCalc();  
+   }
+}  
diff --git a/Calculator_frame.java b/Calculator_frame.java
new file mode 100644
index 00000000..1be2261b
--- /dev/null
+++ b/Calculator_frame.java
@@ -0,0 +1,207 @@
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+public class Calculator_frame extends Frame implements ActionListener
+{
+	TextField tf;
+        Label l1,l2;
+	Button b1, b2, b3, b4, b5, b6, b7,b8, b9, b0, bA, bM, c, eq, bD, bS;
+	String s = "";
+	
+	public Calculator_frame() {
+                l1=new Label("Calculator X");
+                l1.setBounds(100,30,100,30);
+                l1.setFont(new Font("Verdana", Font.BOLD, 15));
+		tf = new TextField();
+		setSize(300,350);
+		
+		tf.setBounds(10, 60, 200, 30);
+		tf.setText("0");
+		tf.setEditable(false);
+		
+		b9 = new Button("9");
+		b9.setBounds(10,90, 40, 40);
+		b9.setActionCommand("b9");
+		b9.addActionListener(this);
+		b9.setBackground(Color.LIGHT_GRAY);
+		
+		b8 = new Button("8");
+		b8.setBounds(50,90, 40, 40);
+		b8.setActionCommand("b8");
+		b8.addActionListener(this);
+		
+		b7 = new Button("7");
+		b7.setBounds(90,90, 40, 40);
+		b7.setActionCommand("b7");
+		b7.addActionListener(this);
+		
+		b6 = new Button("6");
+		b6.setBounds(10,130, 40, 40);
+		b6.setActionCommand("b6");
+		b6.addActionListener(this);
+		
+		b5 = new Button("5");
+		b5.setBounds(50,130, 40, 40);
+		b5.setActionCommand("b5");
+		b5.addActionListener(this);
+		
+		b4 = new Button("4");
+		b4.setBounds(90,130, 40, 40);
+		b4.setActionCommand("b4");
+		b4.addActionListener(this);
+		
+		b3 = new Button("3");
+		b3.setBounds(10,170, 40, 40);
+		b3.setActionCommand("b3");
+		b3.addActionListener(this);
+		
+		b2 = new Button("2");
+		b2.setBounds(50,170, 40, 40);
+		b2.setActionCommand("b2");
+		b2.addActionListener(this);
+		
+		b1 = new Button("1");
+		b1.setBounds(90,170, 40, 40);
+		b1.setActionCommand("b1");
+		b1.addActionListener(this);
+		
+		b0 = new Button("0");
+		b0.setBounds(10,210, 40, 40);
+		b0.setActionCommand("b0");
+		b0.addActionListener(this);
+		
+		eq = new Button("=");
+		eq.setBounds(50,210, 80, 40);
+		eq.setActionCommand("eq");
+		eq.addActionListener(this);
+		
+		c = new Button("C");
+		c.setBounds(130,90, 80, 40);
+		c.setActionCommand("c");
+		c.addActionListener(this);
+		
+		bA = new Button("+");
+		bA.setBounds(130,130, 40, 40);
+		bA.setActionCommand("bA");
+		bA.addActionListener(this);
+		
+		bS = new Button("-");
+		bS.setBounds(170,130, 40, 40);
+		bS.setActionCommand("bS");
+		bS.addActionListener(this);
+		
+		bM = new Button("X");
+		bM.setBounds(130,170, 40, 40);
+		bM.setActionCommand("bM");
+		bM.addActionListener(this);
+		
+		bD = new Button("/");
+		bD.setBounds(170,170, 40, 40);
+		bD.setActionCommand("bD");
+		bD.addActionListener(this);
+                l2=new Label("Made By: Rajesh");
+                l2.setBounds(10,250,250,40);
+		add(l1);add(tf);add(b9);add(b8);add(b7);add(b6);add(b5);add(b4);add(b3);add(b2);add(b1);add(b0);add(eq);
+		add(c);add(bA);add(bS);add(bM);add(bD);add(l2);
+		
+		addWindowListener(new WindowListener() {
+			public void windowOpened(WindowEvent e) {}
+			public void windowIconified(WindowEvent e) {}
+			public void windowDeiconified(WindowEvent e) {}
+			public void windowDeactivated(WindowEvent e) {}
+			public void windowClosing(WindowEvent e) { dispose();}
+			public void windowClosed(WindowEvent e) {}
+			public void windowActivated(WindowEvent e) {}
+		});
+		
+		addKeyListener(new KeyListener() {
+			public void keyTyped(KeyEvent e) {
+				char c=e.getKeyChar();
+				switch(c)
+				{
+				case '1': s=s.concat("1");tf.setText(s);
+				break;
+				}
+			}
+			public void keyReleased(KeyEvent e) {}
+			public void keyPressed(KeyEvent e) {}
+			
+		});
+		setLayout(null);
+		setVisible(true);
+		
+	}
+	public int calcString(String a){
+		String operators[]=a.split("[0-9]+");
+    String operands[]=a.split("\\+|\\-|x|\\/",0);
+	
+	/*StringBuffer sb = new StringBuffer();
+      for(int i = 0; i < operands.length; i++) {
+         sb.append(operands[i]);
+      }
+      String str = sb.toString();
+      System.out.println(str);*/
+	
+    int agregate = Integer.parseInt(operands[0]);
+    for(int i=1;i<operands.length;i++){
+        if(operators[i].equals("+"))
+            agregate += Integer.parseInt(operands[i]);
+		if(operators[i].equals("-"))
+            agregate -= Integer.parseInt(operands[i]);
+		if(operators[i].equals("x"))
+            agregate *= Integer.parseInt(operands[i]);
+        if(operators[i].equals("/"))
+            agregate /= Integer.parseInt(operands[i]);
+    }
+	return agregate;
+	}
+	
+	public void actionPerformed(ActionEvent e)
+	{
+		String c=e.getActionCommand();
+		switch(c)
+		{
+			case "b0" :s=s.concat("0");tf.setText(s);
+			break;
+			case "b1" :s=s.concat("1");tf.setText(s);
+			break;
+			case "b2" :s=s.concat("2");tf.setText(s);
+			break;
+			case "b3" : s+="3";tf.setText(s);
+			break;
+			case "b4" : s=s.concat("4");tf.setText(s);
+			break;
+			case "b5" : s=s.concat("5");tf.setText(s);
+			break;
+			case "b6" : s=s.concat("6");tf.setText(s);
+			break;
+			case "b7" : s=s.concat("7");tf.setText(s);
+			break;
+			case "b8" : s=s.concat("8");tf.setText(s);
+			break;
+			case "b9" : s=s.concat("9");tf.setText(s);
+			break;
+			case "c" :  tf.setText("0");s=new String("");
+			break;
+			case "eq" : s=Integer.toString(calcString(s));tf.setText(s);s=new String("");
+			break;
+			case "bA" : s=s.concat("+");tf.setText(s);
+			break;
+			case "bS" : s=s.concat("-");tf.setText(s);
+			break;
+			case "bD" : s=s.concat("/");tf.setText(s);
+			break;
+			case "bM" : s=s.concat("x");tf.setText(s);
+		}
+			
+	}
+	public static void main(String[] args)
+	{
+		new Calculator_frame();
+	}
+
+}
diff --git a/Calorie Calculator/CalorieCalculator.java b/Calorie Calculator/CalorieCalculator.java
new file mode 100644
index 00000000..4dd2f685
--- /dev/null
+++ b/Calorie Calculator/CalorieCalculator.java	
@@ -0,0 +1,115 @@
+import java.util.Scanner;
+
+public class CalorieCalculator {
+    
+    // Constants for BMR formula coefficients and activity multipliers
+    private static final double MALE_BMR_CONSTANT = 88.362;
+    private static final double FEMALE_BMR_CONSTANT = 447.593;
+    private static final double MALE_WEIGHT_COEFFICIENT = 13.397;
+    private static final double FEMALE_WEIGHT_COEFFICIENT = 9.247;
+    private static final double MALE_HEIGHT_COEFFICIENT = 4.799;
+    private static final double FEMALE_HEIGHT_COEFFICIENT = 3.098;
+    private static final double MALE_AGE_COEFFICIENT = 5.677;
+    private static final double FEMALE_AGE_COEFFICIENT = 4.330;
+
+    private static final double SEDENTARY_MULTIPLIER = 1.2;
+    private static final double MODERATE_MULTIPLIER = 1.55;
+    private static final double ACTIVE_MULTIPLIER = 1.725;
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        // Prompt the user for information
+        System.out.println("Calorie Calculator");
+        
+        System.out.print("Enter your gender (M/F): ");
+        String gender = scanner.nextLine().trim().toUpperCase();
+
+        if (!gender.equals("M") && !gender.equals("F")) {
+            System.out.println("Invalid gender input. Please enter 'M' or 'F'.");
+            return;
+        }
+
+        System.out.print("Enter your age (in years): ");
+        int age = getValidIntInput(scanner);
+        
+        System.out.print("Enter your weight (in kilograms): ");
+        double weight = getValidDoubleInput(scanner);
+        
+        System.out.print("Enter your height (in centimeters): ");
+        double height = getValidDoubleInput(scanner);
+
+        System.out.print("Enter your activity level (sedentary/moderate/active): ");
+        String activityLevel = scanner.nextLine().trim().toLowerCase();
+
+        if (!isValidActivityLevel(activityLevel)) {
+            System.out.println("Invalid activity level input. Please choose 'sedentary', 'moderate', or 'active'.");
+            return;
+        }
+
+        // Calculate BMR
+        double bmr = calculateBMR(gender, age, weight, height);
+
+        // Calculate daily calorie needs based on activity level
+        double calorieNeeds = calculateCalorieNeeds(bmr, activityLevel);
+
+        // Display the results
+        System.out.printf("Your Basal Metabolic Rate (BMR) is: %.0f calories per day.\n", bmr);
+        System.out.printf("Your estimated daily calorie needs are: %.0f calories per day.\n", calorieNeeds);
+
+        scanner.close();
+    }
+
+    // Method to get a valid integer input from the user
+    private static int getValidIntInput(Scanner scanner) {
+        while (!scanner.hasNextInt()) {
+            System.out.println("Invalid input. Please enter a valid integer.");
+            scanner.next();  // Clear invalid input
+        }
+        return scanner.nextInt();
+    }
+
+    // Method to get a valid double input from the user
+    private static double getValidDoubleInput(Scanner scanner) {
+        while (!scanner.hasNextDouble()) {
+            System.out.println("Invalid input. Please enter a valid number.");
+            scanner.next();  // Clear invalid input
+        }
+        return scanner.nextDouble();
+    }
+
+    // Method to check if the activity level is valid
+    private static boolean isValidActivityLevel(String activityLevel) {
+        return activityLevel.equals("sedentary") || activityLevel.equals("moderate") || activityLevel.equals("active");
+    }
+
+    // Method to calculate BMR
+    private static double calculateBMR(String gender, int age, double weight, double height) {
+        double bmr;
+        if (gender.equals("M")) {
+            bmr = MALE_BMR_CONSTANT + (MALE_WEIGHT_COEFFICIENT * weight) + (MALE_HEIGHT_COEFFICIENT * height) - (MALE_AGE_COEFFICIENT * age);
+        } else {
+            bmr = FEMALE_BMR_CONSTANT + (FEMALE_WEIGHT_COEFFICIENT * weight) + (FEMALE_HEIGHT_COEFFICIENT * height) - (FEMALE_AGE_COEFFICIENT * age);
+        }
+        return bmr;
+    }
+
+    // Method to calculate calorie needs based on activity level
+    private static double calculateCalorieNeeds(double bmr, String activityLevel) {
+        double calorieNeeds;
+        switch (activityLevel) {
+            case "sedentary":
+                calorieNeeds = bmr * SEDENTARY_MULTIPLIER;
+                break;
+            case "moderate":
+                calorieNeeds = bmr * MODERATE_MULTIPLIER;
+                break;
+            case "active":
+                calorieNeeds = bmr * ACTIVE_MULTIPLIER;
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid activity level");
+        }
+        return calorieNeeds;
+    }
+}
diff --git a/CandyVendor.java b/CandyVendor.java
new file mode 100644
index 00000000..3f9d7fff
--- /dev/null
+++ b/CandyVendor.java
@@ -0,0 +1,68 @@
+import java.util.Scanner;
+
+public class CandyVendor {
+
+    private int candies;
+    private int money;
+
+    public CandyVendor(int can) {
+        this.candies = can;
+        this.money = 0;
+    }
+
+    public int buy(int amt) {
+        if (amt < 1 || candies == 0) {
+            return 0;
+        }
+
+        if (amt > candies) {
+            amt = candies;
+        }
+
+        candies -= amt;
+        money += amt;
+
+        return amt;
+    }
+
+    public void print() {
+        System.out.println("Candies left: " + candies);
+        System.out.println("Money collected: " + money);
+    }
+
+    public static void main(String[] args) {
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Welcome to the candy vending machine!");
+
+        int candies = sc.nextInt();
+
+        CandyVendor vendor = new CandyVendor(candies);
+
+        while (true) {
+            System.out.println("How much money do you want to insert?");
+
+            int money = sc.nextInt();
+
+            int candiesDispensed = vendor.buy(money);
+
+            if (candiesDispensed == 0) {
+                System.out.println("Not enough candies or money!");
+            } else {
+                System.out.println("Here are your candies!");
+            }
+
+            vendor.print();
+
+            System.out.println("Do you want to buy more candy? (y/n)");
+
+            String choice = sc.next();
+
+            if (!choice.equalsIgnoreCase("y")) {
+                break;
+            }
+        }
+
+        sc.close();
+    }
+}
\ No newline at end of file
diff --git a/Challenge.java b/Challenge.java
new file mode 100644
index 00000000..9bcee0e0
--- /dev/null
+++ b/Challenge.java
@@ -0,0 +1,51 @@
+import java.util.Scanner;
+public class Challenge {
+    static boolean isLeapYear(int n) {
+        if (n % 100 == 0) {
+            return (n % 400) == 0;
+        } else {
+            return n % 4 == 0;
+        }
+    }
+    static int numLYunsorted(int[] a){
+        int count=0;
+        for (int j : a) {
+            if (isLeapYear(j)) {
+                count++;
+            }
+        }
+        return count;
+    }
+    public static void main(String[] args){
+        Scanner sc = new Scanner(System.in);
+
+        System.out.println("Enter the Lower and Upper range.");
+        System.out.print("\nlower range:");
+        int l=sc.nextInt();
+        System.out.print("upper range:");
+        int u=sc.nextInt();
+//        int res1=numLYrange(l,u);
+
+        System.out.println("Enter no. of years in the sorted list:");
+        int n=sc.nextInt();
+        int[] arry = new int[n];
+        System.out.println("Enter the list of years:");
+        for(int i=0;i<n;i++){
+            arry[i]=sc.nextInt();
+        }
+        int res1=numLYunsorted(arry);
+//        int res2=numLYunsorted(arry);
+        System.out.println("Enter no. of years in the unsorted list:");
+        int n1=sc.nextInt();
+        int[] arry1 = new int[n1];
+        System.out.println("Enter the list of years:");
+        for(int i=0;i<n1;i++){
+            arry1[i]=sc.nextInt();
+        }
+        int res2=numLYunsorted(arry1);
+
+        System.out.println("The difference in both number of years is:"+(res1-res2));
+
+        sc.close();
+    }
+}
diff --git a/Circular_queue.java b/Circular_queue.java
new file mode 100644
index 00000000..c020c8b6
--- /dev/null
+++ b/Circular_queue.java
@@ -0,0 +1,75 @@
+public class CircularQueue {
+    private int[] arr;
+    private int front;
+    private int rear;
+    private int capacity;
+    private int size;
+
+    public CircularQueue(int capacity) {
+        this.capacity = capacity;
+        this.arr = new int[capacity];
+        this.front = -1;
+        this.rear = -1;
+        this.size = 0;
+    }
+
+    public boolean isEmpty() {
+        return size == 0;
+    }
+
+    public boolean isFull() {
+        return size == capacity;
+    }
+
+    public void enqueue(int element) {
+        if (isFull()) {
+            System.out.println("Queue is full. Cannot enqueue more elements.");
+            return;
+        }
+
+        if (isEmpty()) {
+            front = 0;
+        }
+
+        rear = (rear + 1) % capacity;
+        arr[rear] = element;
+        size++;
+    }
+
+    public int dequeue() {
+        if (isEmpty()) {
+            System.out.println("Queue is empty. Cannot dequeue elements.");
+            return -1;
+        }
+
+        int element = arr[front];
+        if (front == rear) {
+            front = -1;
+            rear = -1;
+        } else {
+            front = (front + 1) % capacity;
+        }
+
+        size--;
+
+        return element;
+    }
+
+    public int front() {
+        if (isEmpty()) {
+            System.out.println("Queue is empty. No front element.");
+            return -1;
+        }
+
+        return arr[front];
+    }
+}
+ public static void main(String[] args) {
+        CircularQueue queue = new CircularQueue(5);
+        queue.enqueue(1);
+        queue.enqueue(2);
+        queue.enqueue(3);
+
+        System.out.println(queue.dequeue()); // Output: 1
+        System.out.println(queue.front());  // Output: 2
+    }
diff --git a/ColorCodeConverter.java b/ColorCodeConverter.java
new file mode 100644
index 00000000..7881f082
--- /dev/null
+++ b/ColorCodeConverter.java
@@ -0,0 +1,53 @@
+import java.util.Scanner;
+
+public class ColorCodeConverter {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("Color Code Converter");
+        System.out.println("1. RGB to HEX");
+        System.out.println("2. HEX to RGB");
+        System.out.print("Enter your choice (1 or 2): ");
+
+        int choice = scanner.nextInt();
+        scanner.nextLine(); // Consume the newline character
+
+        if (choice == 1) {
+            System.out.print("Enter RGB color (e.g., 255, 0, 0): ");
+            String rgb = scanner.nextLine();
+            String hex = rgbToHex(rgb);
+            System.out.println("HEX color: " + hex);
+        } else if (choice == 2) {
+            System.out.print("Enter HEX color (e.g., #FF0000): ");
+            String hex = scanner.nextLine();
+            String rgb = hexToRgb(hex);
+            System.out.println("RGB color: " + rgb);
+        } else {
+            System.out.println("Invalid choice. Please select 1 or 2.");
+        }
+    }
+
+    public static String rgbToHex(String rgb) {
+        String[] values = rgb.split(",");
+        if (values.length != 3) {
+            return "Invalid RGB format";
+        }
+        int r = Integer.parseInt(values[0]);
+        int g = Integer.parseInt(values[1]);
+        int b = Integer.parseInt(values[2]);
+
+        return String.format("#%02X%02X%02X", r, g, b);
+    }
+
+    public static String hexToRgb(String hex) {
+        if (hex.startsWith("#")) {
+            hex = hex.substring(1);
+        }
+
+        int intValue = Integer.parseInt(hex, 16);
+        int r = (intValue >> 16) & 0xFF;
+        int g = (intValue >> 8) & 0xFF;
+        int b = intValue & 0xFF;
+
+        return r + ", " + g + ", " + b;
+    }
+}
diff --git a/Digital Clock/Clock.java b/Digital Clock/Clock.java
new file mode 100644
index 00000000..1c9c3abc
--- /dev/null
+++ b/Digital Clock/Clock.java	
@@ -0,0 +1,74 @@
+//Digital Clock mini project
+
+
+
+import javax.swing.*;
+import java.awt.*;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class Clock extends JFrame {
+
+    Calendar calendar;
+    SimpleDateFormat timeFormat;
+    SimpleDateFormat dayFormat;
+    SimpleDateFormat dateFormat;
+
+    JLabel timeLabel;
+    JLabel dayLabel;
+    JLabel dateLabel;
+    String time;
+    String day;
+    String date;
+    Clock() {
+        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.setTitle("Digital Clock");
+        this.setLayout(new FlowLayout());
+        this.setSize(350, 220);
+        this.setResizable(false);
+
+        timeFormat = new SimpleDateFormat("hh:mm:ss a");
+        dayFormat=new SimpleDateFormat("EEEE");
+        dateFormat=new SimpleDateFormat("dd MMMMM, yyyy");
+        timeLabel = new JLabel();
+        timeLabel.setFont(new Font("SANS_SERIF", Font.PLAIN, 59));
+        timeLabel.setBackground(Color.BLACK);
+        timeLabel.setForeground(Color.WHITE);
+        timeLabel.setOpaque(true);
+        dayLabel=new JLabel();
+        dayLabel.setFont(new Font("Ink Free",Font.BOLD,34));
+
+        dateLabel=new JLabel();
+        dateLabel.setFont(new Font("Ink Free",Font.BOLD,30));
+
+
+        this.add(timeLabel);
+        this.add(dayLabel);
+        this.add(dateLabel);
+        this.setVisible(true);
+
+        setTimer();
+    }
+
+    public void setTimer() {
+        while (true) {
+            time = timeFormat.format(Calendar.getInstance().getTime());
+            timeLabel.setText(time);
+
+            day = dayFormat.format(Calendar.getInstance().getTime());
+            dayLabel.setText(day);
+
+            date = dateFormat.format(Calendar.getInstance().getTime());
+            dateLabel.setText(date);
+
+            try {
+                Thread.sleep(1000);
+            } catch (Exception e) {
+                e.getStackTrace();
+            }
+        }
+    }
+    public static void main(String[] args) {
+        new Clock();
+    }
+}
\ No newline at end of file
diff --git a/Digital Clock/DigitalClock.java b/Digital Clock/DigitalClock.java
index 1c9c3abc..f796a1af 100644
--- a/Digital Clock/DigitalClock.java	
+++ b/Digital Clock/DigitalClock.java	
@@ -1,11 +1,10 @@
 //Digital Clock mini project
 
-
-
-import javax.swing.*;
 import java.awt.*;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
 
 public class Clock extends JFrame {
 
@@ -20,33 +19,43 @@ public class Clock extends JFrame {
     String time;
     String day;
     String date;
+
     Clock() {
+
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setTitle("Digital Clock");
         this.setLayout(new FlowLayout());
-        this.setSize(350, 220);
+
         this.setResizable(false);
 
         timeFormat = new SimpleDateFormat("hh:mm:ss a");
-        dayFormat=new SimpleDateFormat("EEEE");
-        dateFormat=new SimpleDateFormat("dd MMMMM, yyyy");
+        dayFormat = new SimpleDateFormat("EEEE");
+        dateFormat = new SimpleDateFormat("dd MMMMM, yyyy");
         timeLabel = new JLabel();
         timeLabel.setFont(new Font("SANS_SERIF", Font.PLAIN, 59));
         timeLabel.setBackground(Color.BLACK);
         timeLabel.setForeground(Color.WHITE);
         timeLabel.setOpaque(true);
-        dayLabel=new JLabel();
-        dayLabel.setFont(new Font("Ink Free",Font.BOLD,34));
+        dayLabel = new JLabel();
+        dayLabel.setFont(new Font("Ink Free", Font.BOLD, 34));
 
-        dateLabel=new JLabel();
-        dateLabel.setFont(new Font("Ink Free",Font.BOLD,30));
+        dateLabel = new JLabel();
+        dateLabel.setFont(new Font("Ink Free", Font.BOLD, 30));
 
+        //Creating JPanel to add all the content.
+        // Used Box layout to align components on Y-axis.
+        JPanel mainPanel = new JPanel();
+        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
+        mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+        mainPanel.setPreferredSize(new Dimension(400, 170));
 
-        this.add(timeLabel);
-        this.add(dayLabel);
-        this.add(dateLabel);
-        this.setVisible(true);
+        mainPanel.add(timeLabel);
+        mainPanel.add(dayLabel);
+        mainPanel.add(dateLabel);
 
+        this.add(mainPanel);
+        this.setVisible(true);
+        this.pack();
         setTimer();
     }
 
@@ -68,7 +77,8 @@ public void setTimer() {
             }
         }
     }
+
     public static void main(String[] args) {
         new Clock();
     }
-}
\ No newline at end of file
+}
diff --git a/Dino_Game_java/dino.java b/Dino_Game_java/dino.java
new file mode 100644
index 00000000..91a3c666
--- /dev/null
+++ b/Dino_Game_java/dino.java
@@ -0,0 +1,354 @@
+package Dino_Game_java;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JPanel;
+import javax.swing.KeyStroke;
+import javax.swing.Timer;
+import java.awt.event.KeyListener;
+
+class Game extends Frame implements KeyListener{
+	final int D_W = 1200;
+	final int D_H = 550;
+	static int unit = 10;
+	Color colorDinosaur = Color.GRAY;
+	Color colorGameOver1 = Color.black;
+	Color colorGameOver2 = Color.yellow;
+	Color colorCactus1 = Color.gray; 
+	Color colorCactus2 = Color.gray;
+	int jump = 0;
+	int jumpY = 0;
+	int y = 0;
+	boolean onEnterPresses = false;
+	boolean down = false;
+	List<MyGraph> myGraphs = new ArrayList<>();
+	int currentDinosaurX = 0;
+	int currentDinosaurY = 0;
+	boolean gameOver = false;
+	DrawPanel drawPanel = new DrawPanel(); 
+	public static  void main(String args[]) {
+		new Game();
+	}
+
+	public Game() {
+		super("Run Dino Run");
+		setSize(1200, 550); // set the size of the window
+		setVisible(true);
+		addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				dispose();
+				System.exit(0);
+			}
+		});
+
+		addKeyListener(this);
+		initCactusG();
+
+		ActionListener listener = new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				if (!gameOver) {
+					if (jump >= D_W) {
+						jump = 0;
+						initCactusG();
+						drawPanel.repaint();
+					} else {
+						jump += 10;
+						drawPanel.repaint();
+					}
+				}
+			}
+		};
+
+		Timer timer = new javax.swing.Timer(40, listener);
+		timer.start();
+		ActionListener listenerD = new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				if (!gameOver) {
+					if (onEnterPresses) {
+						if (down) {
+							jumpY -= 20;
+						} else {
+							jumpY += 20;
+						}
+					}
+					if (jumpY >= 280) {
+						down = true;
+					}
+					if (jumpY <= 0) {
+						onEnterPresses = false;
+						down = false;
+						jumpY = 0;
+					}
+				}
+			}
+		};
+		Timer timerD = new javax.swing.Timer(80, listenerD);
+		timerD.start();
+		add(drawPanel);
+		pack();
+		// setDefaultCloseOperation(EXIT_ON_CLOSE);
+		setLocationRelativeTo(null);
+		setVisible(true);
+	}
+
+	// create the cactus on random positions
+	private void initCactusG() {
+		Random rr = new Random();
+		int nbr = 2;// rr.nextInt(2)+1 ;;
+		int x_ = 10;
+		int y_ = 100;
+		int h_ = 60;
+		int p_ = 10;
+		myGraphs = new ArrayList<Game.MyGraph>();
+		for (int it = 0; it < nbr; it++) {
+			Random r = new Random();
+			int step = r.nextInt(10) + 1;
+			MyGraph myGraph = new MyGraph();
+			myGraph.x_ = x_ * 30 + step * 10 + 600;
+			myGraph.h_ = 10 + (6 * step) + 2;
+			myGraph.y_ = 300 - h_;
+			myGraph.p_ = 8 + step / 2;
+			myGraphs.add(myGraph);
+		}
+	}
+
+	// draw the cactus
+	private void drawCactus(Graphics g) {
+		int x = 0;
+		int y = 0;
+		int h = 0;
+		int p = 0;
+		for (MyGraph myGraph : myGraphs) {
+			x = myGraph.x_;
+			h = myGraph.h_;
+			y = myGraph.y_;
+			p = myGraph.p_;
+			int maxH = 180;
+			int i = p * 2 + 40;
+			int j = p * 2 + 40;
+			int y1 = y + 40;
+			int y2 = y + 60;
+			if (x + j - jump < 0) {
+				jump = 0;
+			}
+			draw(g, x - i - jump, y1, h, p);
+			draw(g, x - jump, y, maxH, p * 2);
+			draw(g, x + j - jump, y2, h, p);
+			drow2(g, x - jump, h, p, i, j, y1, y2);
+		}
+	}
+
+	// on game over draw the game over text
+	private void gameOver(Graphics g) {
+		Graphics2D graph = (Graphics2D) g;
+		graph.setPaint(colorGameOver1);
+		graph.setFont(new Font("MV Boli", 20, 50));
+		graph.drawString("Game Over", 550, 150);
+
+		//restart
+		Graphics2D graph1 = (Graphics2D) g;
+		graph1.setPaint(colorGameOver1);
+		graph1.setFont(new Font("MV Boli", 20, 50));
+		graph1.drawString("Press Space key to restart!!", 350, 250);
+	}
+
+	// restart the game
+	private void restartGame(Graphics g) {
+		new Game();
+	}
+
+	// draw the sun on the sky
+	private void drawSun(Graphics g) {
+		Graphics2D sun1 = (Graphics2D) g;
+		sun1.setPaint(new Color(255, 255, 0));
+		sun1.fillArc(900, 70, 80, 80, 90, 180);
+		Graphics2D sun2 = (Graphics2D) g;
+		sun2.setPaint(new Color(255, 255, 153));
+		sun2.fillArc(900, 70, 80, 80, 270, 180);
+	}
+
+	// draw the cactus
+	private void drow2(Graphics g, int x, int h, int p, int i, int j, int y1, int y2) {
+		Graphics2D gsds = (Graphics2D) g;
+		gsds.setPaint(colorCactus1);
+		gsds.fillRect(x - i + p, y1 + h, i, p);
+		Graphics2D gsdds = (Graphics2D) g;
+		gsdds.setPaint(colorCactus2);
+		gsdds.fillRect(x - i + 2 * p, y1 + h - p, i - 2 * p, p);
+		Graphics2D gsd2 = (Graphics2D) g;
+		gsd2.setPaint(colorCactus2);
+		gsd2.fillRect(x + p * 2, y2 + h, j - p, p);
+		Graphics2D gsd3 = (Graphics2D) g;
+		gsd3.setPaint(colorCactus1);
+		gsd3.fillRect(x + p * 4, y2 + h - p, j - 4 * p, p);
+	}
+
+	// draw the surface
+	private void drawSol(Graphics g, int x, int y, int maxH) {
+		Graphics2D sol = (Graphics2D) g;
+		sol.setPaint(Color.orange);
+		sol.fillRect(0, y + maxH - 20, 1700, 100);
+	}
+
+	// draw the dinausor
+	private void drawDinausor(Graphics g, int y) {
+		int xDinausor = 180;
+		int step = 1;
+		g.setColor(colorDinosaur);
+		currentDinosaurX = xDinausor;
+		currentDinosaurY = y;
+		drawRaw(g, xDinausor, y, 2, 1);
+		drawRaw(g, xDinausor + 4 * unit, y, 2, 1);
+		drawRaw(g, xDinausor, y - step * unit, 1, 1);
+		drawRaw(g, xDinausor + 4 * unit, y - step * unit, 1, 1);
+		step++;
+		drawRaw(g, xDinausor, y - step * unit, 2, 1);
+		drawRaw(g, xDinausor + 3 * unit, y - step * unit, 2, 1);
+		step++;
+		drawRaw(g, xDinausor, y - step * unit, 5, 1);
+		step++;
+		drawRaw(g, xDinausor - unit, y - step * unit, 6, 1);
+		step++;
+		drawRaw(g, xDinausor - 2 * unit, y - step * unit, 8, 1);
+		step++;
+		drawRaw(g, xDinausor - 3 * unit, y - step * unit, 10, 1);
+		step++;
+		drawRaw(g, xDinausor - 4 * unit, y - step * unit, 11, 1);
+		drawRaw(g, xDinausor + (11 + 1 - 4) * unit, y - step * unit, 1, 1);
+		step++;
+		drawRaw(g, xDinausor - 4 * unit, y - step * unit, 3, 1);
+		drawRaw(g, xDinausor + (5 - 4) * unit, y - step * unit, 8, 1);
+		step++;
+		drawRaw(g, xDinausor - 4 * unit, y - step * unit, 2, 1);
+		drawRaw(g, xDinausor + (6 - 4) * unit, y - step * unit, 5, 1);
+		step++;
+		drawRaw(g, xDinausor - 4 * unit, y - step * unit, 1, 1);
+		drawRaw(g, xDinausor + (7 - 4) * unit, y - step * unit, 4, 1);
+		step++;
+		drawRaw(g, xDinausor - 4 * unit, y - step * unit, 1, 1);
+		drawRaw(g, xDinausor + (8 - 4) * unit, y - step * unit, 7, 1);
+		step++;
+		drawRaw(g, xDinausor + (8 - 4) * unit, y - step * unit, 4, 1);
+		step++;
+		drawRaw(g, xDinausor + (8 - 4) * unit, y - step * unit, 8, 1);
+		step++;
+		drawRaw(g, xDinausor + (8 - 4) * unit, y - step * unit, 2, 1);
+		drawRaw(g, xDinausor + (11 - 4) * unit, y - step * unit, 5, 1);
+		step++;
+		drawRaw(g, xDinausor + (8 - 4) * unit, y - step * unit, 8, 1);
+		step++;
+		drawRaw(g, xDinausor + (9 - 4) * unit, y - step * unit, 6, 1);
+		step++;
+	}
+
+	private void drawRaw(Graphics g, int Dinausor, int y, int w, int h) {
+		Graphics2D sun16 = (Graphics2D) g;
+		sun16.fillRect(Dinausor, y, w * unit, h * unit);
+	}
+
+	private void draw(Graphics g, int x, int y, int h, int p) {
+		if (x <= currentDinosaurX && x + p >= currentDinosaurX && y <= currentDinosaurY) {
+			gameOver(g);
+			gameOver = true;
+			return;
+		}
+		Graphics2D gcd = (Graphics2D) g;
+		// Green 0 -204- 0
+		gcd.setPaint(colorCactus1);
+		gcd.fillRect(x, y, p, h);
+		Graphics2D gsd = (Graphics2D) g;
+		// Very dark green 0 -102- 0
+		gsd.setPaint(colorCactus2);
+		gsd.fillRect(x + p, y, p, h);
+		Graphics2D gssd = (Graphics2D) g;
+		// Very dark green 0 -102- 0
+		gssd.setPaint(colorCactus2);
+		gssd.fillArc(x, y - p, p * 2, p * 2, 1, 90);
+		Graphics2D gzssd = (Graphics2D) g;
+		gzssd.setPaint(colorCactus1);
+		gzssd.fillArc(x, y - p, p * 2, p * 2, 90, 90);
+		Graphics2D ghssd = (Graphics2D) g;
+		ghssd.setPaint(colorCactus1);
+		ghssd.fillArc(x, y + h - p, p * 2, p * 2, 180, 90);
+		Graphics2D ghzssd = (Graphics2D) g;
+		ghzssd.setPaint(colorCactus2);
+		ghzssd.fillArc(x, y + h - p, p * 2, p * 2, 270, 90);
+	}
+
+	private class DrawPanel extends JPanel {
+		public DrawPanel() {
+			MoveAction action = new MoveAction("onEnter");
+			String ACTION_KEY = "onEnter";
+			KeyStroke W = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
+			InputMap inputMap = getInputMap(WHEN_IN_FOCUSED_WINDOW);
+			inputMap.put(W, ACTION_KEY);
+			ActionMap actionMap = getActionMap();
+			actionMap.put(ACTION_KEY, action);
+		}
+		protected void paintComponent(Graphics g) {
+			super.paintComponent(g);
+			drawCactus(g);
+			drawSun(g);
+			drawSol(g, 100, 250, 180);
+			drawDinausor(g, 400 - jumpY);
+			if (gameOver) {
+				gameOver(g);
+			}
+		}
+		public Dimension getPreferredSize() {
+			return new Dimension(D_W, D_H);
+		}
+	}
+
+	private class MyGraph {
+		int x_ = 10;
+		int y_ = 100;
+		int h_ = 60;
+		int p_ = 10;
+	}
+
+	class MoveAction extends AbstractAction {
+		public MoveAction(String name) {
+			putValue(NAME, name);
+		}
+		public void actionPerformed(ActionEvent actionEvent) {
+			onEnterPresses = true;
+			drawPanel.repaint();
+		}
+	}
+
+	@Override
+	public void keyTyped(KeyEvent e) {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	public void keyPressed(KeyEvent e) {
+		if(e.getKeyCode() == KeyEvent.VK_SPACE) {
+			if(gameOver){
+				gameOver = false;
+				restartGame(getGraphics());
+			}
+		}	
+	}
+
+	@Override
+	public void keyReleased(KeyEvent e) {
+		// TODO Auto-generated method stub
+	}
+}
diff --git a/DoubleArrayCompair.java b/DoubleArrayCompair.java
new file mode 100644
index 00000000..6cc6ebbd
--- /dev/null
+++ b/DoubleArrayCompair.java
@@ -0,0 +1,36 @@
+// Java program to compare two double arrays 
+
+import java.util.*; 
+import java.lang.*; 
+import java.io.*; 
+
+class GFG { 
+
+	public static void main(String[] args) throws java.lang.Exception 
+	{	 
+		// Two double arrays array1 and array2 
+		double[] array1 = { 1.5, 2.5, 3.5, 4.5 }; 
+		double[] array2 = { 1.5, 2.5, 3.5 }; 
+
+		// when the length of two arrays are not 
+		// same, then both the arrays cannot be equal 
+		// so no need of comparing each element 
+		if (array1.length != array2.length) 
+
+			System.out.println("Arrays are not Equal"); 
+		
+		else { 
+			for (int i = 0; i < array1.length; i++) 
+			{ 
+				// comparing each and every element 
+				if (array1[i] != array2[i]) 
+				{ 
+					System.out.println("Arrays are not Equal"); 
+					System.exit(0); 
+				} 
+			} 
+			
+			System.out.println("Arrays are Equal"); 
+		} 
+	} 
+}
diff --git a/ElectricVehicleRunningTime.java b/ElectricVehicleRunningTime.java
new file mode 100644
index 00000000..e5fe4b9a
--- /dev/null
+++ b/ElectricVehicleRunningTime.java
@@ -0,0 +1,21 @@
+public class ElectricVehicleRunningTime {
+
+    public static void main(String[] args) {
+
+        // Create an array to store the on and off times of the electric vehicle
+        int[] evTimes = {850, 945, 1145, 1155, 1230, 1245, 1330, 1340, 1425, 1445};
+
+        // Calculate the total running time in minutes
+        int runningTime = 0;
+        for (int i = 1; i < evTimes.length; i += 2) {
+            runningTime += evTimes[i] - evTimes[i - 1];
+        }
+
+        // Convert the running time to hours and minutes
+        int hours = runningTime / 60;
+        int minutes = runningTime % 60;
+
+        // Display the running time
+        System.out.println("The running time of the electric vehicle is " + hours + " hour(s) and " + minutes + " minute(s).");
+    }
+}
\ No newline at end of file
diff --git a/Email_Generator/src/emailgenerator/EmailBackProgram.java b/Email_Generator/src/emailgenerator/EmailBackProgram.java
index 1e854d65..72832065 100644
--- a/Email_Generator/src/emailgenerator/EmailBackProgram.java
+++ b/Email_Generator/src/emailgenerator/EmailBackProgram.java
@@ -1,69 +1,125 @@
-package emailgenerator;
+package Email_App;
 
 import java.util.Scanner;
 
-public class EmailBackProgram {
-	private String firstname;
-	private String lastname;
+public class Email {
+	private String firstName;
+	private String lastName;
 	private String password;
 	private String department;
 	private String email;
-	private int mailboxCapacity = 500;
-	private int defaultPasswordLength = 10;
-	private String alternateEmail;
-	private String companySuffix = "xyzemail.com";
-	
-	public EmailBackProgram(String firstname, String lastname) {
-		this.firstname = firstname;
-		this.lastname = lastname;
-		
-		this.department = setDepartment();
-		
-		this.password = randomPassword(defaultPasswordLength);
-		System.out.println("Your Password is: " + this.password);
-		
-		email = firstname.toLowerCase() + "." + lastname.toLowerCase() + "@" + department + "." + companySuffix;
-	}
-	
-	private String setDepartment() {
-		System.out.print("Welcome!! " + firstname + "."+" You are Our New Employee." + " \nChoose Department Codes\n1 C++\n2 Java\n3 Python\n0 None\nEnter Department Code: ");
-		Scanner in = new Scanner(System.in);
-		int depChoice = in.nextInt();
-		if(depChoice == 1) {return "C++";}
-		else if(depChoice == 2) {return "Java";}
-		else if(depChoice == 3) {return "Python";}
-		else {return "";}
+	private int defaultPasswordLength=8;
+	private int codelen=5;
+	private String Vcode;
+	private String company="drngpit.ac.in";
+	private String name;
+
+	public Email(String firstName, String lastName) {
+		this.firstName = firstName;
+		this.lastName = lastName;
+		System.out.println("Kindly ! Enter department for email creation dear "+this.firstName+" "+this.lastName);
+		//dept
+		this.department=setDepartment();
+		System.out.println("Department:"+department);
+		//pass
+		this.password=randomPass(defaultPasswordLength);
+		System.out.println("New Password :"+password);
+		//clipping name as one
+		this.name=firstName+lastName;
+		//verification code
+		this.Vcode=vcode(codelen);
+		System.out.println("Your verification code : "+Vcode);
+
+		//Binding
+		email=name.toLowerCase()+"."+department+"@"+company;
+		System.out.println("Official mail :"+email);
 	}
-	
-	private String randomPassword(int length) {
-		String passwordSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&*^";
-		char [] password = new char[length];
-		for(int i = 0; i<length;i++) {
-			int rand = (int)(Math.random()*passwordSet.length());
-			password[i] = passwordSet.charAt(rand);
+
+	private String setDepartment(){
+		System.out.println("Enter the department Id\nSales : 1\nDevelopment : 2\nAccounting : 3");
+		Scanner in=new Scanner(System.in);
+		int dep=in.nextInt();
+		if(dep==1){
+			return "sales";
 		}
-		return new String(password);
+		else if(dep==2){
+			return"dev";
+		}
+		else if(dep==3){
+			return "acc";
+		}
+		return"";
 	}
-	
-	public void setMailboxCapacity(int capacity) {
-		this.mailboxCapacity = capacity;
+
+	private String randomPass(int length){
+		String password="ABCEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%";
+		char[]pass=new char[length];
+		for(int i=0;i<length;i++){
+			int rand=(int)(Math.random()*password.length());
+			pass[i]=password.charAt(rand);
+		}
+		return new String(pass);
 	}
-	
-	public void setAlternateEmail(String altEmail) {
-		this.alternateEmail = altEmail;	
+	private String vcode(int codelen){
+		String samcode="1234567890";
+		char[]code=new char[codelen];
+		for(int i=0;i<codelen;i++){
+			int c=(int)(Math.random()*samcode.length());
+			code[i]=samcode.charAt(c);
+		}
+		return new String(code);
 	}
-	
-	public void changePassword(String password) {
+
+	public void setPassword(String password) {
 		this.password = password;
 	}
-	
-	public int getMailboxCapacity() {return mailboxCapacity;}
-	public String getAlternateEmail() {return alternateEmail;}
-	public String getPassword() {return password;}
-	
-	public String showInfo() {
-		return "Display Name: " + firstname + " " + lastname + 
-				"\nCompany Email: " + email + 
-				"\nMailbox Capacity: " + mailboxCapacity + "mb";
+
+	public String getDepartment() {
+		return department;
+	}
+
+	public void setDepartment(String department) {
+		this.department = department;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+
+	public String getPassword(){
+		return password;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getVcode() {
+		return Vcode;
+	}
+	public String getDept(String dep){
+		if(dep.equals("dev")){
+			return "Developers";
+		}
+		else if(dep.equals("acc")){
+			return "Accounts";
+		}
+		else if(dep.equals("sales")){
+			return "Sales";
+		}
+		return "";
+
+	}
+	public String showInfo(){
+		return "Name : "+name+"\nOfficial email : "+email+"\nDepartment : "+getDept(department);
 	}
 }
diff --git a/Email_Generator/src/emailgenerator/EmailMainProgram.java b/Email_Generator/src/emailgenerator/EmailMainProgram.java
index 79fd4e1b..0a32b440 100644
--- a/Email_Generator/src/emailgenerator/EmailMainProgram.java
+++ b/Email_Generator/src/emailgenerator/EmailMainProgram.java
@@ -1,11 +1,69 @@
-package emailgenerator;
+package Email_App;
 
-public class EmailMainProgram {
+import com.sun.security.jgss.GSSUtil;
 
+import java.sql.SQLOutput;
+import java.util.Scanner;
+
+public class EmailApp {
 	public static void main(String[] args) {
-		EmailBackProgram email = new EmailBackProgram("Abhinandan", "Raj");
-		System.out.println(email.showInfo());
+		System.out.println("Generate Organization's Email ==>");
+		Scanner sc=new Scanner(System.in);
 
-	}
+//        String x=sc.nextLine();
+		System.out.println("Generating the email...");
+		System.out.println("Enter firstname :");
+		String first=sc.nextLine();
+		System.out.println("Enter Lastname :");
+		String second=sc.nextLine();
 
-}
+		Email em=new Email(first,second);
+
+		while(true) {
+			System.out.println("1 : Information ");
+			System.out.println("2 : Change Email");
+			System.out.println("3 : Change Password");
+			System.out.println("4 : Disclose Password");
+			System.out.println("5 : Exit");
+			System.out.println("Enter operation code :");
+			int a = sc.nextInt();
+			switch (a) {
+				case 1:
+					System.out.println(em.showInfo());
+					break;
+				case 2:
+					System.out.println("Enter alternate email prefix :");
+					sc.nextLine();
+					String alt = sc.nextLine();
+					em.setEmail(alt+"@drngpit.ac.in");
+					break;
+				case 3:
+					System.out.println("Enter the verification code :");
+					sc.nextLine();
+					String s = sc.nextLine();
+					if (s.equals(em.getVcode())) {
+						System.out.println("Enter alternate password :");
+						String p = sc.nextLine();
+						em.setPassword(p);
+					} else {
+						System.out.println("Please Enter valid verification code !!!");
+					}
+					System.out.println("Password updated successfully !!!");
+					break;
+				case 4:
+					System.out.println("Password disclose warning !!!");
+					System.out.println("Enter the verification code :");
+					sc.nextLine();
+					String s1 = sc.nextLine();
+					if (s1.equals(em.getVcode())) {
+						System.out.println("Your password : " + em.getPassword());
+					} else {
+						System.out.println("Please Enter valid verification code !!!");
+					}
+				case 5:
+					System.out.println("Have a great day ahead ! BYE ");
+					return ;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/Employee Attendance System.java b/Employee Attendance System.java
new file mode 100644
index 00000000..672400af
--- /dev/null
+++ b/Employee Attendance System.java	
@@ -0,0 +1,106 @@
+import java.util.*;
+import java.text.SimpleDateFormat;
+
+class Employee {
+    private String name;
+    private int id;
+    private List<String> attendance;
+
+    public Employee(int id, String name) {
+        this.id = id;
+        this.name = name;
+        this.attendance = new ArrayList<>();
+    }
+
+    public void markAttendance() {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = new Date();
+        attendance.add(dateFormat.format(date));
+    }
+
+    public List<String> getAttendance() {
+        return attendance;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
+
+public class AttendanceSystem {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        List<Employee> employees = new ArrayList<>();
+        int employeeIdCounter = 1;
+
+        while (true) {
+            System.out.println("Employee Attendance System Menu:");
+            System.out.println("1. Add Employee");
+            System.out.println("2. Mark Attendance");
+            System.out.println("3. View Attendance");
+            System.out.println("4. Exit");
+            System.out.print("Select an option (1/2/3/4): ");
+
+            int option = scanner.nextInt();
+
+            switch (option) {
+                case 1:
+                    scanner.nextLine();
+                    System.out.print("Enter the employee's name: ");
+                    String name = scanner.nextLine();
+                    employees.add(new Employee(employeeIdCounter, name));
+                    employeeIdCounter++;
+                    System.out.println("Employee added successfully.");
+                    break;
+                case 2:
+                    System.out.print("Enter employee ID to mark attendance: ");
+                    int employeeId = scanner.nextInt();
+                    Employee employee = findEmployeeById(employees, employeeId);
+                    if (employee != null) {
+                        employee.markAttendance();
+                        System.out.println("Attendance marked for " + employee.getName());
+                    } else {
+                        System.out.println("Employee not found.");
+                    }
+                    break;
+                case 3:
+                    System.out.print("Enter employee ID to view attendance: ");
+                    int idToView = scanner.nextInt();
+                    Employee empToView = findEmployeeById(employees, idToView);
+                    if (empToView != null) {
+                        List<String> attendance = empToView.getAttendance();
+                        if (attendance.isEmpty()) {
+                            System.out.println(empToView.getName() + " has no attendance records.");
+                        } else {
+                            System.out.println("Attendance records for " + empToView.getName() + ":");
+                            for (String record : attendance) {
+                                System.out.println(record);
+                            }
+                        }
+                    } else {
+                        System.out.println("Employee not found.");
+                    }
+                    break;
+                case 4:
+                    System.out.println("Exiting the Attendance System.");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid option. Please select 1, 2, 3, or 4.");
+            }
+        }
+    }
+
+    private static Employee findEmployeeById(List<Employee> employees, int id) {
+        for (Employee employee : employees) {
+            if (employee.getId() == id) {
+                return employee;
+            }
+        }
+        return null;
+    }
+}
diff --git a/Eng_Dictionary/README.md b/Eng_Dictionary/README.md
new file mode 100644
index 00000000..9a9c2a9c
--- /dev/null
+++ b/Eng_Dictionary/README.md
@@ -0,0 +1,14 @@
+# Eng_Dictionary
+An interactive dictionary UI which provides meanings, synonyms and pronounces the word.
+
+## features :
+* provides meaning, pronunciation and synonyms along with examples.
+* a pronunciation button which tells how to pronunce the word.
+* clicking on synonym provides the meaning of that word.
+
+## limitations:
+* only one meaning is provided.
+* API used has a lot of missing informations.
+
+## ScreenShort: 
+![Screenshot (219)](https://github.com/replyre/Eng_Dictionary/assets/121796450/74219858-7bcd-48fa-9b67-dc56a4daedd8)
diff --git a/Eng_Dictionary/dictionary.png b/Eng_Dictionary/dictionary.png
new file mode 100644
index 00000000..41d5fa56
Binary files /dev/null and b/Eng_Dictionary/dictionary.png differ
diff --git a/Eng_Dictionary/index.html b/Eng_Dictionary/index.html
new file mode 100644
index 00000000..fc415d6c
--- /dev/null
+++ b/Eng_Dictionary/index.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>English Dictionary</title>
+    <link rel="stylesheet" href="styles.css" />
+    <link rel="shortcut icon" href="dictionary.png" type="image/x-icon" />
+    <link
+      href="https://fonts.googleapis.com/icon?family=Material+Icons"
+      rel="stylesheet"
+    />
+
+    <link
+      rel="stylesheet"
+      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
+      integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA=="
+      crossorigin="anonymous"
+      referrerpolicy="no-referrer"
+    />
+  </head>
+  <body>
+    <div class="wrapper">
+      <header>English Dictionary</header>
+      <div class="search">
+        <input type="text" placeholder="Search a world" required />
+        <i class="fas fa-search"></i>
+        <span class="material-icons">close</span>
+      </div>
+      <p class="info-text">Type the word and press enter</p>
+      <ul>
+        <li class="word">
+          <div class="details">
+            <p>_</p>
+            <span>__</span>
+          </div>
+          <i class="fas fa-volume-up"></i>
+        </li>
+
+        <div class="content">
+          <li class="meaning">
+            <div class="details">
+              <p>Meaning</p>
+              <span>__</span>
+            </div>
+          </li>
+
+          <li class="example">
+            <div class="details">
+              <p>Example</p>
+              <span>__</span>
+            </div>
+          </li>
+          <li class="synonyms">
+            <div class="details">
+              <p>Synonyms</p>
+              <div class="list"></div>
+            </div>
+          </li>
+        </div>
+      </ul>
+    </div>
+    <script src="script.js"></script>
+  </body>
+</html>
diff --git a/Eng_Dictionary/script.js b/Eng_Dictionary/script.js
new file mode 100644
index 00000000..dc94fd84
--- /dev/null
+++ b/Eng_Dictionary/script.js
@@ -0,0 +1,91 @@
+const wrapper = document.querySelector(".wrapper");
+const searchInput = wrapper.querySelector("input");
+const infoText = wrapper.querySelector(".info-text");
+const synonyms = wrapper.querySelector(".synonyms .list");
+const volumeIcon = wrapper.querySelector(".word i");
+const removeIcon = wrapper.querySelector(".search span");
+let audio;
+
+function data(result, word) {
+  wrapper.classList.remove("active");
+  wrapper.offsetWidth;
+  if (result.title) {
+    infoText.innerHTML = `Can't find the meaning of <span> ${word}</span>. Please search another word.`;
+  } else {
+    wrapper.classList.add("active");
+    document.querySelector(".word p").innerText = result[0].word;
+    phonetics = "";
+    if (result[0].phonetics[0] !== undefined)
+      phonetics = result[0].phonetics[0].text;
+    document.querySelector(
+      ".word span"
+    ).innerText = `${result[0].meanings[0].partOfSpeech} ${phonetics}`;
+    document.querySelector(".meaning span").innerText =
+      result[0].meanings[0].definitions[0].definition.split(";")[0];
+    document.querySelector(".example span").innerText =
+      result[0].meanings[0].definitions[0].example || "Not Available";
+
+    audio = new Audio(result[0].phonetics[0].audio);
+    if (result[0].meanings[0].synonyms.length === 0) {
+      synonyms.parentElement.style.display = "none";
+    } else synonyms.parentElement.style.display = "block";
+
+    synonyms.innerHTML = "";
+    for (let i = 0; i < 5; i++) {
+      let tag = `<span onclick="search('${
+        result[0].meanings[0].synonyms[i]
+      }')">${result[0].meanings[0].synonyms[i] || ""}</span>`;
+
+      synonyms.insertAdjacentHTML("beforeend", tag);
+    }
+  }
+}
+
+function fetchAPI(word) {
+  wrapper.classList.remove("active");
+  infoText.style.cssText = " padding: 12px; color:black";
+  infoText.innerHTML = `Searching the meaning of <span> ${word}</span>`;
+  let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`;
+
+  fetch(url)
+    .then((res) => res.json())
+    .catch((error) => {
+      infoText.style.color = "red";
+      infoText.innerHTML = "Something went wrong.<br/> Error: " + error.message;
+    })
+    .then((result) => data(result, word));
+}
+
+searchInput.addEventListener("keyup", (e) => {
+  if (e.key === "Enter" && e.target.value) {
+    fetchAPI(e.target.value);
+  }
+});
+
+volumeIcon.addEventListener("click", () => {
+  if (audio.attributes[1].nodeValue.length === 0) {
+    no_audio1 = new Audio(
+      "https://api.dictionaryapi.dev/media/pronunciations/en/not-us.mp3"
+    );
+    no_audio2 = new Audio(
+      "https://api.dictionaryapi.dev/media/pronunciations/en/available-us.mp3"
+    );
+    no_audio1.play();
+    setTimeout(() => {
+      no_audio2.play();
+    }, 150);
+  } else audio.play();
+});
+
+function search(word) {
+  searchInput.value = word;
+  fetchAPI(word);
+}
+
+removeIcon.addEventListener("click", () => {
+  searchInput.value = "";
+  searchInput.focus();
+  wrapper.classList.remove("active");
+  infoText.innerHTML = "Type the word and press enter";
+  infoText.style.cssText = " padding: 0px; color:#9a9a9a";
+});
diff --git a/Eng_Dictionary/styles.css b/Eng_Dictionary/styles.css
new file mode 100644
index 00000000..db138622
--- /dev/null
+++ b/Eng_Dictionary/styles.css
@@ -0,0 +1,167 @@
+@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200&display=swap");
+
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  font-family: "Poppins", sans-serif;
+  font-weight: bold;
+}
+
+body {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  min-height: 100vh;
+  background-image: linear-gradient(to top left, lightblue, cyan, lightblue);
+}
+
+.wrapper {
+  width: 420px;
+  background-color: rgba(255, 255, 255, 0.7);
+  border-radius: 20px;
+  padding: 28px 28px 45px;
+}
+
+.wrapper header {
+  font-size: 28px;
+  font-weight: 500;
+  font-family: monospace;
+  text-align: center;
+}
+
+.wrapper .search {
+  position: relative;
+  margin: 35px 0 18px;
+}
+
+.search input {
+  height: 53px;
+  width: 100%;
+  font-size: 16px;
+  outline: none;
+  padding: 0 42px;
+  border: 1px solid #999;
+  border-radius: 5px;
+}
+.search input:focus {
+  padding: 0 41px;
+  border: 2px solid black;
+}
+
+.search input::placeholder {
+  color: #b8b8b8;
+}
+.search :where(i, span) {
+  position: absolute;
+  top: 50%;
+  color: #999;
+  transform: translateY(-50%);
+}
+
+.search i {
+  left: 18px;
+  font-size: 16px;
+  pointer-events: none;
+}
+.search input:focus ~ i {
+  color: rgb(35, 182, 231);
+}
+.search span {
+  right: 15px;
+  font-size: 1;
+  cursor: pointer;
+  display: none;
+}
+
+.search input:valid ~ span {
+  display: block;
+}
+
+.wrapper .info-text {
+  position: relative;
+  font-size: 12px;
+  color: #9a9a9a;
+  top: -15px;
+  left: 15px;
+}
+.wrapper.active .info-text {
+  display: none;
+}
+.info-text span {
+  font-weight: bold;
+}
+
+.wrapper ul li {
+  display: flex;
+  margin-bottom: 14px;
+  padding-bottom: 17px;
+  border-bottom: 1px solid #ccc;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.wrapper ul {
+  height: 0;
+  opacity: 0;
+  overflow: hidden;
+  transition: all 0.2s ease;
+}
+
+.wrapper.active ul {
+  height: fit-content;
+  opacity: 1;
+}
+ul li:last-child {
+  margin: 0px;
+  padding: 0px;
+  border-bottom: 0px;
+}
+ul .word p {
+  font-size: 22px;
+  font-weight: bold;
+}
+
+ul .word span {
+  font-size: 12px;
+  color: #6f6e6e;
+  font-style: italic;
+}
+
+ul .word i {
+  cursor: pointer;
+  font-size: 15px;
+  color: #999;
+}
+
+.content li .details {
+  padding-left: 10px;
+  border-radius: 4px 0 0 4px;
+  border-left: 3px solid rgb(35, 182, 231);
+}
+
+.content li .details p {
+  font-size: 17px;
+  font-weight: bolder;
+}
+.content li .details span {
+  font-size: 15px;
+  font-weight: 500;
+}
+
+.content li .details span {
+  display: block;
+  max-height: 45px;
+  overflow: scroll;
+}
+
+.synonyms .details .list {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 5px;
+  text-decoration: underline;
+}
+
+.synonyms .details .list span {
+  cursor: pointer;
+}
diff --git a/Exchange-Indian-Currency/Exchange.java b/Exchange-Indian-Currency/Exchange.java
new file mode 100644
index 00000000..eebfc1ec
--- /dev/null
+++ b/Exchange-Indian-Currency/Exchange.java
@@ -0,0 +1,38 @@
+import java.util.*;
+
+public class Exchange {
+    public static void main(String[] args) {
+
+        Scanner sc = new Scanner(System.in);
+        System.out.print("Enter the amount for Exchange: ");
+        int V = sc.nextInt();
+        exchanger(V);
+
+        sc.close();
+
+    }
+
+    public static void exchanger(int V) {
+        int[] coins = { 1, 2, 5, 10, 20, 50, 100, 200, 500, 2000 };
+        int[] minCoins = new int[V + 1];
+        int[] lastCoin = new int[V + 1];
+
+        for (int i = 1; i <= V; i++) {
+            minCoins[i] = Integer.MAX_VALUE;
+            for (int j = 0; j < coins.length; j++) {
+                if (coins[j] <= i && minCoins[i - coins[j]] + 1 < minCoins[i]) {
+                    minCoins[i] = minCoins[i - coins[j]] + 1;
+                    lastCoin[i] = coins[j];
+                }
+            }
+        }
+
+        System.out.println("Minimum number of coins: " + minCoins[V]);
+        System.out.print("Coins: ");
+        while (V > 0) {
+            System.out.print(lastCoin[V] + " ");
+            V -= lastCoin[V];
+        }
+        System.out.println();
+    }
+}
diff --git a/ExpenseTracker.java b/ExpenseTracker.java
new file mode 100644
index 00000000..42b43cd5
--- /dev/null
+++ b/ExpenseTracker.java
@@ -0,0 +1,74 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+class Expense {
+    private String description;
+    private double amount;
+
+    public Expense(String description, double amount) {
+        this.description = description;
+        this.amount = amount;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public double getAmount() {
+        return amount;
+    }
+
+    @Override
+    public String toString() {
+        return "Description: " + description + ", Amount: $" + amount;
+    }
+}
+
+public class ExpenseTracker {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        List<Expense> expenses = new ArrayList<>();
+        double totalExpenses = 0.0;
+
+        while (true) {
+            System.out.println("Expense Tracker Menu:");
+            System.out.println("1. Add an expense");
+            System.out.println("2. View expenses");
+            System.out.println("3. Exit");
+            System.out.print("Select an option (1/2/3): ");
+            
+            int option = scanner.nextInt();
+            
+            switch (option) {
+                case 1:
+                    scanner.nextLine(); // Consume the newline character
+                    System.out.print("Enter expense description: ");
+                    String description = scanner.nextLine();
+                    System.out.print("Enter expense amount: $");
+                    double amount = scanner.nextDouble();
+                    expenses.add(new Expense(description, amount));
+                    totalExpenses += amount;
+                    System.out.println("Expense added successfully.");
+                    break;
+                case 2:
+                    if (expenses.isEmpty()) {
+                        System.out.println("No expenses recorded yet.");
+                    } else {
+                        System.out.println("List of Expenses:");
+                        for (Expense expense : expenses) {
+                            System.out.println(expense);
+                        }
+                        System.out.println("Total Expenses: $" + totalExpenses);
+                    }
+                    break;
+                case 3:
+                    System.out.println("Exiting the Expense Tracker.");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid option. Please select 1, 2, or 3.");
+            }
+        }
+    }
+}
diff --git a/Factorial_prime_avg.java b/Factorial_prime_avg.java
new file mode 100644
index 00000000..9ec2396c
--- /dev/null
+++ b/Factorial_prime_avg.java
@@ -0,0 +1,94 @@
+package calculate;
+import java.util.Scanner;
+public class lab2 {
+
+		public static void Factorial(int n)
+		{
+			int fact = 1;
+			if(n==0)
+				return;
+			for(int i= 1; i<=n; i++)
+			{
+				fact = fact*i;
+			}
+			System.out.println("Factorial of "+n+" is "+fact+"  ");
+			
+		}
+		public static void Average(int n)
+		{
+			int sum = 0;
+			for(int i=0; i<=n; i++)
+			{
+				sum = sum + i ;
+			}
+			int avg = sum/n;
+			System.out.println("Sum: "+sum+"  ");
+			System.out.println("Average: "+avg+"  ");
+		}
+		public static void Prime()
+		{
+			int counter = 0;
+			int i=2;
+			
+			for(i=2; i<=50; i++)
+			{
+				
+				for(int j=1; j<=i; j++)
+				{
+					if(i%j==0)
+						counter++;
+				}
+				if(counter<=2)
+				{
+					System.out.print(i+"  ");
+					counter =0;
+				}
+				else
+					counter=0;
+				
+			}
+				System.out.println("");
+			
+		}
+
+
+		public static void main(String[] args) 
+		{
+			 Scanner s = new Scanner(System.in);
+			 int opt,n;
+			 boolean flag = true;
+		        
+		        while(flag)
+		        {
+		        	 System.out.println("choose a option from following: ");
+		        	 System.out.println("1. Factorial");
+		        	 System.out.println("2. Prime numbers");
+		        	 System.out.println("3. Average");
+		             System.out.println("4 for exit");
+		            opt = s.nextInt();
+		            switch(opt)
+		            {
+		                case 1:
+		                	System.out.print("Enter number to find factorial: ");
+		    	            n = s.nextInt();
+		    	            Factorial(n);
+		                break;
+		 
+		                case 2:
+		                Prime();
+		                break;
+		 
+		                case 3:
+		                	System.out.print("Enter number of itiration: ");
+		    	            n = s.nextInt();
+		                Average(n);
+		                break;
+		 
+		                case 4:
+		                flag = false;
+		                break;
+		            }
+		        }
+		}
+	}
+
diff --git a/Fibonacci/Fibonacci_series.java b/Fibonacci/Fibonacci_series.java
index eac8e63f..0ef338ee 100644
--- a/Fibonacci/Fibonacci_series.java
+++ b/Fibonacci/Fibonacci_series.java
@@ -1,3 +1,5 @@
+/* JAVA code to find the fibonacci series.The Fibonacci numbers are the numbers in the following integer sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …….. */
+
 class Fibonacci_series {
     public static void main(String args[]) {
         int n1 = 0, n2 = 1, n3, i, count = 20;
diff --git a/FibonacciGenerator.java b/FibonacciGenerator.java
new file mode 100644
index 00000000..fe73b5e9
--- /dev/null
+++ b/FibonacciGenerator.java
@@ -0,0 +1,31 @@
+import java.util.Scanner;
+
+public class FibonacciGenerator {
+    public static void main(String[] args) {
+        Scanner sc = new Scanner(System.in);
+
+        System.out.print("Enter the number of terms in the Fibonacci sequence: ");
+        int numTerms = sc.nextInt();
+
+        generateFibonacci(numTerms);
+
+        sc.close();
+    }
+
+    public static void generateFibonacci(int numTerms) {
+        int[] fibonacciSequence = new int[numTerms];
+        fibonacciSequence[0] = 0;
+        if (numTerms > 1) {
+            fibonacciSequence[1] = 1;
+        }
+
+        for (int i = 2; i < numTerms; i++) {
+            fibonacciSequence[i] = fibonacciSequence[i - 1] + fibonacciSequence[i - 2];
+        }
+
+        System.out.println("Fibonacci sequence up to " + numTerms + " terms:");
+        for (int i = 0; i < numTerms; i++) {
+            System.out.print(fibonacciSequence[i] + " ");
+        }
+    }
+}
diff --git a/FileScannerPrinter b/FileScannerPrinter
new file mode 100644
index 00000000..d68bbd54
--- /dev/null
+++ b/FileScannerPrinter
@@ -0,0 +1,27 @@
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+
+public class FileScannerPrinter {
+
+	public static void main(String[] args) throws FileNotFoundException {
+		// TODO Auto-generated method stub
+		
+		//creating File instance to reference text file in Java
+        File text = new File("test.txt");
+        
+        //Creating Scanner instnace to read File in Java
+        Scanner scnr = new Scanner(text);
+        
+        //Reading each line of file using Scanner class
+        int lineNumber = 1;
+        
+        while(scnr.hasNextLine()){
+            String lineContent = scnr.nextLine();
+            System.out.println(lineNumber + " " + lineContent);
+            lineNumber++;
+        }    
+
+	}
+
+}
diff --git a/File_Encryption.Java b/File_Encryption.Java
new file mode 100644
index 00000000..b04f42b3
--- /dev/null
+++ b/File_Encryption.Java
@@ -0,0 +1,56 @@
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.security.Key;
+import java.security.MessageDigest;
+import java.util.Arrays;
+import java.util.Scanner;
+
+public class FileEncryptionDecryptionTool {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.print("Enter the file path: ");
+        String filePath = scanner.nextLine();
+
+        System.out.print("Enter the encryption key (16 characters): ");
+        String encryptionKey = scanner.nextLine();
+
+        try {
+            byte[] key = encryptionKey.getBytes();
+            key = Arrays.copyOf(key, 16); // Ensure the key is exactly 16 bytes
+
+            SecretKey secretKey = new SecretKeySpec(key, "AES");
+            Cipher cipher = Cipher.getInstance("AES");
+            
+            // Encrypt the file
+            byte[] fileData = Files.readAllBytes(Paths.get(filePath));
+            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+            byte[] encryptedData = cipher.doFinal(fileData);
+            
+            Path encryptedFilePath = Paths.get(filePath + ".enc");
+            Files.write(encryptedFilePath, encryptedData, StandardOpenOption.CREATE);
+
+            System.out.println("File encrypted successfully to: " + encryptedFilePath);
+
+            // Decrypt the file
+            System.out.print("Do you want to decrypt the file (Y/N)? ");
+            String choice = scanner.nextLine();
+
+            if (choice.equalsIgnoreCase("Y")) {
+                cipher.init(Cipher.DECRYPT_MODE, secretKey);
+                byte[] decryptedData = cipher.doFinal(encryptedData);
+                Path decryptedFilePath = Paths.get(filePath + ".dec");
+                Files.write(decryptedFilePath, decryptedData, StandardOpenOption.CREATE);
+
+                System.out.println("File decrypted successfully to: " + decryptedFilePath);
+            }
+        } catch (Exception e) {
+            System.err.println("Error: " + e.getMessage());
+        }
+    }
+}
diff --git a/FizzBuzz.java b/FizzBuzz.java
new file mode 100644
index 00000000..952d3709
--- /dev/null
+++ b/FizzBuzz.java
@@ -0,0 +1,29 @@
+public class FizzBuzz {
+    public static void main( String args[]){
+
+        for(int i = 1; i<=100;++i){
+
+            if(i%3==0 && i%5 == 0)
+            {
+                System.out.println("FrizzBuzz");
+                
+            } else if (i % 3 == 0) {
+                System.out.println("Frizz");
+                
+            } else if (i % 5 == 0 ) {
+                System.out.println("Buzz");
+                
+            }
+
+            else {
+                System.out.println(i);
+            }
+
+        }
+
+
+
+    }
+
+
+}
diff --git a/Google Cloud Speech-to-Text library to recognize speech from a microphone b/Google Cloud Speech-to-Text library to recognize speech from a microphone
new file mode 100644
index 00000000..5308f316
--- /dev/null
+++ b/Google Cloud Speech-to-Text library to recognize speech from a microphone	
@@ -0,0 +1,34 @@
+import com.google.cloud.speech.v1.RecognitionAudio;
+import com.google.cloud.speech.v1.RecognitionConfig;
+import com.google.cloud.speech.v1.RecognitionResults;
+import com.google.cloud.speech.v1.SpeechClient;
+
+public class SpeechRecognizer {
+
+    public static String recognizeSpeech() throws Exception {
+        // Create a SpeechClient object.
+        SpeechClient speechClient = SpeechClient.create();
+
+        // Create a RecognitionConfig object.
+        RecognitionConfig recognitionConfig = RecognitionConfig.newBuilder()
+                .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
+                .setLanguageCode("en-US")
+                .build();
+
+        // Create a RecognitionAudio object.
+        RecognitionAudio recognitionAudio = RecognitionAudio.newBuilder()
+                .setContent(audioData)
+                .build();
+
+        // Perform speech recognition.
+        RecognitionResults results = speechClient.recognize(recognitionConfig, recognitionAudio);
+
+        // Get the recognized text.
+        String recognizedText = results.getResultsList().get(0).getAlternativesList().get(0).getTranscript();
+
+        // Close the SpeechClient.
+        speechClient.close();
+
+        return recognizedText;
+    }
+}
diff --git a/Guess the number/Guess_the_number.java b/Guess the number/Guess_the_number.java
new file mode 100644
index 00000000..b1bc041b
--- /dev/null
+++ b/Guess the number/Guess_the_number.java	
@@ -0,0 +1,47 @@
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class GuessTheNumberGame extends Application {
+    private int targetNumber = (int) (Math.random() * 100) + 1;
+    private int numberOfTries = 0;
+
+    public static void main(String[] args) {
+        launch(args);
+    }
+
+    @Override
+    public void start(Stage primaryStage) {
+        primaryStage.setTitle("Guess the Number Game");
+
+        Label titleLabel = new Label("Guess the Number (1-100)");
+        TextField guessInput = new TextField();
+        Label messageLabel = new Label();
+        VBox vbox = new VBox(titleLabel, guessInput, messageLabel);
+
+        guessInput.setOnAction(e -> {
+            try {
+                int userGuess = Integer.parseInt(guessInput.getText());
+                numberOfTries++;
+                if (userGuess < targetNumber) {
+                    messageLabel.setText("Try higher.");
+                } else if (userGuess > targetNumber) {
+                    messageLabel.setText("Try lower.");
+                } else {
+                    messageLabel.setText("Congratulations! You guessed the number in " + numberOfTries + " tries.");
+                }
+                guessInput.clear();
+            } catch (NumberFormatException ex) {
+                messageLabel.setText("Invalid input. Enter a number.");
+            }
+        });
+
+        Scene scene = new Scene(vbox, 300, 150);
+        primaryStage.setScene(scene);
+        primaryStage.show();
+    }
+  }
+              
diff --git a/Guess.java b/Guess.java
new file mode 100644
index 00000000..a89c59ce
--- /dev/null
+++ b/Guess.java
@@ -0,0 +1,97 @@
+import java.util.Scanner;
+public class Guess
+{
+	public static void main(String[] args) {
+	    
+	    //creating Scanner object
+		Scanner in = new Scanner(System.in); 
+		
+		//Instructions to the Game
+		System.out.println("NUMBER GUESSING GAME");
+		System.out.println();
+		
+		System.out.println("INSTRUCTIONS:");
+
+		System.out.println("1)Enter the minimum and maximum range of your choice");
+		System.out.println("2)Your Aim is to guess the random number generated between the above range");
+		System.out.println("3)If you find the random number in minimum number of guesses");
+		System.out.println("You WIN or you LOSE the game");
+		System.out.println();
+		
+		System.out.println("OK LET'S BEGIN");
+		System.out.println();
+		
+		 //Declaring min and max variable for min and max range
+		int min;
+		int max;
+		int res;
+		int guess_count = 0;
+		
+		//To get min and max value from the user
+		System.out.println("Enter your minimum range");
+		min = in.nextInt();
+		System.out.println("Enter your maximum range");
+		max = in.nextInt();
+		System.out.println();
+		
+		//Creating random number out of the min and max range
+		int n = (int)(Math.random()*(max-min+1)+min);   
+		int guess;
+		
+		/*
+		//Determine the max guesses for the given range
+		res = (int)(max / 4) + (min / 4);
+		res = res/2;
+		System.out.println(res);
+		*/
+		
+		//Loop for guessing the number by the user
+		System.out.println("Enter your guess (between '" + min +"' and '"+ max+ "' range)");
+		while(true){ 
+		    
+		    //To input the guess
+		    guess = in.nextInt(); 
+		    
+		    //To compare the user entered number with the guess
+		    
+		    //case 1
+ 		    if(guess > n){
+		        System.out.println("NUMBER is LESS than your GUESS");
+		        guess_count++;
+		    }
+		    
+		    //case 2
+		    if(guess < n){
+		        System.out.println("NUMBER is GREATER than your GUESS");
+		        guess_count++;
+		    }
+		    
+		    //case 3
+		    if(guess == n){
+		        System.out.println("GUESS is CORRECT");
+		        
+		        //To Continue the Loop
+		  /*      System.out.println("Do you want to play again(Press 1 else Press 0)");
+		        res = in.nextInt();
+		        
+		        //To Break the Loop
+		        if(!(res == 1)){
+		  */
+		        break;
+		        //}
+		    }
+		    System.out.println();
+		    System.out.println("Enter your new GUESS");
+		}
+		
+		System.out.println();
+		if(guess_count >= 5){
+		    System.out.println("You LOST the game");
+		}
+		else{
+		    System.out.println("You WON the game");
+		}
+		System.out.println();
+		System.out.println("GAME ENDED");
+	}
+}
diff --git a/GuessTheNumberGame/GuessTheNumberGame.java b/GuessTheNumberGame/GuessTheNumberGame.java
new file mode 100644
index 00000000..10f1dcdb
--- /dev/null
+++ b/GuessTheNumberGame/GuessTheNumberGame.java
@@ -0,0 +1,43 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class GuessTheNumberGame {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        Random random = new Random();
+        
+        int lowerBound = 1;  // Set the lower bound of the random number range
+        int upperBound = 100;  // Set the upper bound of the random number range
+        int secretNumber = random.nextInt(upperBound - lowerBound + 1) + lowerBound;
+        
+        int maxAttempts = 10; // Set the maximum number of attempts
+        
+        System.out.println("Welcome to Guess the Number Game!");
+        System.out.println("I've selected a number between " + lowerBound + " and " + upperBound + ". Try to guess it!");
+        
+        for (int attempts = 1; attempts <= maxAttempts; attempts++) {
+            System.out.print("Attempt #" + attempts + ": Enter your guess: ");
+            int playerGuess = scanner.nextInt();
+            
+            if (playerGuess < lowerBound || playerGuess > upperBound) {
+                System.out.println("Please enter a number between " + lowerBound + " and " + upperBound + ".");
+                continue;
+            }
+            
+            if (playerGuess < secretNumber) {
+                System.out.println("Too low! Try again.");
+            } else if (playerGuess > secretNumber) {
+                System.out.println("Too high! Try again.");
+            } else {
+                System.out.println("Congratulations! You've guessed the number " + secretNumber + " correctly in " + attempts + " attempts.");
+                break;
+            }
+            
+            if (attempts == maxAttempts) {
+                System.out.println("Sorry, you've run out of attempts. The secret number was " + secretNumber + ".");
+            }
+        }
+        
+        scanner.close();
+    }
+}
diff --git a/Hangmangame.java b/Hangmangame.java
new file mode 100644
index 00000000..24d15572
--- /dev/null
+++ b/Hangmangame.java
@@ -0,0 +1,64 @@
+import java.util.Scanner;
+
+public class HangmanGame {
+    private static String[] words = {"java", "programming", "hangman", "computer", "algorithm"};
+    private static String selectedWord;
+    private static String guessedWord;
+    private static int maxAttempts = 6;
+    private static int attemptsLeft = maxAttempts;
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        selectWord();
+
+        while (true) {
+            System.out.println("Word: " + guessedWord);
+            System.out.println("Attempts left: " + attemptsLeft);
+            System.out.print("Enter a letter or the entire word: ");
+            String guess = scanner.nextLine().toLowerCase();
+
+            if (guess.length() == 1) {
+                processLetterGuess(guess.charAt(0));
+            } else if (guess.length() == selectedWord.length()) {
+                processWordGuess(guess);
+            } else {
+                System.out.println("Invalid input. Please enter a single letter or the entire word.");
+            }
+
+            if (guessedWord.equals(selectedWord)) {
+                System.out.println("Congratulations! You've guessed the word: " + selectedWord);
+                break;
+            } else if (attemptsLeft == 0) {
+                System.out.println("You've run out of attempts. The word was: " + selectedWord);
+                break;
+            }
+        }
+        scanner.close();
+    }
+
+    private static void selectWord() {
+        selectedWord = words[(int) (Math.random() * words.length)];
+        guessedWord = new String(new char[selectedWord.length()]).replace('\0', '_');
+    }
+
+    private static void processLetterGuess(char letter) {
+        boolean found = false;
+        for (int i = 0; i < selectedWord.length(); i++) {
+            if (selectedWord.charAt(i) == letter) {
+                guessedWord = guessedWord.substring(0, i) + letter + guessedWord.substring(i + 1);
+                found = true;
+            }
+        }
+        if (!found) {
+            attemptsLeft--;
+        }
+    }
+
+    private static void processWordGuess(String word) {
+        if (word.equals(selectedWord)) {
+            guessedWord = selectedWord;
+        } else {
+            attemptsLeft--;
+        }
+    }
+}
diff --git a/Heapsort.java b/Heapsort.java
new file mode 100644
index 00000000..e500affa
--- /dev/null
+++ b/Heapsort.java
@@ -0,0 +1,72 @@
+import java.util.*;
+public class HeapSort {
+		public void sort(int arr[])
+		{
+			int N = arr.length;
+
+			for (int i = N / 2 - 1; i >= 0; i--)
+				heapify(arr, N, i);
+
+			for (int i = N - 1; i > 0; i--) {
+
+				int x = arr[0];
+				arr[0] = arr[i];
+				arr[i] = x;
+
+				heapify(arr, i, 0);
+			}
+		}
+
+		void heapify(int arr[], int N, int i)
+		{
+			int largest = i; 
+			int l = 2 * i + 1; 
+			int r = 2 * i + 2; 
+
+			if (l < N && arr[l] > arr[largest])
+				largest = l;
+
+			if (r < N && arr[r] > arr[largest])
+				largest = r;
+
+			if (largest != i) {
+				int swap = arr[i];
+				arr[i] = arr[largest];
+				arr[largest] = swap;
+
+				heapify(arr, N, largest);
+			}
+		}
+		static void printArray(int arr[])
+		{
+			int N = arr.length;
+
+			for (int i = 0; i < N; ++i)
+				System.out.print(arr[i] + " ");
+			System.out.println();
+		}
+
+		public static void main(String args[])
+		{
+			 int i, n, arr[];
+
+		      Scanner s = new Scanner(System.in);
+		      System.out.println("Enter no. of elements in aray:");
+		      n = s.nextInt(); 
+
+		      arr = new int[n];
+
+		      System.out.println("Enter " + n + " integers:");
+
+		      for (i = 0;i<n; i++)
+		          arr[i] = s.nextInt();
+
+			HeapSort ob = new HeapSort();
+			ob.sort(arr);
+
+			System.out.println("Sorted array is");
+			printArray(arr);
+		}
+	
+
+}
diff --git a/Hospital_scrapper.java b/Hospital_scrapper.java
new file mode 100644
index 00000000..bd6b0bd6
--- /dev/null
+++ b/Hospital_scrapper.java
@@ -0,0 +1,182 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+class Patient {
+    private int id;
+    private String name;
+    private int age;
+
+    public Patient(int id, String name, int age) {
+        this.id = id;
+        this.name = name;
+        this.age = age;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+}
+
+class Doctor {
+    private int id;
+    private String name;
+    private String specialization;
+
+    public Doctor(int id, String name, String specialization) {
+        this.id = id;
+        this.name = name;
+        this.specialization = specialization;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getSpecialization() {
+        return specialization;
+    }
+}
+
+class Appointment {
+    private int id;
+    private Patient patient;
+    private Doctor doctor;
+    private String date;
+
+    public Appointment(int id, Patient patient, Doctor doctor, String date) {
+        this.id = id;
+        this.patient = patient;
+        this.doctor = doctor;
+        this.date = date;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public Patient getPatient() {
+        return patient;
+    }
+
+    public Doctor getDoctor() {
+        return doctor;
+    }
+
+    public String getDate() {
+        return date;
+    }
+}
+
+public class HospitalManagementSystem {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        List<Patient> patients = new ArrayList<>();
+        List<Doctor> doctors = new ArrayList<>();
+        List<Appointment> appointments = new ArrayList<>();
+        int patientIdCounter = 1;
+        int doctorIdCounter = 1;
+        int appointmentIdCounter = 1;
+
+        while (true) {
+            System.out.println("Hospital Management System Menu:");
+            System.out.println("1. Add Patient");
+            System.out.println("2. Add Doctor");
+            System.out.println("3. Schedule Appointment");
+            System.out.println("4. View Appointments");
+            System.out.println("5. Exit");
+            System.out.print("Select an option (1/2/3/4/5): ");
+
+            int option = scanner.nextInt();
+            
+            switch (option) {
+                case 1:
+                    scanner.nextLine();
+                    System.out.print("Enter patient name: ");
+                    String patientName = scanner.nextLine();
+                    System.out.print("Enter patient age: ");
+                    int patientAge = scanner.nextInt();
+                    patients.add(new Patient(patientIdCounter, patientName, patientAge));
+                    patientIdCounter++;
+                    System.out.println("Patient added successfully.");
+                    break;
+                case 2:
+                    scanner.nextLine();
+                    System.out.print("Enter doctor name: ");
+                    String doctorName = scanner.nextLine();
+                    System.out.print("Enter doctor specialization: ");
+                    String doctorSpecialization = scanner.nextLine();
+                    doctors.add(new Doctor(doctorIdCounter, doctorName, doctorSpecialization));
+                    doctorIdCounter++;
+                    System.out.println("Doctor added successfully.");
+                    break;
+                case 3:
+                    System.out.print("Enter patient ID: ");
+                    int patientId = scanner.nextInt();
+                    System.out.print("Enter doctor ID: ");
+                    int doctorId = scanner.nextInt();
+                    scanner.nextLine();
+                    System.out.print("Enter appointment date: ");
+                    String appointmentDate = scanner.nextLine();
+                    
+                    Patient patient = findPatientById(patients, patientId);
+                    Doctor doctor = findDoctorById(doctors, doctorId);
+                    
+                    if (patient != null && doctor != null) {
+                        appointments.add(new Appointment(appointmentIdCounter, patient, doctor, appointmentDate));
+                        appointmentIdCounter++;
+                        System.out.println("Appointment scheduled successfully.");
+                    } else {
+                        System.out.println("Patient or doctor not found.");
+                    }
+                    break;
+                case 4:
+                    System.out.println("Appointments:");
+                    for (Appointment appointment : appointments) {
+                        System.out.println("Appointment ID: " + appointment.getId());
+                        System.out.println("Patient: " + appointment.getPatient().getName());
+                        System.out.println("Doctor: " + appointment.getDoctor().getName() + " (" + appointment.getDoctor().getSpecialization() + ")");
+                        System.out.println("Date: " + appointment.getDate());
+                        System.out.println();
+                    }
+                    break;
+                case 5:
+                    System.out.println("Exiting the Hospital Management System.");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid option. Please select 1, 2, 3, 4, or 5.");
+            }
+        }
+    }
+
+    private static Patient findPatientById(List<Patient> patients, int id) {
+        for (Patient patient : patients) {
+            if (patient.getId() == id) {
+                return patient;
+            }
+        }
+        return null;
+    }
+
+    private static Doctor findDoctorById(List<Doctor> doctors, int id) {
+        for (Doctor doctor : doctors) {
+            if (doctor.getId() == id) {
+                return doctor;
+            }
+        }
+        return null;
+    }
+}
diff --git a/Host-checker.java b/Host-checker.java
new file mode 100644
index 00000000..cc158045
--- /dev/null
+++ b/Host-checker.java
@@ -0,0 +1,35 @@
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Scanner;
+
+public class WebsiteStatusChecker {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        System.out.print("Enter the website URL to check: ");
+        String urlToCheck = scanner.nextLine();
+
+        try {
+            int statusCode = checkWebsiteStatus(urlToCheck);
+
+            if (statusCode >= 200 && statusCode < 400) {
+                System.out.println("Website is alive (HTTP Status Code: " + statusCode + ")");
+            } else {
+                System.out.println("Website is down (HTTP Status Code: " + statusCode + ")");
+            }
+        } catch (IOException e) {
+            System.err.println("Error checking website status: " + e.getMessage());
+        }
+    }
+
+    public static int checkWebsiteStatus(String url) throws IOException {
+        URL websiteURL = new URL(url);
+        HttpURLConnection connection = (HttpURLConnection) websiteURL.openConnection();
+        connection.setRequestMethod("GET");
+        connection.connect();
+        int statusCode = connection.getResponseCode();
+        connection.disconnect();
+
+        return statusCode;
+    }
+}
diff --git a/Inheritance.java b/Inheritance.java
new file mode 100644
index 00000000..f1fc1292
--- /dev/null
+++ b/Inheritance.java
@@ -0,0 +1,33 @@
+class A  
+{  
+   public void methodA() {  
+      System.out.println("method of Class A");  
+   }  
+}  
+class B extends A{  
+   public void methodB(){  
+      System.out.println("method of Class B");  
+   }  
+}  
+class C extends A{  
+  public void methodC(){  
+     System.out.println("method of Class C");  
+  }  
+}  
+class D extends A{  
+  public void methodD(){  
+     System.out.println("method of Class D");  
+  }  
+}  
+class InheritncExm{  
+  public static void main(String args[])  
+  {  
+     B obj1 = new B();  
+     C obj2 = new C();  
+     D obj3 = new D();  
+     //All classes can access the method of class A  
+     obj1.methodA();  
+     obj2.methodA();  
+     obj3.methodA();  
+  }  
+}  
diff --git a/Internet-Download-Manager b/Internet-Download-Manager
new file mode 160000
index 00000000..10b04859
--- /dev/null
+++ b/Internet-Download-Manager
@@ -0,0 +1 @@
+Subproject commit 10b04859b899964947a08085e39803250c200b73
diff --git a/JAVA Generate Secure Password b/JAVA Generate Secure Password
new file mode 100644
index 00000000..e4db41c7
--- /dev/null
+++ b/JAVA Generate Secure Password	
@@ -0,0 +1,31 @@
+import java.security.SecureRandom;
+import java.util.Random;
+
+public class GeneratePasswordExample1 {
+
+    public static void main(String[] args) {
+        // Generate and print a secure random password
+        String securePassword = generateSecurePassword(12); // You can specify the desired password length here
+        System.out.println("The generated secure password is: " + securePassword);
+    }
+
+    public static String generateSecurePassword(int length) {
+        String uppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+        String lowercaseChars = "abcdefghijklmnopqrstuvwxyz";
+        String digitChars = "0123456789";
+        String specialChars = "!@#$%^&*()_+";
+
+        String allCharacters = uppercaseChars + lowercaseChars + digitChars + specialChars;
+
+        // Use a secure random number generator
+        Random random = new SecureRandom();
+
+        StringBuilder password = new StringBuilder();
+        for (int i = 0; i < length; i++) {
+            int randomIndex = random.nextInt(allCharacters.length());
+            password.append(allCharacters.charAt(randomIndex));
+        }
+
+        return password.toString();
+    }
+}
diff --git a/JAVA SERVER CLIENT NETWORKING(SAME DEVICE)/ServerProgram.java b/JAVA SERVER CLIENT NETWORKING(SAME DEVICE)/ServerProgram.java
index ec3dda12..cf9ddf0a 100644
--- a/JAVA SERVER CLIENT NETWORKING(SAME DEVICE)/ServerProgram.java	
+++ b/JAVA SERVER CLIENT NETWORKING(SAME DEVICE)/ServerProgram.java	
@@ -8,23 +8,32 @@ public static void main(String args[]) throws Exception {
         PrintStream ps=new PrintStream(s.getOutputStream());
         BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
         BufferedReader kb=new BufferedReader(new InputStreamReader(System.in));
-        while(true) {
-            String str=br.readLine();
-            String str1;
-            if(str.equals("exit")) {
-                break;
-            }
-            else {
-                System.out.println("Client: "+str);
-                System.out.print("Server: ");
-                str1=kb.readLine();
+           try {
+            while (true) {
+                String str = br.readLine(); 
+                if (str == null || str.equals("exit")) {
+                    break; 
+                }
+                System.out.println("Cliente: " + str);
+
+                System.out.print("Servidor: ");
+                String str1 = kb.readLine();
                 ps.println(str1);
             }
+        } catch (IOException e) {
+            System.out.println("Communication error: " + e.getMessage());
+            e.printStackTrace();
+        } finally {
+            try {
+                if (ps != null) ps.close();
+                if (br != null) br.close();
+                if (kb != null) kb.close();
+                if (s != null) s.close();
+                if (ss != null) ss.close();
+            } catch (IOException e) {
+                System.out.println("Error closing resources: " + e.getMessage());
+                e.printStackTrace();
+            }
         }
-        ps.close();
-        br.close();
-        kb.close();
-        s.close();
-        ss.close();
     }
 }
diff --git a/Jarvis_Program_Using_Switchcase.java b/Jarvis_Program_Using_Switchcase.java
new file mode 100644
index 00000000..22a48d12
--- /dev/null
+++ b/Jarvis_Program_Using_Switchcase.java
@@ -0,0 +1,89 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.Scanner;
+
+public class JarvisProgram {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        String command;
+
+        System.out.println("Welcome to Jarvis Program!");
+
+        do {
+            System.out.print("Enter a command: ");
+            command = scanner.nextLine();
+
+            switch (command.toLowerCase()) {
+                case "hello":
+                    System.out.println("Hello! How can I assist you?");
+                    break;
+                case "time":
+                    LocalTime time = LocalTime.now();
+                    System.out.println("The current time is: " + time);
+                    break;
+                case "date":
+                    LocalDate date = LocalDate.now();
+                    System.out.println("Today's date is: " + date);
+                    break;
+                case "weather":
+                    String weather = getWeather();
+                    System.out.println("The weather today is: " + weather);
+                    break;
+                case "reminder":
+                    String reminder = setReminder();
+                    System.out.println("Reminder set: " + reminder);
+                    break;
+                case "quote":
+                    String quote = getRandomQuote();
+                    System.out.println("Here's a quote for you: " + quote);
+                    break;
+                case "news":
+                    String news = getLatestNews();
+                    System.out.println("Here's the latest news: " + news);
+                    break;
+                case "joke":
+                    String joke = getJoke();
+                    System.out.println("Here's a joke for you: " + joke);
+                    break;
+                case "exit":
+                    System.out.println("Goodbye!");
+                    break;
+                default:
+                    System.out.println("Sorry, I don't understand that command.");
+                    break;
+            }
+        } while (!command.equalsIgnoreCase("exit"));
+        
+        scanner.close();
+    }
+
+    private static String getWeather() {
+        // Code to fetch the current weather from an API or any other source
+        // Implement your own logic or use external libraries
+        return "Sunny";
+    }
+
+    private static String setReminder() {
+        // Code to set a reminder, you can use libraries like java.util.Timer or external libraries
+        // Implement your own logic based on the requirements
+        return "Meeting at 5 PM";
+    }
+
+    private static String getRandomQuote() {
+        // Code to fetch a random quote from an API or a predefined list
+        // Implement your own logic or use external libraries
+        return "Coder's Never Quit..";
+    }
+
+    private static String getLatestNews() {
+        // Code to fetch the latest news from an API or any other source
+        // Implement your own logic or use external libraries
+        return "Latest News:- Mercedes drivers can soon turn to ChatGPT for Voice Control...";
+    }
+
+    private static String getJoke() {
+        // Code to fetch a random joke from an API or a predefined list
+        // Implement your own logic or use external libraries
+        return "What's the best thing about Switzerland?........I don't know but the flag is a big Plus...";
+    }
+}
diff --git a/Java collect.java b/Java collect.java
new file mode 100644
index 00000000..82d5e844
--- /dev/null
+++ b/Java collect.java	
@@ -0,0 +1,35 @@
+// Java program to demonstrate the
+// working of ArrayList
+import java.io.*;
+import java.util.*;
+ 
+class GFG {
+ 
+    // Main Method
+    public static void main(String[] args)
+    {
+ 
+        // Declaring the ArrayList with
+        // initial size n
+        ArrayList<Integer> al = new ArrayList<Integer>();
+ 
+        // Appending new elements at
+        // the end of the list
+        for (int i = 1; i <= 5; i++)
+            al.add(i);
+ 
+        // Printing elements
+        System.out.println(al);
+ 
+        // Remove element at index 3
+        al.remove(3);
+ 
+        // Displaying the ArrayList
+        // after deletion
+        System.out.println(al);
+ 
+        // Printing elements one by one
+        for (int i = 0; i < al.size(); i++)
+            System.out.print(al.get(i) + " ");
+    }
+}
diff --git a/Java-collection.java b/Java-collection.java
new file mode 100644
index 00000000..bbd60d0c
--- /dev/null
+++ b/Java-collection.java
@@ -0,0 +1,41 @@
+// Java program to demonstrate
+// why collection framework was needed
+import java.io.*;
+import java.util.*;
+ 
+class CollectionDemo {
+ 
+    public static void main(String[] args)
+    {
+        // Creating instances of the array,
+        // vector and hashtable
+        int arr[] = new int[] { 1, 2, 3, 4 };
+        Vector<Integer> v = new Vector();
+        Hashtable<Integer, String> h = new Hashtable();
+ 
+        // Adding the elements into the
+        // vector
+        v.addElement(1);
+        v.addElement(2);
+ 
+        // Adding the element into the
+        // hashtable
+        h.put(1, "geeks");
+        h.put(2, "4geeks");
+ 
+        // Array instance creation requires [],
+        // while Vector and hastable require ()
+        // Vector element insertion requires addElement(),
+        // but hashtable element insertion requires put()
+ 
+        // Accessing the first element of the
+        // array, vector and hashtable
+        System.out.println(arr[0]);
+        System.out.println(v.elementAt(0));
+        System.out.println(h.get(1));
+ 
+        // Array elements are accessed using [],
+        // vector elements using elementAt()
+        // and hashtable elements using get()
+    }
+          }
diff --git a/Java_password_generator.java b/Java_password_generator.java
new file mode 100644
index 00000000..201b6474
--- /dev/null
+++ b/Java_password_generator.java
@@ -0,0 +1,84 @@
+
+public class Password {
+    String Value;
+    int Length;
+
+    public Password(String s) {
+        Value = s;
+        Length = s.length();
+    }
+
+    public int CharType(char C) {
+        int val;
+
+        // Char is Uppercase Letter
+        if ((int) C >= 65 && (int) C <= 90)
+            val = 1;
+
+        // Char is Lowercase Letter
+        else if ((int) C >= 97 && (int) C <= 122) {
+            val = 2;
+        }
+
+        // Char is Digit
+        else if ((int) C >= 60 && (int) C <= 71) {
+            val = 3;
+        }
+
+        // Char is Symbol
+        else {
+            val = 4;
+        }
+
+        return val;
+    }
+
+    public int PasswordStrength() {
+        String s = this.Value;
+        boolean UsedUpper = false;
+        boolean UsedLower = false;
+        boolean UsedNum = false;
+        boolean UsedSym = false;
+        int type;
+        int Score = 0;
+
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            type = CharType(c);
+
+            if (type == 1) UsedUpper = true;
+            if (type == 2) UsedLower = true;
+            if (type == 3) UsedNum = true;
+            if (type == 4) UsedSym = true;
+        }
+
+        if (UsedUpper) Score += 1;
+        if (UsedLower) Score += 1;
+        if (UsedNum) Score += 1;
+        if (UsedSym) Score += 1;
+
+        if (s.length() >= 8) Score += 1;
+        if (s.length() >= 16) Score += 1;
+
+        return Score;
+    }
+
+    public String calculateScore() {
+        int Score = this.PasswordStrength();
+
+        if (Score == 6) {
+            return "This is a very good password :D check the Useful Information section to make sure it satisfies the guidelines";
+        } else if (Score >= 4) {
+            return "This is a good password :) but you can still do better";
+        } else if (Score >= 3) {
+            return "This is a medium password :/ try making it better";
+        } else {
+            return "This is a weak password :( definitely find a new one";
+        }
+    }
+
+    @Override
+    public String toString() {
+        return Value;
+    }
+}
diff --git a/Kadanes_Algorithm.java b/Kadanes_Algorithm.java
new file mode 100644
index 00000000..7a710b92
--- /dev/null
+++ b/Kadanes_Algorithm.java
@@ -0,0 +1,36 @@
+import java.util.*;
+
+public class Main {
+    public static long maxSubarraySum(int[] arr, int n) {
+        long maxi = Long.MIN_VALUE; // maximum sum
+        long sum = 0;
+
+        for (int i = 0; i < n; i++) {
+
+            sum += arr[i];
+
+            if (sum > maxi) {
+                maxi = sum;
+            }
+
+            // If sum < 0: discard the sum calculated
+            if (sum < 0) {
+                sum = 0;
+            }
+        }
+
+        if (maxi < 0) maxi = 0;
+
+        return maxi;
+    }
+
+    public static void main(String args[]) {
+        int[] arr = { -2, 1, -3, 4, -1, 2, 1, -5, 4};
+        int n = arr.length;
+        long maxSum = maxSubarraySum(arr, n);
+        System.out.println("The maximum subarray sum is: " + maxSum);
+
+    }
+
+}
+
diff --git a/Knapsack_algo.java b/Knapsack_algo.java
new file mode 100644
index 00000000..3ff12556
--- /dev/null
+++ b/Knapsack_algo.java
@@ -0,0 +1,61 @@
+import java.util.*;
+public class knapsack {
+
+		 
+	    static int max(int a, int b)
+	{ return (a > b) ? a : b; }
+
+	    static int knapSack(int W, int wt[], int val[], int n)
+	    {
+	        int i, w;
+	        int K[][] = new int[n + 1][W + 1];
+
+	        for (i = 0; i<= n; i++) 
+	        {
+	            for (w = 0; w<= W; w++) 
+	            {
+	                if (i == 0 || w == 0)
+	                    K[i][w] = 0;
+	                
+	                else if (wt[i - 1]<= w)
+	                    K[i][w] = max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1][w]);
+	                
+	                else
+	                    K[i][w] = K[i - 1][w];
+	            }
+	        }
+	 
+	        return K[n][W];
+	    }
+	 
+	    public static void main(String args[])
+	    {
+	    	int i, x, W, val[], wt[];
+
+		      Scanner s = new Scanner(System.in);
+		      System.out.println("Enter capacity:");
+		      W = s.nextInt(); 
+		      
+		      System.out.println("Enter no. of items:");
+		      x = s.nextInt();
+
+		      val = new int[x];
+
+		      System.out.println("Enter " + x + " items:");
+
+		      for (i = 0;i<x; i++)
+		          val[i] = s.nextInt();
+		      
+		      wt = new int[x];
+
+		      System.out.println("Enter " + x + " items weight:");
+
+		      for (i = 0;i<x; i++)
+		          wt[i] = s.nextInt();
+		      
+
+	        int n = val.length;
+	        System.out.println("Maximum items possible is "+knapSack(W, wt, val, n));
+	    }
+	
+}
diff --git a/Leetcode/BasicCalculator224.java b/Leetcode/BasicCalculator224.java
new file mode 100644
index 00000000..850333b2
--- /dev/null
+++ b/Leetcode/BasicCalculator224.java
@@ -0,0 +1,248 @@
+/**
+ * Implement a basic calculator to evaluate a simple expression string.
+ *
+ * The expression string may contain open ( and closing parentheses ), the
+ * plus + or minus sign -, non-negative integers and empty spaces .
+ *
+ * You may assume that the given expression is always valid.
+ *
+ * Some examples:
+ * "1 + 1" = 2
+ * " 2-1 + 2 " = 3
+ * "(1+(4+5+2)-3)+(6+8)" = 23
+ * Note: Do not use the eval built-in library function.
+ *
+ */
+
+
+public class BasicCalculator224 {
+    public int calculate(String s) {
+        int L = s.length();
+        int result = 0;
+        int start = 0;
+        boolean isNum = false;
+        boolean doPlus = true;
+        for (int i=0; i<L; i++) {
+            char c = s.charAt(i);
+            if (isDigit(c) && !isNum) {
+                start = i;
+                isNum = true;
+                continue;
+            }
+            if (isDigit(c)) continue;
+
+            if (isNum) {
+                result = doCal(s, result, start, i, doPlus);
+                isNum = false;
+            }
+            if (isPlus(c)) {
+                doPlus = true;
+            } else if (isMunis(c)) {
+                doPlus = false;
+            } else if (isOpen(c)) {
+                List<Integer> l = calculate(s, i+1, L);
+                result = doCal(result, l.get(0), doPlus);
+                i = l.get(1);
+            }
+        }
+        if (isNum) {
+            return doCal(s, result, start, L, doPlus);
+        }
+
+        return result;
+    }
+
+    private List<Integer> calculate(String s, int from, int L) {
+        int result = 0;
+        int start = from;
+        int to = from;
+        boolean isNum = false;
+        boolean doPlus = true;
+        for (int i=from; i<L; i++) {
+            char c = s.charAt(i);
+            if (isDigit(c) && !isNum) {
+                start = i;
+                isNum = true;
+                continue;
+            }
+            if (isDigit(c)) continue;
+
+            if (isNum) {
+                result = doCal(s, result, start, i, doPlus);
+                isNum = false;
+            }
+            if (isPlus(c)) {
+                doPlus = true;
+            } else if (isMunis(c)) {
+                doPlus = false;
+            } else if (isOpen(c)) {
+                List<Integer> l = calculate(s, i+1, L);
+                result = doCal(result, l.get(0), doPlus);
+                i = l.get(1);
+            } else {
+                to = i;
+                break;
+            }
+        }
+        if (isNum) {
+            return Arrays.asList(doCal(s, result, start, to, doPlus), to);
+        }
+
+        return Arrays.asList(result, to);
+    }
+
+    private int doCal(String s, int previous, int start, int end, boolean doPlus) {
+        int num = Integer.parseInt(s.substring(start, end));
+        return doCal(previous, num, doPlus);
+    }
+
+    private int doCal(int previous, int num, boolean doPlus) {
+        if (doPlus) {
+            return previous + num;
+        } else {
+            return previous - num;
+        }
+    }
+
+    private boolean isPlus(char c) {
+        return c == '+';
+    }
+    private boolean isMunis(char c) {
+        return c == '-';
+    }
+    private boolean isOpen(char c) {
+        return c == '(';
+    }
+    private boolean isClose(char c) {
+        return c == ')';
+    }
+    private boolean isDigit(char c) {
+        return c >= '0' && c <= '9';
+    }
+    private boolean isSpace(char c) {
+        return c == ' ';
+    }
+
+
+    /**
+     * https://discuss.leetcode.com/topic/15816/iterative-java-solution-with-stack
+     */
+    public int calculate2(String s) {
+        Stack<Integer> stack = new Stack<Integer>();
+        int result = 0;
+        int number = 0;
+        int sign = 1;
+        for(int i = 0; i < s.length(); i++){
+            char c = s.charAt(i);
+            if(Character.isDigit(c)){
+                number = 10 * number + (int)(c - '0');
+            }else if(c == '+'){
+                result += sign * number;
+                number = 0;
+                sign = 1;
+            }else if(c == '-'){
+                result += sign * number;
+                number = 0;
+                sign = -1;
+            }else if(c == '('){
+                //we push the result first, then sign;
+                stack.push(result);
+                stack.push(sign);
+                //reset the sign and result for the value in the parenthesis
+                sign = 1;
+                result = 0;
+            }else if(c == ')'){
+                result += sign * number;
+                number = 0;
+                result *= stack.pop();    //stack.pop() is the sign before the parenthesis
+                result += stack.pop();   //stack.pop() now is the result calculated before the parenthesis
+            }
+        }
+        if(number != 0) result += sign * number;
+        return result;
+    }
+
+
+    public int calculate3(String s) {
+        char[] chars = s.toCharArray();
+        int i = 0;
+        int N = chars.length;
+        int sign = 1;
+        Stack<String> stack = new Stack<>();
+        while (i < N) {
+            char ch = chars[i];
+            if (ch == ' ') {
+                i++;
+            } else if (ch == '+') {
+                sign = 1;
+                i++;
+            } else if (ch == '-') {
+                sign = -1;
+                i++;
+            } else if (ch == '(') {
+                stack.push((sign == 1 ? "+" : "-") + Character.toString(ch));
+                sign = 1;
+                i++;
+            } else if (ch == ')') {
+                int local = 0;
+                while (!stack.isEmpty() && !stack.peek().endsWith("(")) {
+                    local += Integer.valueOf(stack.pop());
+                }
+                if (stack.isEmpty()) {
+                    stack.push(Integer.toString(local));
+                } else {
+                    String op = stack.pop();
+                    if (op.startsWith("+")) {
+                        stack.push(Integer.toString(local));
+                    } else {
+                        stack.push(Integer.toString(-local));
+                    }
+                }
+                i++;
+            } else {
+                int j = getNum(chars, i);
+                stack.push((sign == 1 ? "+" : "-") + s.substring(i, j));
+                i = j;
+            }
+            
+        }
+        int res = 0;
+        while (!stack.isEmpty()) res += Integer.valueOf(stack.pop());
+        return res;
+    }
+
+    private int getNum(char[] chars, int i) {
+        int j = i;
+        while (j < chars.length && Character.isDigit(chars[j])) j++;
+        return j;
+    }
+
+    /**
+     * https://leetcode.com/problems/basic-calculator-ii/discuss/63088/Explanation-for-Java-O(n)-time-and-O(1)-space-solution
+     */
+    public int calculate4(String s) {
+        int pre = 0, curr = 0, sign = 1, op = 0, num = 0;
+        
+        for (int i = 0; i < s.length(); i++) {
+            if (Character.isDigit(s.charAt(i))) {
+                num = num * 10 + (s.charAt(i) - '0');
+                if (i == s.length() - 1 || !Character.isDigit(s.charAt(i + 1))) {
+                    curr = (op == 0 ? num : (op == 1 ? curr * num : curr / num));
+                }
+                
+            } else if (s.charAt(i) == '*' || s.charAt(i) == '/') {
+                op = (s.charAt(i) == '*' ? 1 : -1);
+                num = 0;
+                
+            } else if (s.charAt(i) == '+' || s.charAt(i) == '-') {
+                pre += sign * curr;
+                sign = (s.charAt(i) == '+' ? 1 : -1);
+                op = 0;
+                num = 0;
+            }
+        }
+        
+        return pre + sign * curr;
+    }
+
+}
diff --git a/Leetcode/BasicCalculatorII227.java b/Leetcode/BasicCalculatorII227.java
new file mode 100644
index 00000000..e29576f5
--- /dev/null
+++ b/Leetcode/BasicCalculatorII227.java
@@ -0,0 +1,72 @@
+/**
+ * Implement a basic calculator to evaluate a simple expression string.
+ * 
+ * The expression string contains only non-negative integers, +, -, *, /
+ * operators and empty spaces . The integer division should truncate toward
+ * zero.
+ * 
+ * Example 1:
+ * Input: "3+2*2"
+ * Output: 7
+ * 
+ * Example 2:
+ * Input: " 3/2 "
+ * Output: 1
+ * 
+ * Example 3:
+ * Input: " 3+5 / 2 "
+ * Output: 5
+ * 
+ * Note:
+ * You may assume that the given expression is always valid.
+ * Do not use the eval built-in library function.
+ */
+
+public class BasicCalculatorII227 {
+    public int calculate(String s) {
+        char[] chars = s.toCharArray();
+        int N = s.length();
+        int res = 0;
+        int i = 0;
+        while (i < N && chars[i] == ' ') i++;
+        int j = getNum(chars, i);
+        int num = Integer.valueOf(s.substring(i, j));
+        i = j;
+        while (i < N) {
+            while (i < N && chars[i] == ' ') i++;
+            if (i == N) break;
+            char op = chars[i];
+            i++;
+            while (i < N && chars[i] == ' ') i++;
+            if (i == N) break;
+            j = getNum(chars, i);
+            int curr = Integer.valueOf(s.substring(i, j));
+            i = j;
+            if (op == '+') {
+                res += num;
+                num = curr;
+            } else if (op == '-') {
+                res += num;
+                num = -curr;
+            } else if (op == '*') {
+                num *= curr;
+            } else {
+                num /= curr;
+            }
+        }
+        return res + num;
+    }
+
+    private int getNum(char[] chars, int i) {
+        int j = i;
+        while (j < chars.length && Character.isDigit(chars[j])) {
+            j++;
+        }
+        return j;
+    }
+
+
+
+
+
+}
diff --git a/Leetcode/Graph/Dijkastra.java b/Leetcode/Graph/Dijkastra.java
new file mode 100644
index 00000000..af1c8feb
--- /dev/null
+++ b/Leetcode/Graph/Dijkastra.java
@@ -0,0 +1,140 @@
+/**
+ * References:
+ * https://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path-algorithm/
+ * https://www.geeksforgeeks.org/greedy-algorithms-set-7-dijkstras-algorithm-for-adjacency-list-representation/
+ * https://www.geeksforgeeks.org/printing-paths-dijkstras-shortest-path-algorithm/
+ * https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-using-set-in-stl/
+ */
+
+/**
+ * All edge weights are non-negative.
+ */
+public class Dijkstra {
+    // Adjacency Matrix Representation
+    /**
+     * Output shortest paths distance from the source to all the vertices.
+     */
+    public int[] shortestDistancesFrom(int[][] graph, int src) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = extractMin(dist, sptSet);
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                }
+            }
+        }
+
+        return dist;
+    }
+
+    // This can be optimized by MinHeap
+    private int extractMin(int[] dist, Set<Integer> sptSet) {
+        int minIdx = -1;
+        int minVal = Integer.MAX_VALUE;
+        for (int i=0; i<dist.length; i++) {
+            if (!sptSet.contains(i) && dist[i] < minVal) {
+                minIdx = i;
+                minVal = dist[i];
+            }
+        }
+        return minIdx;
+    }
+
+    /**
+     * Output the shortest path distance from the source to the destination.
+     */
+    public int shortestDistance(int[][] graph, int src, int dest) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = minDistance(dist, sptSet);
+            // early return when you fidn the target
+            if (u = target) return dist[u];
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                }
+            }
+        }
+
+        return -1;
+    }
+
+    /**
+     * Output shortest path from the source to the destination.
+     */
+    public List<Integer> shortestPath(int[][] graph, int src, int dest) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        int[] parent = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+            parent[i] = i;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = extractMin(dist, sptSet);
+            if (u = target) return constructShortestPath(parent, src, dest);
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                    parent[v] = u;
+                }
+            }
+        }
+
+        return dist;
+    }
+
+    private List<Integer> constructShortestPath(int[] parent, int src, int dest) {
+        LinkedList<Integer> path = new LinkedList<>();
+        path.add(dest);
+        while (path.getFirst() != src) {
+            int head = path.getFirst();
+            if (parent[head] == head) return new LinkedList<>();
+            path.addFirst(parent[head]);
+        }
+        return path;
+    }
+
+}
diff --git a/Leetcode/Search/BinarySearch.java b/Leetcode/Search/BinarySearch.java
new file mode 100644
index 00000000..af1c8feb
--- /dev/null
+++ b/Leetcode/Search/BinarySearch.java
@@ -0,0 +1,140 @@
+/**
+ * References:
+ * https://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path-algorithm/
+ * https://www.geeksforgeeks.org/greedy-algorithms-set-7-dijkstras-algorithm-for-adjacency-list-representation/
+ * https://www.geeksforgeeks.org/printing-paths-dijkstras-shortest-path-algorithm/
+ * https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-using-set-in-stl/
+ */
+
+/**
+ * All edge weights are non-negative.
+ */
+public class Dijkstra {
+    // Adjacency Matrix Representation
+    /**
+     * Output shortest paths distance from the source to all the vertices.
+     */
+    public int[] shortestDistancesFrom(int[][] graph, int src) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = extractMin(dist, sptSet);
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                }
+            }
+        }
+
+        return dist;
+    }
+
+    // This can be optimized by MinHeap
+    private int extractMin(int[] dist, Set<Integer> sptSet) {
+        int minIdx = -1;
+        int minVal = Integer.MAX_VALUE;
+        for (int i=0; i<dist.length; i++) {
+            if (!sptSet.contains(i) && dist[i] < minVal) {
+                minIdx = i;
+                minVal = dist[i];
+            }
+        }
+        return minIdx;
+    }
+
+    /**
+     * Output the shortest path distance from the source to the destination.
+     */
+    public int shortestDistance(int[][] graph, int src, int dest) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = minDistance(dist, sptSet);
+            // early return when you fidn the target
+            if (u = target) return dist[u];
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                }
+            }
+        }
+
+        return -1;
+    }
+
+    /**
+     * Output shortest path from the source to the destination.
+     */
+    public List<Integer> shortestPath(int[][] graph, int src, int dest) {
+        if (graph == null || graph.length == 0 || graph[0].length == 0) return new int[0];
+        int len = graph.length;
+        int[] dist = new int[len];
+        int[] parent = new int[len];
+        Set<Integer> sptSet = new HashSet[len];
+
+        // initialization
+        for (int i = 0; i < len; i++) {
+            dist[i] = Integer.MAX_VALUE;
+            parent[i] = i;
+        }
+        dist[src] = 0;
+
+        while (sptSet.size() < len) {
+            int u = extractMin(dist, sptSet);
+            if (u = target) return constructShortestPath(parent, src, dest);
+            sptSet.add(u);
+
+            for (int v=0; v<len; v++) {
+                // relaxation
+                if (!sptSet.contains(v) && graph[u][v] > 0 &&
+                        dist[u] != Integer.MAX_VALUE &&
+                        dist[u] + graph[u][v] < dist[v]) {
+                    dist[v] = dist[u] + graph[u][v];
+                    parent[v] = u;
+                }
+            }
+        }
+
+        return dist;
+    }
+
+    private List<Integer> constructShortestPath(int[] parent, int src, int dest) {
+        LinkedList<Integer> path = new LinkedList<>();
+        path.add(dest);
+        while (path.getFirst() != src) {
+            int head = path.getFirst();
+            if (parent[head] == head) return new LinkedList<>();
+            path.addFirst(parent[head]);
+        }
+        return path;
+    }
+
+}
diff --git a/Lexico_String.java b/Lexico_String.java
new file mode 100644
index 00000000..8103de5c
--- /dev/null
+++ b/Lexico_String.java
@@ -0,0 +1,26 @@
+package Lexicographic_String;
+
+public class Lexicographic_String {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+        String s1="Komal";
+        String s2="Kunal";
+        //+ve s1>s2
+        //-ve s2>s1
+        //0 s1==s2
+        System.out.println(compareTo(s1,s2));
+	}
+    public static int compareTo(String s1,String s2) {
+    	if(s1==s2) {
+    		return 0;
+    	}
+    	int length=Math.min(s1.length(), s2.length());
+    	for(int i=0;i<length;i++) {
+    		if(s1.charAt(i)!=s2.charAt(i)) {
+    			return s1.charAt(i)-s2.charAt(i);
+    		}
+    	}
+    	return s1.length()-s2.length();
+    }
+}
diff --git a/Library Catalog System.java b/Library Catalog System.java
new file mode 100644
index 00000000..8227d011
--- /dev/null
+++ b/Library Catalog System.java	
@@ -0,0 +1,81 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Book {
+    private String title;
+    private String author;
+    private String isbn;
+    private String category;
+    private boolean available;
+
+    public Book(String title, String author, String isbn, String category) {
+        this.title = title;
+        this.author = author;
+        this.isbn = isbn;
+        this.category = category;
+        this.available = true;
+    }
+
+    // Getters and setters for book details
+
+    public boolean isAvailable() {
+        return available;
+    }
+
+    public void checkOut() {
+        available = false;
+    }
+
+    public void returnBook() {
+        available = true;
+    }
+}
+
+public class LibraryCatalogSystem {
+    private static ArrayList<Book> catalog = new ArrayList<>();
+    private static Scanner scanner = new Scanner(System.in);
+
+    public static void main(String[] args) {
+        while (true) {
+            displayMenu();
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline character
+
+            switch (choice) {
+                case 1:
+                    addBook();
+                    break;
+                case 2:
+                    searchBooks();
+                    break;
+                case 3:
+                    viewBookDetails();
+                    break;
+                case 4:
+                    checkoutBook();
+                    break;
+                case 5:
+                    returnBook();
+                    break;
+                case 6:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    // Implement methods for adding, searching, viewing, checking out, and returning books
+
+    private static void displayMenu() {
+        System.out.println("\nLibrary Catalog System");
+        System.out.println("1. Add a new book");
+        System.out.println("2. Search books");
+        System.out.println("3. View book details");
+        System.out.println("4. Checkout a book");
+        System.out.println("5. Return a book");
+        System.out.println("6. Exit");
+        System.out.print("Enter your choice: ");
+    }
+}
diff --git a/Library Management.java b/Library Management.java
new file mode 100644
index 00000000..fd5c9456
--- /dev/null
+++ b/Library Management.java	
@@ -0,0 +1,120 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Task {
+    private String title;
+    private String description;
+    private boolean isCompleted;
+
+    public Task(String title, String description) {
+        this.title = title;
+        this.description = description;
+        this.isCompleted = false;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public boolean isCompleted() {
+        return isCompleted;
+    }
+
+    public void markAsCompleted() {
+        isCompleted = true;
+    }
+}
+
+public class TaskListApp {
+    private static ArrayList<Task> tasks = new ArrayList<>();
+    private static Scanner scanner = new Scanner(System.in);
+
+    public static void main(String[] args) {
+        while (true) {
+            displayMenu();
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline character
+
+            switch (choice) {
+                case 1:
+                    addTask();
+                    break;
+                case 2:
+                    viewTasks();
+                    break;
+                case 3:
+                    markTaskCompleted();
+                    break;
+                case 4:
+                    deleteTask();
+                    break;
+                case 5:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    private static void displayMenu() {
+        System.out.println("\nTask List Application");
+        System.out.println("1. Add a new task");
+        System.out.println("2. View tasks");
+        System.out.println("3. Mark a task as completed");
+        System.out.println("4. Delete a task");
+        System.out.println("5. Exit");
+        System.out.print("Enter your choice: ");
+    }
+
+    private static void addTask() {
+        System.out.print("Enter task title: ");
+        String title = scanner.nextLine();
+        System.out.print("Enter task description: ");
+        String description = scanner.nextLine();
+
+        Task task = new Task(title, description);
+        tasks.add(task);
+        System.out.println("Task added successfully!");
+    }
+
+    private static void viewTasks() {
+        System.out.println("\nTask List:");
+        for (int i = 0; i < tasks.size(); i++) {
+            Task task = tasks.get(i);
+            System.out.println(i + 1 + ". " + task.getTitle() + " - " + task.getDescription() +
+                    (task.isCompleted() ? " (Completed)" : ""));
+        }
+    }
+
+    private static void markTaskCompleted() {
+        System.out.print("Enter the task number to mark as completed: ");
+        int taskNumber = scanner.nextInt();
+        scanner.nextLine();  // Consume newline character
+
+        if (taskNumber >= 1 && taskNumber <= tasks.size()) {
+            Task task = tasks.get(taskNumber - 1);
+            task.markAsCompleted();
+            System.out.println("Task marked as completed!");
+        } else {
+            System.out.println("Invalid task number. Please try again.");
+        }
+    }
+
+    private static void deleteTask() {
+        System.out.print("Enter the task number to delete: ");
+        int taskNumber = scanner.nextInt();
+        scanner.nextLine();  // Consume newline character
+
+        if (taskNumber >= 1 && taskNumber <= tasks.size()) {
+            Task task = tasks.remove(taskNumber - 1);
+            System.out.println("Task deleted: " + task.getTitle());
+        } else {
+            System.out.println("Invalid task number. Please try again.");
+        }
+    }
+}
diff --git a/LibraryApp/libraryApp/Book.java b/LibraryApp/libraryApp/Book.java
new file mode 100644
index 00000000..bd583bd8
--- /dev/null
+++ b/LibraryApp/libraryApp/Book.java
@@ -0,0 +1,86 @@
+package libraryApp;
+
+public class Book {
+	
+	private int isbn;
+	private String title;
+	private String author;
+	private String genre;
+	private int quantity;
+	private int checkedOut;
+	private int checkedIn;
+	
+	//Constructor for book object
+	public Book(int isbn, String title, String author, String genre, int quantity, int checkedOut) {
+		this.isbn = isbn;
+		this.title = title;
+		this.author = author;
+		this.genre = genre;
+		this.quantity = quantity;
+		this.checkedOut = checkedOut;
+		this.checkedIn = quantity-checkedOut;
+	}
+
+	public int getCheckedIn() {
+		return checkedIn;
+	}
+
+	public void setCheckedIn(int checkedIn) {
+		this.checkedIn = checkedIn;
+	}
+
+	public void setIsbn(int isbn) {
+		this.isbn = isbn;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public void setAuthor(String author) {
+		this.author = author;
+	}
+
+	public void setGenre(String genre) {
+		this.genre = genre;
+	}
+
+	public void setQuantity(int quantity) {
+		this.quantity = quantity;
+	}
+
+	public void setCheckedOut(int checkedOut) {
+		this.checkedOut = checkedOut;
+	}
+
+	//Getter Methods
+	public int getIsbn() {
+		return isbn;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public String getAuthor() {
+		return author;
+	}
+
+	public String getGenre() {
+		return genre;
+	}
+
+	public int getQuantity() {
+		return quantity;
+	}
+
+	public int getCheckedOut() {
+		return checkedOut;
+	}
+
+	
+	
+	
+}
+
+ 
diff --git a/LibraryApp/libraryApp/BookRepository.java b/LibraryApp/libraryApp/BookRepository.java
new file mode 100644
index 00000000..9c2158aa
--- /dev/null
+++ b/LibraryApp/libraryApp/BookRepository.java
@@ -0,0 +1,122 @@
+package libraryApp;
+import java.util.ArrayList;
+
+public class BookRepository {
+	
+	private ArrayList<Book> books = new ArrayList<>();
+	private int booksFound = 0;
+	
+	//Constructor to initialize books
+	public BookRepository(){
+		books.add(new Book(253910,"Pride and Prejudice C", "Jane Austen", "Love",10,7));
+		books.add(new Book(391520,"Programming in ANSI C", "E. Balagurusamy", "Educational",15,10));
+		books.add(new Book(715332,"Shrimad Bhagavad Gita", "Krishna Dvaipayana", "Motivational",20,18));
+		books.add(new Book(935141,"Java: The Complete Reference", "Herbert Schildt", "Educational",12,9));
+		books.add(new Book(459901,"It", "Stephan King", "Horror",7,5));
+		books.add(new Book(855141,"Disneyland", "Mickey & Minnie", "Love",10,3));
+	}
+	
+	
+	//Searching books by Title Keyword
+	public void searchByTitle(String title) {
+		booksFound = 0;
+		for(Book book : books) {
+			String bookTitle = book.getTitle();
+			if(bookTitle.toLowerCase().contains(title.toLowerCase())) {
+				bookDetails(book);
+				booksFound++;
+			}
+		}
+		System.out.printf("\n%d Book%s Found.\n",booksFound,booksFound>1?"s":"");
+		return;
+	}
+	
+
+	//Searching books by ISBN Number
+	public void searchByISBN(int isbn) {
+		booksFound = 0;
+		for(Book book : books) {
+			if(book.getIsbn()==isbn) {
+				bookDetails(book);
+				booksFound++;
+				break;
+			}
+				
+		}
+		System.out.printf("\n%d Book%s Found.\n",booksFound,booksFound>1?"s":"");
+		return;
+	}
+	
+	
+	//Searching books by Genre
+	public boolean searchByGenre(String genre){
+		booksFound = 0;
+		for(Book book : books) {
+			String bookGenre = book.getGenre();
+			if(bookGenre.toLowerCase().equals(genre.toLowerCase())) {
+				bookDetails(book);
+				booksFound++;
+			}
+		}
+		System.out.printf("\n%d Book%s Found.\n",booksFound,booksFound>1?"s":"");
+		if(booksFound>0)
+			return true;
+		else 
+			return false;
+			
+	}
+	
+	
+	// Display Book Details
+	public void bookDetails(Book book) {
+		System.out.println("\n+> Book details: \n");
+		System.out.println("\tTitle: "+book.getTitle()+"\n\tAuthor: "+ book.getAuthor()+"\n\tGenre: "+book.getGenre()+"\n\tISBN: "+book.getIsbn()+"\n\tQuantity: "+book.getQuantity()+"\n\tChecked Out: "+String.valueOf(book.getCheckedOut())+"\n\tAvailable: "+String.valueOf(book.getQuantity()-book.getCheckedOut()));
+	}
+	
+	
+	//Searching for ISBN number for checkIn and checkOut
+	public int searchISBN(int isbn) {
+		for(Book book:books)
+			if(book.getIsbn()==isbn)
+				return 1;
+		return 0;
+	}
+	
+	
+	//withdrawing book
+	public boolean getBook(int isbn) {
+		for(Book book: books) {
+			if(book.getIsbn()==isbn) {
+				if((book.getQuantity()-book.getCheckedOut())>0) {
+					book.setCheckedOut(book.getCheckedOut()+1);
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+	
+	
+	//submitting book
+	public boolean submitBook(int isbn) {
+		for(Book book: books) {
+			if(book.getQuantity()>book.getCheckedIn()) {
+				book.setCheckedOut(book.getCheckedOut()-1);
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	
+	//Showing status of book
+	public void bookStatus(int isbn) {
+		for(Book book: books) {
+			if(book.getIsbn()==isbn) {
+				bookDetails(book);
+				break;
+			}
+		}
+	}
+	
+}
diff --git a/LibraryApp/libraryApp/LibraryApp.java b/LibraryApp/libraryApp/LibraryApp.java
new file mode 100644
index 00000000..4b66c059
--- /dev/null
+++ b/LibraryApp/libraryApp/LibraryApp.java
@@ -0,0 +1,38 @@
+package libraryApp;
+
+public class LibraryApp {
+	
+	BookRepository repo = new BookRepository();
+	
+	public void findByTitle(String title) {
+		repo.searchByTitle(title);
+		return;
+	}
+	public void findByISBN(int isbn) {
+		repo.searchByISBN(isbn);
+		return;
+	}
+	public boolean findByGenre(String genre) {
+		if(repo.searchByGenre(genre))
+			return true;
+		else 
+			return false;
+	}
+	
+	
+	public int findISBN(int isbn) {
+		return repo.searchISBN(isbn);
+	}
+	
+	public boolean withdrawBook(int isbn) {
+		return repo.getBook(isbn);
+	}
+	
+	public boolean depositBook(int isbn) {
+		return repo.submitBook(isbn);
+	}
+
+	public void getStatus(int isbn) {
+		repo.bookStatus(isbn);
+	}
+}
diff --git a/LibraryApp/libraryApp/Main.java b/LibraryApp/libraryApp/Main.java
new file mode 100644
index 00000000..5e7df9ad
--- /dev/null
+++ b/LibraryApp/libraryApp/Main.java
@@ -0,0 +1,92 @@
+package libraryApp;
+import java.util.Scanner;
+
+public class  Main{
+	static Scanner scan = new Scanner(System.in);
+    static LibraryApp app = new LibraryApp();
+
+	
+	public static void main(String[] args) {
+       
+		int userChoice=0;
+        System.out.println("-----Welcome to the Library!-----\n");
+        do{
+        	System.out.println("\n-----------------------------------");
+        	System.out.println("1. Search book by Title keyword.");
+            System.out.println("2. Search book by ISBN number.");
+            System.out.println("3. Search book by Genre.");
+    		System.out.println("4. Book Check In");
+    		System.out.println("5. Book Check Out");
+    		System.out.println("6. Exit from the library.");
+    		System.out.println("-----------------------------------");
+    		System.out.print("\nChoose any option: ");
+            
+            userChoice = scan.nextInt();
+            scan.nextLine();
+            
+            switch(userChoice){
+            	case 1:
+            			System.out.print("Enter the Title of Book: ");
+            			app.findByTitle(scan.nextLine());
+            			break;
+            	case 2: 
+            			System.out.println("Enter ISBN number: ");
+            			app.findByISBN(scan.nextInt());
+            			break;
+            	case 3:
+            			System.out.println("Enter Genre: ");
+            			app.findByGenre(scan.nextLine());
+            			break;
+            	case 4:
+            			checkIn();
+            			break;
+            	case 5:
+            			checkOut();
+            			break;
+            	case 6:
+            			System.out.println("\nThanks for visiting. \nSee you again.");
+            			break;
+            	default:
+            			System.out.println("\nInvalid Choice!");	
+            }    
+        }while(userChoice!=6);
+        
+    }
+    
+	
+		//Checking book In
+    	private static void checkIn() {
+    		System.out.println("Enter Book's ISBN number : ");
+    		int isbnNum = scan.nextInt();
+    		getStatus(isbnNum);
+    		int bookAvailable = app.findISBN(isbnNum);
+    		if(bookAvailable==1) {
+    			System.out.println(isbnNum);
+    			app.withdrawBook(isbnNum);
+    			System.out.println("Book CheckIn successful.");
+    			getStatus(isbnNum);
+    		}
+    		else
+    			System.out.printf("Book with %d ISBN number not Found in inventory.",isbnNum);
+    	}
+    	
+    	
+    	//Checking book Out
+    	private static void checkOut() {
+    		System.out.println("\nEnter Book's ISBN number : ");
+    		int isbnNum = scan.nextInt();
+    		int bookAvailable = app.findISBN(isbnNum);
+    		if(bookAvailable==1) {
+    			if(app.depositBook(isbnNum))
+    			System.out.println("Book CheckOut successful.");
+    			else
+    				System.out.println("No Space for more Books.");
+    		}
+    		else
+    			System.out.printf("Book with %d ISBN number not Found in inventory.",isbnNum);
+    	}
+    	
+    	private static void getStatus(int isbn) {
+    		app.getStatus(isbn);
+    	}
+}
\ No newline at end of file
diff --git a/LibraryManagement.java b/LibraryManagement.java
new file mode 100644
index 00000000..52b3dea0
--- /dev/null
+++ b/LibraryManagement.java
@@ -0,0 +1,343 @@
+import java.util.Scanner;
+
+class Book {
+    public int sNo;
+    public String bookName;
+    public String authorName;
+    public int bookQty;
+    public int bookQtyCopy;
+
+    Scanner input = new Scanner(System.in);
+
+    public Book() {
+        System.out.println("Enter Serial No of Book:");
+        this.sNo = input.nextInt();
+        input.nextLine();
+
+        System.out.println("Enter Book Name:");
+        this.bookName = input.nextLine();
+
+        System.out.println("Enter Author Name:");
+        this.authorName = input.nextLine();
+
+        System.out.println("Enter Quantity of Books:");
+        this.bookQty = input.nextInt();
+        bookQtyCopy = this.bookQty;
+    }
+}
+
+class Student {
+    String studentName;
+    String regNum;
+
+    Book borrowedBooks[] = new Book[3];
+    public int booksCount = 0;
+
+    Scanner input = new Scanner(System.in);
+
+    public Student() {
+        System.out.println("Enter Student Name:");
+        this.studentName = input.nextLine();
+
+        System.out.println("Enter Registration Number:");
+        this.regNum = input.nextLine();
+    }
+}
+
+class Books {
+    private Book[] theBooks = new Book[50];
+    private int count;
+    private Scanner input = new Scanner(System.in);
+
+    public int compareBookObjects(Book b1, Book b2) {
+        if (b1.bookName.equalsIgnoreCase(b2.bookName)) {
+            System.out.println("Book of this Name Already Exists.");
+            return 0;
+        }
+        if (b1.sNo == b2.sNo) {
+            System.out.println("Book of this Serial No Already Exists.");
+            return 0;
+        }
+        return 1;
+    }
+
+    public void addBook(Book b) {
+        for (int i = 0; i < count; i++) {
+            if (compareBookObjects(b, theBooks[i]) == 0)
+                return;
+        }
+        if (count < 50) {
+            theBooks[count] = b;
+            count++;
+        } else {
+            System.out.println("No Space to Add More Books.");
+        }
+    }
+
+    public void searchBySno() {
+        System.out.println("\t\t\t\tSEARCH BY SERIAL NUMBER\n");
+        System.out.println("Enter Serial No of Book:");
+        int sNo = input.nextInt();
+        int flag = 0;
+        System.out.println("S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");
+        for (int i = 0; i < count; i++) {
+            if (sNo == theBooks[i].sNo) {
+                System.out.println(
+                    theBooks[i].sNo + "\t\t"
+                    + theBooks[i].bookName + "\t\t"
+                    + theBooks[i].authorName + "\t\t"
+                    + theBooks[i].bookQtyCopy + "\t\t"
+                    + theBooks[i].bookQty);
+                flag++;
+                return;
+            }
+        }
+        if (flag == 0)
+            System.out.println("No Book for Serial No " + sNo + " Found.");
+    }
+
+    public void searchByAuthorName() {
+        System.out.println("\t\t\t\tSEARCH BY AUTHOR'S NAME");
+        input.nextLine();
+        System.out.println("Enter Author Name:");
+        String authorName = input.nextLine();
+        int flag = 0;
+        System.out.println("S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");
+        for (int i = 0; i < count; i++) {
+            if (authorName.equalsIgnoreCase(theBooks[i].authorName)) {
+                System.out.println(
+                    theBooks[i].sNo + "\t\t"
+                    + theBooks[i].bookName + "\t\t"
+                    + theBooks[i].authorName + "\t\t"
+                    + theBooks[i].bookQtyCopy + "\t\t"
+                    + theBooks[i].bookQty);
+                flag++;
+            }
+        }
+        if (flag == 0)
+            System.out.println("No Books of " + authorName + " Found.");
+    }
+
+    public void showAllBooks() {
+        System.out.println("\t\t\t\tSHOWING ALL BOOKS\n");
+        System.out.println("S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");
+        for (int i = 0; i < count; i++) {
+            System.out.println(
+                theBooks[i].sNo + "\t\t"
+                + theBooks[i].bookName + "\t\t"
+                + theBooks[i].authorName + "\t\t"
+                + theBooks[i].bookQtyCopy + "\t\t"
+                + theBooks[i].bookQty);
+        }
+    }
+
+    public void upgradeBookQty() {
+        System.out.println("\t\t\t\tUPGRADE QUANTITY OF A BOOK\n");
+        System.out.println("Enter Serial No of Book");
+        int sNo = input.nextInt();
+        for (int i = 0; i < count; i++) {
+            if (sNo == theBooks[i].sNo) {
+                System.out.println("Enter No of Books to be Added:");
+                int addingQty = input.nextInt();
+                theBooks[i].bookQty += addingQty;
+                theBooks[i].bookQtyCopy += addingQty;
+                return;
+            }
+        }
+    }
+
+    public int isAvailable(int sNo) {
+        for (int i = 0; i < count; i++) {
+            if (sNo == theBooks[i].sNo) {
+                if (theBooks[i].bookQtyCopy > 0) {
+                    System.out.println("Book is Available.");
+                    return i;
+                }
+                System.out.println("Book is Unavailable");
+                return -1;
+            }
+        }
+        System.out.println("No Book of Serial Number Available in Library.");
+        return -1;
+    }
+
+    public Book checkOutBook() {
+        System.out.println("Enter Serial No of Book to be Checked Out.");
+        int sNo = input.nextInt();
+        int bookIndex = isAvailable(sNo);
+        if (bookIndex != -1) {
+            theBooks[bookIndex].bookQtyCopy--;
+            return theBooks[bookIndex];
+        }
+        return null;
+    }
+
+    public void checkInBook(Book b) {
+        for (int i = 0; i < count; i++) {
+            if (b.equals(theBooks[i])) {
+                theBooks[i].bookQtyCopy++;
+                return;
+            }
+        }
+    }
+}
+
+class Students {
+    Scanner input = new Scanner(System.in);
+    student theStudents[] = new student[50];
+    public static int count = 0;
+
+    public void addStudent(student s) {
+        for (int i = 0; i < count; i++) {
+            if (s.regNum.equalsIgnoreCase(theStudents[i].regNum)) {
+                System.out.println("Student of Reg Num " + s.regNum + " is Already Registered.");
+                return;
+            }
+        }
+
+        if (count <= 50) {
+            theStudents[count] = s;
+            count++;
+        }
+    }
+
+    public void showAllStudents() {
+        System.out.println("Student Name\t\tReg Number");
+        for (int i = 0; i < count; i++) {
+            System.out.println(theStudents[i].studentName + "\t\t" + theStudents[i].regNum);
+        }
+    }
+
+    public int isStudent() {
+        System.out.println("Enter Reg Number:");
+        String regNum = input.nextLine();
+
+        for (int i = 0; i < count; i++) {
+            if (theStudents[i].regNum.equalsIgnoreCase(regNum)) {
+                return i;
+            }
+        }
+
+        System.out.println("Student is not Registered.");
+        System.out.println("Get Registered First.");
+        return -1;
+    }
+
+    public void checkOutBook(Books book) {
+        int studentIndex = this.isStudent();
+
+        if (studentIndex != -1) {
+            System.out.println("checking out");
+            book.showAllBooks();
+            book b = book.checkOutBook();
+            System.out.println("checking out");
+
+            if (b != null) {
+                if (theStudents[studentIndex].booksCount <= 3) {
+                    System.out.println("adding book");
+                    theStudents[studentIndex].borrowedBooks[theStudents[studentIndex].booksCount] = b;
+                    theStudents[studentIndex].booksCount++;
+                    return;
+                } else {
+                    System.out.println("Student Can not Borrow more than 3 Books.");
+                    return;
+                }
+            }
+            System.out.println("Book is not Available.");
+        }
+    }
+
+    public void checkInBook(Books book) {
+        int studentIndex = this.isStudent();
+        if (studentIndex != -1) {
+            System.out.println("S.No\t\t\tBook Name\t\t\tAuthor Name");
+            student s = theStudents[studentIndex];
+
+            for (int i = 0; i < s.booksCount; i++) {
+                System.out.println(
+                    s.borrowedBooks[i].sNo + "\t\t\t"
+                    + s.borrowedBooks[i].bookName + "\t\t\t"
+                    + s.borrowedBooks[i].authorName);
+            }
+
+            System.out.println("Enter Serial Number of Book to be Checked In:");
+            int sNo = input.nextInt();
+
+            for (int i = 0; i < s.booksCount; i++) {
+                if (sNo == s.borrowedBooks[i].sNo) {
+                    book.checkInBook(s.borrowedBooks[i]);
+                    s.borrowedBooks[i] = null;
+                    return;
+                }
+            }
+
+            System.out.println("Book of Serial No " + sNo + " not Found");
+        }
+    }
+}
+
+public class LibrarySystem {
+    public static void main(String[] args) {
+        Scanner input = new Scanner(System.in);
+        Books books = new Books();
+        Students students = new Students();
+
+        int choice;
+
+        do {
+            System.out.println("Library System Menu:");
+            System.out.println("1. Add Student");
+            System.out.println("2. Add Book");
+            System.out.println("3. Search Book by Serial Number");
+            System.out.println("4. Search Book by Author Name");
+            System.out.println("5. Show All Books");
+            System.out.println("6. Upgrade Quantity of a Book");
+            System.out.println("7. Check Out Book");
+            System.out.println("8. Check In Book");
+            System.out.println("9. Show All Students");
+            System.out.println("0. Exit");
+
+            System.out.print("Enter your choice: ");
+            choice = input.nextInt();
+            input.nextLine();  // Consume the newline
+
+            switch (choice) {
+                case 1:
+                    student newStudent = new student();
+                    students.addStudent(newStudent);
+                    break;
+                case 2:
+                    Book newBook = new Book();
+                    books.addBook(newBook);
+                    break;
+                case 3:
+                    books.searchBySno();
+                    break;
+                case 4:
+                    books.searchByAuthorName();
+                    break;
+                case 5:
+                    books.showAllBooks();
+                    break;
+                case 6:
+                    books.upgradeBookQty();
+                    break;
+                case 7:
+                    students.checkOutBook(books);
+                    break;
+                case 8:
+                    students.checkInBook(books);
+                    break;
+                case 9:
+                    students.showAllStudents();
+                    break;
+                case 0:
+                    System.out.println("Exiting Library System.");
+                    break;
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+                    break;
+            }
+        } while (choice != 0);
+    }
+}
diff --git a/LibraryMangement/CreateTableScript.txt b/LibraryMangement/CreateTableScript.txt
new file mode 100644
index 00000000..0fc22c1f
--- /dev/null
+++ b/LibraryMangement/CreateTableScript.txt
@@ -0,0 +1,9 @@
+create table members (member_id number(10),member_name varchar2(100), doj date);
+
+create table books (isbn_code varchar2(50), book_name varchar2(50), book_desc varchar2(1000),author_name varchar2(100),subject_name varchar2(100), units_available number(5));
+
+create table member_book_record (rec_id number(18),member_id number(10),isbn_code varchar2(50), doi date, dor date);
+
+create sequence lib_seq start with 101 increment by 1;
+
+
diff --git a/LibraryMangement/build.xml b/LibraryMangement/build.xml
new file mode 100644
index 00000000..a710b7f3
--- /dev/null
+++ b/LibraryMangement/build.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="CoreJavaProject" default="default" basedir=".">
+    <description>Builds, tests, and runs the project CoreJavaProject.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar:                  JAR building
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="CoreJavaProject-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>
diff --git a/LibraryMangement/build/classes/AddBookMenu.class b/LibraryMangement/build/classes/AddBookMenu.class
new file mode 100644
index 00000000..f15c4abc
Binary files /dev/null and b/LibraryMangement/build/classes/AddBookMenu.class differ
diff --git a/LibraryMangement/build/classes/AddMemberMenu.class b/LibraryMangement/build/classes/AddMemberMenu.class
new file mode 100644
index 00000000..b47e23f0
Binary files /dev/null and b/LibraryMangement/build/classes/AddMemberMenu.class differ
diff --git a/LibraryMangement/build/classes/Book.class b/LibraryMangement/build/classes/Book.class
new file mode 100644
index 00000000..ce27d209
Binary files /dev/null and b/LibraryMangement/build/classes/Book.class differ
diff --git a/LibraryMangement/build/classes/DBProperties b/LibraryMangement/build/classes/DBProperties
new file mode 100644
index 00000000..b5b8df4b
--- /dev/null
+++ b/LibraryMangement/build/classes/DBProperties
@@ -0,0 +1,4 @@
+DBDriver=oracle.jdbc.driver.OracleDriver
+DBName=jdbc:oracle:thin:@localhost:1522:xe
+User=scott
+Password= tiger
\ No newline at end of file
diff --git a/LibraryMangement/build/classes/LibFunctions.class b/LibraryMangement/build/classes/LibFunctions.class
new file mode 100644
index 00000000..f2a0b016
Binary files /dev/null and b/LibraryMangement/build/classes/LibFunctions.class differ
diff --git a/LibraryMangement/build/classes/LibUtil.class b/LibraryMangement/build/classes/LibUtil.class
new file mode 100644
index 00000000..5345292b
Binary files /dev/null and b/LibraryMangement/build/classes/LibUtil.class differ
diff --git a/LibraryMangement/build/classes/Member.class b/LibraryMangement/build/classes/Member.class
new file mode 100644
index 00000000..90f9a4ca
Binary files /dev/null and b/LibraryMangement/build/classes/Member.class differ
diff --git a/LibraryMangement/build/classes/UserMenu.class b/LibraryMangement/build/classes/UserMenu.class
new file mode 100644
index 00000000..4bfa8339
Binary files /dev/null and b/LibraryMangement/build/classes/UserMenu.class differ
diff --git a/LibraryMangement/manifest.mf b/LibraryMangement/manifest.mf
new file mode 100644
index 00000000..1574df4a
--- /dev/null
+++ b/LibraryMangement/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/LibraryMangement/nbproject/build-impl.xml b/LibraryMangement/nbproject/build-impl.xml
new file mode 100644
index 00000000..d5facad8
--- /dev/null
+++ b/LibraryMangement/nbproject/build-impl.xml
@@ -0,0 +1,1413 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - test compilation
+  - test execution
+  - test debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="CoreJavaProject-impl">
+    <fail message="Please build using Ant 1.8.0 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.8.0"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <property name="platform.java" value="${java.home}/bin/java"/>
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="splashscreen.available">
+            <and>
+                <not>
+                    <equals arg1="${application.splash}" arg2="" trim="true"/>
+                </not>
+                <available file="${application.splash}"/>
+            </and>
+        </condition>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="profile.available">
+            <and>
+                <isset property="javac.profile"/>
+                <length length="0" string="${javac.profile}" when="greater"/>
+                <matches pattern="1\.[89](\..*)?" string="${javac.source}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <or>
+                <not>
+                    <istrue value="${jar.archive.disabled}"/>
+                </not>
+                <istrue value="${not.archive.disabled}"/>
+            </or>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="do.archive"/>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+main.class.available">
+            <and>
+                <isset property="main.class.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+splashscreen.available">
+            <and>
+                <isset property="splashscreen.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+profile.available">
+            <and>
+                <isset property="profile.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="run.jvmargs.ide" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <and>
+                <isset property="endorsed.classpath"/>
+                <not>
+                    <equals arg1="${endorsed.classpath}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
+            <isset property="profile.available"/>
+        </condition>
+        <condition else="false" property="jdkBug6558476">
+            <and>
+                <matches pattern="1\.[56]" string="${java.specification.version}"/>
+                <not>
+                    <os family="unix"/>
+                </not>
+            </and>
+        </condition>
+        <property name="javac.fork" value="${jdkBug6558476}"/>
+        <property name="jar.index" value="false"/>
+        <property name="jar.index.metainf" value="${jar.index}"/>
+        <property name="copylibs.rebase" value="true"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+        <condition property="junit.available">
+            <or>
+                <available classname="org.junit.Test" classpath="${run.test.classpath}"/>
+                <available classname="junit.framework.Test" classpath="${run.test.classpath}"/>
+            </or>
+        </condition>
+        <condition property="testng.available">
+            <available classname="org.testng.annotations.Test" classpath="${run.test.classpath}"/>
+        </condition>
+        <condition property="junit+testng.available">
+            <and>
+                <istrue value="${junit.available}"/>
+                <istrue value="${testng.available}"/>
+            </and>
+        </condition>
+        <condition else="testng" property="testng.mode" value="mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+        <condition else="" property="testng.debug.mode" value="-mixed">
+            <istrue value="${junit+testng.available}"/>
+        </condition>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.profile.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="${line.separator}" property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <tempfile deleteonexit="true" property="javac.includesfile.binary"/>
+                <echo file="${javac.includesfile.binary}" message="${javac.includes.binary}"/>
+                <delete>
+                    <files includesfile="${javac.includesfile.binary}"/>
+                </delete>
+                <delete>
+                    <fileset file="${javac.includesfile.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-init">
+        <condition else="false" property="nb.junit.batch" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <not>
+                    <isset property="test.method"/>
+                </not>
+            </and>
+        </condition>
+        <condition else="false" property="nb.junit.single" value="true">
+            <and>
+                <istrue value="${junit.available}"/>
+                <isset property="test.method"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-init-test-properties">
+        <property name="test.binaryincludes" value="&lt;nothing&gt;"/>
+        <property name="test.binarytestincludes" value=""/>
+        <property name="test.binaryexcludes" value=""/>
+    </target>
+    <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+    <target if="${testng.available}" name="-init-macrodef-testng">
+        <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <condition else="" property="testng.methods.arg" value="@{testincludes}.@{testmethods}">
+                    <isset property="test.method"/>
+                </condition>
+                <union id="test.set">
+                    <fileset dir="${test.src.dir}" excludes="@{excludes},**/*.xml,${excludes}" includes="@{includes}">
+                        <filename name="@{testincludes}"/>
+                    </fileset>
+                </union>
+                <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+                <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="CoreJavaProject" testname="TestNG tests" workingDir="${work.dir}">
+                    <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+                    <propertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </propertyset>
+                    <customize/>
+                </testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-test-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <echo>No tests executed.</echo>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng" if="${testng.available}" name="-init-macrodef-testng-impl">
+        <macrodef name="test-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:testng excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:testng>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-impl,-init-macrodef-junit-impl,-init-macrodef-testng-impl" name="-init-macrodef-test">
+        <macrodef name="test" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <sequential>
+                <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+        <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property name="junit.forkmode" value="perTest"/>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                        <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+                            <filename name="${test.binarytestincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg value="-ea"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <customize/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+        <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <element implicit="true" name="customize" optional="true"/>
+            <sequential>
+                <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize/>
+                </j2seproject3:junit-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target if="${testng.available}" name="-init-macrodef-testng-debug">
+        <macrodef name="testng-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element name="customize2" optional="true"/>
+            <sequential>
+                <condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
+                    <isset property="test.method"/>
+                </condition>
+                <condition else="-suitename CoreJavaProject -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
+                    <matches pattern=".*\.xml" string="@{testClass}"/>
+                </condition>
+                <delete dir="${build.test.results.dir}" quiet="true"/>
+                <mkdir dir="${build.test.results.dir}"/>
+                <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
+                    <customize>
+                        <customize2/>
+                        <jvmarg value="-ea"/>
+                        <arg line="${testng.debug.mode}"/>
+                        <arg line="-d ${build.test.results.dir}"/>
+                        <arg line="-listener org.testng.reporters.VerboseReporter"/>
+                        <arg line="${testng.cmd.args}"/>
+                    </customize>
+                </j2seproject3:debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug" if="${testng.available}" name="-init-macrodef-testng-debug-impl">
+        <macrodef name="testng-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <element implicit="true" name="customize2" optional="true"/>
+            <sequential>
+                <j2seproject3:testng-debug testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2/>
+                </j2seproject3:testng-debug>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-junit-debug-impl" if="${junit.available}" name="-init-macrodef-test-debug-junit">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+                    <customize>
+                        <classpath>
+                            <path path="${run.test.classpath}"/>
+                        </classpath>
+                        <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                        <jvmarg line="${run.jvmargs}"/>
+                        <jvmarg line="${run.jvmargs.ide}"/>
+                    </customize>
+                </j2seproject3:test-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-testng-debug-impl" if="${testng.available}" name="-init-macrodef-test-debug-testng">
+        <macrodef name="test-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <attribute default="" name="testmethods"/>
+            <attribute default="${main.class}" name="testClass"/>
+            <attribute default="" name="testMethod"/>
+            <sequential>
+                <j2seproject3:testng-debug-impl testClass="@{testClass}" testMethod="@{testMethod}">
+                    <customize2>
+                        <syspropertyset>
+                            <propertyref prefix="test-sys-prop."/>
+                            <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                        </syspropertyset>
+                    </customize2>
+                </j2seproject3:testng-debug-impl>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-test-debug-junit,-init-macrodef-test-debug-testng" name="-init-macrodef-test-debug"/>
+    <!--
+                pre NB7.2 profiling section; consider it deprecated
+            -->
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile, -profile-init-check" if="profiler.info.jvmargs.agent" name="profile-init"/>
+    <target if="profiler.info.jvmargs.agent" name="-profile-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="profiler.info.jvmargs.agent" name="-profile-init-macrodef-profile">
+        <macrodef name="resolve">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${env.@{value}}"/>
+            </sequential>
+        </macrodef>
+        <macrodef name="profile">
+            <attribute default="${main.class}" name="classname"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property environment="env"/>
+                <resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
+                <java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
+                    <jvmarg line="${profiler.info.jvmargs}"/>
+                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+                    <arg line="${application.args}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-profile-pre-init, init, -profile-post-init, -profile-init-macrodef-profile" if="profiler.info.jvmargs.agent" name="-profile-init-check">
+        <fail unless="profiler.info.jvm">Must set JVM to use for profiling in profiler.info.jvm</fail>
+        <fail unless="profiler.info.jvmargs.agent">Must set profiler agent JVM arguments in profiler.info.jvmargs.agent</fail>
+    </target>
+    <!--
+                end of pre NB7.2 profiling section
+            -->
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <attribute default="jvm" name="jvm"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <jvmarg line="${run.jvmargs.ide}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${manifest.file}" name="manifest"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <filtermapper>
+                            <replacestring from=" " to="%20"/>
+                        </filtermapper>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-test,-init-macrodef-test-debug,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: CoreJavaProject was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml orm.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <touch file="${tmp.manifest.file}" verbose="false"/>
+    </target>
+    <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
+        <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+        <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="Main-Class" value="${main.class}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="Profile" value="${javac.profile}"/>
+        </manifest>
+    </target>
+    <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+splashscreen.available" name="-do-jar-set-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <manifest file="${tmp.manifest.file}" mode="update">
+            <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+        </manifest>
+    </target>
+    <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
+        <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
+        <echo level="info">To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo level="info">java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
+        <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
+            <isset property="main.class.available"/>
+        </condition>
+        <condition else="debug" property="jar.usage.level" value="info">
+            <isset property="main.class.available"/>
+        </condition>
+        <echo level="${jar.usage.level}" message="${jar.usage.message}"/>
+    </target>
+    <target depends="-do-jar-copylibs" if="do.archive" name="-do-jar-delete-manifest">
+        <delete>
+            <fileset file="${tmp.manifest.file}"/>
+        </delete>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-jar,-do-jar-delete-manifest" name="-do-jar-without-libraries"/>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-do-jar-copylibs,-do-jar-delete-manifest" name="-do-jar-with-libraries"/>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
+    <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                =================
+                PROFILING SECTION
+                =================
+            -->
+    <!--
+                pre NB7.2 profiler integration
+            -->
+    <target depends="profile-init,compile" description="Profile a project in the IDE." if="profiler.info.jvmargs.agent" name="-profile-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile/>
+    </target>
+    <target depends="profile-init,compile-single" description="Profile a selected class in the IDE." if="profiler.info.jvmargs.agent" name="-profile-single-pre72">
+        <fail unless="profile.class">Must select one file in the IDE or set profile.class</fail>
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="${profile.class}"/>
+    </target>
+    <target depends="profile-init,compile-single" if="profiler.info.jvmargs.agent" name="-profile-applet-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <profile classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </profile>
+    </target>
+    <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbprofiledirect>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+        </nbprofiledirect>
+        <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+            <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+            <jvmarg value="${profiler.info.jvmargs.agent}"/>
+            <jvmarg line="${profiler.info.jvmargs}"/>
+            <test name="${profile.class}"/>
+            <classpath>
+                <path path="${run.test.classpath}"/>
+            </classpath>
+            <syspropertyset>
+                <propertyref prefix="test-sys-prop."/>
+                <mapper from="test-sys-prop.*" to="*" type="glob"/>
+            </syspropertyset>
+            <formatter type="brief" usefile="false"/>
+            <formatter type="xml"/>
+        </junit>
+    </target>
+    <!--
+                end of pre NB72 profiling section
+            -->
+    <target if="netbeans.home" name="-profile-check">
+        <condition property="profiler.configured">
+            <or>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-agentpath:"/>
+                <contains casesensitive="true" string="${run.jvmargs.ide}" substring="-javaagent:"/>
+            </or>
+        </condition>
+    </target>
+    <target depends="-profile-check,-profile-pre72" description="Profile a project in the IDE." if="profiler.configured" name="profile" unless="profiler.info.jvmargs.agent">
+        <startprofiler/>
+        <antcall target="run"/>
+    </target>
+    <target depends="-profile-check,-profile-single-pre72" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-single" unless="profiler.info.jvmargs.agent">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcall target="run-single"/>
+    </target>
+    <target depends="-profile-test-single-pre72" description="Profile a selected test in the IDE." name="profile-test-single"/>
+    <target depends="-profile-check" description="Profile a selected test in the IDE." if="profiler.configured" name="profile-test" unless="profiler.info.jvmargs">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <startprofiler/>
+        <antcall target="test-single"/>
+    </target>
+    <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <startprofiler/>
+        <antcal target="run-test-with-main"/>
+    </target>
+    <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <startprofiler/>
+        <antcall target="run-applet"/>
+    </target>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <condition else="" property="javadoc.endorsed.classpath.cmd.line.arg" value="-J${endorsed.classpath.cmd.line.arg}">
+            <and>
+                <isset property="endorsed.classpath.cmd.line.arg"/>
+                <not>
+                    <equals arg1="${endorsed.classpath.cmd.line.arg}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <condition else="" property="bug5101868workaround" value="*.java">
+            <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
+        </condition>
+        <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${bug5101868workaround},${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+                <exclude name="*.java"/>
+            </fileset>
+            <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                TEST COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                TEST EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+        <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test excludes="" includes="${javac.includes}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+    <!--
+                =======================
+                TEST DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testincludes="${javac.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-debug-start-debuggee-test-method">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+        <j2seproject3:test-debug excludes="" includes="${javac.includes}" testClass="${test.class}" testMethod="${test.method}" testincludes="${test.class}" testmethods="${test.method}"/>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: CoreJavaProject was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <and>
+                <not>
+                    <isset property="already.built.${call.subproject}"/>
+                </not>
+                <available file="${call.script}"/>
+            </and>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>
diff --git a/LibraryMangement/nbproject/genfiles.properties b/LibraryMangement/nbproject/genfiles.properties
new file mode 100644
index 00000000..39520702
--- /dev/null
+++ b/LibraryMangement/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=33915024
+build.xml.script.CRC32=22db7173
+build.xml.stylesheet.CRC32=8064a381@1.75.2.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=33915024
+nbproject/build-impl.xml.script.CRC32=a6999f54
+nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.2.48
diff --git a/LibraryMangement/nbproject/private/private.properties b/LibraryMangement/nbproject/private/private.properties
new file mode 100644
index 00000000..f0d1b6c4
--- /dev/null
+++ b/LibraryMangement/nbproject/private/private.properties
@@ -0,0 +1,2 @@
+compile.on.save=true
+user.properties.file=C:\\Users\\vjasuja.ORADEV\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties
diff --git a/LibraryMangement/nbproject/private/private.xml b/LibraryMangement/nbproject/private/private.xml
new file mode 100644
index 00000000..e542b2d3
--- /dev/null
+++ b/LibraryMangement/nbproject/private/private.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+        <group>
+            <file>file:/D:/Intellipaat/Core%20Java/CoursePrograms/Temp/CoreJavaProject/src/DBProperties</file>
+            <file>file:/D:/Intellipaat/Core%20Java/CoursePrograms/Temp/CoreJavaProject/src/UserMenu.java</file>
+            <file>file:/D:/Intellipaat/Core%20Java/CoursePrograms/Temp/CoreJavaProject/src/AddBookMenu.java</file>
+            <file>file:/D:/Intellipaat/Core%20Java/CoursePrograms/Temp/CoreJavaProject/src/AddMemberMenu.java</file>
+            <file>file:/D:/Intellipaat/Core%20Java/CoursePrograms/Temp/CoreJavaProject/src/LibFunctions.java</file>
+        </group>
+    </open-files>
+</project-private>
diff --git a/LibraryMangement/nbproject/project.properties b/LibraryMangement/nbproject/project.properties
new file mode 100644
index 00000000..765fa0ee
--- /dev/null
+++ b/LibraryMangement/nbproject/project.properties
@@ -0,0 +1,75 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processor.options=
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# Files in build.classes.dir which should be excluded from distribution jar
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/CoreJavaProject.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+excludes=
+file.reference.ojdbc6.jar=C:\\Users\\vjasuja.ORADEV\\Downloads\\ojdbc6.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${file.reference.ojdbc6.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+    ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+javac.test.processorpath=\
+    ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/LibraryMangement/nbproject/project.xml b/LibraryMangement/nbproject/project.xml
new file mode 100644
index 00000000..7f75b0f2
--- /dev/null
+++ b/LibraryMangement/nbproject/project.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>CoreJavaProject</name>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots>
+                <root id="test.src.dir"/>
+            </test-roots>
+        </data>
+    </configuration>
+</project>
diff --git a/LibraryMangement/src/AddBookMenu.java b/LibraryMangement/src/AddBookMenu.java
new file mode 100644
index 00000000..5053844e
--- /dev/null
+++ b/LibraryMangement/src/AddBookMenu.java
@@ -0,0 +1,70 @@
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.Scanner;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author testuser
+ */
+public class AddBookMenu {
+
+    public static void addBookMenu() {
+        System.out.println("Reached the add book menu");
+        Book b = new Book();
+        Scanner sc = new Scanner(System.in);
+        int addStatus = 0;
+
+        while (addStatus == 0) {
+            try {
+                System.out.println("Enter the isbn code");
+                b.setIsbnCode(sc.nextLine().toString());
+                System.out.println("Enter the book name");
+                b.setBookName(sc.nextLine().toString());
+                System.out.println("Enter the book desc");
+                b.setBookDesc(sc.nextLine().toString());
+                System.out.println("Enter the author name");
+                b.setAuthorName(sc.nextLine().toString());
+                System.out.println("Enter the subject ");
+                b.setSubjectName(sc.nextLine().toString());
+                System.out.println("Enter the units available");
+                b.setUnitsAvailable(Integer.parseInt(sc.nextLine().toString()));
+
+                addBook(b);
+                addStatus = 1;
+                
+            } catch (Exception e) {
+                addStatus=0;
+            }
+
+        }
+
+    }
+
+    public static void addBook(Book b) { 
+        System.out.println("Reached inside addBook for book "+b.getIsbnCode());
+        Connection conn = LibUtil.getConnection();
+        try {
+            Statement stmt = conn.createStatement();
+            int k = stmt.executeUpdate("insert into books values ('"+b.getIsbnCode()+"','"+b.getBookName()+"','"+b.getBookDesc()+"',"
+                    + "'"+b.getAuthorName()+"','"+b.getSubjectName()+"',"+b.getUnitsAvailable()+")");
+            if(k>0){
+                System.out.println("Added Book successfully");
+                conn.commit();
+            }else{
+                conn.rollback();
+            }
+            conn.close();
+        } catch (Exception e) {
+        }
+        
+        
+
+    }
+
+}
diff --git a/LibraryMangement/src/AddMemberMenu.java b/LibraryMangement/src/AddMemberMenu.java
new file mode 100644
index 00000000..3f29b1fc
--- /dev/null
+++ b/LibraryMangement/src/AddMemberMenu.java
@@ -0,0 +1,61 @@
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.util.Scanner;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author testuser
+ */
+public class AddMemberMenu {
+
+    public static void addMemberMenu() {
+        System.out.println("Reached the add member menu");
+        Member m = new Member();
+        Scanner sc = new Scanner(System.in);
+        int addStatus = 0;
+
+        while (addStatus == 0) {
+            try {
+                System.out.println("Enter the member id ");
+                m.setMemberId(Integer.parseInt(sc.nextLine().toString()));
+                System.out.println("Enter the member name");
+                m.setMemberName(sc.nextLine().toString());
+                
+                addMember(m);
+                addStatus = 1;
+                
+            } catch (Exception e) {
+                addStatus=0;
+            }
+
+        }
+
+    }
+
+    public static void addMember(Member m) { 
+        System.out.println("Reached inside add member for member "+m.getMemberId());
+        Connection conn = LibUtil.getConnection();
+        try {
+            Statement stmt = conn.createStatement();
+            int k = stmt.executeUpdate("insert into members values ("+m.getMemberId()+",'"+m.getMemberName()+"',sysdate)");
+            if(k>0){
+                System.out.println("Added Member successfully");
+                conn.commit();
+            }else{
+                conn.rollback();
+            }
+            conn.close();
+        } catch (Exception e) {
+        }
+        
+        
+
+    }
+
+}
diff --git a/LibraryMangement/src/Book.java b/LibraryMangement/src/Book.java
new file mode 100644
index 00000000..efd3d7aa
--- /dev/null
+++ b/LibraryMangement/src/Book.java
@@ -0,0 +1,80 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/**
+ *
+ * @author testuser
+ */
+public class Book {
+    private String isbnCode;
+    private String bookName;
+    private String bookDesc;
+    private String authorName;
+    private String subjectName;
+    private Integer unitsAvailable;
+    
+    public Book(){
+        
+    }
+    public Book(String isbnCode, String bookName, String bookDesc, String authorName, String subjectName, Integer unitsAvailable) {
+        this.isbnCode = isbnCode;
+        this.bookName = bookName;
+        this.bookDesc = bookDesc;
+        this.authorName = authorName;
+        this.subjectName = subjectName;
+        this.unitsAvailable = unitsAvailable;
+    }
+
+    public Integer getUnitsAvailable() {
+        return unitsAvailable;
+    }
+
+    public void setUnitsAvailable(Integer unitsAvailable) {
+        this.unitsAvailable = unitsAvailable;
+    }
+
+    public String getIsbnCode() {
+        return isbnCode;
+    }
+
+    public void setIsbnCode(String isbnCode) {
+        this.isbnCode = isbnCode;
+    }
+
+    public String getBookName() {
+        return bookName;
+    }
+
+    public void setBookName(String bookName) {
+        this.bookName = bookName;
+    }
+
+    public String getBookDesc() {
+        return bookDesc;
+    }
+
+    public void setBookDesc(String bookDesc) {
+        this.bookDesc = bookDesc;
+    }
+
+    public String getAuthorName() {
+        return authorName;
+    }
+
+    public void setAuthorName(String authorName) {
+        this.authorName = authorName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+
+}
diff --git a/LibraryMangement/src/DBProperties b/LibraryMangement/src/DBProperties
new file mode 100644
index 00000000..b5b8df4b
--- /dev/null
+++ b/LibraryMangement/src/DBProperties
@@ -0,0 +1,4 @@
+DBDriver=oracle.jdbc.driver.OracleDriver
+DBName=jdbc:oracle:thin:@localhost:1522:xe
+User=scott
+Password= tiger
\ No newline at end of file
diff --git a/LibraryMangement/src/LibFunctions.java b/LibraryMangement/src/LibFunctions.java
new file mode 100644
index 00000000..4f025c84
--- /dev/null
+++ b/LibraryMangement/src/LibFunctions.java
@@ -0,0 +1,122 @@
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.Scanner;
+
+public class LibFunctions {
+
+    public static void callIssueMenu() {
+        System.out.println("Reached inside issue book menu");
+        Member m = new Member();
+        Book b = new Book();
+        Scanner sc = new Scanner(System.in);
+        int addStatus = 0;
+
+        while (addStatus == 0) {
+            try {
+                System.out.println("Enter the member id ");
+                m.setMemberId(Integer.parseInt(sc.nextLine().toString()));
+                System.out.println("Enter the isbn code ");
+                b.setIsbnCode(sc.nextLine().toString());
+                issueBook(m, b);
+                addStatus = 1;
+
+            } catch (Exception e) {
+                addStatus = 0;
+            }
+
+        }
+
+    }
+    
+
+    public static void issueBook(Member m, Book b) {
+        Connection conn = LibUtil.getConnection();
+        try {
+            Statement stmt = conn.createStatement();
+            ResultSet rs = null;
+            String qry = "select m.member_id, b.isbn_code, mbr.rec_id from members m,books b,member_book_record mbr\n"
+                    + "where m.member_id= " + m.getMemberId() + " \n"
+                    + "and b.isbn_code = '" + b.getIsbnCode() + "' \n"
+                    + "and m.member_id=mbr.member_id\n"
+                    + "and b.isbn_code=mbr.isbn_code and mbr.dor is null ";
+            rs=stmt.executeQuery(qry);
+            if (rs.next()) {
+                System.out.println("The book is already issued and cannot be issued again");
+            } else {
+                int k = stmt.executeUpdate("insert into member_book_record values(lib_seq.nextval," + m.getMemberId() + ",'" + b.getIsbnCode() + "',sysdate,null)");
+                if(k > 0){
+                    k = stmt.executeUpdate("update books set units_available= (units_available-1) where isbn_code = '"+ b.getIsbnCode() +"' "); 
+                    conn.commit();
+                    System.out.println("The book is issued successfully");
+                }else{
+                    conn.rollback();
+                }
+
+            }
+            conn.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    public static void callReturnMenu() {
+        System.out.println("Reached inside return book menu");
+        Member m = new Member();
+        Book b = new Book();
+        Scanner sc = new Scanner(System.in);
+        int addStatus = 0;
+
+        while (addStatus == 0) {
+            try {
+                System.out.println("Enter the member id ");
+                m.setMemberId(Integer.parseInt(sc.nextLine().toString()));
+                System.out.println("Enter the isbn code ");
+                b.setIsbnCode(sc.nextLine().toString());
+                returnBook(m, b);
+                addStatus = 1;
+
+            } catch (Exception e) {
+                addStatus = 0;
+            }
+
+        }
+
+    }
+    
+    public static void returnBook(Member m, Book b) {
+        Connection conn = LibUtil.getConnection();
+        try {
+            Statement stmt = conn.createStatement();
+            ResultSet rs = null;
+            String qry = "select m.member_id, b.isbn_code, mbr.rec_id from members m,books b,member_book_record mbr\n"
+                    + "where m.member_id= " + m.getMemberId() + " \n"
+                    + "and b.isbn_code = '" + b.getIsbnCode() + "' \n"
+                    + "and m.member_id=mbr.member_id\n"
+                    + "and b.isbn_code=mbr.isbn_code and mbr.dor is null ";
+            rs=stmt.executeQuery(qry);
+            if (rs.next()) {
+                Integer recId= rs.getInt(3);
+                System.out.println("The book is already issued and starting the process to return ");
+                int k = stmt.executeUpdate("update books set units_available= (units_available+1) where isbn_code = '"+ b.getIsbnCode() +"' "); 
+                if(k > 0){
+                    k = stmt.executeUpdate("update member_book_record set dor= sysdate where rec_id = "+ recId +" "); 
+                    conn.commit();
+                    System.out.println("The book is returned successfully");
+                }else{
+                    conn.rollback();
+                }
+
+            } else{
+                System.out.println("This book is not issued for the user");
+            }
+            conn.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+        
+        
+}
diff --git a/LibraryMangement/src/LibUtil.java b/LibraryMangement/src/LibUtil.java
new file mode 100644
index 00000000..85748ccc
--- /dev/null
+++ b/LibraryMangement/src/LibUtil.java
@@ -0,0 +1,40 @@
+
+import java.io.FileInputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.util.Properties;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/**
+ *
+ * @author testuser
+ */
+public class LibUtil {
+    public static Connection getConnection() {
+        Connection conn = null;
+        try {
+            Properties prop = new Properties();
+            FileInputStream in = new FileInputStream("src/DBProperties");
+            prop.load(in);
+            
+            String driverName= prop.getProperty("DBDriver");
+            Class.forName(driverName);
+            
+            String dbName,user,password;
+            dbName= prop.getProperty("DBName");
+            user = prop.getProperty("User");
+            password= prop.getProperty("Password");
+            
+            conn= DriverManager.getConnection(dbName, user, password);
+            return conn;
+        } catch (Exception e) {
+        }
+        return conn;
+        
+    }
+}
diff --git a/LibraryMangement/src/Member.java b/LibraryMangement/src/Member.java
new file mode 100644
index 00000000..69a51340
--- /dev/null
+++ b/LibraryMangement/src/Member.java
@@ -0,0 +1,53 @@
+
+import java.sql.Date;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author testuser
+ */
+public class Member {
+
+    private Integer memberId;
+    private String memberName;
+    private Date dateOfJoining;
+
+    public Member() {
+
+    }
+
+    public Member(Integer memberId, String memberName, Date dateOfJoining) {
+        this.memberId = memberId;
+        this.memberName = memberName;
+        this.dateOfJoining = dateOfJoining;
+    }
+
+    public Date getDateOfJoining() {
+        return dateOfJoining;
+    }
+
+    public void setDateOfJoining(Date dateOfJoining) {
+        this.dateOfJoining = dateOfJoining;
+    }
+
+    public Integer getMemberId() {
+        return memberId;
+    }
+
+    public void setMemberId(Integer memberId) {
+        this.memberId = memberId;
+    }
+
+    public String getMemberName() {
+        return memberName;
+    }
+
+    public void setMemberName(String memberName) {
+        this.memberName = memberName;
+    }
+
+}
diff --git a/LibraryMangement/src/UserMenu.java b/LibraryMangement/src/UserMenu.java
new file mode 100644
index 00000000..df752999
--- /dev/null
+++ b/LibraryMangement/src/UserMenu.java
@@ -0,0 +1,64 @@
+
+import java.util.Scanner;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/**
+ *
+ * @author testuser
+ */
+public class UserMenu {
+    public static void main(String[] args) {
+        String input="";
+        Scanner sc = new Scanner(System.in);
+        
+        while(input != "5"){
+            System.out.println("---------------------------------------------------------");
+            System.out.println("---------------------------------------------------------");
+            System.out.println("---------------------------------------------------------");
+
+            System.out.println("Select the following options");
+            System.out.println("Enter 1 for adding a book");
+            System.out.println("Enter 2 for adding a member");
+            System.out.println("Enter 3 for issuing a book ");
+            System.out.println("Enter 4 for returning  a book ");
+            System.out.println("Enter 5 to exit");
+            input = processUserInput(sc.nextLine().toString());
+            
+        }
+    }
+    public static String processUserInput(String in) {
+        String retVal="5";
+        switch(in){
+            case "1":
+                System.out.println("---------------------------------------------------------");
+                System.out.println("You have selected option 1 to add a book");
+                AddBookMenu.addBookMenu();
+                return "1";
+            case "2":
+                System.out.println("---------------------------------------------------------");
+                System.out.println("You have selected option 2 to add a member");
+                AddMemberMenu.addMemberMenu();
+                return "2";
+            case "3":
+                System.out.println("---------------------------------------------------------");
+                System.out.println("You have selected option 3 to issue a book");
+                LibFunctions.callIssueMenu();
+                return "3";
+            case "4":
+                System.out.println("---------------------------------------------------------");
+                System.out.println("You have selected option 4 to return a book");
+                LibFunctions.callReturnMenu();
+                return "4";
+            default:
+                System.out.println("---------------------------------------------------------");
+                System.out.println("Thanks for working on this!!");
+                return "5";
+        }
+        
+    }
+}
diff --git a/ListScanner/readme.md b/ListScanner/readme.md
new file mode 100644
index 00000000..fb0825bb
--- /dev/null
+++ b/ListScanner/readme.md
@@ -0,0 +1,23 @@
+# List Scanner (Java)
+
+This is a simple console-based List Scanner application implemented in Java.
+
+## How to Use
+
+1. Compile and run `Main.java`.
+2. Choose options to manage tasks in your To-Do List.
+3. Follow the on-screen instructions to add, list, mark as completed, or remove tasks.
+
+## Features
+
+- Add new tasks with descriptions.
+- List all tasks in the To-Do List.
+- Mark tasks as completed.
+- Remove tasks from the list.
+- Interactive console interface.
+
+## Technologies Used
+
+- Java
+
+Feel free to modify the code to add more features or extend its functionality.
diff --git a/ListScanner/scanner.java b/ListScanner/scanner.java
new file mode 100644
index 00000000..80aba735
--- /dev/null
+++ b/ListScanner/scanner.java
@@ -0,0 +1,127 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class ToDoListApp {
+    private static ArrayList<Task> taskList = new ArrayList<>();
+    private static int taskIdCounter = 1;
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("To-Do List Application");
+            System.out.println("1. Add Task");
+            System.out.println("2. List Tasks");
+            System.out.println("3. Mark Task as Completed");
+            System.out.println("4. Remove Task");
+            System.out.println("5. Exit");
+            System.out.print("Enter your choice: ");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline
+
+            switch (choice) {
+                case 1:
+                    addTask(scanner);
+                    break;
+                case 2:
+                    listTasks();
+                    break;
+                case 3:
+                    markTaskAsCompleted(scanner);
+                    break;
+                case 4:
+                    removeTask(scanner);
+                    break;
+                case 5:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    private static void addTask(Scanner scanner) {
+        System.out.print("Enter the task description: ");
+        String description = scanner.nextLine();
+        Task task = new Task(taskIdCounter, description);
+        taskList.add(task);
+        taskIdCounter++;
+        System.out.println("Task added successfully!");
+    }
+
+    private static void listTasks() {
+        if (taskList.isEmpty()) {
+            System.out.println("No tasks to display.");
+        } else {
+            System.out.println("Tasks:");
+            for (Task task : taskList) {
+                System.out.println(task);
+            }
+        }
+    }
+
+    private static void markTaskAsCompleted(Scanner scanner) {
+        System.out.print("Enter the task ID to mark as completed: ");
+        int taskId = scanner.nextInt();
+        scanner.nextLine(); // Consume the newline
+
+        for (Task task : taskList) {
+            if (task.getId() == taskId) {
+                task.setCompleted(true);
+                System.out.println("Task marked as completed.");
+                return;
+            }
+        }
+        System.out.println("Task not found.");
+    }
+
+    private static void removeTask(Scanner scanner) {
+        System.out.print("Enter the task ID to remove: ");
+        int taskId = scanner.nextInt();
+        scanner.nextLine(); // Consume the newline
+
+        for (Task task : taskList) {
+            if (task.getId() == taskId) {
+                taskList.remove(task);
+                System.out.println("Task removed.");
+                return;
+            }
+        }
+        System.out.println("Task not found.");
+    }
+}
+
+class Task {
+    private int id;
+    private String description;
+    private boolean completed;
+
+    public Task(int id, String description) {
+        this.id = id;
+        this.description = description;
+        this.completed = false;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public boolean isCompleted() {
+        return completed;
+    }
+
+    public void setCompleted(boolean completed) {
+        this.completed = completed;
+    }
+
+    @Override
+    public String toString() {
+        return id + ". [" + (completed ? "X" : " ") + "] " + description;
+    }
+}
diff --git a/Lost and found application/.project b/Lost and found application/.project
new file mode 100644
index 00000000..3e41951e
--- /dev/null
+++ b/Lost and found application/.project	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BU FINDER</name>
+	<comment>Project Lost and found application created by Buildship.</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
+	</natures>
+</projectDescription>
diff --git a/Lost and found application/.settings/org.eclipse.buildship.core.prefs b/Lost and found application/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 00000000..1c0676f3
--- /dev/null
+++ b/Lost and found application/.settings/org.eclipse.buildship.core.prefs	
@@ -0,0 +1,13 @@
+arguments=--init-script /home/himanshu/.config/Code/User/globalStorage/redhat.java/1.23.0/config_linux/org.eclipse.osgi/55/0/.cp/gradle/init/init.gradle --init-script /home/himanshu/.config/Code/User/globalStorage/redhat.java/1.23.0/config_linux/org.eclipse.osgi/55/0/.cp/gradle/protobuf/init.gradle
+auto.sync=false
+build.scans.enabled=false
+connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
+connection.project.dir=
+eclipse.preferences.version=1
+gradle.user.home=
+java.home=/usr/lib/jvm/java-17-amazon-corretto
+jvm.arguments=
+offline.mode=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/Lost and found application/app/.classpath b/Lost and found application/app/.classpath
new file mode 100644
index 00000000..bbe97e50
--- /dev/null
+++ b/Lost and found application/app/.classpath	
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17/"/>
+	<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
+	<classpathentry kind="output" path="bin/default"/>
+</classpath>
diff --git a/Lost and found application/app/.project b/Lost and found application/app/.project
new file mode 100644
index 00000000..ac485d7c
--- /dev/null
+++ b/Lost and found application/app/.project	
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>app</name>
+	<comment>Project app created by Buildship.</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
+	</natures>
+</projectDescription>
diff --git a/Lost and found application/app/.settings/org.eclipse.buildship.core.prefs b/Lost and found application/app/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 00000000..b1886adb
--- /dev/null
+++ b/Lost and found application/app/.settings/org.eclipse.buildship.core.prefs	
@@ -0,0 +1,2 @@
+connection.project.dir=..
+eclipse.preferences.version=1
diff --git a/Lucas Numbers/lucas_numbers.java b/Lucas Numbers/lucas_numbers.java
new file mode 100644
index 00000000..c6d70e6a
--- /dev/null
+++ b/Lucas Numbers/lucas_numbers.java	
@@ -0,0 +1,18 @@
+public class LucasNumbers {
+    public static void main(String[] args) {
+        int n = 10; // Number of Lucas numbers to generate
+        int[] lucasNumbers = new int[n];
+        
+        lucasNumbers[0] = 2; // The first Lucas number
+        lucasNumbers[1] = 1; // The second Lucas number
+
+        for (int i = 2; i < n; i++) {
+            lucasNumbers[i] = lucasNumbers[i - 1] + lucasNumbers[i - 2];
+        }
+
+        System.out.println("Lucas Numbers:");
+        for (int i = 0; i < n; i++) {
+            System.out.print(lucasNumbers[i] + " ");
+        }
+    }
+}
diff --git a/MEME GENERATOR/index.html b/MEME GENERATOR/index.html
new file mode 100644
index 00000000..9b1cb881
--- /dev/null
+++ b/MEME GENERATOR/index.html	
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <script src="./sctick.js"></script>
+    <link rel="stylesheet" href="style.css" />
+    <title>Document</title>
+  </head>
+  <body class="main_body">
+    
+    <div class="center">
+      <div>
+        <img id="myImg" />
+      </div>
+      <div class="div_btn">
+        <button class="btn" onclick="myfunc()">Next Meme</button>
+      </div>
+      <button class="btn" a href="javascript:void(0)" onclick="share()">Compartilhar</a>
+      </button> 
+    </div>
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/MEME GENERATOR/strike.js b/MEME GENERATOR/strike.js
new file mode 100644
index 00000000..4cc5bfef
--- /dev/null
+++ b/MEME GENERATOR/strike.js	
@@ -0,0 +1,29 @@
+const kt = () => {
+    fetch("https://meme-api.herokuapp.com/gimme")
+      .then((data) => data.json())
+      .then((data_val) => {
+        const u_data = data_val.url;
+        document.getElementById("myImg").src = u_data;
+        console.log(u_data);
+      });
+  };
+  kt();
+  
+  //function to refresh the page every 5 seconds
+  const myfunc = () =>{
+    kt();
+  }
+  
+  
+  //function to share the generated meme on social networks
+  function share(){
+      if (navigator.share !== undefined) {
+          navigator.share({
+              title: 'Meme Genrator',
+              text: 'meme generator',
+              url: 'u_data',
+          })
+          .then(() => console.log('Successful share'))
+          .catch((error) => console.log('Error sharing', error));
+      }
+  }
\ No newline at end of file
diff --git a/MEME GENERATOR/style.css b/MEME GENERATOR/style.css
new file mode 100644
index 00000000..de5a8ea0
--- /dev/null
+++ b/MEME GENERATOR/style.css	
@@ -0,0 +1,36 @@
+* {
+    margin: 0;
+    padding: 0;
+  }
+  .main_body{
+   background-color: rgb(90, 92, 207);
+  }
+  #myImg {
+    height: 400px;
+    width: 500px;
+  }
+  .center {
+    position: absolute;
+    left: 50%;
+    top: 50%;
+    transform: translate(-50%, -50%);
+    border: 5px solid #FFFF00;
+    padding: 10px;
+  }
+  .div_btn{
+    width: 100%;
+    display: flex;
+    justify-content: center;
+  }
+  .btn{
+    background-color: #4CAF50;
+    border: none;
+    color: white;
+    padding: 15px 32px;
+    text-align: center;
+    text-decoration: none;
+    display: inline-block;
+    font-size: 25px;
+    margin: 4px 2px;
+    cursor: pointer;
+  }
\ No newline at end of file
diff --git a/Main.class b/Main.class
new file mode 100644
index 00000000..4717f9d9
Binary files /dev/null and b/Main.class differ
diff --git a/Matrix_add.java b/Matrix_add.java
new file mode 100644
index 00000000..7bcbf9c9
--- /dev/null
+++ b/Matrix_add.java
@@ -0,0 +1,38 @@
+import java.util.*;
+public class matrixAdd {
+	public static void main(String[] args) {
+		int m,n;
+		Scanner s = new Scanner(System.in);
+		System.out.println("Enter the rows of matrix: ");
+		m = s.nextInt();
+		System.out.println("Enter the columns of matrix: ");
+		n = s.nextInt();
+		
+		int a[][] = new int[m][n];
+		int b[][] = new int[m][n];
+		int c[][] = new int[m][n];
+		
+		System.out.println("Enter the elements of 1st matrix ");
+		 for(int i=0;i<m;i++){
+	            for(int j=0;j<n;j++){
+	                a[i][j]=s.nextInt();
+	            }
+	        }
+		 
+		 System.out.println("Enter the elements of 2nd matrix ");
+		 for(int i=0;i<m;i++){
+	            for(int j=0;j<n;j++){
+	                b[i][j]=s.nextInt();
+	            }
+	        }
+		 System.out.println("The addition of the above matrices is: ");		 
+		 for(int i=0;i<m;i++){
+	            for(int j=0;j<n;j++){
+	                c[i][j]=a[i][j]+b[i][j];
+	                System.out.print(c[i][j]+ " ");
+	            }
+	            System.out.println();   
+	        }
+		 	
+	}
+}
diff --git a/Maze Game Project b/Maze Game Project
new file mode 100644
index 00000000..4e3f9beb
--- /dev/null
+++ b/Maze Game Project	
@@ -0,0 +1,96 @@
+import java.util.Scanner;
+
+public class MazeGame {
+
+    private static final int WALL = '#';
+    private static final int PLAYER = 'P';
+    private static final int EXIT = 'X';
+
+    private static char[][] maze;
+    private static int playerRow;
+    private static int playerCol;
+
+    public static void main(String[] args) {
+        // Load the maze
+        maze = new char[][]{{'#', '#', '#', '#', '#'},
+                            {'#', ' ', ' ', ' ', '#'},
+                            {'#', ' ', '#', '#', '#'},
+                            {'#', ' ', ' ', ' ', '#'},
+                            {'#', '#', '#', '#', '#'}};
+
+        // Initialize the player position
+        playerRow = 1;
+        playerCol = 1;
+
+        // Play the game
+        while (true) {
+            // Print the maze
+            printMaze();
+
+            // Get the player's move
+            Scanner scanner = new Scanner(System.in);
+            char move = scanner.next().charAt(0);
+
+            // Move the player
+            switch (move) {
+                case 'w':
+                    moveUp();
+                    break;
+                case 'a':
+                    moveLeft();
+                    break;
+                case 's':
+                    moveDown();
+                    break;
+                case 'd':
+                    moveRight();
+                    break;
+            }
+
+            // Check if the player has won
+            if (maze[playerRow][playerCol] == EXIT) {
+                System.out.println("You won!");
+                break;
+            }
+
+            // Check if the player has hit a wall
+            if (maze[playerRow][playerCol] == WALL) {
+                System.out.println("You hit a wall!");
+                break;
+            }
+        }
+    }
+
+    private static void printMaze() {
+        for (int i = 0; i < maze.length; i++) {
+            for (int j = 0; j < maze[0].length; j++) {
+                System.out.print(maze[i][j]);
+            }
+            System.out.println();
+        }
+    }
+
+    private static void moveUp() {
+        if (playerRow > 0) {
+            playerRow--;
+        }
+    }
+
+    private static void moveLeft() {
+        if (playerCol > 0) {
+            playerCol--;
+        }
+    }
+
+    private static void moveDown() {
+        if (playerRow < maze.length - 1) {
+            playerRow++;
+        }
+    }
+
+    private static void moveRight() {
+        if (playerCol < maze[0].length - 1) {
+            playerCol++;
+        }
+    }
+}
diff --git a/Median_of_Two_Sorted_Arrays.java b/Median_of_Two_Sorted_Arrays.java
new file mode 100644
index 00000000..a23d5cd3
--- /dev/null
+++ b/Median_of_Two_Sorted_Arrays.java
@@ -0,0 +1,35 @@
+import java.util.Arrays;
+
+class Solution {
+    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
+        // Get the sizes of both input arrays.
+        int n = nums1.length;
+        int m = nums2.length;
+
+        // Merge the arrays into a single sorted array.
+        int[] merged = new int[n + m];
+        int k = 0;
+        for (int i = 0; i < n; i++) {
+            merged[k++] = nums1[i];
+        }
+        for (int i = 0; i < m; i++) {
+            merged[k++] = nums2[i];
+        }
+
+        // Sort the merged array.
+        Arrays.sort(merged);
+
+        // Calculate the total number of elements in the merged array.
+        int total = merged.length;
+
+        if (total % 2 == 1) {
+            // If the total number of elements is odd, return the middle element as the median.
+            return (double) merged[total / 2];
+        } else {
+            // If the total number of elements is even, calculate the average of the two middle elements as the median.
+            int middle1 = merged[total / 2 - 1];
+            int middle2 = merged[total / 2];
+            return ((double) middle1 + (double) middle2) / 2.0;
+        }
+    }
+}
diff --git a/MedicalStore.java b/MedicalStore.java
new file mode 100644
index 00000000..1d25f961
--- /dev/null
+++ b/MedicalStore.java
@@ -0,0 +1,111 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+public class MedicalStore {
+    public static class Product {
+        private int id;
+        private String name;
+        private double price;
+        private int quantity;
+
+        public Product(int id, String name, double price, int quantity) {
+            this.id = id;
+            this.name = name;
+            this.price = price;
+            this.quantity = quantity;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public double getPrice() {
+            return price;
+        }
+
+        public int getQuantity() {
+            return quantity;
+        }
+
+        public void setQuantity(int quantity) {
+            this.quantity = quantity;
+        }
+    }
+
+    private List<Product> products;
+
+    public MedicalStore() {
+        products = new ArrayList<>();
+    }
+
+    public void addProduct(Product product) {
+        products.add(product);
+    }
+
+    public void listProducts() {
+        System.out.println("Products available:");
+        for (Product product : products) {
+            System.out.println(product.getId() + ". " + product.getName() + " - $" + product.getPrice());
+        }
+    }
+
+    public Product findProductById(int id) {
+        for (Product product : products) {
+            if (product.getId() == id) {
+                return product;
+            }
+        }
+        return null;
+    }
+
+    public void sellProduct(int productId, int quantity) {
+        Product product = findProductById(productId);
+        if (product != null && product.getQuantity() >= quantity) {
+            product.setQuantity(product.getQuantity() - quantity);
+            System.out.println(quantity + " " + product.getName() + " sold for $" + (product.getPrice() * quantity));
+        } else {
+            System.out.println("Product not available or insufficient quantity.");
+        }
+    }
+
+    public static void main(String[] args) {
+        MedicalStore store = new MedicalStore();
+        store.addProduct(new Product(1, "Painkiller", 5.99, 50));
+        store.addProduct(new Product(2, "Bandages", 3.49, 100));
+        store.addProduct(new Product(3, "Vitamins", 8.99, 30);
+
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("\n1. List Products");
+            System.out.println("2. Sell Product");
+            System.out.println("3. Exit");
+            System.out.print("Select an option: ");
+
+            int choice = scanner.nextInt();
+
+            switch (choice) {
+                case 1:
+                    store.listProducts();
+                    break;
+                case 2:
+                    System.out.print("Enter product ID: ");
+                    int productId = scanner.nextInt();
+                    System.out.print("Enter quantity: ");
+                    int quantity = scanner.nextInt();
+                    store.sellProduct(productId, quantity);
+                    break;
+                case 3:
+                    System.out.println("Exiting...");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid option. Please try again.");
+            }
+        }
+    }
+}
diff --git a/Merge_Sort.java b/Merge_Sort.java
new file mode 100644
index 00000000..a1eda118
--- /dev/null
+++ b/Merge_Sort.java
@@ -0,0 +1,66 @@
+import java.util.*;
+
+class Solution {
+    private static void merge(int[] arr, int low, int mid, int high) {
+        ArrayList<Integer> temp = new ArrayList<>(); // temporary array
+        int left = low;      // starting index of left half of arr
+        int right = mid + 1;   // starting index of right half of arr
+
+        //storing elements in the temporary array in a sorted manner//
+
+        while (left <= mid && right <= high) {
+            if (arr[left] <= arr[right]) {
+                temp.add(arr[left]);
+                left++;
+            } else {
+                temp.add(arr[right]);
+                right++;
+            }
+        }
+
+        // if elements on the left half are still left //
+
+        while (left <= mid) {
+            temp.add(arr[left]);
+            left++;
+        }
+
+        //  if elements on the right half are still left //
+        while (right <= high) {
+            temp.add(arr[right]);
+            right++;
+        }
+
+        // transfering all elements from temporary to arr //
+        for (int i = low; i <= high; i++) {
+            arr[i] = temp.get(i - low);
+        }
+    }
+
+    public static void mergeSort(int[] arr, int low, int high) {
+        if (low >= high) return;
+        int mid = (low + high) / 2 ;
+        mergeSort(arr, low, mid);  // left half
+        mergeSort(arr, mid + 1, high); // right half
+        merge(arr, low, mid, high);  // merging sorted halves
+    }
+}
+public class tUf {
+    public static void main(String args[]) {
+        Scanner sc = new Scanner(System.in);
+        int n = 7;
+        int arr[] = { 9, 4, 7, 6, 3, 1, 5 };
+        System.out.println("Before sorting array: ");
+        for (int i = 0; i < n; i++) {
+            System.out.print(arr[i] + " ");
+        }
+        System.out.println();
+        Solution.mergeSort(arr, 0, n - 1);
+        System.out.println("After sorting array: ");
+        for (int i = 0; i < n; i++) {
+            System.out.print(arr[i] + " ");
+        }
+        System.out.println();
+    }
+
+}
\ No newline at end of file
diff --git a/Merge_Two_Sorted_Linked_List.java b/Merge_Two_Sorted_Linked_List.java
new file mode 100644
index 00000000..9488eb6d
--- /dev/null
+++ b/Merge_Two_Sorted_Linked_List.java
@@ -0,0 +1,35 @@
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ *     int val;
+ *     ListNode next;
+ *     ListNode() {}
+ *     ListNode(int val) { this.val = val; }
+ *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
+ * }
+ */
+class Solution {
+    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
+        if(list1 == null) return list2;
+        if(list2 == null) return list1;
+        if(list1.val>list2.val){
+            ListNode temp = list1;
+            list1 = list2;
+            list2 = temp;
+        }
+        ListNode res = list1;
+        while(list1!=null && list2!=null){
+            ListNode tmp=null;
+            while(list1!=null && list1.val<=list2.val){
+                tmp=list1;
+                list1=list1.next;
+            }
+            tmp.next=list2;
+
+            ListNode temp=list1;
+            list1=list2;
+            list2=temp;
+        }
+        return res;
+    }
+}
\ No newline at end of file
diff --git a/MonthlyQuarterlySalesReport.java b/MonthlyQuarterlySalesReport.java
new file mode 100644
index 00000000..6f7a6737
--- /dev/null
+++ b/MonthlyQuarterlySalesReport.java
@@ -0,0 +1,42 @@
+import java.util.Arrays;
+
+public class MonthlyQuarterlySalesReport {
+
+    public static void main(String[] args) {
+
+        // Create an array to store the monthly sales report
+        int[] monthlySalesReport = new int[]{125000, 93000, 80000, 75000,
+                105000, 120000, 90000, 115000, 84000, 90000, 123000, 150000};
+
+        // Create an array to store the quarterly sales report
+        int[] quarterlySalesReport = new int[4];
+
+        // Calculate the quarterly sales report
+        for (int i = 0; i < 4; i++) {
+            for (int j = i * 3; j < (i + 1) * 3; j++) {
+                quarterlySalesReport[i] += monthlySalesReport[j];
+            }
+        }
+
+        // Display the monthly sales report
+        System.out.println("Monthly sales report:");
+        for (int i = 0; i < monthlySalesReport.length; i++) {
+            System.out.println("Month " + (i + 1) + ": " + monthlySalesReport[i]);
+        }
+
+        // Display the quarterly sales report
+        System.out.println("Quarterly sales report:");
+        for (int i = 0; i < quarterlySalesReport.length; i++) {
+            System.out.println("Quarter " + (i + 1) + ": " + quarterlySalesReport[i]);
+        }
+
+        // Calculate the total sales
+        int totalSales = 0;
+        for (int sale : monthlySalesReport) {
+            totalSales += sale;
+        }
+
+        // Display the total sales
+        System.out.println("Total sales: " + totalSales);
+    }
+}
\ No newline at end of file
diff --git a/Multithread.java b/Multithread.java
new file mode 100644
index 00000000..ba694d90
--- /dev/null
+++ b/Multithread.java
@@ -0,0 +1,25 @@
+class MultithreadExm implements Runnable {  
+    public void run()  
+    {  
+        try {  
+            // It shows that thread is running  
+            System.out.println(  
+                "The thread " + Thread.currentThread().getId()  
+                + " is currently running");  
+        }  
+        catch (Exception e) {  
+            System.out.println("Catching exception");  
+        }  
+    }  
+}  
+class multithrdexp {  
+ public static void main(String[] args)  
+ {  
+     int n = 5; // Number of threads  
+     for (int i = 0; i < n; i++) {  
+         Thread object  
+             = new Thread(new MultithreadExm());  
+         object.start();  
+     }  
+ }  
+}  
diff --git a/Multithreading.java b/Multithreading.java
new file mode 100644
index 00000000..faba7950
--- /dev/null
+++ b/Multithreading.java
@@ -0,0 +1,17 @@
+class MyThread extends Thread {
+    public void run() {
+        for (int i = 1; i <= 5; i++) {
+            System.out.println("Thread " + Thread.currentThread().getId() + " - Count " + i);
+        }
+    }
+}
+
+public class MultiThreadDemo {
+    public static void main(String[] args) {
+        MyThread thread1 = new MyThread();
+        MyThread thread2 = new MyThread();
+
+        thread1.start();
+        thread2.start();
+    }
+}
diff --git a/N-Queen.java b/N-Queen.java
new file mode 100644
index 00000000..f1950585
--- /dev/null
+++ b/N-Queen.java
@@ -0,0 +1,114 @@
+// Java program to solve N Queen Problem using backtracking
+
+public class NQueenProblem {
+	final int N = 4;
+
+	// A utility function to print solution
+	void printSolution(int board[][])
+	{
+		for (int i = 0; i < N; i++) {
+			for (int j = 0; j < N; j++) {
+				if (board[i][j] == 1)
+					System.out.print("Q ");
+				else
+					System.out.print(". ");
+			}
+			System.out.println();
+		}
+	}
+
+	// A utility function to check if a queen can
+	// be placed on board[row][col]. Note that this
+	// function is called when "col" queens are already
+	// placeed in columns from 0 to col -1. So we need
+	// to check only left side for attacking queens
+	boolean isSafe(int board[][], int row, int col)
+	{
+		int i, j;
+
+		// Check this row on left side
+		for (i = 0; i < col; i++)
+			if (board[row][i] == 1)
+				return false;
+
+		// Check upper diagonal on left side
+		for (i = row, j = col; i >= 0 && j >= 0; i--, j--)
+			if (board[i][j] == 1)
+				return false;
+
+		// Check lower diagonal on left side
+		for (i = row, j = col; j >= 0 && i < N; i++, j--)
+			if (board[i][j] == 1)
+				return false;
+
+		return true;
+	}
+
+	// A recursive utility function to solve N
+	// Queen problem
+	boolean solveNQUtil(int board[][], int col)
+	{
+		// Base case: If all queens are placed
+		// then return true
+		if (col >= N)
+			return true;
+
+		// Consider this column and try placing
+		// this queen in all rows one by one
+		for (int i = 0; i < N; i++) {
+			
+			// Check if the queen can be placed on
+			// board[i][col]
+			if (isSafe(board, i, col)) {
+				
+				// Place this queen in board[i][col]
+				board[i][col] = 1;
+
+				// Recur to place rest of the queens
+				if (solveNQUtil(board, col + 1) == true)
+					return true;
+
+				// If placing queen in board[i][col]
+				// doesn't lead to a solution then
+				// remove queen from board[i][col]
+				board[i][col] = 0; // BACKTRACK
+			}
+		}
+
+		// If the queen can not be placed in any row in
+		// this column col, then return false
+		return false;
+	}
+
+	// This function solves the N Queen problem using
+	// Backtracking. It mainly uses solveNQUtil () to
+	// solve the problem. It returns false if queens
+	// cannot be placed, otherwise, return true and
+	// prints placement of queens in the form of 1s.
+	// Please note that there may be more than one
+	// solutions, this function prints one of the
+	// feasible solutions.
+	boolean solveNQ()
+	{
+		int board[][] = { { 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 } };
+
+		if (solveNQUtil(board, 0) == false) {
+			System.out.print("Solution does not exist");
+			return false;
+		}
+
+		printSolution(board);
+		return true;
+	}
+
+	// Driver program to test above function
+	public static void main(String args[])
+	{
+		NQueenProblem Queen = new NQueenProblem();
+		Queen.solveNQ();
+	}
+}
+// This code is contributed by Jaspreet Singh
diff --git a/NotRandom.java b/NotRandom.java
new file mode 100644
index 00000000..b0369b32
--- /dev/null
+++ b/NotRandom.java
@@ -0,0 +1,16 @@
+public class NotRandom{
+    public static void main(String ... args) {
+        System.out.println(randomString(-229985452)+' '+randomString(-147909649));
+    }
+     
+    public static String randomString(int seed) {
+        Random rand = new Random(seed);
+        StringBuilder sb = new StringBuilder();
+        for(int i=0;;i++) {
+            int n = rand.nextInt(27);
+            if (n == 0) break;
+            sb.append((char) ('`' + n));
+        }
+        return sb.toString();
+    }
+}//printing hello world without actually printing it.
diff --git a/Nqueen.java b/Nqueen.java
new file mode 100644
index 00000000..321e2d71
--- /dev/null
+++ b/Nqueen.java
@@ -0,0 +1,114 @@
+// Java program to solve N Queen Problem using backtracking
+
+public class NQueenProblem {
+	final int N = 4;
+
+	// A utility function to print solution
+	void printSolution(int board[][])
+	{
+		for (int i = 0; i < N; i++) {
+			for (int j = 0; j < N; j++) {
+				if (board[i][j] == 1)
+					System.out.print("Q ");
+				else
+					System.out.print(". ");
+			}
+			System.out.println();
+		}
+	}
+
+	// A utility function to check if a queen can
+	// be placed on board[row][col]. Note that this
+	// function is called when "col" queens are already
+	// placeed in columns from 0 to col -1. So we need
+	// to check only left side for attacking queens
+	boolean isSafe(int board[][], int row, int col)
+	{
+		int i, j;
+
+		// Check this row on left side
+		for (i = 0; i < col; i++)
+			if (board[row][i] == 1)
+				return false;
+
+		// Check upper diagonal on left side
+		for (i = row, j = col; i >= 0 && j >= 0; i--, j--)
+			if (board[i][j] == 1)
+				return false;
+
+		// Check lower diagonal on left side
+		for (i = row, j = col; j >= 0 && i < N; i++, j--)
+			if (board[i][j] == 1)
+				return false;
+
+		return true;
+	}
+
+	// A recursive utility function to solve N
+	// Queen problem
+	boolean solveNQUtil(int board[][], int col)
+	{
+		// Base case: If all queens are placed
+		// then return true
+		if (col >= N)
+			return true;
+
+		// Consider this column and try placing
+		// this queen in all rows one by one
+		for (int i = 0; i < N; i++) {
+			
+			// Check if the queen can be placed on
+			// board[i][col]
+			if (isSafe(board, i, col)) {
+				
+				// Place this queen in board[i][col]
+				board[i][col] = 1;
+
+				// Recur to place rest of the queens
+				if (solveNQUtil(board, col + 1) == true)
+					return true;
+
+				// If placing queen in board[i][col]
+				// doesn't lead to a solution then
+				// remove queen from board[i][col]
+				board[i][col] = 0; // BACKTRACK
+			}
+		}
+
+		// If the queen can not be placed in any row in
+		// this column col, then return false
+		return false;
+	}
+
+	// This function solves the N Queen problem using
+	// Backtracking. It mainly uses solveNQUtil () to
+	// solve the problem. It returns false if queens
+	// cannot be placed, otherwise, return true and
+	// prints placement of queens in the form of 1s.
+	// Please note that there may be more than one
+	// solutions, this function prints one of the
+	// feasible solutions.
+	boolean solveNQ()
+	{
+		int board[][] = { { 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 },
+						{ 0, 0, 0, 0 } };
+
+		if (solveNQUtil(board, 0) == false) {
+			System.out.print("Solution does not exist");
+			return false;
+		}
+
+		printSolution(board);
+		return true;
+	}
+
+	// Driver program to test above function
+	public static void main(String args[])
+	{
+		NQueenProblem Queen = new NQueenProblem();
+		Queen.solveNQ();
+	}
+}
+// This code is contributed by Abhishek Shankhadhar
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/DBUtilR.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/DBUtilR.class
new file mode 100644
index 00000000..07670072
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/DBUtilR.class differ
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/againvote.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/againvote.class
new file mode 100644
index 00000000..b3528019
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/againvote.class differ
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/loginpage.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/loginpage.class
new file mode 100644
index 00000000..b46c3132
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/loginpage.class differ
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/registration.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/registration.class
new file mode 100644
index 00000000..a64e8621
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/registration.class differ
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/thankyou.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/thankyou.class
new file mode 100644
index 00000000..e2d3b57e
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/thankyou.class differ
diff --git a/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/vote.class b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/vote.class
new file mode 100644
index 00000000..a484556a
Binary files /dev/null and b/Online Voting System/Online_Voting_System/build/classes/vote/com/servlet/vote.class differ
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/DBUtilR.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/DBUtilR.java
new file mode 100644
index 00000000..3e1e94ba
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/DBUtilR.java	
@@ -0,0 +1,30 @@
+package vote.com.servlet;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class DBUtilR {
+	  static Connection conn = null;
+	static
+	 {	
+		try {
+			Class.forName("com.mysql.jdbc.Driver");
+			
+			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/votingdb", "Vaishnavi", "Nelavetla@537");
+			
+			if(!conn.isClosed()) {
+				System.out.println("Connection established");
+			}
+			
+		} catch (ClassNotFoundException | SQLException e) {
+			System.out.println("Error in DBUtilFile");
+			e.printStackTrace();
+		}
+	}
+	
+	public static  Connection getDBConnection() {
+		// TODO Auto-generated method stub
+		return conn;
+	}
+}
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/againvote.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/againvote.java
new file mode 100644
index 00000000..e5cf1b2f
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/againvote.java	
@@ -0,0 +1,18 @@
+package vote.com.servlet;
+
+import java.io.IOException;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+public class againvote extends HttpServlet {
+	private static final long serialVersionUID = 1L;
+       
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		doGet(request, response);
+	}
+
+}
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/loginpage.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/loginpage.java
new file mode 100644
index 00000000..aeb579ad
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/loginpage.java	
@@ -0,0 +1,71 @@
+package vote.com.servlet;
+
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class loginpage extends HttpServlet {
+	private static final long serialVersionUID = 1L;
+	
+	final static  Connection con=DBUtilR.getDBConnection();
+	static PreparedStatement ps = null;
+       
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		PrintWriter out = response.getWriter();  
+		String card=request.getParameter("cardno");
+		Integer pin=Integer.parseInt(request.getParameter("pin"));
+		
+		try {
+			if(check(card,pin))
+			{
+				out.print("Successful Login...You Can Vote Now");
+				RequestDispatcher rd=request.getRequestDispatcher("vote.html");
+				 rd.include(request,response);
+			}	
+			else {
+				 out.print("Sorry username or password error , Make new account");  
+				 RequestDispatcher rd=request.getRequestDispatcher("registration.html");  
+			        rd.include(request,response);
+			}
+		}
+		catch (SQLException e) {
+			e.printStackTrace();
+		}
+	
+	
+	}
+	static boolean check(String card,Integer pin) throws SQLException
+	 {
+		 boolean r=false;
+		 ps=con.prepareStatement("Select * from register where cardno=? and pin=?");
+		 ps.setString(1,card);
+		 ps.setInt(2,pin);
+		 ResultSet rs=ps.executeQuery();
+		 r=rs.next();
+		 
+		 return r;
+	 }
+	
+	static boolean checkvote(String card) throws SQLException
+	 {
+		 boolean r=false;
+		 ps=con.prepareStatement("Select * from vote where cardno=?");
+		 ps.setString(1,card);
+		 
+		 ResultSet rs=ps.executeQuery();
+		 r=rs.next();
+		 
+		 return r;
+	 }
+
+}
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/registration.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/registration.java
new file mode 100644
index 00000000..43a43dfc
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/registration.java	
@@ -0,0 +1,75 @@
+package vote.com.servlet;
+
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+
+public class registration extends HttpServlet {
+	private static final long serialVersionUID = 1L;
+ 
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		response.setContentType("text/html");  
+		PrintWriter out = response.getWriter();
+		
+		
+		String f=request.getParameter("fname");
+		
+		String c=request.getParameter("cardno");
+		String cn=request.getParameter("cono");
+		String ad=request.getParameter("add");
+		String dob=request.getParameter("dob");
+		String email=request.getParameter("email");
+		String pin=request.getParameter("pin");
+		try
+		{
+		
+		Class.forName("com.mysql.jdbc.Driver");
+		Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/votingdb","Vaishnavi","Nelavetla@537");
+		PreparedStatement ps=con.prepareStatement("insert into register values(?,?,?,?,?,?,?)");
+		ps.setString(1,f);
+		
+		ps.setString(2,c);
+		ps.setString(3,cn);
+		ps.setString(4,ad);
+		ps.setString(5,dob);
+		ps.setString(6,email);
+		ps.setString(7,pin);
+		int i=ps.executeUpdate();
+		if(i>0)
+		{
+			out.print("Successfully your account has been created...PLEASE LOGIN");
+			 RequestDispatcher rd=request.getRequestDispatcher("loginpage.html");  
+		        rd.include(request,response);
+		}
+		else
+		{
+			out.print("Failed account creation try again");
+			 RequestDispatcher rd=request.getRequestDispatcher("registration.html");  
+		        rd.include(request,response);
+		}
+			
+		}
+		catch (Exception e2) {
+			out.print("Invalid , Failed account creation try again  "+e2);
+			 RequestDispatcher rd=request.getRequestDispatcher("registration.html");  
+		        rd.include(request,response);
+		}
+		
+		out.close();
+	
+}
+	protected void service(HttpServletRequest request, HttpServletResponse   response) throws ServletException, IOException 
+	{
+        doPost(request, response);
+	}
+
+}
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/thankyou.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/thankyou.java
new file mode 100644
index 00000000..ab05b987
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/thankyou.java	
@@ -0,0 +1,17 @@
+package vote.com.servlet;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class thankyou extends HttpServlet {
+	private static final long serialVersionUID = 1L;
+ 
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		
+	}
+
+}
diff --git a/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/vote.java b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/vote.java
new file mode 100644
index 00000000..4134f5c3
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/java/vote/com/servlet/vote.java	
@@ -0,0 +1,97 @@
+package vote.com.servlet;
+
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLIntegrityConstraintViolationException;
+
+public class vote extends HttpServlet {
+	private static final long serialVersionUID = 1L;
+	
+    final static Connection con=DBUtilR.getDBConnection();
+    static PreparedStatement ps = null;
+       
+	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
+	{
+		response.setContentType("text/html");  
+		PrintWriter out = response.getWriter();
+		
+		
+		String f=request.getParameter("cardno");
+		String l=request.getParameter("party");
+		try
+		{
+		
+		Class.forName("com.mysql.jdbc.Driver");
+		Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/votingdb","Vaishnavi","Nelavetla@537");
+
+		if(checkLogin(f))
+		{
+			
+		ps=con.prepareStatement("insert into vote values(?,?)");
+		ps.setString(1,f);
+		ps.setString(2,l);
+		int i=ps.executeUpdate();
+		if(i>0)
+		{
+			out.print("Your Vote has been submitted successfully...");
+			 RequestDispatcher rd=request.getRequestDispatcher("thankyou.html");  
+		        rd.include(request,response);
+		}
+		else
+		{
+			out.print("Failed to submit vote, try again");
+			 RequestDispatcher rd=request.getRequestDispatcher("vote.html");  
+		        rd.include(request,response);
+		}
+		}
+		else
+		{
+			out.print("Please enter correct card number");
+			RequestDispatcher rd=request.getRequestDispatcher("vote.html");  
+	        rd.include(request,response);
+		}
+		}
+		catch (SQLIntegrityConstraintViolationException e2) {
+			out.print("Please select any party");
+			 RequestDispatcher rd=request.getRequestDispatcher("vote.html");  
+		        rd.include(request,response);
+		}
+		catch(Exception e)
+		{
+			out.print(" " +e);
+			RequestDispatcher rd=request.getRequestDispatcher("vote.html");  
+	        rd.include(request,response);
+		}
+		out.close();
+	
+		
+}
+	protected void service(HttpServletRequest request, HttpServletResponse   response) throws ServletException, IOException {
+        doPost(request, response);
+}
+	
+
+
+static boolean checkLogin(String card) throws SQLException
+{
+ boolean r=false;
+ ps=con.prepareStatement("Select * from register where cardno = ?");
+ ps.setString(1,card);
+ 
+ ResultSet rs=ps.executeQuery();
+ r=rs.next();
+ 
+ return r;
+}
+}
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/META-INF/MANIFEST.MF b/Online Voting System/Online_Voting_System/src/main/webapp/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..254272e1
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/META-INF/MANIFEST.MF	
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/mysql-connector-java-8.0.28.jar b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/mysql-connector-java-8.0.28.jar
new file mode 100644
index 00000000..ac8904ee
Binary files /dev/null and b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/mysql-connector-java-8.0.28.jar differ
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/servlet-api.jar b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/servlet-api.jar
new file mode 100644
index 00000000..11cd71a7
Binary files /dev/null and b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/lib/servlet-api.jar differ
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/web.xml b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 00000000..a07d6d82
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/WEB-INF/web.xml	
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0">
+  <servlet>
+    <description></description>
+    <display-name>againvote</display-name>
+    <servlet-name>againvote</servlet-name>
+    <servlet-class>vote.com.servlet.againvote</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>againvote</servlet-name>
+    <url-pattern>/againvote</url-pattern>
+  </servlet-mapping>
+  <display-name>Online_Voting_System</display-name>
+  <welcome-file-list>
+    <welcome-file>againvote.html</welcome-file>
+    <welcome-file>loginpage.html</welcome-file>
+    <welcome-file>registration.html</welcome-file>
+    <welcome-file>thankyou.html</welcome-file>
+    <welcome-file>vote.html</welcome-file>
+  </welcome-file-list>
+  <servlet>
+    <description></description>
+    <display-name>DBUtilR</display-name>
+    <servlet-name>DBUtilR</servlet-name>
+    <servlet-class>vote.com.servlet.DBUtilR</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>DBUtilR</servlet-name>
+    <url-pattern>/DBUtilR</url-pattern>
+  </servlet-mapping>
+  <servlet>
+    <description></description>
+    <display-name>loginpage</display-name>
+    <servlet-name>loginpage</servlet-name>
+    <servlet-class>vote.com.servlet.loginpage</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>loginpage</servlet-name>
+    <url-pattern>/loginpage</url-pattern>
+  </servlet-mapping>
+  <servlet>
+    <description></description>
+    <display-name>registration</display-name>
+    <servlet-name>registration</servlet-name>
+    <servlet-class>vote.com.servlet.registration</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>registration</servlet-name>
+    <url-pattern>/registration</url-pattern>
+  </servlet-mapping>
+  <servlet>
+    <description></description>
+    <display-name>thankyou</display-name>
+    <servlet-name>thankyou</servlet-name>
+    <servlet-class>vote.com.servlet.thankyou</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>thankyou</servlet-name>
+    <url-pattern>/thankyou</url-pattern>
+  </servlet-mapping>
+  <servlet>
+    <description></description>
+    <display-name>vote</display-name>
+    <servlet-name>vote</servlet-name>
+    <servlet-class>vote.com.servlet.vote</servlet-class>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>vote</servlet-name>
+    <url-pattern>/vote</url-pattern>
+  </servlet-mapping>
+</web-app>
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/againvote.html b/Online Voting System/Online_Voting_System/src/main/webapp/againvote.html
new file mode 100644
index 00000000..4da7bdd2
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/againvote.html	
@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>Welcome</title>
+</head>
+<link href="https://fonts.googleapis.com/css?family=Josefin+Sans" rel="stylesheet">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+
+<!--javascript-->
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+<style>
+  body {
+  font-family: 'Josefin Sans', sans-serif;
+  box-sizing: border-box;
+}
+.container-fluid{
+  height: 100%;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  background: #FFF;
+}
+/* ============= Animation background ========= */
+.background {
+  background: linear-gradient(132deg, #FC415A, #591BC5, #212335);
+  background-size: 400% 400%;
+  animation: Gradient 400s ease infinite;
+  position: relative;
+  height: 100vh;
+  width: 100%;
+  overflow: hidden;
+  padding:0;
+  margin:0px;
+}
+.cube {
+  position: absolute;
+  top: 80vh;
+  left: 45vw;
+  width: 10px;
+  height: 10px;
+  border: solid 1px #D7D4E4;
+  transform-origin: top left;
+  transform: scale(0) rotate(0deg) translate(-50%, -50%);
+  animation: cube 12s ease-in forwards infinite;
+}
+.cube:nth-child(2n) {
+  border-color: #FFF ;
+}
+.cube:nth-child(2) {
+  animation-delay: -10s;
+  left: 25vw;
+  top: 40vh;
+}
+.cube:nth-child(3) {
+  animation-delay: -14s;
+  left: 75vw;
+  top: 50vh;
+}
+.cube:nth-child(4) {
+  animation-delay: -16s;
+  left: 90vw;
+  top: 10vh;
+}
+.cube:nth-child(5) {
+  animation-delay: -18s;
+  left: 10vw;
+  top: 85vh;
+}
+.cube:nth-child(6) {
+  animation-delay: -20s;
+  left: 50vw;
+  top: 10vh;
+}
+/* ================= Header ============ */
+header{
+  position: absolute;
+  top:0%;
+  left: 0%;
+  width:100%;
+  margin: 0;
+  padding: 0;
+}
+/* navbar */
+nav{
+  color: #FFF;
+  float: right;
+  margin:30px 90px;
+}
+nav ul{
+  list-style: none;
+}
+nav ul li {
+  float: left;
+  transition: .3s;
+}
+nav ul li a{
+  text-decoration: none;
+  color: #EFEEF5;
+  transition: .5;
+  font-size: 15px;
+  margin-left:16px;
+}
+nav ul li:hover a{
+  text-decoration: none;
+  color: #591BC5;;
+}
+nav ul li:hover{
+  height: 45px;
+  padding-top: 30px;
+  margin-top: -30px;
+ background: #EFEEF5;
+  text-decoration: none;
+  transform: skew(15deg);
+}
+/* Logo */
+.logo{
+  width: 35px;
+  height: 35px;
+  background: #EFEEF5;
+  margin: 40px 63px;
+  float: left;
+  transform: rotate(-30deg);
+}
+.logo span{
+  color: #591BC5;
+  font-size: 2em;
+  line-height: 1.4;
+  padding-left: 5px;
+  font-weight: bold;
+}
+/* Header content & title & button*/
+.header-content{
+  margin-top:25%;
+  text-align: center;
+  color:  #EFEEF5;
+}
+.header-content h1{
+  text-transform: uppercase;
+  font-size: 3em;
+  letter-spacing: 1px;
+}
+.header-content p {
+  font-size: 20px;
+  line-height: 1.5;
+  margin: 20px auto;
+}
+.header-content button{
+  width: 140px;
+  margin:20px 10px;
+  color: #591BC5;
+  font-size: 17px;
+  border:1px solid #EFEEF5;
+  font-weight: 500;
+  background: #EFEEF5;
+  border-radius: 20px;
+  padding: 10px;
+  cursor:pointer;
+  transition: .3s;
+}
+.header-content button:hover{
+  border-radius: 0;
+}
+/* Animate Background*/
+@keyframes Gradient {
+  0% {
+    background-position: 0% 50%;
+  }
+  50% {
+    background-position: 100% 50%;
+  }
+  100% {
+    background-position: 0% 50%;
+  }
+}
+@keyframes cube {
+  from {
+    transform: scale(0) rotate(0deg) translate(-50%, -50%);
+    opacity: 1;
+  }
+  to {
+    transform: scale(20) rotate(960deg) translate(-50%, -50%);
+    opacity: 0;
+  }
+}
+</style>
+<!-- Background & animion & navbar & title -->
+  <div class="container-fluid">
+<!-- Background animtion-->
+    <div class="background">
+       <div class="cube"></div>
+       <div class="cube"></div>
+       <div class="cube"></div>
+       <div class="cube"></div>
+      <div class="cube"></div>
+    </div>
+<!-- header -->
+   <header>
+<!-- navbar -->
+<!-- title & content -->
+      <section class="header-content">
+          <form action="loginpage" method="post" class="container">
+         <h1>
+             <a href = "loginpage.html">Welcome</a>
+            </h1>
+          </form>
+      </section>
+  </header>
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/loginpage.html b/Online Voting System/Online_Voting_System/src/main/webapp/loginpage.html
new file mode 100644
index 00000000..8beafb2d
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/loginpage.html	
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>LOGIN</title>
+</head>
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+
+<!--javascript-->
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+<style>
+* {
+  box-sizing: border-box;
+}
+body {
+  font-family: 'Rubik', sans-serif;
+  margin: 0;
+  padding: 0;
+}
+.container {
+  display: flex;
+  height: 100vh;
+}
+.left-section {
+  overflow: hidden;
+  display: flex;
+  flex-wrap: wrap;
+  flex-direction: column;
+  justify-content: center;
+  -webkit-animation-name: left-section;
+          animation-name: left-section;
+  -webkit-animation-duration: 1s;
+          animation-duration: 1s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 1s;
+          animation-delay: 1s;
+}
+.right-section {
+  flex: 1;
+  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
+  transition: 1s;
+  background-image: url(https://cdn3.iconfinder.com/data/icons/isometric-illustrations-7/350/622-512.png);
+  background-size: cover;
+  background-repeat: no-repeat;
+  background-position: center;
+}
+.header > h1 {
+  margin: 0;
+  color: #f50629;
+}
+.header > h4 {
+  margin-top: 10px;
+  font-weight: normal;
+  font-size: 15px;
+  color: rgba(0, 0, 0, 0.4);
+}
+.form {
+  max-width: 80%;
+  display: flex;
+  flex-direction: column;
+}
+.form > p {
+  text-align: right;
+}
+.form > p > a {
+  color: #000;
+  font-size: 14px;
+}
+.form-field {
+  height: 46px;
+  padding: 0 16px;
+  border: 2px solid #ddd;
+  border-radius: 4px;
+  font-family: 'Rubik', sans-serif;
+  outline: 0;
+  transition: .2s;
+  margin-top: 20px;
+}
+.form-field:focus {
+  border-color: #0f7ef1;
+}
+.form > button {
+  padding: 12px 10px;
+  border: 0;
+  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
+  border-radius: 3px;
+  margin-top: 10px;
+  color: #fff;
+  letter-spacing: 1px;
+  font-family: 'Rubik', sans-serif;
+}
+.animation {
+  -webkit-animation-name: move;
+          animation-name: move;
+  -webkit-animation-duration: .4s;
+          animation-duration: .4s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+ 
+.a1 {
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+.a2 {
+  -webkit-animation-delay: 2.1s;
+          animation-delay: 2.1s;
+}
+.a3 {
+  -webkit-animation-delay: 2.2s;
+          animation-delay: 2.2s;
+}
+.a4 {
+  -webkit-animation-delay: 2.3s;
+          animation-delay: 2.3s;
+}
+.a5 {
+  -webkit-animation-delay: 2.4s;
+          animation-delay: 2.4s;
+}
+.a6 {
+  -webkit-animation-delay: 2.5s;
+          animation-delay: 2.5s;
+}
+@keyframes move {
+  0% {
+    opacity: 0;
+    visibility: hidden;
+    -webkit-transform: translateY(-40px);
+            transform: translateY(-40px);
+  }
+  100% {
+    opacity: 1;
+    visibility: visible;
+    -webkit-transform: translateY(0);
+            transform: translateY(0);
+  }
+}
+@keyframes left-section {
+  0% {
+    opacity: 0;
+    width: 0;
+  }
+  100% {
+    opacity: 1;
+    padding: 20px 40px;
+    width: 440px;
+  }
+}
+    </style>
+<body>
+
+<div class="container">
+  <div class="left-section">
+    <div class="header">
+      <h1 class="animation a1">Online Voting System</h1>
+      <h4 class="animation a2">"The Ballot is Stronger Than Bullet"</h4>
+    </div>
+    <form action="vote" method="post">
+     <div class="form">
+
+<input type="number" class="form-field animation a3" placeholder="Enter Voter Card Number" name="cardno" required>
+      <input type="password" class="form-field animation a4" placeholder="Enter pin" name="pin" required>
+      
+       <button class="animation a6"><a href="vote.html">LOGIN</a></button>
+       <button class="animation a6"><a href="registration.html">NEW USER REGISTER</a></button>
+
+    </div>
+    </form>
+  </div>
+  <div class="right-section"></div>
+</div>
+  
+</body>
+</html>
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/registration.html b/Online Voting System/Online_Voting_System/src/main/webapp/registration.html
new file mode 100644
index 00000000..5b4afcf7
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/registration.html	
@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="ISO-8859-1">
+<title>Register</title>
+</head>
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+
+<!--javascript-->
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+<style>
+* {
+  box-sizing: border-box;
+}
+body {
+  font-family: 'Rubik', sans-serif;
+  margin: 0;
+  padding: 0;
+}
+.container {
+  display: flex;
+  height: 100vh;
+}
+.left-section {
+  overflow: hidden;
+  display: flex;
+  flex-wrap: wrap;
+  flex-direction: column;
+  justify-content: center;
+  -webkit-animation-name: left-section;
+          animation-name: left-section;
+  -webkit-animation-duration: 1s;
+          animation-duration: 1s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 1s;
+          animation-delay: 1s;
+}
+.right-section {
+  flex: 1;
+
+}
+.header > h1 {
+  margin: 0;
+  color: #f50629;
+}
+.header > h4 {
+  margin-top: 10px;
+  font-weight: normal;
+  font-size: 15px;
+  color: rgba(0, 0, 0, 0.4);
+}
+.form {
+  max-width: 80%;
+  display: flex;
+  flex-direction: column;
+}
+.form > p {
+  text-align: right;
+}
+.form > p > a {
+  color: #000;
+  font-size: 14px;
+}
+.form-field {
+  height: 46px;
+  padding: 0 16px;
+  border: 2px solid #ddd;
+  border-radius: 4px;
+  font-family: 'Rubik', sans-serif;
+  outline: 0;
+  transition: .2s;
+  margin-top: 20px;
+}
+.form-field:focus {
+  border-color: #0f7ef1;
+}
+.form > button {
+  padding: 12px 10px;
+  border: 0;
+  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
+  border-radius: 3px;
+  margin-top: 10px;
+  color: #fff;
+  letter-spacing: 1px;
+  font-family: 'Rubik', sans-serif;
+}
+.animation {
+  -webkit-animation-name: move;
+          animation-name: move;
+  -webkit-animation-duration: .4s;
+          animation-duration: .4s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+ 
+.a1 {
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+.a2 {
+  -webkit-animation-delay: 2.1s;
+          animation-delay: 2.1s;
+}
+.a3 {
+  -webkit-animation-delay: 2.2s;
+          animation-delay: 2.2s;
+}
+.a4 {
+  -webkit-animation-delay: 2.3s;
+          animation-delay: 2.3s;
+}
+.a5 {
+  -webkit-animation-delay: 2.4s;
+          animation-delay: 2.4s;
+}
+.a6 {
+  -webkit-animation-delay: 2.5s;
+          animation-delay: 2.5s;
+}
+@keyframes move {
+  0% {
+    opacity: 0;
+    visibility: hidden;
+    -webkit-transform: translateY(-40px);
+            transform: translateY(-40px);
+  }
+  100% {
+    opacity: 1;
+    visibility: visible;
+    -webkit-transform: translateY(0);
+            transform: translateY(0);
+  }
+}
+@keyframes left-section {
+  0% {
+    opacity: 0;
+    width: 0;
+  }
+  100% {
+    opacity: 1;
+    padding: 20px 40px;
+    width: 440px;
+  }
+}
+    </style>
+    </head>
+<body>
+ 
+<div class="container">
+  <div class="left-section">
+    <div class="header">
+      <h1 class="animation a1">REGISTRATION</h1>
+    </div>
+     <form action="registration" method="post">
+    <div class="form">
+
+<b>Name:</b>
+  <input type="text" placeholder="Enter First Name" name="fname" required><span class="validity"></span><br>
+
+  
+    <b>Voter Card Number:</b>
+    <input type="number" placeholder="Enter Voter Card Number" name="cardno" required><span class="validity"></span><br>
+
+    <b>Contact Number:</b>
+    <input type="tel" placeholder="Enter Contact Number" name="cono" required><span class="validity"></span><br>
+ 
+    <b>Address:</b>
+    <input type="text" placeholder="Enter Address" name="add" required><span class="validity"></span><br>
+    
+    <b>Date Of Birth:(YYYY/MM/DD)</b>
+    <input type="date" placeholder="Enter Date Of Birth" name="dob" required><span class="validity"></span><br>
+    
+    <b>Email:</b>
+    <input type="email" placeholder="Enter Email address" name="email" required><span class="validity"></span><br>
+    
+    <b>Enter Pin:</b>
+    <input type="password" placeholder="Enter 4 digit Pin to set" name="pin" required><span class="validity"></span><br>
+      
+        <button class="animation a6">Register</button>
+    </div>
+    </form>
+  </div>
+  <div class="right-section"></div>
+</div>
+  
+</body>
+</html>
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/thankyou.html b/Online Voting System/Online_Voting_System/src/main/webapp/thankyou.html
new file mode 100644
index 00000000..d014fdf9
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/thankyou.html	
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="ISO-8859-1">
+<title>ThankYou</title>
+</head>
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+
+<!--javascript-->
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+<style>
+html,body {
+    font-family: 'Raleway', sans-serif;  
+}
+.thankyou-page ._header {
+    background: #fee028;
+    padding: 100px 30px;
+    text-align: center;
+    background: #fee028;
+}
+.thankyou-page ._header .logo {
+    max-width: 200px;
+    margin: 0 auto 50px;
+}
+
+.thankyou-page ._header h1 {
+    font-size: 80px;
+    font-weight: 800;
+    color: white;
+    margin: 0;
+}
+.thankyou-page ._body {
+    margin: -70px 0 30px;
+}
+.thankyou-page ._body ._box {
+    margin: auto;
+    max-width: 80%;
+    padding: 50px;
+    background: white;
+    border-radius: 3px;
+    box-shadow: 0 0 35px rgba(10, 10, 10,0.12);
+    -moz-box-shadow: 0 0 35px rgba(10, 10, 10,0.12);
+    -webkit-box-shadow: 0 0 35px rgba(10, 10, 10,0.12);
+}
+.thankyou-page ._body ._box h2 {
+    font-size: 40px;
+    font-weight: 600;
+    color: #4ab74a;
+}
+.thankyou-page ._footer {
+    text-align: center;
+    padding: 50px 30px;
+}
+
+.thankyou-page ._footer .btn {
+    background: #4ab74a;
+    color: white;
+    border: 0;
+    font-size: 18px;
+    font-weight: 600;
+    border-radius: 0;
+    letter-spacing: 0.8px;
+    padding: 20px 33px;
+    text-transform: uppercase;
+}
+</style>
+</head>
+</body>
+<div class="thankyou-page">
+    <div class="_header">
+        <div class="logo">
+        </div>
+        <h1><center>THANK YOU...!!!</center></h1>
+    </div>
+     <form action="thankyou" method="post" class="container">
+    <div class="_body">
+        <div class="_box">
+            <h2>
+                <strong><center>Your Vote has been counted</center></strong>
+            </h2>
+        </div>
+    </div>
+    <div class="_footer">
+        <a href="againvote.html" class="btn btn-primary"><b class="r">BACK TO HOME</b></a>
+        </form>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/Online Voting System/Online_Voting_System/src/main/webapp/vote.html b/Online Voting System/Online_Voting_System/src/main/webapp/vote.html
new file mode 100644
index 00000000..4888f624
--- /dev/null
+++ b/Online Voting System/Online_Voting_System/src/main/webapp/vote.html	
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>Vote Here</title>
+
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+
+<!--javascript-->
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+<style>
+* {
+  box-sizing: border-box;
+}
+body {
+  font-family: 'Rubik', sans-serif;
+   background: #fee028;
+  margin: 0;
+  padding: 0;
+}
+.container {
+  display: flex;
+  height: 100vh;
+}
+.left-section {
+  overflow: hidden;
+  display: flex;
+  flex-wrap: wrap;
+  flex-direction: column;
+  justify-content: center;
+  -webkit-animation-name: left-section;
+          animation-name: left-section;
+  -webkit-animation-duration: 1s;
+          animation-duration: 1s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 1s;
+          animation-delay: 1s;
+}
+.right-section {
+  flex: 1;
+  
+}
+.header > h1 {
+  margin: 0;
+  color: #f50629;
+}
+.header > h4 {
+  margin-top: 10px;
+  font-weight: normal;
+  font-size: 15px;
+  color: rgba(0, 0, 0, 0.4);
+}
+.form {
+  max-width: 80%;
+  display: flex;
+  flex-direction: column;
+}
+.form > p {
+  text-align: right;
+}
+.form > p > a {
+  color: #000;
+  font-size: 14px;
+}
+.form-field {
+  height: 46px;
+  padding: 0 16px;
+  border: 2px solid #ddd;
+  border-radius: 4px;
+  font-family: 'Rubik', sans-serif;
+  outline: 0;
+  transition: .2s;
+  margin-top: 20px;
+}
+.form-field:focus {
+  border-color: #0f7ef1;
+}
+.form > button {
+  padding: 12px 10px;
+  border: 0;
+  background: linear-gradient(to right, #f50629 0%, #fd9d08 100%);
+  border-radius: 3px;
+  margin-top: 10px;
+  color: #fff;
+  letter-spacing: 1px;
+  font-family: 'Rubik', sans-serif;
+}
+.animation {
+  -webkit-animation-name: move;
+          animation-name: move;
+  -webkit-animation-duration: .4s;
+          animation-duration: .4s;
+  -webkit-animation-fill-mode: both;
+          animation-fill-mode: both;
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+ 
+.a1 {
+  -webkit-animation-delay: 2s;
+          animation-delay: 2s;
+}
+.a2 {
+  -webkit-animation-delay: 2.1s;
+          animation-delay: 2.1s;
+}
+.a3 {
+  -webkit-animation-delay: 2.2s;
+          animation-delay: 2.2s;
+}
+.a4 {
+  -webkit-animation-delay: 2.3s;
+          animation-delay: 2.3s;
+}
+.a5 {
+  -webkit-animation-delay: 2.4s;
+          animation-delay: 2.4s;
+}
+.a6 {
+  -webkit-animation-delay: 2.5s;
+          animation-delay: 2.5s;
+}
+@keyframes move {
+  0% {
+    opacity: 0;
+    visibility: hidden;
+    -webkit-transform: translateY(-40px);
+            transform: translateY(-40px);
+  }
+  100% {
+    opacity: 1;
+    visibility: visible;
+    -webkit-transform: translateY(0);
+            transform: translateY(0);
+  }
+}
+@keyframes left-section {
+  0% {
+    opacity: 0;
+    width: 0;
+  }
+  100% {
+    opacity: 1;
+    padding: 20px 40px;
+    width: 440px;
+  }
+}
+    </style>
+<body>
+
+<div class="container">
+  <div class="left-section">
+    <div class="header">
+      <h1 class="animation a1">Cast Your Vote</h1>
+      <h4 class="animation a2">"Choose the right!"</h4>
+    </div>
+    <form action="vote" method="post">
+    <div class="form">
+<input type="number" placeholder="Voter card Number" name="cardno" required><br>
+<b>Select Party You want to vote:</b><br>
+<select name="party" class="form-item__element form-item__element--select" required> 
+<option disabled selected value=" ">Please select value</option> 
+<option>Bahujan Samaj Party(BSP)</option>  
+<option>Bharatiya Janata Party(BJP)</option>  
+<option>Communist Party of India</option>
+<option>Communist Party of India (Marxist)</option> 
+<option>Indian National Congress</option> 
+<option>All India Trinamool Congress</option> 
+<option>Aam Aadmi Party(AAP)</option>  
+<option>None of Above</option>
+</select> 
+      
+       <button class="animation a6">VOTE</button>
+
+
+    </div>
+    </form>
+  </div>
+  <div class="right-section"></div>
+</div>
+  
+</body>
+</html>
\ No newline at end of file
diff --git a/Online Voting System/README.md b/Online Voting System/README.md
new file mode 100644
index 00000000..0be88591
--- /dev/null
+++ b/Online Voting System/README.md	
@@ -0,0 +1,54 @@
+# Online-voting-system-using-servlets
+
+This is an Online voting system which can be used for conducting elections in online-mode.
+
+
+-------REQUIREMENTS
+
+
+1.apache version 10 and database connectivity
+
+
+2.eclipse workspace
+
+
+3.mysql-connector
+
+
+4.servlet-api
+
+
+-------TECHNOLOGIES USED
+
+
+1.HTML/CSS/JavaScript for frontend
+
+
+2.MySQL for backend
+
+
+3.Java servlets
+
+
+-------MUST READ !!
+
+
+Total number of pages - 5
+
+
+Welcome page,Login page(For already registered candidates),Register page(for new registrations),Vote page(to select the respective vote),Thankyou page
+
+
+1.A user needs to get registered himself/herself in the portal first.
+
+
+2.Voterid and password are used to login the specific user.
+
+
+3.The user can access the vote page by entering his asked credentials.
+
+
+4.Loginpage directs you to vote page where user can cast the vote.
+
+
+5.With one voterid vote can be casted only once and this directs to thankyoupage.
diff --git a/OnlineJavaTest.java b/OnlineJavaTest.java
new file mode 100644
index 00000000..1c89a8de
--- /dev/null
+++ b/OnlineJavaTest.java
@@ -0,0 +1,187 @@
+/*Online Java Paper Test*/  
+  
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.*;  
+  
+class OnlineTest extends JFrame implements ActionListener  
+{  
+    JLabel l;  
+    JRadioButton jb[]=new JRadioButton[5];  
+    JButton b1,b2;  
+    ButtonGroup bg;  
+    int count=0,current=0,x=1,y=1,now=0;  
+    int m[]=new int[10];      
+    OnlineTest(String s)  
+    {  
+        super(s);  
+        l=new JLabel();  
+        add(l);  
+        bg=new ButtonGroup();  
+        for(int i=0;i<5;i++)  
+        {  
+            jb[i]=new JRadioButton();     
+            add(jb[i]);  
+            bg.add(jb[i]);  
+        }  
+        b1=new JButton("Next");  
+        b2=new JButton("Bookmark");  
+        b1.addActionListener(this);  
+        b2.addActionListener(this);  
+        add(b1);add(b2);  
+        set();  
+        l.setBounds(30,40,450,20);  
+        jb[0].setBounds(50,80,100,20);  
+        jb[1].setBounds(50,110,100,20);  
+        jb[2].setBounds(50,140,100,20);  
+        jb[3].setBounds(50,170,100,20);  
+        b1.setBounds(100,240,100,30);  
+        b2.setBounds(270,240,100,30);  
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
+        setLayout(null);  
+        setLocation(250,100);  
+        setVisible(true);  
+        setSize(600,350);  
+    }  
+    public void actionPerformed(ActionEvent e)  
+    {  
+        if(e.getSource()==b1)  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            set();    
+            if(current==9)  
+            {  
+                b1.setEnabled(false);  
+                b2.setText("Result");  
+            }  
+        }  
+        if(e.getActionCommand().equals("Bookmark"))  
+        {  
+            JButton bk=new JButton("Bookmark"+x);  
+            bk.setBounds(480,20+30*x,100,30);  
+            add(bk);  
+            bk.addActionListener(this);  
+            m[x]=current;  
+            x++;  
+            current++;  
+            set();    
+            if(current==9)  
+                b2.setText("Result");  
+            setVisible(false);  
+            setVisible(true);  
+        }  
+        for(int i=0,y=1;i<x;i++,y++)  
+        {  
+        if(e.getActionCommand().equals("Bookmark"+y))  
+        {  
+            if(check())  
+                count=count+1;  
+            now=current;  
+            current=m[y];  
+            set();  
+            ((JButton)e.getSource()).setEnabled(false);  
+            current=now;  
+        }  
+        }  
+      
+        if(e.getActionCommand().equals("Result"))  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            //System.out.println("correct ans="+count);  
+            JOptionPane.showMessageDialog(this,"correct ans="+count);  
+            System.exit(0);  
+        }  
+    }  
+    void set()  
+    {  
+        jb[4].setSelected(true);  
+        if(current==0)  
+        {  
+            l.setText("Que1: Which one among these is not a primitive datatype?");  
+            jb[0].setText("int");jb[1].setText("Float");jb[2].setText("boolean");jb[3].setText("char");   
+        }  
+        if(current==1)  
+        {  
+            l.setText("Que2: Which class is available to all the class automatically?");  
+            jb[0].setText("Swing");jb[1].setText("Applet");jb[2].setText("Object");jb[3].setText("ActionEvent");  
+        }  
+        if(current==2)  
+        {  
+            l.setText("Que3: Which package is directly available to our class without importing it?");  
+            jb[0].setText("swing");jb[1].setText("applet");jb[2].setText("net");jb[3].setText("lang");  
+        }  
+        if(current==3)  
+        {  
+            l.setText("Que4: String class is defined in which package?");  
+            jb[0].setText("lang");jb[1].setText("Swing");jb[2].setText("Applet");jb[3].setText("awt");  
+        }  
+        if(current==4)  
+        {  
+            l.setText("Que5: Which institute is best for java coaching?");  
+            jb[0].setText("Utek");jb[1].setText("Aptech");jb[2].setText("SSS IT");jb[3].setText("jtek");  
+        }  
+        if(current==5)  
+        {  
+            l.setText("Que6: Which one among these is not a keyword?");  
+            jb[0].setText("class");jb[1].setText("int");jb[2].setText("get");jb[3].setText("if");  
+        }  
+        if(current==6)  
+        {  
+            l.setText("Que7: Which one among these is not a class? ");  
+            jb[0].setText("Swing");jb[1].setText("Actionperformed");jb[2].setText("ActionEvent");  
+                        jb[3].setText("Button");  
+        }  
+        if(current==7)  
+        {  
+            l.setText("Que8: which one among these is not a function of Object class?");  
+            jb[0].setText("toString");jb[1].setText("finalize");jb[2].setText("equals");  
+                        jb[3].setText("getDocumentBase");         
+        }  
+        if(current==8)  
+        {  
+            l.setText("Que9: which function is not present in Applet class?");  
+            jb[0].setText("init");jb[1].setText("main");jb[2].setText("start");jb[3].setText("destroy");  
+        }  
+        if(current==9)  
+        {  
+            l.setText("Que10: Which one among these is not a valid component?");  
+            jb[0].setText("JButton");jb[1].setText("JList");jb[2].setText("JButtonGroup");  
+                        jb[3].setText("JTextArea");  
+        }  
+        l.setBounds(30,40,450,20);  
+        for(int i=0,j=0;i<=90;i+=30,j++)  
+            jb[j].setBounds(50,80+i,200,20);  
+    }  
+    boolean check()  
+    {  
+        if(current==0)  
+            return(jb[1].isSelected());  
+        if(current==1)  
+            return(jb[2].isSelected());  
+        if(current==2)  
+            return(jb[3].isSelected());  
+        if(current==3)  
+            return(jb[0].isSelected());  
+        if(current==4)  
+            return(jb[2].isSelected());  
+        if(current==5)  
+            return(jb[2].isSelected());  
+        if(current==6)  
+            return(jb[1].isSelected());  
+        if(current==7)  
+            return(jb[3].isSelected());  
+        if(current==8)  
+            return(jb[1].isSelected());  
+        if(current==9)  
+            return(jb[2].isSelected());  
+        return false;  
+    }  
+    public static void main(String s[])  
+    {  
+        new OnlineTest("Online Test Of Java");  
+    }  
+}  
diff --git a/OpenWeatherMap.java b/OpenWeatherMap.java
new file mode 100644
index 00000000..ebcda222
--- /dev/null
+++ b/OpenWeatherMap.java
@@ -0,0 +1,38 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class WeatherApp {
+
+    public static void main(String[] args) {
+        String apiKey = "YOUR_API_KEY"; // Replace with your OpenWeatherMap API key
+        String city = "New York"; // Replace with the desired city
+
+        try {
+            String apiUrl = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + apiKey;
+            URL url = new URL(apiUrl);
+
+            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestMethod("GET");
+
+            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String line;
+            StringBuilder response = new StringBuilder();
+
+            while ((line = reader.readLine()) != null) {
+                response.append(line);
+            }
+            reader.close();
+
+            // Parse and display the weather information
+            String weatherData = response.toString();
+            System.out.println("Weather Data:");
+            System.out.println(weatherData);
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/OrderBook/src/main/orderbook/Helpers.java b/OrderBook/src/main/orderbook/Helpers.java
new file mode 100644
index 00000000..36071092
--- /dev/null
+++ b/OrderBook/src/main/orderbook/Helpers.java
@@ -0,0 +1,20 @@
+import java.io.*;
+import java.nio.file.*;
+
+public class Helpers {
+
+    public static void printFileContents(String filePath) {
+        try {
+            String content = Files.readString(Paths.get(filePath));
+            System.out.println(content);
+        } catch (IOException e) {
+            System.err.println("Unable to open " + filePath);
+        }
+    }
+
+    public static void printFill(OrderFill fill, int quantity, long startTime, long endTime) {
+        double averagePrice = fill.unitsTransacted > 0 ? fill.totalValue / fill.unitsTransacted : 0.0;
+        long timeTaken = endTime - startTime;
+        System.out.println("Filled "+fill.unitsTransacted+"/"+quantity+" units @ $"+averagePrice+" avg. price in "+timeTaken+" ns");
+    }
+}
diff --git a/OrderBook/src/main/orderbook/OrderBook.java b/OrderBook/src/main/orderbook/OrderBook.java
new file mode 100644
index 00000000..fe33975f
--- /dev/null
+++ b/OrderBook/src/main/orderbook/OrderBook.java
@@ -0,0 +1,144 @@
+import java.util.*;
+
+class Order {
+    int quantity;
+    double price;
+    String side;
+
+    Order(int quantity, double price, String side) {
+        this.quantity = quantity;
+        this.price = price;
+        this.side = side;
+    }
+}
+
+final class Orderbook {
+    private final TreeMap<Double, List<Order>> bids = new TreeMap<>(Collections.reverseOrder());
+    private final TreeMap<Double, List<Order>> asks = new TreeMap<>();
+
+    public Orderbook(boolean generateDummies) {
+        if (generateDummies) {
+            Random random = new Random(12);
+
+            for (int i = 0; i < 10; i++) {
+                double randomPrice = 90.0 + random.nextInt(1001) / 100.0;
+                addOrder(random.nextInt(100) + 1, randomPrice, "BUY");
+                addOrder(random.nextInt(100) + 1, randomPrice, "BUY");
+            }
+            
+            for (int i = 0; i < 10; i++) {
+                double randomPrice = 100.0 + random.nextInt(1001) / 100.0;
+                addOrder(random.nextInt(100) + 1, randomPrice, "SELL");
+                addOrder(random.nextInt(100) + 1, randomPrice, "SELL");
+            }
+            
+        }
+    }
+
+    public void addOrder(int qty, double price, String side) {
+        Order order = new Order(qty, price, side.equals("BUY") ? "BUY" : "SELL");
+        TreeMap<Double, List<Order>> book = side.equals("BUY") ? bids : asks;
+
+        book.computeIfAbsent(price, k -> new ArrayList<>()).add(order);
+    }
+
+    public void print() {
+        System.out.println("========== Orderbook =========");
+        printLeg(asks, "ASK");
+
+        double bestAsk = bestQuote("SELL");
+        double bestBid = bestQuote("BUY");
+        System.out.println("====== " + String.format("%.2f", (bestAsk - bestBid) / bestBid * 10000) + "bps ======");
+
+        printLeg(bids, "BUY");
+        System.out.println("==============================\n\n");
+    }
+
+    private void printLeg(TreeMap<Double, List<Order>> book, String side) {
+        if (side.equals("ASK")) {
+            for (Map.Entry<Double, List<Order>> entry : book.entrySet()) {
+                printPriceLevel(entry.getKey(), entry.getValue(), "31");
+            }
+        } else {
+            NavigableSet<Double> descendingKeys = book.navigableKeySet().descendingSet();
+            for (Double key : descendingKeys) {
+                printPriceLevel(key, book.get(key), "32");
+            }
+        }
+    }
+
+    private void printPriceLevel(double price, List<Order> orders, String color) {
+        int totalQuantity = 0;
+        for (Order order : orders) {
+            totalQuantity += order.quantity;
+        }
+        System.out.printf("\t\033[1;%sm\u20B9%6.2f%5d\033[0m ", color, price, totalQuantity);
+        for (int i = 0; i < totalQuantity / 10; i++) {
+            System.out.print("█");
+        }
+        System.out.println();
+    }
+
+    private double bestQuote(String side) {
+        TreeMap<Double, List<Order>> book = side.equals("BUY") ? bids : asks;
+        return book.isEmpty() ? 0.0 : book.firstKey();
+    }
+
+    
+
+    public OrderFill handleOrder(String type, int orderQuantity, String side, double price) {
+        int unitsTransacted = 0;
+        double totalValue = 0.0;
+
+        TreeMap<Double, List<Order>> book = side.equals("BUY") ? asks : bids;
+
+        Iterator<Map.Entry<Double, List<Order>>> iterator = book.entrySet().iterator();
+        while (iterator.hasNext() && orderQuantity > 0) {
+            Map.Entry<Double, List<Order>> entry = iterator.next();
+            double priceLevel = entry.getKey();
+
+            if (type.equals("LIMIT") && ((side.equals("BUY") && priceLevel > price) 
+            || (side.equals("SELL") && priceLevel < price))) {
+                break;
+            }
+
+            List<Order> orders = entry.getValue();
+            Iterator<Order> orderIterator = orders.iterator();
+            while (orderIterator.hasNext() && orderQuantity > 0) {
+                Order order = orderIterator.next();
+
+                if (order.quantity > orderQuantity) {
+                    unitsTransacted += orderQuantity;
+                    totalValue += orderQuantity * priceLevel;
+                    order.quantity -= orderQuantity;
+                    orderQuantity = 0;
+                } else {
+                    unitsTransacted += order.quantity;
+                    totalValue += order.quantity * priceLevel;
+                    orderQuantity -= order.quantity;
+                    orderIterator.remove();
+                }
+            }
+
+            if (orders.isEmpty()) {
+                iterator.remove();
+            }
+        }
+
+        if (type.equals("LIMIT") && orderQuantity > 0) {
+            addOrder(orderQuantity, price, side.equals("BUY") ? "BUY" : "SELL");
+        }
+
+        return new OrderFill(unitsTransacted, totalValue);
+    }
+}
+
+class OrderFill {
+    int unitsTransacted;
+    double totalValue;
+
+    OrderFill(int unitsTransacted, double totalValue) {
+        this.unitsTransacted = unitsTransacted;
+        this.totalValue = totalValue;
+    }
+}
diff --git a/OrderBook/src/main/orderbook/OrderBookApp.java b/OrderBook/src/main/orderbook/OrderBookApp.java
new file mode 100644
index 00000000..1fa9c351
--- /dev/null
+++ b/OrderBook/src/main/orderbook/OrderBookApp.java
@@ -0,0 +1,68 @@
+import java.util.Scanner;
+
+public class OrderBookApp {
+
+    public static void main(String[] args) {
+        Orderbook ob = new Orderbook(true);
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("""
+                             ___          _           ____              _         __    _                  \r
+                            / _ \\ _ __ __| | ___ _ __| __ )  ___   ___ | | __    / /   (_) __ ___   ____ _ \r
+                           | | | | '__/ _` |/ _ \\ '__|  _ \\ / _ \\ / _ \\| |/ /   / /    | |/ _` \\ \\ / / _` |\r
+                           | |_| | | | (_| |  __/ |  | |_) | (_) | (_) |   <   / /     | | (_| |\\ V / (_| |\r
+                            \\___/|_|  \\__,_|\\___|_|  |____/ \\___/ \\___/|_|\\_\\ /_/     _/ |\\__,_| \\_/ \\__,_|\r
+                                                                                     |__/                  """ //
+        //
+        //
+        //
+        //
+        );
+        while (true) {
+            System.out.println("Options\n-----------------------------------\n|1. Print Orderbook               |\n|2. Submit order                  |\n|3. Exit                          |\n-----------------------------------\nChoice: ");
+            int action = scanner.nextInt();
+
+            if (action == 1) {
+                ob.print();
+            } else if (action == 2) {
+                System.out.println("Enter order type:\n1. Market order\n2. Limit order\nSelection: ");
+                int orderTypeInput = scanner.nextInt();
+                String orderType = (orderTypeInput == 1) ? "MARKET" : "LIMIT";
+
+                System.out.println("\nEnter side:\n1. Buy\n2. Sell\nSelection: ");
+                int sideInput = scanner.nextInt();
+                String side = (sideInput == 1) ? "BUY" : "SELL";
+
+                System.out.println("\nEnter order quantity: ");
+                int quantity = scanner.nextInt();
+
+                if (orderType.equals("MARKET")) {
+                    System.out.println("\nSubmitting market " + (side.equals("BUY") ? "buy" : "sell")
+                            + " order for " + quantity + " units..\n");
+
+                    long startTime = System.nanoTime();
+                    OrderFill fill = ob.handleOrder(orderType, quantity, side, 0.0);
+                    long endTime = System.nanoTime();
+
+                    Helpers.printFill(fill, quantity, startTime, endTime);
+                } else if (orderType.equals("LIMIT")) {
+                    System.out.println("\nEnter limit price: ");
+                    double price = scanner.nextDouble();
+
+                    System.out.println("\nSubmitting limit " + (side.equals("BUY") ? "buy" : "sell")
+                            + " order for " + quantity + " units @ \u20B9" + price + "..\n");
+
+                    long startTime = System.nanoTime();
+                    OrderFill fill = ob.handleOrder(orderType, quantity, side, price);
+                    long endTime = System.nanoTime();
+
+                    Helpers.printFill(fill, quantity, startTime, endTime);
+                }
+                System.out.println();
+            } else if(action == 3) {
+                break;
+            }
+        }
+        scanner.close();
+        System.out.println("Program terminated.");
+    }
+}
diff --git a/PDF Sorting with Keyword, Size, and Page Range Filters b/PDF Sorting with Keyword, Size, and Page Range Filters
new file mode 100644
index 00000000..5fcb3178
--- /dev/null
+++ b/PDF Sorting with Keyword, Size, and Page Range Filters	
@@ -0,0 +1,160 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.text.PDFTextStripper;
+
+public class PDFSorterGUI extends JFrame {
+    private JTextField folderTextField;
+    private JTextField keywordsTextField;
+    private JTextField sizeTextField;
+    private JTextField pageRangeTextField;
+    private JTextArea logTextArea;
+
+    private Map<String, String> keywordToDirectoryMap = new HashMap<>();
+    private long minSizeBytes;
+    private int startPage;
+    private int endPage;
+
+    public PDFSorterGUI() {
+        setTitle("PDF Sorter");
+        setSize(600, 400);
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new GridLayout(6, 2));
+
+        panel.add(new JLabel("Select Folder:"));
+        folderTextField = new JTextField();
+        panel.add(folderTextField);
+
+        panel.add(new JLabel("Keywords (comma-separated):"));
+        keywordsTextField = new JTextField();
+        panel.add(keywordsTextField);
+
+        panel.add(new JLabel("Minimum Size (bytes):"));
+        sizeTextField = new JTextField();
+        panel.add(sizeTextField);
+
+        panel.add(new JLabel("Page Range (e.g., 1-5):"));
+        pageRangeTextField = new JTextField();
+        panel.add(pageRangeTextField);
+
+        JButton sortButton = new JButton("Sort PDFs");
+        sortButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                String folderPath = folderTextField.getText();
+                String keywords = keywordsTextField.getText();
+                String sizeStr = sizeTextField.getText();
+                String pageRangeStr = pageRangeTextField.getText();
+
+                // Parse keywords
+                String[] keywordArray = keywords.split(",");
+                keywordToDirectoryMap.clear();
+                for (String keyword : keywordArray) {
+                    keywordToDirectoryMap.put(keyword.trim(), "/path/to/sorted/directory"); // Replace with actual directory
+                }
+
+                // Parse minimum size
+                try {
+                    minSizeBytes = Long.parseLong(sizeStr);
+                } catch (NumberFormatException ex) {
+                    logTextArea.append("Invalid minimum size value.\n");
+                    return;
+                }
+
+                // Parse page range
+                String[] pageRange = pageRangeStr.split("-");
+                if (pageRange.length != 2) {
+                    logTextArea.append("Invalid page range format.\n");
+                    return;
+                }
+                try {
+                    startPage = Integer.parseInt(pageRange[0]);
+                    endPage = Integer.parseInt(pageRange[1]);
+                } catch (NumberFormatException ex) {
+                    logTextArea.append("Invalid page range values.\n");
+                    return;
+                }
+
+                // Sort the PDFs
+                sortPDFs(folderPath);
+            }
+        });
+
+        panel.add(new JLabel());
+        panel.add(sortButton);
+
+        logTextArea = new JTextArea();
+        logTextArea.setEditable(false);
+
+        JScrollPane scrollPane = new JScrollPane(logTextArea);
+
+        getContentPane().add(panel, BorderLayout.NORTH);
+        getContentPane().add(scrollPane, BorderLayout.CENTER);
+    }
+
+    private void sortPDFs(String folderPath) {
+        File directory = new File(folderPath);
+        File[] files = directory.listFiles();
+
+        if (files != null) {
+            for (File file : files) {
+                if (file.isFile() && file.getName().endsWith(".pdf")) {
+                    try {
+                        PDDocument document = PDDocument.load(file);
+                        long fileSize = file.length();
+
+                        if (fileSize < minSizeBytes) {
+                            continue;
+                        }
+
+                        PDFTextStripper pdfTextStripper = new PDFTextStripper();
+                        int pageCount = document.getNumberOfPages();
+
+                        if (pageCount < startPage || pageCount > endPage) {
+                            continue;
+                        }
+
+                        String text = pdfTextStripper.getText(document);
+
+                        for (Map.Entry<String, String> entry : keywordToDirectoryMap.entrySet()) {
+                            String keyword = entry.getKey();
+                            String destinationDirectory = entry.getValue();
+
+                            if (Pattern.compile(Pattern.quote(keyword), Pattern.CASE_INSENSITIVE).matcher(text).find()) {
+                                File destination = new File(destinationDirectory, file.getName());
+                                if (file.renameTo(destination)) {
+                                    logTextArea.append("Moved " + file.getName() + " to " + destinationDirectory + "\n");
+                                } else {
+                                    logTextArea.append("Failed to move " + file.getName() + "\n");
+                                }
+                                break;
+                            }
+                        }
+
+                        document.close();
+                    } catch (IOException e) {
+                        logTextArea.append("Error processing PDF: " + file.getName() + "\n");
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(() -> {
+            PDFSorterGUI sorterGUI = new PDFSorterGUI();
+            sorterGUI.setVisible(true);
+        });
+    }
+}
diff --git a/Password Manager.java b/Password Manager.java
new file mode 100644
index 00000000..954f716b
--- /dev/null
+++ b/Password Manager.java	
@@ -0,0 +1,66 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class PasswordEntry {
+    private String website;
+    private String username;
+    private String password;
+
+    public PasswordEntry(String website, String username, String password) {
+        this.website = website;
+        this.username = username;
+        this.password = password;
+    }
+
+    // Getters and setters for password entry details
+}
+
+public class PasswordManagerApp {
+    private static ArrayList<PasswordEntry> passwordEntries = new ArrayList<>();
+    private static String masterPassword;
+
+    public static void main(String[] args) {
+        // Implement a login system using the master password
+        // If the user logs in successfully, proceed to the password manager interface
+
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            displayMenu();
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline character
+
+            switch (choice) {
+                case 1:
+                    addPasswordEntry(scanner);
+                    break;
+                case 2:
+                    viewPasswordEntries();
+                    break;
+                case 3:
+                    generatePassword(scanner);
+                    break;
+                case 4:
+                    changeMasterPassword(scanner);
+                    break;
+                case 5:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    // Implement methods for adding, viewing, generating, and managing password entries
+
+    private static void displayMenu() {
+        System.out.println("\nPassword Manager");
+        System.out.println("1. Add a new password entry");
+        System.out.println("2. View password entries");
+        System.out.println("3. Generate a new password");
+        System.out.println("4. Change master password");
+        System.out.println("5. Exit");
+        System.out.print("Enter your choice: ");
+    }
+}
diff --git a/PasswordUtil.java b/PasswordUtil.java
new file mode 100644
index 00000000..982ecbf2
--- /dev/null
+++ b/PasswordUtil.java
@@ -0,0 +1,63 @@
+import java.util.Random;
+
+public class PasswordUtil {
+				
+		public static boolean validate(String password) {
+//			return password.matches("((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{8,20})");
+			return validate2(password);
+		}
+		
+		public static boolean hasSymbol(String password) {
+			return password.matches(".*[@#$%].*");
+		}
+		
+		public static boolean hasUppercase(String password) {
+			return password.matches(".*[A-Z].*");
+		}
+		
+		public static boolean hasLowerCase(String password) {
+			return password.matches(".*[a-z].*");
+		}
+		
+		public static boolean hasDigit(String password) {
+			return password.matches(".*\\d.*");
+		}
+		
+		public static boolean validate2(String pass) {
+				boolean flag = true;
+				
+				if (pass.length() < 8) {
+						//Password must have more than 8 chars
+						flag = false;
+				} else if (!hasDigit(pass)) {
+						//Password must contains digit
+						flag = false;
+				} else if (!hasSymbol(pass)) {
+						//Password must contains symbol
+						flag = false;
+				} else if (!hasUppercase(pass)) {
+						//Password must contains Upper case
+						flag = false;
+				} else if (!hasLowerCase(pass)) {
+						//Password must contains Lower case
+						flag = false;
+				}
+				
+				return flag;
+		}
+		
+		public static String generatePassword(int len) {
+				Random rnd = new Random();
+				String AB = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@#$%&";
+				StringBuilder sb = new StringBuilder(len);
+				for (int i = 0; i < len; i++) {
+					sb.append(AB.charAt(rnd.nextInt(AB.length())));
+				}
+				if(validate2(sb.toString())){
+				    return sb.toString();
+				}else{
+				   return generatePassword(12);
+				}
+		}
+		
+}
diff --git a/Patience_game/PatienceGame.java b/Patience_game/PatienceGame.java
new file mode 100644
index 00000000..d70533bf
--- /dev/null
+++ b/Patience_game/PatienceGame.java
@@ -0,0 +1,300 @@
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Stack;
+
+public class PatienceGame {
+
+  private static final int NUM_LANES = 7;
+  private static final int NUM_SUITS = 4;
+  private static final int NUM_CARDS_PER_SUIT = 13;
+
+  private Stack<Card> drawPile = new Stack<>();
+  private List<Stack<Card>> lanes = new ArrayList<>(NUM_LANES);
+  private List<Stack<Card>> suitPiles = new ArrayList<>(NUM_SUITS);
+  private Stack<Card> uncoveredPile = new Stack<>();
+  private int score = 0;
+  private int moves = 0;
+
+  public PatienceGame() {
+    initializeGame();
+  }
+
+  // Add this method to the PatienceGame class
+  private void moveUncoveredCardToSuit(char suitLabel) {
+    int suitIndex = getLabelIndex(suitLabel);
+    if (suitIndex >= NUM_LANES && suitIndex < NUM_LANES + NUM_SUITS) {
+      if (uncoveredPile.isEmpty()) {
+        System.out.println("Uncovered pile is empty.");
+      } else {
+        Card card = uncoveredPile.peek();
+        if (suitPiles.get(suitIndex - NUM_LANES).isEmpty()) {
+          if (card.getValue() == 1) {
+            suitPiles.get(suitIndex - NUM_LANES).push(uncoveredPile.pop());
+            calculateScore(card, 'P', suitLabel);
+            moves++;
+          } else {
+            System.out.println("Invalid move. Only Aces can start a new pile.");
+          }
+        } else {
+          Card topCard = suitPiles.get(suitIndex - NUM_LANES).peek();
+          if (
+            topCard.isOneValueHigher(card) &&
+            topCard.getSuit() == card.getSuit()
+          ) {
+            suitPiles.get(suitIndex - NUM_LANES).push(uncoveredPile.pop());
+            calculateScore(card, 'P', suitLabel);
+            moves++;
+          } else {
+            System.out.println("Invalid move. Check the destination pile.");
+          }
+        }
+      }
+    } else {
+      System.out.println("Invalid command. Cannot move to a lane.");
+    }
+  }
+
+  private void initializeGame() {
+    // Create and shuffle a deck of cards
+    List<Card> deck = new ArrayList<>();
+    for (int suit = 0; suit < NUM_SUITS; suit++) {
+      for (int value = 1; value <= NUM_CARDS_PER_SUIT; value++) {
+        deck.add(new Card(suit, value));
+      }
+    }
+    Collections.shuffle(deck);
+
+    // Initialize the draw pile with the shuffled deck
+    drawPile.addAll(deck);
+
+    // Initialize lanes and suit piles
+    for (int i = 0; i < NUM_LANES; i++) {
+      lanes.add(new Stack<>());
+    }
+    for (int i = 0; i < NUM_SUITS; i++) {
+      suitPiles.add(new Stack<>());
+    }
+  }
+
+  public void playGame() {
+    Scanner scanner = new Scanner(System.in);
+    while (true) {
+      displayGameState();
+      System.out.print("Enter a command (Q, D, or move): ");
+      String command = scanner.nextLine().toUpperCase();
+
+      if (command.equals("Q")) {
+        System.out.println("Game Over. Final Score: " + score);
+        break;
+      } else if (command.equals("D")) {
+        drawCard();
+      } else if (command.length() == 2) {
+        moveCard(command);
+      } else if (command.length() == 3) {
+        moveMultipleCards(command);
+      } else {
+        System.out.println("Invalid command. Please try again.");
+      }
+
+      if (isGameOver()) {
+        System.out.println("Congratulations! You won the game!");
+        break;
+      }
+    }
+    scanner.close();
+  }
+
+  private void displayGameState() {
+
+    String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
+        String[] suits = {"H", "D", "S", "C"};
+
+        for (String suit : suits) {
+            for (String rank : ranks) {
+                String card = rank + suit;
+                System.out.print(card + " ");
+            }
+            System.out.println(); // Start a new line for the next suit
+        }
+        
+    System.out.println("Score: " + score);
+    System.out.println("Moves: " + moves);
+    System.out.println("Draw Pile: " + drawPile.size() + " cards");
+    System.out.println("Uncovered Pile: " + uncoveredPile.size() + " cards");
+    for (int i = 0; i < NUM_LANES; i++) {
+      System.out.println(
+        "Lane " + (i + 1) + ": " + lanes.get(i).size() + " cards"
+      );
+    }
+    for (int i = 0; i < NUM_SUITS; i++) {
+      System.out.println(
+        "Suit " +
+        Card.SUIT_LABELS[i] +
+        ": " +
+        suitPiles.get(i).size() +
+        " cards"
+      );
+    }
+  }
+
+  private void drawCard() {
+    if (!drawPile.isEmpty()) {
+      Card card = drawPile.pop();
+      uncoveredPile.push(card);
+      moves++;
+    } else {
+      System.out.println("Draw pile is empty. Cannot draw a card.");
+    }
+  }
+
+  private void moveCard(String command) {
+    char fromLabel = command.charAt(0);
+    char toLabel = command.charAt(1);
+    int fromIndex = getLabelIndex(fromLabel);
+    int toIndex = getLabelIndex(toLabel);
+
+    if (fromIndex != -1 && toIndex != -1) {
+      if (fromLabel == 'P') {
+        moveUncoveredCardToSuit(toLabel);
+      } else if (fromLabel >= '1' && fromLabel <= '7') {
+        Card card = lanes.get(fromIndex).peek();
+        if (canMoveCard(card, toIndex)) {
+          lanes.get(toIndex).push(lanes.get(fromIndex).pop());
+          calculateScore(card, fromLabel, toLabel);
+          moves++;
+        } else {
+          System.out.println("Invalid move. Check the destination pile.");
+        }
+      }
+    } else {
+      System.out.println("Invalid labels.");
+    }
+  }
+
+  private void moveMultipleCards(String command) {
+    char fromLabel = command.charAt(0);
+    char toLabel = command.charAt(1);
+    int number = Character.getNumericValue(command.charAt(2));
+    int fromIndex = getLabelIndex(fromLabel);
+    int toIndex = getLabelIndex(toLabel);
+
+    if (fromIndex != -1 && toIndex != -1) {
+      if (lanes.get(fromIndex).size() >= number) {
+        List<Card> cardsToMove = new ArrayList<>();
+        for (int i = 0; i < number; i++) {
+          cardsToMove.add(
+            lanes.get(fromIndex).get(lanes.get(fromIndex).size() - 1 - i)
+          );
+        }
+        if (canMoveCards(cardsToMove, toIndex)) {
+          for (Card card : cardsToMove) {
+            lanes.get(toIndex).push(lanes.get(fromIndex).pop());
+            calculateScore(card, fromLabel, toLabel);
+          }
+          moves++;
+        } else {
+          System.out.println("Invalid move. Check the destination pile.");
+        }
+      } else {
+        System.out.println("Not enough cards in the source lane.");
+      }
+    } else {
+      System.out.println("Invalid labels.");
+    }
+  }
+
+  private int getLabelIndex(char label) {
+    if (label == 'P') {
+      return NUM_LANES;
+    } else if (label >= '1' && label <= '7') {
+      return Character.getNumericValue(label) - 1;
+    } else if (label >= 'D' && label <= 'S') {
+      return NUM_LANES + label - 'D';
+    }
+    return -1;
+  }
+
+  private boolean canMoveCard(Card card, int toIndex) {
+    if (lanes.get(toIndex).isEmpty()) {
+      return card.getValue() == 13; // Only Kings can start a new pile
+    } else {
+      Card topCard = lanes.get(toIndex).peek();
+      return topCard.isOneValueHigher(card) && topCard.isOppositeColor(card);
+    }
+  }
+
+  private boolean canMoveCards(List<Card> cards, int toIndex) {
+    if (lanes.get(toIndex).isEmpty()) {
+      return cards.get(0).getValue() == 13; // Only Kings can start a new pile
+    } else {
+      Card topCard = lanes.get(toIndex).peek();
+      return (
+        topCard.isOneValueHigher(cards.get(cards.size() - 1)) &&
+        topCard.isOppositeColor(cards.get(cards.size() - 1))
+      );
+    }
+  }
+
+  private void calculateScore(Card card, char fromLabel, char toLabel) {
+    if (fromLabel == 'P' && (toLabel >= 'D' && toLabel <= 'S')) {
+      score += 10; // From uncovered pile to suit
+    } else if (
+      fromLabel >= '1' && fromLabel <= '7' && (toLabel >= 'D' && toLabel <= 'S')
+    ) {
+      score += 20; // From lane to suit
+    } else if (
+      (fromLabel >= '1' && fromLabel <= '7') &&
+      (toLabel >= '1' && toLabel <= '7')
+    ) {
+      score += 5; // Between lanes
+    }
+  }
+
+  private boolean isGameOver() {
+    for (Stack<Card> suitPile : suitPiles) {
+      if (suitPile.size() < NUM_CARDS_PER_SUIT) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  public static void main(String[] args) {
+    PatienceGame game = new PatienceGame();
+    game.playGame();
+  }
+}
+
+class Card {
+    public static final String[] SUIT_LABELS = {"D", "H", "C", "S"};
+    private int suit;
+    private int value;
+
+    public Card(int suit, int value) {
+        this.suit = suit;
+        this.value = value;
+    }
+
+    public int getSuit() {
+        return suit;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public char getLabel() {
+        return SUIT_LABELS[suit].charAt(0);
+    }
+
+    public boolean isOneValueHigher(Card other) {
+        return this.value - other.value == 1;
+    }
+
+public boolean isOppositeColor(Card other) {
+    return (this.suit < 2 && other.suit >= 2) || (this.suit >= 2 && other.suit < 2);
+}
+
+}
\ No newline at end of file
diff --git a/Pirate_Adventure_Game/src/entities/Crabby.java b/Pirate_Adventure_Game/src/entities/Crabby.java
new file mode 100644
index 00000000..c7b83b2b
--- /dev/null
+++ b/Pirate_Adventure_Game/src/entities/Crabby.java
@@ -0,0 +1,76 @@
+package entities;
+
+import main.Game;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+
+import static utils.Constants.EnemyConstants.*;
+import static utils.Constants.Directions.*;
+
+public class Crabby extends Enemy {
+    private Rectangle2D.Float attackBox;
+    private int attackBoxOffsetX;
+
+    public Crabby(float x, float y) {
+        super(x, y, CRABBY_WIDTH, CRABBY_HEIGHT, CRABBY);
+        initHitbox(x, y, (int) (22 * Game.SCALE), (int) (27 * Game.SCALE));
+        initAttackBox();
+    }
+
+    private void initAttackBox() {
+        attackBox = new Rectangle2D.Float(x, y, (int) (70 * Game.SCALE), (int) (25 * Game.SCALE));
+        attackBoxOffsetX = (int) (Game.SCALE);
+    }
+
+    public void update(int[][] levelData, Player player) {
+        updateMove(levelData, player);
+        updateAnimationMovement();
+        updateAttackBox();
+    }
+
+    private void updateAttackBox() {
+        attackBox.x = hitbox.x - attackBoxOffsetX;
+        attackBox.y = hitbox.y;
+    }
+
+    private void updateMove(int[][] levelData, Player player) {
+        if (firstUpdate)
+            firstUpdateCheck(levelData);
+        if (inAir) {
+            updateInAir(levelData);
+        } else {
+            switch (enemyState) {
+                case IDLE:
+                    newState(RUNNING);
+                    break;
+                case RUNNING:
+                    if (canSeePlayer(levelData, player))
+                        turnTowardsPlayer(player);
+                    if (isPlayerCloseToAttack(player))
+                        newState(ATTACK);
+                    move(levelData);
+                    break;
+            }
+        }
+    }
+
+    public void drawAttackBox(Graphics graphics, int xLevelOffset) {
+        graphics.setColor(Color.red);
+        graphics.drawRect((int) (attackBox.x - xLevelOffset), (int) attackBox.y, (int) attackBox.width, (int) attackBox.height);
+    }
+
+    public int flipX() {
+        if (walkDir == RIGHT)
+            return width;
+        else
+            return 0;
+    }
+
+    public int flipW() {
+        if (walkDir == RIGHT)
+            return -1;
+        else
+            return 1;
+    }
+}
\ No newline at end of file
diff --git a/Pirate_Adventure_Game/src/entities/Enemy.java b/Pirate_Adventure_Game/src/entities/Enemy.java
new file mode 100644
index 00000000..26a11c7d
--- /dev/null
+++ b/Pirate_Adventure_Game/src/entities/Enemy.java
@@ -0,0 +1,162 @@
+package entities;
+
+import main.Game;
+
+import java.awt.*;
+
+import static utils.Constants.EnemyConstants.*;
+import static utils.HelpMethods.*;
+import static utils.Constants.Directions.*;
+
+
+public abstract class Enemy extends Entity {
+    protected int animationIndex, enemyState, enemyType;
+    protected int animationMovement, animationSpeed = 25;
+    protected boolean firstUpdate = true;
+    protected boolean inAir = false;
+    protected float fallSpeed;
+    protected float gravity = 0.04f * Game.SCALE;
+    protected float walkSpeed = 0.35f * Game.SCALE;
+    protected int walkDir = LEFT;
+    protected int tileY;
+    protected float attackDistance = Game.TILES_SIZE;
+
+    public Enemy(float x, float y, int width, int height, int enemyType) {
+        super(x, y, width, height);
+        this.enemyType = enemyType;
+        initHitbox(x, y, width, height);
+    }
+
+    protected void firstUpdateCheck(int[][] levelData) {
+        if (!isEntityOnFloor(hitbox, levelData))
+            inAir = true;
+        firstUpdate = false;
+    }
+
+    protected void updateInAir(int[][] levelData) {
+        if (canMoveHere(hitbox.x, hitbox.y + fallSpeed, hitbox.width, hitbox.height, levelData)) {
+            hitbox.y += fallSpeed;
+            fallSpeed += gravity;
+        } else {
+            inAir = false;
+            hitbox.y = getEntityYPosUnderRoofOrAboveFloor(hitbox, fallSpeed);
+            tileY = (int) (hitbox.y / Game.TILES_SIZE);
+        }
+    }
+
+    protected void move(int[][] levelData) {
+        float xSpeed = 0;
+        if (walkDir == LEFT)
+            xSpeed = -walkSpeed;
+        else
+            xSpeed = walkSpeed;
+        if (canMoveHere(hitbox.x + xSpeed, hitbox.y, hitbox.width, hitbox.height, levelData))
+            if (isFloor(hitbox, xSpeed, levelData)) {
+                hitbox.x += xSpeed;
+                return;
+            }
+        changeWalkDir();
+    }
+
+    protected void turnTowardsPlayer(Player player) {
+        if (player.hitbox.x > hitbox.x)
+            walkDir = RIGHT;
+        else
+            walkDir = LEFT;
+    }
+
+    protected boolean canSeePlayer(int[][] levelData, Player player) {
+        int playerTileY = (int) (player.getHitbox().y / Game.TILES_SIZE);
+        if (playerTileY == tileY)
+            if (isPlayerInRange(player)) {
+                if (isSightClear(levelData, hitbox, player.hitbox, tileY))
+                    return true;
+            }
+        return false;
+    }
+
+    protected boolean isPlayerInRange(Player player) {
+        int absValue = (int) Math.abs(player.hitbox.x - hitbox.x);
+        return absValue <= attackDistance * 5;
+    }
+
+    protected boolean isPlayerCloseToAttack(Player player) {
+        int absValue = (int) Math.abs(player.hitbox.x - hitbox.x);
+        return absValue <= attackDistance;
+    }
+
+    protected void newState(int enemyState) {
+        this.enemyState = enemyState;
+        animationMovement = 0;
+        animationIndex = 0;
+    }
+
+    protected void updateAnimationMovement() {
+        animationMovement++;
+        if (animationMovement >= animationSpeed) {
+            animationMovement = 0;
+            animationIndex++;
+            if (animationIndex >= getPositionsAmount(enemyType, enemyState)) {
+                animationIndex = 0;
+                if (enemyState == ATTACK)
+                    enemyState = IDLE;
+            }
+        }
+    }
+
+    public void update(int[][] levelData) {
+        updateMove(levelData);
+        updateAnimationMovement();
+    }
+
+    private void updateMove(int[][] levelData) {
+        if (firstUpdate) {
+            if (!isEntityOnFloor(hitbox, levelData))
+                inAir = true;
+            firstUpdate = false;
+        }
+        if (inAir) {
+            if (canMoveHere(hitbox.x, hitbox.y + fallSpeed, hitbox.width, hitbox.height, levelData)) {
+                hitbox.y += fallSpeed;
+                fallSpeed += gravity;
+            } else {
+                inAir = false;
+                hitbox.y = getEntityYPosUnderRoofOrAboveFloor(hitbox, fallSpeed);
+            }
+        } else {
+            switch (enemyState) {
+                case IDLE:
+                    enemyState = RUNNING;
+                    break;
+                case RUNNING:
+                    float xSpeed = 0;
+                    if (walkDir == LEFT)
+                        xSpeed = -walkSpeed;
+                    else
+                        xSpeed = walkSpeed;
+                    if (canMoveHere(hitbox.x + xSpeed, hitbox.y, hitbox.width, hitbox.height, levelData))
+                        if (isFloor(hitbox, xSpeed, levelData)) {
+                            hitbox.x += xSpeed;
+                            return;
+                        }
+                    changeWalkDir();
+                    break;
+            }
+        }
+    }
+
+    protected void changeWalkDir() {
+        if (walkDir == LEFT)
+            walkDir = RIGHT;
+        else
+            walkDir = LEFT;
+    }
+
+    public int getAnimationIndex() {
+        return animationIndex;
+    }
+
+    public int getEnemyState() {
+        return enemyState;
+    }
+}
\ No newline at end of file
diff --git a/Pirate_Adventure_Game/src/entities/EnemyManager.java b/Pirate_Adventure_Game/src/entities/EnemyManager.java
new file mode 100644
index 00000000..fb9c220c
--- /dev/null
+++ b/Pirate_Adventure_Game/src/entities/EnemyManager.java
@@ -0,0 +1,54 @@
+package entities;
+
+import gamestates.Playing;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+
+import static utils.Constants.EnemyConstants.*;
+
+public class EnemyManager {
+    private Playing playing;
+    private BufferedImage[][] crabbyArr;
+    private ArrayList<Crabby> crabbies = new ArrayList<Crabby>();
+
+    public EnemyManager(Playing playing) {
+        this.playing = playing;
+        loadEnemyImgs();
+        addEnemies();
+    }
+
+    private void addEnemies() {
+        crabbies = LoadSave.getCrabs();
+        System.out.println("size of crabs: " + crabbies.size());
+    }
+
+    private void loadEnemyImgs() {
+        crabbyArr = new BufferedImage[5][9];
+        BufferedImage temp = LoadSave.getPositionsAtlas(LoadSave.CRABBY_ATLAS);
+        for (int i = 0; i < crabbyArr.length; i++)
+            for (int j = 0; j < crabbyArr[i].length; j++)
+                crabbyArr[i][j] = temp.getSubimage(j * CRABBY_WIDTH_DEFAULT, i * CRABBY_HEIGHT_DEFAULT, CRABBY_WIDTH_DEFAULT, CRABBY_HEIGHT_DEFAULT);
+    }
+
+    public void update(int[][] levelData, Player player) {
+        for (Crabby c : crabbies)
+            c.update(levelData, player);
+    }
+
+    public void draw(Graphics graphics, int xLevelOffset) {
+        drawCrabs(graphics, xLevelOffset);
+    }
+
+    private void drawCrabs(Graphics graphics, int xLevelOffset) {
+        for (Crabby c : crabbies) {
+            graphics.drawImage(crabbyArr[c.getEnemyState()][c.getAnimationIndex()],
+                    (int) c.getHitbox().x - xLevelOffset + c.flipX(),
+                    (int) c.getHitbox().y, CRABBY_WIDTH * c.flipW(), CRABBY_HEIGHT, null);
+            c.drawAttackBox(graphics, xLevelOffset);
+        }
+    }
+
+}
diff --git a/Pirate_Adventure_Game/src/entities/Entity.java b/Pirate_Adventure_Game/src/entities/Entity.java
new file mode 100644
index 00000000..f716b69a
--- /dev/null
+++ b/Pirate_Adventure_Game/src/entities/Entity.java
@@ -0,0 +1,32 @@
+package entities;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+
+public abstract class Entity {
+    protected float x, y;
+    protected int width, height;
+
+    protected Rectangle2D.Float hitbox;
+
+    public Entity(float x, float y, int width, int height) {
+        this.x = x;
+        this.y = y;
+        this.height = height;
+        this.width = width;
+    }
+
+    protected void initHitbox(float x, float y, float width, float height) {
+        hitbox = new Rectangle2D.Float(x, y, width, height);
+    }
+
+
+    protected void drawHitbox(Graphics graphics, int xLevelOffset) {
+        graphics.setColor(Color.PINK);
+        graphics.drawRect((int) hitbox.x - xLevelOffset, (int) hitbox.y, (int) hitbox.width, (int) hitbox.height);
+    }
+
+    public Rectangle2D.Float getHitbox() {
+        return hitbox;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/entities/Player.java b/Pirate_Adventure_Game/src/entities/Player.java
new file mode 100644
index 00000000..0bc82697
--- /dev/null
+++ b/Pirate_Adventure_Game/src/entities/Player.java
@@ -0,0 +1,277 @@
+package entities;
+
+import main.Game;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.PlayerConstants.*;
+
+import static utils.HelpMethods.*;
+import static utils.HelpMethods.getEntityXPosNextToWall;
+
+public class Player extends Entity {
+
+    private BufferedImage[][] pirateAnimation;
+
+    private int animationMovement, animationIndex, animationSpeed = 25;
+    private int playerAction = STAYING;
+    private boolean moving = false, attacking = false;
+    private int[][] levelData;
+    private float playerSpeed = 1.0f * Game.SCALE;
+    private boolean left, right, up, down, jump;
+    private float xDrawOffset = 21 * Game.SCALE;
+    private float yDrawOffset = 4 * Game.SCALE;
+    private float airSpeed = 0f;
+    private float gravity = 0.04f * Game.SCALE;
+    private float jumpSpeed = -2.25f * Game.SCALE;
+    private float fallSpeedAfterCollision = 0.5f * Game.SCALE;
+    private boolean inAir = false;
+
+    private BufferedImage statusBarImg;
+
+    private int statusBarWidth = (int) (192 * Game.SCALE);
+    private int statusBarHeight = (int) (58 * Game.SCALE);
+    private int statusBarX = (int) (10 * Game.SCALE);
+    private int statusBarY = (int) (10 * Game.SCALE);
+
+
+    private int healthBarWidth = (int) (150 * Game.SCALE);
+    private int healthBarHeight = (int) (4 * Game.SCALE);
+    private int healthBarXStart = (int) (34 * Game.SCALE);
+    private int healthBarYStart = (int) (14 * Game.SCALE);
+    private int maxHealth = 100;
+    private int currentHealth = maxHealth;
+    private int healthWidth = healthBarWidth;
+    private Rectangle2D.Float attackBox;
+    private int flipX = 0;
+    private int flipW = 1;
+
+
+    public Player(float x, float y, int width, int height) {
+        super(x, y, width, height);
+        loadAnimations();
+        initHitbox(x, y, (int) (20 * Game.SCALE), (int) (27 * Game.SCALE));
+        initAttackBox();
+    }
+
+    private void initAttackBox() {
+        attackBox = new Rectangle2D.Float(x, y, (int) (20 * Game.SCALE), (int) (20 * Game.SCALE));
+    }
+
+    public boolean isLeft() {
+        return left;
+    }
+
+    public void setLeft(boolean left) {
+        this.left = left;
+    }
+
+    public boolean isRight() {
+        return right;
+    }
+
+    public void setRight(boolean right) {
+        this.right = right;
+    }
+
+    public void setAttacking(boolean attacking) {
+        this.attacking = attacking;
+    }
+
+    public boolean isUp() {
+        return up;
+    }
+
+    public void setUp(boolean up) {
+        this.up = up;
+    }
+
+    public boolean isDown() {
+        return down;
+    }
+
+    public void setDown(boolean down) {
+        this.down = down;
+    }
+
+    public void setJump(boolean jump) {
+        this.jump = jump;
+    }
+
+    public void resetDirectionBoolean() {
+        left = false;
+        right = false;
+        up = false;
+        down = false;
+    }
+
+    public void update() {
+        updateHealthBar();
+        updateAttackBox();
+        updatePosition();
+        updateAnimationMovement();
+        setAnimation();
+    }
+
+    private void updateAttackBox() {
+        if (right) {
+            attackBox.x = hitbox.x + hitbox.width + (int) (Game.SCALE * 10);
+        } else if (left) {
+            attackBox.x = hitbox.x - hitbox.width - (int) (Game.SCALE * 10);
+        }
+        attackBox.y = hitbox.y + (Game.SCALE * 10);
+    }
+
+    private void updateHealthBar() {
+        healthWidth = (int) ((currentHealth / (float) maxHealth) * healthBarWidth);
+    }
+
+    public void render(Graphics graphics, int levelOffset) {
+        graphics.drawImage(pirateAnimation[playerAction][animationIndex],
+                (int) (hitbox.x - xDrawOffset) - levelOffset + flipX,
+                (int) (hitbox.y - yDrawOffset),
+                width * flipW, height, null);
+//        drawHitbox(graphics, levelOffset);
+        drawAttackBox(graphics, levelOffset);
+
+        drawUI(graphics);
+    }
+
+    private void drawAttackBox(Graphics graphics, int levelOffsetX) {
+        graphics.setColor(Color.red);
+        graphics.drawRect((int) attackBox.x - levelOffsetX, (int) attackBox.y, (int) attackBox.width, (int) attackBox.height);
+    }
+
+    private void drawUI(Graphics graphics) {
+        graphics.drawImage(statusBarImg, statusBarX, statusBarY, statusBarWidth, statusBarHeight, null);
+        graphics.setColor(Color.red);
+        graphics.fillRect(healthBarXStart + statusBarX, healthBarYStart + statusBarY, healthWidth, healthBarHeight);
+    }
+
+    private void loadAnimations() {
+        BufferedImage img = LoadSave.getPositionsAtlas(LoadSave.PLAYER_ATLAS);
+
+        pirateAnimation = new BufferedImage[7][8];
+        for (int i = 0; i < pirateAnimation.length; i++)
+            for (int j = 0; j < pirateAnimation[i].length; j++) {
+                pirateAnimation[i][j] = img.getSubimage(j * 64, i * 40, 64, 40);
+            }
+        statusBarImg = LoadSave.getPositionsAtlas(LoadSave.STATUS_BAR);
+    }
+
+    public void loadLevelData(int[][] levelData) {
+        this.levelData = levelData;
+        if (!isEntityOnFloor(hitbox, levelData))
+            inAir = true;
+    }
+
+    private void updatePosition() {
+        moving = false;
+        if (jump)
+            jump();
+
+        if (!inAir)
+            if (!right && !left || (right && left))
+                return;
+
+        float xSpeed = 0;
+
+        if (left) {
+            xSpeed -= playerSpeed;
+            flipX = width;
+            flipW = -1;
+        }
+        if (right) {
+            xSpeed += playerSpeed;
+            flipX = 0;
+            flipW = 1;
+        }
+        if (!inAir) {
+            if (!isEntityOnFloor(hitbox, levelData))
+                inAir = true;
+        }
+
+        if (inAir) {
+            if (canMoveHere(hitbox.x, hitbox.y + airSpeed, hitbox.width, hitbox.height, levelData)) {
+                hitbox.y += airSpeed;
+                airSpeed += gravity;
+                updateXPos(xSpeed);
+            } else {
+                hitbox.y = getEntityYPosUnderRoofOrAboveFloor(hitbox, airSpeed);
+                if (airSpeed > 0)
+                    resetInAir();
+                else
+                    airSpeed = fallSpeedAfterCollision;
+                updateXPos(xSpeed);
+            }
+        } else
+            updateXPos(xSpeed);
+        moving = true;
+    }
+
+    private void jump() {
+        if (inAir)
+            return;
+        inAir = true;
+        airSpeed = jumpSpeed;
+    }
+
+    private void resetInAir() {
+        inAir = false;
+        airSpeed = 0;
+    }
+
+    private void updateXPos(float xSpeed) {
+        if (canMoveHere(hitbox.x + xSpeed, hitbox.y, hitbox.width, hitbox.height, levelData)) {
+            hitbox.x += xSpeed;
+        } else {
+            hitbox.x = getEntityXPosNextToWall(hitbox, xSpeed);
+        }
+    }
+
+    public void chaneHealth(int value) {
+        currentHealth += value;
+        if (currentHealth <= 0)
+            currentHealth = 0;
+        else if (currentHealth >= maxHealth)
+            currentHealth = maxHealth;
+    }
+
+    private void setAnimation() {
+        int startAnimation = playerAction;
+        if (moving)
+            playerAction = RUNNING;
+        else
+            playerAction = STAYING;
+        if (inAir) {
+            if (airSpeed < 0)
+                playerAction = JUMP;
+            else
+                playerAction = FALLING;
+        }
+        if (attacking)
+            playerAction = ATTACK;
+        if (startAnimation != playerAction)
+            resetAnimationMovement();
+    }
+
+    private void resetAnimationMovement() {
+        animationMovement = 0;
+        animationIndex = 0;
+    }
+
+    private void updateAnimationMovement() {
+        animationMovement++;
+        if (animationMovement >= animationSpeed) {
+            animationMovement = 0;
+            animationIndex++;
+            if (animationIndex >= getSpriteAmount(playerAction)) {
+                animationIndex = 0;
+                attacking = false;
+            }
+        }
+    }
+}
diff --git a/Pirate_Adventure_Game/src/gamestates/GameState.java b/Pirate_Adventure_Game/src/gamestates/GameState.java
new file mode 100644
index 00000000..80181fee
--- /dev/null
+++ b/Pirate_Adventure_Game/src/gamestates/GameState.java
@@ -0,0 +1,6 @@
+package gamestates;
+
+public enum GameState {
+    PLAYING, MENU, OPTIONS, QUIT;
+    public static GameState state = MENU;
+}
diff --git a/Pirate_Adventure_Game/src/gamestates/Menu.java b/Pirate_Adventure_Game/src/gamestates/Menu.java
new file mode 100644
index 00000000..21fc4349
--- /dev/null
+++ b/Pirate_Adventure_Game/src/gamestates/Menu.java
@@ -0,0 +1,106 @@
+package gamestates;
+
+import main.Game;
+import ui.MenuButton;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.image.BufferedImage;
+
+public class Menu extends State implements StateMethods {
+    private MenuButton[] buttons = new MenuButton[3];
+    private BufferedImage backgroundImg, backgroundImgPink;
+    private int menuX, menuY, menuWidth, menuHeight;
+
+    public Menu(Game game) {
+        super(game);
+        loadButtons();
+        loadBackground();
+        backgroundImgPink = LoadSave.getPositionsAtlas(LoadSave.MENU_BACKGROUND_IMG);
+    }
+
+    private void loadBackground() {
+        backgroundImg = LoadSave.getPositionsAtlas(LoadSave.MENU_BOARD);
+        menuWidth = (int) (backgroundImg.getWidth() * Game.SCALE);
+        menuHeight = (int) (backgroundImg.getHeight() * Game.SCALE);
+        menuX = Game.GAME_WIDTH / 2 - menuWidth / 2;
+        menuY = (int) (45 * Game.SCALE);
+
+    }
+
+    private void loadButtons() {
+        buttons[0] = new MenuButton(Game.GAME_WIDTH / 2, (int) (150 * Game.SCALE), 0, GameState.PLAYING);
+        buttons[1] = new MenuButton(Game.GAME_WIDTH / 2, (int) (220 * Game.SCALE), 1, GameState.OPTIONS);
+        buttons[2] = new MenuButton(Game.GAME_WIDTH / 2, (int) (290 * Game.SCALE), 2, GameState.QUIT);
+
+    }
+
+    @Override
+    public void update() {
+        for (MenuButton mb : buttons)
+            mb.update();
+    }
+
+    @Override
+    public void draw(Graphics graphics) {
+        graphics.drawImage(backgroundImgPink, 0, 0, Game.GAME_WIDTH, Game.GAME_HEIGHT, null);
+        graphics.drawImage(backgroundImg, menuX, menuY, menuWidth, menuHeight, null);
+        for (MenuButton mb : buttons)
+            mb.draw(graphics);
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        for (MenuButton mb : buttons)
+            if (isIn(e, mb)) {
+                mb.setMousePressed(true);
+                break;
+            }
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+        for (MenuButton mb : buttons) {
+            if (isIn(e, mb)) {
+                if (mb.isMousePressed())
+                    mb.applyGameState();
+                break;
+            }
+        }
+        resetButtons();
+    }
+
+    private void resetButtons() {
+        for (MenuButton mb : buttons)
+            mb.resetBools();
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent e) {
+        for (MenuButton mb : buttons)
+            mb.setMouseOver(false);
+        for (MenuButton mb : buttons)
+            if (isIn(e, mb)) {
+                mb.setMouseOver(true);
+                break;
+            }
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        if (e.getKeyCode() == KeyEvent.VK_ENTER)
+            GameState.state = GameState.PLAYING;
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+
+    }
+}
diff --git a/Pirate_Adventure_Game/src/gamestates/Playing.java b/Pirate_Adventure_Game/src/gamestates/Playing.java
new file mode 100644
index 00000000..c0a89aa9
--- /dev/null
+++ b/Pirate_Adventure_Game/src/gamestates/Playing.java
@@ -0,0 +1,178 @@
+package gamestates;
+
+import entities.EnemyManager;
+import entities.Player;
+import levels.LevelManager;
+import main.Game;
+import ui.PauseOverlay;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.image.BufferedImage;
+import java.util.Random;
+
+import static utils.Constants.Environment.*;
+
+public class Playing extends State implements StateMethods {
+    private Player player;
+    private LevelManager levelManager;
+    private EnemyManager enemyManager;
+    private PauseOverlay pauseOverlay;
+    private boolean paused = false;
+    private int xLevelOffset;
+    private int leftBorder = (int) (0.2 * Game.GAME_WIDTH);
+    private int rightBorder = (int) (0.8 * Game.GAME_WIDTH);
+    private int levelTilesWide = LoadSave.getLevelData()[0].length;
+    private int maxTilesOffset = levelTilesWide - Game.TILES_IN_WIDTH;
+    private int maxLevelOffsetX = maxTilesOffset * Game.TILES_SIZE;
+    private BufferedImage backgroundIMG, bigCloud, smallCloud;
+    private int[] smallCloudsPos;
+    private Random rnd = new Random();
+
+
+    public Playing(Game game) {
+        super(game);
+        initClasses();
+        backgroundIMG = LoadSave.getPositionsAtlas(LoadSave.PLAYING_BACKGROUND_IMG);
+        bigCloud = LoadSave.getPositionsAtlas(LoadSave.BIG_CLOUDS);
+        smallCloud = LoadSave.getPositionsAtlas(LoadSave.SMALL_CLOUDS);
+        smallCloudsPos = new int[8];
+        for (int i = 0; i < smallCloudsPos.length; i++)
+            smallCloudsPos[i] = (int) (90 * Game.SCALE) + rnd.nextInt((int) (100 * Game.SCALE));
+
+    }
+
+    private void initClasses() {
+        levelManager = new LevelManager(game);
+        enemyManager = new EnemyManager(this);
+        player = new Player(200, 200, (int) (64 * Game.SCALE), (int) (40 * Game.SCALE));
+        player.loadLevelData(levelManager.getCurrentLevel().getLevelData());
+        pauseOverlay = new PauseOverlay(this);
+    }
+
+    @Override
+    public void update() {
+        if (!paused) {
+            levelManager.update();
+            player.update();
+            enemyManager.update(levelManager.getCurrentLevel().getLevelData(), player);
+            checkCloseToBorder();
+        } else
+            pauseOverlay.update();
+    }
+
+    private void checkCloseToBorder() {
+        int playerX = (int) player.getHitbox().x;
+        int diff = playerX - xLevelOffset;
+        if (diff > rightBorder)
+            xLevelOffset += diff - rightBorder;
+        else if (diff < leftBorder)
+            xLevelOffset += diff - leftBorder;
+
+        if (xLevelOffset > maxLevelOffsetX)
+            xLevelOffset = maxLevelOffsetX;
+        else if (xLevelOffset < 0)
+            xLevelOffset = 0;
+    }
+
+    @Override
+    public void draw(Graphics graphics) {
+        graphics.drawImage(backgroundIMG, 0, 0, Game.GAME_WIDTH, Game.GAME_HEIGHT, null);
+        drawClouds(graphics);
+        levelManager.draw(graphics, xLevelOffset);
+        player.render(graphics, xLevelOffset);
+        enemyManager.draw(graphics, xLevelOffset);
+        if (paused) {
+            graphics.setColor(new Color(0, 0, 0, 150));
+            graphics.fillRect(0, 0, Game.GAME_WIDTH, Game.GAME_HEIGHT);
+            pauseOverlay.draw(graphics);
+        }
+    }
+
+    private void drawClouds(Graphics graphics) {
+        for (int i = 0; i < 3; i++)
+            graphics.drawImage(bigCloud, i * BIG_CLOUD_WIDTH - (int) (xLevelOffset * 0.3), (int) (204 * Game.SCALE), BIG_CLOUD_WIDTH, BIG_CLOUD_HEIGHT, null);
+        for (int i = 0; i < smallCloudsPos.length; i++)
+            graphics.drawImage(smallCloud, i * 4 * SMALL_CLOUD_WIDTH - -(int) (xLevelOffset * 0.7), smallCloudsPos[i], SMALL_CLOUD_WIDTH, SMALL_CLOUD_HEIGHT, null);
+
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+        if (e.getButton() == MouseEvent.BUTTON1)
+            player.setAttacking(true);
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        if (paused)
+            pauseOverlay.mousePressed(e);
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+        if (paused)
+            pauseOverlay.mouseReleased(e);
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent e) {
+        if (paused)
+            pauseOverlay.mouseMoved(e);
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        if (paused)
+            pauseOverlay.mouseDragged(e);
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        switch (e.getKeyCode()) {
+            case KeyEvent.VK_A:
+                player.setLeft(true);
+                break;
+            case KeyEvent.VK_D:
+                player.setRight(true);
+                break;
+            case KeyEvent.VK_SPACE:
+                player.setJump(true);
+                break;
+            case KeyEvent.VK_ESCAPE:
+                paused = !paused;
+                break;
+        }
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+        switch (e.getKeyCode()) {
+            case KeyEvent.VK_A:
+                player.setLeft(false);
+                break;
+            case KeyEvent.VK_D:
+                player.setRight(false);
+                break;
+            case KeyEvent.VK_SPACE:
+                player.setJump(false);
+                break;
+        }
+    }
+
+    public Player getPlayer() {
+        return player;
+    }
+
+    public void windowFocusLost() {
+        player.resetDirectionBoolean();
+    }
+
+    public void unpauseGame() {
+        paused = false;
+    }
+
+    public void resetAll() {
+    }
+}
diff --git a/Pirate_Adventure_Game/src/gamestates/State.java b/Pirate_Adventure_Game/src/gamestates/State.java
new file mode 100644
index 00000000..4c028d55
--- /dev/null
+++ b/Pirate_Adventure_Game/src/gamestates/State.java
@@ -0,0 +1,22 @@
+package gamestates;
+
+import main.Game;
+import ui.MenuButton;
+
+import java.awt.event.MouseEvent;
+
+public class State {
+    protected Game game;
+
+    public State(Game game) {
+        this.game = game;
+    }
+
+    public boolean isIn(MouseEvent e, MenuButton mb){
+        return mb.getBounds().contains(e.getX(), e.getY());
+    }
+
+    public Game getGame() {
+        return game;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/gamestates/StateMethods.java b/Pirate_Adventure_Game/src/gamestates/StateMethods.java
new file mode 100644
index 00000000..ab94fab2
--- /dev/null
+++ b/Pirate_Adventure_Game/src/gamestates/StateMethods.java
@@ -0,0 +1,24 @@
+package gamestates;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+public interface StateMethods {
+    public void update();
+
+    public void draw(Graphics graphics);
+
+    public void mouseClicked(MouseEvent e);
+
+    public void mousePressed(MouseEvent e);
+
+    public void mouseReleased(MouseEvent e);
+
+    public void mouseMoved(MouseEvent e);
+
+    public void keyPressed(KeyEvent e);
+
+    public void keyReleased(KeyEvent e);
+
+}
diff --git a/Pirate_Adventure_Game/src/images/background_elements.png b/Pirate_Adventure_Game/src/images/background_elements.png
new file mode 100644
index 00000000..dc4487fb
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/background_elements.png differ
diff --git a/Pirate_Adventure_Game/src/images/big_clouds.png b/Pirate_Adventure_Game/src/images/big_clouds.png
new file mode 100644
index 00000000..c46d9580
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/big_clouds.png differ
diff --git a/Pirate_Adventure_Game/src/images/button_templates.png b/Pirate_Adventure_Game/src/images/button_templates.png
new file mode 100644
index 00000000..73be9d15
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/button_templates.png differ
diff --git a/Pirate_Adventure_Game/src/images/crabby_positions.png b/Pirate_Adventure_Game/src/images/crabby_positions.png
new file mode 100644
index 00000000..e322186a
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/crabby_positions.png differ
diff --git a/Pirate_Adventure_Game/src/images/health_power_bar.png b/Pirate_Adventure_Game/src/images/health_power_bar.png
new file mode 100644
index 00000000..62c77cf4
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/health_power_bar.png differ
diff --git a/Pirate_Adventure_Game/src/images/level_one_data.png b/Pirate_Adventure_Game/src/images/level_one_data.png
new file mode 100644
index 00000000..d37d8fd6
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/level_one_data.png differ
diff --git a/Pirate_Adventure_Game/src/images/level_one_data_long.png b/Pirate_Adventure_Game/src/images/level_one_data_long.png
new file mode 100644
index 00000000..731bed26
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/level_one_data_long.png differ
diff --git a/Pirate_Adventure_Game/src/images/menu_background.png b/Pirate_Adventure_Game/src/images/menu_background.png
new file mode 100644
index 00000000..52705abe
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/menu_background.png differ
diff --git a/Pirate_Adventure_Game/src/images/menu_board.png b/Pirate_Adventure_Game/src/images/menu_board.png
new file mode 100644
index 00000000..bdee1c2d
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/menu_board.png differ
diff --git a/Pirate_Adventure_Game/src/images/pause_menu.png b/Pirate_Adventure_Game/src/images/pause_menu.png
new file mode 100644
index 00000000..f16a5656
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/pause_menu.png differ
diff --git a/Pirate_Adventure_Game/src/images/pirate_positions.png b/Pirate_Adventure_Game/src/images/pirate_positions.png
new file mode 100644
index 00000000..200eff1d
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/pirate_positions.png differ
diff --git a/Pirate_Adventure_Game/src/images/playing_bg_img.png b/Pirate_Adventure_Game/src/images/playing_bg_img.png
new file mode 100644
index 00000000..3f2a66cd
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/playing_bg_img.png differ
diff --git a/Pirate_Adventure_Game/src/images/small_clouds.png b/Pirate_Adventure_Game/src/images/small_clouds.png
new file mode 100644
index 00000000..ae487305
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/small_clouds.png differ
diff --git a/Pirate_Adventure_Game/src/images/sound_button.png b/Pirate_Adventure_Game/src/images/sound_button.png
new file mode 100644
index 00000000..1b9c4474
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/sound_button.png differ
diff --git a/Pirate_Adventure_Game/src/images/urm_buttons.png b/Pirate_Adventure_Game/src/images/urm_buttons.png
new file mode 100644
index 00000000..40189624
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/urm_buttons.png differ
diff --git a/Pirate_Adventure_Game/src/images/volume_buttons.png b/Pirate_Adventure_Game/src/images/volume_buttons.png
new file mode 100644
index 00000000..20f8efd8
Binary files /dev/null and b/Pirate_Adventure_Game/src/images/volume_buttons.png differ
diff --git a/Pirate_Adventure_Game/src/inputs/KeyboardInputs.java b/Pirate_Adventure_Game/src/inputs/KeyboardInputs.java
new file mode 100644
index 00000000..2ce97c6d
--- /dev/null
+++ b/Pirate_Adventure_Game/src/inputs/KeyboardInputs.java
@@ -0,0 +1,48 @@
+package inputs;
+
+import gamestates.GameState;
+import main.GamePanel;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+public class KeyboardInputs implements KeyListener {
+    private GamePanel gamePanel;
+
+    public KeyboardInputs(GamePanel gamePanel) {
+        this.gamePanel = gamePanel;
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        switch (GameState.state) {
+            case MENU:
+                gamePanel.getGame().getMenu().keyPressed(e);
+                break;
+            case PLAYING:
+                gamePanel.getGame().getPlaying().keyPressed(e);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+        switch (GameState.state) {
+            case MENU:
+                gamePanel.getGame().getMenu().keyReleased(e);
+                break;
+            case PLAYING:
+                gamePanel.getGame().getPlaying().keyReleased(e);
+                break;
+            default:
+                break;
+        }
+    }
+}
diff --git a/Pirate_Adventure_Game/src/inputs/MouseInputs.java b/Pirate_Adventure_Game/src/inputs/MouseInputs.java
new file mode 100644
index 00000000..b717a7b6
--- /dev/null
+++ b/Pirate_Adventure_Game/src/inputs/MouseInputs.java
@@ -0,0 +1,90 @@
+package inputs;
+
+import gamestates.GameState;
+import main.GamePanel;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+public class MouseInputs implements MouseListener, MouseMotionListener {
+    private GamePanel gamePanel;
+
+    public MouseInputs(GamePanel gamePanel) {
+        this.gamePanel = gamePanel;
+    }
+
+    @Override
+    public void mouseClicked(MouseEvent e) {
+        switch (GameState.state) {
+            case PLAYING:
+                gamePanel.getGame().getPlaying().mouseClicked(e);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void mouseMoved(MouseEvent e) {
+        switch (GameState.state) {
+            case MENU:
+                gamePanel.getGame().getMenu().mouseMoved(e);
+                break;
+            case PLAYING:
+                gamePanel.getGame().getPlaying().mouseMoved(e);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void mousePressed(MouseEvent e) {
+        switch (GameState.state) {
+            case MENU:
+                gamePanel.getGame().getMenu().mousePressed(e);
+                break;
+            case PLAYING:
+                gamePanel.getGame().getPlaying().mousePressed(e);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void mouseReleased(MouseEvent e) {
+        switch (GameState.state) {
+            case MENU:
+                gamePanel.getGame().getMenu().mouseReleased(e);
+                break;
+            case PLAYING:
+                gamePanel.getGame().getPlaying().mouseReleased(e);
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    public void mouseEntered(MouseEvent e) {
+
+    }
+
+    @Override
+    public void mouseExited(MouseEvent e) {
+
+    }
+
+    @Override
+    public void mouseDragged(MouseEvent e) {
+        switch (GameState.state) {
+            case PLAYING:
+                gamePanel.getGame().getPlaying().mouseDragged(e);
+                break;
+            default:
+                break;
+        }
+    }
+}
diff --git a/Pirate_Adventure_Game/src/levels/Level.java b/Pirate_Adventure_Game/src/levels/Level.java
new file mode 100644
index 00000000..57a8cf0d
--- /dev/null
+++ b/Pirate_Adventure_Game/src/levels/Level.java
@@ -0,0 +1,17 @@
+package levels;
+
+public class Level {
+    private int[][] levelData;
+
+    public Level(int[][] levelData) {
+        this.levelData = levelData;
+    }
+
+    public int getComponentIndex(int x, int y) {
+        return levelData[y][x];
+    }
+
+    public int[][] getLevelData() {
+        return levelData;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/levels/LevelManager.java b/Pirate_Adventure_Game/src/levels/LevelManager.java
new file mode 100644
index 00000000..ad50642b
--- /dev/null
+++ b/Pirate_Adventure_Game/src/levels/LevelManager.java
@@ -0,0 +1,51 @@
+package levels;
+
+import main.Game;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import static main.Game.TILES_SIZE;
+
+public class LevelManager {
+    private Game game;
+    private BufferedImage[] levelElement;
+    private Level levelOne;
+
+    public LevelManager(Game game) {
+        this.game = game;
+        //   levelElement= LoadSave.getPositionsAtlas(LoadSave.LEVEL_ATLAS);
+        importBackgroundElements();
+        levelOne = new Level(LoadSave.getLevelData());
+    }
+
+    private void importBackgroundElements() {
+        BufferedImage img = LoadSave.getPositionsAtlas(LoadSave.LEVEL_ATLAS);
+        levelElement = new BufferedImage[12 * 4];
+        for (int i = 0; i < 4; i++) {
+            for (int j = 0; j < 12; j++) {
+                int index = i * 12 + j;
+                levelElement[index] = img.getSubimage(j * 32, i * 32, 32, 32);
+            }
+        }
+    }
+
+    public void draw(Graphics graphics, int levelOffset) {
+        for (int i = 0; i < Game.TILES_IN_HEIGHT; i++) {
+            for (int j = 0; j < levelOne.getLevelData()[0].length; j++) {
+                int index = levelOne.getComponentIndex(j, i);
+                graphics.drawImage(levelElement[index], TILES_SIZE * j - levelOffset, TILES_SIZE * i, TILES_SIZE, TILES_SIZE, null);
+            }
+        }
+    }
+
+    public void update() {
+
+    }
+
+    public Level getCurrentLevel() {
+        return levelOne;
+    }
+
+}
diff --git a/Pirate_Adventure_Game/src/main/Game.java b/Pirate_Adventure_Game/src/main/Game.java
new file mode 100644
index 00000000..86979765
--- /dev/null
+++ b/Pirate_Adventure_Game/src/main/Game.java
@@ -0,0 +1,126 @@
+package main;
+
+import gamestates.GameState;
+import gamestates.Menu;
+import gamestates.Playing;
+
+import java.awt.*;
+
+public class Game implements Runnable {
+    private GameWindow gameWindow;
+    private GamePanel gamePanel;
+    private Thread gameThread;
+    private final int FPS_SET = 120;
+    private final int UPS_SET = 200;
+    private Playing playing;
+    private Menu menu;
+
+    public final static int TILES_DEFAULT_SIZE = 32;
+    public final static float SCALE = 1.2f;
+    public final static int TILES_IN_WIDTH = 26;
+    public final static int TILES_IN_HEIGHT = 14;
+    public final static int TILES_SIZE = (int) (TILES_DEFAULT_SIZE * SCALE);
+    public final static int GAME_WIDTH = TILES_SIZE * TILES_IN_WIDTH;
+    public final static int GAME_HEIGHT = TILES_SIZE * TILES_IN_HEIGHT;
+
+    public Game() {
+        initClasses();
+        gamePanel = new GamePanel(this);
+        gameWindow = new GameWindow(gamePanel);
+        gamePanel.requestFocus();
+        startGameLoop();
+    }
+
+    private void initClasses() {
+        menu = new Menu(this);
+        playing = new Playing(this);
+    }
+
+    private void startGameLoop() {
+        gameThread = new Thread(this);
+        gameThread.start();
+    }
+
+    public void update() {
+        switch (GameState.state) {
+            case MENU:
+                menu.update();
+                break;
+            case PLAYING:
+                playing.update();
+                break;
+            default:
+                break;
+        }
+    }
+
+    public void render(Graphics graphics) {
+        switch (GameState.state) {
+            case MENU:
+                menu.draw(graphics);
+                break;
+            case PLAYING:
+                playing.draw(graphics);
+                break;
+            case OPTIONS:
+            case QUIT:
+            default:
+                System.exit(0);
+                break;
+        }
+    }
+
+    @Override
+    public void run() {
+        double timePerFrame = 1000000000.0 / FPS_SET;
+        double timePerUpdate = 1000000000.0 / UPS_SET;
+        long previousTime = System.nanoTime();
+        int frames = 0;
+        int updates = 0;
+        long lastCheck = System.currentTimeMillis();
+
+        double deltaU = 0;
+        double deltaF = 0;
+
+        while (true) {
+            long currentTime = System.nanoTime();
+
+            deltaU += (currentTime - previousTime) / timePerUpdate;
+            deltaF += (currentTime - previousTime) / timePerFrame;
+
+            previousTime = currentTime;
+
+            if (deltaU >= 1) {
+                update();
+                updates++;
+                deltaU--;
+            }
+
+            if (deltaF >= 1) {
+                gamePanel.repaint();
+                frames++;
+                deltaF--;
+            }
+
+            if (System.currentTimeMillis() - lastCheck >= 1000) {
+                lastCheck = System.currentTimeMillis();
+                System.out.println("FPS: " + frames + " | UPS: " + updates);
+                frames = 0;
+                updates = 0;
+            }
+        }
+    }
+
+    public void windowFocusLost() {
+        if (GameState.state == GameState.PLAYING)
+            playing.getPlayer().resetDirectionBoolean();
+    }
+
+    public Menu getMenu() {
+        return menu;
+    }
+
+    public Playing getPlaying() {
+        return playing;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/main/GamePanel.java b/Pirate_Adventure_Game/src/main/GamePanel.java
new file mode 100644
index 00000000..b157b3e1
--- /dev/null
+++ b/Pirate_Adventure_Game/src/main/GamePanel.java
@@ -0,0 +1,46 @@
+package main;
+
+import inputs.KeyboardInputs;
+import inputs.MouseInputs;
+
+import javax.swing.*;
+import java.awt.*;
+
+import static main.Game.GAME_HEIGHT;
+import static main.Game.GAME_WIDTH;
+
+public class GamePanel extends JPanel {
+    private MouseInputs mouseInputs;
+    private Game game;
+
+
+    public GamePanel(Game game) {
+        mouseInputs = new MouseInputs(this);
+        this.game = game;
+        setPanelSize();
+        addKeyListener(new KeyboardInputs(this));
+        addMouseListener(mouseInputs);
+        addMouseMotionListener(mouseInputs);
+    }
+
+    public Game getGame() {
+        return game;
+    }
+
+    private void setPanelSize() {
+        Dimension size = new Dimension(GAME_WIDTH, GAME_HEIGHT);
+        // setMinimumSize(size);
+        setPreferredSize(size);
+        //   setMaximumSize(size);
+        System.out.println("size : " + GAME_WIDTH + " : " + GAME_HEIGHT);
+    }
+
+    public void paintComponent(Graphics graphics) {
+        super.paintComponent(graphics);
+        game.render(graphics);
+    }
+
+    public void updateGame() {
+
+    }
+}
diff --git a/Pirate_Adventure_Game/src/main/GameWindow.java b/Pirate_Adventure_Game/src/main/GameWindow.java
new file mode 100644
index 00000000..1f95a339
--- /dev/null
+++ b/Pirate_Adventure_Game/src/main/GameWindow.java
@@ -0,0 +1,32 @@
+package main;
+
+import javax.swing.*;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowFocusListener;
+
+public class GameWindow {
+    private JFrame jFrame;
+
+    public GameWindow(GamePanel gamePanel) {
+
+        jFrame = new JFrame();
+     //   jFrame.setSize(1000, 520);// 850, 490
+        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        jFrame.add(gamePanel);
+        jFrame.setResizable(false);
+        jFrame.pack();
+        jFrame.setLocationRelativeTo(null);
+        jFrame.setVisible(true);
+        jFrame.addWindowFocusListener(new WindowFocusListener() {
+            @Override
+            public void windowGainedFocus(WindowEvent e) {
+                gamePanel.getGame().windowFocusLost();
+            }
+
+            @Override
+            public void windowLostFocus(WindowEvent e) {
+
+            }
+        });
+    }
+}
diff --git a/Pirate_Adventure_Game/src/main/Main.java b/Pirate_Adventure_Game/src/main/Main.java
new file mode 100644
index 00000000..23f35854
--- /dev/null
+++ b/Pirate_Adventure_Game/src/main/Main.java
@@ -0,0 +1,6 @@
+package main;
+public class Main {
+    public static void main(String[] args) {
+        new Game();
+    }
+}
\ No newline at end of file
diff --git a/Pirate_Adventure_Game/src/ui/GameOverlay.java b/Pirate_Adventure_Game/src/ui/GameOverlay.java
new file mode 100644
index 00000000..55b4e814
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/GameOverlay.java
@@ -0,0 +1,32 @@
+package ui;
+
+import gamestates.GameState;
+import gamestates.Playing;
+import main.Game;
+
+import java.awt.*;
+import java.awt.event.KeyEvent;
+
+public class GameOverlay {
+
+    private Playing playing;
+
+    public GameOverlay(Playing playing) {
+        this.playing = playing;
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.setColor(new Color(0, 0, 200));
+        graphics.fillRect(0, 0, Game.GAME_HEIGHT, Game.GAME_HEIGHT);
+        graphics.setColor(Color.white);
+        graphics.drawString("Game Over", Game.GAME_WIDTH / 2, 150);
+        graphics.drawString("Press esc to enter Main Menu!", Game.GAME_WIDTH / 2, 300);
+    }
+
+    public void keyPressed(KeyEvent e) {
+        if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
+            playing.resetAll();
+            GameState.state = GameState.MENU;
+        }
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/MenuButton.java b/Pirate_Adventure_Game/src/ui/MenuButton.java
new file mode 100644
index 00000000..007213d1
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/MenuButton.java
@@ -0,0 +1,79 @@
+package ui;
+
+import gamestates.GameState;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.UI.Buttons.*;
+
+public class MenuButton {
+    private int xPos, yPos, rowIndex, index;
+    private int xOffsetCenter = B_WIDTH / 2;
+    private GameState state;
+    private BufferedImage[] imgs;
+    private boolean mouseOver, mousePressed;
+    private Rectangle bounds;
+
+    public MenuButton(int xPos, int yPos, int rowIndex, GameState state) {
+        this.xPos = xPos;
+        this.yPos = yPos;
+        this.rowIndex = rowIndex;
+        this.state = state;
+        loadImg();
+        initBounds();
+    }
+
+    private void initBounds() {
+        bounds = new Rectangle(xPos - xOffsetCenter, yPos, B_WIDTH, B_HEIGHT);
+    }
+
+    private void loadImg() {
+        imgs = new BufferedImage[3];
+        BufferedImage temp = LoadSave.getPositionsAtlas(LoadSave.MENU_BUTTONS);
+        for (int i = 0; i < imgs.length; i++)
+            imgs[i] = temp.getSubimage(i * B_WIDTH_DEFAULT, rowIndex * B_HEIGHT_DEFAULT, B_WIDTH_DEFAULT, B_HEIGHT_DEFAULT);
+    }
+
+    public void applyGameState() {
+        GameState.state = state;
+    }
+
+    public void resetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.drawImage(imgs[index], xPos - xOffsetCenter, yPos, B_WIDTH, B_HEIGHT, null);
+    }
+
+    public void update() {
+        index = 0;
+        if (mouseOver)
+            index = 1;
+        if (mousePressed)
+            index = 2;
+    }
+
+    public boolean isMouseOver() {
+        return mouseOver;
+    }
+
+    public void setMouseOver(boolean mouseOver) {
+        this.mouseOver = mouseOver;
+    }
+
+    public boolean isMousePressed() {
+        return mousePressed;
+    }
+
+    public void setMousePressed(boolean mousePressed) {
+        this.mousePressed = mousePressed;
+    }
+
+    public Rectangle getBounds() {
+        return bounds;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/PauseButton.java b/Pirate_Adventure_Game/src/ui/PauseButton.java
new file mode 100644
index 00000000..a23307ce
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/PauseButton.java
@@ -0,0 +1,61 @@
+package ui;
+
+import java.awt.*;
+
+public class PauseButton {
+
+    protected int x, y, width, height;
+    protected Rectangle bounds;
+
+    public PauseButton(int x, int y, int width, int height) {
+        this.x = x;
+        this.y = y;
+        this.width = width;
+        this.height = height;
+        createBounds();
+    }
+
+    private void createBounds() {
+        bounds = new Rectangle(x, y, width, height);
+    }
+
+    public int getX() {
+        return x;
+    }
+
+    public void setX(int x) {
+        this.x = x;
+    }
+
+    public int getY() {
+        return y;
+    }
+
+    public void setY(int y) {
+        this.y = y;
+    }
+
+    public int getWidth() {
+        return width;
+    }
+
+    public void setWidth(int width) {
+        this.width = width;
+    }
+
+    public int getHeight() {
+        return height;
+    }
+
+    public void setHeight(int height) {
+        this.height = height;
+    }
+
+    public Rectangle getBounds() {
+        return bounds;
+    }
+
+    public void setBounds(Rectangle bounds) {
+        this.bounds = bounds;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/PauseOverlay.java b/Pirate_Adventure_Game/src/ui/PauseOverlay.java
new file mode 100644
index 00000000..43a48d8f
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/PauseOverlay.java
@@ -0,0 +1,159 @@
+package ui;
+
+import gamestates.GameState;
+import gamestates.Playing;
+import main.Game;
+import utils.Constants;
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.event.MouseEvent;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.UI.PauseButtons.SOUND_SIZE;
+import static utils.Constants.UI.URMButtons.URM_SIZE;
+import static utils.Constants.UI.VolumeButtons.*;
+
+public class PauseOverlay {
+    private BufferedImage backgroundImg;
+    private int backgroundX, backgroundY, backgroundWidth, backgroundHeight;
+    private SoundButton musicButton, soundEffectsButton;
+    private UrmButton menuB, replyB, unpauseB;
+    private Playing playing;
+    private VolumeButton volumeButton;
+
+    public PauseOverlay(Playing playing) {
+        this.playing = playing;
+        loadBackground();
+        createSoundButtons();
+        createUrmButtons();
+        createVolumeButton();
+    }
+
+    private void createVolumeButton() {
+        int vX = (int) (309 * Game.SCALE);
+        int vY = (int) (278 * Game.SCALE);
+        volumeButton = new VolumeButton(vX, vY, SLIDER_WIDTH, VOLUME_HEIGHT);
+    }
+
+    private void createUrmButtons() {
+        int menuX = (int) (313 * Game.SCALE);
+        int replyX = (int) (387 * Game.SCALE);
+        int unpauseX = (int) (462 * Game.SCALE);
+        int bY = (int) (325 * Game.SCALE);
+        menuB = new UrmButton(menuX, bY, URM_SIZE, URM_SIZE, 2);
+        replyB = new UrmButton(replyX, bY, URM_SIZE, URM_SIZE, 1);
+        unpauseB = new UrmButton(unpauseX, bY, URM_SIZE, URM_SIZE, 0);
+
+    }
+
+    private void createSoundButtons() {
+        int soundX = (int) (450 * Game.SCALE);
+        int musicY = (int) (140 * Game.SCALE);
+        int soundEffectsY = (int) (186 * Game.SCALE);
+        musicButton = new SoundButton(soundX, musicY, SOUND_SIZE, SOUND_SIZE);
+        soundEffectsButton = new SoundButton(soundX, soundEffectsY, SOUND_SIZE, SOUND_SIZE);
+
+    }
+
+    private void loadBackground() {
+        backgroundImg = LoadSave.getPositionsAtlas(LoadSave.PAUSE_BACKGROUND);
+        backgroundWidth = (int) (backgroundImg.getWidth() * Game.SCALE);
+        backgroundHeight = (int) (backgroundImg.getHeight() * Game.SCALE);
+        backgroundX = Game.GAME_WIDTH / 2 - backgroundWidth / 2;
+        backgroundY = (int) (25 * Game.SCALE);
+
+    }
+
+    public void update() {
+        musicButton.update();
+        soundEffectsButton.update();
+        menuB.update();
+        replyB.update();
+        unpauseB.update();
+        volumeButton.update();
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.drawImage(backgroundImg, backgroundX, backgroundY, backgroundWidth, backgroundHeight, null);
+        musicButton.draw(graphics);
+        soundEffectsButton.draw(graphics);
+        menuB.draw(graphics);
+        replyB.draw(graphics);
+        unpauseB.draw(graphics);
+        volumeButton.draw(graphics);
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        if(volumeButton.isMousePressed())
+            volumeButton.changeX(e.getX());
+    }
+
+    public void mousePressed(MouseEvent e) {
+        if (isIn(e, musicButton))
+            musicButton.setMousePressed(true);
+        else if (isIn(e, soundEffectsButton))
+            soundEffectsButton.setMousePressed(true);
+        else if (isIn(e, menuB))
+            menuB.setMousePressed(true);
+        else if (isIn(e, replyB))
+            replyB.setMousePressed(true);
+        else if (isIn(e, unpauseB))
+            unpauseB.setMousePressed(true);
+        else if (isIn(e, volumeButton))
+            volumeButton.setMousePressed(true);
+    }
+
+    public void mouseReleased(MouseEvent e) {
+        if (isIn(e, musicButton)) {
+            if (musicButton.isMousePressed())
+                musicButton.setMuted(!musicButton.isMuted());
+        } else if (isIn(e, soundEffectsButton)) {
+            if (soundEffectsButton.isMousePressed())
+                soundEffectsButton.setMuted(!soundEffectsButton.isMuted());
+        } else if (isIn(e, menuB)) {
+            if (menuB.isMousePressed()) {
+                GameState.state = GameState.MENU;
+                playing.unpauseGame();
+            }
+        } else if (isIn(e, replyB)) {
+            if (replyB.isMousePressed())
+                System.out.println("reply level!");
+        } else if (isIn(e, unpauseB)) {
+            if (unpauseB.isMousePressed())
+                playing.unpauseGame();
+        }
+        musicButton.resetBools();
+        soundEffectsButton.resetBools();
+        menuB.resetBools();
+        replyB.resetBools();
+        unpauseB.resetBools();
+        volumeButton.resetBools();
+    }
+
+    public void mouseMoved(MouseEvent e) {
+        musicButton.setMouseOver(false);
+        soundEffectsButton.setMouseOver(false);
+        menuB.setMouseOver(false);
+        replyB.setMouseOver(false);
+        unpauseB.setMouseOver(false);
+        volumeButton.setMouseOver(false);
+
+        if (isIn(e, musicButton))
+            musicButton.setMouseOver(true);
+        else if (isIn(e, soundEffectsButton))
+            soundEffectsButton.setMouseOver(true);
+        else if (isIn(e, menuB))
+            menuB.setMouseOver(true);
+        else if (isIn(e, replyB))
+            replyB.setMouseOver(true);
+        else if (isIn(e, unpauseB))
+            unpauseB.setMouseOver(true);
+        else if (isIn(e, volumeButton))
+            volumeButton.setMouseOver(true);
+    }
+
+    private boolean isIn(MouseEvent e, PauseButton button) {
+        return button.getBounds().contains(e.getX(), e.getY());
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/SoundButton.java b/Pirate_Adventure_Game/src/ui/SoundButton.java
new file mode 100644
index 00000000..0bdd21ae
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/SoundButton.java
@@ -0,0 +1,75 @@
+package ui;
+
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.UI.PauseButtons.*;
+
+public class SoundButton extends PauseButton {
+    private BufferedImage[][] soundImgs;
+    private boolean mouseOver, mousePressed;
+    private boolean muted;
+    private int rowIndex, colIndex;
+
+    public SoundButton(int x, int y, int width, int height) {
+        super(x, y, width, height);
+        loadSoundImgs();
+    }
+
+    private void loadSoundImgs() {
+        BufferedImage temp = LoadSave.getPositionsAtlas(LoadSave.SOUND_BUTTONS);
+        soundImgs = new BufferedImage[2][3];
+        for (int i = 0; i < soundImgs.length; i++) {
+            for (int j = 0; j < soundImgs[i].length; j++) {
+                soundImgs[i][j] = temp.getSubimage(j * SOUND_SIZE_DEFAULT, i * SOUND_SIZE_DEFAULT, SOUND_SIZE_DEFAULT, SOUND_SIZE_DEFAULT);
+            }
+        }
+    }
+
+    public void update() {
+        if (muted)
+            rowIndex = 1;
+        else
+            rowIndex = 0;
+        colIndex = 0;
+        if (mouseOver)
+            colIndex = 1;
+        if (mousePressed)
+            colIndex = 2;
+    }
+
+    public void resetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.drawImage(soundImgs[rowIndex][colIndex], x, y, width, height, null);
+    }
+
+    public boolean isMouseOver() {
+        return mouseOver;
+    }
+
+    public void setMouseOver(boolean mouseOver) {
+        this.mouseOver = mouseOver;
+    }
+
+    public boolean isMousePressed() {
+        return mousePressed;
+    }
+
+    public void setMousePressed(boolean mousePressed) {
+        this.mousePressed = mousePressed;
+    }
+
+    public boolean isMuted() {
+        return muted;
+    }
+
+    public void setMuted(boolean muted) {
+        this.muted = muted;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/UrmButton.java b/Pirate_Adventure_Game/src/ui/UrmButton.java
new file mode 100644
index 00000000..e7990f36
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/UrmButton.java
@@ -0,0 +1,66 @@
+package ui;
+
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.UI.URMButtons.URM_DEFAULT_SIZE;
+import static utils.Constants.UI.URMButtons.URM_SIZE;
+
+public class UrmButton extends PauseButton {
+    private BufferedImage[] imgs;
+    private int rowIndex, index;
+    private boolean mouseOver, mousePressed;
+
+    public UrmButton(int x, int y, int width, int height, int rowIndex) {
+        super(x, y, width, height);
+        this.rowIndex = rowIndex;
+        loadImgs();
+    }
+
+    private void loadImgs() {
+        BufferedImage temp = LoadSave.getPositionsAtlas(LoadSave.URM_BUTTONS);
+        imgs = new BufferedImage[3];
+        for (int i = 0; i < imgs.length; i++) {
+            imgs[i] = temp.getSubimage(i * URM_DEFAULT_SIZE, rowIndex * URM_DEFAULT_SIZE, URM_DEFAULT_SIZE, URM_DEFAULT_SIZE);
+        }
+    }
+
+    public void update() {
+        index = 0;
+        if (mouseOver)
+            index = 1;
+        if (mousePressed)
+            index = 2;
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.drawImage(imgs[index], x, y, URM_SIZE, URM_SIZE, null);
+    }
+
+    public void mouseResetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+
+    public boolean isMouseOver() {
+        return mouseOver;
+    }
+
+    public void setMouseOver(boolean mouseOver) {
+        this.mouseOver = mouseOver;
+    }
+
+    public boolean isMousePressed() {
+        return mousePressed;
+    }
+
+    public void setMousePressed(boolean mousePressed) {
+        this.mousePressed = mousePressed;
+    }
+    public void resetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/ui/VolumeButton.java b/Pirate_Adventure_Game/src/ui/VolumeButton.java
new file mode 100644
index 00000000..545a7a75
--- /dev/null
+++ b/Pirate_Adventure_Game/src/ui/VolumeButton.java
@@ -0,0 +1,86 @@
+package ui;
+
+import utils.LoadSave;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import static utils.Constants.UI.VolumeButtons.*;
+
+public class VolumeButton extends PauseButton {
+    private BufferedImage[] imgs;
+    private BufferedImage slider;
+    private int index = 0;
+    private int buttonX, minX, maxX;
+    private boolean mouseOver, mousePressed;
+
+    public VolumeButton(int x, int y, int width, int height) {
+        super(x + width / 2, y, VOLUME_WIDTH, height);
+        bounds.x -= VOLUME_WIDTH / 2;
+        buttonX = x + width / 2;
+        this.x = x;
+        this.width = width;
+        minX = x + VOLUME_WIDTH / 2;
+        maxX = x + width - VOLUME_WIDTH / 2;
+        loadImgs();
+    }
+
+    private void loadImgs() {
+        BufferedImage temp = LoadSave.getPositionsAtlas(LoadSave.VOLUME_BUTTONS);
+        imgs = new BufferedImage[3];
+        for (int i = 0; i < imgs.length; i++)
+            imgs[i] = temp.getSubimage(i * VOLUME_DEFAULT_WIDTH, 0, VOLUME_DEFAULT_WIDTH, VOLUME_DEFAULT_HEIGHT);
+
+        slider = temp.getSubimage(3 * VOLUME_DEFAULT_WIDTH, 0, SLIDER_DEFAULT_WIDTH, VOLUME_DEFAULT_HEIGHT);
+    }
+
+    public void update() {
+        index = 0;
+        if (mouseOver)
+            index = 1;
+        if (mousePressed)
+            index = 2;
+    }
+
+    public void draw(Graphics graphics) {
+        graphics.drawImage(slider, x, y, width, height, null);
+        graphics.drawImage(imgs[index], buttonX - VOLUME_WIDTH / 2, y, VOLUME_WIDTH, height, null);
+    }
+
+    public void changeX(int x) {
+        if (x < minX)
+            buttonX = minX;
+        else if (x > maxX)
+            buttonX = maxX;
+        else
+            buttonX = x;
+
+        bounds.x = buttonX - VOLUME_WIDTH / 2;
+    }
+
+    public void mouseResetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+
+    public boolean isMouseOver() {
+        return mouseOver;
+    }
+
+    public void setMouseOver(boolean mouseOver) {
+        this.mouseOver = mouseOver;
+    }
+
+    public boolean isMousePressed() {
+        return mousePressed;
+    }
+
+    public void setMousePressed(boolean mousePressed) {
+        this.mousePressed = mousePressed;
+    }
+
+    public void resetBools() {
+        mouseOver = false;
+        mousePressed = false;
+    }
+}
diff --git a/Pirate_Adventure_Game/src/utils/Constants.java b/Pirate_Adventure_Game/src/utils/Constants.java
new file mode 100644
index 00000000..1c1234cf
--- /dev/null
+++ b/Pirate_Adventure_Game/src/utils/Constants.java
@@ -0,0 +1,125 @@
+package utils;
+
+import main.Game;
+
+import javax.management.monitor.GaugeMonitor;
+
+public class Constants {
+
+    public static class EnemyConstants {
+        public static final int CRABBY = 0;
+
+        public static final int IDLE = 0;
+        public static final int RUNNING = 1;
+        public static final int ATTACK = 2;
+        public static final int HIT = 3;
+        public static final int DEAD = 4;
+
+        public static final int CRABBY_WIDTH_DEFAULT = 72;
+        public static final int CRABBY_HEIGHT_DEFAULT = 32;
+
+        public static final int CRABBY_WIDTH = (int) (CRABBY_WIDTH_DEFAULT * Game.SCALE);
+        public static final int CRABBY_HEIGHT = (int) (CRABBY_HEIGHT_DEFAULT * Game.SCALE);
+        public static final int CRABBY_DRAWOFFSET_X = (int) (26 * Game.SCALE);
+        public static final int CRABBY_DRAWOFFSET_Y = (int) (9 * Game.SCALE);
+
+
+        public static final int getPositionsAmount(int enemy_type, int enemy_state) {
+            switch (enemy_type) {
+                case CRABBY:
+                    switch (enemy_state) {
+                        case IDLE:
+                            return 9;
+                        case RUNNING:
+                            return 6;
+                        case ATTACK:
+                            return 7;
+                        case HIT:
+                            return 4;
+                        case DEAD:
+                            return 5;
+                    }
+            }
+            return 0;
+        }
+    }
+
+    public static class Environment {
+        public static final int BIG_CLOUD_WIDTH_DEFAULT = 448;
+        public static final int BIG_CLOUD_HEIGHT_DEFAULT = 101;
+        public static final int BIG_CLOUD_WIDTH = (int) (BIG_CLOUD_WIDTH_DEFAULT * Game.SCALE);
+        public static final int BIG_CLOUD_HEIGHT = (int) (BIG_CLOUD_HEIGHT_DEFAULT * Game.SCALE);
+
+        public static final int SMALL_CLOUD_WIDTH_DEFAULT = 74;
+        public static final int SMALL_CLOUD_HEIGHT_DEFAULT = 24;
+        public static final int SMALL_CLOUD_WIDTH = (int) (SMALL_CLOUD_WIDTH_DEFAULT * Game.SCALE);
+        public static final int SMALL_CLOUD_HEIGHT = (int) (SMALL_CLOUD_HEIGHT_DEFAULT * Game.SCALE);
+
+
+    }
+
+    public static class UI {
+        public static class Buttons {
+            public static final int B_WIDTH_DEFAULT = 140;
+            public static final int B_HEIGHT_DEFAULT = 56;
+            public static final int B_WIDTH = (int) (B_WIDTH_DEFAULT * Game.SCALE);
+            public static final int B_HEIGHT = (int) (B_HEIGHT_DEFAULT * Game.SCALE);
+        }
+
+        public static class PauseButtons {
+            public static final int SOUND_SIZE_DEFAULT = 42;
+            public static final int SOUND_SIZE = (int) (SOUND_SIZE_DEFAULT * Game.SCALE);
+        }
+
+        public static class URMButtons {
+            public static final int URM_DEFAULT_SIZE = 56;
+            public static final int URM_SIZE = (int) (URM_DEFAULT_SIZE * Game.SCALE);
+        }
+
+        public static class VolumeButtons {
+            public static final int VOLUME_DEFAULT_WIDTH = 28;
+            public static final int VOLUME_DEFAULT_HEIGHT = 44;
+            public static final int SLIDER_DEFAULT_WIDTH = 215;
+            public static final int VOLUME_WIDTH = (int) (VOLUME_DEFAULT_WIDTH * Game.SCALE);
+            public static final int VOLUME_HEIGHT = (int) (VOLUME_DEFAULT_HEIGHT * Game.SCALE);
+            public static final int SLIDER_WIDTH = (int) (SLIDER_DEFAULT_WIDTH * Game.SCALE);
+        }
+    }
+
+    public static class Directions {
+        public static final int LEFT = 0;
+        public static final int RIGHT = 1;
+        public static final int UP = 2;
+        public static final int DOWN = 3;
+
+    }
+
+    public static class PlayerConstants {
+        public static final int STAYING = 0;
+        public static final int RUNNING = 1;
+        public static final int JUMP = 2;
+        public static final int FALLING = 3;
+        public static final int ATTACK = 4;
+        public static final int HIT = 5;
+        public static final int DEAD = 6;
+
+        public static int getSpriteAmount(int player) {
+            switch (player) {
+                case DEAD:
+                    return 8;
+                case RUNNING:
+                    return 6;
+                case STAYING:
+                    return 5;
+                case HIT:
+                    return 4;
+                case JUMP:
+                case ATTACK:
+                    return 3;
+                case FALLING:
+                default:
+                    return 1;
+            }
+        }
+    }
+}
diff --git a/Pirate_Adventure_Game/src/utils/HelpMethods.java b/Pirate_Adventure_Game/src/utils/HelpMethods.java
new file mode 100644
index 00000000..5ef13733
--- /dev/null
+++ b/Pirate_Adventure_Game/src/utils/HelpMethods.java
@@ -0,0 +1,88 @@
+package utils;
+
+import main.Game;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+
+public class HelpMethods {
+    public static boolean canMoveHere(float x, float y, float width, float height, int[][] levelData) {
+        if (!isSolid(x, y, levelData))
+            if (!isSolid(x + width, y + height, levelData))
+                if (!isSolid(x + width, y, levelData))
+                    if (!isSolid(x, y + height, levelData))
+                        return true;
+        return false;
+    }
+
+    private static boolean isSolid(float x, float y, int[][] levelData) {
+        int maxWidth = levelData[0].length * Game.TILES_SIZE;
+        if (x < 0 || x >= maxWidth)
+            return true;
+        if (y < 0 || y >= Game.GAME_HEIGHT)
+            return true;
+        float xIndex = x / Game.TILES_SIZE;
+        float yIndex = y / Game.TILES_SIZE;
+        return isTileSolid((int) xIndex, (int) yIndex, levelData);
+    }
+
+    public static boolean isTileSolid(int xTile, int yTile, int[][] levelData) {
+        int value = levelData[yTile][xTile];
+        if (value >= 48 || value < 0 || value != 11)
+            return true;
+        return false;
+    }
+
+    public static float getEntityXPosNextToWall(Rectangle2D.Float hitbox, float xSpeed) {
+        int currentTile = (int) (hitbox.x / Game.TILES_SIZE);
+        if (xSpeed > 0) {
+            int tileXPos = currentTile * Game.TILES_SIZE;
+            int xOffset = (int) (Game.TILES_SIZE - hitbox.width);
+            return tileXPos + xOffset - 1;
+        } else
+            return currentTile * Game.TILES_SIZE;
+    }
+
+    public static float getEntityYPosUnderRoofOrAboveFloor(Rectangle2D.Float hitbox, float airSpeed) {
+        int currentTile = (int) (hitbox.y / Game.TILES_SIZE);
+        if (airSpeed > 0) {
+            int tileYPos = currentTile * Game.TILES_SIZE;
+            int yOffset = (int) (Game.TILES_SIZE - hitbox.height);
+            return tileYPos + yOffset - 1;
+        } else
+            return currentTile * Game.TILES_SIZE;
+
+    }
+
+    public static boolean isEntityOnFloor(Rectangle2D.Float hitbox, int[][] levelData) {
+        if (!isSolid(hitbox.x, hitbox.y + hitbox.height + 1, levelData))
+            if (!isSolid(hitbox.x + hitbox.width, hitbox.y + hitbox.height + 1, levelData))
+                return false;
+        return true;
+    }
+
+    public static boolean isFloor(Rectangle2D.Float hitbox, float xSpeed, int[][] levelData) {
+        return isSolid(hitbox.x + xSpeed, hitbox.y + hitbox.height + 1, levelData);
+    }
+
+    public static boolean isAllTilesWalkable(int xStart, int xEnd, int y, int[][] levelData) {
+        for (int i = 0; i < xEnd - xStart; i++) {
+            if (isTileSolid(xStart + i, y, levelData))
+                return false;
+            if (!isTileSolid(xStart + i, y + 1, levelData))
+                return false;
+        }
+        return true;
+    }
+
+    public static boolean isSightClear(int[][] levelData, Rectangle2D.Float firstHitbox, Rectangle2D.Float secondHitbox, int yTile) {
+        int firstXTile = (int) (firstHitbox.x / Game.TILES_SIZE);
+        int secondXTile = (int) (secondHitbox.x / Game.TILES_SIZE);
+        if (firstXTile > secondXTile)
+            return isAllTilesWalkable(secondXTile, firstXTile, yTile, levelData);
+        else
+            return isAllTilesWalkable(firstXTile, secondXTile, yTile, levelData);
+    }
+
+
+}
diff --git a/Pirate_Adventure_Game/src/utils/LoadSave.java b/Pirate_Adventure_Game/src/utils/LoadSave.java
new file mode 100644
index 00000000..30e5be27
--- /dev/null
+++ b/Pirate_Adventure_Game/src/utils/LoadSave.java
@@ -0,0 +1,80 @@
+package utils;
+
+import entities.Crabby;
+import main.Game;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+
+import static utils.Constants.EnemyConstants.CRABBY;
+
+public class LoadSave {
+    public static final String PLAYER_ATLAS = "images/pirate_positions.png";
+    public static final String LEVEL_ATLAS = "images/background_elements.png";
+    //public static final String LEVEL_ONE_DATA = "images/level_one_data.png";
+    public static final String LEVEL_ONE_DATA = "images/level_one_data_long.png";
+    public static final String MENU_BUTTONS = "images/button_templates.png";
+    public static final String MENU_BOARD = "images/menu_board.png";
+    public static final String PAUSE_BACKGROUND = "images/pause_menu.png";
+    public static final String SOUND_BUTTONS = "images/sound_button.png";
+    public static final String URM_BUTTONS = "images/urm_buttons.png";
+    public static final String VOLUME_BUTTONS = "images/volume_buttons.png";
+    public static final String MENU_BACKGROUND_IMG = "images/menu_background.png";
+    public static final String PLAYING_BACKGROUND_IMG = "images/playing_bg_img.png";
+    public static final String BIG_CLOUDS = "images/big_clouds.png";
+    public static final String SMALL_CLOUDS = "images/small_clouds.png";
+    public static final String CRABBY_ATLAS = "images/crabby_positions.png";
+    public static final String STATUS_BAR = "images/health_power_bar.png";
+
+
+
+    public static BufferedImage getPositionsAtlas(String fileName) {
+        BufferedImage img = null;
+        InputStream is = LoadSave.class.getResourceAsStream("/" + fileName);
+        try {
+            img = ImageIO.read(is);
+
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                is.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return img;
+    }
+
+    public static ArrayList<Crabby> getCrabs() {
+        BufferedImage img = getPositionsAtlas(LEVEL_ONE_DATA);
+        ArrayList<Crabby> list = new ArrayList<Crabby>();
+        for (int i = 0; i < img.getHeight(); i++)
+            for (int j = 0; j < img.getWidth(); j++) {
+                Color color = new Color(img.getRGB(j, i));
+                int value = color.getGreen();
+                if (value == CRABBY)
+                    list.add(new Crabby(j * Game.TILES_SIZE, i * Game.TILES_SIZE));
+            }
+        return list;
+    }
+
+    public static int[][] getLevelData() {
+        BufferedImage img = getPositionsAtlas(LEVEL_ONE_DATA);
+        int[][] levelData = new int[img.getHeight()][img.getWidth()];
+        for (int i = 0; i < img.getHeight(); i++) {
+            for (int j = 0; j < img.getWidth(); j++) {
+                Color color = new Color(img.getRGB(j, i));
+                int value = color.getRed();
+                if (value >= 12 * 4)
+                    value = 0;
+                levelData[i][j] = value;
+            }
+        }
+        return levelData;
+    }
+}
diff --git a/QuizApp.java b/QuizApp.java
new file mode 100644
index 00000000..8eeb4b0a
--- /dev/null
+++ b/QuizApp.java
@@ -0,0 +1,41 @@
+import java.util.Scanner;
+
+public class QuizApp {
+    public static void main(String[] args) {
+        // Define some sample questions and answers
+        String[] questions = {
+            "What is the capital of France?",
+            "What is the largest planet in our solar system?",
+            "Who wrote Romeo and Juliet?"
+        };
+        
+        String[] answers = {
+            "Paris",
+            "Jupiter",
+            "William Shakespeare"
+        };
+        
+        // Initialize the quiz
+        int score = 0;
+        Scanner scanner = new Scanner(System.in);
+        
+        // Iterate through the questions
+        for (int i = 0; i < questions.length; i++) {
+            System.out.println(questions[i]);
+            String userAnswer = scanner.nextLine();
+            
+            if (userAnswer.equalsIgnoreCase(answers[i])) {
+                System.out.println("Correct!\n");
+                score++;
+            } else {
+                System.out.println("Incorrect. The correct answer is: " + answers[i] + "\n");
+            }
+        }
+        
+        // Display the final score
+        System.out.println("Quiz complete! Your score is: " + score + " out of " + questions.length);
+        
+        // Close the scanner
+        scanner.close();
+    }
+}
diff --git a/QuizUp/Login.java b/QuizUp/Login.java
new file mode 100644
index 00000000..26e0d95d
--- /dev/null
+++ b/QuizUp/Login.java
@@ -0,0 +1,76 @@
+
+package quiz.application;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+
+
+public class Login extends JFrame implements ActionListener {
+    
+    JButton rules, back;
+    JTextField tfname;
+    Login() {
+        getContentPane().setBackground(Color.WHITE);
+        setLayout(null);
+        
+        ImageIcon i1 = new ImageIcon(ClassLoader.getSystemResource("icons/login.jpeg"));
+        JLabel image = new JLabel(i1);
+        add(image);
+        
+        JLabel heading = new JLabel("QUIZ UP");
+        heading.setBounds(810, 60, 300, 45);
+        heading.setFont(new Font("Consolas", Font.BOLD, 40));
+        heading.setForeground(Color.DARK_GRAY);
+        add(heading);
+        
+          JLabel name = new JLabel("Enter Your Name");
+        name.setBounds(810, 150, 300, 20);
+        name.setFont(new Font("Mongolian Baiti", Font.BOLD, 20));
+        name.setForeground(Color.DARK_GRAY);
+        add(name);
+        
+         tfname = new JTextField();
+        tfname.setBounds(735, 200, 300, 25);
+        tfname.setFont(new Font("Times New Roman", Font.BOLD, 20));
+        add(tfname);
+        
+         rules = new JButton("Proceed");
+        rules.setBounds(735, 270, 120, 25);
+        add(rules);
+        rules.setBackground(new Color(0,0,0));
+        rules.addActionListener(this);
+        rules.setForeground(Color.WHITE);
+        
+         back = new JButton("Back");
+        back.setBounds(915, 270, 120, 25);
+        add(back);
+        back.setBackground(new Color(0,0,0));
+        back.addActionListener(this);
+        back.setForeground(Color.WHITE);
+        
+        image.setBounds(0, 0, 600, 500);
+        setSize(1200, 500);
+        setLocation(200, 150);
+        setVisible(true);
+    }
+    
+    public void actionPerformed(ActionEvent ae){
+        if (ae.getSource() == rules) {
+            String name = tfname.getText();
+            setVisible(false);
+            new Rules(name);
+        }else if (ae.getSource() == back) {
+            setVisible(false);
+        }
+    }
+
+    public static void main(String args[]) {
+        Login login = new Login();
+        
+        }
+    }
+        
+        
+
diff --git a/QuizUp/Quiz.java b/QuizUp/Quiz.java
new file mode 100644
index 00000000..8fa994ca
--- /dev/null
+++ b/QuizUp/Quiz.java
@@ -0,0 +1,333 @@
+package quiz.application;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+
+public class Quiz extends JFrame implements ActionListener {
+    
+    String questions[][] = new String[10][5];
+    String answers[][] = new String[10][2];
+    String useranswers[][] = new String[10][1];
+    JLabel qno, question;
+    JRadioButton opt1, opt2, opt3, opt4;
+    ButtonGroup groupoptions;
+    JButton next, submit, lifeline;
+    
+    public static int timer = 15;
+    public static int ans_given = 0;
+    public static int count = 0;
+    public static int score = 0;
+    
+    //database variables
+    Connection connection;
+    ResultSet resultSetQuestions;
+     ResultSet resultSetOptions;
+    ResultSet resultSetSolutions;
+    String name;
+    
+    Quiz(String name) {
+           try {
+            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/quiz_application", "root", "root");
+            retrieveDataFromDatabase(); // Call a method to fetch questions from the database
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        this.name = name;
+        setBounds(50, 0, 1440, 850);
+        getContentPane().setBackground(Color.WHITE);
+        setLayout(null);
+        
+        ImageIcon i1 = new ImageIcon(ClassLoader.getSystemResource("icons/quiz.jpg"));
+        JLabel image = new JLabel(i1);
+        image.setBounds(0, 0, 1440, 392);
+        add(image);
+        
+        qno = new JLabel();
+        qno.setBounds(100, 450, 50, 30);
+        qno.setFont(new Font("Tahoma", Font.PLAIN, 24));
+        add(qno);
+        
+        question = new JLabel();
+        question.setBounds(150, 450, 900, 30);
+        question.setFont(new Font("Tahoma", Font.PLAIN, 24));
+        add(question);
+        
+        
+        
+        opt1 = new JRadioButton();
+        opt1.setBounds(170, 520, 700, 30);
+        opt1.setBackground(Color.WHITE);
+        opt1.setFont(new Font("Dialog", Font.PLAIN, 20));
+        add(opt1);
+        
+        opt2 = new JRadioButton();
+        opt2.setBounds(170, 560, 700, 30);
+        opt2.setBackground(Color.WHITE);
+        opt2.setFont(new Font("Dialog", Font.PLAIN, 20));
+        add(opt2);
+        
+        opt3 = new JRadioButton();
+        opt3.setBounds(170, 600, 700, 30);
+        opt3.setBackground(Color.WHITE);
+        opt3.setFont(new Font("Dialog", Font.PLAIN, 20));
+        add(opt3);
+        
+        opt4 = new JRadioButton();
+        opt4.setBounds(170, 640, 700, 30);
+        opt4.setBackground(Color.WHITE);
+        opt4.setFont(new Font("Dialog", Font.PLAIN, 20));
+        add(opt4);
+        
+        groupoptions = new ButtonGroup();
+        groupoptions.add(opt1);
+        groupoptions.add(opt2);
+        groupoptions.add(opt3);
+        groupoptions.add(opt4);
+        
+        next = new JButton("Next");
+        next.setBounds(1100, 550, 200, 40);
+        next.setFont(new Font("Tahoma", Font.PLAIN, 22));
+        next.setBackground(new Color(30, 144, 255));
+        next.setForeground(Color.WHITE);
+        next.addActionListener(this);
+        add(next);
+        
+        lifeline = new JButton("50-50 Lifeline");
+        lifeline.setBounds(1100, 630, 200, 40);
+        lifeline.setFont(new Font("Tahoma", Font.PLAIN, 22));
+        lifeline.setBackground(new Color(30, 144, 255));
+        lifeline.setForeground(Color.WHITE);
+        lifeline.addActionListener(this);
+        add(lifeline);
+        
+        submit = new JButton("Submit");
+        submit.setBounds(1100, 710, 200, 40);
+        submit.setFont(new Font("Tahoma", Font.PLAIN, 22));
+        submit.setBackground(new Color(30, 144, 255));
+        submit.setForeground(Color.WHITE);
+        submit.addActionListener(this);
+        submit.setEnabled(false);
+        add(submit);
+        
+        start(count);
+        
+        setVisible(true);
+    }
+    
+   
+    private void retrieveDataFromDatabase() {
+        try {
+            String questionsSql = "SELECT * FROM quiz_questions";
+            PreparedStatement questionsStatement = connection.prepareStatement(questionsSql);
+            
+            
+
+            resultSetQuestions = questionsStatement.executeQuery();
+            
+            
+            System.out.println(resultSetOptions);
+            int i = 0;
+            while (resultSetQuestions.next() && i < 10) {
+                questions[i][0] = resultSetQuestions.getString("question_text");
+                // Populate other columns as needed
+
+                // Retrieve choices and solutions based on question IDs
+                int questionId = resultSetQuestions.getInt("question_id");
+                
+                retrieveOptionsForQuestion(questionId, i);
+                retrieveSolutionForQuestion(questionId, i);
+
+                i++;
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+    
+     private void retrieveOptionsForQuestion(int questionId, int i) {
+         try{
+         String choicesSql = "SELECT * FROM quiz_choices where question_id = " + questionId;
+         PreparedStatement choicesStatement = connection.prepareStatement(choicesSql);
+         resultSetOptions = choicesStatement.executeQuery();
+//         System.out.println(resultSetOptions);
+         
+        // Implement code to retrieve choices from the database based on question ID and populate choices array
+        int j=1;
+            while ( resultSetOptions.next() && j < 5) {
+                questions[i][j] = resultSetOptions.getString("choice_text");
+//                System.out.println(questionId[i][j]);
+                j++;
+                }
+         }catch(SQLException e) {
+            e.printStackTrace();
+        }
+     }
+
+    private void retrieveSolutionForQuestion(int questionId, int i) {
+        // Implement code to retrieve solutions from the database based on question ID and populate answers array
+    try{
+         String solutionsSql = "SELECT * FROM quiz_answers where question_id = " + questionId;
+         PreparedStatement solutionsStatement = connection.prepareStatement(solutionsSql);
+         resultSetSolutions = solutionsStatement.executeQuery();
+//         System.out.println(resultSetOptions);
+         
+        // Implement code to retrieve choices from the database based on question ID and populate choices array
+        int j=1;
+            while ( resultSetSolutions.next() && j < 2) {
+                answers[i][j] = resultSetSolutions.getString("answer_text");
+//                System.out.println(questionId[i][j]);
+                j++;
+                }
+         }catch(SQLException e) {
+            e.printStackTrace();
+        }
+    }
+  
+
+    
+    public void actionPerformed(ActionEvent ae) {
+        if (ae.getSource() == next) {
+            repaint();
+            opt1.setEnabled(true);
+            opt2.setEnabled(true);
+            opt3.setEnabled(true);
+            opt4.setEnabled(true);
+            
+            ans_given = 1;
+            if (groupoptions.getSelection() == null) {
+               useranswers[count][0] = "";
+            } else {
+                useranswers[count][0] = groupoptions.getSelection().getActionCommand();
+            }
+            
+            if (count == 8) {
+                next.setEnabled(false);
+                submit.setEnabled(true);
+            }
+            
+            count++;
+            start(count);
+        } else if (ae.getSource() == lifeline) {
+            if (count == 2 || count == 4 || count == 6 || count == 8 || count == 9) {
+                opt2.setEnabled(false);
+                opt3.setEnabled(false);
+            } else {
+                opt1.setEnabled(false);
+                opt4.setEnabled(false);
+            }
+            lifeline.setEnabled(false);
+        } else if (ae.getSource() == submit) {
+            ans_given = 1;
+            if (groupoptions.getSelection() == null) {
+                useranswers[count][0] = "";
+            } else {
+                useranswers[count][0] = groupoptions.getSelection().getActionCommand();
+            }
+
+            for (int i = 0; i < useranswers.length; i++) {
+                if (useranswers[i][0].equals(answers[i][1])) {
+                    score += 10;
+                } else {
+                    score += 0;
+                }
+            }
+            setVisible(false);
+            new Score(name, score);
+        }
+    }
+    
+    public void paint(Graphics g) {
+        super.paint(g);
+        
+        String time = "Time left - " + timer + " seconds"; // 15
+        g.setColor(Color.RED);
+        g.setFont(new Font("Tahoma", Font.BOLD, 25));
+        
+        if (timer > 0) { 
+            g.drawString(time, 1100, 500);
+        } else {
+            g.drawString("Times up!!", 1100, 500);
+        }
+        
+        timer--; // 14
+        
+        try {
+            Thread.sleep(1000);
+            repaint();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
+        if (ans_given == 1) {
+            ans_given = 0;
+            timer = 15;
+        } else if (timer < 0) {
+            timer = 15;
+            opt1.setEnabled(true);
+            opt2.setEnabled(true);
+            opt3.setEnabled(true);
+            opt4.setEnabled(true);
+            
+            if (count == 8) {
+                next.setEnabled(false);
+                submit.setEnabled(true);
+            }
+            if (count == 9) { // submit button
+                if (groupoptions.getSelection() == null) {
+                   useranswers[count][0] = "";
+                } else {
+                    useranswers[count][0] = groupoptions.getSelection().getActionCommand();
+                }
+                
+                for (int i = 0; i < useranswers.length; i++) {
+                    if (useranswers[i][0].equals(answers[i][1])) {
+                        score += 10;
+                    } else {
+                        score += 0;
+                    }
+                }
+                setVisible(false);
+                new Score(name, score);
+            } else { // next button
+                if (groupoptions.getSelection() == null) {
+                   useranswers[count][0] = "";
+                } else {
+                    useranswers[count][0] = groupoptions.getSelection().getActionCommand();
+                }
+                count++; // 0 // 1
+                start(count);
+            }
+        }
+        
+    }
+    
+    public void start(int count) {
+        qno.setText("" + (count + 1) + ". ");
+        question.setText(questions[count][0]);
+        opt1.setText(questions[count][1]);
+        opt1.setActionCommand(questions[count][1]);
+        
+        opt2.setText(questions[count][2]);
+        opt2.setActionCommand(questions[count][2]);
+        
+        opt3.setText(questions[count][3]);
+        opt3.setActionCommand(questions[count][3]);
+        
+        opt4.setText(questions[count][4]);
+        opt4.setActionCommand(questions[count][4]);
+        
+        groupoptions.clearSelection();
+    }
+    
+    public static void main(String[] args) {
+        new Quiz("User");
+    }
+}
\ No newline at end of file
diff --git a/QuizUp/Rules.java b/QuizUp/Rules.java
new file mode 100644
index 00000000..03aa76e0
--- /dev/null
+++ b/QuizUp/Rules.java
@@ -0,0 +1,72 @@
+package quiz.application;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
+public class Rules extends JFrame implements ActionListener{
+
+    String name;
+    JButton start, back;
+    
+    Rules(String name) {
+        this.name = name;
+        getContentPane().setBackground(Color.WHITE);
+        setLayout(null);
+        
+        JLabel heading = new JLabel("Welcome " + name + " to Quiz Up");
+        heading.setBounds(50, 20, 700, 30);
+        heading.setFont(new Font("Viner Hand ITC", Font.BOLD, 28));
+        heading.setForeground(new Color(30, 144, 254));
+        add(heading);
+        
+        JLabel rules = new JLabel();
+        rules.setBounds(20, 90, 700, 350);
+        rules.setFont(new Font("Tahoma", Font.PLAIN, 16));
+        rules.setText(
+            "<html>"+ 
+                "1. Time Limit: Each question has a 15-second time constraint." + "<br><br>" +
+                "2. Correct Answers: Every question has one correct answer." + "<br><br>" +
+                "3. 50-50 Lifeline: Players can use this lifeline once to eliminate two incorrect answer options." + "<br><br>" +
+                "4. Time Management: Players should answer within the 15-second time limit." + "<br><br>" +
+                "5. Scoring: Points awarded for correct answers." + "<br><br>" +
+                "6. Incorrect Answers: No penalties for wrong answers." + "<br><br>" +
+                "7. Lifeline Usage: Tap the 50-50 lifeline button during any question." + "<br><br>" +
+                "8. Fair Play: Follow the rules for fair and enjoyable gameplay." + "<br><br>" +
+            "<html>"
+        );
+        add(rules);
+        
+        back = new JButton("Back");
+        back.setBounds(250, 500, 100, 30);
+        back.setBackground(new Color(30, 144, 254));
+        back.setForeground(Color.WHITE);
+        back.addActionListener(this);
+        add(back);
+        
+        start = new JButton("Start");
+        start.setBounds(400, 500, 100, 30);
+        start.setBackground(new Color(30, 144, 254));
+        start.setForeground(Color.WHITE);
+        start.addActionListener(this);
+        add(start);
+        
+        setSize(800, 650);
+        setLocation(350, 100);
+        setVisible(true);
+    }
+    
+    public void actionPerformed(ActionEvent ae) {
+        if (ae.getSource() == start) {
+            setVisible(false);
+            new Quiz(name);
+        } else {
+            setVisible(false);
+            new Login();
+        }
+    }
+    
+    public static void main(String[] args) {
+        new Rules("User");
+    }
+}
\ No newline at end of file
diff --git a/QuizUp/Score.java b/QuizUp/Score.java
new file mode 100644
index 00000000..809e4ffc
--- /dev/null
+++ b/QuizUp/Score.java
@@ -0,0 +1,49 @@
+package quiz.application;
+
+import java.awt.*;
+import javax.swing.*;
+import java.awt.event.*;
+
+public class Score extends JFrame implements ActionListener {
+
+    Score(String name, int score) {
+        setBounds(400, 150, 750, 550);
+        getContentPane().setBackground(Color.WHITE);
+        setLayout(null);
+        
+        ImageIcon i1 = new ImageIcon(ClassLoader.getSystemResource("icons/score.png"));
+        Image i2 = i1.getImage().getScaledInstance(300, 250, Image.SCALE_DEFAULT);
+        ImageIcon i3 = new ImageIcon(i2);
+        JLabel image = new JLabel(i3);
+        image.setBounds(0, 200, 300, 250);
+        add(image);
+        
+        JLabel heading = new JLabel("Thankyou " + name + " for playing Quiz Up");
+        heading.setBounds(45, 30, 700, 30);
+        heading.setFont(new Font("Tahoma", Font.PLAIN, 26));
+        add(heading);
+        
+        JLabel lblscore = new JLabel("Your score is " + score);
+        lblscore.setBounds(350, 200, 300, 30);
+        lblscore.setFont(new Font("Tahoma", Font.PLAIN, 26));
+        add(lblscore);
+        
+        JButton submit = new JButton("Play Again");
+        submit.setBounds(380, 270, 120, 30);
+        submit.setBackground(new Color(30, 144, 255));
+        submit.setForeground(Color.WHITE);
+        submit.addActionListener(this);
+        add(submit);
+        
+        setVisible(true);
+    }
+    
+    public void actionPerformed(ActionEvent ae) {
+        setVisible(false);
+        new Login();
+    }
+
+    public static void main(String[] args) {
+        new Score("User", 0);
+    }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index f33858f8..8b137891 100644
--- a/README.md
+++ b/README.md
@@ -1,64 +1 @@
-# Java Projects Collections🔥
 
-<img width="1440" alt="image" src="https://github.com/kishanrajput23/Java-Projects-Collections/assets/70385488/d726ecd1-103b-473e-9b4c-a9c07045614e">
-
-<div align="center">
-
-[![Open Source Love](https://firstcontributions.github.io/open-source-badges/badges/open-source-v1/open-source.svg)](https://github.com/kishanrajput23/Hacktoberfest-2023)
-<img src="https://img.shields.io/badge/HacktoberFest-2023-blueviolet" alt="Hacktober Badge"/>
-<img src="https://img.shields.io/static/v1?label=%E2%AD%90&message=If%20Useful&style=style=flat&color=BC4E99" alt="Star Badge"/>
-<a href="https://github.com/kishanrajput23" ><img src="https://img.shields.io/badge/Contributions-welcome-green.svg?style=flat&logo=github" alt="Contributions" /></a>
-
-</div>
-
-
-### This repository aims to help code beginners with their first successful pull request and open source contribution. :partying_face:
-
-:star: Feel free to use this project to make your first contribution to an open-source project on GitHub. Practice making your first pull request to a public repository before doing the real thing!
-
-:star: Make sure to grab some cool swags during Hacktoberfest by getting involved in the open-source community.
-
-### This repository is open to all members of the GitHub community. Any member can contribute to this project! :grin:
-
-## What is Hacktoberfest? :thinking:
-A month-long celebration from October 1st to October 31st presented by [Digital Ocean](https://hacktoberfest.digitalocean.com/) and [DEV Community](https://dev.to/) collaborated with [GitHub](https://github.com/blog/2433-celebrate-open-source-this-october-with-hacktoberfest) to get people involved in [Open Source](https://github.com/open-source). Create your very first pull request to any public repository on GitHub and contribute to the open-source developer community.
-
-[https://hacktoberfest.digitalocean.com/](https://hacktoberfest.digitalocean.com/)
-
-## Rules :fire:
-To qualify for the __official limited edition Hacktoberfest shirt__, you must register [here](https://hacktoberfest.digitalocean.com/) and make four Pull Requests (PRs) between October 1-31, 2022 (in any time zone). PRs can be made to any public repository on GitHub, not only the ones with issues labeled Hacktoberfest. This year, the __first 40,000__ participants who complete Hacktoberfest can elect to receive one of two prizes: a tree planted in their name, or the Hacktoberfest 2022 t-shirt.
-
-## Steps to follow :scroll:
-
-### Tip : Complete this process in GitHub (in your browser)
-
-```mermaid
-flowchart LR
-    Fork[Fork the project]-->branch[Create a New Branch]
-    branch-->Edit[Edit file]
-    Edit-->commit[Commit the changes]
-    commit -->|Finally|creatpr((Create a Pull Request))
-    
- ```
-
-
-Star the repository by pressing the topmost-right button to start your wonderful journey.
-
-
-## Awesome contributors :star_struck:
-<a href="https://github.com/kishanrajput23/Java-Projects-Collections/graphs/contributors">
-  <img src="https://contributors-img.web.app/image?repo=kishanrajput23/Java-Projects-Collections" />
-</a>
-
-Made with [contributors-img](https://contributors-img.web.app).
-
-
-## Help Contributing Guides :crown:
-
-We love to have `articles` and `codes` in different languages and the `betterment` of existing ones.
-
-Please discuss it with us first by creating a new issue.
-
-:tada: :confetti_ball: :smiley: _**Happy Contributing**_ :smiley: :confetti_ball: :tada:
-
-## Author 🙋‍♂️ : [Find Me Here](https://linktr.ee/kishan_rajput23)
diff --git a/Radix Sorting Algo.java b/Radix Sorting Algo.java
new file mode 100644
index 00000000..fc0a1ffa
--- /dev/null
+++ b/Radix Sorting Algo.java	
@@ -0,0 +1,65 @@
+
+import java.util.Arrays;
+
+class RadixSort {
+
+  // Using counting sort to sort the elements in the basis of significant places
+  void countingSort(int array[], int size, int place) {
+    int[] output = new int[size + 1];
+    int max = array[0];
+    for (int i = 1; i < size; i++) {
+      if (array[i] > max)
+        max = array[i];
+    }
+    int[] count = new int[max + 1];
+
+    for (int i = 0; i < max; ++i)
+      count[i] = 0;
+
+    // Calculate count of elements
+    for (int i = 0; i < size; i++)
+      count[(array[i] / place) % 10]++;
+
+    // Calculate cumulative count
+    for (int i = 1; i < 10; i++)
+      count[i] += count[i - 1];
+
+    // Place the elements in sorted order
+    for (int i = size - 1; i >= 0; i--) {
+      output[count[(array[i] / place) % 10] - 1] = array[i];
+      count[(array[i] / place) % 10]--;
+    }
+
+    for (int i = 0; i < size; i++)
+      array[i] = output[i];
+  }
+
+  // Function to get the largest element from an array
+  int getMax(int array[], int n) {
+    int max = array[0];
+    for (int i = 1; i < n; i++)
+      if (array[i] > max)
+        max = array[i];
+    return max;
+  }
+
+  // Main function to implement radix sort
+  void radixSort(int array[], int size) {
+    // Get maximum element
+    int max = getMax(array, size);
+
+    // Apply counting sort to sort elements based on place value.
+    for (int place = 1; max / place > 0; place *= 10)
+      countingSort(array, size, place);
+  }
+
+  // Driver code
+  public static void main(String args[]) {
+    int[] data = { 121, 432, 564, 23, 1, 45, 788 };
+    int size = data.length;
+    RadixSort rs = new RadixSort();
+    rs.radixSort(data, size);
+    System.out.println("Sorted Array in Ascending Order: ");
+    System.out.println(Arrays.toString(data));
+  }
+}
diff --git a/RandomClass.java b/RandomClass.java
new file mode 100644
index 00000000..31b839f3
--- /dev/null
+++ b/RandomClass.java
@@ -0,0 +1,45 @@
+// Java program to demonstrate 
+// method calls of Random class 
+import java.util.Random; 
+
+public class Test 
+{ 
+	public static void main(String[] args) 
+	{ 
+		Random random = new Random(); 
+		System.out.println(random.nextInt(10)); 
+		System.out.println(random.nextBoolean()); 
+		System.out.println(random.nextDouble()); 
+		System.out.println(random.nextFloat()); 
+		System.out.println(random.nextGaussian()); 
+		byte[] bytes = new byte[10]; 
+		random.nextBytes(bytes); 
+		System.out.printf("["); 
+		for(int i = 0; i< bytes.length; i++) 
+		{ 
+			System.out.printf("%d ", bytes[i]); 
+		} 
+		System.out.printf("]\n"); 
+		
+		System.out.println(random.nextLong()); 
+	System.out.println(random.nextInt()); 
+	
+	long seed = 95; 
+	random.setSeed(seed); 
+		
+	// Note: Running any of the code lines below 
+	// will keep the program running as each of the 
+	// methods below produce an unlimited random 
+	// values of the corresponding type 
+
+	/* System.out.println("Sum of all the elements in the IntStream returned = " + 
+		random.ints().count()); 
+	System.out.println("Count of all the elements in the DoubleStream returned = " + 
+		random.doubles().count()); 
+	System.out.println("Count of all the elements in the LongStream returned = " + 
+		random.longs().count()); 
+	
+	*/
+	
+} 
+}	 
diff --git a/Restaurant-management-system/.gitattributes b/Restaurant-management-system/.gitattributes
new file mode 100644
index 00000000..dfe07704
--- /dev/null
+++ b/Restaurant-management-system/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/Restaurant-management-system/Controller.java b/Restaurant-management-system/Controller.java
new file mode 100644
index 00000000..2e4ed54c
--- /dev/null
+++ b/Restaurant-management-system/Controller.java
@@ -0,0 +1,1923 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/
+* 2013
+ */
+
+import java.util.*;
+import java.io.*;
+import java.text.*;
+ 
+public class Controller
+{
+    //define scene
+    public final static int SCENE_MAIN_MENU = 0;    //main menu
+    public final static int SCENE_LOGIN = 1;        //login
+    public final static int SCENE_LOGOUT = 2;
+    public final static int SCENE_MENU_LIST = 3;
+    public final static int SCENE_ORDER = 4;
+    public final static int SCENE_EMPLOYEE_LIST = 5;
+    public final static int SCENE_EDIT_EMPLOYEE = 6;
+    public final static int SCENE_EDIT_MENU_ITEM = 7;
+    public final static int SCENE_GENERATE_REPORTS = 8;
+    
+    //define user type
+    public final static int USER_ANONYMOUS = 0;
+    public final static int USER_EMPLOYEE = 1;
+    public final static int USER_MANAGER = 2; 
+
+    private UserInterface cView; //Reference of userinterface
+    private Database    cDatabase;
+    
+    //parameter
+    private int scene;
+    private int state;  //normally "0", if something happen (ex. quit program) this have some value.
+    private int userType;
+    private int currentUserID;
+    private String currentUserName;
+    private String    todaysDate;
+    
+    public Controller()
+    {
+        this.cDatabase = new Database();
+        this.cView = new UserInterface(this.cDatabase);
+        this.scene = SCENE_MAIN_MENU;
+        this.userType = USER_ANONYMOUS;
+        this.currentUserID = 0;
+        this.currentUserName = "";
+        
+        //get todays date
+        Date date = new Date();
+        SimpleDateFormat stf = new SimpleDateFormat("yyyy/MM/dd");
+        todaysDate = stf.format(date);
+        cView.setTodaysDate(todaysDate);
+        
+        try
+        {
+            cDatabase.loadFiles();
+            this.state = 0;
+        }
+        catch(DatabaseException de)
+        {
+            this.state = -1;
+            printErrorMessageToView(de.getErrMessage());
+        }
+    }
+    
+    /***********************************************************
+     * Main menu 
+     **********************************************************/
+    //----------------------------------------------------------
+    // Select number from mein menu
+    //----------------------------------------------------------
+    private void selectMenu()
+    {
+         cView.showMainMenu( userType);
+         
+         int selection = 0;     
+         while( selection == 0 && this.state == 0)
+         {
+            try
+            {
+                printMessageToView("Please make a selection:");
+                String key = cView.userInput();
+                
+                if(key.equalsIgnoreCase("Q"))   //quit program
+                {
+                    printMessageToView("Are you sure to quit program? (Y:YES)");
+                    key = cView.userInput();
+                    if (key.equalsIgnoreCase("Y")) {
+                        this.state = 1; //If state > 0, program will finish 
+                    }
+                    else
+                    {
+                        //reflesh view
+                        cView.showMainMenu(userType);
+                    }
+                }
+                else if(key.equalsIgnoreCase("F")) //clock out
+                {
+                    printMessageToView("Are you sure to clock out? (Y:YES)");
+                    key = cView.userInput();
+                    if (key.equalsIgnoreCase("Y")) {
+                        Staff rStaff = cDatabase.findStaffByID(currentUserID);
+                        if(rStaff.getWorkState() == Staff.WORKSTATE_FINISH)
+                        {
+                            printMessageToView("You already clocked out.");
+                        }
+                        else
+                        {
+                            rStaff.clockOut();
+                            printMessageToView("Thanks for your hard work!!");
+                        }
+                    }
+                    pause(3);
+                    //reflesh view
+                    cView.showMainMenu(userType);
+                }
+                else
+                {
+                    selection = Integer.parseInt(key);
+                    if( selectionCheck( selection))
+                    {
+                        this.scene = selection;
+                    }
+                    else
+                    {
+                        //reflesh view
+                        cView.showMainMenu(userType);
+                        
+                    }
+                }
+            }
+            catch(Exception e)
+            {
+                //String errMessage = e.toString()  + ":" + e.getMessage();
+                //printMessageToView(errMessage);
+            }
+         }
+    }
+    
+    public void mainLoop()
+    {
+         while( state == 0)
+        {
+            switch( this.scene)
+            {
+                case SCENE_MAIN_MENU:
+                   selectMenu();
+                   break;
+                case SCENE_LOGIN:
+                    userLogin();    
+                    break;
+                case SCENE_LOGOUT:
+                    userLogout();    
+                    break;
+                case SCENE_MENU_LIST:
+                    showMenuList();
+                    break;
+                case SCENE_ORDER:
+                    selectOrderMenu();
+                    break;
+                case SCENE_EMPLOYEE_LIST:
+                    showStaffList();
+                    break;
+                case SCENE_EDIT_EMPLOYEE:
+                    chooseEditStaffMode();
+                    break;
+                case SCENE_EDIT_MENU_ITEM:
+                    chooseEditMenuItemMode();
+                    break;
+                case SCENE_GENERATE_REPORTS:
+                    //generateSalesReports();
+                    generateReports();
+                    break;
+                default:
+                    this.scene = SCENE_MAIN_MENU;
+                    break;
+            }
+            if(state == -1) //error
+                printErrorMessageToView("Error");
+        }
+        
+        //finish program
+        cView.finish();
+    }
+    //----------------------------------------------------------
+    // Check if the number selected is appropriate and
+    // if the user is eligible to operate
+    //----------------------------------------------------------
+    private boolean selectionCheck(int selection)
+    {
+        boolean result = true;
+        switch(userType)
+        {
+            case USER_ANONYMOUS:
+            if( selection <= 0 || SCENE_LOGIN < selection)
+                result = false;
+            break;
+            case USER_EMPLOYEE:
+            if( selection <= 0 || SCENE_ORDER < selection)
+                result = false;
+            break;
+            case USER_MANAGER:
+            if( selection <= 0 || SCENE_GENERATE_REPORTS < selection)
+                result = false;
+            break;
+        }
+        return result;
+    }
+    
+    /***********************************************************
+     * Login mode
+     **********************************************************/
+    private void userLogin()
+    {
+        cView.loginView();
+        printMessageToView("Login as manager? (Y/N)");
+        
+        String key = cView.userInput();
+        if( key.equalsIgnoreCase("Q"))// back to main menu
+        {
+            scene = SCENE_MAIN_MENU;
+            return;
+        }
+        
+        while (!key.equalsIgnoreCase("Y") && !key.equalsIgnoreCase("N"))
+        {
+            printMessageToView("Please enter 'Y' or 'N'\nLogin as manager? (Y/N)");
+            key = cView.userInput();
+        }
+        
+        if (key.equalsIgnoreCase("Y")) {
+            loginCheck(true);      //search manager data
+        } else if (key.equalsIgnoreCase("N")) {
+            loginCheck(false);    //search employee data        
+        }
+        // back to main menu
+        scene = SCENE_MAIN_MENU;
+    }
+    
+    //----------------------------------------------------------
+    // Find user
+    //----------------------------------------------------------
+    private void loginCheck( boolean isManager)
+    {
+        String searchClassName;
+        int     inputID = 0;
+        String  iuputPassword = "";
+        String  key = "";
+            
+        printMessageToView("Enter your ID.");
+        while(inputID == 0)
+        {
+            key = cView.userInput();
+            try{
+                inputID = Integer.parseInt(key);
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Only number is accepted.\nEnter your ID.");
+            }
+        }
+        printMessageToView("Enter your password.");
+        iuputPassword = cView.userInput();
+            
+        //---------search user----------
+        Staff   rStaff = cDatabase.findStaffByID(inputID);
+
+        if(isManager)   searchClassName = "Manager";
+        else            searchClassName = "Employee";
+        
+        if( rStaff != null)//User data is found
+        {
+            //Search only particular target(Manager or Employee)
+            if( rStaff.getClass().getName().equalsIgnoreCase(searchClassName))
+            {
+                if(rStaff.getPassword().equals(iuputPassword))
+                {
+                    printMessageToView("Login successful!!");
+                    if(rStaff.getWorkState() == 0)  //Not clocked in yet
+                    {
+                        rStaff.clockIn();
+                    }
+                    if(isManager)   userType = USER_MANAGER;
+                    else            userType = USER_EMPLOYEE;
+                    currentUserID = inputID;
+                    currentUserName = rStaff.getFullName();
+                    cView.setUserName(currentUserName);  //show user name on the view
+                }
+                else
+                {
+                    printMessageToView("Password unmatching.");
+                }
+            }
+            else    //ID is found but type(Manager or Employee) is umnatching
+            {
+                printMessageToView("Not found.");
+            }
+        }
+        else
+            printMessageToView("Not found.");
+        
+
+        pause(2);    
+    }   
+    //----------------------------------------------------------
+    // Logout (Set state as Anonymous)
+    //----------------------------------------------------------
+    private void userLogout()
+    {
+        //cView.loginView();
+        printMessageToView("Are you sure to log out? (YES:y)");
+        
+        String key = cView.userInput();
+        if(key.equalsIgnoreCase("Y"))
+        {
+            userType = USER_ANONYMOUS;
+            currentUserID = 0;
+            currentUserName = "";
+            cView.setUserName(currentUserName);
+        }
+        scene = SCENE_MAIN_MENU;
+    }
+    /***********************************************************
+     * Edit employee mode
+     **********************************************************/
+     //----------------------------------------------------------
+    // Choose edit mode (1:Add 2:Update 3:Delete)
+    //----------------------------------------------------------
+    private void chooseEditStaffMode()
+    {
+        String  key;
+        int     inputNumber = 0;
+        
+        cView.staffManagementView();
+        printMessageToView("Choose number:");
+        key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Q"))   //Back to main menu
+        {
+            scene = SCENE_MAIN_MENU;
+            return;
+        }
+        
+        while(inputNumber == 0)
+        {
+            try
+            {
+                inputNumber = Integer.parseInt(key);     
+                switch(inputNumber)
+                {
+                    case 1: //add new employee
+                        addNewStaff();
+                    break;
+                    case 2:
+                        updateStaff();
+                    break;
+                    case 3:
+                        deleteStaff();
+                    break;
+                    default:
+                        printMessageToView("Choose 1 to 3:");
+                        key = cView.userInput();
+                    break;
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Choose 1 to 3:");
+                key = cView.userInput();
+            }
+        }
+    }   
+    //----------------------------------------------------------
+    // Add new staff
+    //----------------------------------------------------------
+    private void addNewStaff()
+    {
+        int newID=0;
+        String newFirstName;
+        String newLastName;
+        String newPassword;
+        String key;
+        
+        boolean done = false;
+        //-------------------- loop until new staff is added or enter "Q" ----------
+        while(!done)
+        {
+            cView.addNewStaffView();
+            newID = generateID();
+            if (newID == 0)
+            {
+                //back to mein menu
+                scene = SCENE_MAIN_MENU;
+                return;
+            }
+
+            printMessageToView("Enter first name:");
+            newFirstName = cView.userInput();
+            printMessageToView("Enter last name:");
+            newLastName = cView.userInput();    
+            printMessageToView("Enter password:");
+            newPassword = cView.userInput();
+            
+            printMessageToView("Is the staff manager?(Y/N)");
+            key = cView.userInput();
+            int staffType = 0;  //1:manager 2:employee
+            
+            while(staffType == 0)
+            {
+                if(key.equalsIgnoreCase("Y"))
+                {
+                    staffType = 1;
+                    break;
+                }
+                else if(key.equalsIgnoreCase("N"))
+                {
+                    staffType = 2;
+                    break;
+                }
+                else
+                {
+                    printMessageToView("Please enter 'Y' or 'N'");
+                    key = cView.userInput();   
+                }
+            }
+            //Check all input
+            printMessageToView("--------------------------------------");
+            printMessageToView("NewID:" + newID);
+            printMessageToView("New staff name:" + newFirstName + " " + newLastName);
+            printMessageToView("Password:" + newPassword);
+            switch(staffType)
+            {
+                case 1:
+                printMessageToView("The staff will be added as manager.");
+                break;
+                case 2:
+                printMessageToView("The staff will be added as employee.");
+                break;
+            }
+            
+            printMessageToView("\nOK? (Y:yes)");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Y"))
+            {
+                boolean isManager = false;
+                if(staffType == 1)
+                    isManager = true;
+                try
+                {
+                    cDatabase.addStaff(newID, newLastName, newFirstName, newPassword, isManager);
+                    printMessageToView("New staff information is added.");
+                    done = true;
+                }
+                catch(DatabaseException dbe)
+                {
+                    printErrorMessageToView(dbe.getErrMessage());
+                    pause(2);
+                }
+            }
+        }
+        //---------------- Staff is added (loop end)-----------------------------
+        
+        printMessageToView("Please enter something to exit");
+        key = cView.userInput();
+        scene = SCENE_MAIN_MENU;
+    }
+   
+    //----------------------------------------------------------
+    // Make and check new ID (used by addEmployee method only)
+    //----------------------------------------------------------
+    private int generateID()
+    {
+        int newID = 0;
+        String key;
+        
+        printMessageToView("Choose user ID for new staff:");
+        key = cView.userInput();
+        
+        while(newID == 0)
+        {
+            //Back to main menu
+            if(key.equalsIgnoreCase("Q"))
+                return 0;
+            try
+            {
+                newID = Integer.parseInt(key);
+                if(newID > 9999)
+                {
+                    printMessageToView( "Please enter less than 10000");
+                    key = cView.userInput();
+                    newID = 0;
+                }
+                else
+                {
+                    //Check if there is same ID
+                    Staff   rStaff = cDatabase.findStaffByID(newID);
+                    //if(found)
+                    if(rStaff != null)
+                    {
+                        printMessageToView( "ID:" + newID + "is already used by " + rStaff.getFirstName() + " "
+                                            + rStaff.getLastName() + ".");
+                        printMessageToView("Please try another number:");
+                        key = cView.userInput();
+                        newID = 0;
+                    }
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Please enter valid integer.");
+                key = cView.userInput();
+            }
+
+        }
+        return newID;
+    }
+    
+    //----------------------------------------------------------
+    // Update staff info
+    //----------------------------------------------------------
+    private void updateStaff()
+    {
+        String  key;
+        int     inputNumber = 0;
+        Staff   rStaff = null;
+        boolean done = false;    
+        
+        cView.showStaffList();
+
+        //------------- Input ID check ----------------
+        while(inputNumber == 0)
+        {
+            printMessageToView("Choose user ID to edit:");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Q"))  
+            {
+                //scene = SCENE_MAIN_MENU;
+                printMessageToView("Transaction is canceled.");
+                pause(2);
+                return;
+            }
+            
+            try
+            {
+                //findUser
+                inputNumber = Integer.parseInt(key);     
+                rStaff = cDatabase.findStaffByID(inputNumber);
+
+                if(rStaff == null)
+                {
+                    inputNumber = 0;
+                    printErrorMessageToView("ID is not found.");
+                }
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("ID must be valid number.");
+            }
+        }
+        //------------- Input ID check end ----------------
+        
+        //------------- Choose update staff menu ----------------
+        cView.updateStaffView(rStaff);
+        inputNumber = 0;
+        
+        while(inputNumber == 0)
+        {
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Q"))
+            {
+                printMessageToView("Transaction is canceled.");
+                pause(2);
+                return;
+            }
+            
+            try{
+                inputNumber = Integer.parseInt(key);
+                if(inputNumber < 1 || 5 < inputNumber)
+                {
+                    inputNumber = 0;
+                    printMessageToView("Input 1 to 5");
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Input valid integer:");
+            }
+        }
+        //------------- Choose update staff menu End----------------
+       
+         //------------- Edit Staff data ----------------
+       DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+       while(!done){
+           cView.clearScreen();
+           cView.showStaffData(rStaff);
+           try
+           {
+                switch(inputNumber)
+                {
+                    case 1: //edit last name
+                        printMessageToView("Input new last name:");
+                        key = cView.userInput();
+                        //rStaff.setLastName(key);
+                        cDatabase.editStaffData(rStaff, cDatabase.EDIT_LAST_NAME, key);
+                        cView.showStaffData(rStaff);
+                        printMessageToView("Please enter something to exit");
+                        key = cView.userInput();
+                        done = true;
+                    break;
+                    case 2: //edit first name
+                        printMessageToView("Input new first name:");
+                        key = cView.userInput();
+                        //rStaff.setFirstName(key);
+                        cDatabase.editStaffData(rStaff, cDatabase.EDIT_FIRST_NAME, key);
+                        cView.showStaffData(rStaff);
+                        printMessageToView("Please enter something to exit");
+                        key = cView.userInput();
+                        done = true;
+                    break;
+                    case 3:// Forth clock out
+                        byte state = rStaff.getWorkState();
+                        switch(state)
+                        {
+                            case Staff.WORKSTATE_ACTIVE:
+                                rStaff.clockOut();
+                                printMessageToView("Staff:" + rStaff.getFullName() + " has been clocked out.");
+                                pause(2);
+                                
+                                break;
+                            case Staff.WORKSTATE_FINISH:
+                                printErrorMessageToView("Staff:" + rStaff.getFullName() + " already clocked out.");
+                                pause(3);
+                                break;
+                           default:
+                                printErrorMessageToView("Staff:" + rStaff.getFullName() + "has not been on work today.");
+                                pause(3);
+                                break;
+                        }
+                        done = true;
+                    break;
+                    case 4://change start time
+                        if(rStaff.getWorkState() == 0)
+                        {
+                            printErrorMessageToView("You can not change start time of the staff not working.");
+                            pause(3);
+                            return;
+                        }
+                        
+                        printMessageToView("Enter new start time (HH:mm)");
+                        key = cView.userInput();
+                        if(key.equalsIgnoreCase("Q"))
+                        {
+                            printMessageToView("Transaction is canceled.");
+                            pause(2);
+                            return;
+                        }
+                        key = todaysDate + " " + key + ":00"; //YYYY/MM/DD HH:mm:ss
+                        try
+                        {
+                            Date newTime = sdf.parse(key);
+                            if(rStaff.changeStartTime(newTime))
+                            {
+                                printMessageToView("Start time has been changed.");
+                                printMessageToView("Please enter something to exit");
+                                key = cView.userInput();
+                                done = true;
+                            }
+                            else
+                            {
+                                printErrorMessageToView("changeStartTime error");
+                                pause(3);
+                            }
+                        }
+                        catch(ParseException pe)
+                        {
+                            printErrorMessageToView("Parse error");
+                            printMessageToView("Follow the format 'HH:mm' (ex: 16:30)");
+                            pause(3);
+                        }
+                    break;
+                    case 5://change finish time
+                        if(rStaff.getWorkState() != Staff.WORKSTATE_FINISH)
+                        {
+                            printErrorMessageToView("You can not change finish time of the staff not working.");
+                            pause(3);
+                            return;
+                        }
+                        
+                        printMessageToView("Enter new finish time (HH:mm)");
+                        key = cView.userInput();
+                        if(key.equalsIgnoreCase("Q"))
+                        {
+                            printMessageToView("Transaction is canceled.");
+                            pause(2);
+                            return;
+                        }
+                        key = todaysDate + " " + key + ":00";   //YYYY/MM/DD HH:mm:ss
+                        
+                        try
+                        {
+                            Date newTime = sdf.parse(key);
+                            if(rStaff.changeFinishTime(newTime))
+                            {
+                                printMessageToView("Finish time has been changed.");
+                                printMessageToView("Please enter something to exit");
+                                key = cView.userInput();
+                                done = true;
+                            }
+                            else
+                            {
+                                printErrorMessageToView("changeFinishTime error");
+                                pause(3);
+                            }
+                        }
+                        catch(ParseException pe)
+                        {
+                            printErrorMessageToView("Parse error");
+                            printMessageToView("Follow the format 'HH:mm' (ex: 16:30)");
+                            pause(3);
+                        }
+                    break;
+                    default:
+                        printErrorMessageToView("This line must not be used!!");
+                        printErrorMessageToView("Check Controller class");
+                        pause(2);
+                    break;
+                }
+            }
+            catch(DatabaseException dbe)
+            {
+                printErrorMessageToView(dbe.getErrMessage());
+                pause(3);
+            }
+            //------------- End of edit Staff data ----------------
+        }
+        //----- end loop(loop until done is true) ---------
+                
+        if(rStaff.getID() == currentUserID)
+        {
+            currentUserName = rStaff.getFullName();
+            cView.setUserName(currentUserName);
+        }
+    }
+    
+    //----------------------------------------------------------
+    // Delete staff
+    //----------------------------------------------------------
+    private void deleteStaff()
+    {
+        String  key;
+        int     inputNumber = 0;
+        Staff   rStaff = null;
+        
+        cView.showStaffList();
+        printMessageToView("Choose user ID to delete:");
+        key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Q"))   //Back to main menu
+        {
+            scene = SCENE_MAIN_MENU;
+            return;
+        }
+        
+         while(inputNumber == 0)
+        {
+            try
+            {
+                //findUser
+                inputNumber = Integer.parseInt(key);     
+                rStaff = cDatabase.findStaffByID(inputNumber);
+                
+                if(rStaff == null)
+                {
+                    printMessageToView("ID is not found.");
+                    pause(2);
+                    // back to main menu
+                    scene = SCENE_MAIN_MENU;
+                    return;
+                }
+                
+                printMessageToView("Staff ID:" + rStaff.getID() + " Name:" + rStaff.getFirstName()
+                            + " " + rStaff.getLastName() + "will be deleted. OK? (YES:y)");
+                
+                key = cView.userInput();
+                if(!key.equalsIgnoreCase("Y"))
+                {
+                    printMessageToView("The transaction is canceled.");
+                    pause(2);
+                    scene = SCENE_MAIN_MENU;
+                    return;
+                }
+                
+                cDatabase.deleteStaff(rStaff);
+                /*if(rStaff.getClass().getName().equalsIgnoreCase("Manager"))
+                    cDatabase.updateStaffFile(true);//update manager file
+                else
+                    cDatabase.updateStaffFile(false);//update employee file*/
+                    
+                printMessageToView("Deleted.");
+                pause(2);
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("ID must be valid number. Input again:");
+                key = cView.userInput();
+            }
+        }
+    }
+     /***********************************************************
+     * Order mode
+     **********************************************************/
+    //----------------------------------------------------------
+    // Choose order mode (1:Create order 2:Close order 3:Cancel order)
+    //----------------------------------------------------------
+    private void selectOrderMenu()
+    {
+        String  key;
+        int     inputNumber = 0;
+        
+        Staff rStaff = cDatabase.findStaffByID(currentUserID);
+        if(rStaff.getWorkState() == Staff.WORKSTATE_FINISH)
+        {
+            printErrorMessageToView("You already clocked out.");
+            pause(2);
+            scene = SCENE_MAIN_MENU;
+            return;
+        }
+        
+        while(inputNumber == 0)
+        {
+            cView.showOrderMenu();
+            printMessageToView("Choose number:");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Q"))   //Back to main menu
+            {
+                scene = SCENE_MAIN_MENU;
+                return;
+            }
+            
+            try
+            {
+                inputNumber = Integer.parseInt(key);
+                if(inputNumber < 1 || 5 < inputNumber)
+                {
+                    inputNumber = 0;
+                    printErrorMessageToView("Choose 1 to 5:");
+                    pause(2);
+                }
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("Choose 1 to 5:");
+                pause(2);
+            }
+        }      
+
+        switch(inputNumber)
+        {
+            case 1: //Create
+                createOrder();
+            break;
+            case 2: //Update
+                updateOrder();
+            break;
+            case 3://Close
+                closeOrder();
+            break;
+            case 4://Cancel
+                cancelOrder();
+            break;
+            case 5://Show order list
+                showOrderList();
+                /*cView.showOrderList();
+                //printMessageToView("Please enter something to exit.");
+                //key = cView.userInput();
+                printMessageToView("Enter order ID to display detail. (Q:quit)");
+                key = cView.userInput();
+                if(!key.equalsIgnoreCase("Q"))
+                {
+                    try
+                    {
+                    }
+                    
+                }*/
+            break;
+            default:
+                printErrorMessageToView("This line must not be exexuted!! Check program of selectOrderMenu()");
+                key = cView.userInput();
+            break;
+        }
+    }
+    
+    private void showOrderList()
+    {
+        boolean done = false;
+        String key;
+        
+        while(!done)
+        {
+            cView.showOrderList();
+            printMessageToView("Enter order ID to display detail. (Q:quit)");
+            key = cView.userInput();
+            if(key.equalsIgnoreCase("Q"))   //Exit
+            {
+                return;
+            }
+            
+            try{
+                int ID = Integer.parseInt(key);
+                Order rOrder = cDatabase.findOrderByID(ID);
+                if( rOrder == null)
+                {
+                    printErrorMessageToView("Not found.");
+                    pause(2);
+                }
+                else
+                {
+                    cView.clearScreen();
+                    cView.showOrderDetail(ID);
+                    printMessageToView("Please enter something to exit.");
+                    key = cView.userInput();
+                    done = true;
+                }                
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("Enter valid integer.");
+                pause(2);
+            }
+        }
+    }
+    
+    private void createOrder()
+    {
+        int newOrderID = cDatabase.addOrder(currentUserID, currentUserName);
+        editOrderItem(newOrderID);
+    }
+    
+    private void updateOrder()
+    {
+        cView.showOrderList();
+        int updateOrderID = findOrder();
+        if( updateOrderID == -1)
+            return;
+            
+        Order rOrder = cDatabase.findOrderByID(updateOrderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            printErrorMessageToView("You are not eligible to update the order.");
+            printMessageToView("(The order belonges to " + rOrder.getStaffName() + ")");
+            pause(2);
+            return;    
+        }
+        
+        int orderState = rOrder.getState();
+        switch(orderState)
+        {
+            case Order.ORDER_CLOSED:
+                printMessageToView("The order is already closed.");
+                pause(2);
+            break;
+            case Order.ORDER_CANCELED:
+                printMessageToView("The order was canceled.");
+                pause(2);
+            break;
+            default:
+                editOrderItem(updateOrderID);
+            break;
+        }
+        
+    }
+    
+    private void editOrderItem(int editOrderID)
+    {
+        boolean done = false;    
+        String key;
+        int inputNumber = 0;
+        
+        while(!done)
+        {
+            cView.editOrderView();
+            printMessageToView("Choose number:");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Q"))   //Exit
+            {
+                done = true;
+            }
+            else
+            {
+                try
+                {
+                    inputNumber = Integer.parseInt(key);     
+                    switch(inputNumber)
+                    {
+                        case 1: //add new item
+                            addNewOrderItem(editOrderID);
+                        break;
+                        case 2:
+                            deleteOrderItem(editOrderID);
+                        break;
+                        case 3: //showOrderDetail
+                            cView.clearScreen();
+                            cView.showOrderDetail(editOrderID);
+                            printMessageToView("Please enter something to exit.");
+                            key = cView.userInput();
+                        break;
+                        default:
+                            printMessageToView("Choose 1 to 4.");
+                            pause(2);
+                        break;
+                    }
+                }
+                catch(Exception e)
+                {
+                    printMessageToView("Choose 1 to 4.");
+                    pause(2);
+                }
+            }
+        }
+    }
+    
+    public void addNewOrderItem(int orderID)
+    {
+        boolean done = false;
+        int addItemID = 0;
+        byte addItemQuantity = 0;
+        MenuItem    rNewItem = null;
+        String key;
+            
+        while(!done)
+        {
+            cView.addOrderItemView();
+            //input menu id
+            while(addItemID == 0)
+            {
+                try
+                {
+                    printMessageToView("Choose MenuID:");
+                    key = cView.userInput();
+                    if(key.equalsIgnoreCase("Q"))   //Exit
+                    {
+                        printMessageToView("Transaction canceled.");
+                        pause(2);
+                        return;
+                    }
+                    addItemID = Integer.parseInt(key);
+                    rNewItem = cDatabase.findMenuItemByID(addItemID);
+                    if(rNewItem == null)
+                    {
+                        printErrorMessageToView("MenuID[" + addItemID + "]is not found.");
+                        addItemID = 0;
+                    }
+                }
+                catch(Exception e)
+                {
+                    printErrorMessageToView("Enter valid id number.");
+                }
+            }
+            
+            //input quantity
+            while(addItemQuantity == 0)
+            {
+                try
+                {
+                    printMessageToView("Enter quantity:");
+                    key = cView.userInput();
+                    if(key.equalsIgnoreCase("Q"))   //Exit
+                    {
+                        printMessageToView("Transaction canceled.");
+                        pause(2);
+                        return;
+                    }
+                    addItemQuantity = Byte.parseByte(key);
+                    if( addItemQuantity <= 0)
+                    {
+                        printErrorMessageToView("Enter positive number.");
+                        addItemQuantity = 0;
+                    }
+                }
+                catch(NumberFormatException nfe)
+                {
+                    printErrorMessageToView("Quantity is too large!!");
+                }
+                catch(Exception e)
+                {
+                    printErrorMessageToView("Enter valid id number.");
+                }
+            }
+            
+            //Check all input
+            printMessageToView("MenuID:" + addItemID + " MenuName:" + rNewItem.getName() 
+                        + " Quantity:" + addItemQuantity);
+            
+            printMessageToView("OK?(yes:y)");
+            key = cView.userInput();
+            if(!key.equalsIgnoreCase("Y"))
+            {
+                printMessageToView("canceled.");
+                addItemID = 0;
+                addItemQuantity = 0;
+                rNewItem = null;
+                continue; //back to beginning the loop
+            }
+            
+            
+            //////////ADD!!!(database)/////////////
+            cDatabase.addOrderItem(orderID, rNewItem, addItemQuantity);
+            
+            printMessageToView("Add another item?(yes:y)");
+            key = cView.userInput();
+            if(!key.equalsIgnoreCase("Y"))//finish adding item
+            {
+                done = true;
+            }
+            else//continue adding item
+            {
+                //initialize
+                addItemID = 0;
+                addItemQuantity = 0;
+                rNewItem = null;
+            }
+        }
+    }
+    
+    public void deleteOrderItem(int orderID)
+    {
+        String key;
+        boolean done = false;
+        int deleteNo = 0;
+        
+        Order rOrder = cDatabase.findOrderByID(orderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            printErrorMessageToView("You are not eligible to delete the order.");
+            printMessageToView("(The order belonges to " + rOrder.getStaffName() + ")");
+            pause(2);
+            return;    
+        }
+        
+        while(!done)
+        {
+            try
+            {
+                //show order detail///////
+                cView.deleteOrderItemView();
+                cView.showOrderDetail(orderID);
+                printMessageToView("Choose number to delete or type Q to exit):");
+                key = cView.userInput();
+                if(key.equalsIgnoreCase("Q"))   //Exit
+                {
+                    return;
+                }
+                deleteNo = Integer.parseInt(key) - 1;   //index actually starts from zero
+                if(!cDatabase.deleteOrderItem(orderID, deleteNo))
+                {
+                    printErrorMessageToView("Not found.");
+                    pause(2);
+                    continue;   //delete error 
+                }   
+                cView.deleteOrderItemView();
+                cView.showOrderDetail(orderID);
+                printMessageToView("Deleted.");
+                printMessageToView("Delete another item?(yes:y)");
+                key = cView.userInput();
+                if( !key.equalsIgnoreCase("Y"))
+                    done = true;
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("Enter valid integer.");
+                pause(2);
+            }
+        }
+    }
+    
+    private void closeOrder()
+    {
+        cView.closeOrderView();
+        
+        int closeOrderID = findOrder();
+        if(closeOrderID == -1) return;
+        
+        Order rOrder = cDatabase.findOrderByID(closeOrderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            printErrorMessageToView("You are not eligible to delete the order.");
+            printMessageToView("(The order belonges to " + rOrder.getStaffName() + ")");
+            pause(3);
+            return;    
+        }
+        
+        if(rOrder.getState() != 0)
+        {
+            printMessageToView("The order is already closed or canceled.");
+            pause(2);
+            return;
+        }
+        
+        printMessageToView("Are you sure to close this order?(YES:y)");
+        String key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Y"))//back to previous menu
+        {
+            cDatabase.closeOrder(closeOrderID);
+            printMessageToView("The order have been closed.");
+            pause(2);
+        }
+    }
+    
+    private void cancelOrder()
+    {
+        cView.cancelOrderView();
+        
+        int cancelOrderID = findOrder();
+        if(cancelOrderID == -1) return;
+        
+        Order rOrder = cDatabase.findOrderByID(cancelOrderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            printErrorMessageToView("You are not eligible to delete the order.");
+            printMessageToView("(The order belonges to " + rOrder.getStaffName() + ")");
+            pause(3);
+            return;    
+        }
+        
+        if( rOrder.getState() != 0)
+        {
+            printMessageToView("The order is already closed or canceled.");
+            pause(2);
+            return;
+        }
+        
+        printMessageToView("Are you sure to cancel this order?(YES:y)");
+        String key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Y"))//back to previous menu
+        {
+            cDatabase.cancelOrder(cancelOrderID);
+            printMessageToView("The order have been canceled.");
+            pause(2);
+        }
+    }
+    
+    private int findOrder()
+    {
+        String key;
+        int imputID = -1;
+            
+        while(imputID == -1)
+        {
+            printMessageToView("Choose orderID:");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Q"))//back to previous menu
+            {
+                break;
+            }
+            
+            try
+            {
+                imputID = Integer.parseInt(key);
+                if( imputID < 0)
+                {
+                    printErrorMessageToView("ID must be positive integer.");
+                    imputID = -1;//initiarise
+                    continue;   //back to begining of loop
+                }
+                
+                Order rOrder = cDatabase.findOrderByID(imputID);
+                if(rOrder == null)//order not found
+                {
+                    printErrorMessageToView("OrderID[" + imputID + "]is not found.");
+                    imputID = -1;//initiarise
+                    continue;   //back to begining of loop
+                }
+            }
+            catch(Exception e)
+            {
+                 printMessageToView("Enter valid Integer.");
+            }
+        }
+        return imputID;
+    }
+    
+     /***********************************************************
+     * Edit menu item mode
+     **********************************************************/
+    //----------------------------------------------------------
+    // Choose edit mode (1:Add 2:Update 3:Delete)
+    //----------------------------------------------------------
+    private void chooseEditMenuItemMode()
+    {
+        String  key;
+        int     inputNumber = 0;
+        
+        cView.choseEditMenuView();
+        printMessageToView("Choose number:");
+        key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Q"))   //Back to main menu
+        {
+            scene = SCENE_MAIN_MENU;
+            return;
+        }
+        
+        while(inputNumber == 0)
+        {
+            try
+            {
+                inputNumber = Integer.parseInt(key);     
+                switch(inputNumber)
+                {
+                    case 1: //add new employee
+                        addNewMenuItem();
+                    break;
+                    case 2:
+                        updateMenuItem();
+                    break;
+                    case 3:
+                        deleteMenuItem();
+                    break;
+                    default:
+                        printMessageToView("Choose 1 to 3:");
+                        key = cView.userInput();
+                    break;
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Choose 1 to 3:");
+                key = cView.userInput();
+            }
+        }
+    }
+    
+    //----------------------------------------------------------
+    // Make and check new ID (used by addMenuItem method only)
+    //----------------------------------------------------------
+    private int generateMenuID()
+    {
+        int newID = 0;
+        String key;
+        
+        printMessageToView("Choose ID for new item:");
+        key = cView.userInput();
+        
+        while(newID == 0)
+        {
+            //Back to main menu
+            if(key.equalsIgnoreCase("Q"))
+                return 0;
+            try
+            {
+                newID = Integer.parseInt(key);
+                if(newID > 9999)
+                {
+                    printMessageToView( "Please enter less than 10000");
+                    key = cView.userInput();
+                    newID = 0;
+                }
+                else
+                {
+                    //Check if there is same ID
+                    MenuItem   rMenuItem = cDatabase.findMenuItemByID(newID);
+                    //if(found)
+                    if(rMenuItem != null)
+                    {
+                        printMessageToView( "ID:" + newID + "is already used by " + rMenuItem.getName());
+                        printMessageToView("Please try another number:");
+                        key = cView.userInput();
+                        newID = 0;
+                    }
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Please enter valid integer.");
+                key = cView.userInput();
+            }
+
+        }
+        return newID;
+    }
+    //----------------------------------------------------------
+    // Add new menu item
+    //----------------------------------------------------------
+    private void addNewMenuItem()
+    {
+        int newID=0;
+        String   newName;
+        double  newPrice;
+        byte     newType;
+        String key;
+        
+        cView.addMenuItemView();
+        //cView.clearScreen();
+        //displayTi("********* Add new item **********");
+        
+        boolean done = false;
+        //-------------------- loop until new item is added or enter "Q" ----------
+        while(!done)
+        {
+            newID = generateMenuID();
+            if (newID == 0)
+            {
+                //back to mein menu
+                //scene = SCENE_MAIN_MENU;
+                return;
+            }
+
+            printMessageToView("Enter item name:");
+            newName = cView.userInput();
+            
+            newPrice = 0;
+            printMessageToView("Enter price:");
+            key = cView.userInput();
+            while(newPrice == 0)
+            {
+                try
+                {
+                    newPrice = Double.parseDouble(key);
+                    if(newPrice <= 0)
+                    {
+                        printMessageToView("Enter positive number:");
+                        key = cView.userInput();
+                        newPrice = 0;
+                    }
+                }
+                catch(Exception e)
+                {
+                    printMessageToView("Enter valid number:");
+                    key = cView.userInput();
+                }
+            }
+            
+            newType = 0;
+            printMessageToView("Enter item type(1:MAIN 2:DRINK 3:ALCOHOL 4:DESSERT):");
+            key = cView.userInput();
+            while(newType == 0)
+            {
+                try
+                {
+                    newType = Byte.parseByte(key);
+                    if(newType < 1 || 4< newType)
+                    {
+                        printMessageToView("Enter 1 to 4:");
+                        key = cView.userInput();
+                        newType = 0;
+                    }
+                }
+                catch(Exception e)
+                {
+                    printMessageToView("Enter valid number:");
+                    key = cView.userInput();
+                }
+            }
+            
+            //Check all input
+            printMessageToView("NewID:" + newID);
+            printMessageToView("New item name:" + newName);
+            printMessageToView("New item price:" + newPrice);
+            switch(newType)
+            {
+                case MenuItem.MAIN:
+                    printMessageToView("New item type:MAIN");
+                    break;
+                case MenuItem.DRINK:
+                    printMessageToView("New item type:DRINK");
+                    break;
+                case MenuItem.ALCOHOL:
+                    printMessageToView("New item type:ALCOHOL");
+                    break;
+                case MenuItem.DESSERT:
+                    printMessageToView("New item type:DESSERT");
+                    break;
+            }   
+            
+            printMessageToView("\nOK? (Y:yes)");
+            key = cView.userInput();
+            
+            if(key.equalsIgnoreCase("Y"))
+            {
+                try
+                {
+                    cDatabase.addMenuItem(newID, newName, newPrice, newType);
+                    printMessageToView("New menu item is added.");
+                }
+                catch(DatabaseException dbe)
+                {
+                    printErrorMessageToView("Add menu item error.");
+                }
+                
+                done = true;
+            }
+        }
+        //---------------- MenuItem is added (loop end)-----------------------------
+        
+        printMessageToView("Please enter something to exit");
+        key = cView.userInput();
+        //scene = SCENE_MAIN_MENU;
+    }
+    
+    
+    //----------------------------------------------------------
+    // Edit menu item
+    //----------------------------------------------------------
+    private void updateMenuItem()
+    {
+        String  key = "";
+        int     inputNumber = 0;
+        MenuItem   rMenuItem = null;
+        
+        cView.showMenuList();
+        printMessageToView("-----------------------------------------");
+        
+        while(rMenuItem == null)
+        {
+            printMessageToView("Choose menu ID to edit:");
+            key = cView.userInput();
+            if(key.equalsIgnoreCase("Q"))   //Back to main menu
+            {
+                printMessageToView("Transaction is canceled.");
+                pause(2);
+                return;
+            }
+            
+            try
+            {
+                //findUser
+                inputNumber = Integer.parseInt(key);     
+                rMenuItem = cDatabase.findMenuItemByID(inputNumber);
+
+                if(rMenuItem == null)
+                {
+                    printErrorMessageToView("ID is not found.");
+                }
+            }
+            catch(Exception e)
+            {
+                printErrorMessageToView("ID must be valid number.");
+            }
+        }
+        
+
+            //-------------- Choose Edit number -----------------
+            cView.editMenuItemView(rMenuItem);
+            /*cView.clearScreen();
+            cView.showMenuItemData(rMenuItem);
+            printMessageToView("\nChoose Edit number\n");
+            printMessageToView("1:Name");
+            printMessageToView("2:Price");
+            printMessageToView("3:Type");
+            printMessageToView("4:Set promotion price");
+            printMessageToView("5:Reset item state");
+            printMessageToView("Q:Quit");*/
+            printMessageToView("Choose Edit number:");
+            inputNumber = 0;
+            
+            while(inputNumber == 0)
+            {
+                key = cView.userInput();
+                if(key.equalsIgnoreCase("Q"))   //Back to main menu
+                {
+                    printMessageToView("Transaction is canceled.");
+                    pause(2);
+                    return;
+                }
+                
+                try{
+                    inputNumber = Integer.parseInt(key);
+                    if(inputNumber < 1 || 5 < inputNumber)
+                    {
+                        inputNumber = 0;
+                        printMessageToView("Enter 1 to 5:");
+                    }
+                }
+                catch(Exception e)
+                {
+                    printMessageToView("Input valid integer:");
+                }
+            }
+            //-------------- End choosing edit number -----------------
+            
+            //-------------- Edit item start -----------------
+        
+        boolean done = false;
+        while(!done)
+        {
+            cView.clearScreen();
+            cView.showMenuItemData(rMenuItem);
+            printMessageToView("-----------------------------------------");
+            try
+            {
+                switch(inputNumber)
+                {
+                    case 1: //edit name
+                        printMessageToView("Input new name:");
+                        key = cView.userInput();
+                        cDatabase.editMenuItemData(rMenuItem, cDatabase.EDIT_ITEM_NAME, key);
+                        cView.showMenuItemData(rMenuItem);
+                        printMessageToView("Please enter something to exit");
+                        key = cView.userInput();
+                    break;
+                    case 2: //edit price
+                        printMessageToView("Input new price:");
+                        key = cView.userInput();
+                        cDatabase.editMenuItemData(rMenuItem, cDatabase.EDIT_ITEM_PRICE, key);
+                        cView.showMenuItemData(rMenuItem);
+                        printMessageToView("Please enter something to exit");
+                        key = cView.userInput();
+                    break;
+                    case 3: //edit type
+                        printMessageToView("Input new type(1:Main 2:Drink 3:Alcohol 4:Dessert):");
+                        key = cView.userInput();
+                        cDatabase.editMenuItemData(rMenuItem, cDatabase.EDIT_ITEM_TYPE, key);
+                        cView.showMenuItemData(rMenuItem);
+                        printMessageToView("Please enter something to exit");
+                        key = cView.userInput();
+                    break;
+                    case 4:
+                        printMessageToView("Input promotion price( normaly $" + rMenuItem.gerRegularPrice() + "):");
+                        key = cView.userInput();
+                        double promotionPrice = Double.parseDouble(key);
+                        if(promotionPrice >= rMenuItem.gerRegularPrice())
+                        {
+                            printErrorMessageToView("Promotion Price(" + promotionPrice
+                                + ") should be lower than normal price(" + rMenuItem.gerRegularPrice() + ")!!");
+                           pause(2);
+                           continue;
+                        }
+                        else if(promotionPrice < 0)
+                        {
+                            printErrorMessageToView("Enter positive number.");
+                           pause(2);
+                           continue;
+                        }
+                        else
+                        {
+                            /////database//////
+                            cDatabase.setMenuItemAsPromotionItem(rMenuItem, promotionPrice);
+                            cView.showMenuItemData(rMenuItem);
+                            printMessageToView("Please enter something to exit");
+                            key = cView.userInput();
+                        }
+                    break;
+                    case 5:
+                        cDatabase.resetMenuState(rMenuItem);
+                        cView.showMenuItemData(rMenuItem);
+                        printMessageToView("Item state have been initialized.");
+                         printMessageToView("Please enter something to exit");
+                         key = cView.userInput();
+                    break;
+                    default:
+                        printMessageToView("This line must not be execute!! Please check program.(Controller class)");
+                        pause(2);
+                    break;
+                }
+                done = true;
+            }
+            catch(DatabaseException dbe)
+            {
+                printErrorMessageToView(dbe.getErrMessage());
+                pause(2);
+            }
+            catch( Exception e)
+            {
+                printErrorMessageToView("'" + key +  "'" + "is not acceptable. Please enter only number.");
+                pause(2);
+            }
+            //-------------- Edit item end -----------------
+        }
+        //back to main menu
+        //scene = SCENE_MAIN_MENU;
+    }
+    
+    //----------------------------------------------------------
+    // Delete menuItem
+    //----------------------------------------------------------
+    private void deleteMenuItem()
+    {
+        String  key;
+        int     inputNumber = 0;
+        MenuItem   rMenuItem = null;
+        
+         while(inputNumber == 0)
+        {
+            try
+            {
+                //findUser
+                while(rMenuItem == null)
+                {
+                    cView.showMenuList();
+                    printMessageToView("Choose menu item ID to delete:");   
+                    key = cView.userInput();
+                    if(key.equalsIgnoreCase("Q"))   //Back to main menu
+                    {
+                        //scene = SCENE_MAIN_MENU;
+                        return;
+                    }
+                    inputNumber = Integer.parseInt(key);     
+                    rMenuItem = cDatabase.findMenuItemByID(inputNumber);
+                    if(rMenuItem == null)
+                    {
+                        printMessageToView("Item is not found.:");
+                        pause(2);
+                    }
+                }
+  
+                printMessageToView("MenuItem ID:" + rMenuItem.getID());
+                printMessageToView(" Name:" + rMenuItem.getName());
+                printMessageToView("Price:" + rMenuItem.getPrice());
+                printMessageToView("will be deleted. OK? (YES:y)");
+                
+                key = cView.userInput();
+                if(!key.equalsIgnoreCase("Y"))
+                {
+                    printMessageToView("The transaction is canceled.");
+                    pause(2);
+                    //scene = SCENE_MAIN_MENU;
+                    return;
+                }
+                
+                cDatabase.deleteMenuItem(rMenuItem);
+                    
+                printMessageToView("Deleted.");
+                pause(2);
+            }
+            catch(Exception e)
+            {
+                printMessageToView("ID must be valid number.");
+                pause(2);
+            }
+        }
+    }
+    
+     /***********************************************************
+     * Display database data
+     **********************************************************/
+    private void showMenuList()
+    {
+        cView.showMenuList();
+        printMessageToView("Please enter something to exit.");
+        cView.userInput();
+        // back to main menu
+        scene = SCENE_MAIN_MENU;
+    }
+    
+    private void showStaffList()
+    {
+        cView.showStaffList();
+        printMessageToView("Please enter something to exit.");
+        cView.userInput();
+        // back to main menu
+        scene = SCENE_MAIN_MENU;
+    }
+
+       
+    private void printMessageToView(String message)
+    {
+        cView.displayMessage(message);
+    }
+    
+    private void printErrorMessageToView(String message)
+    {
+        cView.displayErrorMessage(message);
+    }
+    
+    // create pause for some seconds
+    private void pause( long secs)
+    {
+        try
+        {
+            Thread.currentThread().sleep(secs * 1000);
+        }
+        catch(InterruptedException e)
+        {
+           e.printStackTrace();
+        }
+    }
+    /***********************************************************
+     * Generate reports
+     *********************************************************/
+    private void generateReports()
+    {
+        String key;
+        int selection = 0;
+        
+        cView.generateReportView();
+        printMessageToView("Choose number:");
+        while(selection == 0)
+        {
+            try
+            {
+                key = cView.userInput();
+                if(key.equalsIgnoreCase("Q"))
+                {
+                    //Back to main menu
+                    scene = SCENE_MAIN_MENU;
+                    return;
+                }
+                
+                selection = Integer.parseInt(key);
+                
+                String filename;
+                
+                switch(selection)
+                {
+                    case 1:
+                        generateSalesReports();
+                        
+                    break;
+                    case 2:
+                        generatePaymentReports();
+                    break;
+                    default:
+                        selection = 0;
+                        printMessageToView("Choose 1 or 2:");
+                    break;
+                }
+            }
+            catch(Exception e)
+            {
+                printMessageToView("Choose 1 or 2:");
+            }
+        }
+    }
+    
+    private void generateSalesReports()
+    {
+        String key;
+        
+        cView.showOrderList();
+        printMessageToView("Print out? (YES:y)");
+        key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Y"))
+        {
+            if(!cDatabase.checkIfAllOrderClosed())
+            {
+                printMessageToView("All orders must be closed or canceled before generate report.");
+                printMessageToView("Do you want to close all orders? (YES:y)");
+                key = cView.userInput();
+                if(key.equalsIgnoreCase("Y"))
+                {
+                    cDatabase.closeAllOrder();
+                }
+                else
+                {
+                    scene = SCENE_MAIN_MENU;
+                    return;
+                }
+            }
+
+            try
+            {
+                String filename = cDatabase.generateOrderReport(todaysDate);
+                printMessageToView("File <" + filename + "> has been generated.");
+                printMessageToView("Done.");
+                printMessageToView("Please enter something to exit.");
+                key = cView.userInput();
+            }
+            catch(DatabaseException de)
+            {
+                printErrorMessageToView(de.getErrMessage());
+                pause(3);
+            }
+        }
+        // back to main menu
+        scene = SCENE_MAIN_MENU;
+    }
+    
+    private void generatePaymentReports()
+    {
+        String key;
+        
+        cView.showPaymentList();
+        printMessageToView("Print out? (YES:y)");
+        key = cView.userInput();
+        
+        if(key.equalsIgnoreCase("Y"))
+        {
+            //if(!cDatabase.checkIfAllOrderClosed())
+            if(!cDatabase.checkIfAllStaffCheckout())
+            {
+                printMessageToView("There still exist some staff being active.");
+                printMessageToView("All staff must be checked out before generate a payment report.");
+                printMessageToView("Do you want to make all staff finished work? (YES:y)");
+                key = cView.userInput();
+                if(key.equalsIgnoreCase("Y"))
+                {
+                    cDatabase.forthClockOutAllStaff();
+
+                }
+                else
+                {
+                    scene = SCENE_MAIN_MENU;
+                    return;
+                }
+            }
+
+            try
+            {
+                String filename = cDatabase.generatePaymentReport(todaysDate);
+                printMessageToView("File <" + filename + "> has been generated.");
+                printMessageToView("Please enter something to exit.");
+                key = cView.userInput();
+            }
+            catch(DatabaseException de)
+            {
+                printErrorMessageToView(de.getErrMessage());
+                pause(3);
+            }
+        }
+        // back to main menu
+        scene = SCENE_MAIN_MENU;
+    }
+}
diff --git a/Restaurant-management-system/Controller_GUI.java b/Restaurant-management-system/Controller_GUI.java
new file mode 100644
index 00000000..8f49249d
--- /dev/null
+++ b/Restaurant-management-system/Controller_GUI.java
@@ -0,0 +1,672 @@
+
+/**
+ * Write a description of class Controller_GUI here.
+ * 
+ * @author (your name) 
+ * @version (a version number or a date)
+ */
+import java.util.*;
+import java.text.*;
+
+public class Controller_GUI
+{
+    private UserInterface_GUI cView;
+    private Database    cDatabase;
+    private int         userType;
+    private int         currentUserID;
+    private String      currentUserName;
+    private String      todaysDate;
+    
+    private int         todaysOrderCnt;     //Today's order count
+    private double      totalSales;         //Today's total sales
+    private int         todaysCancelCnt;    //Today's cancel count
+    private double      cancelTotal;        //Total cost of today's canceled orders
+    
+    
+    private String      errorMessage;
+    
+    //define user type
+    public final static int USER_ANONYMOUS = 0;
+    public final static int USER_EMPLOYEE = 1;
+    public final static int USER_MANAGER = 2; 
+    
+    public Controller_GUI()
+    {
+        this.cDatabase = new Database();
+        try
+        {
+            cDatabase.loadFiles();
+        }
+        catch(DatabaseException de)
+        {
+            System.out.println(de.getErrMessage());
+            System.exit(0);
+        }
+        
+        cView = new UserInterface_GUI( this);
+        
+        Date date = new Date();
+        SimpleDateFormat stf = new SimpleDateFormat("yyyy/MM/dd");
+        todaysDate = stf.format(date);
+        cView.setVisible(true);
+        cView.setTodaysDate(todaysDate);
+        this.userType = USER_ANONYMOUS;
+        
+        todaysOrderCnt = 0;
+        totalSales = 0;
+        todaysCancelCnt = 0;
+        cancelTotal = 0;
+    }
+    
+    private void  setErrorMessage(String errorMessage)
+    {
+        this.errorMessage = errorMessage;
+    }
+    
+    public String  getErrorMessage()
+    {
+        String result = this.errorMessage;
+        this.errorMessage = "";
+        return result;
+    }
+    
+    public int getTodaysOrderCnt()
+    {
+        return this.todaysOrderCnt;
+    }
+    
+    public int getTodaysCancelCnt()
+    {
+        return this.todaysCancelCnt;
+    }
+    
+    public double getTotalSales()
+    {
+        return this.totalSales;
+    }
+    
+    public double getCancelTotal()
+    {
+        return this.cancelTotal;
+    }
+    
+    public double getOrderTotalCharge(int orderID)
+    {
+        return cDatabase.getOrderTotalCharge(orderID);
+    }
+    
+    public int getOrderState(int orderID)
+    {
+        return cDatabase.getOrderState(orderID);
+    }
+    
+    public String getCurrentUserName()
+    {
+        return this.currentUserName;
+    }
+    
+    public boolean checkIfUserClockedOut()
+    {
+        Staff   rStaff = cDatabase.findStaffByID(currentUserID);
+        
+        if( rStaff == null) return false;
+        if( rStaff.getWorkState() == Staff.WORKSTATE_ACTIVE)
+            return true;
+        else 
+            return false;
+    }
+    
+     /***********************************************************
+     * Login 
+     **********************************************************/
+    //----------------------------------------------------------
+    // Find user
+    //----------------------------------------------------------  
+    public boolean loginCheck( int inputID, String inputPassword, boolean isManager)
+    {
+        String searchClassName;
+            
+        //---------search user----------
+        Staff   rStaff = cDatabase.findStaffByID(inputID);
+
+        if(isManager)   searchClassName = "Manager";
+        else            searchClassName = "Employee";
+        
+        if( rStaff != null)//User data is found
+        {
+            //Search only particular target(Manager or Employee)
+            if( rStaff.getClass().getName().equalsIgnoreCase(searchClassName))
+            {
+                if(rStaff.getPassword().equals(inputPassword))
+                {
+                    if(rStaff.getWorkState() == 0)  //Not clocked in yet
+                    {
+                        rStaff.clockIn();
+                    }
+                    if(isManager)
+                    {
+                        userType = USER_MANAGER;
+                        cView.changeMode(cView.MODE_MANAGER);
+                    }
+                    else 
+                    {
+                        userType = USER_EMPLOYEE;
+                        cView.changeMode(cView.MODE_EMPLOYEE);
+                    }
+                    currentUserID = inputID;
+                    currentUserName = rStaff.getFullName();
+                    cView.setLoginUserName(currentUserName);  //show user name on the view
+                    
+                    return true; //Login success
+                }
+                else
+                {
+                    setErrorMessage("Password unmatch.");
+                    //printErrorMessageToView("Password unmatching.");
+                    return false;
+                }
+            }
+            else    //ID is found but type(Manager or Employee) is umnatching
+            {
+                setErrorMessage("Not found.");
+                //printErrorMessageToView("Not found.");
+                return false;
+            }
+        }
+        else
+        {
+            setErrorMessage("Not found.");
+            return false;
+        }
+
+    }   
+    
+    //----------------------------------------------------------
+    // Logout (Set state as Anonymous)
+    //----------------------------------------------------------
+    public void userLogout()
+    {
+        userType = USER_ANONYMOUS;
+        currentUserID = 0;
+        cView.setLoginUserName("");
+    }
+    
+     /***********************************************************
+     * Staff management
+     **********************************************************/
+    public boolean addNewStaff(int newID, String newPassword, String newFirstName, String newLastName, boolean isManager)
+    {
+        Staff rStaff = cDatabase.findStaffByID(newID);
+        if(rStaff != null)
+        {
+            setErrorMessage("ID:" + newID + " is arleady used by " + rStaff.getFullName());
+            return false;
+        }
+        
+        try
+        {
+            cDatabase.addStaff(newID, newPassword, newFirstName, newLastName, isManager);
+            return true;
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+    }
+    
+    public boolean updateStaff(int id, String newPassword, String newFirstName, String newLastName)
+    {
+        try
+        {
+            cDatabase.editStaffData(id, newPassword, newFirstName, newLastName);
+            return true;
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+    }
+    
+    public boolean deleteStaff(int id)
+    {
+        Staff rStaff = cDatabase.findStaffByID(id);
+        if(rStaff == null)
+        {
+            setErrorMessage("StaffID:" + id + " is not found.");
+            return false;
+        }
+        
+        try
+        {
+            cDatabase.deleteStaff(rStaff);
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+        return true;
+    }
+    
+    public Staff    getStaffData(int staffID)
+    {
+        return cDatabase.findStaffByID(staffID);
+    }
+    
+    public boolean clockOut()
+    {
+        return clockOut(currentUserID);
+    }
+    
+    public boolean clockOut(int staffID)
+    {
+        Staff rStaff = cDatabase.findStaffByID(staffID);
+        
+        byte state = rStaff.getWorkState();
+        boolean result = false;
+        switch(state)
+        {
+            case Staff.WORKSTATE_ACTIVE:
+                rStaff.clockOut();
+                result = true;
+                break;
+            case Staff.WORKSTATE_FINISH:
+                setErrorMessage("Staff:" + rStaff.getFullName() + " already clocked out.");
+                break;
+           default:
+                setErrorMessage("Staff:" + rStaff.getFullName() + "has not been on work today.");
+                break;
+        }
+        
+        return result;
+    }
+    
+    public void clockOutAll()
+    {
+        cDatabase.forthClockOutAllStaff();
+    }
+
+     /***********************************************************
+     * Menu management
+     **********************************************************/
+    public boolean addNewMenuItem(int newID, String newName, double newPrice, byte menuType)
+    {
+        MenuItem rMenuItem = cDatabase.findMenuItemByID(newID);
+        if(rMenuItem != null)
+        {
+            setErrorMessage("ID:" + newID + " is arleady used by " + rMenuItem.getName());
+            return false;
+        }
+        
+        try
+        {
+            cDatabase.addMenuItem(newID, newName, newPrice, menuType);
+            return true;
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+    }
+    
+    public boolean updateMenuItem(int id, String newName, double newPrice, byte menuType)
+    {
+        try
+        {
+            cDatabase.editMenuItemData(id, newName, newPrice, menuType);
+            return true;
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+    }
+    
+    public boolean deleteMenuItem(int id)
+    {
+        MenuItem rMenuItem= cDatabase.findMenuItemByID(id);
+        if(rMenuItem == null)
+        {
+            setErrorMessage("Menu item ID:" + id + " is not found.");
+            return false;
+        }
+        
+        try
+        {
+            cDatabase.deleteMenuItem(rMenuItem);
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return false;
+        }
+        return true;
+    }
+     
+    public MenuItem    getMenuItemData(int menuItemID)
+    {
+        return cDatabase.findMenuItemByID(menuItemID);
+    }
+     /***********************************************************
+     * Order management
+     **********************************************************/
+    public int createOrder()
+    {
+        return cDatabase.addOrder(currentUserID, currentUserName);
+        //editOrderItem(newOrderID);
+    }
+    
+    public boolean addNewOrderItem(int orderID, int addItemID, byte addItemQuantity)
+    {
+        Order rOrder = cDatabase.findOrderByID(orderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            setErrorMessage("You are not eligible to edit the order.\nThe order belonges to " + rOrder.getStaffName() + ")");
+            //printErrorMessageToView("You are not eligible to edit the order.\nThe order belonges to " + rOrder.getStaffName() + ")");
+            return false;    
+        }
+        
+        MenuItem    rNewItem = null;
+        
+        rNewItem = cDatabase.findMenuItemByID(addItemID);
+        if(rNewItem == null)
+        {
+            setErrorMessage("MenuID[" + addItemID + "]is not found.");
+            //printErrorMessageToView("MenuID[" + addItemID + "]is not found.");
+            addItemID = 0;
+            return false;
+        }
+        
+         //////////ADD!!!(database)/////////////
+         cDatabase.addOrderItem(orderID, rNewItem, addItemQuantity);
+         return true;
+    }
+    
+    public boolean deleteOrderItem(int orderID, int deleteNo)
+    {
+        Order rOrder = cDatabase.findOrderByID(orderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            setErrorMessage("You are not eligible to delete the order.\nThe order belonges to " + rOrder.getStaffName() + ")");
+            //printErrorMessageToView("You are not eligible to delete the order.\nThe order belonges to " + rOrder.getStaffName() + ")");
+            return false;    
+        }
+        
+        deleteNo -=1;  //index actually starts from zero
+        if(!cDatabase.deleteOrderItem(orderID, deleteNo))
+        {
+            //printErrorMessageToView("Not found.");
+            setErrorMessage("Not found.");
+            return false;
+        }
+        return true;
+    }
+    
+    public boolean closeOrder(int closeOrderID)
+    {
+        Order rOrder = cDatabase.findOrderByID(closeOrderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            setErrorMessage("You are not eligible to delete the order.\n(The order belonges to " + rOrder.getStaffName() + ")");
+            return false;    
+        }
+        
+        if(rOrder.getState() != 0)
+        {
+            setErrorMessage("The order is already closed or canceled.");
+            return false;
+        }
+        cDatabase.closeOrder(closeOrderID);
+        todaysOrderCnt++;
+        totalSales += rOrder.getTotal();
+        return true;
+    }
+    
+    public boolean cancelOrder(int cancelOrderID)
+    {
+        Order rOrder = cDatabase.findOrderByID(cancelOrderID);
+        if( currentUserID != rOrder.getStaffID())
+        {
+            setErrorMessage("You are not eligible to delete the order.\n(The order belonges to " + rOrder.getStaffName() + ")");
+            return false;    
+        }
+        
+        if( rOrder.getState() != 0)
+        {
+            setErrorMessage("The order is already closed or canceled.");
+            return false;
+        }
+
+        cDatabase.cancelOrder(cancelOrderID);
+        todaysCancelCnt++;
+        cancelTotal += rOrder.getTotal();
+        return true;
+    }
+    
+    public void closeAllOrder()
+    {
+        cDatabase.closeAllOrder();
+    }
+    
+    /***********************************************************
+     * Reports
+     * return:Report file name
+     **********************************************************/
+     public String generateSalesReport()
+     {
+        if(!cDatabase.checkIfAllOrderClosed())
+        {
+             setErrorMessage("All orders must be closed or canceled before generate reports.");
+             return null;
+        }
+            
+         try
+        {
+            return cDatabase.generateOrderReport(todaysDate);
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return null;
+        }
+    }
+    
+    public String generatePaymentReport()
+    {
+        if(!cDatabase.checkIfAllStaffCheckout())
+        {
+            setErrorMessage("All staff must be checked out before generate a payment report.");
+            return null;
+        }
+
+        try
+        {
+            return cDatabase.generatePaymentReport(todaysDate);
+        }
+        catch(DatabaseException de)
+        {
+            setErrorMessage(de.getErrMessage());
+            return null;
+        }
+    }
+    
+    /***********************************************************
+     * Create stiring lists
+     **********************************************************/
+    public  ArrayList<String>  createStaffList()
+    {
+        Iterator<Staff> it = cDatabase.getStaffList().iterator();
+        ArrayList<String> initData = new ArrayList<String>();
+        
+        while (it.hasNext()) {
+            Staff re = (Staff)it.next();
+            String fullName = re.getFullName();
+            String output = String.format("Staff ID:%4d  Name:%-25s",
+                                            re.getID(), fullName);
+            switch(re.getWorkState())
+            {
+                case Staff.WORKSTATE_ACTIVE:
+                    output += "[From:" + re.getStartTime() + "]";
+                break;
+                case Staff.WORKSTATE_FINISH:
+                    output += "[From:" + re.getStartTime() + " to " + re.getFinishTime() + "]";
+                break;
+                default:
+                    output += "[Not on work]";
+                break;
+            }
+            
+            //if(re.getClass().getName().equalsIgnoreCase("Manager"))
+             if(re instanceof Manager)
+            {
+                output += " * Manager *";
+            }
+            initData.add(output);
+        }
+        
+        return initData;
+    }
+    
+    public ArrayList<String>  createOrderList()
+    {
+        Iterator<Order> it = cDatabase.getOrderList().iterator();
+        String          state;
+        ArrayList<String> initData = new ArrayList<String>();
+        String          output;
+        
+        while (it.hasNext()) {
+            Order re = it.next();
+            switch(re.getState())
+            {
+                case Order.ORDER_CLOSED:
+                    state = "Closed";
+                break;
+                case Order.ORDER_CANCELED:
+                    state = "Canceled";
+                break;
+                default:
+                    state = "-";
+                break;
+            }
+            
+            output = String.format("Order ID:%4d  StaffName:%-20s  Total:$%5.2f State:%-8s\n",
+                                            re.getOrderID(),re.getStaffName(),re.getTotal(),state);
+            initData.add(output);
+        }
+        if(initData.isEmpty())
+            initData.add("No order.");
+        return initData;
+    }
+    
+    public ArrayList<String> createOrderItemlList(int orderID)
+    //private void createOrderItemlList( int orderID, JList list)
+    {
+        Order rOrder = cDatabase.findOrderByID(orderID);
+        ArrayList<String> initData = new ArrayList<String>();
+
+        if(rOrder == null)
+        {
+            initData.add("No order information");
+            //list.setListData(initData);
+            return initData;
+        }
+        
+        String output;
+
+        Iterator<OrderDetail> it = rOrder.getOrderDetail().iterator();
+        OrderDetail    re;
+        
+        int count = 0;
+        
+        while (it.hasNext()) {
+            re = it.next();
+            output = String.format("%-4d|%-24s|%5d|%5.2f",
+                                    ++count, re.getItemName(), re.getQuantity(), re.getTotalPrice());
+           initData.add(output);
+        }
+        if(initData.isEmpty())
+            initData.add("No item");
+        //list.setListData(initData);
+        return initData;
+    }   
+    
+    public ArrayList<String> createMenuList(int disuplayMenuType)
+    {
+        Iterator<MenuItem> it = cDatabase.getMenuList().iterator();
+        ArrayList<String> initData = new ArrayList<String>();
+        
+        while (it.hasNext()) {
+            MenuItem re = (MenuItem)it.next();
+             byte menuType = re.getType();
+             //displayMenuType != ALL && ...
+             if(disuplayMenuType!= 0 && disuplayMenuType != menuType)
+                continue;
+             String strMenuType;
+            switch( menuType)
+            {
+                case MenuItem.MAIN:
+                strMenuType = "Main";
+                break;
+                case MenuItem.DRINK:
+                strMenuType = "Drink";
+                break;
+                case MenuItem.ALCOHOL:
+                strMenuType = "Alcohol";
+                break;
+                case MenuItem.DESSERT:
+                strMenuType = "Dessert";
+                break;
+                default:
+                strMenuType = "Undefined";
+                break;
+            }
+            String output = String.format("Menu ID:%4d  Name:%-20s  Price:%5.2f Type:%s",
+                                            re.getID(),re.getName(),re.getPrice(),strMenuType);
+           if(re.getState() == MenuItem.PROMOTION_ITEM)
+           {
+               output += " ** Today's Special!! **";
+            }
+            
+            initData.add(output);
+        }
+        if(initData.isEmpty())
+            initData.add("No order.");
+        return initData;
+    }
+    
+    public String createPaymentList()
+    {
+        double          totalPayment = 0;
+        int             staffNum = 0;
+        String          output = "";
+        
+        Iterator<Staff> it = cDatabase.getStaffList().iterator();
+        while (it.hasNext())
+        {
+            Staff re = it.next();
+
+            if(re.getWorkState() == Staff.WORKSTATE_FINISH)
+            {
+                double pay = re.culculateWages();
+                output += String.format("Staff ID:%4d  StaffName:%-20s  Work time:%5.2f Pay:%5.2f\n",
+                                            re.getID(),re.getFullName(),re.culculateWorkTime(), pay);
+                staffNum++;
+                totalPayment += pay;
+            }
+            else if(re.getWorkState() == Staff.WORKSTATE_ACTIVE)
+            {
+                output += String.format("Staff ID:%4d  StaffName:%-20s  * On work *\n",
+                                            re.getID(),re.getFullName());
+                staffNum++;
+            }
+        }
+        output += "-------------------------------------------------------\n";
+        output += String.format("Total payment:$%.2f (%d)", totalPayment, staffNum);
+        return output;
+        //displayMessage("Total payment:$" + totalPayment + "(" + staffNum + ")");
+    }
+}
diff --git a/Restaurant-management-system/Database.java b/Restaurant-management-system/Database.java
new file mode 100644
index 00000000..9114d45e
--- /dev/null
+++ b/Restaurant-management-system/Database.java
@@ -0,0 +1,876 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+import java.util.*;
+import java.io.*;
+import java.lang.*;
+import java.util.Comparator;
+
+public class Database
+{
+    private final static String STAFF_FILE = "dataFiles/staff.txt";
+    private final static String MANAGER_FILE = "dataFiles/manager.txt";
+    private final static String MENU_FILE = "dataFiles/menu_item.txt";
+    private final static String REPORT_FILE = "dataFiles/reports/report_";
+    private final static String PAYMENT_FILE = "dataFiles/reports/payment_";
+    private final static String WAGE_INFO_FILE = "dataFiles/wage_info.txt";
+    
+    private ArrayList<Staff> staffList = new ArrayList<Staff>();
+    private ArrayList<MenuItem> menuList = new ArrayList<MenuItem>();
+    private ArrayList<Order> orderList = new ArrayList<Order>();
+    
+    private Date    date;
+    int     todaysOrderCounts;
+    /****************************************************************************
+     * Constructor
+     ***************************************************************************/   
+    public Database()
+    {
+        date = new Date();
+        todaysOrderCounts = 0;  //Load order file??
+    }
+    /****************************************************************************
+     * Getter
+     ***************************************************************************/
+     public ArrayList<Staff> getStaffList()
+     {
+         return staffList;
+     }
+     
+     public ArrayList<MenuItem> getMenuList()
+     {
+         return menuList;
+     }
+     
+     public ArrayList<Order> getOrderList()
+     {
+         return orderList;
+     }
+     
+     public int getTodaysOrderCount()
+     {
+         return this.todaysOrderCounts;
+     }
+     
+    //----------------------------------------------------------
+    // Find staff from ID
+    //----------------------------------------------------------
+    public Staff   findStaffByID(int id)
+    {
+        Iterator<Staff> it = staffList.iterator();
+        Staff           re = null;
+        boolean         found = false;
+        
+        if(id < 0){
+            return null;
+        }
+        
+        while (it.hasNext() && !found) {
+            re = (Staff)it.next();  
+            if( re.getID() == id)
+            {
+                found = true;
+            }
+        }
+        
+        if(found)
+            return re;
+        else        
+            return null;
+    }
+    
+    //----------------------------------------------------------
+    // Find menu item from ID
+    //----------------------------------------------------------
+    public MenuItem   findMenuItemByID(int id)
+    {
+        Iterator<MenuItem> it = menuList.iterator();
+        MenuItem           re = null;
+        boolean         found = false;
+        
+        if(id < 0){
+            return null;
+        }
+        
+        while (it.hasNext() && !found) {
+            re = (MenuItem)it.next();  
+            if( re.getID() == id)
+            {
+                found = true;
+            }
+        }
+        
+        if(found)
+            return re;
+        else        
+            return null;
+    }
+    
+    //----------------------------------------------------------
+    // Find order from ID
+    //----------------------------------------------------------
+    public Order   findOrderByID(int id)
+    {
+        Iterator<Order> it = orderList.iterator();
+        Order           re = null;
+        boolean         found = false;
+        
+        if(id < 0){
+            return null;
+        }
+        
+        while (it.hasNext() && !found) {
+            re = it.next();  
+            if( re.getOrderID() == id)
+            {
+                found = true;
+            }
+        }
+        
+        if(found)
+            return re;
+        else        
+            return null;
+    }
+     /****************************************************************************
+     * Manipurate datas
+     ***************************************************************************/
+     //---------------------------------------------------------------
+     // Staff information
+     //---------------------------------------------------------------
+     //edit staff data
+     // rStaff reference the staff 
+     // which 1:Lastname 2:Firstname 3:passward
+     public final static int EDIT_LAST_NAME = 1;
+     public final static int EDIT_FIRST_NAME = 2;
+     public final static int EDIT_PASSWORD = 3;
+     
+     public void editStaffData(int staffID, String newPassword, String newFirstName, String newLastName) throws DatabaseException
+     {
+        Staff  rStaff = findStaffByID(staffID);
+        rStaff.setPassword(newPassword);
+        rStaff.setLastName(newLastName);
+        rStaff.setFirstName(newFirstName);
+    
+        try
+        {
+            if(rStaff instanceof Manager)
+            //if(rStaff.getClass().getName().equalsIgnoreCase("Manager"))
+            updateStaffFile(true);//update manager file
+            else
+            updateStaffFile(false);//update employee file
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }
+    }
+     
+     public void editStaffData(Staff rStaff, int which, String newData) throws DatabaseException
+     {
+         switch(which)
+         {
+             case EDIT_LAST_NAME:
+                rStaff.setLastName(newData);
+             break;
+             case EDIT_FIRST_NAME:
+                rStaff.setFirstName(newData);
+             break;
+             case EDIT_PASSWORD:
+                rStaff.setPassword(newData);
+             break;
+             default:
+             break;
+         }
+         
+         try
+         {
+             if(rStaff instanceof Manager)
+             //if(rStaff.getClass().getName().equalsIgnoreCase("Manager"))
+                updateStaffFile(true);//update manager file
+             else
+                updateStaffFile(false);//update employee file
+         }
+         catch(DatabaseException dbe)
+         {
+             throw dbe;
+         }
+     }
+     
+     public void deleteStaff(Staff rStaff) throws DatabaseException
+     {
+         boolean isManager = false;
+         staffList.remove(rStaff);
+         //if(rStaff.getClass().getName().equalsIgnoreCase("Manager"))
+        if(rStaff instanceof Manager)
+         isManager = true;
+        try
+        {
+            updateStaffFile(isManager);
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }
+     }
+     
+     
+     public void addStaff(int newID, String newPassward, String newFirstName, String newLastName, boolean isManager) throws DatabaseException
+     {
+         Staff newStaff;
+         if(isManager)
+            newStaff = new Manager(newID, newLastName, newFirstName, newPassward);
+         else
+            newStaff = new Employee(newID, newLastName, newFirstName, newPassward);
+         staffList.add(newStaff);
+         if(newStaff instanceof Manager)
+         //if(newStaff.getClass().getName().equalsIgnoreCase("Manager"))
+            isManager = true;
+        try
+        {
+            updateStaffFile(isManager);
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }
+     }
+
+     //---------------------------------------------------------------
+     // MenuItem
+     //---------------------------------------------------------------
+     //edit menu item data
+     // rMenuItem reference the MenuItem 
+     // which 1:name 2:price 3:type
+     public final static int EDIT_ITEM_NAME = 1;
+     public final static int EDIT_ITEM_PRICE = 2;
+     public final static int EDIT_ITEM_TYPE = 3;
+     
+     public void editMenuItemData(int id, String newName, double newPrice, byte menuType) throws DatabaseException
+     {
+         MenuItem rMenuItem = findMenuItemByID(id);
+         rMenuItem.setName(newName);
+         rMenuItem.setPrice(newPrice);
+         rMenuItem.setType(menuType);
+         
+        /*try
+        {
+            updateMenuFile();
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }*/
+     }
+     
+     public void editMenuItemData(MenuItem rMenuItem, int which, String newData) throws DatabaseException
+     {
+         try
+         {
+             switch(which)
+             {
+                 case EDIT_ITEM_NAME:
+                    rMenuItem.setName(newData);
+                    break;
+                 case EDIT_ITEM_PRICE:
+                    double newPrice = Double.parseDouble(newData);
+                    if(newPrice < 0)
+                        throw new DatabaseException("Price must be positive number");
+                    else
+                        rMenuItem.setPrice(newPrice);
+                    break;
+                 case EDIT_ITEM_TYPE:
+                    byte newType = Byte.parseByte(newData);
+                    if(newType < MenuItem.MAIN || MenuItem.DESSERT < newType)
+                        throw new DatabaseException("Type must be between " + MenuItem.MAIN
+                                            + " and " + MenuItem.DESSERT + ")");
+                    else
+                        rMenuItem.setType(Byte.parseByte(newData));
+                    break;
+                 default:
+                    break;
+             }
+        }
+        catch(DatabaseException e)
+        {
+            throw e;
+        }
+        catch(Exception e)
+        {
+            throw new DatabaseException(e.getMessage());
+        }
+     }
+     
+     public void setMenuItemAsPromotionItem(MenuItem rMenuItem, double price)
+     {
+         rMenuItem.setState(MenuItem.PROMOTION_ITEM, price);
+     }
+     
+     public void resetMenuState(MenuItem rMenuItem)
+     {
+         rMenuItem.resetState();
+     }
+     
+     public void deleteMenuItem(MenuItem rMenuItem) throws DatabaseException
+     {
+         menuList.remove(rMenuItem);
+         /*try
+        {
+             updateMenuFile();
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }*/
+     }
+     
+     public void addMenuItem(int newID, String newName, double newPrice, byte newType) throws DatabaseException
+     {
+         MenuItem newMenuItem = new MenuItem(newID, newName,newPrice, newType);
+         menuList.add(newMenuItem);
+         Collections.sort(menuList, new MenuItemComparator());
+         /*try
+         {
+             updateMenuFile();
+        }
+        catch(DatabaseException dbe)
+        {
+            throw dbe;
+        }*/  
+     }
+     //---------------------------------------------------------------
+     // Order
+     //---------------------------------------------------------------
+     public int addOrder(int staffID, String staffName)
+     {
+         int newOrderID = ++todaysOrderCounts;
+         Order newOrder = new Order(staffID, staffName);
+         newOrder.setOrderID( newOrderID);
+         orderList.add(newOrder);
+         return newOrderID;
+     }
+     
+     public void addOrderItem(int orderID, MenuItem rItem, byte quantity)
+     {
+         Order rOrder = findOrderByID(orderID);
+         rOrder.addItem(rItem, quantity);
+     }
+     
+     public boolean deleteOrderItem(int orderID, int index)
+     {
+          Order rOrder = findOrderByID(orderID);
+          if(rOrder == null)
+            return false;
+          return rOrder.deleteItem(index);
+     }
+     
+     
+     //Cancel order: order data is not deleted from the database(Just put cancel flag on)
+     public boolean cancelOrder(int orderID)
+     {
+         Order rOrder = findOrderByID(orderID);
+        if(rOrder == null)
+            return false;
+         rOrder.setState(Order.ORDER_CANCELED);
+         return true;
+     }
+     //Delete order: order data is deleted from the database
+     public boolean deleteOrder(int orderID)
+     {
+         Order rOrder = findOrderByID(orderID);
+        if(rOrder == null)
+            return false;
+         orderList.remove(rOrder);
+         todaysOrderCounts--;
+         return true;
+     }
+     
+     public boolean closeOrder(int orderID)
+     {
+         Order rOrder = findOrderByID(orderID);
+        if(rOrder == null)
+            return false;
+         rOrder.setState(Order.ORDER_CLOSED);
+         return true;
+     }
+     
+     public void closeAllOrder()
+     {
+        Iterator<Order> it = orderList.iterator();
+        Order           re = null;
+        
+        while (it.hasNext()) {
+            re = it.next();  
+            if( re.getState() == 0)//neither closed and canceled
+            {
+                re.setState(Order.ORDER_CLOSED);
+            }
+        }
+     }
+     
+     public int getOrderState(int orderID)
+     {
+         Order  re = findOrderByID(orderID);
+         if(re == null)
+             return -1;
+         return re.getState();
+     }
+     
+     public double getOrderTotalCharge(int orderID)
+     {
+         Order  re = findOrderByID(orderID);
+         if(re == null)
+             return -1;
+         return re.getTotal();
+     }
+     
+     public boolean checkIfAllOrderClosed()
+     {
+        Iterator<Order> it = orderList.iterator();
+        Order           re = null;
+        
+        while (it.hasNext()) {
+            re = it.next();  
+            if( re.getState() == 0)//neither closed and canceled
+            {
+                return false;
+            }
+        }
+        return true;
+     }
+     
+     public boolean checkIfAllStaffCheckout()
+     {
+        Iterator<Staff> it = staffList.iterator();
+        Staff           re = null;
+        
+        while (it.hasNext()) {
+            re = it.next();  
+            if( re.getWorkState() == Staff.WORKSTATE_ACTIVE)
+            {
+                return false;
+            }
+        }
+        return true;
+     }
+     
+     public void forthClockOutAllStaff()
+     {
+         Iterator<Staff> it = staffList.iterator();
+         Staff           re = null;
+        
+         while (it.hasNext()) {
+            re = it.next();  
+            if( re.getWorkState() == Staff.WORKSTATE_ACTIVE)
+            {
+                re.clockOut();
+            }
+         }
+     }
+     /****************************************************************************
+    * File load
+    ***************************************************************************/
+    public void loadFiles() throws DatabaseException
+    {
+        loadStaffFile();
+        loadManagerFile();
+        Collections.sort(staffList, new StaffComparator());
+        loadMenuFile();
+        loadWageInfoFile();
+    }
+    
+    private void loadStaffFile() throws DatabaseException
+    {
+            try {
+            BufferedReader reader = new BufferedReader(new FileReader(STAFF_FILE));
+            String line = reader.readLine();
+
+            while (line != null) {
+                String[] record = line.split(",");
+
+                String id = record[0].trim();
+                String passward = record[1].trim();
+                String firstName = record[2].trim();
+                String lastName = record[3].trim();
+
+                // Add the data from file to the registerCourses array list
+                Employee rEmployee = new Employee(Integer.parseInt(id),lastName, firstName, passward);
+                staffList.add(rEmployee);
+                line = reader.readLine();
+            }
+            reader.close();
+        } catch (IOException ioe) {
+            String message = ioe.getMessage() + ioe.getStackTrace();
+            throw new DatabaseException(message);
+        }
+    }
+ 
+    private void loadManagerFile() throws DatabaseException
+    {
+        try {
+            BufferedReader reader = new BufferedReader(new FileReader(MANAGER_FILE));
+            String line = reader.readLine();
+
+            while (line != null) {
+                String[] record = line.split(",");
+
+                String id = record[0].trim();
+                String passward = record[1].trim();
+                String firstName = record[2].trim();
+                String lastName = record[3].trim();
+
+                // Add the data from file to the registerCourses array list
+                Manager rManager = new Manager(Integer.parseInt(id),lastName,firstName, passward);
+                staffList.add(rManager);
+                line = reader.readLine();
+            }
+            reader.close();
+        } catch (IOException ioe) {
+            String message = ioe.getMessage() + ioe.getStackTrace();
+            throw new DatabaseException(message);
+        }
+    }
+    
+    private void loadMenuFile() throws DatabaseException
+    {
+        try {
+            BufferedReader reader = new BufferedReader(new FileReader(MENU_FILE));
+            String line = reader.readLine();
+
+            while (line != null) {
+                String[] record = line.split(",");
+
+                String id = record[0].trim();
+                String name = record[1].trim();
+                String price = record[2].trim();
+                String type = record[3].trim();
+
+                // Add the data from file to the registerCourses array list
+                MenuItem rMenuItem = new MenuItem(Integer.parseInt(id), name, Double.parseDouble(price), Byte.parseByte(type));
+                menuList.add(rMenuItem);
+                line = reader.readLine();
+            }
+            reader.close();
+        } catch (IOException ioe) {
+            String message = ioe.getMessage() + ioe.getStackTrace();
+            throw new DatabaseException(message);
+        }
+    }
+    
+    private void loadWageInfoFile() throws DatabaseException
+    {
+        try {
+            BufferedReader reader = new BufferedReader(new FileReader(WAGE_INFO_FILE));
+            String line = reader.readLine();
+
+            while (line != null) {
+                String[] record = line.split(",");
+
+                String id = record[0].trim();
+                String rate = record[1].trim();
+                
+                double dRate = Double.parseDouble(rate);
+                int iId = Integer.parseInt(id);
+                
+                Staff rStaff = findStaffByID(iId);
+                if(rStaff == null)
+                {
+                    throw new DatabaseException("Load wage file error\n Staff ID:" + iId + " is not found.");
+                }
+                rStaff.setWageRate(dRate);
+
+                line = reader.readLine();
+            }
+            reader.close();
+        } catch (IOException ioe) {
+            String message = ioe.getMessage() + ioe.getStackTrace();
+            throw new DatabaseException(message);
+        }
+        catch(Exception e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            throw new DatabaseException(message);
+        }
+    }
+    
+    /****************************************************************************
+    * File Edit
+    ***************************************************************************/
+    public void updateStaffFile(boolean isManager) throws DatabaseException
+    {
+        Writer          writer;
+        String          id;
+        String          line;
+        String          fileName;
+        String          tempFileName = "dataFiles/temp.txt";
+            
+        if(isManager)
+            fileName =MANAGER_FILE;
+        else
+            fileName = STAFF_FILE;
+        
+        Collections.sort(staffList, new StaffComparator());
+        File tempFile = new File(tempFileName);
+     
+        try{
+            writer = new BufferedWriter(new FileWriter(tempFile));
+            Iterator it = staffList.iterator();
+        
+            while (it.hasNext())
+            {
+                Staff re = (Staff)it.next();
+            
+                //-------- skip writing data ----------
+                if(isManager)
+                {
+                    //skip employee data
+                    if(re instanceof Employee)
+                    //if(re.getClass().getName().equalsIgnoreCase("Employee"))
+                    continue;
+                }
+                else
+                {
+                    //skip managere data
+                    //if(re.getClass().getName().equalsIgnoreCase("Manager"))
+                    if(re instanceof Manager)
+                    continue;
+                }
+            
+                writer.write(re.getID() + "," + re.getPassword() + "," + re.getFirstName() + "," + re.getLastName()+ "\r\n");
+            }
+            writer.flush();
+            writer.close();
+        }
+        catch(IOException e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            throw new DatabaseException(message);
+        }
+        
+        //delete current file
+        File deleteFile = new File(fileName);
+        deleteFile.delete();
+        
+        // renames temporaly file to new file
+        File newFile = new File(fileName);  
+        tempFile.renameTo(newFile);
+        
+        updateWageFile();
+    }
+    
+    public void updateWageFile() throws DatabaseException
+    {
+        Writer          writer;
+        String          id;
+        String          line;
+        String          fileName;
+        String          tempFileName = "dataFiles/temp.txt";
+            
+        File tempFile = new File(tempFileName);
+     
+        try{
+            writer = new BufferedWriter(new FileWriter(tempFile));
+            Iterator it = staffList.iterator();
+        
+            while (it.hasNext())
+            {
+                Staff re = (Staff)it.next();
+                writer.write(re.getID() + "," + re.getWageRate() + "\r\n");
+            }
+            writer.flush();
+            writer.close();
+        }
+        catch(IOException e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            throw new DatabaseException(message);
+        }
+        
+        //delete current file
+        File deleteFile = new File(WAGE_INFO_FILE);
+        deleteFile.delete();
+        
+        // renames temporaly file to new file
+        File newFile = new File(WAGE_INFO_FILE);  
+        tempFile.renameTo(newFile);
+    }
+    
+    public void updateMenuFile() throws DatabaseException
+    {
+        Writer          writer;
+        String          id;
+        String          line;
+        String          tempFileName = "dataFiles/temp.txt";
+        
+        //Collections.sort(menuList, new MenuItemComparator());
+        File tempFile = new File(tempFileName);
+     
+        try{
+            writer = new BufferedWriter(new FileWriter(tempFile));
+            Iterator it = menuList.iterator();
+        
+            while (it.hasNext())
+            {
+                MenuItem re = (MenuItem)it.next();
+
+                writer.write(re.getID() + "," + re.getName() + "," + re.getPrice() + "," + re.getType()+ "\r\n");
+            }
+            writer.flush();
+            writer.close();
+        }
+        catch(IOException e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            throw new DatabaseException(message);
+        }
+        
+        //delete current file
+        File deleteFile = new File(MENU_FILE);
+        deleteFile.delete();
+        
+        // renames temporaly file to new file
+        File newFile = new File(MENU_FILE);  
+        tempFile.renameTo(newFile);
+    }
+    
+    public String generateOrderReport( String todaysDate) throws DatabaseException
+    {
+        Writer          writer = null;
+        String          line;
+        int             state;
+        double          totalAllOrder = 0;
+        String          generateFileName;
+        File            newFile;
+        int             orderCnt = 0;
+        int             cancelCnt = 0;
+        double          cancelTotal = 0;
+        
+        String[] record = todaysDate.split("/");
+        String today = record[0].trim() + "_" + record[1].trim() + "_" + record[2].trim();
+        generateFileName = REPORT_FILE + today + ".txt";
+        newFile = new File(generateFileName);
+        
+        try{
+            writer = new BufferedWriter(new FileWriter(newFile));
+
+            line = "*********** Order List (" + today + ") ***********\r\n";
+            writer.write(line);
+            
+            Iterator<Order> it = orderList.iterator();
+            while (it.hasNext())
+            {
+                Order re = it.next();
+                state = re.getState();
+                String stateString = "";
+                double totalOfEachOrder = re.getTotal();
+                switch(state)
+                {
+                    case Order.ORDER_CLOSED:
+                        stateString = "";
+                        totalAllOrder += totalOfEachOrder;
+                        orderCnt++;
+                    break;
+                    case Order.ORDER_CANCELED:
+                        stateString = "Canceled";
+                        cancelTotal += totalOfEachOrder;
+                        cancelCnt++;
+                    break;
+                    default:
+                        stateString = "";
+                        totalAllOrder += totalOfEachOrder;
+                        orderCnt++;
+                    break;
+                }
+                String output = String.format("Order ID:%4d  StaffName:%-30s  Total:$%-5.2f %s\r\n",
+                                            re.getOrderID(),re.getStaffName(),totalOfEachOrder, stateString);
+                writer.write(output);
+                
+                
+            }
+            writer.write("-------------------------------------------------------\r\n");
+            
+            writer.write("Total sales:$" + totalAllOrder + "(" + orderCnt + ")" +
+                    "  Canceled:$" + cancelTotal + "(" + cancelCnt + ")\r\n");
+            writer.flush();
+            writer.close();
+        }
+        catch(IOException e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            newFile.delete();
+            throw new DatabaseException(message);
+        }
+        return generateFileName;
+        //System.out.println("File <" + generateFileName + "> has been generated.");
+    }
+    
+    public String generatePaymentReport( String todaysDate) throws DatabaseException
+    {
+        Writer          writer = null;
+        String          line;
+        double          totalPayment = 0;
+        String          generateFileName;
+        File            newFile;
+        int             staffNum = 0;
+        
+        String[] record = todaysDate.split("/");
+        String today = record[0].trim() + "_" + record[1].trim() + "_" + record[2].trim();
+        generateFileName = PAYMENT_FILE + today + ".txt";
+        newFile = new File(generateFileName);
+        
+        try{
+            writer = new BufferedWriter(new FileWriter(newFile));
+
+            line = "*********** Payment List (" + today + ") ***********\r\n";
+            writer.write(line);
+            
+            Iterator<Staff> it = staffList.iterator();
+            while (it.hasNext())
+            {
+                Staff re = it.next();
+ 
+                if(re.getWorkState() == Staff.WORKSTATE_FINISH)
+                {
+                    double pay = re.culculateWages();
+                    String output = String.format("Order ID:%4d  StaffName:%-30s  Work time:%-5.2f Pay:%-5.2f\r\n",
+                                                re.getID(),re.getFullName(),re.culculateWorkTime(), pay);
+                    writer.write(output);
+                    staffNum++;
+                    totalPayment += pay;
+                }
+            }
+            writer.write("-------------------------------------------------------\r\n");
+            
+            writer.write("Total payment:$" + totalPayment + "(" + staffNum + ")\r\n");
+            writer.flush();
+            writer.close();
+        }
+        catch(IOException e)
+        {
+            String message = e.getMessage() + e.getStackTrace();
+            newFile.delete();
+            throw new DatabaseException(message);
+        }
+        return generateFileName;
+    }
+    
+    /****************************************************************************
+    * Comparator
+    ***************************************************************************/
+    private class StaffComparator implements Comparator<Staff> {
+
+        @Override
+        public int compare(Staff s1, Staff s2) {
+            return s1.getID() < s2.getID() ? -1 : 1;
+        }
+    }
+    
+    private class MenuItemComparator implements Comparator<MenuItem> {
+
+        @Override
+        public int compare(MenuItem m1, MenuItem m2) {
+            return m1.getID() < m2.getID() ? -1 : 1;
+        }
+    }
+}
diff --git a/Restaurant-management-system/DatabaseException.java b/Restaurant-management-system/DatabaseException.java
new file mode 100644
index 00000000..13dd1e1d
--- /dev/null
+++ b/Restaurant-management-system/DatabaseException.java
@@ -0,0 +1,12 @@
+public class DatabaseException extends Exception {
+    public String errMsg;
+    public DatabaseException(String msg)
+    { 
+        errMsg = msg;
+    }
+    
+    public String getErrMessage()
+    {
+        return errMsg;
+    }
+}
diff --git a/Restaurant-management-system/Employee.java b/Restaurant-management-system/Employee.java
new file mode 100644
index 00000000..723c7f14
--- /dev/null
+++ b/Restaurant-management-system/Employee.java
@@ -0,0 +1,31 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+public class Employee extends Staff
+{
+    private static final double MINIMUM_RATE = 13.5; 
+    
+    public Employee()
+    {
+        super();
+    }   
+    public Employee( int newID, String newLastName, String newFirstName, String newPassward)
+    {
+        super(newID, newLastName, newFirstName, newPassward);
+        wageRate = MINIMUM_RATE;
+    }
+    
+    public void setWageRate(double newRate)
+    {
+        if( newRate < MINIMUM_RATE)
+            wageRate = MINIMUM_RATE;
+        else
+            wageRate = newRate;
+    }
+    
+    public double culculateWages()
+    {
+        return wageRate * culculateWorkTime();
+    }
+}
diff --git a/Restaurant-management-system/META-INF/MANIFEST.MF b/Restaurant-management-system/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5caa54a2
--- /dev/null
+++ b/Restaurant-management-system/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Created-By: 1.7.0_45 (Oracle Corporation)
+Main-Class: RMS_GUI
+
diff --git a/Restaurant-management-system/Manager.java b/Restaurant-management-system/Manager.java
new file mode 100644
index 00000000..a4dc6cd4
--- /dev/null
+++ b/Restaurant-management-system/Manager.java
@@ -0,0 +1,34 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+public class Manager extends Staff
+{
+    private static final double MINIMUM_RATE = 100.0;
+    
+    public Manager()
+    {
+        super();
+    }
+    public Manager( int newID, String newLastName, String newFirstName, String newPassward)
+    {
+        super(newID, newLastName, newFirstName, newPassward);
+        wageRate = MINIMUM_RATE;
+    }
+    
+    public void setWageRate(double newRate)
+    {
+        if(wageRate < MINIMUM_RATE)
+            newRate = MINIMUM_RATE;
+        wageRate = newRate;
+    }
+    
+
+    public double culculateWages()
+    {
+        if(getWorkState() != WORKSTATE_FINISH)
+            return 0;
+        
+        return this.wageRate;
+    }
+}
diff --git a/Restaurant-management-system/MenuItem.java b/Restaurant-management-system/MenuItem.java
new file mode 100644
index 00000000..b59c61df
--- /dev/null
+++ b/Restaurant-management-system/MenuItem.java
@@ -0,0 +1,98 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+
+public class MenuItem
+{
+    //definition of menu item type
+    public final static int MAIN = 1;
+    public final static int DRINK = 2;
+    public final static int ALCOHOL = 3;
+    public final static int DESSERT = 4;
+    
+    private int     ID;
+    private String  name;
+    private byte    type;
+    private double  price;
+    
+    private byte     state;
+    private double  promotion_price;
+    public final static byte PROMOTION_ITEM = 1;
+    public final static byte SEASONAL_ITEM = 2;
+    
+    public MenuItem(int newID, String newName, double newPrice, byte newType)
+    {
+        this.ID = newID;
+        this.name = newName;
+        this.price = newPrice;
+        this.type = newType;
+        this.state = 0;
+        this.promotion_price = 0;
+    }
+
+    //setter
+    public void setName( String newName)
+    {
+        this.name = newName;
+    }
+    
+    public void setPrice( double newPrice)
+    {
+        this.price = newPrice;
+    }
+    
+    public void setType( byte newType)
+    {
+        this.type = newType;
+    }
+    
+    public void setState( byte newState, double tempPrice)
+    {
+        this.state = newState;
+        this.promotion_price = tempPrice;
+    }
+    
+    public void resetState()
+    {
+        this.state = 0;
+        this.promotion_price = 0;
+    }
+    
+    
+    //getter
+    int getID()
+    {
+        return this.ID;
+    }
+    
+    String getName()
+    {
+        return this.name;
+    }
+    
+    double getPrice()
+    {
+        if(this.state != 0 && this.promotion_price != 0)
+        {
+            return this.promotion_price;
+        }
+        else
+            return this.price;
+    }
+    
+    double gerRegularPrice()
+    {
+        return this.price;
+    }
+    
+    byte getType()
+    {
+        return this.type;
+    }
+    
+    byte getState()
+    {
+        return this.state;
+    }
+}
diff --git a/Restaurant-management-system/Order.java b/Restaurant-management-system/Order.java
new file mode 100644
index 00000000..abe19086
--- /dev/null
+++ b/Restaurant-management-system/Order.java
@@ -0,0 +1,125 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+
+import java.util.*;
+
+public class Order
+{
+    final public static int ORDER_CLOSED = 1;
+    final public static int ORDER_CANCELED = 2;
+    
+    private int orderID;
+    private int staffID;
+    private String staffName;
+    private String date;
+    private int state;  //0:arrive 1:closed 2:canceled
+    private double total;
+    private ArrayList<OrderDetail> orderDetailList = new ArrayList<OrderDetail>();
+
+    /**
+     * Constructor for objects of class Order
+     */
+    public Order(int newStaffID, String newStaffName)
+    {
+        this.orderID =-1;
+        this.state = 0;
+        this.staffID = newStaffID;
+        this.staffName = newStaffName;
+        this.total = 0;
+    }
+    /**
+     *Getter
+     */
+    int getOrderID()
+    {
+        return this.orderID;
+    }
+    int getStaffID()
+    {
+        return this.staffID;
+    }
+    String getStaffName()
+    {
+        return this.staffName;
+    }
+    int getState()
+    {
+        return this.state;
+    }
+    double getTotal()
+    {
+        return this.total;
+    }
+    ArrayList<OrderDetail> getOrderDetail()
+    {
+        return this.orderDetailList;
+    }
+    
+     /**
+     * Setter
+     */
+    public void setOrderID(int newID)
+    {
+        this.orderID = newID;
+    }
+    
+    public void setState(int state)
+    {
+        this.state = state;
+    }
+    
+    public void addItem(MenuItem rNewMenuItem, byte quantity)
+    {
+        Iterator<OrderDetail> it = orderDetailList.iterator();
+        OrderDetail re;
+        
+        boolean found = false;
+        
+        while( it.hasNext() && !found)
+        {
+            re = it.next();
+            if( rNewMenuItem.getID() == re.getItemID())
+            {
+                found = true;
+                re.addQuantity(quantity);
+            }
+        }
+        
+        if(!found)
+        {
+            OrderDetail detail = new OrderDetail(rNewMenuItem, quantity);
+            orderDetailList.add(detail);
+            
+        }
+        
+        calculateTotal();
+    }
+    
+    public boolean deleteItem(int index)
+    {
+        try
+        {
+            orderDetailList.remove(index);
+            calculateTotal();
+            return true;
+        }
+        catch(Exception e)
+        {
+            //System.out.println(e.toString()  + ":" + e.getMessage());
+             return false;
+        }
+    }
+    
+    public void  calculateTotal()
+    {
+        total = 0;
+        OrderDetail re;
+         Iterator<OrderDetail> it = orderDetailList.iterator();
+         while (it.hasNext()) {
+            re = it.next();
+            total += re.getTotalPrice();
+        }
+    }
+}
diff --git a/Restaurant-management-system/OrderDetail.java b/Restaurant-management-system/OrderDetail.java
new file mode 100644
index 00000000..dbf19e5b
--- /dev/null
+++ b/Restaurant-management-system/OrderDetail.java
@@ -0,0 +1,56 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+
+public class OrderDetail
+{
+    private int itemID;
+    private String itemName;
+    private double price;
+    private byte quantity;
+    private double totalPrice;
+
+    /**
+     * Constructor for objects of class OrderDetail
+     */
+    public OrderDetail(MenuItem newMenuItem, byte newQuantity)
+    {
+        this.itemID     = newMenuItem.getID();
+        this.itemName   = newMenuItem.getName();
+        this.price      = newMenuItem.getPrice();
+        this.quantity   = newQuantity;
+        this.totalPrice = this.price * this.quantity;
+    }
+    
+    /**************************************************
+    * Getter
+    *************************************************/
+    public int getItemID()
+    {
+        return this.itemID;
+    }
+    public String getItemName()
+    {
+        return this.itemName;
+    }
+    public double getPrice()
+    {
+        return this.price;
+    }
+    public byte getQuantity()
+    {
+        return this.quantity;
+    }
+    public double getTotalPrice()
+    {
+        return this.totalPrice;
+    }
+    
+    public void addQuantity(byte add)
+    {
+        quantity += add;
+        totalPrice = price * quantity;
+    }
+        
+}
diff --git a/Restaurant-management-system/RMS.java b/Restaurant-management-system/RMS.java
new file mode 100644
index 00000000..8e02a94f
--- /dev/null
+++ b/Restaurant-management-system/RMS.java
@@ -0,0 +1,12 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 13/7/
+* 2013
+ */
+public class RMS
+{
+	public static void main(String[] args) {
+		Controller cController = new Controller();
+		cController.mainLoop();
+	}
+}
diff --git a/Restaurant-management-system/RMS_GUI.jar b/Restaurant-management-system/RMS_GUI.jar
new file mode 100644
index 00000000..76396a1f
Binary files /dev/null and b/Restaurant-management-system/RMS_GUI.jar differ
diff --git a/Restaurant-management-system/RMS_GUI.java b/Restaurant-management-system/RMS_GUI.java
new file mode 100644
index 00000000..590ec420
--- /dev/null
+++ b/Restaurant-management-system/RMS_GUI.java
@@ -0,0 +1,12 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 02/08/2013
+ */
+public class RMS_GUI
+{
+	public static void main(String[] args) {
+		Controller_GUI cController = new Controller_GUI();
+		//cController.mainLoop();
+	}
+}
+
diff --git a/Restaurant-management-system/Staff.java b/Restaurant-management-system/Staff.java
new file mode 100644
index 00000000..343141c5
--- /dev/null
+++ b/Restaurant-management-system/Staff.java
@@ -0,0 +1,203 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/2013
+ */
+import java.util.*;
+import java.text.*;
+
+public abstract class Staff
+{
+    private int ID;
+    private String lastName;
+    private String firstName;
+    private String password;
+    private byte    state;
+    
+    private Order[] orderList;
+
+    //protected byte  workState;  //0:not active  1:active (on wark)  2:finish work
+    protected Date  startWorkTime;
+    protected Date  finishWorkTime;
+    protected double    wageRate;
+
+    //------------------------------------------------------------
+    // constructor
+    //------------------------------------------------------------
+    public Staff()
+    {
+        ID = 0;
+        lastName="";
+        firstName="";
+        startWorkTime = null;
+        finishWorkTime = null;
+        state = 0;
+    }
+    
+    public Staff( int newID, String newLastName, String newFirstName, String newPassword)
+    {
+        setID( newID);
+        setLastName(newLastName);
+        setFirstName(newFirstName);
+        setPassword( newPassword);
+        startWorkTime = null;
+        finishWorkTime = null;
+        state = 0;
+        //workState = 0;
+    }
+ 
+    //------------------------------------------------------------
+    // setter
+    //------------------------------------------------------------
+    protected void setID( int newID)
+    {
+        this.ID = newID;
+    }
+    protected void setLastName(String newLastName)
+    {
+        this.lastName = newLastName;
+    }
+    protected void setFirstName(String newFirstName)
+    {
+        this.firstName = newFirstName;
+    }
+    protected void setPassword(String newPassword)
+    {
+        this.password = newPassword;
+    }
+    protected void setWorkState(byte newState)
+    {
+        this.state = newState;
+    }
+
+    /*protected void setState(byte newState)
+    {
+        this.workState = newState;
+    }*/
+    //------------------------------------------------------------
+    // getter
+    //------------------------------------------------------------
+    public int getID()
+    {
+        return this.ID;
+    }
+    public String getLastName()
+    {
+        return this.lastName;
+    }
+    public String getFirstName()
+    {
+        return this.firstName;
+    }
+    public String getFullName()
+    {
+        String fullName = this.firstName + " " + this.lastName;
+        return fullName;
+    }
+    public String getPassword()
+    {
+        return this.password;
+    }
+    public double getWageRate()
+    {
+        return this.wageRate;
+    }
+    
+    public static final byte WORKSTATE_NON_ACTIVE = 0;
+    public static final byte WORKSTATE_ACTIVE = 1;
+    public static final byte WORKSTATE_FINISH = 2;
+    public byte getWorkState()
+    {
+        return this.state;
+    }
+    
+    public String getStartTime()
+    {
+        if(startWorkTime == null)
+            return "getStartTime Error";
+        DateFormat df = new SimpleDateFormat("HH:mm");
+        return df.format(startWorkTime);
+    }
+    
+    public String getFinishTime()
+    {
+        if(finishWorkTime == null)
+            return "getFinishTime Error";
+        DateFormat df = new SimpleDateFormat("HH:mm");
+        return df.format(finishWorkTime);
+    }
+    //------------------------------------------------------------
+    // other methods
+    //------------------------------------------------------------
+    public void clockIn()
+    {
+        startWorkTime = new Date(System.currentTimeMillis());
+        state = WORKSTATE_ACTIVE;
+    }
+    
+    public boolean clockOut()
+    {
+        if(state != WORKSTATE_ACTIVE)
+            return false;
+        finishWorkTime = new Date(System.currentTimeMillis());
+        state = WORKSTATE_FINISH;
+        return true;
+    }
+    
+    public boolean changeStartTime(Date newStartTime)
+    {
+        if(state == WORKSTATE_FINISH && newStartTime.after(finishWorkTime))
+        {
+            return false;
+        }
+        
+        if( newStartTime.after(new Date(System.currentTimeMillis())))
+        {
+            return false;
+        }
+
+        startWorkTime = newStartTime;
+        return true;
+    }
+    
+    public boolean changeFinishTime(Date newFinishTime)
+    {
+        if(newFinishTime.before(startWorkTime))
+        {
+            return false;
+        }
+        
+        if( newFinishTime.after(new Date(System.currentTimeMillis())))
+        {
+            return false;
+        }
+        
+        finishWorkTime = newFinishTime;
+        return true;
+    }
+    
+    public double culculateWorkTime()
+    {
+        if(getWorkState() != WORKSTATE_FINISH)
+            return 0;
+            
+        long diffTimeMin = (finishWorkTime.getTime() - startWorkTime.getTime()) / 60000;//convert Milli sec to Minutes
+        long  baseTime = diffTimeMin / 60;
+        long  fraction = diffTimeMin % 60;
+        double addTime;
+        
+        if( fraction < 15)
+            addTime = 0;
+        else if(fraction < 30)
+            addTime = 0.25;
+        else if(fraction < 45)
+            addTime = 0.5;
+        else
+            addTime = 0.75;  
+        
+        double workTime = (double)baseTime + addTime;
+        return workTime;
+    }
+    
+    protected abstract void setWageRate(double newRate);
+    protected abstract double culculateWages();
+}
diff --git a/Restaurant-management-system/UserInterface.java b/Restaurant-management-system/UserInterface.java
new file mode 100644
index 00000000..4be3dfdd
--- /dev/null
+++ b/Restaurant-management-system/UserInterface.java
@@ -0,0 +1,531 @@
+/**
+ * Kazunori Hayashi
+* Version 1.0 29/7/
+* 2013
+ */
+
+import java.util.*;
+import java.io.*;
+
+public class UserInterface {
+    private Scanner inputScanner;
+    private String loginUserName;
+    private Database crDatabase; //reference of database
+    private String  todaysDate;
+    
+    /****************************************************************************
+     * Constructor
+     ***************************************************************************/   
+    public UserInterface(Database rDatabase) {
+        this.inputScanner = new Scanner(System.in);
+        this.loginUserName = "";
+        this.crDatabase = rDatabase;
+    }
+  
+    /****************************************************************************
+     * Setter
+     ***************************************************************************/
+     private void setLoginUserName(String newName)
+     {
+         this.loginUserName = newName;  
+     }
+     
+     public void setTodaysDate(String today)
+     {
+         this.todaysDate = today;
+     }
+    
+     /****************************************************************************
+     * Private methods
+     ***************************************************************************/  
+     private void displayTitle(String title)
+     {
+         String output = String.format("// %-65s//", title);
+         displayMessage("//////////////////////////////////////////////////////////////////////");
+         displayMessage(output);
+         displayMessage("//////////////////////////////////////////////////////////////////////");
+     }
+     
+
+    /****************************************************************************
+     * Public methods
+     ***************************************************************************/   
+     public void clearScreen() {
+        System.out.println('\u000c');
+    }   
+    
+    //Normally used by controller
+    public void displayMessage(String message)
+    {
+         System.out.println(message);
+    }
+    
+    public void displayErrorMessage(String message)
+    {
+         System.out.println("** Error:" + message + "**");
+    }   
+    
+    public String userInput()
+    {
+        String result = inputScanner.next();
+        inputScanner.nextLine();//clear buffer
+        return result;
+    }
+    
+    public void setUserName( String userName)
+    {
+        //setLoginUserName(firstName + " " + lastName);
+        setLoginUserName(userName);
+    }
+    
+    public void finish()
+    {
+        clearScreen();
+    }
+    
+    /****************************************************************************
+     * Display methods
+     ***************************************************************************/
+    ////////////////////////////////////////////////////////////////////////////
+    // Main menu
+    ////////////////////////////////////////////////////////////////////////////
+    public void showMainMenu(int userType)
+    {
+        clearScreen();
+        displayTitle("Main menu");
+        if(loginUserName != "")
+            displayMessage("Login user:" + loginUserName);
+        displayMessage("----------[Menu]----------");
+        displayMessage("[1] Login");
+        if( userType != Controller.USER_ANONYMOUS)
+        {
+            displayMessage("[2] Log out");
+            displayMessage("[3] Show menu list");
+            displayMessage("[4] Order management");
+            
+        }
+        if( userType == Controller.USER_MANAGER)
+        {
+            displayMessage("-------[Management]------");
+            displayMessage("[5] Show employee list");
+            displayMessage("[6] Staff management");
+            displayMessage("[7] Edit menu items");
+            displayMessage("[8] Generate reports");
+        }
+        displayMessage("--------------------------");
+        if( userType != Controller.USER_ANONYMOUS)
+            displayMessage("[F] Clocked out");
+        displayMessage("[Q] Quit");
+    }
+    ////////////////////////////////////////////////////////////////////////////
+    // Login
+    ////////////////////////////////////////////////////////////////////////////
+     public void loginView()
+    {
+        clearScreen();
+        displayTitle("Login");
+    }
+    ////////////////////////////////////////////////////////////////////////////
+    // Order
+    ////////////////////////////////////////////////////////////////////////////
+    //---------------------------------------------------------------
+    // Order management main menu
+    //---------------------------------------------------------------
+    public void showOrderMenu()
+    {
+        clearScreen();
+        displayTitle("Order");
+        displayMessage("[1] Create order");
+        displayMessage("[2] Update order");
+        displayMessage("[3] Close order");
+        displayMessage("[4] Cancel order");
+        displayMessage("[5] Show order list");
+        displayMessage("[Q] Back to main menu");
+        displayMessage("-----------------------------------------");
+    }
+    
+    public void addMenuItemView()
+    {
+        clearScreen();
+        displayTitle("Add menu item");
+    }
+    
+    public void editMenuItemView(MenuItem rMenuItem)
+    {
+        clearScreen();
+        showMenuItemData(rMenuItem);
+        displayMessage("-----------------------------------------");
+        displayMessage("[1]:Name");
+        displayMessage("[2]:Price");
+        displayMessage("[3]:Type");
+        displayMessage("[4]:Set promotion price");
+        displayMessage("[5]:Reset item state");
+        displayMessage("[Q]:Quit");
+        displayMessage("-----------------------------------------");
+    }
+    //---------------------------------------------------------------
+    // Edit order detail menu (Create order or Update order)
+    //---------------------------------------------------------------
+    public void editOrderView()
+    {
+        clearScreen();
+        displayTitle("Edit Order");
+        displayMessage("[1] Add new item");
+        displayMessage("[2] Delete item");
+        displayMessage("[3] Show order detail");
+        displayMessage("[Q] Quit");
+        displayMessage("-----------------------------------------");
+    }
+    
+    public void addOrderItemView()
+    {
+        clearScreen();
+        displayTitle("Add Order Item");
+        sub_showMenuList();
+    }
+    
+    public void deleteOrderItemView()
+    {
+        clearScreen();
+        displayTitle("Delete Order Item");
+    }
+    
+    public void closeOrderView()
+    {
+        clearScreen();
+        displayTitle("Close order");
+        showOrderList();
+    }
+    
+    public void cancelOrderView()
+    {
+        clearScreen();
+        displayTitle("Cancel order");
+        showOrderList();
+    }
+    
+    public void generateReportView()
+    {
+        clearScreen();
+        displayTitle("Generate reports");
+        displayMessage("[1] Sales repors");
+        displayMessage("[2] Payment list");
+        displayMessage("[Q] Quit");
+        displayMessage("-----------------------------------------");
+    }
+    
+
+
+    ////////////////////////////////////////////////////////////////////////////
+    // Staff
+    ////////////////////////////////////////////////////////////////////////////
+    //---------------------------------------------------------------
+    // Staff management main menu
+    //---------------------------------------------------------------
+    public void addNewStaffView()
+    {
+        clearScreen();
+        displayTitle("Add new staff");
+    }
+    
+    public void staffManagementView()
+    {
+        clearScreen();
+        displayTitle("Edit Staff");
+        displayMessage("[1] Add new staff");
+        displayMessage("[2] Update staff info");
+        displayMessage("[3] Delete staff info");
+        displayMessage("[Q] Back to main menu");
+        displayMessage("-----------------------------------------");
+    }
+    
+    public void updateStaffView( Staff rStaff)
+    {
+        clearScreen();
+        showStaffData(rStaff);
+        displayMessage("\nChoose Edit number\n");
+        displayMessage("[1]:Last name");
+        displayMessage("[2]:First name");
+        displayMessage("[3]:Forth clock out");
+        displayMessage("[4]:Change start time");
+        displayMessage("[5]:Change finish time");
+        displayMessage("[Q]:Quit");
+    }
+    
+    ////////////////////////////////////////////////////////////////////////////
+    // Menu
+    ////////////////////////////////////////////////////////////////////////////
+    public void choseEditMenuView()
+    {
+        clearScreen();
+        displayTitle("Edit Menu");
+        displayMessage("[1] Add new item");
+        displayMessage("[2] Update item");
+        displayMessage("[3] Delete item");
+        displayMessage("[Q] Quit");
+        displayMessage("-----------------------------------------");
+    }
+      /****************************************************************************
+     * Show data lists in the database
+     ***************************************************************************/
+    //---------------------------------------------------------------
+    // Order information
+    //---------------------------------------------------------------
+    public void showOrderList()
+    {
+        Iterator<Order> it = crDatabase.getOrderList().iterator();
+        String          state;
+        String          output;
+        double          totalAllOrder = 0;
+        int             orderCnt = 0;
+        int             cancelCnt = 0;
+        double          cancelTotal = 0;
+        
+        clearScreen();
+        displayTitle("Order List (" + todaysDate + ")");
+        while (it.hasNext()) {
+            Order re = it.next();
+            double totalOfEachOrder = re.getTotal();
+            switch(re.getState())
+            {
+                case Order.ORDER_CLOSED:
+                    state = "Closed";
+                    totalAllOrder += totalOfEachOrder;
+                    orderCnt++;
+                break;
+                case Order.ORDER_CANCELED:
+                    state = "Canceled";
+                    cancelTotal += totalOfEachOrder;
+                    cancelCnt++;
+                break;
+                default:
+                    state = "-";
+                    totalAllOrder += totalOfEachOrder;
+                    orderCnt++;
+                break;
+            }
+            
+            output = String.format("Order ID:%4d  StaffName:%-20s  Total:$%5.2f State:%-8s",
+                                            re.getOrderID(),re.getStaffName(),totalOfEachOrder,state);
+            displayMessage(output);
+        }
+        displayMessage("-------------------------------------------------------");
+        displayMessage("Total sales:$" + totalAllOrder + "(" + orderCnt + ")" +
+                    "  Canceled:$" + cancelTotal + "(" + cancelCnt + ")\r\n");
+    }
+    
+    public void showOrderDetail( int orderID)
+    {
+        Order rOrder = crDatabase.findOrderByID(orderID);
+        double totalCharge = 0;
+        
+        displayTitle("Order Details");
+        displayMessage("OrderID:" + orderID);
+        displayMessage("Order Date:" + todaysDate);
+        displayMessage("Employee Name:" + rOrder.getStaffName());
+        displayMessage("");
+        
+        String output;
+        output = String.format("%-4s %-9s %-24s %-9s %s","No.", "Menu ID", "Menu Name", "Quantity", "Charge");
+        displayMessage(output);
+
+        Iterator<OrderDetail> it = rOrder.getOrderDetail().iterator();
+        OrderDetail    re;
+        int count = 1;
+        
+
+        while (it.hasNext()) {
+            re = it.next();
+            double totalPliceOfItem = re.getTotalPrice();
+            output = String.format("%-4d|%-9s|%-24s|%9d|%5.2f",
+                                    count, re.getItemID(), re.getItemName(), re.getQuantity(), totalPliceOfItem);
+            displayMessage(output);
+            totalCharge += totalPliceOfItem;
+            count++;
+        }
+        if(count == 0)
+            displayMessage("No item");
+        else
+        {
+            output = String.format("%-6.2f", totalCharge);
+            displayMessage("--------------------------------------------------------");
+            displayMessage("                                    Total charge:" + output);
+        }
+    }   
+     //---------------------------------------------------------------
+    // Staff information
+    //---------------------------------------------------------------   
+    public void showStaffData( Staff rStaff)
+    {
+        displayMessage("*************** Employee Data ***************");
+        displayMessage("Staff last name:" + rStaff.getLastName());
+        displayMessage("Staff first name:" + rStaff.getFirstName());
+        if(rStaff.getClass().getName().equalsIgnoreCase("Manager"))
+        {
+            displayMessage("** Manager **");
+            displayMessage("Wage rate:" + rStaff.getWageRate() + " per day");
+        }
+        else
+        {
+            displayMessage("** Part time staff **");
+            displayMessage("Wage rate:" + rStaff.getWageRate() + " per hour");
+        }
+    }
+    
+    public void showPaymentList()
+    {
+        double          totalPayment = 0;
+        int             staffNum = 0;
+        
+        clearScreen();
+        displayTitle("Payment List (" + todaysDate + ")");
+        
+        Iterator<Staff> it = crDatabase.getStaffList().iterator();
+        while (it.hasNext())
+        {
+            Staff re = it.next();
+
+            if(re.getWorkState() == Staff.WORKSTATE_FINISH)
+            {
+                double pay = re.culculateWages();
+                String output = String.format("Order ID:%4d  StaffName:%-20s  Work time:%5.2f Pay:%5.2f",
+                                            re.getID(),re.getFullName(),re.culculateWorkTime(), pay);
+                displayMessage(output);
+                staffNum++;
+                totalPayment += pay;
+            }
+            else if(re.getWorkState() == Staff.WORKSTATE_ACTIVE)
+            {
+                String output = String.format("Order ID:%4d  StaffName:%-20s  * On work *",
+                                            re.getID(),re.getFullName());
+                displayMessage(output);
+                staffNum++;
+            }
+        }
+        displayMessage("-------------------------------------------------------");
+         String output = String.format("Total payment:$%.2f (%d)", totalPayment, staffNum);
+        displayMessage(output);
+        //displayMessage("Total payment:$" + totalPayment + "(" + staffNum + ")");
+    }
+    
+    public void showStaffList()
+    {
+        clearScreen();
+        Iterator<Staff> it = crDatabase.getStaffList().iterator();
+        
+        displayTitle("Employee List");
+        while (it.hasNext()) {
+            Staff re = (Staff)it.next();
+            String fullName = re.getFirstName() + " " + re.getLastName();
+            String output = String.format("Staff ID:%4d  Name:%-20s",
+                                            re.getID(), fullName);
+            switch(re.getWorkState())
+            {
+                case Staff.WORKSTATE_ACTIVE:
+                    output += "[From:" + re.getStartTime() + "]";
+                break;
+                case Staff.WORKSTATE_FINISH:
+                    output += "[From:" + re.getStartTime() + " to " + re.getFinishTime() + "]";
+                break;
+                default:
+                    output += "[Not on work]";
+                break;
+            }
+            
+            if(re.getClass().getName().equalsIgnoreCase("Manager"))
+            {
+                output += " * Manager *";
+            }
+            displayMessage(output);
+            
+            /*displayMessage("Staff ID :" + re.getID()+ "  Name:"
+                                               + re.getFirstName() + " " + re.getLastName());*/
+        }
+    }
+    //---------------------------------------------------------------
+    // Menu information
+    //---------------------------------------------------------------
+    public void showMenuList()
+    {
+        clearScreen();
+        displayTitle("Menu List");
+        sub_showMenuList();
+    }
+    
+    private void sub_showMenuList()
+    {
+        Iterator<MenuItem> it = crDatabase.getMenuList().iterator();
+        
+        while (it.hasNext()) {
+            MenuItem re = (MenuItem)it.next();
+             byte menuType = re.getType();
+             String strMenuType;
+            switch( menuType)
+            {
+                case MenuItem.MAIN:
+                strMenuType = "Main";
+                break;
+                case MenuItem.DRINK:
+                strMenuType = "Drink";
+                break;
+                case MenuItem.ALCOHOL:
+                strMenuType = "Alcohol";
+                break;
+                case MenuItem.DESSERT:
+                strMenuType = "Dessert";
+                break;
+                default:
+                strMenuType = "Undefined";
+                break;
+            }
+            String output = String.format("Menu ID:%4d  Name:%-20s  Price:%5.2f Type:%s",
+                                            re.getID(),re.getName(),re.getPrice(),strMenuType);
+           if(re.getState() == MenuItem.PROMOTION_ITEM)
+           {
+               output += " ** Today's Special!! **";
+            }
+            displayMessage(output);
+        }
+    }
+    
+    //Display menu item detail
+    public void showMenuItemData( MenuItem rMenuItem)
+    {
+        displayTitle("Menu item Data");
+        //displayMessage("******** Menu item Data *********");
+        displayMessage("Name:" + rMenuItem.getName());
+        
+        if(rMenuItem.getState() == MenuItem.PROMOTION_ITEM)
+        {
+            displayMessage("Promotion Price:" + rMenuItem.getPrice());
+        }
+        else
+        {
+            displayMessage("Price:" + rMenuItem.getPrice());
+        }
+        
+        byte menuType = rMenuItem.getType();
+        switch( menuType)
+        {
+            case MenuItem.MAIN:
+            displayMessage("Type:Main");
+            break;
+            case MenuItem.DRINK:
+            displayMessage("Type:Drink");
+            break;
+            case MenuItem.ALCOHOL:
+            displayMessage("Type:Alcohol");
+            break;
+            case MenuItem.DESSERT:
+            displayMessage("Type:Dessert");
+            break;
+            default:
+            displayMessage("Type:Undefined");
+            break;
+        }
+        if(rMenuItem.getState() == MenuItem.PROMOTION_ITEM)
+            displayMessage("State: Today's special!!");
+        else
+            displayMessage("State: Regular item");
+    }
+}
diff --git a/Restaurant-management-system/UserInterface_GUI.java b/Restaurant-management-system/UserInterface_GUI.java
new file mode 100644
index 00000000..7c4a8c7b
--- /dev/null
+++ b/Restaurant-management-system/UserInterface_GUI.java
@@ -0,0 +1,2301 @@
+import java.awt.*;
+import java.awt.event.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import javax.swing.*;
+import javax.swing.border.*;
+import javax.swing.event.*;
+
+import java.util.*;
+
+public class UserInterface_GUI extends JFrame implements ActionListener
+{
+    private Container       con;
+    private Controller_GUI  rcController;
+    private String          currentUserName;
+    
+    // components for menu
+    private JMenuBar   menuBar;
+    private JMenu      mnFile;
+    private JMenuItem  mntm1, mntm2;
+    
+    
+    //-------- Master panel -------------- 
+    //Main content panel(CENTER)
+    private JPanel         mainPanel;
+    
+    //Head panel (North)
+    private JPanel         headPanel;
+    private JLabel         headTitle;
+    private JButton        headBtnLogin;
+    private JButton        headBtnLogout;
+    
+    //Main button panel(WEST)
+    private JPanel         mainBtnsPanel;
+    // Main buttons
+
+    private JButton        mainBtnShowMenu;
+    private JButton        mainBtnManageOrder;
+    // Main buttons for management
+    private JButton        mainBtnManageEmployee;
+    private JButton        mainBtnManageMenuItem;
+    private JButton        mainBtnShowTotalSales;
+    private JButton        mainBtnShowPayment;
+    
+    //Information panel(SOUTH)
+    private JPanel         infoPanel;
+    private JLabel         labelLoginUserName;
+    private JButton         btnClockOut;
+    private JTextArea      taMessage;
+    
+    //-------- Contents panel --------------
+    // components for home panel
+    private JPanel         homePanel;
+    private JLabel         homeImage;
+    
+    private LoginPanel          cLoginPanel;
+    private MenuListPanel       cMenuListPanel;
+    private OrderListPanel      cOrderListPanel;
+    private OrderDetailPanel    cOrderDetailPanel;
+    private EmployeeListPanel   cEmployeeListPanel;
+    private EditEmployeePanel   cEditEmployeePanel;
+    private MenuManagementPanel       cMenuManagementPanel;
+    private EditMenuItemPanel       cEditMenuItemPanel;
+    private TotalSalesPanel       cTotalSalesPanel;
+    private PaymentPanel        cPaymentPanel;
+
+
+    private final static int WINDOW_X = 100;
+    private final static int WINDOW_Y = 100;
+    private final static int WINDOW_WIDTH = 900;
+    private final static int WINDOW_HEIGHT = 600;
+    /**
+     * Constructor for objects of class UserInterface_GUI
+     */
+    public UserInterface_GUI(Controller_GUI rController)
+    {
+        this.rcController = rController;
+        this.con = getContentPane();
+        
+        // Set frame
+        setTitle("Valentino Restaurant Management System");
+        setBounds(WINDOW_X, WINDOW_Y, WINDOW_WIDTH, WINDOW_HEIGHT);
+        setResizable(false);
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        
+        createMasterPanelConpornents();
+        currentUserName = "";
+        setLoginUserName(currentUserName);
+        
+        //------- Create main content panels
+        //Home panel
+        homePanel = new JPanel();
+        homeImage = new JLabel();
+        
+        //Random generator = new Random();
+        int i = new Random().nextInt(4)+1;
+        homeImage.setHorizontalAlignment(SwingConstants.CENTER);
+        homeImage.setVerticalAlignment(SwingConstants.CENTER);
+        homeImage.setIcon(new ImageIcon("images/home" + i + ".jpg"));
+        homePanel.add(homeImage);
+        homePanel.setBackground(Color.WHITE);
+        mainPanel.add("Home", homePanel);
+
+        cLoginPanel = new LoginPanel();
+        mainPanel.add("Login", cLoginPanel);
+        cMenuListPanel = new MenuListPanel();
+        mainPanel.add("MenuList", cMenuListPanel);
+        cOrderListPanel = new OrderListPanel();
+        mainPanel.add("OrderList", cOrderListPanel);
+        cOrderDetailPanel = new OrderDetailPanel();
+        mainPanel.add("OrderDetail", cOrderDetailPanel);
+        cEmployeeListPanel = new EmployeeListPanel();
+        mainPanel.add("EmployeeList", cEmployeeListPanel);
+        cEditEmployeePanel = new EditEmployeePanel();
+        mainPanel.add("EditEmployee", cEditEmployeePanel);
+        cMenuManagementPanel = new MenuManagementPanel();
+        mainPanel.add("MenuManagement", cMenuManagementPanel);
+        cEditMenuItemPanel = new EditMenuItemPanel();
+        mainPanel.add("EditMenuItem", cEditMenuItemPanel);
+        cTotalSalesPanel = new TotalSalesPanel();
+        mainPanel.add("TotalSalesPanel", cTotalSalesPanel);
+        cPaymentPanel = new PaymentPanel();
+        mainPanel.add("PaymentPanel", cPaymentPanel);
+        
+        changeMode(MODE_ANONYMOUS);
+    }
+    
+    private void createMasterPanelConpornents()
+    {
+                // Add menu to frame
+        menuBar = new JMenuBar();
+        setJMenuBar(menuBar);
+
+        mnFile = new JMenu("File");
+        menuBar.add(mnFile);
+
+        mntm1 = new JMenuItem("[1] Login");
+        mnFile.add(mntm1);
+        mntm1.addActionListener(this);
+        
+        mntm2 = new JMenuItem("[2] Exit");
+        mnFile.add(mntm2);
+        mntm2.addActionListener(this);
+        
+        //----------- Create main panels ------------
+        con.setLayout(new BorderLayout());
+        
+        //head panel
+        headPanel = new JPanel();
+        headPanel.setBackground(Color.BLACK);
+        headPanel.setLayout(new FlowLayout());
+        headTitle = new JLabel("Valentino Restaurant Management System");
+        headTitle.setForeground(Color.WHITE);
+        headTitle.setPreferredSize(new Dimension(500, 30));
+        headTitle.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 24));
+        headBtnLogin = new JButton("Login");
+        headBtnLogin.addActionListener(this);
+        headBtnLogout = new JButton("Logout");
+        headBtnLogout.addActionListener(this);
+        headPanel.add(headTitle);
+        headPanel.add(headBtnLogin);
+        headPanel.add(headBtnLogout);
+        con.add(headPanel, BorderLayout.NORTH);
+        
+        //main content panel
+        mainPanel = new JPanel();
+        mainPanel.setOpaque(true);
+        mainPanel.setLayout(new CardLayout());
+        con.add(mainPanel, BorderLayout.CENTER);
+        
+        //main operate buttons panel
+        mainBtnsPanel = new JPanel();
+        mainBtnsPanel.setLayout(new GridLayout(0,1));
+        
+        mainBtnShowMenu = new JButton("Show menu");
+        mainBtnShowMenu.addActionListener(this);
+        mainBtnsPanel.add(mainBtnShowMenu);
+        
+        mainBtnManageOrder = new JButton("Order management");
+        mainBtnManageOrder.addActionListener(this);
+        mainBtnsPanel.add(mainBtnManageOrder);
+        
+        mainBtnManageEmployee = new JButton("Manage employees");
+        mainBtnManageEmployee.addActionListener(this);
+        mainBtnsPanel.add(mainBtnManageEmployee);
+        
+        mainBtnManageMenuItem = new JButton("Manage menu items");
+        mainBtnManageMenuItem.addActionListener(this);
+        mainBtnsPanel.add(mainBtnManageMenuItem);
+        
+        mainBtnShowTotalSales = new JButton("Show total sales");
+        mainBtnShowTotalSales.addActionListener(this);
+        mainBtnsPanel.add(mainBtnShowTotalSales);
+        
+        mainBtnShowPayment = new JButton("Show payments");
+        mainBtnShowPayment.addActionListener(this);
+        mainBtnsPanel.add(mainBtnShowPayment);
+        
+        con.add(mainBtnsPanel, BorderLayout.WEST);
+        
+        //Information panel
+        infoPanel = new JPanel();
+        infoPanel.setLayout(new FlowLayout());
+        labelLoginUserName = new JLabel();
+        labelLoginUserName.setPreferredSize(new Dimension(150, 50));
+        taMessage = new JTextArea(3,50);
+        taMessage.setEditable(false);
+        taMessage.setText("Wellcome!!");
+        taMessage.setOpaque(true);
+        btnClockOut = new JButton("Clock out");
+        btnClockOut.setEnabled(false);
+        btnClockOut.addActionListener(this);
+        LineBorder border = new LineBorder(Color.BLACK, 3, true);
+        taMessage.setBorder(border);
+        taMessage.setBackground(Color.WHITE);
+        infoPanel.add(labelLoginUserName);
+        infoPanel.add(btnClockOut);
+        infoPanel.add(taMessage);
+        con.add(infoPanel, BorderLayout.SOUTH);
+    }
+    
+
+    public void setLoginUserName(String newName)
+    {
+        currentUserName = newName;
+         if(newName == "")
+         {
+             labelLoginUserName.setText("Please login first.");
+         }
+         else
+         {
+            labelLoginUserName.setText("<html>Login user<br>" + newName + "</html>");
+        }
+    }
+
+    public final static byte MODE_ANONYMOUS = 0;
+    public final static byte MODE_EMPLOYEE = 1;
+    public final static byte MODE_MANAGER = 2;
+    
+    public void changeMode(byte state)
+    {
+        switch(state)
+        {
+            case MODE_ANONYMOUS:
+                headBtnLogout.setEnabled(false);
+                mainBtnShowMenu.setEnabled(false);
+                mainBtnManageOrder.setEnabled(false);
+                mainBtnManageEmployee.setEnabled(false);
+                mainBtnManageMenuItem.setEnabled(false);
+                mainBtnShowTotalSales.setEnabled(false);
+                mainBtnShowPayment.setEnabled(false);
+                break;
+            case MODE_EMPLOYEE:
+                headBtnLogout.setEnabled(true);
+                mainBtnShowMenu.setEnabled(true);
+                mainBtnManageOrder.setEnabled(true);
+                mainBtnManageEmployee.setEnabled(false);
+                mainBtnManageMenuItem.setEnabled(false);
+                mainBtnShowTotalSales.setEnabled(false);
+                mainBtnShowPayment.setEnabled(false);
+                break;
+           case MODE_MANAGER:
+                headBtnLogout.setEnabled(true);
+                mainBtnShowMenu.setEnabled(true);
+                mainBtnManageOrder.setEnabled(true);
+                mainBtnManageEmployee.setEnabled(true);
+                mainBtnManageMenuItem.setEnabled(true);
+                mainBtnShowTotalSales.setEnabled(true);
+                mainBtnShowPayment.setEnabled(true);
+                break;
+        }
+    }
+    
+    public void setTodaysDate(String today)
+    {
+        ////
+    }
+    
+    void setClockOutButton()
+    {
+        if(rcController.checkIfUserClockedOut())
+            btnClockOut.setEnabled(true);
+        else
+            btnClockOut.setEnabled(false);
+    }
+    //--------------------------------------------------------
+    // Display message on an information panel
+    //--------------------------------------------------------
+    public void displayMessage(String message)
+    {
+        taMessage.setForeground(Color.BLACK);
+        taMessage.setText(message);
+    }
+    
+    public void displayErrorMessage(String message)
+    {
+        taMessage.setForeground(Color.RED);
+        taMessage.setText(message);
+    }
+    
+    //========================================================
+    // Show dialog message
+    //========================================================
+    final static int DIALOG_YES = JOptionPane.YES_OPTION;
+    final static int DIALOG_NO = JOptionPane.NO_OPTION;
+    final static int DIALOG_CANCEL = JOptionPane.CANCEL_OPTION;
+    
+    public int showYesNoDialog(String title, String message)
+    {
+        int option = JOptionPane.showConfirmDialog(this, message, title, JOptionPane.YES_NO_OPTION, 
+        JOptionPane.QUESTION_MESSAGE);
+        return option;
+    }
+    
+    public int showYesNoCancelDiaglog(String title, String message)
+    {
+        int option = JOptionPane.showConfirmDialog(this, message, title, JOptionPane.YES_NO_CANCEL_OPTION, 
+        JOptionPane.QUESTION_MESSAGE);
+        return option;
+    }
+    
+    public void showErrorDialog(String title, String message)
+    {
+        JOptionPane.showMessageDialog(this, message, title, JOptionPane.ERROR_MESSAGE);
+    }
+    
+    public void showConfirmDialog(String title, String message)
+    {
+        JOptionPane.showMessageDialog(this, message, title, JOptionPane.PLAIN_MESSAGE);
+    }
+        
+
+    
+    
+    private int getIDfromString(String stringLine, int length)
+    {
+        int index = stringLine.indexOf("ID:"); //Search string of "ID:"
+        if(index == -1)
+        {
+            showErrorDialog("Error", "String 'ID:' is not found!!");
+            return -1;
+        }
+        
+        try
+        {
+            String strID = stringLine.substring(index + 3, index + 3 + length);
+            int id = Integer.parseInt(strID.trim());
+            return id;
+        }
+        catch(Exception e)
+        {
+            showErrorDialog("Error", "Parse error");
+            return -1;
+        }
+    }
+    //========================================================
+    // Master panel action
+    //========================================================
+    public void actionPerformed(ActionEvent ae) {
+
+        if(ae.getSource() == mntm2)
+        {
+            System.exit(0);
+        }
+        else if (ae.getSource() == mainBtnShowMenu)
+        {
+            //((CardLayout) mainPanel.getLayout()).show( mainPanel, "MenuList");
+            changeMainPanel("MenuList");
+            cMenuListPanel.init();
+        }
+        else if (ae.getSource() == mainBtnManageOrder)
+        {
+            //((CardLayout) mainPanel.getLayout()).show( mainPanel, "OrderList");
+            changeMainPanel("OrderList");
+            cOrderListPanel.init();
+        }
+        else if (ae.getSource() == mainBtnManageEmployee)
+        {
+            changeMainPanel("EmployeeList");
+            cEmployeeListPanel.init();
+        }
+        else if (ae.getSource() == mainBtnManageMenuItem)
+        {
+            changeMainPanel("MenuManagement");
+            cMenuManagementPanel.init();
+        }
+        else if (ae.getSource() == mainBtnShowTotalSales)
+        {
+            changeMainPanel("TotalSalesPanel");
+            cTotalSalesPanel.init();
+        }
+        else if (ae.getSource() == mainBtnShowPayment)
+        {
+            changeMainPanel("PaymentPanel");
+            cPaymentPanel.init();
+        }
+        else if (ae.getSource() == headBtnLogin || ae.getSource() == mntm1) {
+            changeMainPanel("Login");
+            cLoginPanel.init();
+            displayMessage("Enter your login ID and password.");
+        }
+        else if (ae.getSource() == headBtnLogout) {
+            if( showYesNoDialog("Logout","Are you sure to logout?") == DIALOG_YES)
+            {
+                rcController.userLogout();
+                changeMainPanel("Home");
+                changeMode(MODE_ANONYMOUS);
+                setClockOutButton();
+            }
+        }
+        else if (ae.getSource() == btnClockOut){
+            if( showYesNoDialog("Clock out","Are you sure to clock out?") == DIALOG_YES)
+            {
+                rcController.clockOut();
+                setClockOutButton();
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Login panel
+    *****************************************************************/
+    private class LoginPanel extends JPanel implements ActionListener
+    {
+        // components for login panel
+        //private JPanel         loginPanel;
+        private JLabel          lblUserID;
+        private JTextField      tfUserID;
+        private JLabel          lblPassword;
+        private JPasswordField  pwPassword;
+        private JCheckBox       chbIsManager;
+        private JButton         btnLoginOK;
+        public LoginPanel()
+        {
+            //loginPanel = new JPanel();
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+            lblUserID = new JLabel("UserID:");
+            lblUserID.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbLayout.setConstraints(lblUserID, gbc);
+            this.add(lblUserID);
+            
+            tfUserID = new JTextField(20);
+            tfUserID.setInputVerifier(new IntegerInputVerifier(0));
+            gbc.gridx = 1;
+            gbc.gridy = 0;
+            gbLayout.setConstraints(tfUserID, gbc);
+            this.add(tfUserID);
+            
+            lblPassword = new JLabel("Password:");
+            lblPassword.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(lblPassword, gbc);
+            this.add(lblPassword);
+            
+            pwPassword = new JPasswordField(20);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(pwPassword, gbc);
+            this.add(pwPassword);
+            
+            chbIsManager = new JCheckBox("Login as manager");
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(chbIsManager, gbc);
+            this.add(chbIsManager);
+            
+            btnLoginOK = new JButton("Login");
+            btnLoginOK.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(btnLoginOK, gbc);
+            this.add(btnLoginOK);
+        }
+        
+        private void setUserID(String id)
+        {
+            tfUserID.setText(id);
+        }
+        
+        private void setPassword(String password)
+        {
+            pwPassword.setText(password);
+        }
+        
+        public void init()
+        {
+            setUserID("");
+            setPassword("");
+            tfUserID.setBackground( UIManager.getColor( "TextField.background" ) ); 
+        }
+         
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnLoginOK)
+            {
+                //Check whether current focuced compornent have to verify their value
+                if (btnLoginOK.getVerifyInputWhenFocusTarget()) {
+                    //Try to get focus
+                    btnLoginOK.requestFocusInWindow();
+                    if (!btnLoginOK.hasFocus()) {    //Can not get focus ?� the compornent have not been verified
+                        return;
+                    }
+                }  
+                //if(!inputVerified)
+                //    return;
+                    
+                char[] password;
+                boolean isManager = chbIsManager.isSelected(); 
+                
+                byte state = -1;
+                
+                String inputID = tfUserID.getText();
+               
+                if(inputID.equals(""))
+                {
+                    displayErrorMessage("Enter user ID");
+                    return;
+                }
+                
+     
+                password= pwPassword.getPassword();
+                String inputPassword = new String(password);
+                if(inputPassword.equals(""))
+                {
+                    displayErrorMessage("Enter password");
+                    return;
+                }
+                
+                if( rcController.loginCheck(Integer.parseInt(inputID), inputPassword, isManager))
+                {
+                    showConfirmDialog("Message", "Login success!!");
+                    displayMessage("Wellcome, " + currentUserName);
+                    tfUserID.setText("");
+                    pwPassword.setText("");
+                    changeMainPanel("Home");
+                    setClockOutButton();
+                }
+                else
+                {
+                    displayErrorMessage(rcController.getErrorMessage());
+                }
+            }
+        }
+    }
+    
+    private void  changeMainPanel(String panelName)
+    {
+        ((CardLayout) mainPanel.getLayout()).show( mainPanel, panelName);
+        displayMessage("Main paanel change :" + panelName);
+    }
+    
+    /****************************************************************
+     * Menu list panel
+    *****************************************************************/       
+    private class MenuListPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        private JTextArea       displayArea;
+        private JPanel          btnPanel;
+        private JButton         btnAll;
+        private JButton         btnMain;
+        private JButton         btnDrink;
+        private JButton         btnAlcohol;
+        private JButton         btnDessert;
+        
+        public MenuListPanel()
+        {
+            this.setLayout( new BorderLayout());
+            displayArea = new JTextArea();
+            displayArea.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            displayArea.setEditable(false);
+            displayArea.setMargin(new Insets(5, 5, 5, 5));
+            scrollPanel = new JScrollPane(displayArea);
+            scrollPanel.setPreferredSize(new Dimension(200, 400));
+            add(scrollPanel, BorderLayout.CENTER);
+            
+           btnPanel = new JPanel();
+           btnPanel.setLayout( new FlowLayout());
+           btnAll = new JButton("All");
+           btnAll.addActionListener(this);
+           btnMain = new JButton("Main");
+           btnMain.addActionListener(this);
+           btnDrink = new JButton("Drink");
+           btnDrink.addActionListener(this);
+           btnAlcohol = new JButton("Alcohol");
+           btnAlcohol.addActionListener(this);
+           btnDessert = new JButton("Dessert");
+           btnDessert.addActionListener(this);
+           
+           btnPanel.add(btnAll);
+           btnPanel.add(btnMain);
+           btnPanel.add(btnDrink);
+           btnPanel.add(btnAlcohol);
+           btnPanel.add(btnDessert);
+           
+           add(btnPanel, BorderLayout.SOUTH);
+        }
+    
+        public void init()
+        {
+            showMenuList(0);
+            //displayArea.setText(str);
+            //showAllMenuList(displayArea);
+        }
+        
+        private void showMenuList(int menuType)
+        {
+            displayArea.setText("");
+            ArrayList<String> menuList = rcController.createMenuList(menuType);
+            for(int i = 0; i < menuList.size(); i++)
+                displayArea.append(menuList.get(i) + "\n");
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnAll)
+            {
+                showMenuList(0);
+                //showAllMenuList(displayArea);
+            }
+            else if (ae.getSource() == btnMain)
+            {
+                showMenuList(MenuItem.MAIN);
+                //showParticularMenuList(MenuItem.MAIN, displayArea);
+            }
+            else if (ae.getSource() == btnDrink)
+            {
+                showMenuList(MenuItem.DRINK);
+                //showParticularMenuList(MenuItem.DRINK, displayArea);
+            }
+            else if (ae.getSource() == btnAlcohol)
+            {
+                showMenuList(MenuItem.ALCOHOL);
+                //showParticularMenuList(MenuItem.ALCOHOL, displayArea);
+            }
+            else if (ae.getSource() == btnDessert)
+            {
+                showMenuList(MenuItem.DESSERT);
+                //showParticularMenuList(MenuItem.DESSERT, displayArea);
+            }
+        }
+    }
+    
+    /****************************************************************
+     * MenuManagementPanel
+    *****************************************************************/    
+    private class MenuManagementPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        private JList           displayList;
+        private JButton         btnAddNewMenuItem;
+        private JButton         btnEditMenuItem;
+        private JButton         btnDeleteMenuItem;
+        
+        public MenuManagementPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+
+            scrollPanel = new JScrollPane();
+            gbc.insets = new Insets(10, 10, 10, 10);
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.fill = GridBagConstraints.BOTH;
+            gbc.weightx = 1.0;
+            gbc.weighty = 1.0;
+            gbc.gridwidth = 3;
+            gbLayout.setConstraints(scrollPanel, gbc);
+            this.add(scrollPanel);
+            
+            btnAddNewMenuItem     = new JButton("Add new menu item");
+            btnAddNewMenuItem.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 1;
+            gbc.weighty = 0;
+            gbc.weightx = 0.5;
+            gbc.fill = GridBagConstraints.HORIZONTAL;
+            gbLayout.setConstraints(btnAddNewMenuItem, gbc);
+            this.add(btnAddNewMenuItem);
+            
+            btnEditMenuItem    = new JButton("Edit menu item");
+            btnEditMenuItem.addActionListener(this);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(btnEditMenuItem, gbc);
+            this.add(btnEditMenuItem);
+            
+            btnDeleteMenuItem   = new JButton("Delete menu item");
+            btnDeleteMenuItem.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(btnDeleteMenuItem, gbc);
+            this.add(btnDeleteMenuItem);
+            
+            displayList = new JList();
+            displayList.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            displayList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        }
+        
+        public void init()
+        {
+            showMenuList();
+        }
+        
+        private void showMenuList()
+        {
+            displayList.setListData(rcController.createMenuList(0).toArray());
+            scrollPanel.getViewport().setView(displayList);
+        }
+        
+        private int getSelectedMenuID()
+        {
+            String orderLine = (String)displayList.getSelectedValue();
+            if (orderLine == null)
+                return -1;
+                
+            return getIDfromString( orderLine, 4);
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnAddNewMenuItem)
+            {
+                cEditMenuItemPanel.init(0);
+                changeMainPanel("EditMenuItem");
+            }
+            else if (ae.getSource() == btnEditMenuItem)
+            {
+                int menuID = getSelectedMenuID();
+                if( menuID == -1)    return;
+                cEditMenuItemPanel.init(menuID);
+                changeMainPanel("EditMenuItem");
+            }
+            else if (ae.getSource() == btnDeleteMenuItem)
+            {
+                int deleteMenuID = getSelectedMenuID();
+                if( deleteMenuID == -1)    return;
+                
+                if( showYesNoDialog("", "Are you sure to delete the menu item?") == DIALOG_YES)
+                {
+                    if(!rcController.deleteMenuItem(deleteMenuID))
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                    }
+                    else
+                    {
+                        displayMessage("Deleted.");
+                        init();
+                    }
+                }
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Edit menu item panel
+    *****************************************************************/       
+    private class EditMenuItemPanel extends JPanel implements ActionListener
+    {
+        private JLabel          lblMenuItemID;
+        private JTextField      tbMenuItemID;
+        private JLabel          lblName;
+        private JTextField      tbName;
+        private JLabel          lblPrice;
+        private JTextField      tbPrice;
+        private JLabel          lblType;
+        private JComboBox       cbType;
+        private JButton         btnOK;
+        
+        private boolean         isUpdate;
+        
+        public EditMenuItemPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+            
+            lblMenuItemID = new JLabel("Menu item ID:");
+            lblMenuItemID.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.anchor = GridBagConstraints.WEST;
+            gbLayout.setConstraints(lblMenuItemID, gbc);
+            this.add(lblMenuItemID);
+            
+            tbMenuItemID = new JTextField(4);
+            tbMenuItemID.setInputVerifier(new IntegerInputVerifier(1,10000));
+            gbc.gridx = 1;
+            gbc.gridy = 0;
+            gbLayout.setConstraints(tbMenuItemID, gbc);
+            this.add(tbMenuItemID);
+            
+            lblName = new JLabel("Menu item name:");
+            lblName.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(lblName, gbc);
+            this.add(lblName);
+            
+            tbName = new JTextField(20);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(tbName, gbc);
+            this.add(tbName);
+            
+            lblPrice = new JLabel("Menu item price:");
+            lblPrice.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(lblPrice, gbc);
+            this.add(lblPrice);
+            
+            tbPrice = new JTextField(10);
+            tbPrice.setInputVerifier(new DoubleInputVerifier(1,10000));
+            gbc.gridx = 1;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(tbPrice, gbc);
+            this.add(tbPrice);
+            
+            lblType = new JLabel("Menu item type:");
+            lblType.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(lblType, gbc);
+            this.add(lblType);
+            
+            String[] combodata = {"Main", "Drink", "Alcohol", "Dessert"};
+            cbType = new JComboBox(combodata);
+            gbc.gridx = 1;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(cbType, gbc);
+            this.add(cbType);
+            
+            btnOK = new JButton("OK");
+            btnOK.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 4;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(btnOK, gbc);
+            this.add(btnOK);
+        }
+        
+        private void setMenuID(String id)
+        {
+            tbMenuItemID.setText(id);
+        }
+        
+        private void setItemName(String name)
+        {
+            tbName.setText(name);
+        }
+        
+        private void setPrice(String price)
+        {
+            tbPrice.setText(price);
+        }
+        
+        private void setType(String type)
+        {
+            cbType.setSelectedItem(type);
+        }
+        
+        
+        public void init(int menuItemID)
+        {
+            //------------- Add new menu item ------------
+            if( menuItemID == 0)    
+            {
+                setMenuID("");
+                tbMenuItemID.setEditable(true);
+                setItemName("");
+                setPrice("");
+                setType("Main");
+                isUpdate = false;
+                return;
+            }
+            
+            //------------- Update menu item ------------
+            
+            MenuItem   rMenuItem = rcController.getMenuItemData(menuItemID);
+            isUpdate = true;
+            
+            if( rMenuItem == null)
+            {
+                showErrorDialog("Error", "Get menu item data failed.");
+                setItemName("");
+                setPrice("");
+                setType("Main");
+                return;
+            }
+            setMenuID(Integer.toString(rMenuItem.getID()));
+            setItemName(rMenuItem.getName());
+            setPrice(Double.toString(rMenuItem.getPrice()));
+            tbPrice.setBackground( UIManager.getColor( "TextField.background" ) ); 
+            switch( rMenuItem.getType())
+            {
+                case MenuItem.MAIN:
+                    setType("Main");
+                break;
+                case MenuItem.DRINK:
+                    setType("Drink");
+                break;
+                case MenuItem.ALCOHOL:
+                    setType("Alcohol");
+                break;
+                case MenuItem.DESSERT:
+                    setType("Dessert");
+                break;
+            }
+            tbMenuItemID.setEditable(false);
+            tbMenuItemID.setBackground( UIManager.getColor( "TextField.background" ) ); 
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnOK)
+            {
+                //if( !inputVerified) return;
+                //Check whether current focuced compornent have to verify their value
+                if (btnOK.getVerifyInputWhenFocusTarget()) {
+                    //Try to get focus
+                    btnOK.requestFocusInWindow();
+                    if (!btnOK.hasFocus()) {    //Can not get focus ?� the compornent have not been verified
+                        return;
+                    }
+                }  
+                
+                if( tbMenuItemID.getText().equals("") || tbName.getText().equals("") || tbPrice.getText().equals(""))
+                {
+                    displayErrorMessage("Fill all form!!");
+                    return;
+                }
+
+                int menuItemID = Integer.parseInt(tbMenuItemID.getText());
+ 
+                String strMenuType = (String)cbType.getSelectedItem();
+                byte    menuType;
+                
+                if( strMenuType.equals("Main"))
+                {
+                    menuType = MenuItem.MAIN;
+                }
+                else if( strMenuType.equals("Drink"))
+                {
+                    menuType = MenuItem.DRINK;
+                }
+                else if( strMenuType.equals("Alcohol"))
+                {
+                    menuType = MenuItem.ALCOHOL;
+                }
+                else    //Dessert
+                {
+                    menuType = MenuItem.DESSERT;
+                }
+                
+                if(isUpdate)
+                {
+                    if(! rcController.updateMenuItem(menuItemID , tbName.getText(), Double.parseDouble(tbPrice.getText()), menuType))
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                        return;
+                    }
+                    showConfirmDialog("Message", "Update successful!!");
+                }
+                else
+                {                   
+                    if(! rcController.addNewMenuItem(menuItemID , tbName.getText(), Double.parseDouble(tbPrice.getText()), menuType))
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                        return;
+                    }
+                    showConfirmDialog("Message", "New menu item is added!!");
+                }
+                init(menuItemID);
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Employee list panel
+    *****************************************************************/       
+    private class EmployeeListPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        private JList           displayList;
+        //private JPanel          btnPanel;
+        private JButton         btnAddStaff;
+        private JButton         btnEditStaff;
+        private JButton         btnDeleteStaff;
+        private JButton         btnClockOut;
+        
+        public EmployeeListPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+
+            scrollPanel = new JScrollPane();
+            gbc.insets = new Insets(10, 10, 10, 10);
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.fill = GridBagConstraints.BOTH;
+            gbc.weightx = 1.0;
+            gbc.weighty = 1.0;
+            gbc.gridwidth = 4;
+            gbLayout.setConstraints(scrollPanel, gbc);
+            this.add(scrollPanel);
+            
+            btnAddStaff     = new JButton("Add new staff");
+            btnAddStaff.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 1;
+            gbc.weighty = 0;
+            gbc.weightx = 0.25;
+            gbc.fill = GridBagConstraints.HORIZONTAL;
+            gbLayout.setConstraints(btnAddStaff, gbc);
+            this.add(btnAddStaff);
+            
+            btnEditStaff    = new JButton("Edit staff");
+            btnEditStaff.addActionListener(this);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(btnEditStaff, gbc);
+            this.add(btnEditStaff);
+            
+            btnDeleteStaff   = new JButton("Delete staff");
+            btnDeleteStaff.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(btnDeleteStaff, gbc);
+            this.add(btnDeleteStaff);
+            
+            btnClockOut  = new JButton("Clock out");
+            btnClockOut.addActionListener(this);
+            gbc.gridx = 3;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(btnClockOut, gbc);
+            this.add(btnClockOut);
+            
+            displayList = new JList();
+            displayList.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            displayList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        }
+        
+        public void init()
+        {
+            showStaffList();
+        }
+        
+        public void showStaffList()
+        {
+            displayList.setListData(rcController.createStaffList().toArray());
+            scrollPanel.getViewport().setView(displayList);
+        }
+        
+        private int getSelectedStaffID()
+        {
+            String orderLine = (String)displayList.getSelectedValue();
+            if (orderLine == null)
+                return -1;
+                
+            return getIDfromString( orderLine, 4);
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnAddStaff)
+            {
+                cEditEmployeePanel.init(0);
+                changeMainPanel("EditEmployee");
+            }
+            else if (ae.getSource() == btnEditStaff)
+            {
+                int staffID = getSelectedStaffID();
+                if( staffID == -1)    return;
+                 cEditEmployeePanel.init(staffID);
+                 changeMainPanel("EditEmployee");
+            }
+            else if (ae.getSource() == btnDeleteStaff)
+            {
+                int deleteStaffID = getSelectedStaffID();
+                if( deleteStaffID == -1)    return;
+                
+                if( showYesNoDialog("", "Are you sure to delete the staff?") == DIALOG_YES)
+                {
+                    if(!rcController.deleteStaff(deleteStaffID))
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                    }
+                    else
+                    {
+                        displayMessage("Deleted.");
+                        init();
+                    }
+                }
+            }
+            else if (ae.getSource() == btnClockOut)
+            {
+                int staffID = getSelectedStaffID();
+                if( staffID == -1)    return;
+                if(showYesNoDialog("", "Are you sure to make the staff clocked out?") == DIALOG_NO)
+                    return;
+                if( rcController.clockOut(staffID) == false)
+                    showErrorDialog("Error", rcController.getErrorMessage());
+                else
+                {
+                    displayMessage("The staff have been clocked out.");
+                    init();
+                }
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Edit employee panel
+    *****************************************************************/       
+    private class EditEmployeePanel extends JPanel implements ActionListener
+    {
+        private JLabel          lblStaffID;
+        private JTextField      tbStaffID;
+        private JLabel          lblFirstName;
+        private JTextField      tbFirstName;
+        private JLabel          lblLastName;
+        private JTextField      tbLastName;
+        private JLabel          lblPassword;
+        private JPasswordField  tbPassword;
+        private JButton         btnOK;
+        
+        private boolean         isUpdate;
+        
+        public EditEmployeePanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+            
+            lblStaffID = new JLabel("StaffID:");
+            lblStaffID.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.anchor = GridBagConstraints.WEST;
+            gbLayout.setConstraints(lblStaffID, gbc);
+            this.add(lblStaffID);
+            
+            tbStaffID = new JTextField(4);
+            tbStaffID.setInputVerifier(new IntegerInputVerifier(1,10000));
+            gbc.gridx = 1;
+            gbc.gridy = 0;
+            gbLayout.setConstraints(tbStaffID, gbc);
+            this.add(tbStaffID);
+            
+            lblFirstName = new JLabel("FirstName:");
+            lblFirstName.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(lblFirstName, gbc);
+            this.add(lblFirstName);
+            
+            tbFirstName = new JTextField(20);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(tbFirstName, gbc);
+            this.add(tbFirstName);
+            
+            lblLastName = new JLabel("LastName:");
+            lblLastName.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(lblLastName, gbc);
+            this.add(lblLastName);
+            
+            tbLastName = new JTextField(20);
+            gbc.gridx = 1;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(tbLastName, gbc);
+            this.add(tbLastName);
+            
+            lblPassword = new JLabel("Password:");
+            lblPassword.setPreferredSize(new Dimension(100, 30));
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(lblPassword, gbc);
+            this.add(lblPassword);
+            
+            tbPassword = new JPasswordField(20);
+            gbc.gridx = 1;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(tbPassword, gbc);
+            this.add(tbPassword);
+            
+            btnOK = new JButton("OK");
+            btnOK.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 4;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(btnOK, gbc);
+            this.add(btnOK);
+        }
+        
+        private void setUserID(int id)
+        {
+            tbStaffID.setText(Integer.toString(id));
+        }
+        
+        private void setPassword(String password)
+        {
+            tbPassword.setText(password);
+        }
+        
+        private void setLastName(String lastName)
+        {
+            tbLastName.setText(lastName);
+        }
+        
+        private void setFirstName(String firstName)
+        {
+            tbFirstName.setText(firstName);
+        }
+        
+        public void init(int employeeID)
+        {
+            //------------- Add new staff ------------
+            if( employeeID == 0)    
+            {
+                setUserID(0);
+                tbStaffID.setEditable(true);
+                setPassword("");
+                setLastName("");
+                setFirstName("");
+                isUpdate = false;
+                return;
+            }
+            
+            //------------- Update staff ------------
+            
+            Staff   rStaff = rcController.getStaffData(employeeID);
+            isUpdate = true;
+            
+            if( rStaff == null)
+            {
+                showErrorDialog("Error", "Get staff data failed.");
+                setLastName("");
+                setFirstName("");
+                return;
+            }
+            setUserID(rStaff.getID());
+            setPassword(rStaff.getPassword());
+            setLastName(rStaff.getLastName());
+            setFirstName(rStaff.getFirstName());
+            tbStaffID.setEditable(false);
+            tbStaffID.setBackground( UIManager.getColor( "TextField.background" ) ); 
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnOK)
+            {
+                //if( !inputVerified) return;
+                //Check whether current focuced compornent have to verify their value
+                if (btnOK.getVerifyInputWhenFocusTarget()) {
+                    //Try to get focus
+                    btnOK.requestFocusInWindow();
+                    if (!btnOK.hasFocus()) {    //Can not get focus ?� the compornent have not been verified
+                        return;
+                    }
+                }  
+                
+                
+                int test = tbPassword.getPassword().length;
+                
+                if(tbPassword.getPassword().length == 0 || tbFirstName.getText().equals("") || tbLastName.getText().equals(""))
+                {
+                    displayErrorMessage("Fill all form!!");
+                    return;
+                }
+                
+                int staffID = Integer.parseInt(tbStaffID.getText());
+                
+                if(isUpdate)
+                {
+                    if(! rcController.updateStaff(staffID , new String(tbPassword.getPassword()), tbFirstName.getText(), tbLastName.getText())) 
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                        return;
+                    }
+                    showConfirmDialog("Message", "Update successful!!");
+                }
+                else
+                {
+                    boolean isManager = false;
+                    
+                    if( showYesNoDialog("", "Add as Manager?") == DIALOG_YES)
+                        isManager = true;
+                    
+                    if(!rcController.addNewStaff(staffID,
+                                                new String(tbPassword.getPassword()),
+                                                tbFirstName.getText(),
+                                                tbLastName.getText(),
+                                                isManager))
+                    {
+                        showErrorDialog("Error", rcController.getErrorMessage());
+                        return;
+                    }
+                    showConfirmDialog("Message", "New staff is added!!");
+                    
+                }
+                init(staffID);
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Order list panel
+    *****************************************************************/       
+    private class OrderListPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        //private JTextArea       displayArea;
+        private JPanel          btnPanel;
+        private JButton         btnNewOrder;
+        private JButton         btnEditOrder;
+        private JButton         btnCloseOrder;
+        private JButton         btnCancelOrder;
+        private JLabel          lblTotalSales;
+        private JLabel          lblTotalCount;
+        private JLabel          lblCancelTotal;
+        private JLabel          lblCancelCount;
+        private JList           displayList;
+        
+        public OrderListPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+            /*displayArea = new JTextArea();
+            displayArea.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            displayArea.setEditable(false);
+            displayArea.setMargin(new Insets(5, 5, 5, 5));*/
+            scrollPanel = new JScrollPane();
+            scrollPanel.setPreferredSize(new Dimension(500, 300));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.gridwidth = 4;
+            gbLayout.setConstraints(scrollPanel, gbc);
+            this.add(scrollPanel);
+            
+            lblTotalCount = new JLabel();
+            lblTotalCount.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 2;
+            gbc.insets = new Insets(10, 10, 10, 10);
+            gbLayout.setConstraints(lblTotalCount, gbc);
+            this.add(lblTotalCount);
+            
+            lblTotalSales = new JLabel();
+            lblTotalSales.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 2;
+            gbc.gridy = 1;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(lblTotalSales, gbc);
+            this.add(lblTotalSales);
+            
+            lblCancelCount = new JLabel();
+            lblCancelCount.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(lblCancelCount, gbc);
+            this.add(lblCancelCount);
+            
+            lblCancelTotal = new JLabel();
+            lblCancelTotal.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 2;
+            gbc.gridy = 2;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(lblCancelTotal, gbc);
+            this.add(lblCancelTotal);
+            
+            btnNewOrder     = new JButton("New");
+            btnNewOrder.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbc.gridwidth = 1;
+            gbc.weightx = 0.25;
+            gbc.fill = GridBagConstraints.HORIZONTAL;
+            gbLayout.setConstraints(btnNewOrder, gbc);
+            this.add(btnNewOrder);
+            
+            btnEditOrder    = new JButton("Edit");
+            btnEditOrder.addActionListener(this);
+            gbc.gridx = 1;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(btnEditOrder, gbc);
+            this.add(btnEditOrder);
+            
+            btnCloseOrder   = new JButton("Close");
+            btnCloseOrder.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(btnCloseOrder, gbc);
+            this.add(btnCloseOrder);
+            
+            btnCancelOrder  = new JButton("Cancel");
+            btnCancelOrder.addActionListener(this);
+            gbc.gridx = 3;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(btnCancelOrder, gbc);
+            this.add(btnCancelOrder);
+            
+            displayList = new JList();
+        }
+        
+        private void setTotalCount( int count)
+        {
+            lblTotalCount.setText("Today's order: " + count);
+        }
+        
+        private void setTotalSales( double sales)
+        {
+            lblTotalSales.setText("Total:$ " + sales);
+        }
+        
+        private void setCancelCount( int count)
+        {
+            lblCancelCount.setText("Canceled orders: " + count);
+        }
+        
+        private void setCancelTotal( double sales)
+        {
+            lblCancelTotal.setText("Cancel total:$ " + sales);
+        }
+        
+        private void showOrderList()
+        {
+            displayList.setListData(rcController.createOrderList().toArray());
+            scrollPanel.getViewport().setView(displayList);
+            
+            setTotalCount(rcController.getTodaysOrderCnt());
+            setTotalSales(rcController.getTotalSales());
+            setCancelCount(rcController.getTodaysCancelCnt());
+            setCancelTotal(rcController.getCancelTotal());
+            
+        }
+        
+        public void init()
+        {
+            showOrderList();
+        }
+        
+        private int getSelectedOrderID()
+        {
+            String orderLine = (String)displayList.getSelectedValue();
+            if (orderLine == null)
+                return -1;
+                
+            return getIDfromString( orderLine, 4);
+        }
+        
+        private String getSelectedOrderStaffName()
+        {
+            String stringLine = (String)displayList.getSelectedValue();
+            if (stringLine == null)
+                return null;
+                
+            int index = stringLine.indexOf("Name:"); //Search string of "ID:"
+            if(index == -1)
+            {
+                showErrorDialog("Error", "String 'Name:' is not found!!");
+                return null;
+            }
+            
+
+            String staffName = stringLine.substring(index + 5, index + 5 + 22);
+            return staffName.trim();
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnNewOrder)
+            {
+                //((CardLayout) mainPanel.getLayout()).show( mainPanel, "OrderDetail");
+                changeMainPanel("OrderDetail");
+                int orderID = rcController.createOrder();
+                String staffName = rcController.getCurrentUserName();
+                cOrderDetailPanel.init(orderID, staffName);
+                //cOrderListPanel.init();
+            }
+            else if (ae.getSource() == btnEditOrder)
+            {
+                int orderID = getSelectedOrderID();
+                String staffName = getSelectedOrderStaffName();
+                if(orderID == -1) return;
+                    
+                ((CardLayout) mainPanel.getLayout()).show( mainPanel, "OrderDetail");
+                //int orderID = cController.createOrder();
+                cOrderDetailPanel.init(orderID, staffName);
+            }
+            else if (ae.getSource() == btnCloseOrder)
+            {
+                int orderID = getSelectedOrderID();
+                if(orderID == -1) return;
+                
+                if( showYesNoDialog("Close order","Are you sure to close the order?") == DIALOG_YES)
+                {
+                    if( !rcController.closeOrder(orderID))
+                        displayErrorMessage(rcController.getErrorMessage());
+                    showOrderList();
+                }
+            }
+            else if (ae.getSource() == btnCancelOrder)
+            {
+                int orderID = getSelectedOrderID();
+                if(orderID == -1) return;
+                
+                if( showYesNoDialog("Close order","Are you sure to close the order?") == DIALOG_YES)
+                {
+                    if(!rcController.cancelOrder(orderID))
+                        displayErrorMessage(rcController.getErrorMessage());
+                    showOrderList();
+                }
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Order detail panel
+    *****************************************************************/       
+    private class OrderDetailPanel extends JPanel implements ActionListener, ListSelectionListener
+    {
+        //Right
+        private JLabel          lblRightTitle;
+       
+        private JScrollPane     menuScrollPanel;
+        private JButton         btnAll;
+        private JButton         btnMain;
+        private JButton         btnDrink;
+        private JButton         btnAlcohol;
+        private JButton         btnDessert;
+        
+        //Left
+        private JLabel          lblLeftTitle;
+        private JLabel          lblLeftInfo;
+        private JScrollPane     orderScrollPanel;
+        //private JTextArea       displayArea;
+        private JPanel          btnPanel;
+        private JButton         btnAddItem;
+        private JButton         btnDeleteItem;
+        private JLabel          lblQuantity;
+        private JTextField      tfQuantity;
+        
+        private JLabel              lblTotalSales;
+        private JLabel              lblOrderState;
+        private JLabel              lblStaffName;
+        private JList               orderItemList;
+        private JList               menuList;
+        
+        private int             currentOrderID;
+        private int             orderItemCnt;
+        private int             currentOrderState;
+        
+        private JPanel          orderDetailPanel;
+        private JPanel          menuListPanel;
+        
+        public OrderDetailPanel()
+        {
+            this.setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
+            //this.insets = new Insets(5, 5, 5, 5);
+            
+            orderDetailPanel = new JPanel();
+            //orderDetailPanel.setSize(new Dimension(270, 600));
+            
+            GridBagLayout gbLayout = new GridBagLayout();
+            orderDetailPanel.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+            
+            lblLeftTitle = new JLabel("Order detail");
+            
+            //lblLeftTitle.setMaximumSize(new Dimension(350, 50));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.gridwidth = 4;
+            gbc.fill = GridBagConstraints.BOTH;
+            gbc.insets = new Insets(5, 5, 5, 5);
+            gbLayout.setConstraints(lblLeftTitle, gbc);
+            orderDetailPanel.add(lblLeftTitle);
+            
+            lblLeftInfo = new JLabel("No  Item name                 quantity    price");
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 4;
+            gbLayout.setConstraints(lblLeftInfo, gbc);
+            orderDetailPanel.add(lblLeftInfo);
+            
+            orderScrollPanel = new JScrollPane();
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbc.ipadx = 0;
+            gbc.ipady = 0;
+            gbc.weighty = 1.0;
+            //gbc.fill = GridBagConstraints.VERTICAL;
+            gbLayout.setConstraints(orderScrollPanel, gbc);
+            orderDetailPanel.add(orderScrollPanel);
+            
+            lblTotalSales = new JLabel();
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbc.weighty = 0;
+            gbc.gridwidth = 4;
+            //gbc.fill = GridBagConstraints.BOTH;
+            gbLayout.setConstraints(lblTotalSales, gbc);
+            orderDetailPanel.add(lblTotalSales);
+            
+            lblOrderState = new JLabel();
+            gbc.gridx = 0;
+            gbc.gridy = 4;
+            gbLayout.setConstraints(lblOrderState, gbc);
+            orderDetailPanel.add(lblOrderState);
+            
+            lblStaffName = new JLabel();
+            gbc.gridx = 0;
+            gbc.gridy = 5;
+            gbc.gridwidth = 4;
+            gbLayout.setConstraints(lblStaffName, gbc);
+            orderDetailPanel.add(lblStaffName);
+            
+            lblQuantity = new JLabel("Quantity");
+            gbc.ipadx = 20;
+            gbc.gridx = 0;
+            gbc.gridy = 6;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(lblQuantity, gbc);
+            orderDetailPanel.add(lblQuantity);
+            
+            tfQuantity = new JTextField();
+            tfQuantity.setInputVerifier(new IntegerInputVerifier(1,100));
+            tfQuantity.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 7;
+            gbLayout.setConstraints(tfQuantity, gbc);
+            orderDetailPanel.add(tfQuantity);
+            
+            btnAddItem  = new JButton("Add");
+            btnAddItem.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 6;
+            gbc.gridwidth = 1;
+            gbc.gridheight = 2;
+            gbLayout.setConstraints(btnAddItem, gbc);
+            orderDetailPanel.add(btnAddItem);
+            
+            btnDeleteItem   = new JButton("Delete");
+            btnDeleteItem.addActionListener(this);
+            gbc.gridx = 3;
+            gbc.gridy = 6;
+            gbLayout.setConstraints(btnDeleteItem, gbc);
+            orderDetailPanel.add(btnDeleteItem);
+            
+            
+            //Right panel            
+            menuListPanel = new JPanel();
+            
+            menuListPanel.setLayout( gbLayout);
+            
+            lblRightTitle = new JLabel("Menu list");
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.ipadx = 0;
+            gbc.gridwidth = 5;
+            gbc.gridheight = 1;
+            gbc.fill = GridBagConstraints.BOTH;
+            gbLayout.setConstraints(lblRightTitle, gbc);
+            menuListPanel.add(lblRightTitle);
+            
+            menuScrollPanel = new JScrollPane();
+            //menuScrollPanel.setPreferredSize(new Dimension(270, 300));
+            //menuScrollPanel.setMaximumSize(new Dimension(Short.MAX_VALUE, Short.MAX_VALUE));
+            gbc.gridy = 1;
+            gbc.weighty = 1.0;
+            
+            gbLayout.setConstraints(menuScrollPanel, gbc);
+            menuListPanel.add(menuScrollPanel);
+            
+            btnAll  = new JButton("All");
+            btnAll.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbc.gridwidth = 1;
+            gbc.weighty = 0;
+            gbc.fill = GridBagConstraints.BOTH;
+            gbLayout.setConstraints(btnAll, gbc);
+            menuListPanel.add(btnAll);
+            
+            btnMain  = new JButton("Main");
+            btnMain.addActionListener(this);
+            gbc.gridx = 1;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(btnMain, gbc);
+            menuListPanel.add(btnMain);
+            
+            btnDrink  = new JButton("Drink");
+            btnDrink.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(btnDrink, gbc);
+            menuListPanel.add(btnDrink);
+            
+             btnAlcohol  = new JButton("Alcohol");
+             btnAlcohol.addActionListener(this);
+            gbc.gridx = 3;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(btnAlcohol, gbc);
+            menuListPanel.add(btnAlcohol);
+            
+            btnDessert  = new JButton("Dessert");
+            btnDessert.addActionListener(this);
+            gbc.gridx = 4;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(btnDessert, gbc);
+            menuListPanel.add(btnDessert);
+            
+            LineBorder border = new LineBorder(Color.BLACK, 1, false);
+            menuListPanel.setBorder(border);
+            orderDetailPanel.setBorder(border);
+            this.add(orderDetailPanel);
+            this.add(menuListPanel);
+            
+            
+            //menuListPanel.setMaximumSize(new Dimension(350, 600));
+            
+            orderItemList   = new JList();
+            orderItemList.setFont(new Font(Font.MONOSPACED,Font.PLAIN,10));
+            orderItemList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+            menuList = new JList();
+            menuList.addListSelectionListener(this);
+            menuList.setFont(new Font(Font.MONOSPACED,Font.PLAIN,10));
+            menuList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+            
+       }
+        
+        public void init(int orderID, String staffName)
+        {
+            currentOrderID = orderID;
+            currentOrderState = rcController.getOrderState(orderID);
+            switch(currentOrderState)
+            {
+                case Order.ORDER_CLOSED:
+                    setOrderState("Closed");
+                break;
+                case Order.ORDER_CANCELED:
+                    setOrderState("Canceled");
+                break;
+                default:
+                break;
+            }
+            
+             if(currentOrderState != 0)
+            {
+                btnAddItem.setEnabled(false);
+                btnDeleteItem.setEnabled(false);
+            }
+            else
+            {
+                btnAddItem.setEnabled(true);
+                btnDeleteItem.setEnabled(true);
+            }
+            
+            refleshOrderDetailList();
+            menuList.setListData(rcController.createMenuList(0).toArray());
+            menuScrollPanel.getViewport().setView(menuList);
+            tfQuantity.setText("");
+            tfQuantity.setBackground( UIManager.getColor( "TextField.background" ) );
+            setStaffName(staffName);
+        }
+        
+        private void setTotal(double total)
+        {
+            lblTotalSales.setText("Total charge: $" + total);
+        }
+        
+        private void setOrderState(String state)
+        {
+            lblOrderState.setText("Order state: " + state);
+        }
+        
+        private void setStaffName(String name)
+        {
+            lblStaffName.setText("Staff name: " + name);
+        }
+        
+        private void refleshOrderDetailList()
+        {
+            ArrayList<String> list = rcController.createOrderItemlList(currentOrderID);
+            setTotal(rcController.getOrderTotalCharge(currentOrderID));
+            orderItemCnt = list.size();
+            orderItemList.setListData(list.toArray());
+            //createOrderItemlList(currentOrderID, orderItemList);
+            orderScrollPanel.getViewport().setView(orderItemList);
+        }
+        
+        private int getOrderDetailIndexFromString(String orderLine)
+        {
+            try
+            {
+                String strIndex = orderLine.substring(0, 4);
+                int index = Integer.parseInt(strIndex.trim());
+                return index;
+            }
+            catch(Exception e)
+            {
+                //showErrorDialog("Error", "Parse error");
+                return -1;
+            }
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnAddItem)
+            {
+                //if(!inputVerified)
+                //    return;
+                //Check whether current focuced compornent have to verify their value
+                if (btnAddItem.getVerifyInputWhenFocusTarget()) {
+                    //Try to get focus
+                    btnAddItem.requestFocusInWindow();
+                    if (!btnAddItem.hasFocus()) {    //Can not get focus ?� the compornent have not been verified
+                        return;
+                    }
+                }  
+                
+                String menuLine = (String)menuList.getSelectedValue();
+                if (menuLine == null)
+                    return;
+
+                int     id = getIDfromString( menuLine, 4);
+                if(id == -1)
+                    return;
+                if( tfQuantity.getText().equals(""))
+                {
+                    showErrorDialog("Error", "Enter quantity!!");
+                    return;
+                }
+                byte    quantity = Byte.parseByte(tfQuantity.getText().trim());
+                /*if( quantity <= 0 || 100 <= quantity)
+                {
+                    displayErrorMessage("Quantity must be between 1 and 100");
+                    return;
+                }*/
+                displayMessage("Menu ID = "+ id + " Quantity = " + quantity);
+                if( rcController.addNewOrderItem(currentOrderID, id, quantity) == false)
+                {
+                    displayErrorMessage("addNewOrderItem Error!!\n" + rcController.getErrorMessage());
+                }
+                refleshOrderDetailList();
+                //auto scroll
+                orderItemList.ensureIndexIsVisible(orderItemCnt-1);
+                
+            }
+            else if (ae.getSource() == btnDeleteItem)
+            {
+                String orderLine = (String)orderItemList.getSelectedValue();
+                if(orderLine == null)
+                    return;
+                    
+                int     index = getOrderDetailIndexFromString(orderLine);
+                if(index == -1)
+                    return;
+                if( rcController.deleteOrderItem(currentOrderID, index) == false)
+                {
+                    displayErrorMessage("deleteOrderItem Error!!\n" + rcController.getErrorMessage());
+                }
+                refleshOrderDetailList();
+            }
+             else if (ae.getSource() == btnAll)
+            {
+                menuList.setListData(rcController.createMenuList(0).toArray());
+                menuScrollPanel.getViewport().setView(menuList);
+            }
+             else if (ae.getSource() == btnMain)
+            {
+                //createParticularMenuList(MenuItem.MAIN, menuList);
+                menuList.setListData(rcController.createMenuList(MenuItem.MAIN).toArray());
+                menuScrollPanel.getViewport().setView(menuList);
+            }
+             else if (ae.getSource() == btnDrink)
+            {
+                //createParticularMenuList(MenuItem.DRINK, menuList);
+                menuList.setListData(rcController.createMenuList(MenuItem.DRINK).toArray());
+                menuScrollPanel.getViewport().setView(menuList);
+            }
+             else if (ae.getSource() == btnAlcohol)
+            {
+                //createParticularMenuList(MenuItem.ALCOHOL, menuList);
+                menuList.setListData(rcController.createMenuList(MenuItem.ALCOHOL).toArray());
+                menuScrollPanel.getViewport().setView(menuList);
+            }
+             else if (ae.getSource() == btnDessert)
+            {
+                //createParticularMenuList(MenuItem.DESSERT, menuList);
+                menuList.setListData(rcController.createMenuList(MenuItem.DESSERT).toArray());
+                menuScrollPanel.getViewport().setView(menuList);
+            }
+        }
+        
+        public void valueChanged( ListSelectionEvent e ) {
+            if( e.getValueIsAdjusting() == true ){  //when mouce click happens
+                if( e.getSource() == menuList ){
+                     tfQuantity.setText("1");
+                }
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Total sales panel
+    *****************************************************************/   
+    private class TotalSalesPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        private JList           displayList;
+        private JButton         btnPrint;
+        private JButton         btnCloseAllOrder;
+        private JLabel          lblTotalSales;
+        private JLabel          lblTotalCount;
+        private JLabel          lblCancelTotal;
+        private JLabel          lblCancelCount;
+        
+        
+        public TotalSalesPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+
+            scrollPanel = new JScrollPane();
+            //scrollPanel.setPreferredSize(new Dimension(500, 300));
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.gridwidth = 4;
+            gbc.weightx = 1.0;
+            gbc.weighty = 1.0;
+            gbc.insets = new Insets(5, 5, 5, 5);
+            gbc.fill = GridBagConstraints.BOTH;
+            gbLayout.setConstraints(scrollPanel, gbc);
+            this.add(scrollPanel);
+            
+            lblTotalCount = new JLabel();
+            lblTotalCount.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 2;
+            gbc.weighty = 0;
+            gbLayout.setConstraints(lblTotalCount, gbc);
+            this.add(lblTotalCount);
+            
+            lblTotalSales = new JLabel();
+            lblTotalSales.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 2;
+            gbc.gridy = 1;
+            gbLayout.setConstraints(lblTotalSales, gbc);
+            this.add(lblTotalSales);
+            
+            lblCancelCount = new JLabel();
+            lblCancelCount.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 0;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(lblCancelCount, gbc);
+            this.add(lblCancelCount);
+            
+            lblCancelTotal = new JLabel();
+            lblCancelTotal.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            gbc.gridx = 2;
+            gbc.gridy = 2;
+            gbLayout.setConstraints(lblCancelTotal, gbc);
+            this.add(lblCancelTotal);
+            
+            btnPrint    = new JButton("Generate text file");
+            btnPrint.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 3;
+            gbc.gridwidth = 2;
+            gbLayout.setConstraints(btnPrint, gbc);
+            this.add(btnPrint);
+            
+            btnCloseAllOrder    = new JButton("Close all order");
+            btnCloseAllOrder.addActionListener(this);
+            gbc.gridx = 2;
+            gbc.gridy = 3;
+            gbLayout.setConstraints(btnCloseAllOrder, gbc);
+            this.add(btnCloseAllOrder);
+            
+            displayList = new JList();
+        }
+        
+        private void setTotalCount( int count)
+        {
+            lblTotalCount.setText("Today's order: " + count);
+        }
+        
+        private void setTotalSales( double sales)
+        {
+            lblTotalSales.setText("Total:$ " + sales);
+        }
+        
+        private void setCancelCount( int count)
+        {
+            lblCancelCount.setText("Canceled orders: " + count);
+        }
+        
+        private void setCancelTotal( double sales)
+        {
+            lblCancelTotal.setText("Cancel total:$ " + sales);
+        }
+        
+        private void showOrderList()
+        {
+            displayList.setListData(rcController.createOrderList().toArray());
+            scrollPanel.getViewport().setView(displayList);
+            
+            setTotalCount(rcController.getTodaysOrderCnt());
+            setTotalSales(rcController.getTotalSales());
+            setCancelCount(rcController.getTodaysCancelCnt());
+            setCancelTotal(rcController.getCancelTotal());
+        }
+        
+        public void init()
+        {
+            showOrderList();
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnPrint)
+            {
+                String createFineName = rcController.generateSalesReport();
+                if( createFineName == null)
+                    displayErrorMessage(rcController.getErrorMessage());
+                else
+                    displayMessage(createFineName + " have been generated.");
+            }
+            else if (ae.getSource() == btnCloseAllOrder)
+            {
+                if (showYesNoDialog("", "Are you sure to close all order?") == DIALOG_YES)
+                {
+                    rcController.closeAllOrder();
+                    init();
+                    displayMessage("");
+                }
+            }
+        }
+    }
+    
+    /****************************************************************
+     * Payment panel
+    *****************************************************************/   
+    private class PaymentPanel extends JPanel implements ActionListener
+    {
+        private JScrollPane     scrollPanel;
+        private JTextArea       displayArea;
+        private JButton         btnPrint;
+        private JButton         btnAllClockOut;
+        
+        public PaymentPanel()
+        {
+            GridBagLayout gbLayout = new GridBagLayout();
+            this.setLayout( gbLayout);
+            GridBagConstraints gbc = new GridBagConstraints();
+
+            displayArea = new JTextArea();
+            displayArea.setFont(new Font(Font.MONOSPACED,Font.PLAIN,16));
+            displayArea.setEditable(false);
+            displayArea.setMargin(new Insets(5, 5, 5, 5));
+            scrollPanel = new JScrollPane(displayArea);
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.gridwidth = 2;
+            gbc.weightx = 1.0;
+            gbc.weighty = 1.0;
+            gbc.insets = new Insets(5, 5, 5, 5);
+            gbc.fill = GridBagConstraints.BOTH;
+            gbLayout.setConstraints(scrollPanel, gbc);
+            this.add(scrollPanel);
+            
+            btnPrint = new JButton("Create payment report file");
+            btnPrint.addActionListener(this);
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            gbc.gridwidth = 1;
+            gbc.weighty = 0;
+            gbLayout.setConstraints(btnPrint, gbc);
+            this.add(btnPrint);
+            
+            btnAllClockOut = new JButton("Clock out for all staff");
+            btnAllClockOut.addActionListener(this);
+            gbc.gridx = 1;
+            gbc.gridy = 1;
+            gbc.gridwidth = 1;
+            gbc.weighty = 0;
+            gbLayout.setConstraints(btnAllClockOut, gbc);
+            this.add(btnAllClockOut);
+        }
+        
+
+        
+        public void init()
+        {
+            displayArea.setText(rcController.createPaymentList());
+        }
+        
+        public void actionPerformed(ActionEvent ae) {
+            if (ae.getSource() == btnPrint)
+            {
+                String createFineName = rcController.generatePaymentReport();
+                if( createFineName == null)
+                    displayErrorMessage(rcController.getErrorMessage());
+                else
+                    displayMessage(createFineName + " have been generated.");
+            }
+            else if (ae.getSource() == btnAllClockOut)
+            {
+                if (showYesNoDialog("", "Are you sure to meke all staff clocked out?") == DIALOG_YES)
+                {
+                    rcController.clockOutAll();
+                    init();
+                }
+            }
+        }
+    }
+    /****************************************************************
+     * Input validation
+    *****************************************************************/
+    
+    private class IntegerInputVerifier extends InputVerifier{
+        private int state = 0;  //0:no range check 1:min check 2:min and max check
+        private int MAX = 0;
+        private int MIN = 0;
+        
+        public IntegerInputVerifier()
+        {
+            super();
+        }
+        
+        public IntegerInputVerifier(int min)
+        {
+            super();
+            MIN = min;
+            state = 1;
+        }
+        
+        public IntegerInputVerifier(int min, int max)
+        {
+            super();
+            MIN = min;
+            MAX = max;
+            state = 2;
+        }
+        
+        @Override public boolean verify(JComponent c)
+        {
+            JTextField textField = (JTextField)c;
+            boolean result = false;
+            
+            try
+            {
+                int number = Integer.parseInt(textField.getText());
+                
+                switch(state)
+                {
+                    case 0:
+                        result = true;
+                    case 1:
+                        if( number < MIN)
+                        {
+                            //UIManager.getLookAndFeel().provideErrorFeedback(c);
+                            displayErrorMessage("Minimum input is " + MIN);
+                            textField.setBackground( Color.red );
+                            result = false;
+                        }
+                        else
+                        {
+                            textField.setBackground( UIManager.getColor( "TextField.background" ) );  
+                            result = true;
+                        }
+                    break;
+                    case 2:
+                        if( number < MIN)
+                        {
+                            displayErrorMessage("Minimum input is " + MIN);
+                            textField.setBackground( Color.red );
+                            result = false;
+                        }
+                        else
+                        {
+                            if(number > MAX)
+                            {
+                                displayErrorMessage("Maximum input is " + MAX);
+                                textField.setBackground( Color.red );
+                                result = false;
+                            }
+                            else
+                            {
+                                textField.setBackground( UIManager.getColor( "TextField.background" ) );  
+                                result = true;
+                            }
+                        }
+                    break;
+                }
+            }catch(NumberFormatException e) {
+                  displayErrorMessage("Only number is allowed.");
+                  textField.setBackground( Color.red );
+                result = false;
+            }
+            return result;
+        }
+    }
+    
+    private class DoubleInputVerifier extends InputVerifier{
+        private int state = 0;  //0:no range check 1:min check 2:min and max check
+        private double MAX = 0;
+        private double MIN = 0;
+        
+        public DoubleInputVerifier()
+        {
+            super();
+        }
+        
+        public DoubleInputVerifier(double min)
+        {
+            super();
+            MIN = min;
+            state = 1;
+        }
+        
+        public DoubleInputVerifier(double min, double max)
+        {
+            super();
+            MIN = min;
+            MAX = max;
+            state = 2;
+        }
+        
+        @Override public boolean verify(JComponent c)
+        {
+            JTextField textField = (JTextField)c;
+            boolean result = false;
+            
+            try
+            {
+                double number = Double.parseDouble(textField.getText());
+                
+                switch(state)
+                {
+                    case 0:
+                        result = true;
+                    case 1:
+                        if( number < MIN)
+                        {
+                            //UIManager.getLookAndFeel().provideErrorFeedback(c);
+                            displayErrorMessage("Minimum input is " + MIN);
+                            textField.setBackground( Color.red );
+                            result = false;
+                        }
+                        else
+                        {
+                            textField.setBackground( UIManager.getColor( "TextField.background" ) );  
+                            result = true;
+                        }
+                    break;
+                    case 2:
+                        if( number < MIN)
+                        {
+                            displayErrorMessage("Minimum input is " + MIN);
+                            textField.setBackground( Color.red );
+                            result = false;
+                        }
+                        else
+                        {
+                            if(number > MAX)
+                            {
+                                displayErrorMessage("Maximum input is " + MAX);
+                                textField.setBackground( Color.red );
+                                result = false;
+                            }
+                            else
+                            {
+                                textField.setBackground( UIManager.getColor( "TextField.background" ) );  
+                                result = true;
+                            }
+                        }
+                    break;
+                }
+            }catch(NumberFormatException e) {
+                  displayErrorMessage("Only number is allowed.");
+                  textField.setBackground( Color.red );
+                result = false;
+            }
+            return result;
+        }
+    }
+}
diff --git a/Restaurant-management-system/dataFiles/manager.txt b/Restaurant-management-system/dataFiles/manager.txt
new file mode 100644
index 00000000..b6f75add
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/manager.txt
@@ -0,0 +1,2 @@
+7,password,yugesh,verma
+1000,java,Hello,Java
diff --git a/Restaurant-management-system/dataFiles/menu_item.txt b/Restaurant-management-system/dataFiles/menu_item.txt
new file mode 100644
index 00000000..eacf5568
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/menu_item.txt
@@ -0,0 +1,13 @@
+101,Pizza,7.0,1
+102,Mushroom pasta,5.95,1
+103,Meatball pasta,6.5,1
+104,Cheese Ravioli,5.95,1
+200,Milk,3.5,2
+201,Coke,3.5,2
+202,Sprite,3.5,2
+203,Tea,4.0,2
+302,Glass wine red,7.0,3
+303,Bottle wine white,30.0,3
+304,Bottle wine red,30.0,3
+401,Tiramisu,6.0,4
+402,Ice cream,5.0,4
diff --git a/Restaurant-management-system/dataFiles/report_2013_07_24.txt b/Restaurant-management-system/dataFiles/report_2013_07_24.txt
new file mode 100644
index 00000000..8bf99507
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/report_2013_07_24.txt
@@ -0,0 +1,6 @@
+*********** Order List (2013_07_24) ***********
+Order ID:   1  StaffName:Kazunori Hayashi      Total:$35.0 State:1       
+Order ID:   2  StaffName:Kazunori Hayashi      Total:$1315.0 State:1       
+Order ID:   3  StaffName:Kazunori Hayashi      Total:$36.0 State:2       
+-------------------------------------------------------
+Total sales:$1350.0  Canceled:$36.0(1)
diff --git a/Restaurant-management-system/dataFiles/report_2013_07_25.txt b/Restaurant-management-system/dataFiles/report_2013_07_25.txt
new file mode 100644
index 00000000..9871a6b9
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/report_2013_07_25.txt
@@ -0,0 +1,5 @@
+*********** Order List (2013_07_25) ***********
+Order ID:   1  StaffName:Kazunori Hayashi      Total:$93.0 Canceled
+Order ID:   2  StaffName:Kazunori Hayashi      Total:$35.0 
+-------------------------------------------------------
+Total sales:$35.0(1)  Canceled:$93.0(1)
diff --git a/Restaurant-management-system/dataFiles/reports/payment_2013_07_26.txt b/Restaurant-management-system/dataFiles/reports/payment_2013_07_26.txt
new file mode 100644
index 00000000..3472c35c
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/payment_2013_07_26.txt
@@ -0,0 +1,6 @@
+*********** Payment List (2013_07_26) ***********
+Order ID:1111  StaffName:Tesuton test                    Work time:5.0  Pay:67.5
+Order ID:1212  StaffName:Toefl Kirai                     Work time:3.5  Pay:49.0
+Order ID:5555  StaffName:Kazunori Hayashi                Work time:5.5  Pay:110.0
+-------------------------------------------------------
+Total payment:$226.5(3)
diff --git a/Restaurant-management-system/dataFiles/reports/payment_2013_07_29.txt b/Restaurant-management-system/dataFiles/reports/payment_2013_07_29.txt
new file mode 100644
index 00000000..0013818f
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/payment_2013_07_29.txt
@@ -0,0 +1,4 @@
+*********** Payment List (2013_07_29) ***********
+Order ID:5555  StaffName:Kazunori Hayashi                Work time:0.00 Pay:110.00
+-------------------------------------------------------
+Total payment:$110.0(1)
diff --git a/Restaurant-management-system/dataFiles/reports/payment_2013_08_15.txt b/Restaurant-management-system/dataFiles/reports/payment_2013_08_15.txt
new file mode 100644
index 00000000..7023a131
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/payment_2013_08_15.txt
@@ -0,0 +1,6 @@
+*********** Payment List (2013_08_15) ***********
+Order ID:1111  StaffName:Tesuton Testole                 Work time:0.00  Pay:0.00 
+Order ID:1212  StaffName:Toefl Kirai                     Work time:0.00  Pay:0.00 
+Order ID:5555  StaffName:Kazunori Hayashi                Work time:0.00  Pay:110.00
+-------------------------------------------------------
+Total payment:$110.0(3)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_07_24.txt b/Restaurant-management-system/dataFiles/reports/report_2013_07_24.txt
new file mode 100644
index 00000000..8bf99507
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_07_24.txt
@@ -0,0 +1,6 @@
+*********** Order List (2013_07_24) ***********
+Order ID:   1  StaffName:Kazunori Hayashi      Total:$35.0 State:1       
+Order ID:   2  StaffName:Kazunori Hayashi      Total:$1315.0 State:1       
+Order ID:   3  StaffName:Kazunori Hayashi      Total:$36.0 State:2       
+-------------------------------------------------------
+Total sales:$1350.0  Canceled:$36.0(1)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_07_25.txt b/Restaurant-management-system/dataFiles/reports/report_2013_07_25.txt
new file mode 100644
index 00000000..9871a6b9
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_07_25.txt
@@ -0,0 +1,5 @@
+*********** Order List (2013_07_25) ***********
+Order ID:   1  StaffName:Kazunori Hayashi      Total:$93.0 Canceled
+Order ID:   2  StaffName:Kazunori Hayashi      Total:$35.0 
+-------------------------------------------------------
+Total sales:$35.0(1)  Canceled:$93.0(1)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_07_26.txt b/Restaurant-management-system/dataFiles/reports/report_2013_07_26.txt
new file mode 100644
index 00000000..2d89a630
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_07_26.txt
@@ -0,0 +1,7 @@
+*********** Order List (2013_07_26) ***********
+Order ID:   1  StaffName:Tesuton test                    Total:$28.0 
+Order ID:   2  StaffName:Toefl Kirai                     Total:$30.0 
+Order ID:   3  StaffName:Kazunori Hayashi                Total:$14.0 
+Order ID:   4  StaffName:Kazunori Hayashi                Total:$14.0 Canceled
+-------------------------------------------------------
+Total sales:$72.0(3)  Canceled:$14.0(1)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_07_29.txt b/Restaurant-management-system/dataFiles/reports/report_2013_07_29.txt
new file mode 100644
index 00000000..0fb6d0e9
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_07_29.txt
@@ -0,0 +1,3 @@
+*********** Order List (2013_07_29) ***********
+-------------------------------------------------------
+Total sales:$0.0(0)  Canceled:$0.0(0)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_07_30.txt b/Restaurant-management-system/dataFiles/reports/report_2013_07_30.txt
new file mode 100644
index 00000000..8b76f9b4
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_07_30.txt
@@ -0,0 +1,5 @@
+*********** Order List (2013_07_30) ***********
+Order ID:   1  StaffName:Kazunori Hayashi                Total:$38.85 
+Order ID:   2  StaffName:Kazunori Hayashi                Total:$19.50 
+-------------------------------------------------------
+Total sales:$58.35(2)  Canceled:$0.0(0)
diff --git a/Restaurant-management-system/dataFiles/reports/report_2013_08_15.txt b/Restaurant-management-system/dataFiles/reports/report_2013_08_15.txt
new file mode 100644
index 00000000..ecb9dfef
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/reports/report_2013_08_15.txt
@@ -0,0 +1,5 @@
+*********** Order List (2013_08_15) ***********
+Order ID:   1  StaffName:Kazunori Hayashi                Total:$253.95 
+Order ID:   2  StaffName:Kazunori Hayashi                Total:$125.40 
+-------------------------------------------------------
+Total sales:$379.35(2)  Canceled:$0.0(0)
diff --git a/Restaurant-management-system/dataFiles/staff.txt b/Restaurant-management-system/dataFiles/staff.txt
new file mode 100644
index 00000000..715a1272
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/staff.txt
@@ -0,0 +1,7 @@
+1111,password,Tesuton,Testole
+1212,password2,Toefl,Kirai
+1234,password3,Davit,Honbey
+3333,david,David,Gatta
+4321,pass,Isono,Katsuo
+4322,test,test,test
+4444,hogehoge,Hukitsu,Namae
diff --git a/Restaurant-management-system/dataFiles/wage_info.txt b/Restaurant-management-system/dataFiles/wage_info.txt
new file mode 100644
index 00000000..7624e508
--- /dev/null
+++ b/Restaurant-management-system/dataFiles/wage_info.txt
@@ -0,0 +1,9 @@
+7,100.0
+1000,100.0
+1111,13.5
+1212,14.0
+1234,14.25
+3333,13.5
+4321,14.0
+4322,13.5
+4444,14.0
diff --git a/Restaurant-management-system/demo_images/order.jpg b/Restaurant-management-system/demo_images/order.jpg
new file mode 100644
index 00000000..f2a4d2b2
Binary files /dev/null and b/Restaurant-management-system/demo_images/order.jpg differ
diff --git a/Restaurant-management-system/demo_images/showmenu.png b/Restaurant-management-system/demo_images/showmenu.png
new file mode 100644
index 00000000..8e67c242
Binary files /dev/null and b/Restaurant-management-system/demo_images/showmenu.png differ
diff --git a/Restaurant-management-system/images/Logo.jpg b/Restaurant-management-system/images/Logo.jpg
new file mode 100644
index 00000000..86cf81ea
Binary files /dev/null and b/Restaurant-management-system/images/Logo.jpg differ
diff --git a/Restaurant-management-system/images/home.jpg b/Restaurant-management-system/images/home.jpg
new file mode 100644
index 00000000..6c02675b
Binary files /dev/null and b/Restaurant-management-system/images/home.jpg differ
diff --git a/Restaurant-management-system/images/home1.jpg b/Restaurant-management-system/images/home1.jpg
new file mode 100644
index 00000000..6c02675b
Binary files /dev/null and b/Restaurant-management-system/images/home1.jpg differ
diff --git a/Restaurant-management-system/images/home2.jpg b/Restaurant-management-system/images/home2.jpg
new file mode 100644
index 00000000..10eb77d5
Binary files /dev/null and b/Restaurant-management-system/images/home2.jpg differ
diff --git a/Restaurant-management-system/images/home3.jpg b/Restaurant-management-system/images/home3.jpg
new file mode 100644
index 00000000..cf50dc32
Binary files /dev/null and b/Restaurant-management-system/images/home3.jpg differ
diff --git a/Restaurant-management-system/images/home4.jpg b/Restaurant-management-system/images/home4.jpg
new file mode 100644
index 00000000..1a8e47e0
Binary files /dev/null and b/Restaurant-management-system/images/home4.jpg differ
diff --git a/Reversal_Algorithm b/Reversal_Algorithm
new file mode 100644
index 00000000..35ac5724
--- /dev/null
+++ b/Reversal_Algorithm
@@ -0,0 +1,31 @@
+package Algo;
+
+public class Reversal_Algorithm {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		int []arr= {1,2,3,4,5,6,7};
+        int k=3;
+        RotateArray(arr,k);
+        for(int i=0;i<arr.length;i++) {
+        	System.out.print(arr[i]+" ");
+        }
+	}
+	public static void RotateArray(int []arr,int k) {
+    	int n=arr.length;
+    	k=k%n;
+    	Reverse(arr,0,n-1);
+    	Reverse(arr,0,k-1);
+    	Reverse(arr,k,n-1);
+	}
+	public static void Reverse(int []arr,int i,int j) {
+		while(i<j) {
+			int temp=arr[i];
+			arr[i]=arr[j];
+			arr[j]=temp;
+			i++;
+			j--;
+		}
+    }
+
+}
diff --git a/ReverseLinkedList.java b/ReverseLinkedList.java
new file mode 100644
index 00000000..cfaf1544
--- /dev/null
+++ b/ReverseLinkedList.java
@@ -0,0 +1,44 @@
+class ListNode {
+    int val;
+    ListNode next;
+
+    ListNode(int val) {
+        this.val = val;
+    }
+}
+
+public class ReverseLinkedList {
+    public ListNode reverseList(ListNode head) {
+        ListNode prev = null;
+        ListNode current = head;
+
+        while (current != null) {
+            ListNode nextTemp = current.next;
+            current.next = prev;
+            prev = current;
+            current = nextTemp;
+        }
+
+        return prev;
+    }
+
+    public static void main(String[] args) {
+        // Create a sample linked list: 1 -> 2 -> 3 -> 4 -> 5
+        ListNode head = new ListNode(1);
+        head.next = new ListNode(2);
+        head.next.next = new ListNode(3);
+        head.next.next.next = new ListNode(4);
+        head.next.next.next.next = new ListNode(5);
+
+        ReverseLinkedList solution = new ReverseLinkedList();
+        ListNode reversedHead = solution.reverseList(head);
+
+        // Print the reversed linked list: 5 -> 4 -> 3 -> 2 -> 1
+        ListNode current = reversedHead;
+        while (current != null) {
+            System.out.print(current.val + " -> ");
+            current = current.next;
+        }
+        System.out.println("null");
+    }
+}
diff --git a/ReverseWords.java b/ReverseWords.java
new file mode 100644
index 00000000..9e5005d4
--- /dev/null
+++ b/ReverseWords.java
@@ -0,0 +1,27 @@
+// Reverse words in a String without using functions
+ 
+import java.util.Scanner;
+ 
+public class Main {
+  public static void main(String[] args) {
+    Scanner scanner = new Scanner(System.in);
+    System.out.print("Original string : ");
+ 
+    String originalStr = scanner.nextLine();
+    scanner.close();
+ 
+    String words[] = originalStr.split("\\s");
+    String reversedString = "";
+ 
+    //Reverse each word's position
+    for (int i = 0; i < words.length; i++) { 
+            if (i == words.length - 1) 
+              reversedString = words[i] + reversedString; 
+            else
+              reversedString = " " + words[i] + reversedString; 
+        } 
+ 
+    // Displaying the string after reverse
+    System.out.print("Reversed string : " + reversedString);
+  }
+}
diff --git a/Reverse_Linked_List.java b/Reverse_Linked_List.java
new file mode 100644
index 00000000..edb03a52
--- /dev/null
+++ b/Reverse_Linked_List.java
@@ -0,0 +1,23 @@
+/**
+ * Definition for singly-linked list.
+ * public class ListNode {
+ *     int val;
+ *     ListNode next;
+ *     ListNode() {}
+ *     ListNode(int val) { this.val = val; }
+ *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
+ * }
+ */
+
+class Solution {
+    public ListNode reverseList(ListNode head) {
+        ListNode newHead = null;
+        while (head != null) {
+            ListNode next = head.next;
+            head.next = newHead;
+            newHead = head;
+            head = next;
+        }
+        return newHead;
+    }
+}
\ No newline at end of file
diff --git a/Riddle Game/riddle_game.java b/Riddle Game/riddle_game.java
new file mode 100644
index 00000000..1435ca6e
--- /dev/null
+++ b/Riddle Game/riddle_game.java	
@@ -0,0 +1,83 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class RiddleGame extends JFrame {
+    private String[] riddles = {
+        "I speak without a mouth and hear without ears. I have no body, but I come alive with wind. What am I?",
+        "I'm not alive, but I can grow; I don't have lungs, but I need air; I don't have a mouth, but water kills me. What am I?",
+        "I have keys but can't open locks. What am I?",
+        "I am taken from a mine, and shut up in a wooden case, from which I am never released, and yet I am used by almost every person. What am I?",
+        "The more you take, the more you leave behind. What am I?",
+        "I have cities but no houses, forests but no trees, and rivers but no water. What am I?",
+        "I'm tall when I'm young and short when I'm old. What am I?"
+    };
+    private String[] answers = {
+        "An echo",
+        "A fire",
+        "A piano",
+        "Pencil lead (graphite)",
+        "Footsteps",
+        "A map",
+        "A candle"
+    };
+
+    private int currentRiddleIndex = 0;
+    private JLabel riddleLabel;
+    private JTextField answerField;
+    private JButton submitButton;
+
+    public RiddleGame() {
+        setTitle("Riddle Game");
+        setSize(400, 200);
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setLayout(new BorderLayout());
+
+        riddleLabel = new JLabel(riddles[currentRiddleIndex]);
+        answerField = new JTextField(20);
+        submitButton = new JButton("Submit");
+
+        JPanel centerPanel = new JPanel();
+        centerPanel.setLayout(new GridLayout(3, 1));
+        centerPanel.add(riddleLabel);
+        centerPanel.add(answerField);
+        centerPanel.add(submitButton);
+
+        add(centerPanel, BorderLayout.CENTER);
+
+        submitButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                checkAnswer();
+            }
+        });
+    }
+
+    private void checkAnswer() {
+        String userAnswer = answerField.getText().trim().toLowerCase();
+        String correctAnswer = answers[currentRiddleIndex].toLowerCase();
+
+        if (userAnswer.equals(correctAnswer)) {
+            JOptionPane.showMessageDialog(this, "Correct!");
+        } else {
+            JOptionPane.showMessageDialog(this, "Incorrect. Try again.");
+        }
+
+        currentRiddleIndex++;
+        if (currentRiddleIndex < riddles.length) {
+            riddleLabel.setText(riddles[currentRiddleIndex]);
+            answerField.setText("");
+        } else {
+            JOptionPane.showMessageDialog(this, "Congratulations! You've completed all the riddles.");
+            System.exit(0);
+        }
+    }
+
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(() -> {
+            RiddleGame game = new RiddleGame();
+            game.setVisible(true);
+        });
+    }
+}
diff --git a/RiddleQuestGame/game.java b/RiddleQuestGame/game.java
new file mode 100644
index 00000000..3506e2fd
--- /dev/null
+++ b/RiddleQuestGame/game.java
@@ -0,0 +1,38 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class RiddleQuest {
+    public static void main(String[] args) {
+        Random random = new Random();
+        int secretNumber = random.nextInt(100) + 1; // Random number between 1 and 100
+        int attempts = 10; // Number of attempts allowed
+
+        System.out.println("Welcome to the Unknown Hard Game!");
+        System.out.println("You have to guess a number between 1 and 100 in " + attempts + " attempts.");
+
+        Scanner scanner = new Scanner(System.in);
+        int guess;
+        boolean hasGuessedCorrectly = false;
+
+        for (int i = 1; i <= attempts; i++) {
+            System.out.print("Attempt " + i + ": Enter your guess: ");
+            guess = scanner.nextInt();
+
+            if (guess == secretNumber) {
+                hasGuessedCorrectly = true;
+                System.out.println("Congratulations! You've guessed the number.");
+                break;
+            } else if (guess < secretNumber) {
+                System.out.println("The number is higher.");
+            } else {
+                System.out.println("The number is lower.");
+            }
+        }
+
+        if (!hasGuessedCorrectly) {
+            System.out.println("Sorry, you've run out of attempts. The secret number was " + secretNumber + ".");
+        }
+
+        scanner.close();
+    }
+}
diff --git a/RiddleQuestGame/readme.md b/RiddleQuestGame/readme.md
new file mode 100644
index 00000000..fe4e55c2
--- /dev/null
+++ b/RiddleQuestGame/readme.md
@@ -0,0 +1,44 @@
+# Riddle Quest
+
+Welcome to **Riddle Quest**, a challenging number-guessing game in Java!
+
+![Riddle Quest Logo](riddle_quest_logo.png)
+
+## Overview
+
+In Riddle Quest, you'll embark on a journey to solve the ultimate numerical riddle. Your mission is to guess the hidden number within a limited number of attempts. Can you conquer the enigmatic digits?
+
+## How to Play
+
+1. **Prerequisites**: Ensure that you have Java installed on your computer.
+
+2. **Getting Started**:
+   - Compile the `RiddleQuest.java` file:
+     ```bash
+     javac RiddleQuest.java
+     ```
+   - Run the game:
+     ```bash
+     java RiddleQuest
+     ```
+
+3. **Gameplay**:
+   - You have a total of 10 attempts to guess the secret number.
+   - After each guess, you'll receive hints to help you find the correct number.
+   - If you guess the number within the limited attempts, you win the game!
+
+4. **Win or Lose**:
+   - If you successfully guess the number, you'll be crowned the Riddle Quest champion.
+   - If you run out of attempts, the game will reveal the secret number, and you can try again.
+
+5. **Customization**:
+   - You can customize the game by modifying the code. Adjust the range of numbers, the number of attempts, or add unique features to make it your own.
+
+## Screenshots
+
+Include images or gifs of your game in action to make your README more engaging.
+
+## Contributing
+
+Contributions are welcome! If you have ideas for improvements or additional features, feel free to submit a pull request.
+
diff --git a/Rock game b/Rock game
new file mode 100644
index 00000000..d7fc71a6
--- /dev/null
+++ b/Rock game	
@@ -0,0 +1,71 @@
+ import java.util.*;
+ import java.util.Random;
+ class Main{
+     //ROCK PAPER SCISSOR GAME
+     public static void main(String []args){
+         Scanner sc=new Scanner(System.in);
+         Random r=new Random();
+         int a=0,b=0;
+         //a:you,b:computer points
+         System.out.println(" ROCK=0\n SCISSOR=1\n PAPER=2");
+         for(int i=0;i<=5;i++){
+         int x=sc.nextInt();
+         int y=r.nextInt(2);
+          
+         if(x==y){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("DRAW\n PLAY AGAIN");
+             a++;
+             b++;
+         }
+         else if(x==0&&y==1){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("you win\n PLAY AGAIN");
+             a++;
+         }
+         else if(x==0&&y==2){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("computer win\n PLAY AGAIN");
+             b++;
+         }
+         else if(x==1&&y==2){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("you win\n PLAY AGAIN");
+             a++;
+         }
+         else if(y==0&&x==1){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("computer win\n PLAY AGAIN");
+             b++;
+         }
+         else if(y==0&&x==2){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("you win\n PLAY AGAIN");
+             a++;
+         }
+         else if(x==2&&y==1){
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("computer win\n PLAY AGAIN");
+             b++;
+         }
+         else{
+             System.out.println("you:"+x);
+             System.out.println("computer:"+y);
+             System.out.println("invalid");
+         }
+        }
+        if(a>b){
+            System.out.println("\n YOU WIN.");
+        }
+        else{
+             System.out.println("\n COMPUTER WIN.");
+        }
+     }
+ }
diff --git a/RockPaperScissor.js b/RockPaperScissor.js
new file mode 100644
index 00000000..0bd8b3dc
--- /dev/null
+++ b/RockPaperScissor.js
@@ -0,0 +1,46 @@
+import java.util.Scanner;
+import java.util.Random;
+
+public class RockPaperScissors {
+    public static void main(String[] args) {
+        playGame();
+    }
+
+    public static String computerPlay() {
+        String[] choices = {"Rock", "Paper", "Scissors"};
+        Random random = new Random();
+        int randomIndex = random.nextInt(3);
+        return choices[randomIndex];
+    }
+
+    public static String playRound(String playerSelection, String computerSelection) {
+        playerSelection = playerSelection.toLowerCase();
+        computerSelection = computerSelection.toLowerCase();
+
+        if (playerSelection.equals(computerSelection)) {
+            return "It's a tie!";
+        }
+
+        if ((playerSelection.equals("rock") && computerSelection.equals("scissors")) ||
+            (playerSelection.equals("scissors") && computerSelection.equals("paper")) ||
+            (playerSelection.equals("paper") && computerSelection.equals("rock"))) {
+            return "You win! " + playerSelection + " beats " + computerSelection;
+        }
+
+        return "You lose! " + computerSelection + " beats " + playerSelection;
+    }
+
+    public static void playGame() {
+        Scanner scanner = new Scanner(System.in);
+
+        for (int i = 0; i < 5; i++) {
+            System.out.print("Rock, Paper, or Scissors? ");
+            String playerSelection = scanner.nextLine().trim();
+            String computerSelection = computerPlay();
+            String roundResult = playRound(playerSelection, computerSelection);
+            System.out.println(roundResult);
+        }
+
+        scanner.close();
+    }
+}
diff --git a/RockpaperScissorgame.java b/RockpaperScissorgame.java
new file mode 100644
index 00000000..77a491a6
--- /dev/null
+++ b/RockpaperScissorgame.java
@@ -0,0 +1,35 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class Rockpapergame {
+    public static void main(String[] args) {
+
+        Scanner sc= new Scanner(System.in);
+        Random rc = new Random();
+
+        System.out.println("enter  0 for rock, 1 for Paper  and 2 for scissor");
+        int user = sc.nextInt();
+
+        int computer = rc.nextInt(3);
+
+        if (user == computer ) {
+            System.out.println("draw");
+        } else if ( user==0 && computer==1 || user ==1 && computer==2 || user==2 && computer==0){
+            System.out.println("you lost");
+        } else {
+            System.out.println("you win ");
+        }
+    System.out.println("computer chose : " +computer);
+        if (computer==0){
+            System.out.println("computer chose rock");
+        }else if  (computer==1 ) {
+            System.out.println("computer chose paper");
+
+
+        }else {
+            System.out.println("computer chose rock");
+        }
+
+
+    }
+}
diff --git a/Scientific_Calculator.java b/Scientific_Calculator.java
new file mode 100644
index 00000000..e0e3183e
--- /dev/null
+++ b/Scientific_Calculator.java
@@ -0,0 +1,100 @@
+import java.util.Scanner;
+import java.lang.Math;
+
+public class ScientificCalculator {
+
+    private double firstNumber;
+    private double secondNumber;
+    private String operation;
+
+    public ScientificCalculator() {
+        this.firstNumber = 0.0;
+        this.secondNumber = 0.0;
+        this.operation = "";
+    }
+
+    public void setFirstNumber(double firstNumber) {
+        this.firstNumber = firstNumber;
+    }
+
+    public void setSecondNumber(double secondNumber) {
+        this.secondNumber = secondNumber;
+    }
+
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    public double calculate() {
+        double result = 0.0;
+
+        switch (this.operation) {
+            case "+":
+                result = this.firstNumber + this.secondNumber;
+                break;
+            case "-":
+                result = this.firstNumber - this.secondNumber;
+                break;
+            case "*":
+                result = this.firstNumber * this.secondNumber;
+                break;
+            case "/":
+                result = this.firstNumber / this.secondNumber;
+                break;
+            case "^":
+                result = Math.pow(this.firstNumber, this.secondNumber);
+                break;
+            case "sqrt":
+                result = Math.sqrt(this.firstNumber);
+                break;
+            case "sin":
+                result = Math.sin(this.firstNumber);
+                break;
+            case "cos":
+                result = Math.cos(this.firstNumber);
+                break;
+            case "tan":
+                result = Math.tan(this.firstNumber);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid operation");
+        }
+
+        return result;
+    }
+
+    public static void main(String[] args) {
+        ScientificCalculator calculator = new ScientificCalculator();
+
+        // Get the user input
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("Welcome to the scientific calculator!");
+
+        while (true) {
+            System.out.println("Enter the first number: ");
+            calculator.setFirstNumber(scanner.nextDouble());
+
+            System.out.println("Enter the second number: ");
+            calculator.setSecondNumber(scanner.nextDouble());
+
+            System.out.println("Enter the operation (+, -, *, /, ^, sqrt, sin, cos, tan): ");
+            calculator.setOperation(scanner.next());
+
+            // Calculate the result
+            double result = calculator.calculate();
+
+            // Display the result
+            System.out.println("The result is: " + result);
+
+            System.out.println("Do you want to continue? (y/n)");
+            String answer = scanner.next();
+
+            if (answer.equalsIgnoreCase("n")) {
+                break;
+            }
+        }
+
+        scanner.close();
+    }
+}
diff --git a/Serialization.java b/Serialization.java
new file mode 100644
index 00000000..ce490df7
--- /dev/null
+++ b/Serialization.java
@@ -0,0 +1,33 @@
+import java.io.*;
+
+class Student implements Serializable {
+    String name;
+    int age;
+
+    Student(String name, int age) {
+        this.name = name;
+        this.age = age;
+    }
+}
+
+public class SerializationDemo {
+    public static void main(String[] args) {
+        try {
+            Student student = new Student("Alice", 20);
+
+            // Serialization
+            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("student.ser"));
+            out.writeObject(student);
+            out.close();
+
+            // Deserialization
+            ObjectInputStream in = new ObjectInputStream(new FileInputStream("student.ser"));
+            Student deserializedStudent = (Student) in.readObject();
+            in.close();
+
+            System.out.println("Deserialized Student: Name - " + deserializedStudent.name + ", Age - " + deserializedStudent.age);
+        } catch (IOException | ClassNotFoundException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/ShipingCostCalculator.java b/ShipingCostCalculator.java
new file mode 100644
index 00000000..77efd5d3
--- /dev/null
+++ b/ShipingCostCalculator.java
@@ -0,0 +1,45 @@
+import java.util.Scanner;
+
+public class ShipingCostCalculator {
+    public static void main(String[] args)
+    {
+
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("Enter the weight of your package (kg) : \t ");
+        double weight = scanner.nextDouble();
+
+        System.out.println("Select a shipping method:");
+        System.out.println("1. Standard Shipping");
+        System.out.println("2. Express Shipping");
+        int shippingMethod = scanner.nextInt();
+
+
+        double cost;
+        switch (shippingMethod) {
+            case 1:
+                cost = weight * 5.0; // Standard shipping rate
+                break;
+            case 2:
+                cost = weight * 10.0; // Express shipping rate
+                break;
+            default:
+                System.out.println("Invalid shipping method.");
+                return;
+        }
+
+        System.out.println("Shipping cost: $" + cost);
+
+        scanner.close();
+    }
+
+
+
+
+
+
+
+
+    }
+
+
+
diff --git a/Simple Adventure Game/main.java b/Simple Adventure Game/main.java
new file mode 100644
index 00000000..00117c8e
--- /dev/null
+++ b/Simple Adventure Game/main.java	
@@ -0,0 +1,102 @@
+import java.util.Scanner;
+
+public class TextAdventure {
+
+    private static final Scanner scanner = new Scanner(System.in);
+
+    private static Room currentRoom;
+
+    public static void main(String[] args) {
+        currentRoom = new Room("Starting room");
+
+        gameLoop();
+    }
+
+    private static void gameLoop() {
+        while (true) {
+            System.out.println("You are in " + currentRoom.getName());
+            System.out.println("What do you want to do?");
+
+            String command = scanner.nextLine();
+
+            switch (command) {
+                case "go north":
+                    currentRoom = currentRoom.getNorthRoom();
+                    break;
+                case "go south":
+                    currentRoom = currentRoom.getSouthRoom();
+                    break;
+                case "go east":
+                    currentRoom = currentRoom.getEastRoom();
+                    break;
+                case "go west":
+                    currentRoom = currentRoom.getWestRoom();
+                    break;
+                case "examine":
+                    System.out.println(currentRoom.getDescription());
+                    break;
+                default:
+                    System.out.println("I don't understand that command.");
+            }
+        }
+    }
+
+    private static class Room {
+
+        private final String name;
+        private final String description;
+        private final Room northRoom;
+        private final Room southRoom;
+        private final Room eastRoom;
+        private final Room westRoom;
+
+        public Room(String name) {
+            this.name = name;
+            this.description = "";
+            this.northRoom = null;
+            this.southRoom = null;
+            this.eastRoom = null;
+            this.westRoom = null;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public String getDescription() {
+            return description;
+        }
+
+        public Room getNorthRoom() {
+            return northRoom;
+        }
+
+        public Room getSouthRoom() {
+            return southRoom;
+        }
+
+        public Room getEastRoom() {
+            return eastRoom;
+        }
+
+        public Room getWestRoom() {
+            return westRoom;
+        }
+
+        public void setNorthRoom(Room northRoom) {
+            this.northRoom = northRoom;
+        }
+
+        public void setSouthRoom(Room southRoom) {
+            this.southRoom = southRoom;
+        }
+
+        public void setEastRoom(Room eastRoom) {
+            this.eastRoom = eastRoom;
+        }
+
+        public void setWestRoom(Room westRoom) {
+            this.westRoom = westRoom;
+        }
+    }
+}
diff --git a/Simple-Plagiarism-Checker-Project/README.md b/Simple-Plagiarism-Checker-Project/README.md
new file mode 100644
index 00000000..2ab5a87e
--- /dev/null
+++ b/Simple-Plagiarism-Checker-Project/README.md
@@ -0,0 +1,16 @@
+# Simple-Plagiarism-Checker
+
+Web application of Plagiarism Checker using Python-Flask. TF-IDF and cosine similarity is a very common technique. It allows the system to quickly retrieve documents similar to a search query. Similarly, based on the same concept instead of retrieving documents similar to a query, it checks for how similar the query is to the existing database file. 
+
+## Steps:
+1. User enters a query
+2. Query gets processed (Uppercase to lowercase, Removal of punctuationmarks, etc.)
+3. Calculations are done (Term Frequency, Cosine Similarity)
+4. The Plagiarism Percentage is returned on the web page
+
+## Python-Flask
+1. Flask is a light-weight web framework for Python
+2. Easy to  work with (Same syntax as of Python)
+3. While Flask addresses itself as a "micro-framework", it is not lacking in features or power, especially with a clutch of extensions to support features such as authentication, databases and so on
+4. Comprehensive documentation available
+
diff --git a/Simple-Plagiarism-Checker-Project/plag.py b/Simple-Plagiarism-Checker-Project/plag.py
new file mode 100644
index 00000000..f426935c
--- /dev/null
+++ b/Simple-Plagiarism-Checker-Project/plag.py
@@ -0,0 +1,96 @@
+from flask import Flask, request, render_template
+import re
+import math
+
+app = Flask("__name__")
+
+q = ""
+
+@app.route("/")
+def loadPage():
+	return render_template('index.html', query="")
+
+@app.route("/", methods=['POST'])
+def cosineSimilarity():
+	try:
+		universalSetOfUniqueWords = []
+		matchPercentage = 0
+    	
+		####################################################################################################
+		
+		inputQuery = request.form['query']
+		lowercaseQuery = inputQuery.lower()
+    	
+		queryWordList = re.sub("[^\w]", " ",lowercaseQuery).split()			#Replace punctuation by space and split
+		# queryWordList = map(str, queryWordList)					#This was causing divide by zero error
+    	
+		for word in queryWordList:
+			if word not in universalSetOfUniqueWords:
+				universalSetOfUniqueWords.append(word)
+    	
+		####################################################################################################
+    	
+		fd = open("database1.txt", "r")
+		database1 = fd.read().lower()
+    	
+		databaseWordList = re.sub("[^\w]", " ",database1).split()	#Replace punctuation by space and split
+		# databaseWordList = map(str, databaseWordList)			#And this also leads to divide by zero error
+    	
+		for word in databaseWordList:
+			if word not in universalSetOfUniqueWords:
+				universalSetOfUniqueWords.append(word)
+    	
+		####################################################################################################
+    	
+		queryTF = []
+		databaseTF = []
+    	
+		for word in universalSetOfUniqueWords:
+			queryTfCounter = 0
+			databaseTfCounter = 0
+    	
+			for word2 in queryWordList:
+				if word == word2:
+					queryTfCounter += 1
+			queryTF.append(queryTfCounter)
+    	
+			for word2 in databaseWordList:
+				if word == word2:
+					databaseTfCounter += 1
+			databaseTF.append(databaseTfCounter)
+    	
+		dotProduct = 0
+		for i in range (len(queryTF)):
+			dotProduct += queryTF[i]*databaseTF[i]
+    	
+		queryVectorMagnitude = 0
+		for i in range (len(queryTF)):
+			queryVectorMagnitude += queryTF[i]**2
+		queryVectorMagnitude = math.sqrt(queryVectorMagnitude)
+    	
+		databaseVectorMagnitude = 0
+		for i in range (len(databaseTF)):
+			databaseVectorMagnitude += databaseTF[i]**2
+		databaseVectorMagnitude = math.sqrt(databaseVectorMagnitude)
+    	
+		matchPercentage = (float)(dotProduct / (queryVectorMagnitude * databaseVectorMagnitude))*100
+    	
+		'''
+		print queryWordList
+		print
+		print databaseWordList
+    	
+    	
+		print queryTF
+		print
+		print databaseTF
+		'''
+    	
+		output = "Input query text matches %0.02f%% with database."%matchPercentage
+    	
+		return render_template('index.html', query=inputQuery, output=output)
+	except Exception as e:
+		output = "Please Enter Valid Data"
+		return render_template('index.html', query=inputQuery, output=output)
+
+app.run()
diff --git a/Simple-Plagiarism-Checker-Project/req.txt b/Simple-Plagiarism-Checker-Project/req.txt
new file mode 100644
index 00000000..aaf36088
--- /dev/null
+++ b/Simple-Plagiarism-Checker-Project/req.txt
@@ -0,0 +1,6 @@
+click==8.1.3
+Flask==2.1.2
+itsdangerous==2.1.2
+Jinja2==3.1.2
+MarkupSafe==2.1.1
+Werkzeug==2.1.2
diff --git a/Simple-Plagiarism-Checker-Project/templates/index.html b/Simple-Plagiarism-Checker-Project/templates/index.html
new file mode 100644
index 00000000..01de2fc4
--- /dev/null
+++ b/Simple-Plagiarism-Checker-Project/templates/index.html
@@ -0,0 +1,13 @@
+<home>
+   <body>
+      <title>Plagiarism Checker</title>
+      <form action="http://localhost:5000" method="POST">
+         <p>Input Text : </p>
+         <p><textarea name="query" rows="8" cols="50" autofocus>{{query}}</textarea></p>
+         <br>
+         <p><input type="submit" name="submit" value="CHECK PLAGIARISM"></p>
+         <br>
+         <p><h3>{{output}}</h3></p>
+      </form>
+   </body>
+</home>
\ No newline at end of file
diff --git a/Software Piracy Control/nbproject/private/profiler/ResetResultsProfilingPoint.pp b/Software Piracy Control/nbproject/private/profiler/ResetResultsProfilingPoint.pp
deleted file mode 100644
index 7a4771b7..00000000
--- a/Software Piracy Control/nbproject/private/profiler/ResetResultsProfilingPoint.pp	
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties>
-<entry key="0_p_name">Reset Results 1 at gg:31</entry>
-<entry key="2_p_location_line">31</entry>
-<entry key="1_p_enabled">true</entry>
-<entry key="1_p_location_file">{$projectDirectory}/src/gg.java</entry>
-<entry key="0_p_location_file">{$projectDirectory}/src/gg.java</entry>
-<entry key="1_p_location_offset">2147483647</entry>
-<entry key="2_p_location_file">{$projectDirectory}/src/gg.java</entry>
-<entry key="0_p_enabled">false</entry>
-<entry key="2_p_location_offset">2147483647</entry>
-<entry key="2_p_name">fg</entry>
-<entry key="2_p_enabled">true</entry>
-<entry key="1_p_location_line">31</entry>
-<entry key="1_p_name">Reset Results at gg:31</entry>
-<entry key="0_p_location_line">31</entry>
-<entry key="0_p_location_offset">2147483647</entry>
-</properties>
diff --git a/SortingAlgos.java b/SortingAlgos.java
new file mode 100644
index 00000000..25af8c88
--- /dev/null
+++ b/SortingAlgos.java
@@ -0,0 +1,345 @@
+import java.util.Arrays;
+import java.util.Scanner;
+
+public class SortingProgram {
+    public static void main(String[] args) {
+        Scanner input = new Scanner(System.in);
+
+        // Input array from the user
+        System.out.print("Enter the number of elements in the array: ");
+        int n = input.nextInt();
+        int[] arr = new int[n];
+
+        System.out.println("Enter the elements of the array:");
+        for (int i = 0; i < n; i++) {
+            arr[i] = input.nextInt();
+        }
+
+        // Choose a sorting algorithm
+        System.out.println("\nChoose a sorting algorithm (1-10):");
+        System.out.println("1- Selection sort");
+        System.out.println("2- Bubble sort");
+        System.out.println("3- Insertion sort");
+        System.out.println("4- Merge sort");
+        System.out.println("5- Quick sort");
+        System.out.println("6- Heap sort");
+        System.out.println("7- Counting sort");
+        System.out.println("8- Radix sort");
+        System.out.println("9- Bucket Sort");
+        System.out.println("10- Shell Sort");
+        System.out.print("Enter your choice: ");
+        int choice = input.nextInt();
+
+        switch (choice) {
+            case 1:
+                selectionSort(arr);
+                break;
+            case 2:
+                bubbleSort(arr);
+                break;
+            case 3:
+                insertionSort(arr);
+                break;
+            case 4:
+                mergeSort(arr);
+                break;
+            case 5:
+                quickSort(arr, 0, n - 1);
+                break;
+            case 6:
+                heapSort(arr);
+                break;
+            case 7:
+                countingSort(arr);
+                break;
+            case 8:
+                radixSort(arr);
+                break;
+            case 9:
+                bucketSort(arr);
+                break;
+            case 10:
+                shellSort(arr);
+                break;
+            default:
+                System.out.println("Invalid choice. No sorting performed.");
+        }
+
+        // Print the sorted array
+        System.out.println("Sorted array: " + Arrays.toString(arr));
+    }
+
+    // Selection Sort
+    public static void selectionSort(int[] arr) {
+        int n = arr.length;
+        for (int i = 0; i < n - 1; i++) {
+            int minIndex = i;
+            for (int j = i + 1; j < n; j++) {
+                if (arr[j] < arr[minIndex]) {
+                    minIndex = j;
+                }
+            }
+            int temp = arr[minIndex];
+            arr[minIndex] = arr[i];
+            arr[i] = temp;
+        }
+    }
+
+    // Bubble Sort
+    public static void bubbleSort(int[] arr) {
+        int n = arr.length;
+        boolean swapped;
+        for (int i = 0; i < n - 1; i++) {
+            swapped = false;
+            for (int j = 0; j < n - i - 1; j++) {
+                if (arr[j] > arr[j + 1]) {
+                    int temp = arr[j];
+                    arr[j] = arr[j + 1];
+                    arr[j + 1] = temp;
+                    swapped = true;
+                }
+            }
+            if (!swapped) {
+                break;
+            }
+        }
+    }
+
+    // Insertion Sort
+    public static void insertionSort(int[] arr) {
+        int n = arr.length;
+        for (int i = 1; i < n; i++) {
+            int key = arr[i];
+            int j = i - 1;
+            while (j >= 0 && arr[j] > key) {
+                arr[j + 1] = arr[j];
+                j--;
+            }
+            arr[j + 1] = key;
+        }
+    }
+
+    // Merge Sort
+    public static void mergeSort(int[] arr) {
+        mergeSort(arr, 0, arr.length - 1);
+    }
+
+    private static void mergeSort(int[] arr, int left, int right) {
+        if (left < right) {
+            int mid = (left + right) / 2;
+            mergeSort(arr, left, mid);
+            mergeSort(arr, mid + 1, right);
+            merge(arr, left, mid, right);
+        }
+    }
+
+    private static void merge(int[] arr, int left, int mid, int right) {
+        int n1 = mid - left + 1;
+        int n2 = right - mid;
+        int[] L = new int[n1];
+        int[] R = new int[n2];
+
+        for (int i = 0; i < n1; i++) {
+            L[i] = arr[left + i];
+        }
+        for (int i = 0; i < n2; i++) {
+            R[i] = arr[mid + 1 + i];
+        }
+
+        int i = 0, j = 0, k = left;
+        while (i < n1 && j < n2) {
+            if (L[i] <= R[j]) {
+                arr[k] = L[i];
+                i++;
+            } else {
+                arr[k] = R[j];
+                j++;
+            }
+            k++;
+        }
+
+        while (i < n1) {
+            arr[k] = L[i];
+            i++;
+            k++;
+        }
+
+        while (j < n2) {
+            arr[k] = R[j];
+            j++;
+            k++;
+        }
+    }
+
+    // Quick Sort
+    public static void quickSort(int[] arr, int low, int high) {
+        if (low < high) {
+            int pivotIndex = partition(arr, low, high);
+            quickSort(arr, low, pivotIndex - 1);
+            quickSort(arr, pivotIndex + 1, high);
+        }
+    }
+
+    private static int partition(int[] arr, int low, int high) {
+        int pivot = arr[high];
+        int i = low - 1;
+        for (int j = low; j < high; j++) {
+            if (arr[j] < pivot) {
+                i++;
+                int temp = arr[i];
+                arr[i] = arr[j];
+                arr[j] = temp;
+            }
+        }
+        int temp = arr[i + 1];
+        arr[i + 1] = arr[high];
+        arr[high] = temp;
+        return i + 1;
+    }
+
+    // Heap Sort
+    public static void heapSort(int[] arr) {
+        int n = arr.length;
+        for (int i = n / 2 - 1; i >= 0; i--) {
+            heapify(arr, n, i);
+        }
+        for (int i = n - 1; i >= 0; i--) {
+            int temp = arr[0];
+            arr[0] = arr[i];
+            arr[i] = temp;
+            heapify(arr, i, 0);
+        }
+    }
+
+    private static void heapify(int[] arr, int n, int i) {
+        int largest = i;
+        int left = 2 * i + 1;
+        int right = 2 * i + 2;
+
+        if (left < n && arr[left] > arr[largest]) {
+            largest = left;
+        }
+        if (right < n && arr[right] > arr[largest]) {
+            largest = right;
+        }
+
+        if (largest != i) {
+            int swap = arr[i];
+            arr[i] = arr[largest];
+            arr[largest] = swap;
+            heapify(arr, n, largest);
+        }
+    }
+
+    // Counting Sort
+    public static void countingSort(int[] arr) {
+        int n = arr.length;
+        int max = Arrays.stream(arr).max().getAsInt();
+        int min = Arrays.stream(arr).min().getAsInt();
+        int range = max - min + 1;
+        int[] count = new int[range];
+        int[] output = new int[n];
+
+        for (int i = 0; i < n; i++) {
+            count[arr[i] - min]++;
+        }
+
+        for (int i = 1; i < range; i++) {
+            count[i] += count[i - 1];
+        }
+
+        for (int i = n - 1; i >= 0; i--) {
+            output[count[arr[i] - min] - 1] = arr[i];
+            count[arr[i] - min]--;
+        }
+
+        for (int i = 0; i < n; i++) {
+            arr[i] = output[i];
+        }
+    }
+
+    // Radix Sort
+    public static void radixSort(int[] arr) {
+        int max = Arrays.stream(arr).max().getAsInt();
+        for (int exp = 1; max / exp > 0; exp *= 10) {
+            countingSortByDigit(arr, exp);
+        }
+    }
+
+    private static void countingSortByDigit(int[] arr, int exp) {
+        int n = arr.length;
+        int[] output = new int[n];
+        int[] count = new int[10];
+        Arrays.fill(count, 0);
+
+        for (int i = 0; i < n; i++) {
+            count[(arr[i] / exp) % 10]++;
+        }
+
+        for (int i = 1; i < 10; i++) {
+            count[i] += count[i - 1];
+        }
+
+        for (int i = n - 1; i >= 0; i--) {
+            output[count[(arr[i] / exp) % 10] - 1] = arr[i];
+            count[(arr[i] / exp) % 10]--;
+        }
+
+        for (int i = 0; i < n; i++) {
+            arr[i] = output[i];
+        }
+    }
+
+    // Bucket Sort
+    public static void bucketSort(int[] arr) {
+        int n = arr.length;
+        int max = Arrays.stream(arr).max().getAsInt();
+        int min = Arrays.stream(arr).min().getAsInt();
+        int range = max - min + 1;
+
+        int bucketSize = Math.min(range / n, n);
+        int bucketCount = (range + bucketSize - 1) / bucketSize;
+
+        // Create buckets
+        int[][] buckets = new int[bucketCount][];
+        for (int i = 0; i < bucketCount; i++) {
+            buckets[i] = new int[0];
+        }
+
+        // Add elements to buckets
+        for (int i = 0; i < n; i++) {
+            int index = (arr[i] - min) / bucketSize;
+            buckets[index] = append(buckets[index], arr[i]);
+        }
+
+        // Sort individual buckets and merge
+        int index = 0;
+        for (int i = 0; i < bucketCount; i++) {
+            insertionSort(buckets[i]);
+            for (int j = 0; j < buckets[i].length; j++) {
+                arr[index++] = buckets[i][j];
+            }
+        }
+    }
+
+    private static int[] append(int[] arr, int value) {
+        int[] result = Arrays.copyOf(arr, arr.length + 1);
+        result[arr.length] = value;
+        return result;
+    }
+
+    // Shell Sort
+    public static void shellSort(int[] arr) {
+        int n = arr.length;
+        for (int gap = n / 2; gap > 0; gap /= 2) {
+            for (int i = gap; i < n; i++) {
+                int temp = arr[i];
+                int j;
+                for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
+                    arr[j] = arr[j - gap];
+                }
+                arr[j] = temp;
+            }
+        }
+    }
+}
diff --git a/Sparse_Array.java b/Sparse_Array.java
new file mode 100644
index 00000000..ba30edbf
--- /dev/null
+++ b/Sparse_Array.java
@@ -0,0 +1,74 @@
+import java.io.*;
+import java.math.*;
+import java.security.*;
+import java.text.*;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.regex.*;
+import java.util.stream.*;
+import static java.util.stream.Collectors.joining;
+import static java.util.stream.Collectors.toList;
+
+class Result {
+
+
+public static List<Integer> matchingStrings(List<String> strings, List<String> queries) {
+
+    List<Integer> result = new ArrayList<Integer>();
+        for (int i = 0; i < queries.size(); i++) {
+            int count = 0;
+            for (int j = 0; j < strings.size(); j++) {
+                if(queries.get(i).equals(strings.get(j))){
+                    count++;
+                }
+            }
+            result.add(count);
+        }
+        return result;
+    }
+
+
+
+}
+
+public class Solution {
+    public static void main(String[] args) throws IOException {
+        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
+        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
+
+        int stringsCount = Integer.parseInt(bufferedReader.readLine().trim());
+
+        List<String> strings = IntStream.range(0, stringsCount).mapToObj(i -> {
+            try {
+                return bufferedReader.readLine();
+            } catch (IOException ex) {
+                throw new RuntimeException(ex);
+            }
+        })
+            .collect(toList());
+
+        int queriesCount = Integer.parseInt(bufferedReader.readLine().trim());
+
+        List<String> queries = IntStream.range(0, queriesCount).mapToObj(i -> {
+            try {
+                return bufferedReader.readLine();
+            } catch (IOException ex) {
+                throw new RuntimeException(ex);
+            }
+        })
+            .collect(toList());
+
+        List<Integer> res = Result.matchingStrings(strings, queries);
+
+        bufferedWriter.write(
+            res.stream()
+                .map(Object::toString)
+                .collect(joining("\n"))
+            + "\n"
+        );
+
+        bufferedReader.close();
+        bufferedWriter.close();
+    }
+}
diff --git a/Spider-Man game b/Spider-Man game
new file mode 100644
index 00000000..ee88d824
--- /dev/null
+++ b/Spider-Man game	
@@ -0,0 +1,119 @@
+import java.awt.Graphics;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+public class SpiderManGame extends javax.swing.JFrame implements KeyListener {
+
+    private SpiderMan spiderman;
+
+    public SpiderManGame() {
+        initComponents();
+
+        spiderman = new SpiderMan(200, 200);
+
+        addKeyListener(this);
+    }
+
+    private void initComponents() {
+        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+        setSize(400, 400);
+        setTitle("Spider-Man Game");
+    }
+
+    @Override
+    public void paint(Graphics g) {
+        super.paint(g);
+
+        spiderman.draw(g);
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        int keyCode = e.getKeyCode();
+
+        switch (keyCode) {
+            case KeyEvent.VK_LEFT:
+                spiderman.moveLeft();
+                break;
+            case KeyEvent.VK_RIGHT:
+                spiderman.moveRight();
+                break;
+            case KeyEvent.VK_UP:
+                spiderman.jump();
+                break;
+            case KeyEvent.VK_SPACE:
+                spiderman.shootWeb();
+                break;
+        }
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+        int keyCode = e.getKeyCode();
+
+        switch (keyCode) {
+            case KeyEvent.VK_LEFT:
+                spiderman.stopMovingLeft();
+                break;
+            case KeyEvent.VK_RIGHT:
+                spiderman.stopMovingRight();
+                break;
+            case KeyEvent.VK_SPACE:
+                spiderman.stopShootingWeb();
+                break;
+        }
+    }
+
+    @Override
+    public void keyTyped(KeyEvent e) {
+    }
+
+    public static void main(String[] args) {
+        new SpiderManGame().setVisible(true);
+    }
+}
+
+class SpiderMan {
+
+    private int x;
+    private int y;
+    private int speed;
+
+    public SpiderMan(int x, int y) {
+        this.x = x;
+        this.y = y;
+        speed = 5;
+    }
+
+    public void draw(Graphics g) {
+        g.fillRect(x, y, 10, 10);
+    }
+
+    public void moveLeft() {
+        x -= speed;
+    }
+
+    public void moveRight() {
+        x += speed;
+    }
+
+    public void jump() {
+        y -= speed;
+    }
+
+    public void shootWeb() {
+        // TODO: Implement web shooting
+    }
+
+    public void stopMovingLeft() {
+        // TODO: Implement stop moving left
+    }
+
+    public void stopMovingRight() {
+        // TODO: Implement stop moving right
+    }
+
+    public void stopShootingWeb() {
+        // TODO: Implement stop shooting web
+    }
+}
diff --git a/StringArray.java b/StringArray.java
new file mode 100644
index 00000000..690c8b0d
--- /dev/null
+++ b/StringArray.java
@@ -0,0 +1,19 @@
+public class StringComparison {  
+ public static void main(String a[]){  
+            String str = "JavaTpoint is a great website to acquire knowledge";  
+                StringBuffer obj =  
+            new StringBuffer("JavaTpoint is a great website to acquire knowledge");  
+        if(str.contentEquals(obj)){  
+            System.out.println("The content of the string is equal");  
+        } else {  
+            System.out.println("The content of the string is not equal");  
+        }  
+        StringBuffer obj1 =  
+            new StringBuffer("It is another string");  
+        if(str.contentEquals(obj1)){  
+            System.out.println("The content of the string is equal");  
+        } else {  
+            System.out.println("The content of the string is not equal");  
+        }  
+    }  
+}  
diff --git a/Student Management System/App.java b/Student Management System/App.java
new file mode 100644
index 00000000..3b84a0ed
--- /dev/null
+++ b/Student Management System/App.java	
@@ -0,0 +1,251 @@
+import java.util.*;
+import packages.system.*;
+import packages.fileHandler.*;
+
+    // ---------------------------------------------- MAIN FUNCTION ----------------------------------------------
+
+public class App {
+    public static void main(String[] args) {
+        System.out.println("\n\t------------ WELCOME TO STUDENT MANAGEMENT SYSTEM ------------\n");
+        Scanner scanner = new Scanner(System.in);
+        StudentSystem system = new StudentSystem();
+
+        while (true) {
+            System.out.println("Choose an option:");
+            System.out.println(" 1. Add Student.");
+            System.out.println(" 2. Remove Student.");
+            System.out.println(" 3. Update Student.");
+            System.out.println(" 4. Search Student by ID.");
+            System.out.println(" 5. List and Sort Students.");
+            System.out.println(" 6. Filter Students.");
+            System.out.println(" 7. Count Total Students.");
+            System.out.println(" 8. Calculate Average GPA.");
+            System.out.println(" 9. Display Top 5 Students.");
+            System.out.println(" 10. Display Failing Students.");
+            System.out.println(" 11. Generate Summary.");
+            System.out.println(" 0. Exit Application.");
+
+            int choice = InputValidator.inputValidChoice(scanner);
+            System.out.println();
+
+            switch (choice) {
+                case 1:     // Add Student
+                    while (true) {
+                        System.out.println("Choose an option to add student:");
+                        System.out.println(" 1. Add Student from CSV File.");
+                        System.out.println(" 2. Add Student Manually.");
+                        System.out.println(" 0. Exit Add Student.");
+
+                        int addChoice = InputValidator.inputValidChoice(scanner);
+
+                        if (addChoice == 0) {       // Exit Add Student
+                            System.out.println();
+                            break;
+                        }
+
+                        switch (addChoice) {
+                            case 1:         // Add Student from CSV File
+                                system.mergeStudentSystem(CsvFileHandler.readCsvFile());
+                                break;
+
+                            case 2:         // Add Student Manually
+                                String name = InputValidator.addUniqueName(scanner, system);
+                                int id = InputValidator.addUniqueID(scanner, system);
+                                double gpa = InputValidator.inputValidGPA(scanner);
+                                String year = InputValidator.inputValidYear(scanner);
+                                String department = InputValidator.inputValidDepartment(scanner);
+
+                                if (year.equals("First") || year.equals("Second")) department = "General";
+
+                                system.addStudent(name, id, gpa, year, department, false);
+                                break;
+
+                            default:        // Invalid choice
+                                System.out.println("Invalid choice, please try again.");
+                        }
+                    }
+                    break;
+
+                case 2:             // Remove Student
+                    int removeID = InputValidator.inputValidID(scanner);
+                    system.removeStudentByID(removeID);
+                    break;
+
+                case 3:             // Update Student
+                    int updateID = InputValidator.inputValidID(scanner);
+
+                    while (true) {
+                        System.out.println("Choose an option to update:");
+                        System.out.println(" 1. Student's Name.");
+                        System.out.println(" 2. Student's GPA.");
+                        System.out.println(" 3. Student's Year.");
+                        System.out.println(" 4. Student's Department.");
+                        System.out.println(" 0. Exit Update.");
+
+                        int updateChoice = InputValidator.inputValidChoice(scanner);
+                        if (updateChoice == 0) {        // Exit Update
+                            System.out.println();
+                            break;
+                        }
+
+                        switch (updateChoice) {
+                            case 1:             // Update Student's Name
+                                String newName = InputValidator.addUniqueName(scanner, system);
+                                system.updateStudentByID(updateID, newName, -1, null, null);
+                                break;
+
+                            case 2:             // Update Student's GPA
+                                double newGPA = InputValidator.inputValidGPA(scanner);
+                                scanner.nextLine();
+                                system.updateStudentByID(updateID, null, newGPA, null, null);
+                                break;
+
+                            case 3:             // Update Student's Year
+                                String newYear = InputValidator.inputValidYear(scanner);
+                                scanner.nextLine();
+                                system.updateStudentByID(updateID, null, -1, newYear, null);
+                                break;
+
+                            case 4:             // Update Student's Department
+                                String newDepartment = InputValidator.inputValidDepartment(scanner);
+                                scanner.nextLine();
+                                system.updateStudentByID(updateID, null, -1, null, newDepartment);
+                                break;
+
+                            default:            // Invalid choice
+                                System.out.println("Invalid choice, please try again.");
+                        }
+                    }
+
+                    break;
+
+                case 4:             // Search Student by ID
+                    int searchID = InputValidator.inputValidID(scanner);
+                    system.searchByID(searchID);
+                    break;
+
+                case 5:             // List and Sort Students
+                    while (true) {
+                        System.out.println("Output all students in:");
+                        System.out.println(" 1. The Console.");
+                        System.out.println(" 2. A File.");
+                        System.out.println(" 0. Exit List and Sort.");
+
+                        int outputChoice = InputValidator.inputValidChoice(scanner);
+
+                        if (outputChoice == 0) {            // Exit List and Sort
+                            System.out.println();
+                            break;
+                        }
+
+                        else if (outputChoice == 1) {       // Output in the Console
+                            System.out.print("Enter sorting criteria (GPA, ID, Name, Year): ");
+                            String sortBy = scanner.nextLine();
+
+                            while (!sortBy.matches("GPA|ID|Name|Year")) {
+                                System.out.println("Invalid input. Please enter a valid sorting criteria.");
+                                System.out.print("Enter sorting criteria (GPA, ID, Name, Year): ");
+                                sortBy = scanner.nextLine();
+                            }
+
+                            system.listAndSortAllStudents(sortBy);
+                            break;
+                        }
+
+                        else if (outputChoice == 2) {       // Output in a File (CSV)
+                            CsvFileHandler.writeCsvFile(system);
+                            break;
+                        }
+
+                        else System.out.println("Invalid choice, please try again.\n");      // Invalid choice
+                    }
+                    break;
+
+                case 6:             // Filter Students
+                    System.out.print("Choose an option to filter (GPA - Year - Department): ");
+                    String filterChoice = scanner.nextLine();
+
+                    while (!filterChoice.matches("GPA|Year|Department")) {
+                        System.out.println("Invalid input. Please enter a valid year.");
+                        System.out.print("Choose an option to filter (Age - GPA - Year - Department): ");
+                        filterChoice = scanner.nextLine();
+                    }
+
+                    switch (filterChoice) {
+                        case "GPA":
+                            double filterGPA = InputValidator.inputValidGPA(scanner);
+                            System.out.println();
+                            system.filterByGPA(filterGPA);
+                            break;
+
+                        case "Year":
+                            String filterYear = InputValidator.inputValidYear(scanner);
+                            System.out.println();
+                            system.filterByYear(filterYear);
+                            break;
+
+                        case "Department":
+                            String filterDepartment = InputValidator.inputValidDepartment(scanner);
+                            System.out.println();
+                            system.filterByDepartment(filterDepartment);
+                            break;
+
+                        default:
+                            System.out.println("Invalid choice, please try again.\n");
+                    }
+                    break;
+
+                case 7:             // Count Total Students
+                    system.countTotalStudents();
+                    break;
+
+                case 8:             // Calculate Average GPA
+                    system.calculateAverageGPA();
+                    break;
+
+                case 9:             // Display Top 5 Students
+                    system.displayTop5();
+                    break;
+
+                case 10:            // Display Failing Students
+                    system.displayFailingStudents();
+                    break;
+
+                case 11:            // Generate Summary
+                    System.out.println("Choose an option to output generated summary:");
+                    System.out.println(" 1. Output the Summary in the Console.");
+                    System.out.println(" 2. Output the Summary in the Report File.");
+                    System.out.println(" 0. Exit Summary.");
+
+                    int summaryChoice = InputValidator.inputValidChoice(scanner);
+                    if (summaryChoice == 0) {           // Exit Summary
+                        System.out.println();
+                        break;
+                    }
+
+                    switch (summaryChoice) {
+                        case 1:             // Output the Summary in the Console
+                            system.generateSummary();
+                            break;
+
+                        case 2:             // Output the Summary in the Report File
+                            TxtFileHandler.writeTxtFile(system);
+                            break;
+
+                        default:            // Invalid choice
+                            System.out.println("Invalid choice, please try again.");
+                    }
+                    break;
+
+                case 0:             // Exit Application.
+                    System.out.println("--- Thank you for using Student Management System Application!");
+                    System.out.println("\t--- Exiting system...");
+                    scanner.close();
+                    return;
+
+                default:            // Invalid choice
+                    System.out.println("Invalid choice, please try again.\n");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Student Management System/README.md b/Student Management System/README.md
new file mode 100644
index 00000000..22d913b9
--- /dev/null
+++ b/Student Management System/README.md	
@@ -0,0 +1,116 @@
+# Student Management System
+
+## Overview
+
+The **Student Management System** is a Java-based console application designed to manage student records efficiently. It allows users to perform various operations such as adding, removing, updating, and searching for students. Additionally, it provides features like sorting, filtering, and generating performance summaries. This system is ideal for educational institutions or anyone needing to manage student data in a structured manner.
+
+---
+
+## Features
+
+### 1. **Add Student**
+- Add a new student with unique name and ID.
+- Input validation ensures valid data for name, ID, age, GPA, year, and department.
+
+### 2. **Remove Student**
+- Remove a student by their unique ID.
+
+### 3. **Update Student**
+- Update a student's information (name, age, GPA, year, or department) using their ID.
+
+### 4. **Search Student**
+- Search for a student by their ID.
+
+### 5. **List and Sort Students**
+- List all students sorted by GPA, ID, Name, Year, or Department.
+
+### 6. **Filter Students**
+- Filter students by Age, GPA, Year, or Department.
+
+### 7. **Count Total Students**
+- Display the total number of students in the system.
+
+### 8. **Calculate Average GPA**
+- Calculate and display the average GPA of all students.
+
+### 9. **Display Top 5 Students**
+- Display the top 5 performing students based on GPA.
+
+### 10. **Display Failing Students**
+- Display students with a GPA less than 2.0.
+
+### 11. **Generate Summary**
+- Generate a summary including:
+    - Average GPA
+    - Total number of students
+    - Top 5 performing students
+    - Failing students
+
+---
+
+## UML Diagram
+
+For a detailed UML class diagram of the project, refer to [UML_Diagram.md](https://github.com/Mohammed-3tef/Java-Projects-Collections/blob/main/Student%20Management%20System/UML%20Diagram.md).
+
+---
+
+## Input Validation
+
+The system ensures all inputs are valid:
+- **Name**: Only letters and spaces.
+- **ID**: Unique positive integer.
+- **Age**: Valid age between 0 and 100.
+- **GPA**: Valid GPA between 0.0 and 4.0.
+- **Year**: Must be one of `First`, `Second`, `Third`, or `Fourth`.
+- **Department**: Must be one of `CS`, `IS`, `AI`, `IT`, or `DS`.
+
+---
+
+## Code Structure
+
+### Classes
+1. **`Student`**:
+    - Represents a student with attributes: `name`, `ID`, `age`, `GPA`, `year`, and `department`.
+
+2. **`StudentSystem`**:
+    - Manages a list of students and provides methods for adding, removing, updating, searching, sorting, filtering, and generating summaries.
+
+### Methods
+- **Input Validation**:
+    - `inputValidName`, `inputValidID`, `inputValidAge`, `inputValidGPA`, `inputValidYear`, `inputValidDepartment`, `inputValidChoice`.
+- **Student Operations**:
+    - `addStudent`, `removeStudentByID`, `updateStudentByID`, `searchByID`, `listAndSortAllStudents`, `filterByAge`, `filterByGPA`, `filterByYear`, `filterByDepartment`, `countTotalStudents`, `calculateAverageGPA`, `displayTop5`, `displayFailingStudents`, `countStudentsByYear`, `generateSummary`.
+
+---
+
+## Example Usage
+
+### Adding a Student
+1. Choose option `1` from the menu.
+2. Enter the student's name, ID, age, GPA, year, and department.
+3. The student will be added to the system.
+
+### Updating a Student
+1. Choose option `3` from the menu.
+2. Enter the student's ID.
+3. Choose the attribute to update (name, age, GPA, year, or department).
+4. Enter the new value.
+
+### Generating a Summary
+1. Choose option `11` from the menu.
+2. The system will display:
+    - Average GPA
+    - Total number of students
+    - Top 5 performing students
+    - Failing students
+
+---
+
+## Acknowledgments
+
+- Thanks to the Java community for providing excellent resources and libraries.
+- Inspired by real-world student management systems.
+
+---
+
+## Enjoy managing your students with ease! 🚀
diff --git a/Student Management System/UML Diagram.md b/Student Management System/UML Diagram.md
new file mode 100644
index 00000000..86605ff5
--- /dev/null
+++ b/Student Management System/UML Diagram.md	
@@ -0,0 +1,72 @@
+# Student Management System
+
+## UML Diagram
+
+```mermaid
+classDiagram
+direction BT
+
+class CsvFileHandler {
+  + CsvFileHandler() 
+  - OUTPUT_CSV_FILE : string
+  + fromCSV(String) Student
+  + readCsvFile() StudentSystem
+  + writeCsvFile(StudentSystem) void
+}
+
+class InputValidator {
+  + InputValidator() 
+  + inputValidDepartment(Scanner) String
+  + inputValidChoice(Scanner) int
+  + addUniqueName(Scanner, StudentSystem) String
+  + addUniqueID(Scanner, StudentSystem) int
+  + getFilePath(Scanner, String) String
+  + inputValidYear(Scanner) String
+  + inputValidName(Scanner) String
+  + inputValidID(Scanner) int
+  + inputValidGPA(Scanner) double
+}
+
+class Student {
+  + Student() 
+  + Student(int, String, double, String, String) 
+  + name : String
+  + GPA : double
+  + ID : int
+  + department : string
+  + year : string
+}
+
+class StudentSystem {
+  - ArrayList~Student~ studentList
+  + StudentSystem() 
+  + updateStudentByID(int, String, double, String, String) void
+  + addStudent(String, int, double, String, String, boolean) void
+  + removeStudentByID(int) void
+  + displayFailingStudents() void
+  + sortStudentsBy(String) void
+  + getStudentList() ArrayList~Student~
+  + generateSummary() void
+  + calculateAverageGPA() void
+  + mergeStudentSystem(StudentSystem) void
+  + countStudentsByYear() void
+  + filterByDepartment(String) void
+  + listAndSortAllStudents(String) void
+  + searchByID(int) void
+  + filterByGPA(double) void
+  + filterByYear(String) void
+  + displayTop5() void
+  + countTotalStudents() void
+}
+
+class TxtFileHandler {
+  - OUTPUT_TXT_FILE : string
+  + TxtFileHandler() 
+  + writeTxtFile(StudentSystem) void
+}
+
+CsvFileHandler ..> Student : «create»
+CsvFileHandler ..> StudentSystem : «create»
+StudentSystem ..> Student : «create»
+StudentSystem "1" *--> "studentList *" Student 
+```
diff --git a/Student Management System/out/production/Student_Management_System/App.class b/Student Management System/out/production/Student_Management_System/App.class
new file mode 100644
index 00000000..5b380bca
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/App.class differ
diff --git a/Student Management System/out/production/Student_Management_System/Final_Report.txt b/Student Management System/out/production/Student_Management_System/Final_Report.txt
new file mode 100644
index 00000000..5dfcb342
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/Final_Report.txt	
@@ -0,0 +1,76 @@
+------------------------------ CLASS PERFORMANCE ------------------------------
+
+The Total number of students: 49
+
+The Average GPA: 2.86
+
+Year-wise Student Count:
+ - First Year: 12, With Success rate of 91.667%
+ - Second Year: 12, With Success rate of 91.667%
+ - Third Year: 14, With Success rate of 71.429%
+ - Fourth Year: 11, With Success rate of 81.818%
+
+------------------------------ TOP 5 PERFORMING STUDENTS ------------------------------
+
+First Year:
+ Name                     |  ID        |  GPA   |  Year    |  Department
+-------------------------------------------------------------------------
+ 1. Fatima Ali            |  20231149  |  3.90  |  First   |  General
+ 2. Alaa Reda             |  20231157  |  3.80  |  First   |  General
+ 3. Hala Mostafa          |  20231173  |  3.80  |  First   |  General
+ 4. Laila Mostafa         |  20231147  |  3.70  |  First   |  General
+ 5. Nour Ahmed            |  20231153  |  3.60  |  First   |  General
+
+Second Year:
+ Name                     |  ID        |  GPA   |  Year    |  Department
+-------------------------------------------------------------------------
+ 1. Youssef Hassan        |  20231154  |  3.40  |  Second  |  General
+ 2. Tarek Ehab            |  20231156  |  3.40  |  Second  |  General
+ 3. Lina Adel             |  20231177  |  3.20  |  Second  |  General
+ 4. Ahmed Yasser          |  20231144  |  2.90  |  Second  |  General
+ 5. George Malak          |  20231171  |  2.90  |  Second  |  General
+
+Third Year:
+ Name                     |  ID        |  GPA   |  Year    |  Department
+-------------------------------------------------------------------------
+ 1. Aya Mostafa           |  20231159  |  3.90  |  Third   |  IT   
+ 2. Tamer Essam           |  20231158  |  3.60  |  Third   |  IS   
+ 3. Farah Nabil           |  20231175  |  3.50  |  Third   |  DS   
+ 4. Amr elDahshan         |  20231142  |  3.30  |  Third   |  DS   
+ 5. Kareem Adel           |  20231150  |  3.10  |  Third   |  IS   
+
+Fourth Year:
+ Name                     |  ID        |  GPA   |  Year    |  Department
+-------------------------------------------------------------------------
+ 1. Youssef Mohamed       |  20231170  |  3.70  |  Fourth  |  CS   
+ 2. Esraa Emary           |  20231182  |  3.60  |  Fourth  |  AI   
+ 3. Omar Tarek            |  20231146  |  3.50  |  Fourth  |  CS   
+ 4. Ziad Hassan           |  20231176  |  3.40  |  Fourth  |  CS   
+ 5. Hisham Ezzat          |  20231160  |  3.20  |  Fourth  |  AI   
+
+-------------------- FAILING STUDENTS (who have GPA less than 2.0) --------------------
+
+First Year:
+ Name                  |  ID        |  GPA   |  Year    |  Department
+----------------------------------------------------------------------
+ Samar Nabil           |  20231166  |  1.70  |  First   |  General
+
+Second Year:
+ Name                  |  ID        |  GPA   |  Year    |  Department
+----------------------------------------------------------------------
+ Ali Hassan            |  20231163  |  1.80  |  Second  |  General
+
+Third Year:
+ Name                  |  ID        |  GPA   |  Year    |  Department
+----------------------------------------------------------------------
+ Tarek Mounir          |  20231181  |  1.90  |  Third   |  CS   
+ Sarah Khalil          |  20231188  |  1.70  |  Third   |  DS   
+ Bassem Ahmed          |  20231172  |  1.60  |  Third   |  IS   
+ Mona Hafez            |  20231164  |  1.50  |  Third   |  CS   
+
+Fourth Year:
+ Name                  |  ID        |  GPA   |  Year    |  Department
+----------------------------------------------------------------------
+ Hatem Omar            |  20231165  |  1.90  |  Fourth  |  AI   
+ Yasmin Ehab           |  20231186  |  1.90  |  Fourth  |  CS   
+
diff --git a/Student Management System/out/production/Student_Management_System/Final_Students.csv b/Student Management System/out/production/Student_Management_System/Final_Students.csv
new file mode 100644
index 00000000..2f5a5867
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/Final_Students.csv	
@@ -0,0 +1,50 @@
+"ID","Name","GPA","Year","Department"
+"20231141","Ziad Atef","2.1","Second","General"
+"20231142","Amr elDahshan","3.3","Third","DS"
+"20231144","Ahmed Yasser","2.9","Second","General"
+"20231145","Sara Khaled","2.9","Third","IT"
+"20231146","Omar Tarek","3.5","Fourth","CS"
+"20231147","Laila Mostafa","3.7","First","General"
+"20231148","Omar Salah","3.2","First","General"
+"20231149","Fatima Ali","3.9","First","General"
+"20231150","Kareem Adel","3.1","Third","IS"
+"20231151","Mohammed Ahmed","3.0","Third","IT"
+"20231152","Amr Samir","2.8","Fourth","CS"
+"20231153","Nour Ahmed","3.6","First","General"
+"20231154","Youssef Hassan","3.4","Second","General"
+"20231155","Heba Mohamed","2.7","Third","DS"
+"20231156","Tarek Ehab","3.4","Second","General"
+"20231157","Alaa Reda","3.8","First","General"
+"20231158","Tamer Essam","3.6","Third","IS"
+"20231159","Aya Mostafa","3.9","Third","IT"
+"20231160","Hisham Ezzat","3.2","Fourth","AI"
+"20231161","Dina Samir","2.4","Fourth","DS"
+"20231162","Mostafa Gamal","3.5","First","General"
+"20231163","Ali Hassan","1.8","Second","General"
+"20231164","Mona Hafez","1.5","Third","CS"
+"20231165","Hatem Omar","1.9","Fourth","AI"
+"20231166","Samar Nabil","1.7","First","General"
+"20231167","Reem Hani","3.1","First","General"
+"20231168","Hassan Tarek","2.5","Second","General"
+"20231169","Nadia Sherif","2.0","Third","AI"
+"20231170","Youssef Mohamed","3.7","Fourth","CS"
+"20231171","George Malak","2.9","Second","General"
+"20231172","Bassem Ahmed","1.6","Third","IS"
+"20231173","Hala Mostafa","3.8","First","General"
+"20231174","Khaled Omar","2.3","Second","General"
+"20231175","Farah Nabil","3.5","Third","DS"
+"20231176","Ziad Hassan","3.4","Fourth","CS"
+"20231177","Lina Adel","3.2","Second","General"
+"20231178","Omar Fathy","2.1","Fourth","IT"
+"20231179","Salem Eid","3.0","First","General"
+"20231180","Rania Helmy","2.7","Second","General"
+"20231181","Tarek Mounir","1.9","Third","CS"
+"20231182","Esraa Emary","3.6","Fourth","AI"
+"20231183","Mahmoud Hosni","2.2","Second","General"
+"20231184","Amira Hossam","3.3","First","General"
+"20231185","Khalid Gamal","2.0","Third","AI"
+"20231186","Yasmin Ehab","1.9","Fourth","CS"
+"20231187","Ahmed Fathy","2.8","Fourth","IS"
+"20231188","Sarah Khalil","1.7","Third","DS"
+"20231189","Mohamed Nasser","3.4","First","General"
+"20231190","Noha Samir","2.9","Second","General"
diff --git a/Student Management System/out/production/Student_Management_System/LICENSE b/Student Management System/out/production/Student_Management_System/LICENSE
new file mode 100644
index 00000000..b5b2a001
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/LICENSE	
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Mohammed Atef Abd El-Kader
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Student Management System/out/production/Student_Management_System/README.md b/Student Management System/out/production/Student_Management_System/README.md
new file mode 100644
index 00000000..a9a6662f
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/README.md	
@@ -0,0 +1,157 @@
+# Student Management System
+
+## Overview
+
+The **Student Management System** is a Java-based console application designed to manage student records efficiently. It allows users to perform various operations such as adding, removing, updating, and searching for students. Additionally, it provides features like sorting, filtering, and generating performance summaries. This system is ideal for educational institutions or anyone needing to manage student data in a structured manner.
+
+---
+
+## Features
+
+### 1. **Add Student**
+- Add a new student with unique name and ID.
+- Input validation ensures valid data for name, ID, age, GPA, year, and department.
+
+### 2. **Remove Student**
+- Remove a student by their unique ID.
+
+### 3. **Update Student**
+- Update a student's information (name, age, GPA, year, or department) using their ID.
+
+### 4. **Search Student**
+- Search for a student by their ID.
+
+### 5. **List and Sort Students**
+- List all students sorted by GPA, ID, Name, Year, or Department.
+
+### 6. **Filter Students**
+- Filter students by Age, GPA, Year, or Department.
+
+### 7. **Count Total Students**
+- Display the total number of students in the system.
+
+### 8. **Calculate Average GPA**
+- Calculate and display the average GPA of all students.
+
+### 9. **Display Top 5 Students**
+- Display the top 5 performing students based on GPA.
+
+### 10. **Display Failing Students**
+- Display students with a GPA less than 2.0.
+
+### 11. **Generate Summary**
+- Generate a summary including:
+    - Average GPA
+    - Total number of students
+    - Top 5 performing students
+    - Failing students
+
+---
+
+## UML Diagram
+
+For a detailed UML class diagram of the project, refer to [UML_Diagram.md](https://github.com/Mohammed-3tef/Student_Management_System/blob/main/UML%20Diagram.md).
+
+---
+
+## How to Use
+
+1. **Clone the Repository**:
+   ```bash
+   git clone https://github.com/Mohammed-3tef/Student_Management_System.git
+   cd Student_Management_System
+   ```
+
+2. **Compile and Run**:
+    - Compile the Java file:
+      ```bash
+      javac App.java
+      ```
+    - Run the program:
+      ```bash
+      java App
+      ```
+
+3. **Follow the Menu**:
+    - The program will display a menu with options. Enter the corresponding number to perform an action.
+    - Follow the prompts to input data or perform operations.
+
+---
+
+## Input Validation
+
+The system ensures all inputs are valid:
+- **Name**: Only letters and spaces.
+- **ID**: Unique positive integer.
+- **Age**: Valid age between 0 and 100.
+- **GPA**: Valid GPA between 0.0 and 4.0.
+- **Year**: Must be one of `First`, `Second`, `Third`, or `Fourth`.
+- **Department**: Must be one of `CS`, `IS`, `AI`, `IT`, or `DS`.
+
+---
+
+## Code Structure
+
+### Classes
+1. **`Student`**:
+    - Represents a student with attributes: `name`, `ID`, `age`, `GPA`, `year`, and `department`.
+
+2. **`StudentSystem`**:
+    - Manages a list of students and provides methods for adding, removing, updating, searching, sorting, filtering, and generating summaries.
+
+### Methods
+- **Input Validation**:
+    - `inputValidName`, `inputValidID`, `inputValidAge`, `inputValidGPA`, `inputValidYear`, `inputValidDepartment`, `inputValidChoice`.
+- **Student Operations**:
+    - `addStudent`, `removeStudentByID`, `updateStudentByID`, `searchByID`, `listAndSortAllStudents`, `filterByAge`, `filterByGPA`, `filterByYear`, `filterByDepartment`, `countTotalStudents`, `calculateAverageGPA`, `displayTop5`, `displayFailingStudents`, `countStudentsByYear`, `generateSummary`.
+
+---
+
+## Example Usage
+
+### Adding a Student
+1. Choose option `1` from the menu.
+2. Enter the student's name, ID, age, GPA, year, and department.
+3. The student will be added to the system.
+
+### Updating a Student
+1. Choose option `3` from the menu.
+2. Enter the student's ID.
+3. Choose the attribute to update (name, age, GPA, year, or department).
+4. Enter the new value.
+
+### Generating a Summary
+1. Choose option `11` from the menu.
+2. The system will display:
+    - Average GPA
+    - Total number of students
+    - Top 5 performing students
+    - Failing students
+
+---
+
+## Contributing
+
+Contributions are welcome! If you'd like to contribute:
+1. Fork the repository.
+2. Create a new branch (`git checkout -b feature/YourFeature`).
+3. Commit your changes (`git commit -m 'Add some feature'`).
+4. Push to the branch (`git push origin feature/YourFeature`).
+5. Open a pull request.
+
+---
+
+## License
+
+This project is licensed under the MIT License. See the [LICENSE](https://github.com/Mohammed-3tef/Student_Management_System/blob/main/LICENSE) file for details.
+
+---
+
+## Acknowledgments
+
+- Thanks to the Java community for providing excellent resources and libraries.
+- Inspired by real-world student management systems.
+
+---
+
+## Enjoy managing your students with ease! 🚀
\ No newline at end of file
diff --git a/Student Management System/out/production/Student_Management_System/UML Diagram.md b/Student Management System/out/production/Student_Management_System/UML Diagram.md
new file mode 100644
index 00000000..86605ff5
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/UML Diagram.md	
@@ -0,0 +1,72 @@
+# Student Management System
+
+## UML Diagram
+
+```mermaid
+classDiagram
+direction BT
+
+class CsvFileHandler {
+  + CsvFileHandler() 
+  - OUTPUT_CSV_FILE : string
+  + fromCSV(String) Student
+  + readCsvFile() StudentSystem
+  + writeCsvFile(StudentSystem) void
+}
+
+class InputValidator {
+  + InputValidator() 
+  + inputValidDepartment(Scanner) String
+  + inputValidChoice(Scanner) int
+  + addUniqueName(Scanner, StudentSystem) String
+  + addUniqueID(Scanner, StudentSystem) int
+  + getFilePath(Scanner, String) String
+  + inputValidYear(Scanner) String
+  + inputValidName(Scanner) String
+  + inputValidID(Scanner) int
+  + inputValidGPA(Scanner) double
+}
+
+class Student {
+  + Student() 
+  + Student(int, String, double, String, String) 
+  + name : String
+  + GPA : double
+  + ID : int
+  + department : string
+  + year : string
+}
+
+class StudentSystem {
+  - ArrayList~Student~ studentList
+  + StudentSystem() 
+  + updateStudentByID(int, String, double, String, String) void
+  + addStudent(String, int, double, String, String, boolean) void
+  + removeStudentByID(int) void
+  + displayFailingStudents() void
+  + sortStudentsBy(String) void
+  + getStudentList() ArrayList~Student~
+  + generateSummary() void
+  + calculateAverageGPA() void
+  + mergeStudentSystem(StudentSystem) void
+  + countStudentsByYear() void
+  + filterByDepartment(String) void
+  + listAndSortAllStudents(String) void
+  + searchByID(int) void
+  + filterByGPA(double) void
+  + filterByYear(String) void
+  + displayTop5() void
+  + countTotalStudents() void
+}
+
+class TxtFileHandler {
+  - OUTPUT_TXT_FILE : string
+  + TxtFileHandler() 
+  + writeTxtFile(StudentSystem) void
+}
+
+CsvFileHandler ..> Student : «create»
+CsvFileHandler ..> StudentSystem : «create»
+StudentSystem ..> Student : «create»
+StudentSystem "1" *--> "studentList *" Student 
+```
diff --git a/Student Management System/out/production/Student_Management_System/packages/fileHandler/CsvFileHandler.class b/Student Management System/out/production/Student_Management_System/packages/fileHandler/CsvFileHandler.class
new file mode 100644
index 00000000..43cf5808
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/packages/fileHandler/CsvFileHandler.class differ
diff --git a/Student Management System/out/production/Student_Management_System/packages/fileHandler/TxtFileHandler.class b/Student Management System/out/production/Student_Management_System/packages/fileHandler/TxtFileHandler.class
new file mode 100644
index 00000000..20b55f1c
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/packages/fileHandler/TxtFileHandler.class differ
diff --git a/Student Management System/out/production/Student_Management_System/packages/system/InputValidator.class b/Student Management System/out/production/Student_Management_System/packages/system/InputValidator.class
new file mode 100644
index 00000000..fd81a8cc
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/packages/system/InputValidator.class differ
diff --git a/Student Management System/out/production/Student_Management_System/packages/system/Student.class b/Student Management System/out/production/Student_Management_System/packages/system/Student.class
new file mode 100644
index 00000000..0b17664e
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/packages/system/Student.class differ
diff --git a/Student Management System/out/production/Student_Management_System/packages/system/StudentSystem.class b/Student Management System/out/production/Student_Management_System/packages/system/StudentSystem.class
new file mode 100644
index 00000000..e8a99838
Binary files /dev/null and b/Student Management System/out/production/Student_Management_System/packages/system/StudentSystem.class differ
diff --git a/Student Management System/out/production/Student_Management_System/students.csv b/Student Management System/out/production/Student_Management_System/students.csv
new file mode 100644
index 00000000..73b45484
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/students.csv	
@@ -0,0 +1,30 @@
+"ID","Name","GPA","Year","Department"
+"20231179","Ethan Parker","3.0","First","DS"
+"20231146","Liam Thompson","3.5","Fourth","CS"
+"20231185","Lucas Bennett","2.0","Third","AI"
+"20231149","Chloe Anderson","3.9","First","AI"
+"20231154","Noah Wilson","3.4","Second","AI"
+"20231171","Grace Mitchell","2.9","Second","IT"
+"20231171","Isla Coleman","2.9","Second","IT"
+"20231144","Mason Carter","3.8","Second","CS"
+"20231175","Zoe Harper","3.5","Third","DS"
+"20231158","Caleb Morris","3.6","Third","IS"
+"20231163","Aiden Gray","1.8","Second","IS"
+"20231168","Henry Morgan","2.5","Second","DS"
+"20231182","Sophie Reynolds","3.6","Fourth","AI"
+"20231181","Jackson Hayes","1.9","Third","CS"
+"20231143","Owen Bailey","3.2","Fourth","IS"
+"20231190","Ella Brooks","2.9","Second","IT"
+"20231177","Lily Sanders","3.2","Second","AI"
+"20231164","Ava Turner","1.5","Third","CS"
+"20231180","Ruby Lawson","2.7","Second","IS"
+"20231153","Mila Foster","3.6","First","DS"
+"20231173","Aria Wallace","3.8","First","AI"
+"20231151","Logan Cooper","3.0","Third","IT"
+"20231174","Cameron Price","2.3","Second","IS"
+"20231150","Eli Hawkins","3.1","Third","IS"
+"20231165","Connor Blake","1.9","Fourth","AI"
+"20231155","Emily West","2.7","Third","DS"
+"20231166","Luna Freeman","1.7","First","DS"
+"20231186","Brooklyn Reed","1.9","Fourth","CS"
+"20231167","Nora Simmons","3.1","First","IT"
diff --git a/Student Management System/out/production/Student_Management_System/students2.csv b/Student Management System/out/production/Student_Management_System/students2.csv
new file mode 100644
index 00000000..f7c116f0
--- /dev/null
+++ b/Student Management System/out/production/Student_Management_System/students2.csv	
@@ -0,0 +1,25 @@
+"20231184","Audrey Wells","3.3","First","IT"
+"20231159","Savannah Tate","3.9","Third","IT"
+"20231176","Levi Grant","3.4","Fourth","CS"
+"20231183","Nathan Bishop","2.2","Second","DS"
+"20231160","Dylan Rose","3.2","Fourth","AI"
+"20231152","Xavier Lane","2.8","Fourth","CS"
+"20231170","Elijah Hughes","3.7","Fourth","CS"
+"20231157","Scarlett Stone","3.8","First","CS"
+"20231147","Hazel James","3.7","First","DS"
+"20231145","Penelope Scott","2.9","Third","IT"
+"20231162","Leo Barnes","3.5","First","CS"
+"20231148","Wyatt Chapman","3.2","First","IT"
+"20231187","Julian Rhodes","2.8","Fourth","IS"
+"20231189","Harper Flynn","3.4","First","AI"
+"20231178","Colton Maxwell","2.1","Fourth","IT"
+"20231188","Madeline Ford","1.7","Third","DS"
+"20231169","Stella Greene","2.0","Third","AI"
+"20231156","Hunter Walsh","3.4","Second","DS"
+"20231172","Jasper Cross","1.6","Third","IS"
+"20231161","Violet Day","2.4","Fourth","DS"
+"20231144","Mason Carter","3.8","Second","CS"
+"20231158","Caleb Morris","2.6","Fourth","IS"
+"20231168","Henry Morgan","2.5","Second","DS"
+"20231142","Ezra Spencer","3.3","Third","DS"
+"20231141","Nolan Barrett","2.1","Second","DS"
\ No newline at end of file
diff --git a/Student Management System/packages/fileHandler/CsvFileHandler.java b/Student Management System/packages/fileHandler/CsvFileHandler.java
new file mode 100644
index 00000000..36a2680b
--- /dev/null
+++ b/Student Management System/packages/fileHandler/CsvFileHandler.java	
@@ -0,0 +1,93 @@
+package packages.fileHandler;
+
+import java.io.*;
+import java.util.Scanner;
+import packages.system.*;
+
+    // --------------------------------- CSV FILE HANDLER CLASS ---------------------------------
+
+public class CsvFileHandler {
+    private static final String OUTPUT_CSV_FILE = "Final_Students.csv";
+
+    // Convert a CSV line to a Student object
+    public static Student fromCSV(String csvLine) {
+        csvLine = csvLine.replaceAll("\"", "");
+        String[] parts = csvLine.split(",");
+
+        return new Student(
+                Integer.parseInt(parts[0]),     // ID
+                parts[1],                       // Name
+                Double.parseDouble(parts[2]),   // GPA
+                parts[3],                       // Year
+                parts[4]                        // Department
+        );
+    }
+
+    // Read the student system from a csv file
+    public static StudentSystem readCsvFile() {
+        StudentSystem students = new StudentSystem();
+        Scanner scanner = new Scanner(System.in);
+        String INPUT_CSV_FILE = InputValidator.getFilePath(scanner, ".csv");
+
+
+        try (BufferedReader reader = new BufferedReader(new FileReader(INPUT_CSV_FILE))) {
+            String line;
+            boolean firstLine = true;
+
+            while ((line = reader.readLine()) != null) {
+                if (firstLine) {
+                    firstLine = false;
+                    continue;
+                }
+                Student student = fromCSV(line);
+                boolean isUnique = true;
+                for (Student s : students.getStudentList()) {
+                    if (s.ID == student.ID || s.name.equals(student.name)) {
+                        isUnique = false;
+                        break;
+                    }
+                }
+
+                if (isUnique) {
+                    if (student.year.equals("First") || student.year.equals("Second")) student.department = "General";
+                    students.addStudent(student.name, student.ID, student.GPA, student.year, student.department, true);
+                }
+            }
+
+            System.out.println("\nCSV file read successfully.\n");
+        }
+        catch (IOException e) {
+            System.err.println("\nError reading CSV file: " + e.getMessage());
+            System.out.println();
+        }
+        return students;
+    }
+
+    // Write the student system to a csv file
+    public static void writeCsvFile(StudentSystem students) {
+        try (FileWriter writer = new FileWriter(OUTPUT_CSV_FILE)) {
+            if (students.getStudentList().isEmpty()) {
+                System.out.println("\nNo students to write to CSV file.\n");
+                return;
+            }
+
+            students.sortStudentsBy("ID");
+
+            writer.write("\"ID\",\"Name\",\"GPA\",\"Year\",\"Department\"\n");
+            for (Student student : students.getStudentList()) {
+                writer.write("\"" + student.ID + "\",");
+                writer.write("\"" + student.name + "\",");
+                writer.write("\"" + student.GPA + "\",");
+                writer.write("\"" + student.year + "\",");
+                writer.write("\"" + student.department + "\"\n");
+            }
+            writer.flush();
+            System.out.println("\nCSV file written successfully.");
+            System.out.println("File Path: " + OUTPUT_CSV_FILE);
+        }
+        catch (IOException e) {
+            System.err.println("Error writing CSV file: " + e.getMessage());
+        }
+        System.out.println();
+    }
+}
diff --git a/Student Management System/packages/fileHandler/TxtFileHandler.java b/Student Management System/packages/fileHandler/TxtFileHandler.java
new file mode 100644
index 00000000..de586293
--- /dev/null
+++ b/Student Management System/packages/fileHandler/TxtFileHandler.java	
@@ -0,0 +1,130 @@
+package packages.fileHandler;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import packages.system.*;
+
+    // --------------------------------- TXT FILE HANDLER CLASS ---------------------------------
+
+public class TxtFileHandler {
+    private static final String OUTPUT_TXT_FILE = "Final_Report.txt";
+
+    // Write the student system to a txt file
+    public static void writeTxtFile(StudentSystem students) {
+        try (FileWriter writer = new FileWriter(OUTPUT_TXT_FILE)) {
+            if (students.getStudentList().isEmpty()) {
+                System.out.println("\nNo students to write to txt file.\n");
+                return;
+            }
+
+            writer.write("------------------------------ CLASS PERFORMANCE ------------------------------\n");
+            students.sortStudentsBy("GPA");
+            ArrayList<Student> studentList = students.getStudentList();
+
+            // ------------------------ Total Number of Students and Average GPA ------------------------
+
+            writer.write("\nThe Total number of students: " + studentList.size());
+            writer.write("\n\n");
+
+            // ------------------------ Average GPA ------------------------
+
+            double sum = 0;
+            for (Student student : studentList) {
+                sum += student.GPA;
+            }
+            writer.write("The Average GPA: " + String.format("%.2f" ,sum / studentList.size()));
+            writer.write("\n\n");
+
+            // ------------------------ Year-wise Student Count and Success Rate ------------------------
+
+            int totalFirst = 0, totalSecond = 0, totalThird = 0, totalFourth = 0;
+            int successfulFirst = 0, successfulSecond = 0, successfulThird = 0, successfulFourth = 0;
+            for (Student student : studentList) {
+                switch (student.year) {
+                    case "First" -> {
+                        totalFirst++;
+                        if (student.GPA >= 2.0) successfulFirst++;
+                    }
+                    case "Second" -> {
+                        totalSecond++;
+                        if (student.GPA >= 2.0) successfulSecond++;
+                    }
+                    case "Third" -> {
+                        totalThird++;
+                        if (student.GPA >= 2.0) successfulThird++;
+                    }
+                    case "Fourth" -> {
+                        totalFourth++;
+                        if (student.GPA >= 2.0) successfulFourth++;
+                    }
+                }
+            }
+
+            writer.write("Year-wise Student Count:");
+            writer.write("\n - First Year: " + totalFirst + ", With Success rate of " + String.format("%.3f" ,successfulFirst * 100.0 / totalFirst) + "%");
+            writer.write("\n - Second Year: " + totalSecond + ", With Success rate of " + String.format("%.3f" ,successfulSecond * 100.0 / totalSecond) + "%");
+            writer.write("\n - Third Year: " + totalThird + ", With Success rate of " + String.format("%.3f" ,successfulThird * 100.0 / totalThird) + "%");
+            writer.write("\n - Fourth Year: " + totalFourth + ", With Success rate of " + String.format("%.3f" ,successfulFourth * 100.0 / totalFourth) + "%");
+            writer.write("\n\n");
+
+            // ------------------------ Top 5 Performing Students and Failing Students ------------------------
+
+            writer.write("------------------------------ TOP 5 PERFORMING STUDENTS ------------------------------\n\n");
+            int numberOfYears = 0;
+            String [] years = {"First", "Second", "Third", "Fourth"};
+
+            while (numberOfYears < 4) {         // Loop through all years to find the top 5 students.
+                writer.write(years[numberOfYears] + " Year:\n");
+                writer.write(String.format(" %-23s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                        "Name", "ID", "GPA", "Year", "Department"));
+                writer.write("-------------------------------------------------------------------------\n");
+
+                int count = 1;
+                for (Student student : studentList) {
+                    if (student.year.equals(years[numberOfYears]) && count <= 5 && student.GPA >= 2.0) {
+                        writer.write(" " + (count++) + ". ");
+                        writer.write(String.format("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                                student.name, student.ID, student.GPA, student.year, student.department));
+                    }
+                }
+                numberOfYears++;
+                writer.write("\n");
+            }
+
+            // ------------------------ Failing Students ------------------------
+
+            writer.write("-------------------- FAILING STUDENTS (who have GPA less than 2.0) --------------------\n\n");
+            numberOfYears = 0;
+
+            while (numberOfYears < 4) {     // Loop through all years to find failing students.
+                writer.write(years[numberOfYears] + " Year:\n");
+                writer.write(String.format(" %-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                        "Name", "ID", "GPA", "Year", "Department"));
+                writer.write("----------------------------------------------------------------------\n");
+
+                boolean isFailing = false;
+                for (Student student : studentList) {
+                    if (student.year.equals(years[numberOfYears]) && student.GPA < 2.0) {
+                        isFailing = true;
+                        writer.write(String.format(" %-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                                student.name, student.ID, student.GPA, student.year, student.department));
+                    }
+                }
+
+                if (!isFailing) writer.write(" No failing students found!\n");      // If no failing students found in that year
+                else writer.write("\n");
+                numberOfYears++;
+            }
+
+            writer.flush();
+            System.out.println("\nTxt file written successfully.");
+            System.out.println("File Path: " + OUTPUT_TXT_FILE);
+        }
+
+        catch (IOException e) {
+            System.err.println("Error writing Txt file: " + e.getMessage());
+        }
+        System.out.println();
+    }
+}
diff --git a/Student Management System/packages/system/InputValidator.java b/Student Management System/packages/system/InputValidator.java
new file mode 100644
index 00000000..82d0bde3
--- /dev/null
+++ b/Student Management System/packages/system/InputValidator.java	
@@ -0,0 +1,137 @@
+package packages.system;
+import java.util.Scanner;
+
+    // ---------------------------------------------- INPUT VALIDATION FUNCTIONS ----------------------------------------------
+
+public class InputValidator {
+
+    // Get the file path from the user
+    public static String getFilePath(Scanner scanner, String extension) {
+        String filePath;
+        while (true) {
+            System.out.print("Enter the path of the CSV file to read: ");
+            filePath = scanner.nextLine().trim();
+            if (filePath.endsWith(extension)) break;
+            System.out.println("Invalid input. Please enter a valid CSV file path.");
+        }
+        return filePath;
+    }
+
+    // Validate the input name
+    public static String inputValidName(Scanner scanner) {
+        String name;
+        while (true) {
+            System.out.print("Enter Student's Name: ");
+            name = scanner.nextLine().trim();
+            if (name.matches("[A-Za-z ]+") && !name.isEmpty()) break;
+            System.out.println("Invalid input. Please enter a valid name (letters and spaces only).");
+        }
+        return name;
+    }
+
+    // Validate the input ID
+    public static int inputValidID(Scanner scanner) {
+        System.out.print("Enter Student's ID: ");
+        String ID = scanner.nextLine();
+
+        while (!ID.matches("\\d+") || Integer.parseInt(ID) < 0) {
+            System.out.println("Invalid input. Please enter a valid integer ID.");
+            System.out.print("Enter ID: ");
+            ID = scanner.nextLine();
+        }
+
+        return Integer.parseInt(ID);
+    }
+
+    // Check if the name is unique
+    public static String addUniqueName(Scanner scanner, StudentSystem system) {
+        String newName = inputValidName(scanner);
+        while (true) {
+            boolean isUnique = true;
+            for (Student student : system.getStudentList()) {
+                if (student.name.equals(newName)) {
+                    isUnique = false;
+                    break;
+                }
+            }
+            if (isUnique) break;
+            System.out.println("Name already exists. Please enter a unique name.");
+            newName = inputValidName(scanner);
+        }
+        return newName;
+    }
+
+    // Check if the ID is unique
+    public static int addUniqueID(Scanner scanner, StudentSystem system) {
+        int newID = inputValidID(scanner);
+        while (true) {
+            boolean isUnique = true;
+            for (Student student : system.getStudentList()) {
+                if (student.ID == newID) {
+                    isUnique = false;
+                    break;
+                }
+            }
+            if (isUnique) break;
+            System.out.println("ID already exists. Please enter a unique ID.");
+            newID = inputValidID(scanner);
+        }
+        return newID;
+    }
+
+    // Validate the input GPA
+    public static double inputValidGPA(Scanner scanner) {
+        System.out.print("Enter Student's GPA (0.0 - 4.0): ");
+        String GPA = scanner.nextLine();
+
+        while (!GPA.matches("\\d+(\\.\\d+)?") || Double.parseDouble(GPA) < 0 || Double.parseDouble(GPA) > 4) {
+            System.out.println("Invalid input. Please enter a valid GPA.");
+            System.out.print("Enter Student's GPA (0.0 - 4.0): ");
+            GPA = scanner.nextLine();
+        }
+
+        return Double.parseDouble(GPA);
+    }
+
+    // Validate the input year
+    public static String inputValidYear(Scanner scanner) {
+        System.out.print("Enter Student's Year (First, Second, Third, Fourth): ");
+
+        String year = scanner.nextLine();
+        while (!year.matches("First|Second|Third|Fourth")) {
+            System.out.println("Invalid input. Please enter a valid year.");
+            System.out.print("Enter Student's Year (First, Second, Third, Fourth): ");
+            year = scanner.nextLine();
+        }
+
+        return year;
+    }
+
+    // Validate the input department
+    public static String inputValidDepartment(Scanner scanner) {
+        System.out.print("Enter Student's Department (CS - IS - AI - IT - DS - General): ");
+
+        String department = scanner.nextLine();
+        while (!department.matches("CS|IS|AI|IT|DS|General")) {
+            System.out.println("Invalid input. Please enter a valid year.");
+            System.out.print("Enter Student's Department (CS - IS - AI - IT - DS - General): ");
+            department = scanner.nextLine();
+        }
+
+        return department;
+    }
+
+    // Validate the choice input
+    public static int inputValidChoice(Scanner scanner) {
+        System.out.print("Enter your choice: ");
+        String choice = scanner.nextLine();
+
+        while (!choice.matches("\\d+") || Integer.parseInt(choice) < 0) {
+            System.out.println("Invalid input. Please enter a valid number.");
+            System.out.print("Enter your choice: ");
+            choice = scanner.nextLine();
+        }
+
+        return Integer.parseInt(choice);
+    }
+}
diff --git a/Student Management System/packages/system/Student.java b/Student Management System/packages/system/Student.java
new file mode 100644
index 00000000..f0b83776
--- /dev/null
+++ b/Student Management System/packages/system/Student.java	
@@ -0,0 +1,21 @@
+package packages.system;
+
+    // ---------------------------------------------- STUDENT CLASS ----------------------------------------------
+
+public class Student {
+    public String name;
+    public int ID;
+    public double GPA;
+    public String year;
+    public String department;
+
+    public Student() {}
+
+    public Student(int ID, String name, double GPA, String year, String department) {
+        this.ID = ID;
+        this.name = name;
+        this.GPA = GPA;
+        this.year = year;
+        this.department = department;
+    }
+}
\ No newline at end of file
diff --git a/Student Management System/packages/system/StudentSystem.java b/Student Management System/packages/system/StudentSystem.java
new file mode 100644
index 00000000..216ab718
--- /dev/null
+++ b/Student Management System/packages/system/StudentSystem.java	
@@ -0,0 +1,327 @@
+package packages.system;
+import java.util.ArrayList;
+import java.util.Comparator;
+
+    // ---------------------------------------------- STUDENT SYSTEM CLASS ----------------------------------------------
+
+public class StudentSystem {
+    private final ArrayList<Student> studentList;
+
+    public StudentSystem() {this.studentList = new ArrayList<>();}
+    public ArrayList<Student> getStudentList() {return studentList;}
+
+    // Method to merge another StudentSystem into this one
+    public void mergeStudentSystem(StudentSystem otherSystem) {
+        int nonUniqueID = 0, nonUniqueName = 0, oldSize = this.studentList.size();
+        for (Student student : otherSystem.getStudentList()) {
+            boolean isFound = false;
+            for (Student student1 : this.studentList) {
+                if (student1.ID == student.ID) {
+                    nonUniqueID++;
+                    isFound = true;
+                    break;
+                }
+                if (student1.name.equals(student.name)) {
+                    nonUniqueName++;
+                    isFound = true;
+                    break;
+                }
+            }
+            if (!isFound) this.studentList.add(student);
+        }
+
+        if (nonUniqueID > 0) System.out.println(nonUniqueID + " students with non-unique ID(s) were not added to the system.");
+        if (nonUniqueName > 0) System.out.println(nonUniqueName + " students with non-unique name(s) were not added to the system.");
+
+        if (oldSize == 0) System.out.println("Student system Added successfully!");
+        else if (this.studentList.size() > oldSize) System.out.println("Student system merged successfully!");
+        else System.out.println("No new students were added to the system.");
+        System.out.println();
+    }
+
+    // Sort Students by GPA, ID, Name, Department, or Year
+    public void sortStudentsBy(String sortBy) {
+        switch (sortBy) {
+            case "GPA" ->
+                    this.studentList.sort((firstStudent, secondStudent) -> Double.compare(secondStudent.GPA, firstStudent.GPA));
+            case "ID" ->
+                    this.studentList.sort(Comparator.comparingInt(firstStudent -> firstStudent.ID));
+            case "Name" ->
+                    this.studentList.sort(Comparator.comparing(firstStudent -> firstStudent.name));
+            case "Department" ->
+                    this.studentList.sort(Comparator.comparing(firstStudent -> firstStudent.department));
+            case "Year" ->
+                    this.studentList.sort(Comparator.comparingInt(student -> switch (student.year) {
+                        case "First" -> 1;
+                        case "Second" -> 2;
+                        case "Third" -> 3;
+                        case "Fourth" -> 4;
+                        default -> 0;
+                    }));
+        }
+    }
+
+    // Add Student to the System by Providing Information or by CSV File
+    public void addStudent(String newName, int newID, double newGPA, String newYear, String newDepartment, boolean byCSV) {
+        Student newStudent = new Student();
+        newStudent.name = newName;
+        newStudent.ID = newID;
+        newStudent.GPA = newGPA;
+        newStudent.year = newYear;
+        newStudent.department = newDepartment;
+        this.studentList.add(newStudent);
+        if (!byCSV) System.out.println("Student added successfully!\n");
+    }
+
+    // Remove Student by ID
+    public void removeStudentByID(int ID) {
+        for (int i = 0; i < this.studentList.size(); i++) {
+            if (this.studentList.get(i).ID == ID) {
+                this.studentList.remove(i);
+                System.out.println("Student removed successfully!\n");
+                return;
+            }
+        }
+        System.out.println("Student not found!\n");
+    }
+
+    // Update Student Information Using ID
+    public void updateStudentByID(int ID, String newName, double newGPA, String newYear, String newDepartment) {
+        for (Student student : this.studentList) {
+            if (student.ID == ID) {
+                if (newName != null) student.name = newName;
+                if (newGPA != -1) student.GPA = newGPA;
+                if (newYear != null) student.year = newYear;
+                if (newDepartment != null) student.department = newDepartment;
+                System.out.println("Student updated successfully!\n");
+                return;
+            }
+        }
+
+        System.out.println("Student not found!\n");
+    }
+
+    // Search Student Using ID
+    public void searchByID(int ID) {
+        for (Student student : this.studentList) {
+            if (student.ID == ID) {
+                System.out.println("Student found!");
+                System.out.printf("%-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                        "Name", "ID", "GPA", "Year", "Dept");
+                System.out.println("------------------------------------------------------------------");
+                System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                        student.name, student.ID, student.GPA, student.year, student.department);
+                System.out.println();
+                return;
+            }
+        }
+        System.out.println("Student not found!\n");
+    }
+
+    // List and Sort All Students by GPA, ID, Name, Year, or Department
+    public void listAndSortAllStudents(String sortBy) {
+        if (this.studentList.isEmpty()) {
+            System.out.println("No students found!\n");
+            return;
+        }
+
+        switch (sortBy) {
+            case "GPA" -> sortStudentsBy("GPA");
+            case "ID" -> sortStudentsBy("ID");
+            case "Name" -> sortStudentsBy("Name");
+            case "Year" -> sortStudentsBy("Year");
+            case "Department" -> sortStudentsBy("Department");
+        }
+
+        System.out.println("\nList of Students:");
+        System.out.printf("%-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                "Name", "ID", "GPA", "Year", "Department");
+        System.out.println("---------------------------------------------------------------------");
+
+        for (Student student : this.studentList) {
+            System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                    student.name, student.ID, student.GPA, student.year, student.department);
+        }
+        System.out.println();
+    }
+
+    // Filter Students by GPA
+    public void filterByGPA(double GPA) {
+        System.out.println("Students with GPA of " + GPA + ":");
+        System.out.printf("%-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                "Name", "ID", "GPA", "Year", "Dept");
+        System.out.println("------------------------------------------------------------------");
+
+        boolean isFound = false;
+        for (Student student : this.studentList) {
+            if (student.GPA == GPA) {
+                isFound = true;
+                System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                        student.name, student.ID, student.GPA, student.year, student.department);
+            }
+        }
+
+        if (!isFound) System.out.println("No students found with GPA of " + GPA + "!\n");
+        else System.out.println();
+    }
+
+    // Filter Students by Year
+    public void filterByYear(String year) {
+        System.out.println("Students in " + year + " year:");
+        System.out.printf("%-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                "Name", "ID", "GPA", "Year", "Dept");
+        System.out.println("------------------------------------------------------------------");
+
+        boolean isFound = false;
+        for (Student student : this.studentList) {
+            if (student.year.equals(year)) {
+                isFound = true;
+                System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                        student.name, student.ID, student.GPA, student.year, student.department);
+            }
+        }
+
+        if (!isFound) System.out.println("No students found in " + year + " year!\n");
+        else System.out.println();
+    }
+
+    // Filter Students by Department
+    public void filterByDepartment(String department) {
+        System.out.println("Students in " + department + " department:");
+        System.out.printf("%-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                "Name", "ID", "GPA", "Year", "Dept");
+        System.out.println("------------------------------------------------------------------");
+
+        boolean isFound = false;
+        for (Student student : this.studentList) {
+            if (student.department.equals(department)) {
+                isFound = true;
+                System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                        student.name, student.ID, student.GPA, student.year, student.department);
+            }
+        }
+
+        if (!isFound) System.out.println("No students found in " + department + " department!\n");
+        else System.out.println();
+    }
+
+    // Count the Total Number of Students
+    public void countTotalStudents() {
+        System.out.println("The Total number of students: " + this.studentList.size());
+        System.out.println();
+    }
+
+    // Calculate Average GPA
+    public void calculateAverageGPA() {
+        double sum = 0;
+        for (Student student : this.studentList) {
+            sum += student.GPA;
+        }
+        System.out.println("The Average GPA: " + String.format("%.2f" ,sum / this.studentList.size()));
+        System.out.println();
+    }
+
+    // Display Top 5 Performing Students
+    public void displayTop5() {
+        sortStudentsBy("GPA");
+        System.out.println("------------------------------ TOP 5 PERFORMING STUDENTS ------------------------------\n");
+        int numberOfYears = 0;
+        String [] years = {"First", "Second", "Third", "Fourth"};
+        while (numberOfYears < 4) {     // Loop through all years to find the top 5 students.
+            System.out.println(years[numberOfYears] + " Year:");
+            int count = 1;
+            boolean isFound = false;
+            System.out.printf(" %-23s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                    "Name", "ID", "GPA", "Year", "Department");
+            System.out.println("-------------------------------------------------------------------------");
+            for (Student student : this.studentList) {
+                if (student.year.equals(years[numberOfYears]) && count <= 5 && student.GPA >= 2.0) {
+                    isFound = true;
+                    System.out.print(" " + (count++) + ". ");
+                    System.out.printf("%-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                            student.name, student.ID, student.GPA, student.year, student.department);
+                }
+            }
+            numberOfYears++;
+            if (!isFound) System.out.println(" No students found!\n");    // If there is no successful student in that year.
+            else System.out.println();
+        }
+    }
+
+    // Display Failing Students (GPA less than 2.0)
+    public void displayFailingStudents() {
+        System.out.println("-------------------- FAILING STUDENTS (who have GPA less than 2.0) --------------------\n");
+        int numberOfYears = 0;
+        String [] years = {"First", "Second", "Third", "Fourth"};
+        while (numberOfYears < 4) {     // Loop through all years to find failing students.
+
+            System.out.println(years[numberOfYears] + " Year:");
+            System.out.printf(" %-20s  |  %-8s  |  %-4s  |  %-6s  |  %-5s%n",
+                    "Name", "ID", "GPA", "Year", "Department");
+            System.out.println("----------------------------------------------------------------------");
+
+            boolean isFailing = false;
+            for (Student student : this.studentList) {
+                if (student.year.equals(years[numberOfYears]) && student.GPA < 2.0) {
+                    isFailing = true;
+                    System.out.printf(" %-20s  |  %-8s  |  %-4.2f  |  %-6s  |  %-5s%n",
+                            student.name, student.ID, student.GPA, student.year, student.department);
+                }
+            }
+
+            numberOfYears++;
+            if (!isFailing) System.out.println(" No failing students found!\n");    // If no failing students found in that year
+            else System.out.println();
+        }
+        System.out.println();
+    }
+
+    // Count Students by Year and Calculate Success Rate (GPA >= 2.0).
+    public void countStudentsByYear() {
+        int totalFirst = 0, totalSecond = 0, totalThird = 0, totalFourth = 0;
+        int successfulFirst = 0, successfulSecond = 0, successfulThird = 0, successfulFourth = 0;
+
+        for (Student student : studentList) {
+            switch (student.year) {
+                case "First" -> {
+                    totalFirst++;
+                    if (student.GPA >= 2.0) successfulFirst++;
+                }
+                case "Second" -> {
+                    totalSecond++;
+                    if (student.GPA >= 2.0) successfulSecond++;
+                }
+                case "Third" -> {
+                    totalThird++;
+                    if (student.GPA >= 2.0) successfulThird++;
+                }
+                case "Fourth" -> {
+                    totalFourth++;
+                    if (student.GPA >= 2.0) successfulFourth++;
+                }
+            }
+        }
+
+        System.out.println("Year-wise Student Count:");
+        System.out.println(" - First Year: " + totalFirst + ", With Success rate of " + String.format("%.3f" ,successfulFirst * 100.0 / totalFirst) + "%");
+        System.out.println(" - Second Year: " + totalSecond + ", With Success rate of " + String.format("%.3f" ,successfulSecond * 100.0 / totalSecond) + "%");
+        System.out.println(" - Third Year: " + totalThird + ", With Success rate of " + String.format("%.3f" ,successfulThird * 100.0 / totalThird) + "%");
+        System.out.println(" - Fourth Year: " + totalFourth + ", With Success rate of " + String.format("%.3f" ,successfulFourth * 100.0 / totalFourth) + "%");
+        System.out.println();
+    }
+
+    // Generate Class Performance Summary
+    public void generateSummary() {
+        if (this.studentList.isEmpty()) {
+            System.out.println("No students found!\n");
+            return;
+        }
+
+        System.out.println("\n------------------------------ CLASS PERFORMANCE ------------------------------\n");
+        calculateAverageGPA();
+        countTotalStudents();
+        countStudentsByYear();
+        displayTop5();
+        displayFailingStudents();
+    }
+}
diff --git a/Student Management System/students.csv b/Student Management System/students.csv
new file mode 100644
index 00000000..73b45484
--- /dev/null
+++ b/Student Management System/students.csv	
@@ -0,0 +1,30 @@
+"ID","Name","GPA","Year","Department"
+"20231179","Ethan Parker","3.0","First","DS"
+"20231146","Liam Thompson","3.5","Fourth","CS"
+"20231185","Lucas Bennett","2.0","Third","AI"
+"20231149","Chloe Anderson","3.9","First","AI"
+"20231154","Noah Wilson","3.4","Second","AI"
+"20231171","Grace Mitchell","2.9","Second","IT"
+"20231171","Isla Coleman","2.9","Second","IT"
+"20231144","Mason Carter","3.8","Second","CS"
+"20231175","Zoe Harper","3.5","Third","DS"
+"20231158","Caleb Morris","3.6","Third","IS"
+"20231163","Aiden Gray","1.8","Second","IS"
+"20231168","Henry Morgan","2.5","Second","DS"
+"20231182","Sophie Reynolds","3.6","Fourth","AI"
+"20231181","Jackson Hayes","1.9","Third","CS"
+"20231143","Owen Bailey","3.2","Fourth","IS"
+"20231190","Ella Brooks","2.9","Second","IT"
+"20231177","Lily Sanders","3.2","Second","AI"
+"20231164","Ava Turner","1.5","Third","CS"
+"20231180","Ruby Lawson","2.7","Second","IS"
+"20231153","Mila Foster","3.6","First","DS"
+"20231173","Aria Wallace","3.8","First","AI"
+"20231151","Logan Cooper","3.0","Third","IT"
+"20231174","Cameron Price","2.3","Second","IS"
+"20231150","Eli Hawkins","3.1","Third","IS"
+"20231165","Connor Blake","1.9","Fourth","AI"
+"20231155","Emily West","2.7","Third","DS"
+"20231166","Luna Freeman","1.7","First","DS"
+"20231186","Brooklyn Reed","1.9","Fourth","CS"
+"20231167","Nora Simmons","3.1","First","IT"
diff --git a/Student Management System/students2.csv b/Student Management System/students2.csv
new file mode 100644
index 00000000..f7c116f0
--- /dev/null
+++ b/Student Management System/students2.csv	
@@ -0,0 +1,25 @@
+"20231184","Audrey Wells","3.3","First","IT"
+"20231159","Savannah Tate","3.9","Third","IT"
+"20231176","Levi Grant","3.4","Fourth","CS"
+"20231183","Nathan Bishop","2.2","Second","DS"
+"20231160","Dylan Rose","3.2","Fourth","AI"
+"20231152","Xavier Lane","2.8","Fourth","CS"
+"20231170","Elijah Hughes","3.7","Fourth","CS"
+"20231157","Scarlett Stone","3.8","First","CS"
+"20231147","Hazel James","3.7","First","DS"
+"20231145","Penelope Scott","2.9","Third","IT"
+"20231162","Leo Barnes","3.5","First","CS"
+"20231148","Wyatt Chapman","3.2","First","IT"
+"20231187","Julian Rhodes","2.8","Fourth","IS"
+"20231189","Harper Flynn","3.4","First","AI"
+"20231178","Colton Maxwell","2.1","Fourth","IT"
+"20231188","Madeline Ford","1.7","Third","DS"
+"20231169","Stella Greene","2.0","Third","AI"
+"20231156","Hunter Walsh","3.4","Second","DS"
+"20231172","Jasper Cross","1.6","Third","IS"
+"20231161","Violet Day","2.4","Fourth","DS"
+"20231144","Mason Carter","3.8","Second","CS"
+"20231158","Caleb Morris","2.6","Fourth","IS"
+"20231168","Henry Morgan","2.5","Second","DS"
+"20231142","Ezra Spencer","3.3","Third","DS"
+"20231141","Nolan Barrett","2.1","Second","DS"
\ No newline at end of file
diff --git a/Subarray.java b/Subarray.java
new file mode 100644
index 00000000..02735f73
--- /dev/null
+++ b/Subarray.java
@@ -0,0 +1,29 @@
+package Subarray;
+public class Subarray_Product_Less_Than_k {
+
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+        int []arr= {1,2,3,4,2};
+        int k=10;
+        System.out.println(Product(arr,k));
+	}
+    public static int Product(int []arr,int k) {
+    	int si=0;
+    	int ei=0;
+    	int p=1;
+    	int ans=0;
+    	while(ei<arr.length) {
+    		//grow
+    		p=p*arr[ei];
+    		//shrink
+    		while(p>=k && si<=ei) {
+    			p=p/arr[si];
+    			si++;
+    		}
+    		//cal
+    		ans=ans+(ei-si+1);
+    		ei++;
+    	}
+    	return ans;
+    }
+}
diff --git a/SudokuSolver.java b/SudokuSolver.java
new file mode 100644
index 00000000..2de08bd4
--- /dev/null
+++ b/SudokuSolver.java
@@ -0,0 +1,118 @@
+public class SudokuPuzzle {
+
+    // Check if it's safe to place 'n' in the cell at row 'r' and column 'c'
+    public boolean isSafe(int[][] board, int r, int c, int n) {
+        // Check for clashes in the row
+        for (int d = 0; d < board.length; d++) {
+            if (board[r][d] == n) {
+                return false;
+            }
+        }
+
+        // Check for clashes in the column
+        for (int r1 = 0; r1 < board.length; r1++) {
+            if (board[r1][c] == n) {
+                return false;
+            }
+        }
+
+        // Check for clashes in the sub-grid
+        int sqrt = (int) Math.sqrt(board.length);
+        int boxRowStart = r - r % sqrt;
+        int boxColStart = c - c % sqrt;
+
+        for (int r1 = boxRowStart; r1 < boxRowStart + sqrt; r1++) {
+            for (int d = boxColStart; d < boxColStart + sqrt; d++) {
+                if (board[r1][d] == n) {
+                    return false;
+                }
+            }
+        }
+
+        return true;
+    }
+
+    // Solve the Sudoku puzzle using backtracking
+    public boolean solveSudoku(int[][] board, int num) {
+        int r = -1;
+        int c = -1;
+        boolean isVacant = true;
+
+        for (int i = 0; i < num; i++) {
+            for (int j = 0; j < num; j++) {
+                if (board[i][j] == 0) {
+                    r = i;
+                    c = j;
+                    isVacant = false;
+                    break;
+                }
+            }
+            if (!isVacant) {
+                break;
+            }
+        }
+
+        if (isVacant) {
+            return true; // No empty cells left, the puzzle is solved
+        }
+
+        // Try placing numbers from 1 to num in the cell
+        for (int no = 1; no <= num; no++) {
+            if (isSafe(board, r, c, no)) {
+                board[r][c] = no;
+                if (solveSudoku(board, num)) {
+                    return true;
+                } else {
+                    board[r][c] = 0; // Backtrack
+                }
+            }
+        }
+        return false; // No solution found for the current configuration
+    }
+
+    // Display the Sudoku grid
+    public void display(int[][] board, int n) {
+        for (int i = 0; i < n; i++) {
+            for (int d = 0; d < n; d++) {
+                System.out.print(board[i][d] + " ");
+            }
+            System.out.println();
+            if ((i + 1) % (int) Math.sqrt(n) == 0) {
+                System.out.println();
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        int[][] board = new int[][] {
+            {7, 0, 0, 0, 0, 0, 2, 0, 0},
+            {4, 0, 2, 0, 0, 0, 0, 0, 3},
+            {0, 0, 0, 2, 0, 1, 0, 0, 0},
+            {3, 0, 0, 1, 8, 0, 0, 9, 7},
+            {0, 0, 9, 0, 7, 0, 6, 0, 0},
+            {6, 5, 0, 0, 3, 2, 0, 0, 1},
+            {0, 0, 0, 4, 0, 9, 0, 0, 0},
+            {5, 0, 0, 0, 0, 0, 1, 0, 6},
+            {0, 0, 6, 0, 0, 0, 0, 0, 8}
+        };
+
+        SudokuPuzzle obj = new SudokuPuzzle();
+        int size = board.length;
+
+        System.out.println("The input grid is:");
+        for (int i = 0; i < size; i++) {
+            for (int j = 0; j < size; j++) {
+                System.out.print(board[i][j] + " ");
+            }
+            System.out.println();
+        }
+
+        System.out.println();
+        if (obj.solveSudoku(board, size)) {
+            System.out.println("The solution to the Sudoku puzzle is:");
+            obj.display(board, size);
+        } else {
+            System.out.println("There is no solution available.");
+        }
+    }
+}
diff --git a/Svg File Generator/BinaryTreeSVGExporter.java b/Svg File Generator/BinaryTreeSVGExporter.java
new file mode 100644
index 00000000..aac63c24
--- /dev/null
+++ b/Svg File Generator/BinaryTreeSVGExporter.java	
@@ -0,0 +1,89 @@
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import org.apache.batik.dom.GenericDOMImplementation;
+import org.apache.batik.svggen.SVGGraphics2D;
+import org.w3c.dom.DOMImplementation;
+import org.w3c.dom.Document;
+
+class TreeNode {
+    int data;
+    TreeNode left;
+    TreeNode right;
+    
+    public TreeNode(int data) {
+        this.data = data;
+        this.left = null;
+        this.right = null;
+    }
+    
+    public void insert(int data) {
+        if (data < this.data) {
+            if (this.left == null) {
+                this.left = new TreeNode(data);
+            } else {
+                this.left.insert(data);
+            }
+        } else {
+            if (this.right == null) {
+                this.right = new TreeNode(data);
+            } else {
+                this.right.insert(data);
+            }
+        }
+    }
+}
+
+public class BinaryTreeSVGExporter {
+    public static void export(TreeNode root, String filename) throws IOException {
+        DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation();
+        Document doc = domImpl.createDocument(null, "svg", null);
+        SVGGraphics2D svg = new SVGGraphics2D(doc);
+        
+        // Traverse the tree and draw the nodes and edges
+        traverse(root, svg, 100, 50, 50);
+        
+        // Write the SVG file
+        File file = new File(filename);
+        FileWriter fw = new FileWriter(file);
+        svg.stream(fw, true);
+    }
+    
+    private static void traverse(TreeNode node, SVGGraphics2D svg, int x, int y, int dx) {
+        if (node == null) {
+            return;
+        }
+        
+        // Draw the node
+        svg.drawOval(x - 10, y - 10, 20, 20);
+        svg.drawString(String.valueOf(node.data), x - 4, y + 4);
+        
+        // Draw the left child and edge
+        if (node.left != null) {
+            svg.drawLine(x, y, x - dx, y + 50);
+            traverse(node.left, svg, x - dx, y + 50, dx / 2);
+        }
+        
+        // Draw the right child and edge
+        if (node.right != null) {
+            svg.drawLine(x, y, x + dx, y + 50);
+            traverse(node.right, svg, x + dx, y + 50, dx / 2);
+        }
+    }
+    
+    public static void main(String[] args) {
+        TreeNode root = new TreeNode(10);
+        root.insert(5);
+        root.insert(15);
+        root.insert(3);
+        root.insert(7);
+        root.insert(13);
+        root.insert(17);
+        
+        try {
+            BinaryTreeSVGExporter.export(root, "binary_tree.svg");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/Svg File Generator/SvgExample.java b/Svg File Generator/SvgExample.java
new file mode 100644
index 00000000..4bec5120
--- /dev/null
+++ b/Svg File Generator/SvgExample.java	
@@ -0,0 +1,43 @@
+import java.io.*;
+import org.apache.batik.dom.*;
+import org.apache.batik.dom.svg.*;
+import org.apache.batik.svggen.*;
+
+public class SvgExample {
+    public static void main(String[] args) throws IOException {
+        // Create a new SVG document
+        DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
+        String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
+        Document doc = impl.createDocument(svgNS, "svg", null);
+        
+        // Set the width and height of the document
+        SVGOMSVGElement svgRoot = (SVGOMSVGElement)doc.getDocumentElement();
+        svgRoot.setAttributeNS(null, "width", "200");
+        svgRoot.setAttributeNS(null, "height", "200");
+        
+        // Create a circle element
+        SVGOMCircleElement circle = new SVGOMCircleElement() {
+            protected AttributeInitializer getAttributeInitializer() {
+                return new AttributeInitializer() {
+                    public void initialize(Element elt) {
+                        super.initialize(elt);
+                        elt.setAttributeNS(null, "cx", "100");
+                        elt.setAttributeNS(null, "cy", "100");
+                        elt.setAttributeNS(null, "r", "50");
+                    }
+                };
+            }
+        };
+        
+        // Add the circle to the document
+        svgRoot.appendChild(circle);
+        
+        // Write the SVG document to a file
+        Writer out = new OutputStreamWriter(new FileOutputStream("example.svg"), "UTF-8");
+        SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(doc);
+        SVGGraphics2D g = new SVGGraphics2D(ctx, false);
+        g.setSVGCanvasSize(new Dimension(200, 200));
+        g.getRoot(svgRoot);
+        g.stream(out, true);
+    }
+}
diff --git a/Task List Application.java b/Task List Application.java
new file mode 100644
index 00000000..fd5c9456
--- /dev/null
+++ b/Task List Application.java	
@@ -0,0 +1,120 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Task {
+    private String title;
+    private String description;
+    private boolean isCompleted;
+
+    public Task(String title, String description) {
+        this.title = title;
+        this.description = description;
+        this.isCompleted = false;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public boolean isCompleted() {
+        return isCompleted;
+    }
+
+    public void markAsCompleted() {
+        isCompleted = true;
+    }
+}
+
+public class TaskListApp {
+    private static ArrayList<Task> tasks = new ArrayList<>();
+    private static Scanner scanner = new Scanner(System.in);
+
+    public static void main(String[] args) {
+        while (true) {
+            displayMenu();
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline character
+
+            switch (choice) {
+                case 1:
+                    addTask();
+                    break;
+                case 2:
+                    viewTasks();
+                    break;
+                case 3:
+                    markTaskCompleted();
+                    break;
+                case 4:
+                    deleteTask();
+                    break;
+                case 5:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    private static void displayMenu() {
+        System.out.println("\nTask List Application");
+        System.out.println("1. Add a new task");
+        System.out.println("2. View tasks");
+        System.out.println("3. Mark a task as completed");
+        System.out.println("4. Delete a task");
+        System.out.println("5. Exit");
+        System.out.print("Enter your choice: ");
+    }
+
+    private static void addTask() {
+        System.out.print("Enter task title: ");
+        String title = scanner.nextLine();
+        System.out.print("Enter task description: ");
+        String description = scanner.nextLine();
+
+        Task task = new Task(title, description);
+        tasks.add(task);
+        System.out.println("Task added successfully!");
+    }
+
+    private static void viewTasks() {
+        System.out.println("\nTask List:");
+        for (int i = 0; i < tasks.size(); i++) {
+            Task task = tasks.get(i);
+            System.out.println(i + 1 + ". " + task.getTitle() + " - " + task.getDescription() +
+                    (task.isCompleted() ? " (Completed)" : ""));
+        }
+    }
+
+    private static void markTaskCompleted() {
+        System.out.print("Enter the task number to mark as completed: ");
+        int taskNumber = scanner.nextInt();
+        scanner.nextLine();  // Consume newline character
+
+        if (taskNumber >= 1 && taskNumber <= tasks.size()) {
+            Task task = tasks.get(taskNumber - 1);
+            task.markAsCompleted();
+            System.out.println("Task marked as completed!");
+        } else {
+            System.out.println("Invalid task number. Please try again.");
+        }
+    }
+
+    private static void deleteTask() {
+        System.out.print("Enter the task number to delete: ");
+        int taskNumber = scanner.nextInt();
+        scanner.nextLine();  // Consume newline character
+
+        if (taskNumber >= 1 && taskNumber <= tasks.size()) {
+            Task task = tasks.remove(taskNumber - 1);
+            System.out.println("Task deleted: " + task.getTitle());
+        } else {
+            System.out.println("Invalid task number. Please try again.");
+        }
+    }
+}
diff --git a/Task list/task_list.java b/Task list/task_list.java
new file mode 100644
index 00000000..f6212620
--- /dev/null
+++ b/Task list/task_list.java	
@@ -0,0 +1,69 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+public class TodoList {
+    private List<String> tasks;
+
+    public TodoList() {
+        tasks = new ArrayList<>();
+    }
+
+    public void addTask(String task) {
+        tasks.add(task);
+    }
+
+    public void removeTask(int index) {
+        if (index >= 0 && index < tasks.size()) {
+            tasks.remove(index);
+        } else {
+            System.out.println("Invalid index");
+        }
+    }
+
+    public void listTasks() {
+        System.out.println("Task List:");
+        for (int i = 0; i < tasks.size(); i++) {
+            System.out.println(i + 1 + ". " + tasks.get(i));
+        }
+    }
+
+    public static void main(String[] args) {
+        TodoList todoList = new TodoList();
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("\nChoose an action:");
+            System.out.println("1. Add task");
+            System.out.println("2. Remove task");
+            System.out.println("3. List tasks");
+            System.out.println("4. Exit");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline character
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter the task: ");
+                    String task = scanner.nextLine();
+                    todoList.addTask(task);
+                    break;
+                case 2:
+                    System.out.print("Enter the index of the task to remove: ");
+                    int index = scanner.nextInt();
+                    scanner.nextLine(); // Consume the newline character
+                    todoList.removeTask(index - 1);
+                    break;
+                case 3:
+                    todoList.listTasks();
+                    break;
+                case 4:
+                    System.out.println("Exiting...");
+                    System.exit(0);
+                    break;
+                default:
+                    System.out.println("Invalid option");
+            }
+        }
+    }
+}
diff --git a/Task_Tracker/Task_Tracker.java b/Task_Tracker/Task_Tracker.java
new file mode 100644
index 00000000..7db603bc
--- /dev/null
+++ b/Task_Tracker/Task_Tracker.java
@@ -0,0 +1,97 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Task {
+    private String description;
+    private boolean completed;
+
+    public Task(String description) {
+        this.description = description;
+        this.completed = false;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public boolean isCompleted() {
+        return completed;
+    }
+
+    public void markCompleted() {
+        completed = true;
+    }
+}
+
+class TaskTracker {
+    private ArrayList<Task> tasks;
+
+    public TaskTracker() {
+        tasks = new ArrayList<>();
+    }
+
+    public void addTask(String description) {
+        Task newTask = new Task(description);
+        tasks.add(newTask);
+        System.out.println("Task added: " + description);
+    }
+
+    public void markTaskCompleted(int index) {
+        if (index >= 0 && index < tasks.size()) {
+            Task task = tasks.get(index);
+            task.markCompleted();
+            System.out.println("Task marked as completed: " + task.getDescription());
+        } else {
+            System.out.println("Invalid task index.");
+        }
+    }
+
+    public void displayTasks() {
+        System.out.println("Task List:");
+        for (int i = 0; i < tasks.size(); i++) {
+            Task task = tasks.get(i);
+            System.out.println((i + 1) + ". " + task.getDescription() +
+                    (task.isCompleted() ? " - Completed" : ""));
+        }
+    }
+}
+
+public class TaskTrackerApp {
+    public static void main(String[] args) {
+        TaskTracker taskTracker = new TaskTracker();
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("\n1. Add Task\n2. Mark Task as Completed\n3. Display Tasks\n4. Exit");
+            System.out.print("Choose an option: ");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline character
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter task description: ");
+                    String description = scanner.nextLine();
+                    taskTracker.addTask(description);
+                    break;
+
+                case 2:
+                    System.out.print("Enter the index of the task to mark as completed: ");
+                    int index = scanner.nextInt();
+                    taskTracker.markTaskCompleted(index - 1); // Adjust index for user input
+                    break;
+
+                case 3:
+                    taskTracker.displayTasks();
+                    break;
+
+                case 4:
+                    System.out.println("Exiting the Task Tracker. Goodbye!");
+                    System.exit(0);
+
+                default:
+                    System.out.println("Invalid choice. Please choose a valid option.");
+            }
+        }
+    }
+}
diff --git a/Temp3524.java b/Temp3524.java
new file mode 100644
index 00000000..be98cc68
--- /dev/null
+++ b/Temp3524.java
@@ -0,0 +1,14 @@
+import java.util.Scanner;
+import java.text.DecimalFormat;
+public class Temp3524 {
+    public static void main(String[] args){
+        Scanner in = new Scanner(System.in);
+        System.out.println("2021503524 - Mugundh J B - 09/09/23 - 2.40 pm");
+        System.out.print("Enter temperature in Fahrenheit: ");
+        float fah = in.nextFloat();
+        float c = (fah - 32) * 5 / 9;
+        DecimalFormat df = new DecimalFormat("0.00"); // Used to format the decimal value in form of pattern
+        System.out.printf("Fahrenheit temperature " + df.format(fah) +
+                " is the same \nas " + df.format(c) + " degrees Celsius.");
+    }
+}
diff --git a/Thermometer.java b/Thermometer.java
new file mode 100644
index 00000000..ae1551cc
--- /dev/null
+++ b/Thermometer.java
@@ -0,0 +1,39 @@
+import java.util.Random;
+
+// Thermometer class to represent a thermometer
+class Thermometer {
+    private double temperature;
+
+    public Thermometer() {
+        // Initialize the temperature to a random value between 0 and 100
+        Random rand = new Random();
+        temperature = rand.nextDouble() * 100;
+    }
+
+    public double getTemperature() {
+        return temperature;
+    }
+
+    public void setTemperature(double temperature) {
+        this.temperature = temperature;
+    }
+
+    public void measure() {
+        // Simulate measuring the temperature by updating it randomly
+        Random rand = new Random();
+        temperature += rand.nextDouble() * 2 - 1; // Random change between -1 and 1
+    }
+}
+
+public class ThermometerApp {
+    public static void main(String[] args) {
+        Thermometer thermometer = new Thermometer();
+
+        System.out.println("Initial temperature: " + thermometer.getTemperature() + "°C");
+
+        for (int i = 0; i < 5; i++) {
+            thermometer.measure();
+            System.out.println("Updated temperature: " + thermometer.getTemperature() + "°C");
+        }
+    }
+}
diff --git a/Tic- Tac- Toe Game/TicTacToe.java b/Tic- Tac- Toe Game/TicTacToe.java
new file mode 100644
index 00000000..4fef47d3
--- /dev/null
+++ b/Tic- Tac- Toe Game/TicTacToe.java	
@@ -0,0 +1,94 @@
+import java.util.Scanner;
+
+public class TicTacToe {
+    private static char[][] board = new char[3][3];
+    private static char currentPlayer = 'X';
+    private static boolean gameWon = false;
+
+    public static void main(String[] args) {
+        initializeBoard();
+        printBoard();
+
+        while (!gameWon) {
+            makeMove();
+            printBoard();
+            checkForWin();
+            switchPlayer();
+        }
+
+        if (gameWon) {
+            System.out.println("Player " + currentPlayer + " wins!");
+        } else {
+            System.out.println("It's a draw!");
+        }
+    }
+
+    private static void initializeBoard() {
+        for (int row = 0; row < 3; row++) {
+            for (int col = 0; col < 3; col++) {
+                board[row][col] = ' ';
+            }
+        }
+    }
+
+    private static void printBoard() {
+        for (int row = 0; row < 3; row++) {
+            for (int col = 0; col < 3; col++) {
+                System.out.print(board[row][col]);
+                if (col < 2) {
+                    System.out.print(" | ");
+                }
+            }
+            System.out.println();
+            if (row < 2) {
+                System.out.println("---------");
+            }
+        }
+    }
+
+    private static void makeMove() {
+        Scanner scanner = new Scanner(System.in);
+        int row, col;
+        do {
+            System.out.print("Player " + currentPlayer + ", enter your row (0, 1, 2) and column (0, 1, 2): ");
+            row = scanner.nextInt();
+            col = scanner.nextInt();
+        } while (row < 0 || row > 2 || col < 0 || col > 2 || board[row][col] != ' ');
+        board[row][col] = currentPlayer;
+    }
+
+    private static void checkForWin() {
+        // Check rows, columns, and diagonals for a win
+        for (int i = 0; i < 3; i++) {
+            if (board[i][0] == currentPlayer && board[i][1] == currentPlayer && board[i][2] == currentPlayer
+                    || board[0][i] == currentPlayer && board[1][i] == currentPlayer && board[2][i] == currentPlayer
+                    || board[0][0] == currentPlayer && board[1][1] == currentPlayer && board[2][2] == currentPlayer
+                    || board[0][2] == currentPlayer && board[1][1] == currentPlayer && board[2][0] == currentPlayer) {
+                gameWon = true;
+                return;
+            }
+        }
+
+        // Check for a draw
+        boolean isFull = true;
+        for (int row = 0; row < 3; row++) {
+            for (int col = 0; col < 3; col++) {
+                if (board[row][col] == ' ') {
+                    isFull = false;
+                    break;
+                }
+            }
+        }
+        if (isFull) {
+            gameWon = true;
+        }
+    }
+
+    private static void switchPlayer() {
+        if (currentPlayer == 'X') {
+            currentPlayer = 'O';
+        } else {
+            currentPlayer = 'X';
+        }
+    }
+}
diff --git a/TicTacToe Android apk/.project b/TicTacToe Android apk/.project
new file mode 100644
index 00000000..38f5d602
--- /dev/null
+++ b/TicTacToe Android apk/.project	
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>TicTacToe Android apk</name>
+	<comment>Project TicTacToe Android apk created by Buildship.</comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
+	</natures>
+</projectDescription>
diff --git a/TicTacToe Android apk/.settings/org.eclipse.buildship.core.prefs b/TicTacToe Android apk/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 00000000..4790d35d
--- /dev/null
+++ b/TicTacToe Android apk/.settings/org.eclipse.buildship.core.prefs	
@@ -0,0 +1,13 @@
+arguments=
+auto.sync=false
+build.scans.enabled=false
+connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
+connection.project.dir=
+eclipse.preferences.version=1
+gradle.user.home=
+java.home=/nix/store/gpxl5qgg8kicmcvivwmybwjlpf7wh20l-graalvm17-ce-22.3.0
+jvm.arguments=
+offline.mode=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/TopologicalSortGraph.java b/TopologicalSortGraph.java
new file mode 100644
index 00000000..de4e0a57
--- /dev/null
+++ b/TopologicalSortGraph.java
@@ -0,0 +1,60 @@
+import java.util.*;
+
+class DirectedGraph {
+    private int numberOfVertices;
+    private List<List<Integer>> adjacencyList;
+
+    public DirectedGraph(int vertices) {
+        numberOfVertices = vertices;
+        adjacencyList = new ArrayList<>(numberOfVertices);
+        for (int i = 0; i < numberOfVertices; i++) {
+            adjacencyList.add(new ArrayList<>());
+        }
+    }
+
+    public void addEdge(int source, int destination) {
+        adjacencyList.get(source).add(destination);
+    }
+
+    private void performTopologicalSortUtil(int vertex, boolean[] visited, Stack<Integer> stack) {
+        visited[vertex] = true;
+        for (Integer neighbor : adjacencyList.get(vertex)) {
+            if (!visited[neighbor]) {
+                performTopologicalSortUtil(neighbor, visited, stack);
+            }
+        }
+        stack.push(vertex);
+    }
+
+    public void performTopologicalSort() {
+        Stack<Integer> topologicalOrderStack = new Stack<>();
+        boolean[] visited = new boolean[numberOfVertices];
+
+        Arrays.fill(visited, false);
+
+        for (int vertex = 0; vertex < numberOfVertices; vertex++) {
+            if (!visited[vertex]) {
+                performTopologicalSortUtil(vertex, visited, topologicalOrderStack);
+            }
+        }
+
+        // Print the topological order
+        System.out.println("Topological Sort Order:");
+        while (!topologicalOrderStack.isEmpty()) {
+            System.out.print(topologicalOrderStack.pop() + " ");
+        }
+    }
+
+    public static void main(String[] args) {
+        DirectedGraph graph = new DirectedGraph(6);
+        graph.addEdge(5, 2);
+        graph.addEdge(5, 0);
+        graph.addEdge(4, 0);
+        graph.addEdge(4, 1);
+        graph.addEdge(2, 3);
+        graph.addEdge(3, 1);
+
+        System.out.println("Performing Topological Sort:");
+        graph.performTopologicalSort();
+    }
+}
\ No newline at end of file
diff --git a/Travelling Salesman Problem.java b/Travelling Salesman Problem.java
new file mode 100644
index 00000000..c513f8c0
--- /dev/null
+++ b/Travelling Salesman Problem.java	
@@ -0,0 +1,72 @@
+// Java implementation of the approach
+class GFG 
+{
+
+	// Function to find the minimum weight 
+	// Hamiltonian Cycle
+	static int tsp(int[][] graph, boolean[] v, 
+				int currPos, int n, 
+				int count, int cost, int ans) 
+	{
+
+		// If last node is reached and it has a link
+		// to the starting node i.e the source then
+		// keep the minimum value out of the total cost
+		// of traversal and "ans"
+		// Finally return to check for more possible values
+		if (count == n && graph[currPos][0] > 0) 
+		{
+			ans = Math.min(ans, cost + graph[currPos][0]);
+			return ans;
+		}
+
+		// BACKTRACKING STEP
+		// Loop to traverse the adjacency list
+		// of currPos node and increasing the count
+		// by 1 and cost by graph[currPos,i] value
+		for (int i = 0; i < n; i++) 
+		{
+			if (v[i] == false && graph[currPos][i] > 0) 
+			{
+
+				// Mark as visited
+				v[i] = true;
+				ans = tsp(graph, v, i, n, count + 1,
+						cost + graph[currPos][i], ans);
+
+				// Mark ith node as unvisited
+				v[i] = false;
+			}
+		}
+		return ans;
+	}
+
+	// Driver code
+	public static void main(String[] args)
+	{
+
+		// n is the number of nodes i.e. V
+		int n = 4;
+
+		int[][] graph = {{0, 10, 15, 20},
+						{10, 0, 35, 25},
+						{15, 35, 0, 30},
+						{20, 25, 30, 0}};
+
+		// Boolean array to check if a node
+		// has been visited or not
+		boolean[] v = new boolean[n];
+
+		// Mark 0th node as visited
+		v[0] = true;
+		int ans = Integer.MAX_VALUE;
+
+		// Find the minimum weight Hamiltonian Cycle
+		ans = tsp(graph, v, 0, n, 1, 0, ans);
+
+		// ans is the minimum weight Hamiltonian Cycle
+		System.out.println(ans);
+	}
+}
+
+// This code is contributed by Raj Chakraborty
diff --git a/Tribonacci series/tribonacci.java b/Tribonacci series/tribonacci.java
new file mode 100644
index 00000000..6fd8e8f0
--- /dev/null
+++ b/Tribonacci series/tribonacci.java	
@@ -0,0 +1,31 @@
+public class TribonacciSeries {
+    public static void main(String[] args) {
+        int n = 10; // Change this value to the number of Tribonacci numbers you want to generate
+        generateTribonacciSeries(n);
+    }
+
+    public static void generateTribonacciSeries(int n) {
+        if (n <= 0) {
+            System.out.println("Invalid input. Please enter a positive integer.");
+            return;
+        }
+
+        long[] tribonacci = new long[n];
+        tribonacci[0] = 0;
+        if (n > 1) {
+            tribonacci[1] = 1;
+        }
+        if (n > 2) {
+            tribonacci[2] = 1;
+        }
+
+        for (int i = 3; i < n; i++) {
+            tribonacci[i] = tribonacci[i - 1] + tribonacci[i - 2] + tribonacci[i - 3];
+        }
+
+        System.out.println("Tribonacci Series (First " + n + " numbers):");
+        for (int i = 0; i < n; i++) {
+            System.out.print(tribonacci[i] + " ");
+        }
+    }
+}
diff --git a/TusharHacktoberfest1 b/TusharHacktoberfest1
new file mode 100644
index 00000000..80414856
--- /dev/null
+++ b/TusharHacktoberfest1
@@ -0,0 +1,147 @@
+*******************************************************    School management Project in java   ****************************************************************
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
+
+class Student {
+    private String studentId;
+    private String name;
+    
+    public Student(String studentId, String name) {
+        this.studentId = studentId;
+        this.name = name;
+    }
+    
+    public String getStudentId() {
+        return studentId;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    @Override
+    public String toString() {
+        return "Student ID: " + studentId + ", Name: " + name;
+    }
+}
+
+class Course {
+    private String courseId;
+    private String courseName;
+    
+    public Course(String courseId, String courseName) {
+        this.courseId = courseId;
+        this.courseName = courseName;
+    }
+    
+    public String getCourseId() {
+        return courseId;
+    }
+    
+    public String getCourseName() {
+        return courseName;
+    }
+    
+    @Override
+    public String toString() {
+        return "Course ID: " + courseId + ", Name: " + courseName;
+    }
+}
+
+public class SchoolManagementSystem {
+    private static Map<String, Student> students = new HashMap<>();
+    private static Map<String, Course> courses = new HashMap<>();
+    private static Map<String, List<String>> enrollments = new HashMap<>();
+    
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        
+        while (true) {
+            System.out.println("School Management System");
+            System.out.println("1. Add Student");
+            System.out.println("2. Add Course");
+            System.out.println("3. Enroll Student in Course");
+            System.out.println("4. List Enrolled Students in Course");
+            System.out.println("5. Exit");
+            System.out.print("Enter your choice: ");
+            
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline
+            
+            switch (choice) {
+                case 1:
+                    addStudent(scanner);
+                    break;
+                case 2:
+                    addCourse(scanner);
+                    break;
+                case 3:
+                    enrollStudentInCourse(scanner);
+                    break;
+                case 4:
+                    listEnrolledStudentsInCourse(scanner);
+                    break;
+                case 5:
+                    System.out.println("Exiting the program.");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+                    break;
+            }
+        }
+    }
+    
+    private static void addStudent(Scanner scanner) {
+        System.out.print("Enter student ID: ");
+        String studentId = scanner.nextLine();
+        System.out.print("Enter student name: ");
+        String name = scanner.nextLine();
+        
+        Student student = new Student(studentId, name);
+        students.put(studentId, student);
+        System.out.println("Student added successfully.");
+    }
+    
+    private static void addCourse(Scanner scanner) {
+        System.out.print("Enter course ID: ");
+        String courseId = scanner.nextLine();
+        System.out.print("Enter course name: ");
+        String courseName = scanner.nextLine();
+        
+        Course course = new Course(courseId, courseName);
+        courses.put(courseId, course);
+        System.out.println("Course added successfully.");
+    }
+    
+    private static void enrollStudentInCourse(Scanner scanner) {
+        System.out.print("Enter student ID: ");
+        String studentId = scanner.nextLine();
+        System.out.print("Enter course ID: ");
+        String courseId = scanner.nextLine();
+        
+        if (students.containsKey(studentId) && courses.containsKey(courseId)) {
+            enrollments.computeIfAbsent(courseId, k -> new ArrayList<>()).add(studentId);
+            System.out.println("Student enrolled in the course.");
+        } else {
+            System.out.println("Student or course not found. Please check the IDs.");
+        }
+    }
+    
+    private static void listEnrolledStudentsInCourse(Scanner scanner) {
+        System.out.print("Enter course ID: ");
+        String courseId = scanner.nextLine();
+        
+        if (courses.containsKey(courseId)) {
+            List<String> enrolledStudents = enrollments.getOrDefault(courseId, new ArrayList<>());
+            System.out.println("Enrolled students in the course:");
+            for (String studentId : enrolledStudents) {
+                System.out.println(students.get(studentId));
+            }
+        } else {
+            System.out.println("Course not found. Please check the course ID.");
+        }
+    }
+}
diff --git a/TwoGameFinal b/TwoGameFinal
new file mode 160000
index 00000000..b28616a9
--- /dev/null
+++ b/TwoGameFinal
@@ -0,0 +1 @@
+Subproject commit b28616a92f51ea06befaf180d86e2a9e740f8495
diff --git a/UDP_VIDEO_CALLER b/UDP_VIDEO_CALLER
new file mode 160000
index 00000000..3a15ea09
--- /dev/null
+++ b/UDP_VIDEO_CALLER
@@ -0,0 +1 @@
+Subproject commit 3a15ea09d233c138ffb0cde3a32770dd7a728fe7
diff --git a/UniqueElementsFinder.java b/UniqueElementsFinder.java
new file mode 100644
index 00000000..a1f81965
--- /dev/null
+++ b/UniqueElementsFinder.java
@@ -0,0 +1,32 @@
+import java.util.HashSet;
+import java.util.Arrays;
+
+public class UniqueElementsFinder {
+
+    public static int[] findUniqueElements(int[] arr) {
+        HashSet<Integer> uniqueElements = new HashSet<>();
+
+        for (int element : arr) {
+            uniqueElements.add(element);
+        }
+
+        int[] uniqueArray = new int[uniqueElements.size()];
+        int index = 0;
+
+        for (int element : uniqueElements) {
+            uniqueArray[index] = element;
+            index++;
+        }
+
+        return uniqueArray;
+    }
+
+    public static void main(String[] args) {
+        int[] arr = {1, 2, 2, 3, 4, 4, 5, 6, 6};
+
+        int[] uniqueArr = findUniqueElements(arr);
+
+        System.out.println("Original array: " + Arrays.toString(arr));
+        System.out.println("Unique elements: " + Arrays.toString(uniqueArr));
+    }
+}
diff --git a/UrlShortener.java b/UrlShortener.java
new file mode 100644
index 00000000..aaf52a53
--- /dev/null
+++ b/UrlShortener.java
@@ -0,0 +1,52 @@
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+public class UrlShortener {
+    private Map<String, String> urlMap = new HashMap<>();
+    private static final String BASE_URL = "http://short.url/";
+
+    public String shortenUrl(String originalUrl) {
+        String shortUrl = generateShortUrl(originalUrl);
+        urlMap.put(shortUrl, originalUrl);
+        return BASE_URL + shortUrl;
+    }
+
+    public String expandUrl(String shortUrl) {
+        String shortKey = shortUrl.substring(BASE_URL.length());
+        return urlMap.get(shortKey);
+    }
+
+    private String generateShortUrl(String originalUrl) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] digest = md.digest(originalUrl.getBytes());
+
+            StringBuilder shortUrl = new StringBuilder();
+            Random random = new Random();
+
+            for (int i = 0; i < 6; i++) {
+                int index = random.nextInt(digest.length);
+                shortUrl.append(String.format("%02x", digest[index]));
+            }
+
+            return shortUrl.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        UrlShortener urlShortener = new UrlShortener();
+
+        String longUrl = "https://www.example.com/some/long/url";
+        String shortUrl = urlShortener.shortenUrl(longUrl);
+        System.out.println("Short URL: " + shortUrl);
+
+        String expandedUrl = urlShortener.expandUrl(shortUrl);
+        System.out.println("Expanded URL: " + expandedUrl);
+    }
+}
diff --git a/Vehicle Management System/Main.java b/Vehicle Management System/Main.java
new file mode 100644
index 00000000..b92ab7c3
--- /dev/null
+++ b/Vehicle Management System/Main.java	
@@ -0,0 +1,46 @@
+import java.util.Scanner;
+
+public class Main {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        VehicleManager vehicleManager = new VehicleManager();
+
+        while (true) {
+            System.out.println("Vehicle Management System");
+            System.out.println("1. Add Vehicle");
+            System.out.println("2. View Vehicles");
+            System.out.println("3. Exit");
+            System.out.print("Enter your choice: ");
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter make: ");
+                    String make = scanner.nextLine();
+                    System.out.print("Enter model: ");
+                    String model = scanner.nextLine();
+                    System.out.print("Enter year: ");
+                    int year = scanner.nextInt();
+                    System.out.print("Enter price: ");
+                    double price = scanner.nextDouble();
+
+                    Vehicle newVehicle = new Vehicle(make, model, year, price);
+                    vehicleManager.addVehicle(newVehicle);
+                    System.out.println("Vehicle added successfully!");
+                    break;
+                case 2:
+                    System.out.println("All Vehicles:");
+                    for (Vehicle vehicle : vehicleManager.getAllVehicles()) {
+                        System.out.println(vehicle);
+                    }
+                    break;
+                case 3:
+                    System.out.println("Exiting...");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+}
diff --git a/Vehicle Management System/Vehicle.java b/Vehicle Management System/Vehicle.java
new file mode 100644
index 00000000..17120f04
--- /dev/null
+++ b/Vehicle Management System/Vehicle.java	
@@ -0,0 +1,34 @@
+public class Vehicle {
+    private String make;
+    private String model;
+    private int year;
+    private double price;
+
+    public Vehicle(String make, String model, int year, double price) {
+        this.make = make;
+        this.model = model;
+        this.year = year;
+        this.price = price;
+    }
+
+    public String getMake() {
+        return make;
+    }
+
+    public String getModel() {
+        return model;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    @Override
+    public String toString() {
+        return "Make: " + make + ", Model: " + model + ", Year: " + year + ", Price: $" + price;
+    }
+}
diff --git a/Vehicle Management System/VehicleManager.java b/Vehicle Management System/VehicleManager.java
new file mode 100644
index 00000000..be45a40f
--- /dev/null
+++ b/Vehicle Management System/VehicleManager.java	
@@ -0,0 +1,22 @@
+import java.util.ArrayList;
+import java.util.List;
+
+public class VehicleManager {
+    private List<Vehicle> vehicles;
+
+    public VehicleManager() {
+        vehicles = new ArrayList<>();
+    }
+
+    public void addVehicle(Vehicle vehicle) {
+        vehicles.add(vehicle);
+    }
+
+    public List<Vehicle> getAllVehicles() {
+        return vehicles;
+    }
+
+    public void removeVehicle(Vehicle vehicle) {
+        vehicles.remove(vehicle);
+    }
+}
diff --git a/Verbalize3524.java b/Verbalize3524.java
new file mode 100644
index 00000000..4d8353b0
--- /dev/null
+++ b/Verbalize3524.java
@@ -0,0 +1,40 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.Scanner;
+public class Verbalize3524{
+    // Arrays to store the verbal representations of units and tens
+    private static final String[] units = {
+            "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
+            "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"
+    };
+    private static final String[] tens = {
+            "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"
+    };
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.println("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+        Scanner scanner = new Scanner(System.in);
+        System.out.print("Enter a number between 1 and 9999: ");
+        int number = scanner.nextInt();
+        // Check for invalid input
+        while (number < 1 || number > 9999) {
+            System.out.print("Invalid input. Please enter a number between 1 and 9999: ");
+            number = scanner.nextInt();
+        }
+        // Convert the number to its verbal representation
+        String verbalized = convertToWords(number);
+        System.out.printf("Verbalized form:\n" + verbalized);
+    }
+    // Convert a number to its verbal representation
+    public static String convertToWords(int number) {
+        if (number < 20) {
+            return units[number]; // Directly use the units array
+        } else if (number < 100) {
+            return tens[number / 10] + " " + units[number % 10]; // Combine tens and units
+        } else if (number < 1000) {
+            return units[number / 100] + " Hundred and " + convertToWords(number % 100); // Handling hundreds by recursion
+        } else {
+            return units[number / 1000] + " Thousand and " + convertToWords(number % 1000); // Handling thousands by recursion
+        }
+    }
+}
diff --git a/Weather.py b/Weather.py
index c013e06f..e16d557c 100644
--- a/Weather.py
+++ b/Weather.py
@@ -3,36 +3,38 @@ def main():
     NUMBER_OF_HOURS = 24
 
     # Initialize data
-    data = [] 
-    for i in range(NUMBER_OF_DAYS):
-        data.append([])
-        for j in range(NUMBER_OF_HOURS):
-            data[i].append([])
-            data[i][j].append(0) # Temperature value
-            data[i][j].append(0) # Humidity value
+    data = initialize_data(NUMBER_OF_DAYS, NUMBER_OF_HOURS)
 
     # Read input using input redirection from a file
-    for k in range(NUMBER_OF_DAYS * NUMBER_OF_HOURS):
+    read_input(data, NUMBER_OF_DAYS, NUMBER_OF_HOURS)
+
+    # Find and display the average daily temperature and humidity
+    calculate_and_display_averages(data, NUMBER_OF_DAYS, NUMBER_OF_HOURS)
+
+
+def initialize_data(num_days, num_hours):
+    """Initialize a 3D list for storing temperature and humidity data."""
+    return [[[0, 0] for _ in range(num_hours)] for _ in range(num_days)]
+
+
+def read_input(data, num_days, num_hours):
+    """Read input data and populate the data list."""
+    for _ in range(num_days * num_hours):
         line = input().strip().split()
-        day = eval(line[0]) 
-        hour = eval(line[1]) 
-        temperature = eval(line[2]) 
-        humidity = eval(line[3]) 
-        data[day - 1][hour - 1][0] = temperature
-        data[day - 1][hour - 1][1] = humidity
-
-    # Find the average daily temperature and humidity
-    for i in range(NUMBER_OF_DAYS):
-        dailyTemperatureTotal = 0
-        dailyHumidityTotal = 0
-        for j in range(NUMBER_OF_HOURS):
-            dailyTemperatureTotal += data[i][j][0]
-            dailyHumidityTotal += data[i][j][1]
+        day, hour, temperature, humidity = map(eval, line)
+        data[day - 1][hour - 1] = [temperature, humidity]
+
+
+def calculate_and_display_averages(data, num_days, num_hours):
+    """Calculate and display the average daily temperature and humidity."""
+    for i in range(num_days):
+        daily_temperature_total = sum(data[i][j][0] for j in range(num_hours))
+        daily_humidity_total = sum(data[i][j][1] for j in range(num_hours))
 
         # Display result
-        print("Day" + str(i) + "'s average temperature is " 
-            + str(dailyTemperatureTotal / NUMBER_OF_HOURS))
-        print("Day " + str(i) + "'s average humidity is " 
-            + str(dailyHumidityTotal / NUMBER_OF_HOURS))
+        print(f"Day {i + 1}'s average temperature is {daily_temperature_total / num_hours:.2f}")
+        print(f"Day {i + 1}'s average humidity is {daily_humidity_total / num_hours:.2f}")
+
 
-main() # Call the main function
+if __name__ == "__main__":
+    main()  # Call the main function
diff --git a/Web_Page_Source_Viewer.java b/Web_Page_Source_Viewer.java
new file mode 100644
index 00000000..36a97a8b
--- /dev/null
+++ b/Web_Page_Source_Viewer.java
@@ -0,0 +1,51 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import java.io.InputStream;  
+import java.net.*;  
+public class SourceGetter extends Frame implements ActionListener{  
+    TextField tf;  
+    TextArea ta;  
+    Button b;  
+    Label l;  
+    SourceGetter(){  
+        super("Source Getter Tool - Javatpoint");  
+        l=new Label("Enter URL:");  
+        l.setBounds(50,50,50,20);  
+
+        tf=new TextField();  
+        tf.setBounds(120,50,250,20);  
+
+        b=new Button("Get Source Code");  
+        b.setBounds(120, 100,120,30);  
+        b.addActionListener(this);  
+
+        ta=new TextArea();  
+        ta.setBounds(120,150,250,150);  
+
+        add(l);add(tf);add(b);add(ta);  
+        setSize(400,400);  
+        setLayout(null);  
+        setVisible(true);  
+    }  
+    public void actionPerformed(ActionEvent e){  
+        String s=tf.getText();  
+        if(s==null){}  
+        else{  
+            try{  
+            URL u=new URL(s);  
+            URLConnection uc=u.openConnection();  
+
+            InputStream is=uc.getInputStream();  
+            int i;  
+            StringBuilder sb=new StringBuilder();  
+            while((i=is.read())!=-1){  
+                sb.append((char)i);  
+            }  
+            String source=sb.toString();  
+            ta.setText(source);  
+            }catch(Exception ex){System.out.println(e);}  
+        }  
+    }  
+    public static void main(String[] args) {  
+        new SourceGetter();  
+    }  
diff --git a/Websiteping/websiteping.java b/Websiteping/websiteping.java
new file mode 100644
index 00000000..b2adf844
--- /dev/null
+++ b/Websiteping/websiteping.java
@@ -0,0 +1,22 @@
+import java.net.InetAddress;
+
+public class PingExample {
+    public static void main(String[] args) {
+        String host = "www.google.com"; 
+
+        try {
+            InetAddress inetAddress = InetAddress.getByName(host);
+            long startTime = System.currentTimeMillis();
+
+            if (inetAddress.isReachable(5000)) {
+                long endTime = System.currentTimeMillis();
+                long pingTime = endTime - startTime;
+                System.out.println("Ping for " + host + " Successful. Time: " + pingTime + "ms");
+            } else {
+                System.out.println("Unable to ping host " + host);
+            }
+        } catch (Exception e) {
+            System.out.println("Error pinging host " + host + ": " + e.getMessage());
+        }
+    }
+}
diff --git a/WiggleSort.java b/WiggleSort.java
new file mode 100644
index 00000000..ad6fde35
--- /dev/null
+++ b/WiggleSort.java
@@ -0,0 +1,11 @@
+class Solution {
+    public void wiggleSort(int[] nums) {
+          Arrays.sort(nums);
+        int n = nums.length-1;
+        int []temp = new int[nums.length];
+
+        for(int i=1;i<nums.length;i+=2) temp[i]=nums[n--];
+        for(int i=0;i<nums.length;i+=2) temp[i]=nums[n--];
+        for(int i=0;i<nums.length;i++) nums[i]=temp[i];
+    }
+}
diff --git a/Word Guess Game/word_guess_game.java b/Word Guess Game/word_guess_game.java
new file mode 100644
index 00000000..fce3ecb9
--- /dev/null
+++ b/Word Guess Game/word_guess_game.java	
@@ -0,0 +1,59 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class RandomWordGuessingGame {
+    public static void main(String[] args) {
+        String[] words = {"apple", "banana", "chocolate", "elephant", "giraffe"};
+        Random random = new Random();
+        String targetWord = words[random.nextInt(words.length)];
+        String currentGuess = maskWord(targetWord);
+        int numberOfTries = 0;
+
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("Welcome to the Random Word Guessing Game!");
+        System.out.println("Can you guess the word? Let's get started!");
+
+        while (!currentGuess.equals(targetWord)) {
+            System.out.println("Current Guess: " + currentGuess);
+            System.out.print("Enter a letter: ");
+            String letter = scanner.next().toLowerCase();
+
+            if (letter.length() != 1 || !Character.isLetter(letter.charAt(0))) {
+                System.out.println("Please enter a single letter.");
+                continue;
+            }
+
+            if (targetWord.contains(letter)) {
+                currentGuess = updateCurrentGuess(targetWord, currentGuess, letter);
+                System.out.println("Good guess!");
+            } else {
+                System.out.println("Sorry, that letter is not in the word.");
+            }
+
+            numberOfTries++;
+        }
+
+        System.out.println("Congratulations! You guessed the word '" + targetWord + "' in " + numberOfTries + " tries.");
+    }
+
+    // Mask the target word with underscores.
+    private static String maskWord(String word) {
+        StringBuilder maskedWord = new StringBuilder();
+        for (int i = 0; i < word.length(); i++) {
+            maskedWord.append('_');
+        }
+        return maskedWord.toString();
+    }
+
+    // Update the current guess with correctly guessed letters.
+    private static String updateCurrentGuess(String target, String currentGuess, String letter) {
+        StringBuilder updatedGuess = new StringBuilder(currentGuess);
+        for (int i = 0; i < target.length(); i++) {
+            if (target.charAt(i) == letter.charAt(0)) {
+                updatedGuess.setCharAt(i, letter.charAt(0));
+            }
+        }
+        return updatedGuess.toString();
+    }
+}
diff --git a/Word Riddle Game/word_riddle_game.java b/Word Riddle Game/word_riddle_game.java
new file mode 100644
index 00000000..6b35d4c2
--- /dev/null
+++ b/Word Riddle Game/word_riddle_game.java	
@@ -0,0 +1,43 @@
+import java.util.Scanner;
+
+public class WordRiddleGame {
+
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        // Define a list of riddles and their answers
+        String[] riddles = {
+            "I am taken from a mine, and shut up in a wooden case, from which I am never released, and yet I am used by almost every person. What am I?",
+            "I speak without a mouth and hear without ears. I have no body, but I come alive with the wind. What am I?",
+            // Add more riddles here
+        };
+        String[] answers = {
+            "Pencil",
+            "Echo",
+            // Add more answers here
+        };
+
+        // Game loop
+        for (int i = 0; i < riddles.length; i++) {
+            System.out.println("Riddle " + (i + 1) + ": " + riddles[i]);
+            System.out.print("Your answer: ");
+            String userAnswer = scanner.nextLine();
+
+            if (userAnswer.equalsIgnoreCase(answers[i])) {
+                System.out.println("Correct! You solved the riddle.");
+            } else {
+                System.out.println("Incorrect. The answer is: " + answers[i]);
+            }
+
+            // Ask if the player wants to play another riddle
+            System.out.print("Do you want to play another riddle? (yes/no): ");
+            String playAgain = scanner.nextLine().toLowerCase();
+            if (!playAgain.equals("yes")) {
+                break; // Exit the game if the user doesn't want to play again
+            }
+        }
+
+        System.out.println("Thanks for playing!");
+        scanner.close();
+    }
+}
diff --git a/Zigzag_Conversion.java b/Zigzag_Conversion.java
new file mode 100644
index 00000000..7d708e94
--- /dev/null
+++ b/Zigzag_Conversion.java
@@ -0,0 +1,19 @@
+class Solution {
+public String convert(String s, int nRows) {
+    char[] c = s.toCharArray();
+    int len = c.length;
+    StringBuffer[] sb = new StringBuffer[nRows];
+    for (int i = 0; i < sb.length; i++) sb[i] = new StringBuffer();
+
+    int i = 0;
+    while (i < len) {
+        for (int idx = 0; idx < nRows && i < len; idx++) // vertically down
+            sb[idx].append(c[i++]);
+        for (int idx = nRows-2; idx >= 1 && i < len; idx--) // obliquely up
+            sb[idx].append(c[i++]);
+    }
+    for (int idx = 1; idx < sb.length; idx++)
+        sb[0].append(sb[idx]);
+    return sb[0].toString();
+}
+}
diff --git a/addElementinlinkedList b/addElementinlinkedList
new file mode 100644
index 00000000..68895c6d
--- /dev/null
+++ b/addElementinlinkedList
@@ -0,0 +1,53 @@
+
+import java.util.Scanner;
+
+public class insertioninSortedLL {     
+    public  static  class Node {
+        int data;
+        Node next;
+        Node(int data) {
+            this.data = data;
+        }
+    }
+        public static class Linkedlist2 {
+            Node head = null;
+            Node tail = null;
+
+            void display() {
+                Node temp = head;
+                while (temp != null) {
+                    System.out.print(temp.data + " ");
+                    temp = temp.next;
+                }
+                System.out.println();
+            }
+            void toAddElement(int val) {    //
+                Node n = new Node(val);
+                Node temp = head;
+                Node prev = null;
+                while(temp!=null){
+                     if(temp.data>val)break;
+                    prev=temp;
+                    temp=temp.next;
+                }
+                if(prev!=null){
+                    Node cur=prev.next;
+                    prev.next=n;
+                    n.next=cur;
+                } else {
+                    n.next=head;
+                    head=n;
+                }
+            }  
+        }
+    public static void main(String[] args) {
+        Scanner sc =new Scanner(System.in);
+        Linkedlist2 obj = new Linkedlist2();
+        for(int i =1;i<=5;i++){
+            System.out.println("enter the number ");
+            int n =sc.nextInt();
+           obj. toAddElement(n);
+        }
+       obj. display();
+    }
+}
diff --git a/addressbook.java b/addressbook.java
new file mode 100644
index 00000000..6c26643f
--- /dev/null
+++ b/addressbook.java
@@ -0,0 +1,93 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Contact {
+    private String name;
+    private String phoneNumber;
+    private String email;
+
+    public Contact(String name, String phoneNumber, String email) {
+        this.name = name;
+        this.phoneNumber = phoneNumber;
+        this.email = email;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    @Override
+    public String toString() {
+        return "Name: " + name + "\nPhone: " + phoneNumber + "\nEmail: " + email;
+    }
+}
+
+public class AddressBook {
+    public static void main(String[] args) {
+        ArrayList<Contact> contacts = new ArrayList<>();
+        Scanner scanner = new Scanner(System.in);
+
+        while (true) {
+            System.out.println("\nAddress Book Menu:");
+            System.out.println("1. Add Contact");
+            System.out.println("2. View All Contacts");
+            System.out.println("3. Search Contact by Name");
+            System.out.println("4. Edit Contact");
+            System.out.println("5. Delete Contact");
+            System.out.println("6. Exit");
+            System.out.print("Select an option: ");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter Name: ");
+                    String name = scanner.nextLine();
+                    System.out.print("Enter Phone Number: ");
+                    String phoneNumber = scanner.nextLine();
+                    System.out.print("Enter Email: ");
+                    String email = scanner.nextLine();
+                    contacts.add(new Contact(name, phoneNumber, email));
+                    System.out.println("Contact added successfully!");
+                    break;
+                case 2:
+                    System.out.println("All Contacts:");
+                    for (Contact contact : contacts) {
+                        System.out.println(contact);
+                    }
+                    break;
+                case 3:
+                    System.out.print("Enter Name to Search: ");
+                    String searchName = scanner.nextLine();
+                    for (Contact contact : contacts) {
+                        if (contact.getName().equalsIgnoreCase(searchName)) {
+                            System.out.println(contact);
+                            break;
+                        }
+                    }
+                    break;
+                case 4:
+                    // Implement editing a contact
+                    break;
+                case 5:
+                    // Implement deleting a contact
+                    break;
+                case 6:
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                    break;
+                default:
+                    System.out.println("Invalid option. Please select a valid option.");
+            }
+        }
+    }
+}
diff --git a/alaram-clock.java b/alaram-clock.java
new file mode 100644
index 00000000..8cb04c5c
--- /dev/null
+++ b/alaram-clock.java
@@ -0,0 +1,25 @@
+import java.util.Timer;
+import java.util.TimerTask;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class AlarmClock {
+
+    public static void main(String[] args) {
+        // Set the alarm time (24-hour format)
+        String alarmTime = "15:30"; // Change this to your desired alarm time
+
+        // Create a timer
+        Timer timer = new Timer();
+
+        // Define a task to be executed when the alarm time is reached
+        TimerTask task = new TimerTask() {
+            public void run() {
+                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                String currentTime = sdf.format(new Date());
+                if (currentTime.equals(alarmTime)) {
+                    System.out.println("Alarm! It's time to wake up!");
+                    // You can replace the message with any action you want
+                }
+            }
+        };
\ No newline at end of file
diff --git a/app/.gradle/7.4.2/checksums/checksums.lock b/app/.gradle/7.4.2/checksums/checksums.lock
new file mode 100644
index 00000000..dd9cd579
Binary files /dev/null and b/app/.gradle/7.4.2/checksums/checksums.lock differ
diff --git a/app/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock b/app/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock
new file mode 100644
index 00000000..8e36a26f
Binary files /dev/null and b/app/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock differ
diff --git a/app/.gradle/7.4.2/dependencies-accessors/gc.properties b/app/.gradle/7.4.2/dependencies-accessors/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/app/.gradle/7.4.2/fileChanges/last-build.bin b/app/.gradle/7.4.2/fileChanges/last-build.bin
new file mode 100644
index 00000000..f76dd238
Binary files /dev/null and b/app/.gradle/7.4.2/fileChanges/last-build.bin differ
diff --git a/app/.gradle/7.4.2/fileHashes/fileHashes.lock b/app/.gradle/7.4.2/fileHashes/fileHashes.lock
new file mode 100644
index 00000000..773c38d5
Binary files /dev/null and b/app/.gradle/7.4.2/fileHashes/fileHashes.lock differ
diff --git a/app/.gradle/7.4.2/gc.properties b/app/.gradle/7.4.2/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 00000000..b6a33e25
Binary files /dev/null and b/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/app/.gradle/buildOutputCleanup/cache.properties b/app/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 00000000..01438d28
--- /dev/null
+++ b/app/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Tue Oct 17 20:55:57 IST 2023
+gradle.version=7.4.2
diff --git a/app/.gradle/vcs-1/gc.properties b/app/.gradle/vcs-1/gc.properties
new file mode 100644
index 00000000..e69de29b
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 00000000..4c11ebc7
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,39 @@
+plugins {
+    id 'com.android.application'
+}
+
+android {
+    namespace 'com.bibo.bmicalculator'
+    compileSdk 33
+
+    defaultConfig {
+        applicationId "com.bibo.bmicalculator"
+        minSdk 24
+        targetSdk 33
+        versionCode 1
+        versionName "1.0"
+
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+        }
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+}
+
+dependencies {
+
+    implementation 'androidx.appcompat:appcompat:1.6.1'
+    implementation 'com.google.android.material:material:1.5.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+    testImplementation 'junit:junit:4.13.2'
+    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/app/src/androidTest/java/com/bibo/bmicalculator/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/bibo/bmicalculator/ExampleInstrumentedTest.java
new file mode 100644
index 00000000..a91b40b8
--- /dev/null
+++ b/app/src/androidTest/java/com/bibo/bmicalculator/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.bibo.bmicalculator;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+        assertEquals("com.bibo.bmicalculator", appContext.getPackageName());
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..a1721d81
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <application
+        android:allowBackup="true"
+        android:dataExtractionRules="@xml/data_extraction_rules"
+        android:fullBackupContent="@xml/backup_rules"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:roundIcon="@mipmap/ic_launcher_round"
+        android:supportsRtl="true"
+        android:theme="@style/Theme.BmiCalculator"
+        tools:targetApi="31">
+        <activity
+            android:name=".MainActivity"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 00000000..dfcc53cd
Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/com/bibo/bmicalculator/MainActivity.java b/app/src/main/java/com/bibo/bmicalculator/MainActivity.java
new file mode 100644
index 00000000..9f24d281
--- /dev/null
+++ b/app/src/main/java/com/bibo/bmicalculator/MainActivity.java
@@ -0,0 +1,76 @@
+package com.bibo.bmicalculator;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class MainActivity extends AppCompatActivity {
+
+    @SuppressLint({"MissingInflatedId", "SetTextI18n"})
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        EditText edtweight, edtage,edtheightft,edtheightIn,edtname;
+        Button button1;
+        TextView result;
+        LinearLayout llmaincolor;
+
+        edtweight=findViewById(R.id.edtweight);
+//        edtage=findViewById(R.id.edtage);
+//        edtname=findViewById(R.id.edtname);
+        edtheightft=findViewById(R.id.edtheightft);
+        edtheightIn=findViewById(R.id.edtheightin);
+        button1=findViewById(R.id.but1);
+        llmaincolor=findViewById(R.id.llmain);
+        result=findViewById(R.id.result);
+
+        button1.setOnClickListener(view -> {
+            int wt=Integer.parseInt(edtweight.getText().toString());
+            int In=Integer.parseInt(edtheightIn.getText().toString());
+            int ft=Integer.parseInt(edtheightft.getText().toString());
+//                String name=edtname.getText().toString();
+//                int age=Integer.parseInt(edtage.getText().toString());
+//                double hegFt=ft*12*2.54*0.01;
+//                double hegIn=In*2.54*0.01;
+            int totalIn=ft*12+In;
+            double total_height_meter=totalIn*2.54*0.01;
+            double res= wt/(total_height_meter*total_height_meter);
+            if (wt>0 && ft>0 ) {
+
+
+            if (res>25){
+                result.setText("You are overweight!.");
+                llmaincolor.setBackgroundColor(getResources().getColor(R.color.llmain));
+            }else if(res<18){
+                result.setText("your are underweight!.");
+                llmaincolor.setBackgroundColor(getResources().getColor(R.color.llmainlessweight));
+
+            }else{
+                result.setText("You are healthy!");
+                llmaincolor.setBackgroundColor(getResources().getColor(R.color.llmainhealthy));
+            }
+
+
+        }else{
+                if (wt<=0 && ft>0){
+                    result.setText("Body Weight should not be 0. ");
+
+                } else if (ft<=0 && wt>=0) {
+                    result.setText("Height should not be 0 ");
+
+                } else {
+                    result.setText("Body Weight and Height should not be 0 ");
+                    }
+            }});
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+    <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
+        <aapt:attr name="android:fillColor">
+            <gradient
+                android:endX="85.84757"
+                android:endY="92.4963"
+                android:startX="42.9492"
+                android:startY="49.59793"
+                android:type="linear">
+                <item
+                    android:color="#44000000"
+                    android:offset="0.0" />
+                <item
+                    android:color="#00000000"
+                    android:offset="1.0" />
+            </gradient>
+        </aapt:attr>
+    </path>
+    <path
+        android:fillColor="#FFFFFF"
+        android:fillType="nonZero"
+        android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
+        android:strokeWidth="1"
+        android:strokeColor="#00000000" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+    <path
+        android:fillColor="#3DDC84"
+        android:pathData="M0,0h108v108h-108z" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M9,0L9,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,0L19,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,0L29,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,0L39,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,0L49,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,0L59,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,0L69,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,0L79,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M89,0L89,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M99,0L99,108"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,9L108,9"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,19L108,19"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,29L108,29"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,39L108,39"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,49L108,49"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,59L108,59"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,69L108,69"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,79L108,79"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,89L108,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M0,99L108,99"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,29L89,29"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,39L89,39"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,49L89,49"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,59L89,59"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,69L89,69"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M19,79L89,79"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M29,19L29,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M39,19L39,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M49,19L49,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M59,19L59,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M69,19L69,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+    <path
+        android:fillColor="#00000000"
+        android:pathData="M79,19L79,89"
+        android:strokeWidth="0.8"
+        android:strokeColor="#33FFFFFF" />
+</vector>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..db55fb88
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:id="@+id/llmain"
+    android:gravity="center"
+    tools:context=".MainActivity">
+
+
+<!--    <EditText-->
+<!--        android:layout_width="wrap_content"-->
+<!--        android:layout_height="wrap_content"-->
+<!--        android:inputType="text"-->
+<!--        android:hint="@string/edtname"-->
+<!--        android:id="@+id/edtname"-->
+<!--        android:ems="10" />-->
+
+
+<!--        <EditText-->
+<!--        android:layout_width="wrap_content"-->
+<!--        android:layout_height="wrap_content"-->
+<!--        android:hint="@string/edtext3"-->
+<!--        android:id="@+id/edtage"-->
+<!--        android:inputType="number"-->
+<!--        android:ems="10"/>-->
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+
+        android:layout_marginBottom="55dp"
+        android:text="@string/weltext"
+        android:textSize="30dp"
+        android:textColor="@color/black"
+        android:textStyle="bold"/>
+
+    <EditText
+        android:id="@+id/edtweight"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:ems="10"
+        android:hint="@string/edtext2"
+        android:inputType="number" />
+
+    <EditText
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:inputType="number"
+        android:id="@+id/edtheightft"
+        android:hint="@string/edtextft"
+        android:ems="10" />
+
+    <EditText
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:inputType="number"
+        android:id="@+id/edtheightin"
+        android:hint="@string/edtextin"
+        android:ems="10" />
+    <Button
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Calculate BMI"
+        android:layout_marginTop="11dp"
+        android:id="@+id/but1"
+        android:ems="13"
+        />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@+id/result"
+        android:text="_____Results_____"
+        android:ems="8"
+        android:layout_marginTop="16dp"
+        android:textSize="25dp"
+        android:textStyle="bold"
+        android:layout_marginLeft="12dp"
+        />
+
+</LinearLayout>
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@color/ic_launcher_background"/>
+    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@color/ic_launcher_background"/>
+    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..a7cabff2
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..959f180a
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..4e5cc1aa
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..97518527
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..447a31d5
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..61db097a
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..5ce80205
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..5e24d25f
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..727e8354
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..039c6f9d
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..3da5ceb3
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..6cba5dc1
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..089366fe
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..4f47038e
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..2947e6a8
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..17abd4ec
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,7 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <!-- Base application theme. -->
+    <style name="Base.Theme.BmiCalculator" parent="Theme.Material3.DayNight.NoActionBar">
+        <!-- Customize your dark theme here. -->
+        <!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
+    </style>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..588dac93
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="black">#FF000000</color>
+    <color name="white">#FFFFFFFF</color>
+    <color name="llmain">#E3352F</color>
+    <color name="llmainhealthy">#17B542</color>
+    <color name="llmainlessweight">#ECEC57</color>
+    <color name="pinky">#B5BDB5</color>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..55b08d6c
--- /dev/null
+++ b/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="ic_launcher_background">#DC3D3D</color>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..6155f8c0
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,10 @@
+<resources>
+    <string name="app_name">Bmi calculator</string>
+    <string name="edtextft">Enter your height(Ft)</string>
+    <string name="edtextin">Enter your height(In)</string>
+    <string name="edtext2">Enter your weight</string>
+    <string name="edtext3">Enter your age</string>
+<string name="edtname">Enter your Name</string>
+    <string name="weltext">BMI Calculator </string>
+    <string name="weltextdwn">___Calculator___ </string>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..880e6db2
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,9 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <!-- Base application theme. -->
+    <style name="Base.Theme.BmiCalculator" parent="Theme.Material3.DayNight.NoActionBar">
+        <!-- Customize your light theme here. -->
+        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
+    </style>
+
+    <style name="Theme.BmiCalculator" parent="Base.Theme.BmiCalculator" />
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 00000000..fa0f996d
--- /dev/null
+++ b/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+   Sample backup rules file; uncomment and customize as necessary.
+   See https://developer.android.com/guide/topics/data/autobackup
+   for details.
+   Note: This file is ignored for devices older that API 31
+   See https://developer.android.com/about/versions/12/backup-restore
+-->
+<full-backup-content>
+    <!--
+   <include domain="sharedpref" path="."/>
+   <exclude domain="sharedpref" path="device.xml"/>
+-->
+</full-backup-content>
\ No newline at end of file
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 00000000..9ee9997b
--- /dev/null
+++ b/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+   Sample data extraction rules file; uncomment and customize as necessary.
+   See https://developer.android.com/about/versions/12/backup-restore#xml-changes
+   for details.
+-->
+<data-extraction-rules>
+    <cloud-backup>
+        <!-- TODO: Use <include> and <exclude> to control what is backed up.
+        <include .../>
+        <exclude .../>
+        -->
+    </cloud-backup>
+    <!--
+    <device-transfer>
+        <include .../>
+        <exclude .../>
+    </device-transfer>
+    -->
+</data-extraction-rules>
\ No newline at end of file
diff --git a/app/src/test/java/com/bibo/bmicalculator/ExampleUnitTest.java b/app/src/test/java/com/bibo/bmicalculator/ExampleUnitTest.java
new file mode 100644
index 00000000..72a05737
--- /dev/null
+++ b/app/src/test/java/com/bibo/bmicalculator/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.bibo.bmicalculator;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() {
+        assertEquals(4, 2 + 2);
+    }
+}
\ No newline at end of file
diff --git a/appletComs.java b/appletComs.java
new file mode 100644
index 00000000..371f046f
--- /dev/null
+++ b/appletComs.java
@@ -0,0 +1,21 @@
+import java.applet.*;  
+import java.awt.*;  
+import java.awt.event.*;  
+public class ContextApplet extends Applet implements ActionListener{  
+Button b;  
+  
+public void init(){  
+b=new Button("Click");  
+b.setBounds(50,50,60,50);  
+  
+add(b);  
+b.addActionListener(this);  
+}  
+  
+public void actionPerformed(ActionEvent e){  
+  
+AppletContext ctx=getAppletContext();  
+Applet a=ctx.getApplet("app2");  
+a.setBackground(Color.yellow);  
+}  
+}  
diff --git a/appletQuiz.java b/appletQuiz.java
new file mode 100644
index 00000000..534f1cbf
--- /dev/null
+++ b/appletQuiz.java
@@ -0,0 +1,187 @@
+*Online Java Paper Test*/  
+  
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.*;  
+  
+class OnlineTest extends JFrame implements ActionListener  
+{  
+    JLabel l;  
+    JRadioButton jb[]=new JRadioButton[5];  
+    JButton b1,b2;  
+    ButtonGroup bg;  
+    int count=0,current=0,x=1,y=1,now=0;  
+    int m[]=new int[10];      
+    OnlineTest(String s)  
+    {  
+        super(s);  
+        l=new JLabel();  
+        add(l);  
+        bg=new ButtonGroup();  
+        for(int i=0;i<5;i++)  
+        {  
+            jb[i]=new JRadioButton();     
+            add(jb[i]);  
+            bg.add(jb[i]);  
+        }  
+        b1=new JButton("Next");  
+        b2=new JButton("Bookmark");  
+        b1.addActionListener(this);  
+        b2.addActionListener(this);  
+        add(b1);add(b2);  
+        set();  
+        l.setBounds(30,40,450,20);  
+        jb[0].setBounds(50,80,100,20);  
+        jb[1].setBounds(50,110,100,20);  
+        jb[2].setBounds(50,140,100,20);  
+        jb[3].setBounds(50,170,100,20);  
+        b1.setBounds(100,240,100,30);  
+        b2.setBounds(270,240,100,30);  
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
+        setLayout(null);  
+        setLocation(250,100);  
+        setVisible(true);  
+        setSize(600,350);  
+    }  
+    public void actionPerformed(ActionEvent e)  
+    {  
+        if(e.getSource()==b1)  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            set();    
+            if(current==9)  
+            {  
+                b1.setEnabled(false);  
+                b2.setText("Result");  
+            }  
+        }  
+        if(e.getActionCommand().equals("Bookmark"))  
+        {  
+            JButton bk=new JButton("Bookmark"+x);  
+            bk.setBounds(480,20+30*x,100,30);  
+            add(bk);  
+            bk.addActionListener(this);  
+            m[x]=current;  
+            x++;  
+            current++;  
+            set();    
+            if(current==9)  
+                b2.setText("Result");  
+            setVisible(false);  
+            setVisible(true);  
+        }  
+        for(int i=0,y=1;i<x;i++,y++)  
+        {  
+        if(e.getActionCommand().equals("Bookmark"+y))  
+        {  
+            if(check())  
+                count=count+1;  
+            now=current;  
+            current=m[y];  
+            set();  
+            ((JButton)e.getSource()).setEnabled(false);  
+            current=now;  
+        }  
+        }  
+      
+        if(e.getActionCommand().equals("Result"))  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            //System.out.println("correct ans="+count);  
+            JOptionPane.showMessageDialog(this,"correct ans="+count);  
+            System.exit(0);  
+        }  
+    }  
+    void set()  
+    {  
+        jb[4].setSelected(true);  
+        if(current==0)  
+        {  
+            l.setText("Que1: Which one among these is not a primitive datatype?");  
+            jb[0].setText("int");jb[1].setText("Float");jb[2].setText("boolean");jb[3].setText("char");   
+        }  
+        if(current==1)  
+        {  
+            l.setText("Que2: Which class is available to all the class automatically?");  
+            jb[0].setText("Swing");jb[1].setText("Applet");jb[2].setText("Object");jb[3].setText("ActionEvent");  
+        }  
+        if(current==2)  
+        {  
+            l.setText("Que3: Which package is directly available to our class without importing it?");  
+            jb[0].setText("swing");jb[1].setText("applet");jb[2].setText("net");jb[3].setText("lang");  
+        }  
+        if(current==3)  
+        {  
+            l.setText("Que4: String class is defined in which package?");  
+            jb[0].setText("lang");jb[1].setText("Swing");jb[2].setText("Applet");jb[3].setText("awt");  
+        }  
+        if(current==4)  
+        {  
+            l.setText("Que5: Which institute is best for java coaching?");  
+            jb[0].setText("Utek");jb[1].setText("Aptech");jb[2].setText("SSS IT");jb[3].setText("jtek");  
+        }  
+        if(current==5)  
+        {  
+            l.setText("Que6: Which one among these is not a keyword?");  
+            jb[0].setText("class");jb[1].setText("int");jb[2].setText("get");jb[3].setText("if");  
+        }  
+        if(current==6)  
+        {  
+            l.setText("Que7: Which one among these is not a class? ");  
+            jb[0].setText("Swing");jb[1].setText("Actionperformed");jb[2].setText("ActionEvent");  
+                        jb[3].setText("Button");  
+        }  
+        if(current==7)  
+        {  
+            l.setText("Que8: which one among these is not a function of Object class?");  
+            jb[0].setText("toString");jb[1].setText("finalize");jb[2].setText("equals");  
+                        jb[3].setText("getDocumentBase");         
+        }  
+        if(current==8)  
+        {  
+            l.setText("Que9: which function is not present in Applet class?");  
+            jb[0].setText("init");jb[1].setText("main");jb[2].setText("start");jb[3].setText("destroy");  
+        }  
+        if(current==9)  
+        {  
+            l.setText("Que10: Which one among these is not a valid component?");  
+            jb[0].setText("JButton");jb[1].setText("JList");jb[2].setText("JButtonGroup");  
+                        jb[3].setText("JTextArea");  
+        }  
+        l.setBounds(30,40,450,20);  
+        for(int i=0,j=0;i<=90;i+=30,j++)  
+            jb[j].setBounds(50,80+i,200,20);  
+    }  
+    boolean check()  
+    {  
+        if(current==0)  
+            return(jb[1].isSelected());  
+        if(current==1)  
+            return(jb[2].isSelected());  
+        if(current==2)  
+            return(jb[3].isSelected());  
+        if(current==3)  
+            return(jb[0].isSelected());  
+        if(current==4)  
+            return(jb[2].isSelected());  
+        if(current==5)  
+            return(jb[2].isSelected());  
+        if(current==6)  
+            return(jb[1].isSelected());  
+        if(current==7)  
+            return(jb[3].isSelected());  
+        if(current==8)  
+            return(jb[1].isSelected());  
+        if(current==9)  
+            return(jb[2].isSelected());  
+        return false;  
+    }  
+    public static void main(String s[])  
+    {  
+        new OnlineTest("Online Test Of Java");  
+    }  
+}  
diff --git a/attendance_percent.java b/attendance_percent.java
new file mode 100644
index 00000000..a466d5a2
--- /dev/null
+++ b/attendance_percent.java
@@ -0,0 +1,24 @@
+import java.util.*;
+
+public class AttendancePercentage {
+
+    public static void main(String[] args) {
+
+        // Create an array to store the attendance data
+        int[] attendanceData = {1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,1};
+
+        // Calculate the total number of classes attended
+        int totalClassesAttended = 0;
+        for (int attendance : attendanceData) {
+            if (attendance == 1) {
+                totalClassesAttended++;
+            }
+        }
+
+        // Calculate the attendance percentage
+        double attendancePercentage = (double) totalClassesAttended / attendanceData.length * 100;
+
+        // Display the attendance percentage
+        System.out.println("The attendance percentage is " + attendancePercentage + "%");
+    }
+}
diff --git a/binToDec.java b/binToDec.java
new file mode 100644
index 00000000..fd618d61
--- /dev/null
+++ b/binToDec.java
@@ -0,0 +1,27 @@
+import java.util.Scanner;
+
+public class binToDec {
+
+
+    public static void binToDecConversion(int binNum){
+        int myNum = binNum;
+        int pow = 0;
+        int decNum = 0;
+        
+        while(binNum > 0){
+            int lastDigit = binNum % 10;
+            decNum = decNum + (lastDigit * (int)Math.pow(2, pow));
+            pow++;
+
+            binNum = binNum / 10;
+        }
+        System.out.println("decimal of " + myNum + " = " + decNum);
+
+    }
+    public static void main(String args[]){
+        Scanner sc = new Scanner(System.in);
+
+        binToDecConversion(100);
+        sc.close();
+    }
+}
diff --git a/bootstrap b/bootstrap
new file mode 160000
index 00000000..b04c9518
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1 @@
+Subproject commit b04c9518f0fb794a6d0f40686ed4ad00ff79969d
diff --git a/calc.java b/calc.java
new file mode 100644
index 00000000..7c6e8c7b
--- /dev/null
+++ b/calc.java
@@ -0,0 +1,75 @@
+// Java program for simple calculator 
+
+import java.io.*; 
+import java.lang.*; 
+import java.lang.Math; 
+import java.util.Scanner; 
+public class BasicCalculator { 
+
+	public static void main(String[] args) 
+	{ 
+		// stores two numbers 
+		double num1, num2; 
+
+		// Take input from the user 
+		Scanner sc = new Scanner(System.in); 
+
+		System.out.println("Enter the numbers"); 
+
+		// take the inputs 
+		num1 = sc.nextDouble(); 
+
+		num2 = sc.nextDouble(); 
+
+		System.out.println("Enter the operator (+,-,*,/)"); 
+
+		char op = sc.next().charAt(0); 
+
+		double o = 0; 
+
+		switch (op) { 
+
+		// case to add two numbers 
+		case '+': 
+
+			o = num1 + num2; 
+
+			break; 
+
+		// case to subtract two numbers 
+		case '-': 
+
+			o = num1 - num2; 
+
+			break; 
+
+		// case to multiply two numbers 
+		case '*': 
+
+			o = num1 * num2; 
+
+			break; 
+
+		// case to divide two numbers 
+		case '/': 
+
+			o = num1 / num2; 
+
+			break; 
+
+		default: 
+
+			System.out.println("You enter wrong input"); 
+
+			break; 
+		} 
+
+		System.out.println("The final result:"); 
+
+		System.out.println(); 
+
+		// print the final result 
+		System.out.println(num1 + " " + op + " " + num2 
+						+ " = " + o); 
+	} 
+}
diff --git a/calculator.java b/calculator.java
new file mode 100644
index 00000000..a1ad6216
--- /dev/null
+++ b/calculator.java
@@ -0,0 +1,56 @@
+import java.util.Scanner;
+
+class Main {
+  public static void main(String[] args) {
+
+    char operator;
+    Double number1, number2, result;
+
+    // create an object of Scanner class
+    Scanner input = new Scanner(System.in);
+
+    // ask users to enter operator
+    System.out.println("Choose an operator: +, -, *, or /");
+    operator = input.next().charAt(0);
+
+    // ask users to enter numbers
+    System.out.println("Enter first number");
+    number1 = input.nextDouble();
+
+    System.out.println("Enter second number");
+    number2 = input.nextDouble();
+
+    switch (operator) {
+
+      // performs addition between numbers
+      case '+':
+        result = number1 + number2;
+        System.out.println(number1 + " + " + number2 + " = " + result);
+        break;
+
+      // performs subtraction between numbers
+      case '-':
+        result = number1 - number2;
+        System.out.println(number1 + " - " + number2 + " = " + result);
+        break;
+
+      // performs multiplication between numbers
+      case '*':
+        result = number1 * number2;
+        System.out.println(number1 + " * " + number2 + " = " + result);
+        break;
+
+      // performs division between numbers
+      case '/':
+        result = number1 / number2;
+        System.out.println(number1 + " / " + number2 + " = " + result);
+        break;
+
+      default:
+        System.out.println("Invalid operator!");
+        break;
+    }
+
+    input.close();
+  }
+}
\ No newline at end of file
diff --git a/clockapplet.java b/clockapplet.java
new file mode 100644
index 00000000..5464e050
--- /dev/null
+++ b/clockapplet.java
@@ -0,0 +1,101 @@
+import java.applet.*;  
+import java.awt.*;  
+import java.util.*;  
+import java.text.*;  
+  
+public class MyClock extends Applet implements Runnable {  
+  
+   int width, height;  
+   Thread t = null;  
+   boolean threadSuspended;  
+   int hours=0, minutes=0, seconds=0;  
+   String timeString = "";  
+  
+   public void init() {  
+      width = getSize().width;  
+      height = getSize().height;  
+      setBackground( Color.black );  
+   }  
+  
+   public void start() {  
+      if ( t == null ) {  
+         t = new Thread( this );  
+         t.setPriority( Thread.MIN_PRIORITY );  
+         threadSuspended = false;  
+         t.start();  
+      }  
+      else {  
+         if ( threadSuspended ) {  
+            threadSuspended = false;  
+            synchronized( this ) {  
+               notify();  
+            }  
+         }  
+      }  
+   }  
+  
+   public void stop() {  
+      threadSuspended = true;  
+   }  
+  
+   public void run() {  
+      try {  
+         while (true) {  
+  
+            Calendar cal = Calendar.getInstance();  
+            hours = cal.get( Calendar.HOUR_OF_DAY );  
+            if ( hours > 12 ) hours -= 12;  
+            minutes = cal.get( Calendar.MINUTE );  
+            seconds = cal.get( Calendar.SECOND );  
+  
+            SimpleDateFormat formatter  
+               = new SimpleDateFormat( "hh:mm:ss", Locale.getDefault() );  
+            Date date = cal.getTime();  
+            timeString = formatter.format( date );  
+  
+            // Now the thread checks to see if it should suspend itself  
+            if ( threadSuspended ) {  
+               synchronized( this ) {  
+                  while ( threadSuspended ) {  
+                     wait();  
+                  }  
+               }  
+            }  
+            repaint();  
+            t.sleep( 1000 );  // interval specified in milliseconds  
+         }  
+      }  
+      catch (Exception e) { }  
+   }  
+  
+   void drawHand( double angle, int radius, Graphics g ) {  
+      angle -= 0.5 * Math.PI;  
+      int x = (int)( radius*Math.cos(angle) );  
+      int y = (int)( radius*Math.sin(angle) );  
+      g.drawLine( width/2, height/2, width/2 + x, height/2 + y );  
+   }  
+  
+   void drawWedge( double angle, int radius, Graphics g ) {  
+      angle -= 0.5 * Math.PI;  
+      int x = (int)( radius*Math.cos(angle) );  
+      int y = (int)( radius*Math.sin(angle) );  
+      angle += 2*Math.PI/3;  
+      int x2 = (int)( 5*Math.cos(angle) );  
+      int y2 = (int)( 5*Math.sin(angle) );  
+      angle += 2*Math.PI/3;  
+      int x3 = (int)( 5*Math.cos(angle) );  
+      int y3 = (int)( 5*Math.sin(angle) );  
+      g.drawLine( width/2+x2, height/2+y2, width/2 + x, height/2 + y );  
+      g.drawLine( width/2+x3, height/2+y3, width/2 + x, height/2 + y );  
+      g.drawLine( width/2+x2, height/2+y2, width/2 + x3, height/2 + y3 );  
+   }  
+  
+   public void paint( Graphics g ) {  
+      g.setColor( Color.gray );  
+      drawWedge( 2*Math.PI * hours / 12, width/5, g );  
+      drawWedge( 2*Math.PI * minutes / 60, width/3, g );  
+      drawHand( 2*Math.PI * seconds / 60, width/2, g );  
+      g.setColor( Color.white );  
+      g.drawString( timeString, 10, height-10 );  
+   }  
+}  
diff --git a/cloudscripts/eventarc.txt b/cloudscripts/eventarc.txt
new file mode 100644
index 00000000..e85c1742
--- /dev/null
+++ b/cloudscripts/eventarc.txt
@@ -0,0 +1,59 @@
+REGION=us-east1
+
+
+gcloud config set project "$DEVSHELL_PROJECT_ID"
+gcloud config set run/region "$REGION"
+gcloud config set run/platform managed
+gcloud config set eventarc/location "$REGION"
+
+export PROJECT_NUMBER="$(gcloud projects list \
+  --filter=$(gcloud config get-value project) \
+  --format='value(PROJECT_NUMBER)')"
+
+gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
+  --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
+  --role='roles/eventarc.admin'
+
+gcloud beta eventarc attributes types list
+gcloud beta eventarc attributes types describe \
+  google.cloud.pubsub.topic.v1.messagePublished
+
+export SERVICE_NAME=event-display
+export IMAGE_NAME="gcr.io/cloudrun/hello"
+gcloud run deploy ${SERVICE_NAME} \
+  --image ${IMAGE_NAME} \
+  --allow-unauthenticated \
+  --max-instances=3
+
+
+gcloud beta eventarc attributes types describe \
+  google.cloud.pubsub.topic.v1.messagePublished
+gcloud beta eventarc triggers create trigger-pubsub \
+  --destination-run-service=${SERVICE_NAME} \
+  --matching-criteria="type=google.cloud.pubsub.topic.v1.messagePublished"
+export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \
+  --format='value(transport.pubsub.topic)')
+gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
+
+export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket
+gsutil mb -p $(gcloud config get-value project) \
+  -l $(gcloud config get-value run/region) \
+  gs://${BUCKET_NAME}/
+
+#---------AUDIT LOGS : Google Cloud Storage -----------------
+echo "Hello World" > random.txt
+gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
+
+
+gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written
+gcloud beta eventarc triggers create trigger-auditlog \
+--destination-run-service=${SERVICE_NAME} \
+--matching-criteria="type=google.cloud.audit.log.v1.written" \
+--matching-criteria="serviceName=storage.googleapis.com" \
+--matching-criteria="methodName=storage.objects.create" \
+--service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
+
+gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
+
+#----------WAIT FOR 10 MINUTES and RUN BELOW COMMAND AGAIN 2-3 TIMES--------
+gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
diff --git a/code.java b/code.java
new file mode 100644
index 00000000..07b4c1ea
--- /dev/null
+++ b/code.java
@@ -0,0 +1,39 @@
+// Java Program to print pattern 
+// Palindrome triangle 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+
+		// outer loop to handle number of rows 
+		for (i = 1; i <= n; i++) { 
+			// inner loop to print the spaces 
+			for (j = 1; j <= 2 * (n - i); j++) { 
+				System.out.print(" "); 
+			} 
+
+			// inner loop to print the first part 
+			for (j = i; j >= 1; j--) { 
+				System.out.print(j + " "); 
+			} 
+
+			// inner loop to print the second part 
+			for (j = 2; j <= i; j++) { 
+				System.out.print(j + " "); 
+			} 
+
+			// printing new line for each row 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/currency Convertor/currency.java b/currency Convertor/currency.java
new file mode 100644
index 00000000..a585a9d5
--- /dev/null
+++ b/currency Convertor/currency.java	
@@ -0,0 +1,127 @@
+/*
+* To change this template, choose Tools | Templates
+* and open the template in the editor.
+*/
+package com.exchange;
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
+import java.io.InputStream;
+import java.net.*;
+import com.google.gson.*;
+
+/**
+*
+* @author pakallis
+*/
+class Recv
+{
+private String lhs;
+private String rhs;
+private String error;
+private String icc;
+public Recv(
+{
+}
+public String getLhs()
+{
+return lhs;
+}
+public String getRhs()
+{
+return rhs;
+}
+}
+public class Convert extends HttpServlet {
+    /**
+	* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
+	* @param request servlet request
+	* @param response servlet response
+	* @throws ServletException if a servlet-specific error occurs
+	* @throws IOException if an I/O error occurs
+	*/
+    protected void processRequest(HttpServletRequest req, HttpServletResponse resp)
+            throws ServletException, IOException {
+        String query = "";
+        String amount = "";
+        String curTo = "";
+        String curFrom = "";
+        String submit = "";
+        String res = "";
+        HttpSession session;
+        resp.setContentType("text/html;charset=UTF-8");
+        PrintWriter out = resp.getWriter();
+        /*Read request parameters*/
+        amount = req.getParameter("amount");
+        curTo = req.getParameter("to");
+        curFrom = req.getParameter("from");
+        /*Open a connection to google and read the result*/
+
+        try {
+            query = "http://www.google.com/ig/calculator?hl=en&q=" + amount + curFrom + "=?" + curTo;
+            URL url = new URL(query);
+            InputStreamReader stream = new InputStreamReader(url.openStream());
+            BufferedReader in = new BufferedReader(stream);
+            String str = "";
+            String temp = "";
+            while ((temp = in.readLine()) != null) {
+                str = str + temp;
+            }
+
+            /*Parse the result which is in json format*/
+            Gson gson = new Gson();
+            Recv st = gson.fromJson(str, Recv.class);
+            String rhs = st.getRhs();
+            rhs = rhs.replaceAll("�", "");
+            /*we do the check in order to print the additional word(millions,billions etc)*/
+            StringTokenizer strto = new StringTokenizer(rhs);
+            String nextToken;
+
+            out.write(strto.nextToken());
+            nextToken = strto.nextToken();
+
+            if( nextToken.equals("million") || nextToken.equals("billion") || nextToken.equals("trillion"))
+            {
+                out.println(" "+nextToken);
+            }
+        } catch (NumberFormatException e) {
+            out.println("The given amount is not a valid number");
+        }
+    }
+    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
+    /**
+	* Handles the HTTP <code>GET</code> method.
+	* @param request servlet request
+	* @param response servlet response
+	* @throws ServletException if a servlet-specific error occurs
+	* @throws IOException if an I/O error occurs
+	*/
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        processRequest(request, response);
+    }
+    /**
+	* Handles the HTTP <code>POST</code> method.
+	* @param request servlet request
+	* @param response servlet response
+	* @throws ServletException if a servlet-specific error occurs
+	* @throws IOException if an I/O error occurs
+	*/
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response)
+            throws ServletException, IOException {
+        processRequest(request, response);
+    }
+    /**
+	* Returns a short description of the servlet.
+	* @return a String containing servlet description
+	*/
+    @Override
+    public String getServletInfo() {
+        return "Short description";
+    }// </editor-fold>
+}
\ No newline at end of file
diff --git a/currencyconvert.java b/currencyconvert.java
index 970b0ea5..cdd849a2 100644
--- a/currencyconvert.java
+++ b/currencyconvert.java
@@ -48,7 +48,7 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re
                 Gson gson = new Gson();
                 Recv st = gson.fromJson(str, Recv.class);
                 String rhs = st.getRhs();
-                rhs = rhs.replaceAll("�", "");
+                rhs = rhs.replace("�", "");
 
                 /* Check if there are additional words (millions, billions, etc.) and print them */
                 StringTokenizer strto = new StringTokenizer(rhs);
diff --git a/dataType3524.java b/dataType3524.java
new file mode 100644
index 00000000..c368a324
--- /dev/null
+++ b/dataType3524.java
@@ -0,0 +1,19 @@
+public class dataType3524 {
+//    // Integer data types
+//    byte byteValue = 127; // Correct
+//    // byte byteValue = 128; // Incorrect: Value exceeds the valid range (-128 to 127)
+//    long longValue = 9223372036854775807; // Incorrect, require L at the end
+//    long longValue = 9223372036854775807L; // Correct
+//    long longValue = 9223372036854775807; // Incorrect, require L at the end
+//    long longValue = 9223372036854775808L; // Incorrect: Value exceeds the valid range
+//    // Floating-point data types
+//    float floatValue = 3.14f; // Correct
+//    float floatValue = 3.14; // Incorrect: Floating-point literals need 'f' or 'F' suffix
+//    // Boolean data type
+//    double doubleValue = 3.14159; // Correct
+//    // Character data type
+//    char charValue = 'A'; // Correct
+//    char charValue = "A"; // Incorrect: Use single quotes for characters
+//    boolean booleanValue = true; // Correct
+//    boolean booleanValue = 0; // Incorrect: Use 'true' or 'false' for boolean values
+}
diff --git a/dateTime3524.java b/dateTime3524.java
new file mode 100644
index 00000000..98b0c675
--- /dev/null
+++ b/dateTime3524.java
@@ -0,0 +1,17 @@
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class dateTime3524 {
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B \n");
+        LocalDateTime current = LocalDateTime.now(); //"LocalDateTime" is the class
+        //"now()" is a method, represent the current date and time
+        DateTimeFormatter dateformat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter timeformat = DateTimeFormatter.ofPattern("HH:mm:ss");
+        // ofPattern() is used to format the date in a particular pattern
+        String formattedDate = current.format(dateformat);
+        System.out.print("Date: " + formattedDate);
+        String formattedTime = current.format(timeformat);
+        System.out.println(" Time: " + formattedTime);
+    }
+}
\ No newline at end of file
diff --git a/decToBin.java b/decToBin.java
new file mode 100644
index 00000000..5782b6dc
--- /dev/null
+++ b/decToBin.java
@@ -0,0 +1,27 @@
+import java.util.Scanner;
+
+public class decToBin {
+
+    public static void decToBinConversion(int n){
+        int myNum = n;
+        int pow = 0;
+        int binNum = 0;
+
+        while(n > 0){
+            int rem = n % 2;
+            binNum = binNum + (rem * (int)Math.pow(10, pow));
+            pow++;
+            n = n / 2;
+        }
+        System.out.println("binary form of " + myNum + " = " + binNum);
+
+    }
+    public static void main(String args[]){
+        Scanner sc = new Scanner(System.in);
+
+        decToBinConversion(7);
+
+
+        sc.close();
+    }
+}
diff --git a/digitalWatch3524.java b/digitalWatch3524.java
new file mode 100644
index 00000000..c60d9f48
--- /dev/null
+++ b/digitalWatch3524.java
@@ -0,0 +1,58 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.Scanner;
+public class digitalWatch3524 {
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.println("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+        Scanner scanner = new Scanner(System.in);
+        // Prompt the user for input
+        System.out.print("Input day (Mon, Tue, Wed, Thu, Fri, Sat, Sun): ");
+        String day = scanner.nextLine();
+        System.out.print("Input hour (24-hour): ");
+        int hour = scanner.nextInt();
+        System.out.print("Input minute: ");
+        int minute = scanner.nextInt();
+        System.out.print("Input second: ");
+        int second = scanner.nextInt();
+        // Validating day input
+        if (!isValidDay(day)) {
+            System.out.println("Invalid day input!");
+        } else if (hour < 0 || hour > 23 || minute < 0 || minute > 59 || second < 0 || second > 59) {
+            System.out.println("Invalid time input!");
+        } else {
+            // Advancing time by one second
+            second++;
+            if (second == 60) {
+                second = 0;
+                minute++;
+                if (minute == 60) {
+                    minute = 0;
+                    hour++;
+                    if (hour == 24) {
+                        hour = 0;
+                        day = getNextDay(day);
+                    }
+                }
+            }
+            // Displaying the new time
+            System.out.println("New time: " + day + " " + hour + " " + minute + " " + second);
+        }
+    }
+    // Checking if the given day is valid
+    public static boolean isValidDay(String day) {
+        return day.equals("Mon") || day.equals("Tue") || day.equals("Wed") ||
+                day.equals("Thu") || day.equals("Fri") || day.equals("Sat") || day.equals("Sun");
+    }
+    // Getting the next day
+    public static String getNextDay(String day) {
+        if (day.equals("Sun")) return "Mon";
+        if (day.equals("Mon")) return "Tue";
+        if (day.equals("Tue")) return "Wed";
+        if (day.equals("Wed")) return "Thu";
+        if (day.equals("Thu")) return "Fri";
+        if (day.equals("Fri")) return "Sat";
+        if (day.equals("Sat")) return "Sun";
+        return "";
+    }
+}
diff --git a/displayImage.java b/displayImage.java
new file mode 100644
index 00000000..7d8ff1b3
--- /dev/null
+++ b/displayImage.java
@@ -0,0 +1,17 @@
+import java.awt.*;  
+import java.applet.*;  
+  
+  
+public class DisplayImage extends Applet {  
+  
+  Image picture;  
+  
+  public void init() {  
+    picture = getImage(getDocumentBase(),"sonoo.jpg");  
+  }  
+    
+  public void paint(Graphics g) {  
+    g.drawImage(picture, 30,30, this);  
+  }  
+      
+  }  
diff --git a/duck number b/duck number
new file mode 100644
index 00000000..b5a510f7
--- /dev/null
+++ b/duck number	
@@ -0,0 +1,33 @@
+ import java.util.Scanner;
+public class DuckNUMBER {
+    public static void main(String[] args) {
+        Scanner sc = new Scanner(System.in);
+        int num = sc.nextInt();
+        int rev = 0;
+        int count = 0;
+        int count2 = 0;
+        for (int i = 1; i <= num; i++) {
+            int num2 = num % i;
+            if (num2 == 0) {
+                count++;
+            }
+        }
+        if (count == 2) {
+            while (num != 0) {
+                int num3 = num % 10;
+                rev = rev * 10 + num3;
+                num = num / 10;
+            }
+            System.out.println(+rev);
+            for (int i = 1; i <= rev; i++) {
+                int num4 = rev % i;
+                if (rev % i == 0) {
+                    count2++;
+                }
+            }
+            if (count2 == 2) {
+                System.out.println(+rev + " : " + "is a twisted prime");
+            }
+        }
+    }
+}
diff --git a/enumerations.java b/enumerations.java
new file mode 100644
index 00000000..2d596746
--- /dev/null
+++ b/enumerations.java
@@ -0,0 +1,10 @@
+enum Day {
+    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
+}
+
+public class EnumDemo {
+    public static void main(String[] args) {
+        Day today = Day.SUNDAY;
+        System.out.println("Today is " + today);
+    }
+}
diff --git a/exam.class b/exam.class
new file mode 100644
index 00000000..6724f4ea
Binary files /dev/null and b/exam.class differ
diff --git a/exam.java b/exam.java
new file mode 100644
index 00000000..a69e3325
--- /dev/null
+++ b/exam.java
@@ -0,0 +1,185 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.*;  
+  
+class exam extends JFrame implements ActionListener  
+{  
+    JLabel l;  
+    JRadioButton jb[]=new JRadioButton[5];  
+    JButton b1,b2;  
+    ButtonGroup bg;  
+    int count=0,current=0,x=1,y=1,now=0;  
+    int m[]=new int[10];      
+    exam(String s)  
+    {  
+        super(s);  
+        l=new JLabel();  
+        add(l);  
+        bg=new ButtonGroup();  
+        for(int i=0;i<5;i++)  
+        {  
+            jb[i]=new JRadioButton();     
+            add(jb[i]);  
+            bg.add(jb[i]);  
+        }  
+        b1=new JButton("Next");  
+        b2=new JButton("Bookmark");  
+        b1.addActionListener(this);  
+        b2.addActionListener(this);  
+        add(b1);add(b2);  
+        set();  
+        l.setBounds(30,40,450,20);  
+        jb[0].setBounds(50,80,100,20);  
+        jb[1].setBounds(50,110,100,20);  
+        jb[2].setBounds(50,140,100,20);  
+        jb[3].setBounds(50,170,100,20);  
+        b1.setBounds(100,240,100,30);  
+        b2.setBounds(270,240,100,30);  
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
+        setLayout(null);  
+        setLocation(250,100);  
+        setVisible(true);  
+        setSize(600,350);  
+    }  
+    public void actionPerformed(ActionEvent e)  
+    {  
+        if(e.getSource()==b1)  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            set();    
+            if(current==9)  
+            {  
+                b1.setEnabled(false);  
+                b2.setText("Result");  
+            }  
+        }  
+        if(e.getActionCommand().equals("Bookmark"))  
+        {  
+            JButton bk=new JButton("Bookmark"+x);  
+            bk.setBounds(480,20+30*x,100,30);  
+            add(bk);  
+            bk.addActionListener(this);  
+            m[x]=current;  
+            x++;  
+            current++;  
+            set();    
+            if(current==9)  
+                b2.setText("Result");  
+            setVisible(false);  
+            setVisible(true);  
+        }  
+        for(int i=0,y=1;i<x;i++,y++)  
+        {  
+        if(e.getActionCommand().equals("Bookmark"+y))  
+        {  
+            if(check())  
+                count=count+1;  
+            now=current;  
+            current=m[y];  
+            set();  
+            ((JButton)e.getSource()).setEnabled(false);  
+            current=now;  
+        }  
+        }  
+      
+        if(e.getActionCommand().equals("Result"))  
+        {  
+            if(check())  
+                count=count+1;  
+            current++;  
+            //System.out.println("correct ans="+count);  
+            JOptionPane.showMessageDialog(this,"correct ans="+count);  
+            System.exit(0);  
+        }  
+    }  
+    void set()  
+    {  
+        jb[4].setSelected(true);  
+        if(current==0)  
+        {  
+            l.setText("Que1: Which one among these is not a primitive datatype?");  
+            jb[0].setText("int");jb[1].setText("Float");jb[2].setText("boolean");jb[3].setText("char");   
+        }  
+        if(current==1)  
+        {  
+            l.setText("Que2: Which class is available to all the class automatically?");  
+            jb[0].setText("Swing");jb[1].setText("Applet");jb[2].setText("Object");jb[3].setText("ActionEvent");  
+        }  
+        if(current==2)  
+        {  
+            l.setText("Que3: Which package is directly available to our class without importing it?");  
+            jb[0].setText("swing");jb[1].setText("applet");jb[2].setText("net");jb[3].setText("lang");  
+        }  
+        if(current==3)  
+        {  
+            l.setText("Que4: String class is defined in which package?");  
+            jb[0].setText("lang");jb[1].setText("Swing");jb[2].setText("Applet");jb[3].setText("awt");  
+        }  
+        if(current==4)  
+        {  
+            l.setText("Que5: Which institute is best for java coaching?");  
+            jb[0].setText("Utek");jb[1].setText("Aptech");jb[2].setText("SSS IT");jb[3].setText("jtek");  
+        }  
+        if(current==5)  
+        {  
+            l.setText("Que6: Which one among these is not a keyword?");  
+            jb[0].setText("class");jb[1].setText("int");jb[2].setText("get");jb[3].setText("if");  
+        }  
+        if(current==6)  
+        {  
+            l.setText("Que7: Which one among these is not a class? ");  
+            jb[0].setText("Swing");jb[1].setText("Actionperformed");jb[2].setText("ActionEvent");  
+                        jb[3].setText("Button");  
+        }  
+        if(current==7)  
+        {  
+            l.setText("Que8: which one among these is not a function of Object class?");  
+            jb[0].setText("toString");jb[1].setText("finalize");jb[2].setText("equals");  
+                        jb[3].setText("getDocumentBase");         
+        }  
+        if(current==8)  
+        {  
+            l.setText("Que9: which function is not present in Applet class?");  
+            jb[0].setText("init");jb[1].setText("main");jb[2].setText("start");jb[3].setText("destroy");  
+        }  
+        if(current==9)  
+        {  
+            l.setText("Que10: Which one among these is not a valid component?");  
+            jb[0].setText("JButton");jb[1].setText("JList");jb[2].setText("JButtonGroup");  
+                        jb[3].setText("JTextArea");  
+        }  
+        l.setBounds(30,40,450,20);  
+        for(int i=0,j=0;i<=90;i+=30,j++)  
+            jb[j].setBounds(50,80+i,200,20);  
+    }  
+    boolean check()  
+    {  
+        if(current==0)  
+            return(jb[1].isSelected());  
+        if(current==1)  
+            return(jb[2].isSelected());  
+        if(current==2)  
+            return(jb[3].isSelected());  
+        if(current==3)  
+            return(jb[0].isSelected());  
+        if(current==4)  
+            return(jb[2].isSelected());  
+        if(current==5)  
+            return(jb[2].isSelected());  
+        if(current==6)  
+            return(jb[1].isSelected());  
+        if(current==7)  
+            return(jb[3].isSelected());  
+        if(current==8)  
+            return(jb[1].isSelected());  
+        if(current==9)  
+            return(jb[2].isSelected());  
+        return false;  
+    }  
+    public static void main(String s[])  
+    {  
+        new exam("Online Test Of Java");  
+    }  
+}  
\ No newline at end of file
diff --git a/factorial.java b/factorial.java
new file mode 100644
index 00000000..168ae190
--- /dev/null
+++ b/factorial.java
@@ -0,0 +1,19 @@
+import java.util.Scanner;
+
+public class factorial {
+    public static void main(String[] args) {
+        Scanner in = new Scanner(System.in);
+     System.out.print("Input a number: ");
+     int n = in.nextInt(); 
+     in.close();
+     int fact = 1;
+     
+     while(n>0){
+        fact= fact*n;
+        n--;
+     }
+     System.err.println("factorial of your number is = " + fact );
+    }
+    
+    
+}
diff --git a/fileexplorer.java b/fileexplorer.java
new file mode 100644
index 00000000..9f520db3
--- /dev/null
+++ b/fileexplorer.java
@@ -0,0 +1,206 @@
+import java.io.*;  
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.*;  
+import javax.swing.tree.*;  
+/***********************************/  
+class Explorer extends JPanel implements ActionListener  
+{  
+JTextField jtf;  
+JTextArea jta;  
+JTree tree;  
+JButton refresh;  
+JTable jtb;  
+JScrollPane jsp;  
+JScrollPane jspTable;  
+  
+String currDirectory=null;  
+  
+final String[] colHeads={"File Name","SIZE(in Bytes)","Read Only","Hidden"};  
+String[][]data={{"","","","",""}};  
+  
+/////////////////////////////////  
+Explorer(String path)  
+{  
+  
+jtf=new JTextField();  
+jta=new JTextArea(5,30);  
+refresh=new JButton("Refresh");  
+  
+File temp=new File(path);  
+DefaultMutableTreeNode top=createTree(temp);  
+  
+//if(top!=null)  
+  
+tree=new JTree(top);  
+  
+jsp=new JScrollPane(tree);  
+  
+final String[] colHeads={"File Name","SIZE(in Bytes)","Read Only","Hidden"};  
+String[][]data={{"","","","",""}};  
+jtb=new JTable(data, colHeads);  
+jspTable=new JScrollPane(jtb);  
+  
+setLayout(new BorderLayout());  
+add(jtf,BorderLayout.NORTH);  
+add(jsp,BorderLayout.WEST);  
+add(jspTable,BorderLayout.CENTER);  
+add(refresh,BorderLayout.SOUTH);  
+  
+tree.addMouseListener(  
+new MouseAdapter()  
+{  
+public void mouseClicked(MouseEvent me)  
+{  
+doMouseClicked(me);  
+}  
+});  
+jtf.addActionListener(this);  
+refresh.addActionListener(this);  
+}  
+///////////////////////////////  
+public void actionPerformed(ActionEvent ev)  
+{  
+File temp=new File(jtf.getText());  
+DefaultMutableTreeNode newtop=createTree(temp);  
+if(newtop!=null)  
+    tree=new JTree(newtop);  
+remove(jsp);  
+jsp=new JScrollPane(tree);  
+setVisible(false);  
+add(jsp,BorderLayout.WEST);  
+tree.addMouseListener(  
+new MouseAdapter()  
+{  
+public void mouseClicked(MouseEvent me)  
+{  
+doMouseClicked(me);  
+}  
+});  
+  
+setVisible(true);  
+}  
+//////////////////////////////  
+  
+DefaultMutableTreeNode createTree(File temp)  
+{  
+DefaultMutableTreeNode top=new DefaultMutableTreeNode(temp.getPath());  
+if(!(temp.exists() && temp.isDirectory()))  
+    return top;  
+  
+fillTree(top,temp.getPath());  
+  
+return top;  
+}  
+//////////////////////////////  
+void fillTree(DefaultMutableTreeNode root, String filename)  
+{  
+File temp=new File(filename);  
+  
+if(!(temp.exists() && temp.isDirectory()))  
+    return;  
+//System.out.println(filename);  
+File[] filelist=temp.listFiles();  
+  
+for(int i=0; i<filelist.length; i++)  
+{  
+if(!filelist[i].isDirectory())  
+    continue;  
+final DefaultMutableTreeNode tempDmtn=new DefaultMutableTreeNode(filelist[i].getName());  
+root.add(tempDmtn);  
+final String newfilename=new String(filename+"\\"+filelist[i].getName());  
+Thread t=new Thread()  
+{  
+public void run()  
+{  
+fillTree(tempDmtn,newfilename);  
+}//run  
+};//thread  
+if(t==null)   
+    {System.out.println("no more thread allowed "+newfilename);return;}  
+t.start();  
+}//for  
+}//function  
+//////////////////////////////  
+void doMouseClicked(MouseEvent me)  
+{  
+TreePath tp=tree.getPathForLocation(me.getX(),me.getY());  
+if(tp==null) return;  
+//jtf.setText(tp.toString());  
+String s=tp.toString();  
+s=s.replace("[","");  
+s=s.replace("]","");  
+s=s.replace(", ","\\");  
+//s=s.replace(" ","");  
+//int z=s.lastIndexOf("\"\\\"");  
+//s="\'"+s; s=s+"\'";  
+jtf.setText(s);  
+showFiles(s);  
+//java.util.StringTokenizer st=new java.util.StringTokenizer(s,",");  
+//jtf.setText(jtf.getText()+"="+s);  
+  
+}  
+////////////////////////////////  
+void showFiles(String filename)  
+{  
+File temp=new File(filename);  
+data=new String[][]{{"","","",""}};  
+remove(jspTable);  
+jtb=new JTable(data, colHeads);  
+jspTable=new JScrollPane(jtb);  
+setVisible(false);  
+add(jspTable,BorderLayout.CENTER);  
+setVisible(true);  
+  
+if(!temp.exists()) return;  
+if(!temp.isDirectory()) return;  
+  
+//System.out.println(filename);  
+File[] filelist=temp.listFiles();  
+int fileCounter=0;  
+data=new String[filelist.length][4];  
+for(int i=0; i<filelist.length; i++)  
+{  
+if(filelist[i].isDirectory())  
+    continue;  
+data[fileCounter][0]=new String(filelist[i].getName());  
+data[fileCounter][1]=new String(filelist[i].length()+"");  
+data[fileCounter][2]=new String(!filelist[i].canWrite()+"");  
+data[fileCounter][3]=new String(filelist[i].isHidden()+"");  
+fileCounter++;  
+}//for  
+  
+String dataTemp[][]=new String[fileCounter][4];  
+for(int k=0; k<fileCounter; k++)  
+    dataTemp[k]=data[k];  
+data=dataTemp;  
+  
+//System.out.println(data);  
+remove(jspTable);  
+jtb=new JTable(data, colHeads);  
+jspTable=new JScrollPane(jtb);  
+setVisible(false);  
+add(jspTable,BorderLayout.CENTER);  
+setVisible(true);  
+}  
+////////////////////////////////  
+///////////////////////////////  
+}  
+/***********************************/  
+class ExplorerTest extends JFrame  
+{  
+  
+ExplorerTest(String path)  
+{  
+super("Windows Exploder - Javatpoint");  
+add(new Explorer(path),"Center");  
+setDefaultCloseOperation(EXIT_ON_CLOSE);  
+setSize(400,400);  
+setVisible(true);  
+}  
+  
+public static void main(String[] args)  
+{  
+new ExplorerTest(".");  
+}  
+}  
diff --git a/finalVelocity3524.java b/finalVelocity3524.java
new file mode 100644
index 00000000..7afecda9
--- /dev/null
+++ b/finalVelocity3524.java
@@ -0,0 +1,21 @@
+import java.util.Scanner;
+public class finalVelocity3524 {
+    public static void main(String[] args){
+        Scanner in = new Scanner(System.in);
+        System.out.println("2021503524 - Mugundh J B - 09/09/23 - 3 pm");
+
+        System.out.print("Enter the starting speed: ");
+        float u = in.nextFloat();
+        System.out.print("Enter the acceleration: ");
+        float a = in.nextFloat();
+        System.out.print("Enter the time: ");
+        float t = in.nextFloat();
+
+        float d = (float) (u * t + (0.5 * a * t * t)); // Formula to calc displacement
+        System.out.printf("The displacement is %.2f", d);
+
+        float v = u + a * t; // Formula to calc final velocity
+        System.out.printf("\nThe final velocity is %.2f", v);
+
+    }
+}
diff --git a/flight_ticket.java b/flight_ticket.java
new file mode 100644
index 00000000..9ab37e66
--- /dev/null
+++ b/flight_ticket.java
@@ -0,0 +1,45 @@
+import java.util.Scanner;
+
+public class Flight {
+    private String flightNumber;
+    private String sourceLocation;
+    private String destination;
+    private int numberOfTickets;
+    private double ticketFare;
+
+    public void inputFlightData() {
+        Scanner scanner = new Scanner(System.in);
+        System.out.print("Enter Flight Number: ");
+        flightNumber = scanner.nextLine();
+        System.out.print("Enter Source Location: ");
+        sourceLocation = scanner.nextLine();
+        System.out.print("Enter Destination: ");
+        destination = scanner.nextLine();
+        System.out.print("Enter Number of Tickets: ");
+        numberOfTickets = scanner.nextInt();
+        System.out.print("Enter Ticket Fare: ");
+        ticketFare = scanner.nextDouble();
+    }
+
+    public double calculateTicketAmount() {
+        double ticketAmount = numberOfTickets * ticketFare;
+        double tax = 0.18 * ticketAmount;
+        double discount = 0.05 * ticketAmount;
+        return ticketAmount + tax - discount;
+    }
+
+    public void printTicketDetails() {
+        System.out.println("Flight Number: " + flightNumber);
+        System.out.println("Source Location: " + sourceLocation);
+        System.out.println("Destination: " + destination);
+        System.out.println("Number of Tickets: " + numberOfTickets);
+        System.out.println("Ticket Fare: " + ticketFare);
+        System.out.println("Total Amount Payable: " + calculateTicketAmount());
+    }
+
+    public static void main(String[] args) {
+        Flight flight = new Flight();
+        flight.inputFlightData();
+        flight.printTicketDetails();
+    }
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 00000000..3e927b11
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/gradlew b/gradlew
new file mode 100644
index 00000000..4f906e0c
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 00000000..107acd32
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem      https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/greet.java b/greet.java
new file mode 100644
index 00000000..23ef60e4
--- /dev/null
+++ b/greet.java
@@ -0,0 +1,35 @@
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import java.awt.FlowLayout;
+import javax.swing.JTextField;
+import javax.swing.ImageIcon;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+public class OwlGreeting extends JFrame implements ActionListener{
+   JLabel labelQuestion, labelGreeting;
+   JTextField textAnswer;
+   ImageIcon owl;
+   public OwlGreeting(){
+     setLayout(new FlowLayout());
+     labelQuestion = new JLabel("Whooooo's there?");
+     textAnswer = new JTextField(10);
+     labelGreeting = new JLabel();
+     owl = new ImageIcon("animal39-2.png");
+     textAnswer.addActionListener(this);
+     add(labelQuestion);
+     add(textAnswer);
+     add(labelGreeting);
+   }
+   public static void main(String args[]){
+     OwlGreeting window = new OwlGreeting();
+     window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+     window.setSize(275, 100);
+     window.setTitle("Owl Greeting");
+     window.setVisible(true);
+   }
+   public void actionPerformed(ActionEvent e){
+     String name = textAnswer.getText();
+     labelGreeting.setText("Hoot for " + name + "!");
+     labelGreeting.setIcon(owl);
+   }
+}
\ No newline at end of file
diff --git a/guessnumber.java b/guessnumber.java
new file mode 100644
index 00000000..838b4e70
--- /dev/null
+++ b/guessnumber.java
@@ -0,0 +1,37 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class GuessTheNumberGame {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        Random random = new Random();
+
+        int lowerBound = 1;
+        int upperBound = 100;
+        int numberToGuess = random.nextInt(upperBound - lowerBound + 1) + lowerBound;
+        int numberOfTries = 0;
+        boolean hasGuessedCorrectly = false;
+
+        System.out.println("Welcome to the Guess the Number Game!");
+        System.out.println("I have selected a random number between " + lowerBound + " and " + upperBound + ".");
+
+        while (!hasGuessedCorrectly) {
+            System.out.print("Enter your guess: ");
+            int userGuess = scanner.nextInt();
+            numberOfTries++;
+
+            if (userGuess < lowerBound || userGuess > upperBound) {
+                System.out.println("Please guess a number within the specified range.");
+            } else if (userGuess < numberToGuess) {
+                System.out.println("The number is higher. Try again.");
+            } else if (userGuess > numberToGuess) {
+                System.out.println("The number is lower. Try again.");
+            } else {
+                hasGuessedCorrectly = true;
+                System.out.println("Congratulations! You've guessed the number in " + numberOfTries + " tries.");
+            }
+        }
+
+        scanner.close();
+    }
+}
diff --git a/hangman.java b/hangman.java
new file mode 100644
index 00000000..fa26b478
--- /dev/null
+++ b/hangman.java
@@ -0,0 +1,62 @@
+import java.util.Scanner;
+import java.util.Random;
+
+public class HangmanGame {
+    public static void main(String[] args) {
+        String[] words = { "java", "programming", "hangman", "computer", "algorithm", "developer" };
+        Random random = new Random();
+        String wordToGuess = words[random.nextInt(words.length)];
+
+        int maxAttempts = 6;
+        int attemptsLeft = maxAttempts;
+        boolean[] guessedLetters = new boolean[wordToGuess.length()];
+
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("Welcome to Hangman!");
+        char[] displayWord = new char[wordToGuess.length()];
+        for (int i = 0; i < wordToGuess.length(); i++) {
+            displayWord[i] = '_';
+        }
+
+        while (attemptsLeft > 0) {
+            System.out.println("Word to guess: " + new String(displayWord));
+            System.out.println("Attempts left: " + attemptsLeft);
+            System.out.print("Guess a letter: ");
+            char guess = scanner.next().charAt(0);
+
+            boolean found = false;
+            for (int i = 0; i < wordToGuess.length(); i++) {
+                if (wordToGuess.charAt(i) == guess) {
+                    displayWord[i] = guess;
+                    guessedLetters[i] = true;
+                    found = true;
+                }
+            }
+
+            if (!found) {
+                System.out.println("Incorrect guess.");
+                attemptsLeft--;
+            }
+
+            boolean isComplete = true;
+            for (boolean guessed : guessedLetters) {
+                if (!guessed) {
+                    isComplete = false;
+                    break;
+                }
+            }
+
+            if (isComplete) {
+                System.out.println("Congratulations! You've guessed the word: " + wordToGuess);
+                break;
+            }
+        }
+
+        if (attemptsLeft == 0) {
+            System.out.println("Out of attempts. The word was: " + wordToGuess);
+        }
+
+        scanner.close();
+    }
+}
diff --git a/headsTails3524.java b/headsTails3524.java
new file mode 100644
index 00000000..a0152b20
--- /dev/null
+++ b/headsTails3524.java
@@ -0,0 +1,39 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.*;
+
+public class headsTails3524 {
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.println("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+
+        // Create a random number generator
+        Random rand = new Random();
+
+        // Generate a random number (0 or 1)
+        int num = rand.nextInt(2);
+
+        // Create a Scanner to read user input
+        Scanner in = new Scanner(System.in);
+
+        // Prompt the user for their choice
+        System.out.print("Enter your choice (h / H / t / T): ");
+        char choice = in.next().charAt(0);
+
+        // Validate user's choice
+        while (choice != 'h' && choice != 'H' && choice != 't' && choice != 'T') {
+            System.out.printf("Invalid choice. Enter your choice (h / H / t / T): ");
+            choice = in.next().charAt(0);
+        }
+
+        // Display the random value generated
+        System.out.printf("Random value = %d\n", num);
+
+        // Check if the user won or lost based on their choice and the random value
+        if (((choice == 'h' || choice == 'H') && num == 1) || ((choice == 't' || choice == 'T') && num == 0))
+            System.out.print("You won!");
+        else
+            System.out.print("You lose!");
+
+    }
+}
diff --git a/helloWorld3524.java b/helloWorld3524.java
new file mode 100644
index 00000000..cc48fce0
--- /dev/null
+++ b/helloWorld3524.java
@@ -0,0 +1,13 @@
+
+import java.time.LocalDate;
+import java.time.LocalTime;
+
+public class helloWorld3524 {
+    public static void main(String[] a) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.printf("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+        System.out.print("\nHello, ");
+        System.out.print(a[0]);
+        System.out.println("\nGood morning! ");
+    }
+}
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..8d8fd623
--- /dev/null
+++ b/index.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <title>Number Guessing Game</title>
+    <link rel="stylesheet" href="style.css">
+</head>
+<body style="background-color:#212121; color:#fff;">
+ 
+  
+    <div id="wrapper">
+      <h1>Number guessing game</h1>
+    <p>Try and guess a random number between 1 and 100.</p>
+    <p>You have 10 attempts to guess the right number.</p>
+    </br>
+        <form class="form">
+            <label2 for="guessField" id="guess">Guess a number</label>
+            <input type="text" id="guessField" class="guessField">
+            <input type="submit" id="subt" value="Submit guess" class="guessSubmit">
+        </form>
+
+        <div class="resultParas">
+            <p >Previous Guesses: <span class="guesses"></span></p>
+            <p >Guesses Remaining: <span class="lastResult">10</span></p>
+            <p class="lowOrHi"></p>
+        </div>
+    </div>
+    <script src="script.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/inheritance&polymorphism.java b/inheritance&polymorphism.java
new file mode 100644
index 00000000..d40b498a
--- /dev/null
+++ b/inheritance&polymorphism.java
@@ -0,0 +1,27 @@
+class Animal {
+    void sound() {
+        System.out.println("Animal makes a sound");
+    }
+}
+
+class Dog extends Animal {
+    void sound() {
+        System.out.println("Dog barks");
+    }
+}
+
+class Cat extends Animal {
+    void sound() {
+        System.out.println("Cat meows");
+    }
+}
+
+public class AnimalDemo {
+    public static void main(String[] args) {
+        Animal myDog = new Dog();
+        Animal myCat = new Cat();
+
+        myDog.sound();
+        myCat.sound();
+    }
+}
diff --git a/interface.java b/interface.java
new file mode 100644
index 00000000..8906c46d
--- /dev/null
+++ b/interface.java
@@ -0,0 +1,28 @@
+interface Shape {
+    double area();
+    double perimeter();
+}
+
+class Circle implements Shape {
+    private double radius;
+
+    public Circle(double radius) {
+        this.radius = radius;
+    }
+
+    public double area() {
+        return Math.PI * radius * radius;
+    }
+
+    public double perimeter() {
+        return 2 * Math.PI * radius;
+    }
+}
+
+public class InterfaceDemo {
+    public static void main(String[] args) {
+        Circle circle = new Circle(5.0);
+        System.out.println("Circle Area: " + circle.area());
+        System.out.println("Circle Perimeter: " + circle.perimeter());
+    }
+}
diff --git a/javaCalculator.java b/javaCalculator.java
new file mode 100644
index 00000000..b9c8c4ad
--- /dev/null
+++ b/javaCalculator.java
@@ -0,0 +1,319 @@
+import java.awt.*;  
+import java.awt.event.*;  
+/*********************************************/  
+  
+public class MyCalculator extends Frame  
+{  
+  
+public boolean setClear=true;  
+double number, memValue;  
+char op;  
+  
+String digitButtonText[] = {"7", "8", "9", "4", "5", "6", "1", "2", "3", "0", "+/-", "." };  
+String operatorButtonText[] = {"/", "sqrt", "*", "%", "-", "1/X", "+", "=" };  
+String memoryButtonText[] = {"MC", "MR", "MS", "M+" };  
+String specialButtonText[] = {"Backspc", "C", "CE" };  
+  
+MyDigitButton digitButton[]=new MyDigitButton[digitButtonText.length];  
+MyOperatorButton operatorButton[]=new MyOperatorButton[operatorButtonText.length];  
+MyMemoryButton memoryButton[]=new MyMemoryButton[memoryButtonText.length];  
+MySpecialButton specialButton[]=new MySpecialButton[specialButtonText.length];  
+  
+Label displayLabel=new Label("0",Label.RIGHT);  
+Label memLabel=new Label(" ",Label.RIGHT);  
+  
+final int FRAME_WIDTH=325,FRAME_HEIGHT=325;  
+final int HEIGHT=30, WIDTH=30, H_SPACE=10,V_SPACE=10;  
+final int TOPX=30, TOPY=50;  
+///////////////////////////  
+MyCalculator(String frameText)//constructor  
+{  
+super(frameText);  
+  
+int tempX=TOPX, y=TOPY;  
+displayLabel.setBounds(tempX,y,240,HEIGHT);  
+displayLabel.setBackground(Color.BLUE);  
+displayLabel.setForeground(Color.WHITE);  
+add(displayLabel);  
+  
+memLabel.setBounds(TOPX,  TOPY+HEIGHT+ V_SPACE,WIDTH, HEIGHT);  
+add(memLabel);  
+  
+// set Co-ordinates for Memory Buttons  
+tempX=TOPX;   
+y=TOPY+2*(HEIGHT+V_SPACE);  
+for(int i=0; i<memoryButton.length; i++)  
+{  
+memoryButton[i]=new MyMemoryButton(tempX,y,WIDTH,HEIGHT,memoryButtonText[i], this);  
+memoryButton[i].setForeground(Color.RED);  
+y+=HEIGHT+V_SPACE;  
+}  
+  
+//set Co-ordinates for Special Buttons  
+tempX=TOPX+1*(WIDTH+H_SPACE); y=TOPY+1*(HEIGHT+V_SPACE);  
+for(int i=0;i<specialButton.length;i++)  
+{  
+specialButton[i]=new MySpecialButton(tempX,y,WIDTH*2,HEIGHT,specialButtonText[i], this);  
+specialButton[i].setForeground(Color.RED);  
+tempX=tempX+2*WIDTH+H_SPACE;  
+}  
+  
+//set Co-ordinates for Digit Buttons  
+int digitX=TOPX+WIDTH+H_SPACE;  
+int digitY=TOPY+2*(HEIGHT+V_SPACE);  
+tempX=digitX;  y=digitY;  
+for(int i=0;i<digitButton.length;i++)  
+{  
+digitButton[i]=new MyDigitButton(tempX,y,WIDTH,HEIGHT,digitButtonText[i], this);  
+digitButton[i].setForeground(Color.BLUE);  
+tempX+=WIDTH+H_SPACE;  
+if((i+1)%3==0){tempX=digitX; y+=HEIGHT+V_SPACE;}  
+}  
+  
+//set Co-ordinates for Operator Buttons  
+int opsX=digitX+2*(WIDTH+H_SPACE)+H_SPACE;  
+int opsY=digitY;  
+tempX=opsX;  y=opsY;  
+for(int i=0;i<operatorButton.length;i++)  
+{  
+tempX+=WIDTH+H_SPACE;  
+operatorButton[i]=new MyOperatorButton(tempX,y,WIDTH,HEIGHT,operatorButtonText[i], this);  
+operatorButton[i].setForeground(Color.RED);  
+if((i+1)%2==0){tempX=opsX; y+=HEIGHT+V_SPACE;}  
+}  
+  
+addWindowListener(new WindowAdapter()  
+{  
+public void windowClosing(WindowEvent ev)  
+{System.exit(0);}  
+});  
+  
+setLayout(null);  
+setSize(FRAME_WIDTH,FRAME_HEIGHT);  
+setVisible(true);  
+}  
+//////////////////////////////////  
+static String getFormattedText(double temp)  
+{  
+String resText=""+temp;  
+if(resText.lastIndexOf(".0")>0)  
+    resText=resText.substring(0,resText.length()-2);  
+return resText;  
+}  
+////////////////////////////////////////  
+public static void main(String []args)  
+{  
+new MyCalculator("Calculator - JavaTpoint");  
+}  
+}  
+  
+/*******************************************/  
+  
+class MyDigitButton extends Button implements ActionListener  
+{  
+MyCalculator cl;  
+  
+//////////////////////////////////////////  
+MyDigitButton(int x,int y, int width,int height,String cap, MyCalculator clc)  
+{  
+super(cap);  
+setBounds(x,y,width,height);  
+this.cl=clc;  
+this.cl.add(this);  
+addActionListener(this);  
+}  
+////////////////////////////////////////////////  
+static boolean isInString(String s, char ch)  
+{  
+for(int i=0; i<s.length();i++) if(s.charAt(i)==ch) return true;  
+return false;  
+}  
+/////////////////////////////////////////////////  
+public void actionPerformed(ActionEvent ev)  
+{  
+String tempText=((MyDigitButton)ev.getSource()).getLabel();  
+  
+if(tempText.equals("."))  
+{  
+ if(cl.setClear)   
+    {cl.displayLabel.setText("0.");cl.setClear=false;}  
+ else if(!isInString(cl.displayLabel.getText(),'.'))  
+    cl.displayLabel.setText(cl.displayLabel.getText()+".");  
+ return;  
+}  
+  
+int index=0;  
+try{  
+        index=Integer.parseInt(tempText);  
+    }catch(NumberFormatException e){return;}  
+  
+if (index==0 && cl.displayLabel.getText().equals("0")) return;  
+  
+if(cl.setClear)  
+            {cl.displayLabel.setText(""+index);cl.setClear=false;}  
+else  
+    cl.displayLabel.setText(cl.displayLabel.getText()+index);  
+}//actionPerformed  
+}//class defination  
+  
+/********************************************/  
+  
+class MyOperatorButton extends Button implements ActionListener  
+{  
+MyCalculator cl;  
+  
+MyOperatorButton(int x,int y, int width,int height,String cap, MyCalculator clc)  
+{  
+super(cap);  
+setBounds(x,y,width,height);  
+this.cl=clc;  
+this.cl.add(this);  
+addActionListener(this);  
+}  
+///////////////////////  
+public void actionPerformed(ActionEvent ev)  
+{  
+String opText=((MyOperatorButton)ev.getSource()).getLabel();  
+  
+cl.setClear=true;  
+double temp=Double.parseDouble(cl.displayLabel.getText());  
+  
+if(opText.equals("1/x"))  
+    {  
+    try  
+        {double tempd=1/(double)temp;  
+        cl.displayLabel.setText(MyCalculator.getFormattedText(tempd));}  
+    catch(ArithmeticException excp)  
+                        {cl.displayLabel.setText("Divide by 0.");}  
+    return;  
+    }  
+if(opText.equals("sqrt"))  
+    {  
+    try  
+        {double tempd=Math.sqrt(temp);  
+        cl.displayLabel.setText(MyCalculator.getFormattedText(tempd));}  
+            catch(ArithmeticException excp)  
+                    {cl.displayLabel.setText("Divide by 0.");}  
+    return;  
+    }  
+if(!opText.equals("="))  
+    {  
+    cl.number=temp;  
+    cl.op=opText.charAt(0);  
+    return;  
+    }  
+// process = button pressed  
+switch(cl.op)  
+{  
+case '+':  
+    temp+=cl.number;break;  
+case '-':  
+    temp=cl.number-temp;break;  
+case '*':  
+    temp*=cl.number;break;  
+case '%':  
+    try{temp=cl.number%temp;}  
+    catch(ArithmeticException excp)  
+        {cl.displayLabel.setText("Divide by 0."); return;}  
+    break;  
+case '/':  
+    try{temp=cl.number/temp;}  
+        catch(ArithmeticException excp)  
+                {cl.displayLabel.setText("Divide by 0."); return;}  
+    break;  
+}//switch  
+  
+cl.displayLabel.setText(MyCalculator.getFormattedText(temp));  
+//cl.number=temp;  
+}//actionPerformed  
+}//class  
+  
+/****************************************/  
+  
+class MyMemoryButton extends Button implements ActionListener  
+{  
+MyCalculator cl;  
+  
+/////////////////////////////////  
+MyMemoryButton(int x,int y, int width,int height,String cap, MyCalculator clc)  
+{  
+super(cap);  
+setBounds(x,y,width,height);  
+this.cl=clc;  
+this.cl.add(this);  
+addActionListener(this);  
+}  
+////////////////////////////////////////////////  
+public void actionPerformed(ActionEvent ev)  
+{  
+char memop=((MyMemoryButton)ev.getSource()).getLabel().charAt(1);  
+  
+cl.setClear=true;  
+double temp=Double.parseDouble(cl.displayLabel.getText());  
+  
+switch(memop)  
+{  
+case 'C':   
+    cl.memLabel.setText(" ");cl.memValue=0.0;break;  
+case 'R':   
+    cl.displayLabel.setText(MyCalculator.getFormattedText(cl.memValue));break;  
+case 'S':  
+    cl.memValue=0.0;  
+case '+':   
+    cl.memValue+=Double.parseDouble(cl.displayLabel.getText());  
+    if(cl.displayLabel.getText().equals("0") || cl.displayLabel.getText().equals("0.0")  )  
+        cl.memLabel.setText(" ");  
+    else   
+        cl.memLabel.setText("M");     
+    break;  
+}//switch  
+}//actionPerformed  
+}//class  
+  
+/*****************************************/  
+  
+class MySpecialButton extends Button implements ActionListener  
+{  
+MyCalculator cl;  
+  
+MySpecialButton(int x,int y, int width,int height,String cap, MyCalculator clc)  
+{  
+super(cap);  
+setBounds(x,y,width,height);  
+this.cl=clc;  
+this.cl.add(this);  
+addActionListener(this);  
+}  
+//////////////////////  
+static String backSpace(String s)  
+{  
+String Res="";  
+for(int i=0; i<s.length()-1; i++) Res+=s.charAt(i);  
+return Res;  
+}  
+  
+//////////////////////////////////////////////////////////  
+public void actionPerformed(ActionEvent ev)  
+{  
+String opText=((MySpecialButton)ev.getSource()).getLabel();  
+//check for backspace button  
+if(opText.equals("Backspc"))  
+{  
+String tempText=backSpace(cl.displayLabel.getText());  
+if(tempText.equals(""))   
+    cl.displayLabel.setText("0");  
+else   
+    cl.displayLabel.setText(tempText);  
+return;  
+}  
+//check for "C" button i.e. Reset  
+if(opText.equals("C"))   
+{  
+cl.number=0.0; cl.op=' '; cl.memValue=0.0;  
+cl.memLabel.setText(" ");  
+}  
+  
+//it must be CE button pressed  
+cl.displayLabel.setText("0");cl.setClear=true;  
+}//actionPerformed  
+}//class 
diff --git a/javagame/GuessTheNumber.java b/javagame/GuessTheNumber.java
index 0a73a219..a07c765b 100644
--- a/javagame/GuessTheNumber.java
+++ b/javagame/GuessTheNumber.java
@@ -10,7 +10,7 @@ public int getGusses( ) {
         return this.gusses;
     }
 
-    public void setGusses( ) {
+    public void setGusses( int gusses ) {
         this.gusses = gusses;
     }
 
diff --git a/loading-annimation.java b/loading-annimation.java
new file mode 100644
index 00000000..8e9061fe
--- /dev/null
+++ b/loading-annimation.java
@@ -0,0 +1,30 @@
+import java.util.Scanner;
+
+public class LoadingAnimation {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        
+        System.out.print("Enter the loading percentage (0-100): ");
+        int percentage = scanner.nextInt();
+        scanner.close();
+        
+        if (percentage < 0 || percentage > 100) {
+            System.out.println("Invalid input. Percentage must be between 0 and 100.");
+            return;
+        }
+        
+        int width = 50; // Width of the loading bar
+        int progress = (int) (width * (percentage / 100.0)); // Calculate the progress
+
+        System.out.print("Loading: [");
+        for (int i = 0; i < width; i++) {
+            if (i < progress) {
+                System.out.print("=");
+            } else {
+                System.out.print(" ");
+            }
+        }
+        System.out.println("] " + percentage + "% Complete");
+    }
+}
+
diff --git a/longestpalindrome.java b/longestpalindrome.java
new file mode 100644
index 00000000..a00d5121
--- /dev/null
+++ b/longestpalindrome.java
@@ -0,0 +1,27 @@
+public String longestPalindrome(String s) {
+        int n=s.length();
+        boolean dp[][]=new boolean[n][n];
+        int c=0;
+        String x="";
+        for(int g=0;g<n;g++)
+        {
+            for(int i=0,j=g;j<n;j++,i++)
+            {
+                if(g==0)
+                    dp[i][j]=true;
+                else if(g==1)
+                {
+                    if(s.charAt(i)==s.charAt(j))
+                        dp[i][j]=true;
+                }
+                else
+                {
+                    if(s.charAt(i)==s.charAt(j) && dp[i+1][j-1]==true)
+                        dp[i][j]=true;
+                }
+                if(dp[i][j])
+                    x=s.substring(i,j+1);
+            }
+        }
+        return x;
+    }
diff --git a/maildemo/.idea/artifacts/maildemo_war_exploded.xml b/maildemo/.idea/artifacts/maildemo_war_exploded.xml
new file mode 100644
index 00000000..e545de15
--- /dev/null
+++ b/maildemo/.idea/artifacts/maildemo_war_exploded.xml
@@ -0,0 +1,13 @@
+<component name="ArtifactManager">
+  <artifact type="exploded-war" name="maildemo:war exploded">
+    <output-path>$PROJECT_DIR$/out/artifacts/maildemo_war_exploded</output-path>
+    <root id="root">
+      <element id="javaee-facet-resources" facet="maildemo/web/Web" />
+      <element id="directory" name="WEB-INF">
+        <element id="directory" name="classes">
+          <element id="module-output" name="maildemo" />
+        </element>
+      </element>
+    </root>
+  </artifact>
+</component>
\ No newline at end of file
diff --git a/maildemo/.idea/libraries/servlet_api.xml b/maildemo/.idea/libraries/servlet_api.xml
new file mode 100644
index 00000000..5731210c
--- /dev/null
+++ b/maildemo/.idea/libraries/servlet_api.xml
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="servlet-api">
+    <CLASSES>
+      <root url="jar://F:/Study/resource/tomcat/apache-tomcat-7.0.52/lib/servlet-api.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/maildemo/.idea/misc.xml b/maildemo/.idea/misc.xml
new file mode 100644
index 00000000..05483570
--- /dev/null
+++ b/maildemo/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/maildemo/.idea/modules.xml b/maildemo/.idea/modules.xml
new file mode 100644
index 00000000..a309e63f
--- /dev/null
+++ b/maildemo/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/maildemo.iml" filepath="$PROJECT_DIR$/maildemo.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/maildemo/.idea/workspace.xml b/maildemo/.idea/workspace.xml
new file mode 100644
index 00000000..48033ef7
--- /dev/null
+++ b/maildemo/.idea/workspace.xml
@@ -0,0 +1,764 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ArtifactsWorkspaceSettings">
+    <artifacts-to-build>
+      <artifact name="maildemo:war exploded" />
+    </artifacts-to-build>
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="0dc3174e-e0ec-4382-ace0-3607229980d7" name="Default" comment="" />
+    <ignored path="$PROJECT_DIR$/out/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="CodeInsightWorkspaceSettings">
+    <option name="optimizeImportsOnTheFly" value="true" />
+  </component>
+  <component name="FavoritesManager">
+    <favorites_list name="maildemo" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="package-info" />
+        <option value="Interface" />
+        <option value="Class" />
+        <option value="Jsp File" />
+      </list>
+    </option>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>pers.hdh.servlet.ActiveServlet</find>
+    </findStrings>
+  </component>
+  <component name="GradleLocalSettings">
+    <option name="externalProjectsViewState">
+      <projects_view />
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/utils/DataSourceUtils.java" />
+        <option value="$PROJECT_DIR$/src/main/recources/c3p0.properties" />
+        <option value="$PROJECT_DIR$/web/index.jsp" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/utils/UUIDUtils.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/domain/User.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/service/UserService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/dao/UserDao.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/dao/impl/UserDaoImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/service/impl/UserServiceImpl.java" />
+        <option value="$PROJECT_DIR$/web/success.jsp" />
+        <option value="$PROJECT_DIR$/web/error.jsp" />
+        <option value="$PROJECT_DIR$/web/message.jsp" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/servlet/ActiveServlet.java" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/servlet/RegistServlet.java" />
+        <option value="$PROJECT_DIR$/web/WEB-INF/web.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/pers/hdh/utils/MailUtils.java" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="LogFilters">
+    <option name="FILTER_ERRORS" value="false" />
+    <option name="FILTER_WARNINGS" value="false" />
+    <option name="FILTER_INFO" value="true" />
+    <option name="FILTER_DEBUG" value="true" />
+    <option name="CUSTOM_FILTER" />
+  </component>
+  <component name="MavenProjectNavigator">
+    <treeState>
+      <expand />
+      <select />
+    </treeState>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="1105" />
+    <option name="y" value="35" />
+    <option name="width" value="720" />
+    <option name="height" value="705" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scratches" />
+      <pane id="AndroidView" />
+      <pane id="PackagesPane" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="maildemo" type="b2602c69:ProjectViewProjectNode" />
+              <item name="maildemo" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="maildemo" type="b2602c69:ProjectViewProjectNode" />
+              <item name="maildemo" type="462c0819:PsiDirectoryNode" />
+              <item name="web" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="maildemo" type="b2602c69:ProjectViewProjectNode" />
+              <item name="maildemo" type="462c0819:PsiDirectoryNode" />
+              <item name="web" type="462c0819:PsiDirectoryNode" />
+              <item name="WEB-INF" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="settings.editor.selected.configurable" value="project.propVCSSupport.CommitDialog" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="aspect.path.notification.shown" value="true" />
+    <property name="project.structure.last.edited" value="Libraries" />
+    <property name="project.structure.proportion" value="0.15" />
+    <property name="project.structure.side.proportion" value="0.24908088" />
+    <property name="last_opened_file_path" value="F:/Study/resource/tomcat/apache-tomcat-7.0.52/lib/servlet-api.jar!/" />
+  </component>
+  <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="F:\git_repository\javaproject\maildemo\src\main\java\pers\hdh\utils" />
+      <recent name="F:\git_repository\javaproject\maildemo\src\main\recources" />
+      <recent name="F:\git_repository\javaproject\maildemo\web\WEB-INF\lib" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager" selected="Tomcat Server.maildemo_tomcat">
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <module />
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+    </configuration>
+    <configuration default="true" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat 7.0.52" ALTERNATIVE_JRE_ENABLED="false">
+      <option name="UPDATING_POLICY" value="restart-server" />
+      <deployment />
+      <server-settings>
+        <option name="BASE_DIRECTORY_NAME" value="_maildemo" />
+      </server-settings>
+      <predefined_log_file id="Tomcat" enabled="true" />
+      <predefined_log_file id="Tomcat Catalina" enabled="true" />
+      <predefined_log_file id="Tomcat Manager" enabled="false" />
+      <predefined_log_file id="Tomcat Host Manager" enabled="false" />
+      <predefined_log_file id="Tomcat Localhost Access" enabled="false" />
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <RunnerSettings RunnerId="Debug">
+        <option name="DEBUG_PORT" value="4760" />
+      </RunnerSettings>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Cover">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Debug">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Run">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+    </configuration>
+    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
+      <module name="" />
+      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
+      <option name="PROGRAM_PARAMETERS" />
+      <predefined_log_file id="idea.log" enabled="true" />
+    </configuration>
+    <configuration default="true" type="Remote" factoryName="Remote">
+      <option name="USE_SOCKET_TRANSPORT" value="true" />
+      <option name="SERVER_MODE" value="false" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+    </configuration>
+    <configuration default="true" type="JavaScriptNodeJsTraceType" factoryName="Spy-js for Node.js" config="" node="project" node-params="" app="" app-params="" working-dir="$PROJECT_DIR$" proxy-port="3547" pass-parent-env="true" limits="1,3,3,50">
+      <envs />
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+    </configuration>
+    <configuration name="maildemo_tomcat" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat 7.0.52" ALTERNATIVE_JRE_ENABLED="false">
+      <option name="OPEN_IN_BROWSER_URL" value="http://localhost:8080/maildemo" />
+      <option name="UPDATE_ON_FRAME_DEACTIVATION" value="true" />
+      <option name="UPDATE_CLASSES_ON_FRAME_DEACTIVATION" value="true" />
+      <option name="SHOW_DIALOG_ON_UPDATE" value="false" />
+      <deployment>
+        <artifact name="maildemo:war exploded">
+          <settings>
+            <option name="CONTEXT_PATH" value="/maildemo" />
+          </settings>
+        </artifact>
+      </deployment>
+      <server-settings>
+        <option name="BASE_DIRECTORY_NAME" value="Unnamed_maildemo" />
+      </server-settings>
+      <predefined_log_file id="Tomcat" enabled="true" />
+      <predefined_log_file id="Tomcat Catalina" enabled="true" />
+      <predefined_log_file id="Tomcat Manager" enabled="false" />
+      <predefined_log_file id="Tomcat Host Manager" enabled="false" />
+      <predefined_log_file id="Tomcat Localhost Access" enabled="false" />
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <RunnerSettings RunnerId="Debug">
+        <option name="DEBUG_PORT" value="4760" />
+      </RunnerSettings>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Cover">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Debug">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+      <ConfigurationWrapper VM_VAR="JAVA_OPTS" RunnerId="Run">
+        <option name="USE_ENV_VARIABLES" value="true" />
+        <STARTUP>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </STARTUP>
+        <SHUTDOWN>
+          <option name="USE_DEFAULT" value="true" />
+          <option name="SCRIPT" value="" />
+          <option name="VM_PARAMETERS" value="" />
+          <option name="PROGRAM_PARAMETERS" value="" />
+        </SHUTDOWN>
+      </ConfigurationWrapper>
+      <method>
+        <option name="BuildArtifacts" enabled="true">
+          <artifact name="maildemo:war exploded" />
+        </option>
+      </method>
+    </configuration>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="0dc3174e-e0ec-4382-ace0-3607229980d7" name="Default" comment="" />
+      <created>1508907153694</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1508907153694</updated>
+      <workItem from="1508907156102" duration="12246000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="12246000" />
+  </component>
+  <component name="TodoView">
+    <todo-panel id="selected-file">
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+    <todo-panel id="all">
+      <are-packages-shown value="true" />
+      <is-autoscroll-to-source value="true" />
+    </todo-panel>
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-9" y="-9" width="1938" height="1048" extended-state="6" />
+    <layout>
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
+      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32865497" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3299356" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.45614034" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Java Enterprise" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.38011697" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21727468" sideWeight="0.49590644" order="6" side_tool="false" content_ui="combo" />
+      <window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21727468" sideWeight="0.5040936" order="3" side_tool="true" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21727468" sideWeight="0.5040936" order="4" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="8" side_tool="false" content_ui="combo" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+    </layout>
+    <layout-to-restore>
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
+      <window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32865497" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3299356" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="8" side_tool="false" content_ui="combo" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Java Enterprise" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.30760235" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32982457" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21727468" sideWeight="0.49590644" order="6" side_tool="false" content_ui="combo" />
+      <window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21727468" sideWeight="0.5040936" order="3" side_tool="true" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21727468" sideWeight="0.5040936" order="4" side_tool="true" content_ui="tabs" />
+    </layout-to-restore>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/main/java/package-info.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/utils/DataSourceUtils.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="198">
+          <caret line="15" column="15" lean-forward="true" selection-start-line="15" selection-start-column="15" selection-end-line="15" selection-end-column="15" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/recources/c3p0.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="22">
+          <caret line="1" column="43" lean-forward="true" selection-start-line="1" selection-start-column="43" selection-end-line="1" selection-end-column="43" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/utils/JDBCUtils.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="44">
+          <caret line="2" column="22" lean-forward="false" selection-start-line="2" selection-start-column="22" selection-end-line="2" selection-end-column="22" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/utils/UUIDUtils.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="198">
+          <caret line="9" column="14" lean-forward="false" selection-start-line="9" selection-start-column="14" selection-end-line="9" selection-end-column="14" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/domain/User.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="352">
+          <caret line="16" column="0" lean-forward="true" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
+          <folding>
+            <element signature="e#209#210#0" expanded="true" />
+            <element signature="e#235#236#0" expanded="true" />
+            <element signature="e#273#274#0" expanded="true" />
+            <element signature="e#303#304#0" expanded="true" />
+            <element signature="e#338#339#0" expanded="true" />
+            <element signature="e#369#370#0" expanded="true" />
+            <element signature="e#417#418#0" expanded="true" />
+            <element signature="e#457#458#0" expanded="true" />
+            <element signature="e#492#493#0" expanded="true" />
+            <element signature="e#523#524#0" expanded="true" />
+            <element signature="e#571#572#0" expanded="true" />
+            <element signature="e#611#612#0" expanded="true" />
+            <element signature="e#643#644#0" expanded="true" />
+            <element signature="e#671#672#0" expanded="true" />
+            <element signature="e#713#714#0" expanded="true" />
+            <element signature="e#747#748#0" expanded="true" />
+            <element signature="e#780#781#0" expanded="true" />
+            <element signature="e#808#809#0" expanded="true" />
+            <element signature="e#851#852#0" expanded="true" />
+            <element signature="e#885#886#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/web/error.jsp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="13" column="17" lean-forward="false" selection-start-line="13" selection-start-column="17" selection-end-line="13" selection-end-column="17" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/web/message.jsp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="13" column="27" lean-forward="false" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/web/success.jsp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="13" column="15" lean-forward="true" selection-start-line="13" selection-start-column="15" selection-end-line="13" selection-end-column="15" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/servlet/RegistServlet.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="334">
+          <caret line="37" column="52" lean-forward="false" selection-start-line="37" selection-start-column="52" selection-end-line="37" selection-end-column="52" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/web/WEB-INF/web.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="254">
+          <caret line="16" column="53" lean-forward="false" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="53" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/dao/impl/UserDaoImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="379">
+          <caret line="33" column="63" lean-forward="true" selection-start-line="33" selection-start-column="63" selection-end-line="33" selection-end-column="63" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/dao/UserDao.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="13" column="1" lean-forward="true" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/service/impl/UserServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="440">
+          <caret line="34" column="25" lean-forward="true" selection-start-line="34" selection-start-column="25" selection-end-line="34" selection-end-column="25" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/service/UserService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="242">
+          <caret line="11" column="9" lean-forward="false" selection-start-line="11" selection-start-column="9" selection-end-line="11" selection-end-column="9" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/servlet/ActiveServlet.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="269">
+          <caret line="27" column="40" lean-forward="true" selection-start-line="27" selection-start-column="40" selection-end-line="27" selection-end-column="40" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/web/index.jsp">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="136">
+          <caret line="10" column="15" lean-forward="false" selection-start-line="10" selection-start-column="15" selection-end-line="10" selection-end-column="15" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/pers/hdh/utils/MailUtils.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="213">
+          <caret line="38" column="52" lean-forward="true" selection-start-line="38" selection-start-column="52" selection-end-line="38" selection-end-column="52" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#1107#1323#0" expanded="true" />
+            <element signature="e#1322#1323#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArtifactsStructureConfigurable.UI">
+        <settings>
+          <artifact-editor />
+          <last-edited>maildemo:war exploded</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+                <option value="0.5" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="FacetStructureConfigurable.UI">
+        <settings>
+          <last-edited>Web</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="GlobalLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="JdkListConfigurable.UI">
+        <settings>
+          <last-edited>1.8</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ModuleStructureConfigurable.UI">
+        <settings>
+          <last-edited>Web|maildemo</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectLibrariesConfigurable.UI">
+        <settings>
+          <last-edited>servlet-api</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.24908088" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ScopeChooserConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>
\ No newline at end of file
diff --git a/maildemo/Readme.txt b/maildemo/Readme.txt
new file mode 100644
index 00000000..2c08c191
--- /dev/null
+++ b/maildemo/Readme.txt
@@ -0,0 +1,2 @@
+使用JavaMail使用的小Demo
+要求Jdk版本1.7以上,本人使用的是1.8
\ No newline at end of file
diff --git a/maildemo/maildemo.iml b/maildemo/maildemo.iml
new file mode 100644
index 00000000..fff8629e
--- /dev/null
+++ b/maildemo/maildemo.iml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/web" relative="/" />
+        </webroots>
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/web/WEB-INF/classes" />
+    <output-test url="file://$MODULE_DIR$/web/WEB-INF/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/recources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="file://$MODULE_DIR$/web/WEB-INF/lib" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+        <jarDirectory url="file://$MODULE_DIR$/web/WEB-INF/lib" recursive="false" />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="servlet-api" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/c3p0.properties b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/main/recources/c3p0.properties b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/main/recources/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/main/recources/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/UserDao.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/UserDao.class
new file mode 100644
index 00000000..52498e4f
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/UserDao.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class
new file mode 100644
index 00000000..401df2fa
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/domain/User.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/domain/User.class
new file mode 100644
index 00000000..f9dc5d7e
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/domain/User.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/UserService.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/UserService.class
new file mode 100644
index 00000000..5b0fbb4e
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/UserService.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class
new file mode 100644
index 00000000..0f928e2c
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class
new file mode 100644
index 00000000..6db31d8f
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class
new file mode 100644
index 00000000..762db82c
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class
new file mode 100644
index 00000000..a86503b9
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class
new file mode 100644
index 00000000..adc32f16
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils.class
new file mode 100644
index 00000000..f6e2544a
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/MailUtils.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class
new file mode 100644
index 00000000..f90e8b62
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/recources/c3p0.properties b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/recources/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/classes/recources/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/c3p0-0.9.1.2.jar b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/c3p0-0.9.1.2.jar
new file mode 100644
index 00000000..0f42d60e
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/c3p0-0.9.1.2.jar differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/commons-dbutils-1.6.jar b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/commons-dbutils-1.6.jar
new file mode 100644
index 00000000..b2590db9
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/commons-dbutils-1.6.jar differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mail.jar b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mail.jar
new file mode 100644
index 00000000..9d60d13b
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mail.jar differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar
new file mode 100644
index 00000000..465af670
Binary files /dev/null and b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar differ
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/web.xml b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/web.xml
new file mode 100644
index 00000000..4543e1cd
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/WEB-INF/web.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         id="WebApp_ID" version="2.5">
+    
+    <servlet>
+        <servlet-name>RegistServlet</servlet-name>
+        <servlet-class>pers.hdh.servlet.RegistServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>RegistServlet</servlet-name>
+        <url-pattern>/RegistServlet</url-pattern>
+    </servlet-mapping>
+    <servlet>
+        <servlet-name>ActiveServlet</servlet-name>
+        <servlet-class>pers.hdh.servlet.ActiveServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>ActiveServlet</servlet-name>
+        <url-pattern>/ActiveServlet</url-pattern>
+    </servlet-mapping>
+</web-app>
\ No newline at end of file
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/error.jsp b/maildemo/out/artifacts/maildemo_war_exploded/error.jsp
new file mode 100644
index 00000000..9a075516
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/error.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:41
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>注册失败</title>
+</head>
+<body>
+    账号注册失败,请重新注册!
+</body>
+</html>
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/index.jsp b/maildemo/out/artifacts/maildemo_war_exploded/index.jsp
new file mode 100644
index 00000000..e841e4a4
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/index.jsp
@@ -0,0 +1,34 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 12:52
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+  <head>
+    <title>用户注册</title>
+  </head>
+  <body>
+    <form action="${pageContext.request.contextPath}/RegistServlet" method="post">
+      <table width="500" border="1" align="center">
+        <tr>
+          <td>用户名</td>
+          <td><input type="text" name="username"/></td>
+        </tr>
+        <tr>
+          <td>密码</td>
+          <td><input type="password" name="password"/></td>
+        </tr>
+        <tr>
+          <td>邮箱</td>
+          <td><input type="email" name="email" /></td>
+        </tr>
+        <tr>
+          <td colspan="2"><input type="submit" value="注册"/></td>
+        </tr>
+      </table>
+    </form>
+  </body>
+</html>
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/message.jsp b/maildemo/out/artifacts/maildemo_war_exploded/message.jsp
new file mode 100644
index 00000000..4760f201
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/message.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:42
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>请前往邮箱激活账号</title>
+</head>
+<body>
+    注册操作已成功完成,请前往邮箱进行激活账号操作
+</body>
+</html>
diff --git a/maildemo/out/artifacts/maildemo_war_exploded/success.jsp b/maildemo/out/artifacts/maildemo_war_exploded/success.jsp
new file mode 100644
index 00000000..1cb82eca
--- /dev/null
+++ b/maildemo/out/artifacts/maildemo_war_exploded/success.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:40
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>注册成功</title>
+</head>
+<body>
+    恭喜您,账号激活成功!
+</body>
+</html>
diff --git a/maildemo/src/main/java/package-info.java b/maildemo/src/main/java/package-info.java
new file mode 100644
index 00000000..e69de29b
diff --git a/maildemo/src/main/java/pers/hdh/dao/UserDao.java b/maildemo/src/main/java/pers/hdh/dao/UserDao.java
new file mode 100644
index 00000000..222c4bdd
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/dao/UserDao.java
@@ -0,0 +1,14 @@
+package pers.hdh.dao;
+
+import pers.hdh.domain.User;
+
+import java.sql.SQLException;
+
+public interface UserDao {
+
+    void add(User user) throws SQLException;
+
+    User getUser(String uid) throws SQLException;
+
+    void update(User user) throws SQLException;
+}
diff --git a/maildemo/src/main/java/pers/hdh/dao/impl/UserDaoImpl.java b/maildemo/src/main/java/pers/hdh/dao/impl/UserDaoImpl.java
new file mode 100644
index 00000000..d17a47bd
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/dao/impl/UserDaoImpl.java
@@ -0,0 +1,43 @@
+package pers.hdh.dao.impl;
+
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.handlers.BeanHandler;
+import pers.hdh.dao.UserDao;
+import pers.hdh.domain.User;
+import pers.hdh.utils.DataSourceUtils;
+
+import java.sql.SQLException;
+
+public class UserDaoImpl implements UserDao {
+
+    /**
+     * 往user表插入数据,添加新用户
+     * @param user
+     * @throws SQLException
+     */
+    @Override
+    public void add(User user) throws SQLException {
+        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
+        String sql = "insert into user values (?,?,?,?,?)";
+        qr.update(sql, user.getUid(), user.getUsername(), user.getPassword(), user.getEmail(), user.getState());
+    }
+
+    /**
+     * 通过uid查询user表
+     * @param uid
+     * @return
+     */
+    @Override
+    public User getUser(String uid) throws SQLException {
+        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
+        String sql = "select uid, username, password, email, state from user where uid=?";
+        return qr.query(sql, new BeanHandler<User>(User.class), uid);
+    }
+
+    @Override
+    public void update(User user) throws SQLException {
+        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
+        String sql = "update user set username=?, password=?, email=?, state=? where uid=?";
+        qr.update(sql, user.getUsername(), user.getPassword(), user.getEmail(), user.getState(), user.getUid());
+    }
+}
diff --git a/maildemo/src/main/java/pers/hdh/domain/User.java b/maildemo/src/main/java/pers/hdh/domain/User.java
new file mode 100644
index 00000000..744e0077
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/domain/User.java
@@ -0,0 +1,50 @@
+package pers.hdh.domain;
+
+public class User {
+    private String uid;
+    private String username;
+    private String password;
+    private String email;
+    private Integer state;
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Integer getState() {
+        return state;
+    }
+
+    public void setState(Integer state) {
+        this.state = state;
+    }
+
+}
diff --git a/maildemo/src/main/java/pers/hdh/service/UserService.java b/maildemo/src/main/java/pers/hdh/service/UserService.java
new file mode 100644
index 00000000..63994585
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/service/UserService.java
@@ -0,0 +1,13 @@
+package pers.hdh.service;
+
+import pers.hdh.domain.User;
+
+import java.sql.SQLException;
+
+public interface UserService {
+    void add(User user) throws Exception;
+
+    User getUser(String uid) throws SQLException;
+
+    void update(User user) throws SQLException;
+}
diff --git a/maildemo/src/main/java/pers/hdh/service/impl/UserServiceImpl.java b/maildemo/src/main/java/pers/hdh/service/impl/UserServiceImpl.java
new file mode 100644
index 00000000..ac310363
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/service/impl/UserServiceImpl.java
@@ -0,0 +1,47 @@
+package pers.hdh.service.impl;
+
+import pers.hdh.dao.UserDao;
+import pers.hdh.dao.impl.UserDaoImpl;
+import pers.hdh.domain.User;
+import pers.hdh.service.UserService;
+import pers.hdh.utils.MailUtils;
+
+import java.sql.SQLException;
+
+public class UserServiceImpl implements UserService {
+
+    /**
+     * 添加用户
+     * @param user
+     */
+    @Override
+    public void add(User user) throws Exception {
+        // 添加新用户
+        UserDao dao = new UserDaoImpl();
+        dao.add(user);
+
+        // 发送邮件
+        MailUtils.sendMail(user.getEmail(), user.getUid());
+    }
+
+    /**
+     * 通过id查找用户
+     * @param uid
+     * @return
+     */
+    @Override
+    public User getUser(String uid) throws SQLException {
+        UserDao dao = new UserDaoImpl();
+        return dao.getUser(uid);
+    }
+
+    /**
+     * 更新用户数据
+     * @param user
+     */
+    @Override
+    public void update(User user) throws SQLException {
+        UserDao dao = new UserDaoImpl();
+        dao.update(user);
+    }
+}
diff --git a/maildemo/src/main/java/pers/hdh/servlet/ActiveServlet.java b/maildemo/src/main/java/pers/hdh/servlet/ActiveServlet.java
new file mode 100644
index 00000000..28e09427
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/servlet/ActiveServlet.java
@@ -0,0 +1,46 @@
+package pers.hdh.servlet;
+
+import pers.hdh.domain.User;
+import pers.hdh.service.UserService;
+import pers.hdh.service.impl.UserServiceImpl;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.SQLException;
+
+/**
+ * 激活用户
+ */
+public class ActiveServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        String uid = req.getParameter("uid");
+
+        // 调用业务处理数据
+        UserService service = new UserServiceImpl();
+        // 先查询到user
+        User user = null;
+        try {
+            user = service.getUser(uid);
+            if (user != null) {
+                user.setState(1);
+                service.update(user);
+                resp.sendRedirect(req.getContextPath()+"/success.jsp");
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+            resp.sendRedirect(req.getContextPath()+"/error.jsp");
+        }
+
+
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        doGet(req, resp);
+    }
+}
diff --git a/maildemo/src/main/java/pers/hdh/servlet/RegistServlet.java b/maildemo/src/main/java/pers/hdh/servlet/RegistServlet.java
new file mode 100644
index 00000000..a18446f5
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/servlet/RegistServlet.java
@@ -0,0 +1,53 @@
+package pers.hdh.servlet;
+
+import pers.hdh.domain.User;
+import pers.hdh.service.UserService;
+import pers.hdh.service.impl.UserServiceImpl;
+import pers.hdh.utils.UUIDUtils;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 用户注册的servlet
+ */
+public class RegistServlet extends HttpServlet {
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        // 处理中文乱码
+        req.setCharacterEncoding("utf-8");
+
+        // 接收数据
+        String username = req.getParameter("username");
+        String password = req.getParameter("password");
+        String email = req.getParameter("email");
+
+        // 封装数据
+        User user = new User();
+        user.setUid(UUIDUtils.getId());
+        user.setUsername(username);
+        user.setPassword(password);
+        user.setEmail(email);
+        user.setState(0);
+
+        // 调用业务处理数据
+        UserService service = new UserServiceImpl();
+        try {
+            service.add(user);
+            resp.sendRedirect(req.getContextPath()+"/message.jsp");
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException();
+        }
+
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        doGet(req, resp);
+    }
+}
diff --git a/maildemo/src/main/java/pers/hdh/utils/DataSourceUtils.java b/maildemo/src/main/java/pers/hdh/utils/DataSourceUtils.java
new file mode 100644
index 00000000..a6863942
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/utils/DataSourceUtils.java
@@ -0,0 +1,127 @@
+package pers.hdh.utils;
+
+import com.mchange.v2.c3p0.ComboPooledDataSource;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class DataSourceUtils {
+	private static ComboPooledDataSource ds = new ComboPooledDataSource();
+	private static ThreadLocal<Connection> tl=new ThreadLocal<>();
+	
+	/**
+	 * 从线程中获取连接
+	 * @return
+	 * @throws SQLException
+	 */
+	public static Connection getConnection() throws SQLException {
+		//从线程中获取conneciton
+		Connection conn = tl.get();
+		if(conn==null){
+			conn=ds.getConnection();
+			//和当前线程绑定
+			tl.set(conn);
+		}
+		return conn;
+	}
+
+	// 获取数据源
+	public static DataSource getDataSource() {
+		return ds;
+	}
+
+	// 释放资源
+	public static void closeResource( Statement st, ResultSet rs) {
+		closeResultSet(rs);
+		closeStatement(st);
+	}
+	
+	// 释放资源
+	public static void closeResource(Connection conn, Statement st, ResultSet rs) {
+		closeResource(st, rs);
+		closeConn(conn);
+	}
+
+	// 释放 connection
+	public static void closeConn(Connection conn) {
+		if (conn != null) {
+			try {
+				conn.close();
+				//和线程解绑
+				tl.remove();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+			conn = null;
+		}
+	}
+
+	// 释放 statement ctrl + shift + f 格式化代码
+	public static void closeStatement(Statement st) {
+		if (st != null) {
+			try {
+				st.close();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+			st = null;
+		}
+	}
+
+	// 释放结果集
+	public static void closeResultSet(ResultSet rs) {
+		if (rs != null) {
+			try {
+				rs.close();
+			} catch (SQLException e) {
+				e.printStackTrace();
+			}
+			rs = null;
+		}
+	}
+	
+	
+	//开启事务
+	public static void startTransaction() throws SQLException{
+		getConnection().setAutoCommit(false);
+	}
+	
+	/**
+	 * 事务提交且释放连接
+	 */
+	public static void commitAndClose(){
+		Connection conn = null;
+		try {
+			conn=getConnection();
+			//事务提交
+			conn.commit();
+			//关闭资源
+			conn.close();
+			//解除版定
+			tl.remove();
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * 事务回滚且释放资源
+	 */
+	public static void rollbackAndClose(){
+		Connection conn = null;
+		try {
+			conn=getConnection();
+			//事务回滚
+			conn.rollback();
+			//关闭资源
+			conn.close();
+			//解除版定
+			tl.remove();
+		} catch (SQLException e) {
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/maildemo/src/main/java/pers/hdh/utils/MailUtils.java b/maildemo/src/main/java/pers/hdh/utils/MailUtils.java
new file mode 100644
index 00000000..0a3a8f9e
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/utils/MailUtils.java
@@ -0,0 +1,60 @@
+package pers.hdh.utils;
+
+import com.sun.mail.util.MailSSLSocketFactory;
+
+import javax.mail.*;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import java.util.Properties;
+
+public class MailUtils {
+
+    // 发件者的邮箱与密码/授权码
+    private static String[] from={ "邮箱", "授权码"};
+
+    /**
+     * 发送邮件的方法
+     * @param to 邮箱地址
+     * @param msg 发送的信息
+     */
+    public static void sendMail(String to, String msg) throws Exception {
+
+        // 1.创建连接对象,连接到邮箱服务器
+        Properties prop = new Properties();
+        // 设置邮件服务器主机名
+        prop.setProperty("mail.host", "smtp.qq.com");
+        // 发送邮件协议名称
+        prop.setProperty("mail.transport.protocol", "smtp");
+        // 发送服务器需要身份验证
+        prop.setProperty("mail.smtp.auth", "true");
+
+        /*
+            注意:使用qq邮箱发送需要开启ssl加密
+        */
+        MailSSLSocketFactory sf = new MailSSLSocketFactory();
+        sf.setTrustAllHosts(true);
+        prop.setProperty("mail.smtp.ssl.enable", "true");
+        prop.put("mail.smtp.ssl.socketFactory", sf);
+
+        Session session = Session.getInstance(prop,  new Authenticator() {
+            public PasswordAuthentication getPasswordAuthentication() {
+                //设置发送人的帐号和密码
+                return new PasswordAuthentication(from[0], from[1]);
+            }
+        });
+
+        // 2.创建邮件对象
+        Message message = new MimeMessage(session);
+        // 2.1 设置发件者
+        message.setFrom(new InternetAddress(from[0]));
+        // 2.2 设置收件者
+        message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
+        // 2.3 设置邮件主题
+        message.setSubject("欢迎您注册我们网站");
+        // 2.4 设置邮件的正文
+        message.setContent("<h1>请点击<a href='http://localhost:8080/maildemo/ActiveServlet?uid="+msg+"'>此链接</a>以激活账号</h1>", "text/html;charset=utf-8");
+
+        // 3.发送邮件
+        Transport.send(message);
+    }
+}
diff --git a/maildemo/src/main/java/pers/hdh/utils/UUIDUtils.java b/maildemo/src/main/java/pers/hdh/utils/UUIDUtils.java
new file mode 100644
index 00000000..3f87173b
--- /dev/null
+++ b/maildemo/src/main/java/pers/hdh/utils/UUIDUtils.java
@@ -0,0 +1,25 @@
+package pers.hdh.utils;
+
+import java.util.UUID;
+
+public class UUIDUtils {
+	/**
+	 * 随机生成id
+	 * @return
+	 */
+	public static String getId(){
+		return UUID.randomUUID().toString().replace("-", "").toUpperCase();
+	}
+	
+	/**
+	 * 生成随机码
+	 * @return
+	 */
+	public static String getCode(){
+		return getId();
+	}
+	
+	public static void main(String[] args) {
+		System.out.println(getId());
+	}
+}
diff --git a/maildemo/src/main/recources/c3p0.properties b/maildemo/src/main/recources/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/src/main/recources/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/web/WEB-INF/classes/c3p0.properties b/maildemo/web/WEB-INF/classes/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/web/WEB-INF/classes/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/web/WEB-INF/classes/main/recources/c3p0.properties b/maildemo/web/WEB-INF/classes/main/recources/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/web/WEB-INF/classes/main/recources/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/dao/UserDao.class b/maildemo/web/WEB-INF/classes/pers/hdh/dao/UserDao.class
new file mode 100644
index 00000000..52498e4f
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/dao/UserDao.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class b/maildemo/web/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class
new file mode 100644
index 00000000..401df2fa
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/dao/impl/UserDaoImpl.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/domain/User.class b/maildemo/web/WEB-INF/classes/pers/hdh/domain/User.class
new file mode 100644
index 00000000..f9dc5d7e
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/domain/User.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/service/UserService.class b/maildemo/web/WEB-INF/classes/pers/hdh/service/UserService.class
new file mode 100644
index 00000000..5b0fbb4e
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/service/UserService.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class b/maildemo/web/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class
new file mode 100644
index 00000000..0f928e2c
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/service/impl/UserServiceImpl.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class b/maildemo/web/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class
new file mode 100644
index 00000000..6db31d8f
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/servlet/ActiveServlet.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class b/maildemo/web/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class
new file mode 100644
index 00000000..762db82c
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/servlet/RegistServlet.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class b/maildemo/web/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class
new file mode 100644
index 00000000..a86503b9
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/utils/DataSourceUtils.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class b/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class
new file mode 100644
index 00000000..adc32f16
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils$1.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils.class b/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils.class
new file mode 100644
index 00000000..f6e2544a
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/utils/MailUtils.class differ
diff --git a/maildemo/web/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class b/maildemo/web/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class
new file mode 100644
index 00000000..f90e8b62
Binary files /dev/null and b/maildemo/web/WEB-INF/classes/pers/hdh/utils/UUIDUtils.class differ
diff --git a/maildemo/web/WEB-INF/classes/recources/c3p0.properties b/maildemo/web/WEB-INF/classes/recources/c3p0.properties
new file mode 100644
index 00000000..a81ecc0a
--- /dev/null
+++ b/maildemo/web/WEB-INF/classes/recources/c3p0.properties
@@ -0,0 +1,4 @@
+c3p0.driverClass=com.mysql.jdbc.Driver
+c3p0.jdbcUrl=jdbc:mysql://localhost:3306/db
+c3p0.user=root
+c3p0.password=toor
\ No newline at end of file
diff --git a/maildemo/web/WEB-INF/lib/c3p0-0.9.1.2.jar b/maildemo/web/WEB-INF/lib/c3p0-0.9.1.2.jar
new file mode 100644
index 00000000..0f42d60e
Binary files /dev/null and b/maildemo/web/WEB-INF/lib/c3p0-0.9.1.2.jar differ
diff --git a/maildemo/web/WEB-INF/lib/commons-dbutils-1.6.jar b/maildemo/web/WEB-INF/lib/commons-dbutils-1.6.jar
new file mode 100644
index 00000000..b2590db9
Binary files /dev/null and b/maildemo/web/WEB-INF/lib/commons-dbutils-1.6.jar differ
diff --git a/maildemo/web/WEB-INF/lib/mail.jar b/maildemo/web/WEB-INF/lib/mail.jar
new file mode 100644
index 00000000..9d60d13b
Binary files /dev/null and b/maildemo/web/WEB-INF/lib/mail.jar differ
diff --git a/maildemo/web/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar b/maildemo/web/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar
new file mode 100644
index 00000000..465af670
Binary files /dev/null and b/maildemo/web/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar differ
diff --git a/maildemo/web/WEB-INF/web.xml b/maildemo/web/WEB-INF/web.xml
new file mode 100644
index 00000000..4543e1cd
--- /dev/null
+++ b/maildemo/web/WEB-INF/web.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         id="WebApp_ID" version="2.5">
+    
+    <servlet>
+        <servlet-name>RegistServlet</servlet-name>
+        <servlet-class>pers.hdh.servlet.RegistServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>RegistServlet</servlet-name>
+        <url-pattern>/RegistServlet</url-pattern>
+    </servlet-mapping>
+    <servlet>
+        <servlet-name>ActiveServlet</servlet-name>
+        <servlet-class>pers.hdh.servlet.ActiveServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>ActiveServlet</servlet-name>
+        <url-pattern>/ActiveServlet</url-pattern>
+    </servlet-mapping>
+</web-app>
\ No newline at end of file
diff --git a/maildemo/web/error.jsp b/maildemo/web/error.jsp
new file mode 100644
index 00000000..9a075516
--- /dev/null
+++ b/maildemo/web/error.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:41
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>注册失败</title>
+</head>
+<body>
+    账号注册失败,请重新注册!
+</body>
+</html>
diff --git a/maildemo/web/index.jsp b/maildemo/web/index.jsp
new file mode 100644
index 00000000..e841e4a4
--- /dev/null
+++ b/maildemo/web/index.jsp
@@ -0,0 +1,34 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 12:52
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+  <head>
+    <title>用户注册</title>
+  </head>
+  <body>
+    <form action="${pageContext.request.contextPath}/RegistServlet" method="post">
+      <table width="500" border="1" align="center">
+        <tr>
+          <td>用户名</td>
+          <td><input type="text" name="username"/></td>
+        </tr>
+        <tr>
+          <td>密码</td>
+          <td><input type="password" name="password"/></td>
+        </tr>
+        <tr>
+          <td>邮箱</td>
+          <td><input type="email" name="email" /></td>
+        </tr>
+        <tr>
+          <td colspan="2"><input type="submit" value="注册"/></td>
+        </tr>
+      </table>
+    </form>
+  </body>
+</html>
diff --git a/maildemo/web/message.jsp b/maildemo/web/message.jsp
new file mode 100644
index 00000000..4760f201
--- /dev/null
+++ b/maildemo/web/message.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:42
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>请前往邮箱激活账号</title>
+</head>
+<body>
+    注册操作已成功完成,请前往邮箱进行激活账号操作
+</body>
+</html>
diff --git a/maildemo/web/success.jsp b/maildemo/web/success.jsp
new file mode 100644
index 00000000..1cb82eca
--- /dev/null
+++ b/maildemo/web/success.jsp
@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Lenovo
+  Date: 2017/10/25
+  Time: 17:40
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>注册成功</title>
+</head>
+<body>
+    恭喜您,账号激活成功!
+</body>
+</html>
diff --git a/matrix_multiplication.java b/matrix_multiplication.java
new file mode 100644
index 00000000..6688f9e7
--- /dev/null
+++ b/matrix_multiplication.java
@@ -0,0 +1,34 @@
+public class MatrixMultiplication {
+    public static void main(String[] args) {
+        int[][] A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
+        int[][] B = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
+        int[][] RES = new int[3][3];
+
+        // Perform matrix multiplication
+        for (int i = 0; i < 3; i++) {
+            for (int j = 0; j < 3; j++) {
+                for (int k = 0; k < 3; k++) {
+                    RES[i][j] += A[i][k] * B[k][j];
+                }
+            }
+        }
+
+        // Print the arrays
+        System.out.println("Matrix A:");
+        printMatrix(A);
+        System.out.println("Matrix B:");
+        printMatrix(B);
+        System.out.println("Result Matrix (A * B):");
+        printMatrix(RES);
+    }
+
+    // Helper method to print a matrix
+    public static void printMatrix(int[][] matrix) {
+        for (int i = 0; i < matrix.length; i++) {
+            for (int j = 0; j < matrix[i].length; j++) {
+                System.out.print(matrix[i][j] + " ");
+            }
+            System.out.println();
+        }
+    }
+}
diff --git a/middleNodeLL.java b/middleNodeLL.java
new file mode 100644
index 00000000..25415def
--- /dev/null
+++ b/middleNodeLL.java
@@ -0,0 +1,55 @@
+import java.io.*;
+class LinkedList {
+	Node head;
+
+	class Node {
+		int data;
+		Node next;
+		Node(int d)
+		{
+			data = d;
+			next = null;
+		}
+	}
+
+	void printMiddle()
+	{
+		Node slow_ptr = head;
+		Node fast_ptr = head;
+
+		while (fast_ptr != null && fast_ptr.next != null) {
+			fast_ptr = fast_ptr.next.next;
+			slow_ptr = slow_ptr.next;
+		}
+		System.out.println("The middle element is ["
+						+ slow_ptr.data + "] \n");
+	}
+
+	public void push(int new_data)
+	{
+		Node new_node = new Node(new_data);
+
+		new_node.next = head;
+
+		head = new_node;
+	}
+	public void printList()
+	{
+		Node tnode = head;
+		while (tnode != null) {
+			System.out.print(tnode.data + "->");
+			tnode = tnode.next;
+		}
+		System.out.println("NULL");
+	}
+
+	public static void main(String[] args)
+	{
+		LinkedList llist = new LinkedList();
+		for (int i = 5; i > 0; --i) {
+			llist.push(i);
+			llist.printList();
+			llist.printMiddle();
+		}
+	}
+}
diff --git a/mineswepper game.java b/mineswepper game.java
new file mode 100644
index 00000000..76c27c04
--- /dev/null
+++ b/mineswepper game.java	
@@ -0,0 +1,143 @@
+import java.util.Random;
+import java.util.Scanner;
+
+public class Minesweeper {
+    private static final int SIZE = 10;
+    private static final int MINES = 15;
+
+    private char[][] board;
+    private boolean[][] mines;
+    private boolean[][] revealed;
+    private boolean gameOver;
+
+    public Minesweeper() {
+        board = new char[SIZE][SIZE];
+        mines = new boolean[SIZE][SIZE];
+        revealed = new boolean[SIZE][SIZE];
+        gameOver = false;
+    }
+
+    public void initialize() {
+        // Initialize the board and randomly place mines
+        for (int i = 0; i < SIZE; i++) {
+            for (int j = 0; j < SIZE; j++) {
+                board[i][j] = ' ';
+                mines[i][j] = false;
+                revealed[i][j] = false;
+            }
+        }
+        placeMines();
+    }
+
+    public void placeMines() {
+        Random random = new Random();
+        int minesPlaced = 0;
+
+        while (minesPlaced < MINES) {
+            int x = random.nextInt(SIZE);
+            int y = random.nextInt(SIZE);
+
+            if (!mines[x][y]) {
+                mines[x][y] = true;
+                minesPlaced++;
+            }
+        }
+    }
+
+    public void printBoard() {
+        System.out.println("Minesweeper");
+        System.out.print("   ");
+        for (int i = 0; i < SIZE; i++) {
+            System.out.print(i + " ");
+        }
+        System.out.println();
+
+        for (int i = 0; i < SIZE; i++) {
+            System.out.print(i + ": ");
+            for (int j = 0; j < SIZE; j++) {
+                char cell = revealed[i][j] ? board[i][j] : ' ';
+                System.out.print(cell + " ");
+            }
+            System.out.println();
+        }
+    }
+
+    public void revealCell(int x, int y) {
+        if (x < 0 || x >= SIZE || y < 0 || y >= SIZE || revealed[x][y] || gameOver) {
+            return;
+        }
+
+        if (mines[x][y]) {
+            gameOver = true;
+            return;
+        }
+
+        revealed[x][y] = true;
+        int count = countMinesAround(x, y);
+        if (count > 0) {
+            board[x][y] = (char) (count + '0');
+        } else {
+            for (int i = -1; i <= 1; i++) {
+                for (int j = -1; j <= 1; j++) {
+                    revealCell(x + i, y + j);
+                }
+            }
+        }
+    }
+
+    public int countMinesAround(int x, int y) {
+        int count = 0;
+
+        for (int i = -1; i <= 1; i++) {
+            for (int j = -1; j <= 1; j++) {
+                int nx = x + i;
+                int ny = y + j;
+                if (nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE && mines[nx][ny]) {
+                    count++;
+                }
+            }
+        }
+
+        return count;
+    }
+
+    public boolean isGameOver() {
+        return gameOver;
+    }
+
+    public boolean isGameWon() {
+        int unrevealedCells = 0;
+        for (int i = 0; i < SIZE; i++) {
+            for (int j = 0; j < SIZE; j++) {
+                if (!revealed[i][j]) {
+                    unrevealedCells++;
+                }
+            }
+        }
+        return unrevealedCells == MINES;
+    }
+
+    public static void main(String[] args) {
+        Minesweeper game = new Minesweeper();
+        game.initialize();
+
+        Scanner scanner = new Scanner(System.in);
+
+        while (!game.isGameOver() && !game.isGameWon()) {
+            game.printBoard();
+            System.out.print("Enter row and column (e.g., '1 2'): ");
+            int x = scanner.nextInt();
+            int y = scanner.nextInt();
+            game.revealCell(x, y);
+        }
+
+        game.printBoard();
+        if (game.isGameWon()) {
+            System.out.println("You won! Congratulations!");
+        } else {
+            System.out.println("Game over! You hit a mine!");
+        }
+
+        scanner.close();
+    }
+}
diff --git a/monthDays3524.java b/monthDays3524.java
new file mode 100644
index 00000000..5530030f
--- /dev/null
+++ b/monthDays3524.java
@@ -0,0 +1,42 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.Scanner;
+
+public class monthDays3524 {
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.println("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.print("Enter the year: ");
+        int year = scanner.nextInt(); // Getting the year as input
+
+        while (year < 1000 || year > 9999) { // Checking if the entered year is valid
+            System.out.printf("Invalid input for the year!\nEnter the year again: ");
+            year = scanner.nextInt(); // Getting input again if input is invalid
+        }
+        System.out.print("Enter the month (1 to 12): ");
+            int month = scanner.nextInt(); // Getting the month as input
+
+            int daysInMonth = 0; // Variable to store no of days in that month
+            switch(month){
+                case 1: case 3: case 5: case 7: case 8: case 10: case 12:
+                    daysInMonth = 31;
+                    break;
+                case 4: case 6: case 9: case 11:
+                    daysInMonth = 30;
+                    break;
+                case 2:
+                    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
+                        daysInMonth = 29; // Leap year
+                    } else {
+                        daysInMonth = 28; // Non-leap year
+                    }
+                    break;
+                default:
+                    System.out.println("Invalid month!");
+                    return;
+            }
+            System.out.printf("Number of days in %d th month: %d", month,  daysInMonth);
+    }
+}
diff --git a/notes keeping app.java b/notes keeping app.java
new file mode 100644
index 00000000..548186ce
--- /dev/null
+++ b/notes keeping app.java	
@@ -0,0 +1,88 @@
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Note {
+    private String title;
+    private String content;
+
+    public Note(String title, String content) {
+        this.title = title;
+        this.content = content;
+    }
+
+    // Getters and setters for note details
+}
+
+public class NotesApp {
+    private static ArrayList<Note> notes = new ArrayList<>();
+    private static final String FILENAME = "notes.txt"; // File to save notes
+    private static Scanner scanner = new Scanner(System.in);
+
+    public static void main(String[] args) {
+        loadNotes(); // Load saved notes from the file
+
+        while (true) {
+            displayMenu();
+            int choice = scanner.nextInt();
+            scanner.nextLine();  // Consume newline character
+
+            switch (choice) {
+                case 1:
+                    createNote();
+                    break;
+                case 2:
+                    viewNotes();
+                    break;
+                case 3:
+                    editNote();
+                    break;
+                case 4:
+                    deleteNote();
+                    break;
+                case 5:
+                    saveNotes(); // Save notes to the file
+                    System.out.println("Goodbye!");
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+
+    // Implement methods for creating, viewing, editing, and deleting notes
+
+    private static void displayMenu() {
+        System.out.println("\nNotes Keeping App");
+        System.out.println("1. Create a new note");
+        System.out.println("2. View saved notes");
+        System.out.println("3. Edit a note");
+        System.out.println("4. Delete a note");
+        System.out.println("5. Exit");
+        System.out.print("Enter your choice: ");
+    }
+
+    private static void loadNotes() {
+        try (BufferedReader reader = new BufferedReader(new FileReader(FILENAME))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                String[] parts = line.split("\\|");
+                if (parts.length == 2) {
+                    notes.add(new Note(parts[0], parts[1]));
+                }
+            }
+        } catch (IOException e) {
+            // Handle file loading errors, or create the file if it doesn't exist
+        }
+    }
+
+    private static void saveNotes() {
+        try (PrintWriter writer = new PrintWriter(new FileWriter(FILENAME))) {
+            for (Note note : notes) {
+                writer.println(note.getTitle() + "|" + note.getContent());
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/number.py b/number.py
new file mode 100644
index 00000000..37aa99c2
--- /dev/null
+++ b/number.py
@@ -0,0 +1,108 @@
+
+import random
+import string
+
+def generate_password(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
+
+def generaword(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
+
+def generate(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
+def generate_password(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
+def genssword(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
+def gepassword(length=12, include_digits=True, include_special_chars=True):
+    characters = string.ascii_letters
+    if include_digits:
+        characters += string.digits
+    if include_special_chars:
+        characters += string.punctuation
+
+    password = ''.join(random.choice(characters) for _ in range(length))
+    return password
+
+if __name__ == "__main__":
+    password_length = 16
+    use_digits = True
+    use_special_chars = True
+
+    password = generate_password(password_length, use_digits, use_special_chars)
+    print(f"Random Password: {password}")
diff --git a/numberGuess.java b/numberGuess.java
new file mode 100644
index 00000000..8da3531c
--- /dev/null
+++ b/numberGuess.java
@@ -0,0 +1,40 @@
+import java.util.*;
+import java.lang.Math.*;
+
+import javax.swing.*;
+
+public class numberGuess {
+   public static void main(String[] args) {
+       int computerNumber = (int) (Math.random()*100 + 1);
+       int userAnswer = 0;
+       System.out.println("The correct guess would be " + computerNumber);
+        int count = 1;
+
+       while (userAnswer != computerNumber)
+       {
+           String response = JOptionPane.showInputDialog(null,
+               "Enter a guess between 1 and 100", "Guessing Game", 3);
+           userAnswer = Integer.parseInt(response);
+           JOptionPane.showMessageDialog(null, ""+ determineGuess(userAnswer, computerNumber, count));
+           count++;
+       }  
+   }
+
+   public static String determineGuess(int userAnswer, int computerNumber, int count){
+       if (userAnswer <=0 || userAnswer >100) {
+           return "Your guess is invalid";
+       }
+       else if (userAnswer == computerNumber ){
+           return "Correct!\nTotal Guesses: " + count;
+       }
+       else if (userAnswer > computerNumber) {
+           return "Your guess is too high, try again.\nTry Number: " + count;
+       }
+       else if (userAnswer < computerNumber) {
+           return "Your guess is too low, try again.\nTry Number: " + count;
+       }
+       else {
+           return "Your guess is incorrect\nTry Number: " + count;
+   	}
+   }
+}
\ No newline at end of file
diff --git a/numberGuessingGame.java b/numberGuessingGame.java
new file mode 100644
index 00000000..ee003f70
--- /dev/null
+++ b/numberGuessingGame.java
@@ -0,0 +1,21 @@
+import java.util.*;
+import java.lang.Math.*;
+
+class NumberGuessingGame{
+	public static void main(String args[]){
+		Scanner scan = new Scanner(System.in);
+		var random = new Random();
+		int randNum = (random.nextInt(100))+1;
+		int guess,guessCount=0;
+		do{	
+		System.out.println("Guess the number: ");
+		guess = scan.nextInt();
+		if(guess==randNum){
+			System.out.println("Your guess is correct!\nYour score is "+(100-guessCount));
+		}
+		else
+			System.out.println(guess>randNum?"Smaller Number ":"Larger Number " + "Try again!");
+			guessCount++;
+		}while(guess!=randNum);
+	}
+}
diff --git a/numberpattern.java b/numberpattern.java
new file mode 100644
index 00000000..49fdc895
--- /dev/null
+++ b/numberpattern.java
@@ -0,0 +1,31 @@
+// Java Program to print pattern 
+// Number triangle pattern 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+		// outer loop to handle number of rows 
+		for (i = 1; i <= n; i++) { 
+			// inner loop to print space 
+			for (j = 1; j <= n - i; j++) { 
+				System.out.print(" "); 
+			} 
+			// inner loop to print star 
+			for (j = 1; j <= i; j++) { 
+				System.out.print(i + " "); 
+			} 
+			// print new line for each row 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/orderBook b/orderBook
new file mode 160000
index 00000000..1e5ed09f
--- /dev/null
+++ b/orderBook
@@ -0,0 +1 @@
+Subproject commit 1e5ed09f70b085b47e64eb25ec32a4f3267be627
diff --git a/painting.java b/painting.java
new file mode 100644
index 00000000..cbed191b
--- /dev/null
+++ b/painting.java
@@ -0,0 +1,18 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import java.applet.*;  
+public class MouseDrag extends Applet implements MouseMotionListener{  
+  
+public void init(){  
+addMouseMotionListener(this);  
+setBackground(Color.red);  
+}  
+  
+public void mouseDragged(MouseEvent me){  
+Graphics g=getGraphics();  
+g.setColor(Color.white);  
+g.fillOval(me.getX(),me.getY(),5,5);  
+}  
+public void mouseMoved(MouseEvent me){}  
+  
+}  
diff --git a/passcode.java b/passcode.java
new file mode 100644
index 00000000..c0ae01a7
--- /dev/null
+++ b/passcode.java
@@ -0,0 +1,28 @@
+import java.security.SecureRandom;
+
+public class PasswordGenerator {
+
+    private static final String UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    private static final String LOWERCASE = "abcdefghijklmnopqrstuvwxyz";
+    private static final String DIGITS = "0123456789";
+    private static final String SPECIAL_CHARACTERS = "!@#$%^&*()-_+=<>?";
+
+    public static String generatePassword(int length) {
+        String validCharacters = UPPERCASE + LOWERCASE + DIGITS + SPECIAL_CHARACTERS;
+        SecureRandom random = new SecureRandom();
+
+        StringBuilder password = new StringBuilder(length);
+        for (int i = 0; i < length; i++) {
+            int randomIndex = random.nextInt(validCharacters.length());
+            password.append(validCharacters.charAt(randomIndex));
+        }
+
+        return password.toString();
+    }
+
+    public static void main(String[] args) {
+        int passwordLength = 12; // Adjust the length as per your requirement
+        String generatedPassword = generatePassword(passwordLength);
+        System.out.println("Generated Password: " + generatedPassword);
+    }
+}
diff --git a/passowrd&notes.java b/passowrd&notes.java
new file mode 100644
index 00000000..9c8933d6
--- /dev/null
+++ b/passowrd&notes.java
@@ -0,0 +1,698 @@
+import java.awt.*;
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.security.SecureRandom;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.util.Base64;
+import javax.crypto.*;
+import javax.crypto.spec.PBEKeySpec;
+import javax.crypto.spec.PBEParameterSpec;
+
+
+// This class is used to create a loading screen
+class SplashScreen {
+    JFrame frame;
+    JLabel image=new JLabel(new ImageIcon("key-lock.png"));
+    JLabel text=new JLabel("PASSWORD & NOTES MANAGER");
+    JProgressBar progressBar=new JProgressBar();
+    JLabel message=new JLabel();
+    SplashScreen()
+    {
+        createGUI();
+        addImage();
+        addText();
+        addProgressBar();
+        runningPBar();
+    }
+
+    public void createGUI(){
+        frame=new JFrame(); // to create a frame
+        frame.getContentPane().setLayout(null); // to set the layout of the frame
+        frame.setUndecorated(true);
+        frame.setSize(400,400); // to set the size of the frame
+        frame.setLocationRelativeTo(null);
+        frame.getContentPane().setBackground(new Color(0XFF8787)); // to set the background color of the frame
+        frame.setVisible(true);
+    }
+
+    public void addImage(){
+        image.setSize(400,200); // to set the size of the image
+        frame.add(image);
+    }
+    
+    public void addText()
+    {
+        text.setFont(new Font("MV Boli",Font.BOLD,20)); // to set the font of the text
+        text.setBounds(30,200,400,30);
+        text.setForeground(Color.black);
+        frame.add(text);
+    }
+    
+    public void addProgressBar(){
+        progressBar.setBounds(100,280,200,30); // to set the size of the progress bar
+        progressBar.setBorderPainted(true);
+        progressBar.setStringPainted(true);
+        progressBar.setBackground(Color.black);
+        progressBar.setForeground(new Color(0X38E54D));
+        progressBar.setValue(0);
+        frame.add(progressBar);
+    }
+    public void runningPBar(){
+        int i=0;//Creating an integer variable and initializing it to 0
+        while( i<=100)
+        {
+            try{
+                Thread.sleep(40);   //Pausing execution for 50 milliseconds
+                progressBar.setValue(i);    //Setting value of Progress Bar
+                i++;
+                if(i==100)
+                    frame.dispose();
+            }catch(Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+}
+
+//Linear Probing Implementation
+class HashtablePassword implements hashTableMap {
+    private final int useProbe;    //0 = Linear Probing, 1 = Quadratic Probing
+    private Entry[] entries;       //The array of entries
+    private final float loadFactor;     //The load factor
+    private int size, used;         //used acquires space for NIL
+    private final Entry NIL = new Entry(null, null); //Deleted entries
+
+    private static class Entry{
+        Object key, value;
+        Entry(Object k, Object v){
+            key = k;    value = v;
+        }
+    }
+    public HashtablePassword(int capacity, float loadFactor, int useProbe){
+        entries = new Entry[capacity];
+        this.loadFactor = loadFactor;
+        this.useProbe = useProbe;
+    }
+
+
+    //Complementary functions
+    public int hash(Object key){
+        return (key.hashCode() & 0x7FFFFFFF) % entries.length;
+    }
+
+    private int nextProbe(int h, int i){
+        return (h+i) % entries.length;  //Linear Probing
+    }
+
+    private void rehash(){ 
+        Entry[] oldEntries = entries;
+        entries = new Entry[2*entries.length+1];
+        for (Entry entry : oldEntries) {
+            if (entry == NIL || entry == null) continue;
+            int h = hash(entry.key);
+            for (int x = 0; x < entries.length; x++) {
+                int j = nextProbe(h, x);
+                if (entries[j] == null) {
+                    entries[j] = entry;
+                    break;
+                }
+            }
+            used = size;
+        }
+    }
+
+    @Override
+    public int add_Acc(Object Account, Object passwd) {
+        if(used > (loadFactor*entries.length))rehash();
+        int h = hash(Account);
+        for (int i = 0; i < entries.length; i++){
+            int j = (h+i) % entries.length;
+            Entry entry = entries[j];
+            if(entry==null){
+                entries[j]= new Entry(Account, passwd);
+                ++size;
+                ++used;
+                return h;
+            }
+            if(entry == NIL)continue;
+            if(entry.key.equals(Account)){
+                Object oldValue = entry.value;
+                entries[j].value = passwd;
+                return (int) oldValue;
+            }
+        }
+        return h;
+    }
+
+    @Override
+    public Object get_Acc(Object Account) {
+        int h = hash(Account);
+        for(int i = 0; i < entries.length; i++){
+            int j = nextProbe(h , i);
+            Entry entry = entries[j];
+            if(entry == null)break;
+            if(entry == NIL)continue;
+            if(entry.key.equals(Account)) return entry.value;
+        }
+        return null;
+    }
+
+    @Override
+    public Object remove_Acc(Object Account) {
+        int h = hash(Account);
+        for(int i = 0; i < entries.length; i++){
+            int j = nextProbe(h,i);
+            Entry entry = entries[j];
+            if(entry == NIL)continue;
+            if(entry.key.equals(Account)){
+                Object Value = entry.value;
+                entries[j] = NIL;
+                size--;
+                return Value;
+            }
+        }
+        return null;
+    }
+}
+class CryptoUtil 
+{
+
+    Cipher ecipher;
+    Cipher dcipher;
+    // 8-byte Salt
+    byte[] salt = {
+        (byte) 0xA9, (byte) 0x9B, (byte) 0xC8, (byte) 0x32,
+        (byte) 0x56, (byte) 0x35, (byte) 0xE3, (byte) 0x03
+    };
+    // Iteration count
+    int iterationCount = 19;
+
+    public CryptoUtil() {
+
+    }
+
+    /**
+     *
+     * @param secretKey Key used to encrypt data
+     * @param plainText Text input to be encrypted
+     * @return Returns encrypted text
+     * @throws java.security.NoSuchAlgorithmException
+     * @throws java.security.spec.InvalidKeySpecException
+     * @throws javax.crypto.NoSuchPaddingException
+     * @throws java.security.InvalidKeyException
+     * @throws java.security.InvalidAlgorithmParameterException
+     * @throws java.io.UnsupportedEncodingException
+     * @throws javax.crypto.IllegalBlockSizeException
+     * @throws javax.crypto.BadPaddingException
+     *
+     */
+    public String encrypt(String secretKey, String plainText)
+            throws NoSuchAlgorithmException,
+            InvalidKeySpecException,
+            NoSuchPaddingException,
+            InvalidKeyException,
+            InvalidAlgorithmParameterException,
+            UnsupportedEncodingException,
+            IllegalBlockSizeException,
+            BadPaddingException {
+        //Key generation for enc and desc
+        KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
+        SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
+        // Prepare the parameter to the ciphers
+        AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
+
+        //Enc process
+        ecipher = Cipher.getInstance(key.getAlgorithm());
+        ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
+        String charSet = "UTF-8";
+        byte[] in = plainText.getBytes(charSet);
+        byte[] out = ecipher.doFinal(in);
+        String encStr = new String(Base64.getEncoder().encode(out));
+        return encStr;
+    }
+
+    /**
+     * @param secretKey Key used to decrypt data
+     * @param encryptedText encrypted text input to decrypt
+     * @return Returns plain text after decryption
+     * @throws java.security.NoSuchAlgorithmException
+     * @throws java.security.spec.InvalidKeySpecException
+     * @throws javax.crypto.NoSuchPaddingException
+     * @throws java.security.InvalidKeyException
+     * @throws java.security.InvalidAlgorithmParameterException
+     * @throws java.io.UnsupportedEncodingException
+     * @throws javax.crypto.IllegalBlockSizeException
+     * @throws javax.crypto.BadPaddingException
+     */
+    public String decrypt(String secretKey, String encryptedText)
+            throws NoSuchAlgorithmException,
+            InvalidKeySpecException,
+            NoSuchPaddingException,
+            InvalidKeyException,
+            InvalidAlgorithmParameterException,
+            UnsupportedEncodingException,
+            IllegalBlockSizeException,
+            BadPaddingException,
+            IOException {
+        //Key generation for enc and desc
+        KeySpec keySpec = new PBEKeySpec(secretKey.toCharArray(), salt, iterationCount);
+        SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
+        // Prepare the parameter to the ciphers
+        AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
+        //Decryption process; same key will be used for decr
+        dcipher = Cipher.getInstance(key.getAlgorithm());
+        dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
+        byte[] enc = Base64.getDecoder().decode(encryptedText);
+        byte[] utf8 = dcipher.doFinal(enc);
+        String charSet = "UTF-8";
+        String plainStr = new String(utf8, charSet);
+        return plainStr;
+    }    
+   
+}
+
+class PasswordGenerator {
+    private static final SecureRandom random = new SecureRandom();
+    private static final String caps="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    private static final String small_caps="abcdefghijklmnopqrstuvwxyz";
+    private static final String Numeric="1234567890";
+    private static final String special_char="~!@#$%^&*(_+{}|:_[?]>=<";
+    private static final String dic = caps + small_caps + Numeric + special_char;
+
+    public String generatePassword(int len) {
+        StringBuilder password= new StringBuilder();
+        for (int i = 0; i <len ; i++) {
+            int index = random.nextInt(dic.length());
+            password.append(dic.charAt(index));
+        }
+        return password.toString();
+    }
+
+}
+
+
+interface hashTableMap {
+
+    Object get_Acc(Object Account);
+    int add_Acc(Object Account, Object passwd);
+    Object remove_Acc(Object Account);
+}
+
+class PasswordManager implements ActionListener {
+
+    //Store password class reference
+    HashtablePassword data = new HashtablePassword(15,0.5F,0);
+
+    // GUI variables declaration
+    JFrame frame;
+    JFrame frame2;
+    JLabel background;
+    Container conn1,conn2;
+    JLabel lAcc,lPass;
+    JTextArea encryptPasswdArea, genePassArea, searchPassArea;
+    JButton PassGeneBtn,PassEncryptBtn, PassStoreBtn, PassSearchBtn, AccAddBtn, PassDeleteBtn;
+    JTextField tAcc,tPass;
+    JButton addNoteBtn;
+    JLabel addNoteLabel;
+    JTextArea tNote;
+    JButton addNote;
+    JFrame conn3;
+
+    ArrayList<String> notes = new ArrayList<>(); // to store the notes in an array list of string type
+
+    @Override
+    public void actionPerformed(ActionEvent e) { }
+
+    //Frame settings
+    public static void FrameGUI(JFrame frame){
+        frame.setVisible(true);
+        frame.setLayout(null);
+        frame.setLocationRelativeTo(null);
+    }
+
+
+    //container settings
+    public static void ContainerGUI(Container conn){
+        conn.setVisible(true);
+        conn.setBackground(Color.getHSBColor(20.4f, 10.5f, 12.9f));
+        conn.setLayout(null);
+    }
+
+
+    // buttons settings
+    public void GUIButtonsSetting(JButton btn){
+        btn.setBackground(new Color(0XFB2576));
+        btn.setForeground(Color.WHITE);
+        btn.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
+        btn.setFocusable(false);
+        Cursor crs = new Cursor(Cursor.HAND_CURSOR); 
+        btn.setCursor(crs);
+        Font fn = new Font("MV Boli", Font.BOLD, 15);
+        btn.setFont(fn);
+    }
+
+    //GUI of Store password
+    public void StoringGUI()
+    {
+        frame2 = new JFrame("Store your passwords");
+        frame2.setBounds(1400, 300, 800, 500);
+        frame2.setSize(400,400);
+        FrameGUI(frame2);
+        conn2 = frame2.getContentPane();
+        ContainerGUI(conn2);
+        Font fn = new Font("MV Boli", Font.BOLD, 20);
+
+        //Account textFiled and label
+        lAcc = new JLabel("ACCOUNT NAME");
+        lAcc.setBounds(90, 23, 380, 20);
+        lAcc.setFont(fn);
+        conn2.add(lAcc);
+
+        tAcc = new JTextField();
+        tAcc.setBounds(90,70,200,50);
+        tAcc.setFont(fn);
+        tAcc.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
+        tAcc.setForeground(Color.DARK_GRAY);
+        conn2.add(tAcc);
+
+        //Account password textField and label
+        lPass = new JLabel("ACCOUNT PASSWORD");
+        lPass.setBounds(90, 160, 380, 20);
+        lPass.setFont(fn);
+        conn2.add(lPass);
+
+        tPass = new JTextField();
+        tPass.setBounds(90,200,200,50);
+        tPass.setFont(fn);
+        tPass.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
+        tPass.setForeground(Color.DARK_GRAY);
+        conn2.add(tPass);
+
+        AccAddBtn = new JButton("STORE");
+        AccAddBtn.setBounds(120, 290, 150, 50);
+        conn2.add(AccAddBtn);
+        GUIButtonsSetting(AccAddBtn);
+    }
+
+    //for password generator and encryption
+    public void textArea(String Pass,JTextArea TA){
+        TA.setText(Pass);
+        Font fn = new Font("MV Boli", Font.BOLD, 20);
+        TA.setWrapStyleWord(true);
+        TA.setLineWrap(true);
+        TA.setCaretPosition(0);
+        TA.setEditable(false);
+        TA.setFont(fn);
+
+    }
+
+    //GUI of Password Manager
+    PasswordManager() {
+
+        frame = new JFrame("Password Manager");
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.setSize(400,650);
+        frame.setResizable(false);
+        ImageIcon img = new ImageIcon("background.png");
+        background = new JLabel("",img,JLabel.CENTER);
+        background.setBounds(0,0,400,650);
+        background.setVisible(true);
+        frame.add(background);
+    
+        FrameGUI(frame);
+
+        conn1 = frame.getContentPane();
+        ContainerGUI(conn1);
+
+        //Generator buttons settings
+        PassGeneBtn = new JButton("GENERATE PASSWORD");
+        PassGeneBtn.setBounds(90, 20, 220, 40);
+        conn1.add(PassGeneBtn);
+        GUIButtonsSetting(PassGeneBtn);
+
+        //generating password
+        PassGeneBtn.addActionListener(e -> {
+        if(PassGeneBtn ==e.getSource())
+        {
+            try{
+                int len = Integer.parseInt(JOptionPane.showInputDialog("Enter the password length"));
+                if(len>4)
+                {
+                    //  password generator class reference
+                    PasswordGenerator pass = new PasswordGenerator();
+                    String passwd = pass.generatePassword(len);
+                    genePassArea = new JTextArea(5,4);
+                    textArea(passwd,genePassArea);
+                    JOptionPane.showMessageDialog(conn1,new JScrollPane(genePassArea),"Copy your password",JOptionPane.INFORMATION_MESSAGE);
+
+                }
+                else JOptionPane.showMessageDialog (conn1,"Password length must be greater than 8!","Invalid Input Error",JOptionPane.WARNING_MESSAGE);
+
+            }
+            catch(Exception ex){JOptionPane.showMessageDialog(conn1,"Write something","EXIT!",JOptionPane.ERROR_MESSAGE);}
+        }
+    }
+    );
+ 
+        // add a encryption button and action
+        JButton EncryptBtn = new JButton("ENCRYPT Text");
+        EncryptBtn.setBounds(90, 90, 220, 40);
+        conn1.add(EncryptBtn);
+        GUIButtonsSetting(EncryptBtn);
+        EncryptBtn.addActionListener(e -> {
+            if(EncryptBtn ==e.getSource())
+            {
+                try{
+                    String text = JOptionPane.showInputDialog("Enter the text to encrypt");
+                    String secretKey = JOptionPane.showInputDialog("Enter the secret key");
+                    if(text.length()>0 && secretKey.length()>0)
+                    {
+                        //  password generator class reference
+                        CryptoUtil pass1 = new CryptoUtil();
+                        String passwd = pass1.encrypt(secretKey, text); // encrypting the text
+                        genePassArea = new JTextArea(5,4); // text area for the encrypted text
+                        textArea(passwd,genePassArea); // setting the text area
+                        JOptionPane.showMessageDialog(conn1,new JScrollPane(genePassArea),"Copy your password",JOptionPane.INFORMATION_MESSAGE); // showing the encrypted text
+
+                    }
+                    else JOptionPane.showMessageDialog (conn1,"Write something","Invalid Input Error",JOptionPane.WARNING_MESSAGE);
+
+                }
+                catch(Exception ex){JOptionPane.showMessageDialog(conn1,"Write something","EXIT!",JOptionPane.ERROR_MESSAGE);}
+            }
+        }
+        );
+
+        // add a decryption button and action
+        JButton DecryptBtn = new JButton("DECRYPT Text"); 
+        DecryptBtn.setBounds(90, 160, 220, 40);
+        conn1.add(DecryptBtn);
+        GUIButtonsSetting(DecryptBtn);
+        DecryptBtn.addActionListener(e -> {
+            if(DecryptBtn ==e.getSource())
+            {
+                try{
+                    String text = JOptionPane.showInputDialog("Enter the text to decrypt"); // getting the encrypted text
+                    String secretKey = JOptionPane.showInputDialog("Enter the secret key"); // getting the secret key
+                    if(text.length()>0 && secretKey.length()>0) // checking if the text and secret key is not empty
+                    {
+                        //  password generator class reference
+                        CryptoUtil pass1 = new CryptoUtil(); // creating a object of the CryptoUtil class
+                        String passwd = pass1.decrypt(secretKey, text); // decrypting the text
+                        genePassArea = new JTextArea(5,4); // text area for the decrypted text
+                        textArea(passwd,genePassArea); // setting the text area
+                        JOptionPane.showMessageDialog(conn1,new JScrollPane(genePassArea),"Decrypted text",JOptionPane.INFORMATION_MESSAGE); // showing the decrypted text
+
+                    }
+                    else JOptionPane.showMessageDialog (conn1,"Password length must be greater than 8!","Invalid Input Error",JOptionPane.WARNING_MESSAGE);
+
+                }
+                catch(Exception ex){JOptionPane.showMessageDialog(conn1,"Write something","EXIT!",JOptionPane.ERROR_MESSAGE);}
+            }
+        }
+        );
+
+        //storing password using hashtable
+        PassStoreBtn = new JButton("STORE PASSWORD");
+        PassStoreBtn.setBounds(90, 230, 220, 40);
+        conn1.add(PassStoreBtn);
+        GUIButtonsSetting(PassStoreBtn);
+        //Store password action
+        PassStoreBtn.addActionListener(e -> {
+            if(PassStoreBtn ==e.getSource())
+            {
+                try{
+                    StoringGUI();
+                    // action on the Store btn
+                    AccAddBtn.addActionListener(e4 -> {
+                        if (AccAddBtn == e4.getSource()) {
+                            String account_name = tAcc.getText(); // getting the account name
+                            String acc_pass = tPass.getText(); // getting the password
+                            if (account_name.isEmpty() && acc_pass.isEmpty()) {
+                                JOptionPane.showMessageDialog(conn2,"unable to store your password!","ERROR",JOptionPane.ERROR_MESSAGE);
+                            }
+                            else{
+                                //calling put method of the hashtablePassword class
+                                data.add_Acc(account_name,acc_pass); // adding the account name and password to the hashtable
+                                JOptionPane.showMessageDialog(conn2, "Account added Successfully !");
+                                tAcc.setText(null);
+                                tPass.setText(null);
+                            }
+                        }
+                      }
+                    );
+                }
+           catch(Exception ex) {JOptionPane.showMessageDialog(conn2,"Write something","EXIT",JOptionPane.ERROR_MESSAGE);}
+            }
+        }
+        );
+
+        //searching password
+        PassSearchBtn = new JButton("SEARCH PASSWORD");
+        GUIButtonsSetting(PassSearchBtn);
+        PassSearchBtn.setBounds(90, 300, 220, 40);
+        conn1.add(PassSearchBtn);
+        PassSearchBtn.addActionListener(e ->{
+            if (PassSearchBtn ==e.getSource()){
+                try{
+                    String acc_name = JOptionPane.showInputDialog("Enter your Account Name"); // getting the account name
+                    if (!acc_name.isBlank()) { // checking if the account name is not empty
+                        Object pass = data.get_Acc(acc_name.toLowerCase()); // getting the password of the account name
+                        if(pass!=null) { // checking if the password is not null
+                            searchPassArea = new JTextArea(4,5); // text area for the password
+                            textArea(String.valueOf(pass), searchPassArea); // setting the text area
+                            JOptionPane.showMessageDialog(conn1, new JScrollPane(searchPassArea), "Copy your password", JOptionPane.INFORMATION_MESSAGE);
+                        }
+                        else JOptionPane.showMessageDialog(conn1, "Account not Found!");
+                    }
+                }
+                catch (Exception ex){
+                    JOptionPane.showMessageDialog(conn1,"Write something","EXIT",JOptionPane.ERROR_MESSAGE);
+                    }
+                }
+            }
+        );
+
+        // deleting password
+        PassDeleteBtn = new JButton("DELETE PASSWORD");
+        GUIButtonsSetting(PassDeleteBtn);
+        PassDeleteBtn.setBounds(90, 370, 220, 40);
+        conn1.add(PassDeleteBtn);
+        PassDeleteBtn.addActionListener(e -> {
+            if (PassDeleteBtn == e.getSource()) {
+                try {
+                    String acc_name = JOptionPane.showInputDialog("Enter the Account Name"); // getting the account name
+                    if (!acc_name.isBlank()) {
+                        data.remove_Acc(acc_name.toLowerCase()); // removing the account name and password from the hashtable
+                        JOptionPane.showMessageDialog(conn1, "Delete successfully!"); // showing the message
+                    }
+                    else JOptionPane.showMessageDialog(conn1, "Account not found!", "INFO", JOptionPane.INFORMATION_MESSAGE);
+                } catch (Exception ex) {
+                    JOptionPane.showMessageDialog(conn1, "Write something", "EXIT", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+
+        }
+        );
+
+        addNoteBtn = new JButton("ADD NOTE");
+        GUIButtonsSetting(addNoteBtn);
+        addNoteBtn.setBounds(90, 440, 220, 40);
+        conn1.add(addNoteBtn);
+        addNoteBtn.addActionListener(e -> {
+            if (addNoteBtn == e.getSource()) {
+                try {
+                    NoteGUI();
+                    // action on the add note btn
+                    addNote.addActionListener(e4 -> {
+                        if (addNote == e4.getSource()) {
+                            String note = tNote.getText(); // getting the note
+                            if (note.isEmpty()) {
+                                JOptionPane.showMessageDialog(conn3, "unable to store your note!", "ERROR", JOptionPane.ERROR_MESSAGE);
+                            } else {
+                                //calling put method of the hashtablePassword class
+                                notes.add(note); // adding the note to the arraylist
+                                JOptionPane.showMessageDialog(conn3, "Note added Successfully !");
+                                conn3.setVisible(false);
+                                tNote.setText(null);
+                            }
+                        }
+                    });
+                } catch (Exception ex) {
+                    JOptionPane.showMessageDialog(conn3, "Write something", "EXIT", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+        }
+        );
+        
+        //get all notes
+        JButton getNoteBtn = new JButton("GET NOTE");
+        GUIButtonsSetting(getNoteBtn);
+        getNoteBtn.setBounds(90, 510, 220, 40);
+        conn1.add(getNoteBtn);
+        getNoteBtn.addActionListener(e -> {
+            if (getNoteBtn == e.getSource()) {
+                try {
+                    String allNotes = notes.get(notes.size() - 1); // getting the last note added
+                    if (allNotes.isEmpty()) { // checking if the note is empty or not
+                        JOptionPane.showMessageDialog(conn1, "No note found!", "INFO", JOptionPane.INFORMATION_MESSAGE); // showing the message
+                    } else {
+                        searchPassArea = new JTextArea(4, 5); // text area for the note
+                        textArea(allNotes, searchPassArea); // setting the text area
+                        JOptionPane.showMessageDialog(conn1, new JScrollPane(searchPassArea), "Get your notes", JOptionPane.INFORMATION_MESSAGE); // showing the message
+                    }
+                } catch (Exception ex) {
+                    JOptionPane.showMessageDialog(conn1, "Add a note before trying to retrive", "EXIT", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+        }
+        );
+
+    }
+
+    // method for setting the buttons and GUI for adding notes
+    private void NoteGUI() {
+
+        conn3 = new JFrame("Add Note");
+        conn3.setSize(500, 500);
+        conn3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        conn3.setLocationRelativeTo(null);
+        conn3.setLayout(null);
+        conn3.setVisible(true);
+        conn3.setResizable(false);
+
+        //add note label
+         addNoteLabel = new JLabel("Add Note");
+        addNoteLabel.setBounds(200, 20, 100, 30);
+        conn3.add(addNoteLabel);
+
+        //add note text area
+         tNote = new JTextArea(10, 10);
+        tNote.setBounds(100, 60, 300, 300);
+        conn3.add(tNote);
+
+        //add note button
+         addNote = new JButton("ADD NOTE");
+        GUIButtonsSetting(addNote);
+        addNote.setBounds(140, 380, 220, 30);
+        conn3.add(addNote);
+    }
+
+    // main method to run the application   
+    public static void main(String[] args) {
+        //loading screen class
+        new SplashScreen();
+        try {
+            new PasswordManager();
+        }catch (Exception ex) { ex.printStackTrace(); }
+ }
+}
diff --git a/pat.java b/pat.java
new file mode 100644
index 00000000..07b4c1ea
--- /dev/null
+++ b/pat.java
@@ -0,0 +1,39 @@
+// Java Program to print pattern 
+// Palindrome triangle 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+
+		// outer loop to handle number of rows 
+		for (i = 1; i <= n; i++) { 
+			// inner loop to print the spaces 
+			for (j = 1; j <= 2 * (n - i); j++) { 
+				System.out.print(" "); 
+			} 
+
+			// inner loop to print the first part 
+			for (j = i; j >= 1; j--) { 
+				System.out.print(j + " "); 
+			} 
+
+			// inner loop to print the second part 
+			for (j = 2; j <= i; j++) { 
+				System.out.print(j + " "); 
+			} 
+
+			// printing new line for each row 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/pattern.java b/pattern.java
new file mode 100644
index 00000000..221288af
--- /dev/null
+++ b/pattern.java
@@ -0,0 +1,31 @@
+// Java Program to print pattern
+// Number triangle pattern
+import java.util.*;
+
+public class GeeksForGeeks {
+	// Function to demonstrate pattern
+	public static void printPattern(int n)
+	{
+		int i, j;
+		// outer loop to handle number of rows
+		for (i = 1; i <= n; i++) {
+			// inner loop to print space
+			for (j = 1; j <= n - i; j++) {
+				System.out.print(" ");
+			}
+			// inner loop to print star
+			for (j = 1; j <= i; j++) {
+				System.out.print(i + " ");
+			}
+			// print new line for each row
+			System.out.println();
+		}
+	}
+
+	// Driver Function
+	public static void main(String args[])
+	{
+		int n = 6;
+		printPattern(n);
+	}
+}
diff --git a/pattern2.java b/pattern2.java
new file mode 100644
index 00000000..07480f71
--- /dev/null
+++ b/pattern2.java
@@ -0,0 +1,30 @@
+// Java Program to print pattern 
+// Number-increasing pyramid 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+		// outer loop to handle number of rows 
+		for (i = 1; i <= n; i++) { 
+			// inner loop to handle number of columns 
+			for (j = 1; j <= i; j++) { 
+				// printing column values upto the row 
+				// value. 
+				System.out.print(j + " "); 
+			} 
+
+			// print new line for each row 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/petshop/petshop.java.java b/petshop/petshop.java.java
new file mode 100644
index 00000000..510eeecc
--- /dev/null
+++ b/petshop/petshop.java.java
@@ -0,0 +1,325 @@
+import java.awt.EventQueue;
+import java.awt.event.*;
+import java.awt.*;
+import java.awt.Font;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import javax.swing.*;
+import javax.swing.JFrame;
+import javax.swing.ImageIcon;
+
+
+
+public class eps {
+
+  private JFrame frame;
+  private JLabel z1;
+  private JLabel y1;
+  private JLabel y2;
+  private JLabel y3;
+  private JLabel y4;
+  private JLabel x1;
+  private JLabel x2;
+  private JLabel l1;
+  private JLabel l2;
+  private JLabel l3;
+  private JLabel l4;
+  private JLabel l5;
+  private JLabel l6;
+  private JLabel l7;
+  private JLabel l8;
+  private JLabel a1;
+  private JLabel a2;
+  private JLabel a3;
+  private JLabel a4;
+  private JLabel a5;
+  private JLabel a6;
+  private JLabel a7;
+  private JLabel a8;
+  private JLabel a9;
+  private JLabel a0;
+  public static void main(String[] args) {
+    EventQueue.invokeLater(new Runnable() {
+      public void run() {
+        try {
+          eps window = new eps();
+          window.frame.setVisible(true);
+        } catch (Exception e) {
+          e.printStackTrace();
+        }
+      }
+    });
+  }
+
+  public eps() {
+    initialize();
+  }
+
+  private void initialize() {
+    frame = new JFrame();
+    frame.setBounds(50, 50, 50, 50);
+    
+    JFrame f = new JFrame("Pet Store");
+    JButton b1 = new JButton("Login");
+    JButton b2 = new JButton("Register a pet");
+    JButton b3 = new JButton("Rescued pets");
+    JButton b4 = new JButton("Missing pets");
+    z1=new JLabel(" NO.15 PET SHOP ");
+
+    z1.setBounds(250,100,200,50);
+    b1.setBounds(200,200,200,50);
+    b2.setBounds(200,300,200,50);
+    b3.setBounds(200,400,200,50);
+    b4.setBounds(200,500,200,50);
+
+    f.add(z1);
+    f.add(b1);
+    f.add(b2);
+    f.add(b3);
+    f.add(b4);
+
+
+    f.setLayout(null);
+    f.setVisible(true);
+    f.setSize(800,800);
+    b1.addActionListener(new ActionListener()
+    {
+    public void actionPerformed(ActionEvent e) {
+    JFrame f2 = new JFrame("LOGIN DETAILS");
+    f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+    JButton but1 = new JButton("Exit");
+    JButton but2 = new JButton("Login");
+    JTextField t1=new JTextField();
+    JTextField t2=new JTextField();
+
+    x1=new JLabel("NAME : ");
+    x2=new JLabel("PASSWORD : ");
+
+    x1.setBounds(50,100,200,50);
+    t1.setBounds(300,100,200,50);
+    x2.setBounds(50,200,200,50);
+    t2.setBounds(300,200,200,50);
+
+    but2.setBounds(50,500,200,45);
+    but1.setBounds(300,500,200,45);
+    
+    f2.add(but1);
+    f2.add(but2);
+
+    f2.add(x1);
+    f2.add(x2);
+              
+    f2.add(t1);
+    f2.add(t2);
+
+    f2.setLayout(null);
+    f2.setVisible(true);
+    f2.setSize(800,800);
+    }
+    });
+    b2.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+     JFrame f3 = new JFrame("Registration");
+    JButton button1 = new JButton("DOG");
+    JButton button2 = new JButton("CAT");
+ 
+    button1.setBounds(200,200,200,50);
+    button2.setBounds(200,300,200,50);
+
+    f3.add(button1);  
+    f3.add(button2);  
+                
+    f3.setLayout(null);
+    f3.setVisible(true);
+    f3.setSize(800,800);
+    button1.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+     JFrame g1 = new JFrame("Dog Registration");
+    JButton buts1 = new JButton("Exit");
+    JButton buts2 = new JButton("Submit");
+    JTextField t1=new JTextField();
+    JTextField t2=new JTextField();
+    JTextField t3=new JTextField();
+    JTextField t4=new JTextField();
+    JTextField t5=new JTextField();
+    JTextField t6=new JTextField();
+                
+    l1=new JLabel("DOG NAME : ");
+    l2=new JLabel(" AGE : ");
+    l3=new JLabel("BREED : ");
+    l4=new JLabel(" SEX : ");
+    y1=new JLabel("OWNER'S NAME : ");
+    y2=new JLabel("OWNER'S LOCALITY : ");
+
+    l1.setBounds(50,100,200,50);
+    t1.setBounds(300,100,200,50);
+    l2.setBounds(50,200,200,50);
+    t2.setBounds(300,200,200,50);
+    l3.setBounds(50,300,200,50);
+    t3.setBounds(300,300,200,50);
+    l4.setBounds(50,400,200,50);
+    t4.setBounds(300,400,200,50);
+    y1.setBounds(50,500,200,50);
+    t5.setBounds(300,500,200,50);
+    y2.setBounds(50,600,200,50);
+    t6.setBounds(300,600,200,50);
+               
+
+    buts2.setBounds(50,700,200,45);
+    buts1.setBounds(300,700,200,45);
+
+    g1.add(buts1);  
+    g1.add(buts2);  
+    g1.add(l1);
+    g1.add(l2);
+    g1.add(l3);
+    g1.add(l4);
+    g1.add(y1);
+    g1.add(y2);
+              
+    g1.add(t1);
+    g1.add(t2);
+    g1.add(t3);
+    g1.add(t4);
+    g1.add(t5);
+    g1.add(t6);
+                
+    g1.setLayout(null);
+    g1.setVisible(true);
+    g1.setSize(1200,1200);
+    
+    buts2.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+    JOptionPane.showMessageDialog(frame.getComponent(0), "Sussesfully Submitted");
+    }
+    });
+    }
+    });
+    button2.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+     JFrame g2 = new JFrame("Cat Registration");
+    JButton butts1 = new JButton("Exit");
+    JButton butts2 = new JButton("Submit");
+    JTextField t1=new JTextField();
+    JTextField t2=new JTextField();
+    JTextField t3=new JTextField();
+    JTextField t4=new JTextField();
+    JTextField t5=new JTextField();
+    JTextField t6=new JTextField();            
+
+
+    l1=new JLabel("CAT NAME : ");
+    l2=new JLabel(" AGE : ");
+    l3=new JLabel("COLOUR : ");
+    l4=new JLabel(" SEX : ");
+    y3=new JLabel("OWNER'S NAME : ");
+    y4=new JLabel("OWNER'S LOCALITY : ");
+
+    l1.setBounds(50,100,200,50);
+    t1.setBounds(300,100,200,50);
+    l2.setBounds(50,200,200,50);
+    t2.setBounds(300,200,200,50);
+    l3.setBounds(50,300,200,50);
+    t3.setBounds(300,300,200,50);
+    l4.setBounds(50,400,200,50);
+    t4.setBounds(300,400,200,50);
+    y3.setBounds(50,500,200,50);
+    t5.setBounds(300,500,200,50);
+    y4.setBounds(50,600,200,50);
+    t6.setBounds(300,600,200,50);
+               
+
+    butts2.setBounds(50,700,200,45);
+    butts1.setBounds(300,700,200,45);
+
+    g2.add(butts1);  
+    g2.add(butts2);  
+    g2.add(l1);
+    g2.add(l2);
+    g2.add(l3);
+    g2.add(l4);
+    g2.add(y3);
+    g2.add(y4);
+              
+    g2.add(t1);
+    g2.add(t2);
+    g2.add(t3);
+    g2.add(t4);
+    g2.add(t5);
+    g2.add(t6);
+
+                
+    g2.setLayout(null);
+    g2.setVisible(true);
+    g2.setSize(1200,1200);
+
+    butts2.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+    JOptionPane.showMessageDialog(frame.getComponent(0), "Sussesfully Submitted");
+    }
+    });
+    }
+    });
+    }
+    });
+    b3.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+     JFrame f4 = new JFrame("RESCUED PETS");
+     ImageIcon ii = new ImageIcon("C:/java/jimmy2.gif");
+     ImageIcon ij = new ImageIcon("C:/java/ramu2.gif");
+    a1=new JLabel("RESCUED PETS DETAILS :");
+    a2=new JLabel(" (1) Jimmy(cat) is one of the pets rescued by our NGOs.It is 22 months old and black in colour.");
+    a3=new JLabel(ii);
+    a4=new JLabel(" (2) Ramu(dog) is one of the pets rescued by our NGOs.It is 38 months old.It belongs to German Shepherd breed.It is a highly inteligent dog.");
+    a5=new JLabel(ij);
+    a1.setBounds(50,30,200,50);
+    a2.setBounds(50,60,800,50);
+    a3.setBounds(50,80,350,300);
+    a4.setBounds(50,360,900,50);
+    a5.setBounds(50,390,500,400);
+     f4.add(a1);
+     f4.add(a2);
+     f4.add(a3);
+     f4.add(a4);
+     f4.add(a5);
+    f4.setLayout(null);
+    f4.setVisible(true);
+    f4.setSize(1200,1200);
+   }
+   });
+   b4.addActionListener(new ActionListener() 
+    {
+    public void actionPerformed(ActionEvent e) {
+     JFrame f5 = new JFrame("Missing pets");
+     ImageIcon ik = new ImageIcon("C:/java/peter2.gif");
+     ImageIcon il = new ImageIcon("C:/java/Roni2.gif");
+    a6=new JLabel("MISSING PETS DETAILS :");
+    a7=new JLabel(" (1) Peter(dog) is missing since last month.It belongs to Golden Retriever breed.The image of missing dog is shown below.If found please contact pet owner , 9413299638.");
+    a8=new JLabel(ik);
+    a9=new JLabel(" (2) Roni(cat) is missing since last week.It is orange in colour.The image of missing cat is shown below.If found please contact pet owner , 9413299638.");
+    a0=new JLabel(il);
+    a6.setBounds(50,30,200,50);
+    a7.setBounds(50,60,960,50);
+    a8.setBounds(50,80,350,300);
+    a9.setBounds(50,360,950,50);
+    a0.setBounds(50,390,450,250);
+     f5.add(a6);
+     f5.add(a7);
+     f5.add(a8);
+     f5.add(a9);
+     f5.add(a0);
+    f5.setLayout(null);
+    f5.setVisible(true);
+    f5.setSize(1200,1200);
+   }
+   });
+}
+}
\ No newline at end of file
diff --git a/piglatinWord,java b/piglatinWord,java
new file mode 100644
index 00000000..a7c4ef15
--- /dev/null
+++ b/piglatinWord,java
@@ -0,0 +1,33 @@
+import java.util.Scanner;
+
+public class KboatPigLatin
+{
+    public static void main(String args[]) {
+
+        Scanner in = new Scanner(System.in);
+        System.out.print("Enter word: ");
+        String word = in.next();
+        int len = word.length();
+
+        word=word.toUpperCase();
+        String piglatin="";
+        int flag=0;
+        
+        for(int i = 0; i < len; i++)
+        {
+            char x = word.charAt(i);
+            if(x=='A' || x=='E' || x=='I' || x=='O' || x=='U')
+            {
+                piglatin=word.substring(i) + word.substring(0,i) + "AY";
+                flag=1;
+                break;
+            }
+        }
+        
+        if(flag == 0)
+        {
+            piglatin = word + "AY";
+        }
+        System.out.println(word + " in Piglatin format is " + piglatin);
+    }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 00000000..420bbe01
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,53 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>mygroupid</groupId>
+  <artifactId>myartifactid</artifactId>
+  <version>0.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <type>jar</type>
+    </dependency>
+    <dependency>
+      <groupId>com.googlecode.json-simple</groupId>
+      <artifactId>json-simple</artifactId>
+      <version>1.1.1</version>
+      <type>jar</type>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <version>1.3</version>
+      <type>jar</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>de.qaware.maven</groupId>
+        <artifactId>go-offline-maven-plugin</artifactId>
+        <version>1.2.5</version>
+        <configuration>
+          <dynamicDependencies>
+            <DynamicDependency>
+              <groupId>org.apache.maven.surefire</groupId>
+              <artifactId>surefire-junit4</artifactId>
+              <version>2.20.1</version>
+              <classifier></classifier>
+              <repositoryType>PLUGIN</repositoryType>
+            </DynamicDependency>
+            <DynamicDependency>
+              <groupId>com.querydsl</groupId>
+              <artifactId>querydsl-apt</artifactId>
+              <version>4.2.1</version>
+              <classifier>jpa</classifier>
+              <repositoryType>MAIN</repositoryType>
+            </DynamicDependency>
+          </dynamicDependencies>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/pran1 b/pran1
new file mode 100644
index 00000000..f38b087f
--- /dev/null
+++ b/pran1
@@ -0,0 +1,43 @@
+import javax.crypto.*;
+import java.security.*;
+import java.util.Base64;
+
+public class SecureCommunication {
+
+    public static void main(String[] args) {
+        try {
+            // Generate a secret key for symmetric encryption
+            SecretKey secretKey = generateSecretKey();
+
+            // Simulate two parties communicating over a secure channel
+            String messageToSend = "Hello, secure world!";
+            byte[] encryptedMessage = encryptMessage(messageToSend, secretKey);
+            String decryptedMessage = decryptMessage(encryptedMessage, secretKey);
+
+            System.out.println("Original Message: " + messageToSend);
+            System.out.println("Encrypted Message: " + Base64.getEncoder().encodeToString(encryptedMessage));
+            System.out.println("Decrypted Message: " + decryptedMessage);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static SecretKey generateSecretKey() throws NoSuchAlgorithmException {
+        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
+        keyGenerator.init(256); // Key size, you can choose other sizes like 128 or 192
+        return keyGenerator.generateKey();
+    }
+
+    private static byte[] encryptMessage(String message, SecretKey secretKey) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
+        Cipher cipher = Cipher.getInstance("AES");
+        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+        return cipher.doFinal(message.getBytes());
+    }
+
+    private static String decryptMessage(byte[] encryptedMessage, SecretKey secretKey) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
+        Cipher cipher = Cipher.getInstance("AES");
+        cipher.init(Cipher.DECRYPT_MODE, secretKey);
+        byte[] decryptedBytes = cipher.doFinal(encryptedMessage);
+        return new String(decryptedBytes);
+    }
+}
diff --git a/puzzleGame.java b/puzzleGame.java
new file mode 100644
index 00000000..c4fe82d5
--- /dev/null
+++ b/puzzleGame.java
@@ -0,0 +1,178 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.JOptionPane;  
+public class Puzzle extends Frame implements ActionListener{  
+Button b1,b2,b3,b4,b5,b6,b7,b8,b9;  
+Puzzle(){  
+    super("Puzzle - JavaTpoint");  
+    b1=new Button("1");  
+    b1.setBounds(50,100,40,40);  
+    b2=new Button("2");  
+    b2.setBounds(100,100,40,40);  
+    b3=new Button("3");  
+    b3.setBounds(150,100,40,40);  
+    b4=new Button("4");  
+    b4.setBounds(50,150,40,40);  
+    b5=new Button("5");  
+    b5.setBounds(100,150,40,40);  
+    b6=new Button("6");  
+    b6.setBounds(150,150,40,40);  
+    b7=new Button("7");  
+    b7.setBounds(50,200,40,40);  
+    b8=new Button("");  
+    b8.setBounds(100,200,40,40);  
+    b9=new Button("8");  
+    b9.setBounds(150,200,40,40);  
+      
+    b1.addActionListener(this);  
+    b2.addActionListener(this);  
+    b3.addActionListener(this);  
+    b4.addActionListener(this);  
+    b5.addActionListener(this);  
+    b6.addActionListener(this);  
+    b7.addActionListener(this);  
+    b8.addActionListener(this);  
+    b9.addActionListener(this);  
+      
+    add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);  
+    setSize(400,400);  
+    setLayout(null);  
+    setVisible(true);  
+}  
+public void actionPerformed(ActionEvent e){  
+    if(e.getSource()==b1){  
+        String label=b1.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b1.setLabel("");  
+        }  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b1.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b2){  
+        String label=b2.getLabel();  
+        if(b1.getLabel().equals("")){  
+            b1.setLabel(label);  
+            b2.setLabel("");  
+        }  
+        if(b3.getLabel().equals("")){  
+            b3.setLabel(label);  
+            b2.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b2.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b3){  
+        String label=b3.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b3.setLabel("");  
+        }  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b3.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b4){  
+        String label=b4.getLabel();  
+        if(b1.getLabel().equals("")){  
+            b1.setLabel(label);  
+            b4.setLabel("");  
+        }  
+        if(b7.getLabel().equals("")){  
+            b7.setLabel(label);  
+            b4.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b4.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b5){  
+        String label=b5.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b5.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b6){  
+        String label=b6.getLabel();  
+        if(b9.getLabel().equals("")){  
+            b9.setLabel(label);  
+            b6.setLabel("");  
+        }  
+        if(b3.getLabel().equals("")){  
+            b3.setLabel(label);  
+            b6.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b6.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b7){  
+        String label=b7.getLabel();  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b7.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b7.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b8){  
+        String label=b8.getLabel();  
+        if(b9.getLabel().equals("")){  
+            b9.setLabel(label);  
+            b8.setLabel("");  
+        }  
+        if(b7.getLabel().equals("")){  
+            b7.setLabel(label);  
+            b8.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b8.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b9){  
+        String label=b9.getLabel();  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b9.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b9.setLabel("");  
+        }  
+    }  
+      
+    //congrats code  
+    if(b1.getLabel().equals("1")&&b2.getLabel().equals("2")&&b3.getLabel()    
+            .equals("3")&&b4.getLabel().equals("4")&&b5.getLabel().equals("5")    
+            &&b6.getLabel().equals("6")&&b7.getLabel().equals("7")&&b8.getLabel()    
+            .equals("8")&&b9.getLabel().equals("")){     
+            JOptionPane.showMessageDialog(this,"Congratulations! You won.");    
+    }    
+}  
+public static void main(String[] args) {  
+    new Puzzle();  
+}  
+}  
\ No newline at end of file
diff --git a/puzzle_awt.java b/puzzle_awt.java
new file mode 100644
index 00000000..9c3bfae7
--- /dev/null
+++ b/puzzle_awt.java
@@ -0,0 +1,178 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import javax.swing.JOptionPane;  
+public class Puzzle extends Frame implements ActionListener{  
+Button b1,b2,b3,b4,b5,b6,b7,b8,b9;  
+Puzzle(){  
+    super("Puzzle - JavaTpoint");  
+    b1=new Button("1");  
+    b1.setBounds(50,100,40,40);  
+    b2=new Button("2");  
+    b2.setBounds(100,100,40,40);  
+    b3=new Button("3");  
+    b3.setBounds(150,100,40,40);  
+    b4=new Button("4");  
+    b4.setBounds(50,150,40,40);  
+    b5=new Button("5");  
+    b5.setBounds(100,150,40,40);  
+    b6=new Button("6");  
+    b6.setBounds(150,150,40,40);  
+    b7=new Button("7");  
+    b7.setBounds(50,200,40,40);  
+    b8=new Button("");  
+    b8.setBounds(100,200,40,40);  
+    b9=new Button("8");  
+    b9.setBounds(150,200,40,40);  
+      
+    b1.addActionListener(this);  
+    b2.addActionListener(this);  
+    b3.addActionListener(this);  
+    b4.addActionListener(this);  
+    b5.addActionListener(this);  
+    b6.addActionListener(this);  
+    b7.addActionListener(this);  
+    b8.addActionListener(this);  
+    b9.addActionListener(this);  
+      
+    add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);  
+    setSize(400,400);  
+    setLayout(null);  
+    setVisible(true);  
+}  
+public void actionPerformed(ActionEvent e){  
+    if(e.getSource()==b1){  
+        String label=b1.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b1.setLabel("");  
+        }  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b1.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b2){  
+        String label=b2.getLabel();  
+        if(b1.getLabel().equals("")){  
+            b1.setLabel(label);  
+            b2.setLabel("");  
+        }  
+        if(b3.getLabel().equals("")){  
+            b3.setLabel(label);  
+            b2.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b2.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b3){  
+        String label=b3.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b3.setLabel("");  
+        }  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b3.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b4){  
+        String label=b4.getLabel();  
+        if(b1.getLabel().equals("")){  
+            b1.setLabel(label);  
+            b4.setLabel("");  
+        }  
+        if(b7.getLabel().equals("")){  
+            b7.setLabel(label);  
+            b4.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b4.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b5){  
+        String label=b5.getLabel();  
+        if(b2.getLabel().equals("")){  
+            b2.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b5.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b5.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b6){  
+        String label=b6.getLabel();  
+        if(b9.getLabel().equals("")){  
+            b9.setLabel(label);  
+            b6.setLabel("");  
+        }  
+        if(b3.getLabel().equals("")){  
+            b3.setLabel(label);  
+            b6.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b6.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b7){  
+        String label=b7.getLabel();  
+        if(b4.getLabel().equals("")){  
+            b4.setLabel(label);  
+            b7.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b7.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b8){  
+        String label=b8.getLabel();  
+        if(b9.getLabel().equals("")){  
+            b9.setLabel(label);  
+            b8.setLabel("");  
+        }  
+        if(b7.getLabel().equals("")){  
+            b7.setLabel(label);  
+            b8.setLabel("");  
+        }  
+        if(b5.getLabel().equals("")){  
+            b5.setLabel(label);  
+            b8.setLabel("");  
+        }  
+    }  
+    if(e.getSource()==b9){  
+        String label=b9.getLabel();  
+        if(b6.getLabel().equals("")){  
+            b6.setLabel(label);  
+            b9.setLabel("");  
+        }  
+        if(b8.getLabel().equals("")){  
+            b8.setLabel(label);  
+            b9.setLabel("");  
+        }  
+    }  
+      
+    //congrats code  
+    if(b1.getLabel().equals("1")&&b2.getLabel().equals("2")&&b3.getLabel()    
+            .equals("3")&&b4.getLabel().equals("4")&&b5.getLabel().equals("5")    
+            &&b6.getLabel().equals("6")&&b7.getLabel().equals("7")&&b8.getLabel()    
+            .equals("8")&&b9.getLabel().equals("")){     
+            JOptionPane.showMessageDialog(this,"Congratulations! You won.");    
+    }    
+}  
+public static void main(String[] args) {  
+    new Puzzle();  
+}  
+} 
diff --git a/qr code generator.java b/qr code generator.java
new file mode 100644
index 00000000..ab6a7841
--- /dev/null
+++ b/qr code generator.java	
@@ -0,0 +1,46 @@
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.Writer;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+public class QRCodeGenerator {
+    public static void main(String[] args) {
+        // The data to be encoded as a QR code
+        String data = "Hello, this is a QR code example!";
+
+        // Path where the QR code image will be saved
+        String filePath = "qrcode.png";
+
+        // Encoding charset
+        String charset = "UTF-8";
+
+        // Create a QR code writer
+        QRCodeWriter writer = new QRCodeWriter();
+
+        // Set QR code parameters
+        Map<EncodeHintType, ErrorCorrectionLevel> hintMap = new HashMap<>();
+        hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
+
+        try {
+            // Generate a QR code
+            BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.QR_CODE, 200, 200, hintMap);
+
+            // Save the QR code as an image
+            MatrixToImageWriter.writeToFile(bitMatrix, "PNG", new File(filePath));
+
+            System.out.println("QR Code generated and saved as " + filePath);
+        } catch (WriterException | IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/randomPasswordGenerator.java b/randomPasswordGenerator.java
new file mode 100644
index 00000000..023772ff
--- /dev/null
+++ b/randomPasswordGenerator.java
@@ -0,0 +1,53 @@
+package Master.JavaExample;  
+  
+import org.passay.CharacterRule;  
+import org.passay.EnglishCharacterData;  
+import org.passay.PasswordGenerator;  
+  
+// create class GeneratePasswordExample1 to generate a random and secure password  
+public class GeneratePasswordExample1 {  
+      
+    // main() method start  
+    public static void main(String args[]) {  
+          
+        // call the generatePassword() method to generate a random password using the Passay library  
+        String pass = generateSecurePassword();  
+          
+        // print Passay generated password  
+        System.out.println("The Passay generated password is:"+pass);  
+          
+    }  
+      
+    // create generateSecurePassword() method that find the secure password and returns it to the main() method  
+    public static String generateSecurePassword() {  
+          
+        // create character rule for lower case  
+        CharacterRule LCR = new CharacterRule(EnglishCharacterData.LowerCase);  
+        // set number of lower case characters  
+        LCR.setNumberOfCharacters(2);  
+  
+        // create character rule for upper case  
+        CharacterRule UCR = new CharacterRule(EnglishCharacterData.UpperCase);  
+        // set number of upper case characters  
+        UCR.setNumberOfCharacters(2);  
+  
+        // create character rule for digit  
+        CharacterRule DR = new CharacterRule(EnglishCharacterData.Digit);  
+        // set number of digits  
+        DR.setNumberOfCharacters(2);  
+  
+        // create character rule for lower case  
+        CharacterRule SR = new CharacterRule(EnglishCharacterData.Special);  
+        // set number of special characters  
+        SR.setNumberOfCharacters(2);  
+          
+        // create instance of the PasswordGenerator class   
+        PasswordGenerator passGen = new PasswordGenerator();  
+          
+        // call generatePassword() method of PasswordGenerator class to get Passay generated password  
+        String password = passGen.generatePassword(8, SR, LCR, UCR, DR);  
+          
+        // return Passay generated password to the main() method   
+        return password;  
+    }  
+}  
\ No newline at end of file
diff --git a/rectangle.java b/rectangle.java
new file mode 100644
index 00000000..f6932717
--- /dev/null
+++ b/rectangle.java
@@ -0,0 +1,36 @@
+// Java Program to print pattern 
+// Square hollow pattern 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+		// outer loop to handle number of rows 
+		for (i = 0; i < n; i++) { 
+			// inner loop to handle number of columns 
+			for (j = 0; j < n; j++) { 
+				// star will print only when it is in first 
+				// row or last row or first column or last 
+				// column 
+				if (i == 0 || j == 0 || i == n - 1
+					|| j == n - 1) { 
+					System.out.print("*"); 
+				} 
+				// otherwise print space only. 
+				else { 
+					System.out.print(" "); 
+				} 
+			} 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/recursiveFactorial.java b/recursiveFactorial.java
new file mode 100644
index 00000000..b0ea7693
--- /dev/null
+++ b/recursiveFactorial.java
@@ -0,0 +1,25 @@
+import java.util.Scanner;
+
+public class recursiveFactorial {
+
+    public static void main(String args[]) {
+        // Scanner object for capturing the user input
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("Enter the number:");
+        // Stored the entered value in variable
+        int num = scanner.nextInt();
+        // Called the user defined function fact
+        int factorial = fact(num);
+        System.out.println("Factorial of entered number is: " + factorial);
+    }
+
+    static int fact(int n) {
+        int output;
+        if (n == 1) {
+            return 1;
+        }
+        // Recursion: Function calling itself!!
+        output = fact(n - 1) * n;
+        return output;
+    }
+}
diff --git a/replit.nix b/replit.nix
new file mode 100644
index 00000000..7f7e1291
--- /dev/null
+++ b/replit.nix
@@ -0,0 +1,8 @@
+{ pkgs }: {
+    deps = [
+        pkgs.graalvm17-ce
+        pkgs.maven
+        pkgs.replitPackages.jdt-language-server
+        pkgs.replitPackages.java-debug
+    ];
+}
\ No newline at end of file
diff --git a/rightpyramid.java b/rightpyramid.java
new file mode 100644
index 00000000..16b3a0b5
--- /dev/null
+++ b/rightpyramid.java
@@ -0,0 +1,30 @@
+// Java Program to print pattern
+// Number-increasing pyramid
+import java.util.*;
+
+public class GeeksForGeeks {
+	// Function to demonstrate pattern
+	public static void printPattern(int n)
+	{
+		int i, j;
+		// outer loop to handle number of rows
+		for (i = 1; i <= n; i++) {
+			// inner loop to handle number of columns
+			for (j = 1; j <= i; j++) {
+				// printing column values upto the row
+				// value.
+				System.out.print(j + " ");
+			}
+
+			// print new line for each row
+			System.out.println();
+		}
+	}
+
+	// Driver Function
+	public static void main(String args[])
+	{
+		int n = 6;
+		printPattern(n);
+	}
+}
diff --git a/script.js b/script.js
new file mode 100644
index 00000000..42b96b0b
--- /dev/null
+++ b/script.js
@@ -0,0 +1,93 @@
+
+let randomNumber = parseInt(Math.random() * 100 + 1);
+
+const submit = document.querySelector('#subt');
+const userInput = document.querySelector('#guessField');
+const guessSlot = document.querySelector('.guesses');
+const remaining = document.querySelector('.lastResult');
+const lowOrHi = document.querySelector('.lowOrHi');
+const startOver = document.querySelector('.resultParas');
+
+const p = document.createElement('p');
+
+let prevGuess = [];
+let numGuess = 1;
+
+let playGame = true;
+
+if (playGame) {
+  submit.addEventListener('click', function (e) {
+    e.preventDefault();
+    const guess = parseInt(userInput.value);
+    console.log(guess);
+    validateGuess(guess);
+  });
+}
+
+function validateGuess(guess) {
+  if (isNaN(guess)) {
+    alert('PLease enter a valid number');
+  } else if (guess < 1) {
+    alert('PLease enter a number more than 1');
+  } else if (guess > 100) {
+    alert('PLease enter a  number less than 100');
+  } else {
+    prevGuess.push(guess);
+    if (numGuess === 11) {
+      displayGuess(guess);
+      displayMessage(`Game Over. Random number was ${randomNumber}`);
+      endGame();
+    } else {
+      displayGuess(guess);
+      checkGuess(guess);
+    }
+  }
+}
+
+function checkGuess(guess) {
+  if (guess === randomNumber) {
+    displayMessage(`You guessed it right`);
+    endGame();
+  } else if (guess < randomNumber) {
+    displayMessage(`Number is TOOO low`);
+  } else if (guess > randomNumber) {
+    displayMessage(`Number is TOOO High`);
+  }
+}
+
+function displayGuess(guess) {
+  userInput.value = '';
+  guessSlot.innerHTML += `${guess}, `;
+  numGuess++;
+  remaining.innerHTML = `${11 - numGuess} `;
+}
+
+function displayMessage(message) {
+  lowOrHi.innerHTML = `<h2>${message}</h2>`;
+}
+
+function endGame() {
+  userInput.value = '';
+  userInput.setAttribute('disabled', '');
+  p.classList.add('button');
+  p.innerHTML = `<h2 id="newGame">Start new Game</h2>`;
+  startOver.appendChild(p);
+  playGame = false;
+  newGame();
+}
+
+function newGame() {
+  const newGameButton = document.querySelector('#newGame');
+  newGameButton.addEventListener('click', function (e) {
+    randomNumber = parseInt(Math.random() * 100 + 1);
+    prevGuess = [];
+    numGuess = 1;
+    guessSlot.innerHTML = '';
+    remaining.innerHTML = `${11 - numGuess} `;
+    userInput.removeAttribute('disabled');
+    startOver.removeChild(p);
+
+    playGame = true;
+  });
+}
+
diff --git a/snakeGame.html b/snakeGame.html
new file mode 100644
index 00000000..ec783491
--- /dev/null
+++ b/snakeGame.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>Snake Game</title>
+    <style>
+      body {
+        font-family: Arial, sans-serif;
+        text-align: center;
+      }
+      canvas {
+        border: 1px solid #000;
+        margin: 20px auto;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Snake Game</h1>
+    <canvas id="gameCanvas" width="400" height="400"></canvas>
+    <button id="tryAgain" style="display: none">Try Again</button>
+
+    <script>
+      const canvas = document.getElementById("gameCanvas");
+      const ctx = canvas.getContext("2d");
+      const tryAgainButton = document.getElementById("tryAgain");
+
+      const gridSize = 20;
+      const snakeColor = "#000";
+      const foodColor = "#f00";
+
+      let snake = [{ x: 5, y: 5 }];
+      let food = { x: 10, y: 10 };
+      let dx = 1;
+      let dy = 0;
+      let gameInterval;
+
+      function drawSnake() {
+        snake.forEach((segment) => {
+          ctx.fillStyle = snakeColor;
+          ctx.fillRect(
+            segment.x * gridSize,
+            segment.y * gridSize,
+            gridSize,
+            gridSize
+          );
+        });
+      }
+
+      function drawFood() {
+        ctx.fillStyle = foodColor;
+        ctx.fillRect(food.x * gridSize, food.y * gridSize, gridSize, gridSize);
+      }
+
+      function moveSnake() {
+        const head = { x: snake[0].x + dx, y: snake[0].y + dy };
+        snake.unshift(head);
+
+        if (head.x === food.x && head.y === food.y) {
+          food = generateFood();
+        } else {
+          snake.pop();
+        }
+      }
+
+      function generateFood() {
+        const newFood = {
+          x: Math.floor(Math.random() * (canvas.width / gridSize)),
+          y: Math.floor(Math.random() * (canvas.height / gridSize)),
+        };
+
+        return newFood;
+      }
+
+      function checkCollision() {
+        const head = snake[0];
+
+        if (
+          head.x < 0 ||
+          head.x >= canvas.width / gridSize ||
+          head.y < 0 ||
+          head.y >= canvas.height / gridSize ||
+          snake
+            .slice(1)
+            .some((segment) => segment.x === head.x && segment.y === head.y)
+        ) {
+          gameOver();
+        }
+      }
+
+      function gameOver() {
+        clearInterval(gameInterval);
+        tryAgainButton.style.display = "block";
+        alert("Game Over!");
+      }
+
+      function startGame() {
+        snake = [{ x: 5, y: 5 }];
+        food = generateFood();
+        dx = 1;
+        dy = 0;
+        gameInterval = setInterval(gameLoop, 100);
+        tryAgainButton.style.display = "none";
+      }
+
+      function gameLoop() {
+        ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+        drawSnake();
+        drawFood();
+        moveSnake();
+        checkCollision();
+      }
+
+      document.addEventListener("keydown", (e) => {
+        switch (e.key) {
+          case "ArrowUp":
+            if (dy === 0) {
+              dx = 0;
+              dy = -1;
+            }
+            break;
+          case "ArrowDown":
+            if (dy === 0) {
+              dx = 0;
+              dy = 1;
+            }
+            break;
+          case "ArrowLeft":
+            if (dx === 0) {
+              dx = -1;
+              dy = 0;
+            }
+            break;
+          case "ArrowRight":
+            if (dx === 0) {
+              dx = 1;
+              dy = 0;
+            }
+            break;
+        }
+      });
+
+      tryAgainButton.addEventListener("click", startGame);
+
+      startGame(); // Start the game initially.
+    </script>
+  </body>
+</html>
diff --git a/snakeWaterGun.java b/snakeWaterGun.java
new file mode 100644
index 00000000..33e776c3
--- /dev/null
+++ b/snakeWaterGun.java
@@ -0,0 +1,92 @@
+import java.util.Scanner;
+import java.util.Random;
+
+public class Mini_Project {
+
+	public static void main(String[] args) {
+		Scanner sc=new Scanner(System.in);
+		Random rand=new Random();
+		int com=rand.nextInt(100);
+		System.out.println("Enter the number of matches,You want to Play");
+		int match=sc.nextInt();
+		int won=0;
+		int loose=0;
+		int draw=0;
+		for(int i=0;i<match;i++) {
+		System.out.println("Please enter s for snake,g for gun or w for water");
+		char v = sc.next().charAt(0);
+		System.out.println("You have entered: "+v);
+		if(v=='s'|| v=='g' || v=='w'){
+			
+		//System.out.println("The computer has selected:"+com);
+		{ 
+			
+		if(com<33) //Selected Snake
+		      { com=115;
+		      		char s=(char)com;
+		      			System.out.println("Computer has choose: "+s);
+		      		if(s==v)
+		      			{
+		      			System.out.println("The match has drawn");
+		      			draw++;
+		      			}
+		      		else if(v==103)
+		      			{
+		      			System.out.println("You won the match:)");
+		      			won++;
+		      			}
+		      		else if(v==119)
+		      			{
+		      			System.out.println("You loose the match:(");
+		      			loose++;
+		      			}
+		      }
+		
+		else if(com>33 &com<66) //Selected Gun g=103, s=115, w=119
+				{   com=103;
+					char g=(char)com;
+					System.out.println("Computer has choose: "+g);
+					if(g==v)
+		      			{
+						System.out.println("The match has drawn");
+		      			draw++;}
+					else if(v==115)
+		      			{
+						System.out.println("You loose the match:(");
+		      			loose++;}
+		      		else if(v==119)
+		      			{
+		      			System.out.println("You won the match:)");
+		      			won++;}
+				}
+		else if (com>66)  //Selected Water
+				{   com=119;
+					char w=(char)com;
+					System.out.println("Computer has choose: "+w);
+					if(w==v)
+		      			{
+						System.out.println("The match has drawn");
+		      			draw++;}
+					else if(v==103)
+		      			{
+						System.out.println("You loose the match:(");
+		      			loose++;}
+		      		else if(v==115)
+		      			{
+		      			System.out.println("You won the match:)");
+		      			won++;}
+				}
+	
+		
+	}
+		
+}
+		else
+			System.out.println("Please Enter the valid input");
+}	
+		System.out.println("********************************");
+		System.out.println("STATATICS :)");
+		System.out.println("You Won :"+won);
+		System.out.println("You loose :"+loose);
+		System.out.println("Drawn :"+draw);
+		System.out.println("********************************");}}
\ No newline at end of file
diff --git a/space-invader-game.java b/space-invader-game.java
new file mode 100644
index 00000000..c682d3dd
--- /dev/null
+++ b/space-invader-game.java
@@ -0,0 +1,185 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+public class SpaceInvadersGame extends JPanel implements KeyListener, ActionListener {
+    private int playerX, playerY;
+    private List<Alien> aliens;
+    private List<Bullet> bullets;
+    private boolean isGameOver;
+    private int score;
+
+    private SpaceInvadersGame() {
+        playerX = 300;
+        playerY = 480;
+        isGameOver = false;
+        score = 0;
+
+        aliens = new ArrayList<>();
+        bullets = new ArrayList();
+
+        // Initialize aliens
+        for (int i = 0; i < 6; i++) {
+            aliens.add(new Alien(i * 100, 0));
+        }
+
+        Timer timer = new Timer(15, this);
+        timer.start();
+
+        addKeyListener(this);
+        setFocusable(true);
+        setFocusTraversalKeysEnabled(false);
+    }
+
+    public void paintComponent(Graphics g) {
+        super.paintComponent(g);
+        // Draw background
+        g.setColor(Color.black);
+        g.fillRect(0, 0, 800, 600);
+
+        // Draw player
+        g.setColor(Color.blue);
+        g.fillRect(playerX, playerY, 50, 50);
+
+        // Draw aliens
+        for (Alien alien : aliens) {
+            g.setColor(Color.green);
+            g.fillRect(alien.x, alien.y, 50, 50);
+        }
+
+        // Draw bullets
+        for (Bullet bullet : bullets) {
+            g.setColor(Color.red);
+            g.fillRect(bullet.x, bullet.y, 10, 20);
+        }
+
+        // Display score
+        g.setColor(Color.white);
+        g.setFont(new Font("Arial", Font.PLAIN, 20));
+        g.drawString("Score: " + score, 10, 30);
+
+        if (isGameOver) {
+            g.setFont(new Font("Arial", Font.PLAIN, 50));
+            g.drawString("Game Over", 300, 300);
+        }
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        if (!isGameOver) {
+            // Move aliens
+            for (Alien alien : aliens) {
+                alien.y += 2;
+            }
+
+            // Move bullets
+            for (Bullet bullet : bullets) {
+                bullet.y -= 5;
+            }
+
+            // Check for collisions
+            checkCollisions();
+
+            // Remove off-screen aliens and bullets
+            aliens.removeIf(alien -> alien.y > 600);
+            bullets.removeIf(bullet -> bullet.y < 0);
+
+            // Spawn new aliens
+            if (aliens.isEmpty()) {
+                for (int i = 0; i < 6; i++) {
+                    aliens.add(new Alien(i * 100, 0));
+                }
+            }
+
+            repaint();
+        }
+    }
+
+    private void checkCollisions() {
+        for (Alien alien : new ArrayList<>(aliens)) {
+            for (Bullet bullet : new ArrayList<>(bullets)) {
+                if (alien.getBounds().intersects(bullet.getBounds())) {
+                    aliens.remove(alien);
+                    bullets.remove(bullet);
+                    score += 10;
+                }
+            }
+
+            if (alien.getBounds().intersects(new Rectangle(playerX, playerY, 50, 50))) {
+                isGameOver = true;
+            }
+        }
+    }
+
+    public void keyTyped(KeyEvent e) {}
+
+    public void keyPressed(KeyEvent e) {
+        int key = e.getKeyCode();
+
+        if (key == KeyEvent.VK_LEFT && playerX > 0) {
+            playerX -= 20;
+        }
+
+        if (key == KeyEvent.VK_RIGHT && playerX < 750) {
+            playerX += 20;
+        }
+
+        if (key == KeyEvent.VK_SPACE) {
+            if (!isGameOver) {
+                bullets.add(new Bullet(playerX + 20, playerY));
+            } else {
+                // Restart the game
+                isGameOver = false;
+                playerX = 300;
+                score = 0;
+                aliens.clear();
+                bullets.clear();
+                for (int i = 0; i < 6; i++) {
+                    aliens.add(new Alien(i * 100, 0));
+                }
+            }
+        }
+    }
+
+    public void keyReleased(KeyEvent e) {}
+
+    public static void main(String[] args) {
+        JFrame frame = new JFrame("Space Invaders");
+        SpaceInvadersGame game = new SpaceInvadersGame();
+        frame.add(game);
+        frame.setSize(800, 600);
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        frame.setVisible(true);
+    }
+
+    private class Alien {
+        int x, y;
+
+        Alien(int x, int y) {
+            this.x = x;
+            this.y = y;
+        }
+
+        Rectangle getBounds() {
+            return new Rectangle(x, y, 50, 50);
+        }
+    }
+
+    private class Bullet {
+        int x, y;
+
+        Bullet(int x, int y) {
+            this.x = x;
+            this.y = y;
+        }
+
+        Rectangle getBounds() {
+            return new Rectangle(x, y, 10, 20);
+        }
+    }
+}
\ No newline at end of file
diff --git a/springAPIApplication b/springAPIApplication
new file mode 160000
index 00000000..2714903d
--- /dev/null
+++ b/springAPIApplication
@@ -0,0 +1 @@
+Subproject commit 2714903d242036cf0abdd75cb22789b66088b49b
diff --git a/stock-algorithm-js-sandbox/README.md b/stock-algorithm-js-sandbox/README.md
new file mode 100644
index 00000000..98d150d1
--- /dev/null
+++ b/stock-algorithm-js-sandbox/README.md
@@ -0,0 +1,12 @@
+# Stock Algorithm JS Sandbox
+
+To host the website, serve the files in the root project directory, like so:
+```
+# You can pick python, apache, or anything really
+python3.7 http.server 8080 # Use python 3.7 as this version fixes the socket issue with chrome
+```
+If you have any really cool algorithms, I encourage you to open an issue and post it there.
+
+The website's CSS making your eyeballs bleed? Open a pull request and comment how lazy I am on styling the website properly while sharing your awesome CSS!
+
+Have fun!<br>
diff --git a/stock-algorithm-js-sandbox/getStockData.js b/stock-algorithm-js-sandbox/getStockData.js
new file mode 100644
index 00000000..c979ba1a
--- /dev/null
+++ b/stock-algorithm-js-sandbox/getStockData.js
@@ -0,0 +1,35 @@
+async function getData(stockSymbol, limit){
+    if(!stockSymbol){
+        alert('Please enter in a value');
+        return;
+    }
+    
+    var flag = true;
+    if(!limit){
+        flag = false;
+    }
+    var rawData = await (await window.fetch('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&outputsize=full&symbol='+encodeURIComponent(stockSymbol)+'&apikey=VFKNX13I1KQF3WRZ')).json();
+    
+    var errMsg = rawData['Error Message'];
+    if(errMsg){
+        if(errMsg.includes('Invalid API call')){
+            alert('Stock symbol not found');
+        }else if(errMsg.includes('if you would like to target a higher API call frequency')){
+            alert('Oops, looks like you spammed too much. Wait a couple minutes before trying again');
+        }else{
+            alert('Weird error from alpha vantage:'+errMsg);
+        }
+        return;
+    }
+    
+    var labels = [];
+    var prices = [];
+    var count = 0;
+    for(var label in rawData['Time Series (Daily)']){
+        if(flag && count >= limit) break;
+        labels.push(label);
+        prices.push(parseFloat(rawData['Time Series (Daily)'][label]['4. close']));
+        count++;
+    }
+    return [labels.reverse(), prices.reverse()];
+}
\ No newline at end of file
diff --git a/stock-algorithm-js-sandbox/index.html b/stock-algorithm-js-sandbox/index.html
new file mode 100644
index 00000000..cba745d1
--- /dev/null
+++ b/stock-algorithm-js-sandbox/index.html
@@ -0,0 +1,70 @@
+<html>
+    <head>
+        <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
+        <script src="https://cdn.jsdelivr.net/npm/ace-builds@1.4.8/src-min-noconflict/ace.js"></script>
+        
+        <script src="showChart.js"></script>
+        <script src="getStockData.js"></script>
+        <script src="main.js"></script>
+        <link rel='stylesheet' type='text/css' href='main.css'>
+        <title>Stock Algorithm JS Sandbox</title>
+    </head>
+    <body style="margin: 0;">
+        <div id="header-wrapper">
+            <h2>Stock Algorithm JS Sandbox</h2>
+        </div>
+        <div id='result-wrapper'>
+            <canvas id="chart"></canvas>
+        </div>
+        <div id='setting-wrapper'>
+            <div id='stock-selection'>
+                <input id='stock-symbol-input' type='text' placeholder='Stock symbol'><br>
+                <input id='limit-input' type='text' placeholder='Data limit (leave blank for all)'>
+                <button onclick='getDataClick(document.getElementById("stock-symbol-input").value, document.getElementById("limit-input").value)'>Get Data</button><br>
+            </div>
+        <div id='stats-wrapper'>
+            <span class='info-before'>Amount of money earned:</span> <span class='info-after'></span><br>
+            <span class='info-before'>Amount of buy decisions:</span> <span class='info-after'></span><br>
+            <span class='info-before'>Amount of sell decisions:</span> <span class='info-after'></span><br>
+            <span class='info-before'>Amount of cheating sells:</span> <span class='info-after'></span><br>
+            <span class='info-before'>Amount of stock left:</span> <span class='info-after'></span><br><br>
+            <button onclick='run()'>Run simulation</button><button onclick='if(window.confirm("Are you sure you want to clear everything?")){window.localStorage.removeItem("savedProgram");window.location.reload()}'>Clear saved program and reload</button>
+        </div>
+<div id='main-code'>/*
+This is the space that you need to program in javascript, to create your own stock algorithm.
+There should be a "main" function, so that parameters can be passed in.
+Also, the main function should return either true for buy, false for sell, and undefined (no return) for no action.
+Like so:
+this.main = function(previousData, amountOfStock){
+    // Code here
+    // Something magical happens
+    return true; // true for buy, false for sell, undefined for no action
+}
+The amount of previous data can also be set using:
+this.previousDataAmt = 10; // Default 10
+Note that previousData will always have a length of previousDataAmt, which means it will start at previousDataAmt from the beginning
+
+FINAL NOTE: A cheater would be like this.main=function(){return false} and get huge profits. Well... not happening here.
+If the program tries to sell, but doesn't have any stock to sell, it will do nothing.
+
+Good luck
+Simon Cheng
+*/
+this.previousDataAmt = 10;
+this.main = function(previousData, amountOfStock){
+    
+};</div>
+        </div>
+        <script>
+            if(window.localStorage.getItem('savedProgram')){
+                document.getElementById('main-code').innerHTML = window.localStorage.getItem('savedProgram');
+            }
+            window.editor = ace.edit("main-code");
+            window.editor.setTheme("ace/theme/dawn");
+            window.editor.session.setMode("ace/mode/javascript");
+            window.editor.session.on('change', function(){
+                window.localStorage.setItem('savedProgram', window.editor.session.getValue());
+            });
+        </script>
+    </body>
+</html>
\ No newline at end of file
diff --git a/stock-algorithm-js-sandbox/main.css b/stock-algorithm-js-sandbox/main.css
new file mode 100644
index 00000000..feadfaba
--- /dev/null
+++ b/stock-algorithm-js-sandbox/main.css
@@ -0,0 +1,43 @@
+#header-wrapper{
+    text-align: center;
+    height: 40px;
+}
+#header-wrapper h2{
+    margin: 0;
+}
+#header-wrapper h4{
+    margin: 0;
+}
+
+#result-wrapper{
+    width: 50%;
+    height: calc(100% - 50px);
+    margin-top: 10px;
+    
+    float: left;
+}
+#setting-wrapper{
+    width: 50%;
+    height: calc(100% - 50px);
+    margin-top: 10px;
+    
+    float: left;
+}
+
+#stock-selection{
+    height: 50px;
+    width: 100%;
+}
+#stats-wrapper{
+    height: 145px;
+    width: 100%;
+}
+#main-code{
+    height: calc(100% - 50px - 145px);
+    width: 100%;
+}
+
+.info-before{
+    display: inline-block;
+    width: 175px;
+}
\ No newline at end of file
diff --git a/stock-algorithm-js-sandbox/main.js b/stock-algorithm-js-sandbox/main.js
new file mode 100644
index 00000000..1ad8cf7b
--- /dev/null
+++ b/stock-algorithm-js-sandbox/main.js
@@ -0,0 +1,78 @@
+async function getDataClick(...args){
+    var stockData = await getData(...args);
+    if(stockData){
+        window.labels = stockData[0];
+        window.stockPrices = stockData[1];
+        generateChart(document.getElementById('chart'), window.labels, window.stockPrices, [], []);
+    }
+}
+function run(){
+    if(!window.stockPrices){
+        alert('That chart to the left is just for show. Now get some data!');
+        return;
+    }
+    
+    var userProgram = window.editor.session.getValue();
+    try{
+        eval(userProgram);
+    }catch(e){
+        console.error(e);
+        alert('An error occurred while running your script. Check the console for more details.\n'+e);
+        return;
+    }
+    if(!this.previousDataAmt){
+        this.previousDataAmt = 10;
+    }
+    if(this.previousDataAmt >= window.stockPrices.length){
+        alert('previousDataAmt is greater or equal to the amount of stock prices. Adjust to a lower value');
+        return;
+    }
+    
+    var wallet = 0;
+    var buyDecisionCount = 0;
+    var sellDecisionCount = 0;
+    var numberOfCheatingSells = 0;
+    var stocks = 0;
+    
+    var buyPosition = [];
+    var sellPosition = [];
+    for(var count = this.previousDataAmt; count < window.stockPrices.length; count++){
+        try{
+            var result = this.main(window.stockPrices.slice(count-this.previousDataAmt, count), stocks);
+            if(result === true){
+                buyDecisionCount += 1;
+                stocks += 1;
+                wallet -= window.stockPrices[count];
+                
+                buyPosition.push(window.labels[count]);
+            }else if(result === false){
+                if(stocks <= 0){
+                    numberOfCheatingSells += 1;
+                }else{
+                    sellDecisionCount += 1;
+                    stocks -= 1;
+                    wallet += window.stockPrices[count];
+                    
+                    sellPosition.push(window.labels[count]);
+                }
+            }else if(result === undefined){
+                // Do nothing
+            }else{
+                alert('Your main function returned something other than a boolean or "undefined"!');
+                return;
+            }
+        }catch(e){
+            console.error(e);
+            alert('An error occurred while running your script. Check the console for more details.\n'+e);
+            return;
+        }
+    }
+    
+    generateChart(document.getElementById('chart'), window.labels, window.stockPrices, buyPosition, sellPosition);
+    
+    document.getElementsByClassName('info-after')[0].innerHTML = wallet.toFixed(2);
+    document.getElementsByClassName('info-after')[1].innerHTML = buyDecisionCount;
+    document.getElementsByClassName('info-after')[2].innerHTML = sellDecisionCount;
+    document.getElementsByClassName('info-after')[3].innerHTML = numberOfCheatingSells;
+    document.getElementsByClassName('info-after')[4].innerHTML = stocks;
+}
\ No newline at end of file
diff --git a/stock-algorithm-js-sandbox/showChart.js b/stock-algorithm-js-sandbox/showChart.js
new file mode 100644
index 00000000..ba2352dd
--- /dev/null
+++ b/stock-algorithm-js-sandbox/showChart.js
@@ -0,0 +1,72 @@
+/**
+ * Arguments:
+ * canvas: element of canvas
+ * labels: [January, feburary, ....] or [1,2,3,4]
+ * stockData: [1,5,2,1,0,4,2,23]
+ * buyDecision: The x positions of buying [January, feburary, 20, December]
+ * sellDecision: Same thing above but for buying
+ * 
+ * Note: stockData.length MUST equal labels.length
+*/
+function generateChart(canvas, labels, stockData, buyDecision, sellDecision){
+    function gen(decisions){
+        var data = [];
+        for(var eachLabel of decisions){
+            data.push({
+                x: eachLabel,
+                y: stockData[labels.indexOf(eachLabel)],
+                r: 5
+            });
+        }
+        return data;
+    }
+    if(window.chartInstance){
+        window.chartInstance.destroy();
+    }
+    window.chartInstance = new Chart(canvas.getContext('2d'), {
+        type: 'line',
+        data: {
+            labels,
+            datasets: [{
+                label: 'Stock data',
+                borderColor: 'rgb(0,0,0)',
+                data: stockData,
+                lineTension: 0,
+                fill: false,
+                radius: 0,
+                borderWidth: 1
+            },{
+                label: 'Buy decision',
+                borderColor: 'rgb(255,0,0)',
+                data: gen(buyDecision),
+                fill: false,
+                type: 'bubble',
+                backgroundColor: 'rgb(255,0,0)',
+                pointStyle: 'triangle',
+                rotation: 0
+            },{
+                label: 'Sell decision',
+                borderColor: 'rgb(0,0,255)',
+                data: gen(sellDecision),
+                fill: false,
+                type: 'bubble',
+                backgroundColor: 'rgb(0,0,255)',
+                pointStyle: 'triangle',
+                rotation: 180
+            }]
+        },
+        options: {
+            title: {
+                display: true,
+                text: 'Results'
+            },
+            maintainAspectRatio: false
+        }
+    });
+}
+window.onload = function(){
+    var chartDom = document.getElementById('chart');
+    
+    // Dummy data for show
+    window.mainChart = generateChart(chartDom, [1,2,3,4,5], [20, 60, 50, 99, 100], [2,3], [5]);
+};
\ No newline at end of file
diff --git a/stockPortfolioTracker.java b/stockPortfolioTracker.java
new file mode 100644
index 00000000..488b73cf
--- /dev/null
+++ b/stockPortfolioTracker.java
@@ -0,0 +1,92 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Scanner;
+
+class Stock {
+    private String symbol;
+    private String name;
+    private double price;
+    private int quantity;
+
+    public Stock(String symbol, String name, double price, int quantity) {
+        this.symbol = symbol;
+        this.name = name;
+        this.price = price;
+        this.quantity = quantity;
+    }
+
+    public double getValue() {
+        return price * quantity;
+    }
+
+    public String getSymbol() {
+        return symbol;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+}
+
+public class StockPortfolioTracker {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        List<Stock> portfolio = new ArrayList<>();
+
+        while (true) {
+            System.out.println("Stock Portfolio Tracker Menu:");
+            System.out.println("1. Add Stock");
+            System.out.println("2. View Portfolio");
+            System.out.println("3. Exit");
+            System.out.print("Select an option (1/2/3): ");
+
+            int option = scanner.nextInt();
+
+            switch (option) {
+                case 1:
+                    scanner.nextLine();
+                    System.out.print("Enter stock symbol: ");
+                    String symbol = scanner.nextLine();
+                    System.out.print("Enter stock name: ");
+                    String name = scanner.nextLine();
+                    System.out.print("Enter stock price: $");
+                    double price = scanner.nextDouble();
+                    System.out.print("Enter quantity: ");
+                    int quantity = scanner.nextInt();
+
+                    portfolio.add(new Stock(symbol, name, price, quantity));
+                    System.out.println("Stock added successfully.");
+                    break;
+                case 2:
+                    if (portfolio.isEmpty()) {
+                        System.out.println("Your portfolio is empty.");
+                    } else {
+                        System.out.println("Stock Portfolio:");
+                        for (Stock stock : portfolio) {
+                            System.out.println("Symbol: " + stock.getSymbol());
+                            System.out.println("Name: " + stock.getName());
+                            System.out.println("Price: $" + stock.getPrice());
+                            System.out.println("Quantity: " + stock.getQuantity());
+                            System.out.println("Value: $" + stock.getValue());
+                            System.out.println();
+                        }
+                    }
+                    break;
+                case 3:
+                    System.out.println("Exiting the Stock Portfolio Tracker.");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid option. Please select 1, 2, or 3.");
+            }
+        }
+    }
+}
diff --git a/stock_management.java b/stock_management.java
new file mode 100644
index 00000000..c6c4802a
--- /dev/null
+++ b/stock_management.java
@@ -0,0 +1,119 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class StockManagementSystem {
+
+    public static void main(String[] args) {
+        Scanner input = new Scanner(System.in);
+
+        // create an empty arraylist to hold the stocks
+        ArrayList<Stock> stocks = new ArrayList<>();
+
+        // display the menu and ask for user input
+        int choice;
+        do {
+            System.out.println("1. Add stock");
+            System.out.println("2. Remove stock");
+            System.out.println("3. View stock");
+            System.out.println("4. Exit");
+            System.out.print("Enter your choice: ");
+            choice = input.nextInt();
+
+            switch (choice) {
+                case 1:
+                    // ask for stock details
+                    System.out.print("Enter the stock name: ");
+                    String name = input.next();
+                    System.out.print("Enter the stock quantity: ");
+                    int quantity = input.nextInt();
+                    System.out.print("Enter the stock price: ");
+                    double price = input.nextDouble();
+
+                    // create a new Stock object and add it to the arraylist
+                    Stock newStock = new Stock(name, quantity, price);
+                    stocks.add(newStock);
+
+                    System.out.println("Stock added successfully");
+                    break;
+
+                case 2:
+                    // ask for the stock name and quantity to remove
+                    System.out.print("Enter the stock name: ");
+                    String stockName = input.next();
+                    System.out.print("Enter the quantity to remove: ");
+                    int removeQuantity = input.nextInt();
+
+                    // loop through the stocks to find the matching stock
+                    boolean stockFound = false;
+                    for (Stock stock : stocks) {
+                        if (stock.getName().equals(stockName)) {
+                            // if the stock is found, remove the specified quantity
+                            stockFound = true;
+                            stock.removeQuantity(removeQuantity);
+                            System.out.println("Stock removed successfully");
+                            break;
+                        }
+                    }
+                    if (!stockFound) {
+                        System.out.println("Stock not found");
+                    }
+                    break;
+
+                case 3:
+                    // display the list of stocks
+                    System.out.println("Current stocks:");
+                    for (Stock stock : stocks) {
+                        System.out.println(stock.toString());
+                    }
+                    break;
+
+                case 4:
+                    System.out.println("Exiting the program...");
+                    break;
+
+                default:
+                    System.out.println("Invalid choice, try again.");
+                    break;
+            }
+
+        } while (choice != 4);
+
+        input.close();
+    }
+}
+
+class Stock {
+    private String name;
+    private int quantity;
+    private double price;
+
+    public Stock(String name, int quantity, double price) {
+        this.name = name;
+        this.quantity = quantity;
+        this.price = price;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public int getQuantity() {
+        return quantity;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void removeQuantity(int quantityToRemove) {
+        if (quantityToRemove <= quantity) {
+            quantity -= quantityToRemove;
+        } else {
+            System.out.println("Not enough quantity to remove");
+        }
+    }
+
+    public String toString() {
+        return name + ", quantity: " + quantity + ", price: $" + price;
+    }
+}
diff --git a/studentGrade3524.java b/studentGrade3524.java
new file mode 100644
index 00000000..e5290bce
--- /dev/null
+++ b/studentGrade3524.java
@@ -0,0 +1,43 @@
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.*;
+
+public class studentGrade3524 {
+    public static void main(String[] args) {
+        System.out.println("2021503524 - Mugundh J B");
+        System.out.println("Date: " + LocalDate.now() + " Time: " + LocalTime.now());
+        // Create a Scanner to read user input
+        Scanner in = new Scanner(System.in);
+        // Prompt the user for the number of subjects
+        System.out.print("Enter no of subjects: ");
+        int n = in.nextInt();
+        // Consume newline character left in buffer
+        String buff = in.nextLine();
+        // Initialize an array to store marks for each subject
+        int[] arr = new int[n];
+        // Prompt the user to enter marks for each subject and validate input
+        System.out.println("Enter the marks: ");
+        for (int i = 0; i < n; i++) {
+            arr[i] = in.nextInt();
+            if (arr[i] < 0 || arr[i] > 100) {
+                System.out.println("Invalid input! Enter again: ");
+                arr[i] = in.nextInt();
+            }
+        }
+        // Determine the grade for each subject based on marks and display it
+        for (int i = 0; i < n; i++) {
+            if (arr[i] >= 90 && arr[i] <= 100)
+                System.out.printf("Grade of subject %d = %s\n", i + 1, "O");
+            else if (arr[i] >= 80 && arr[i] <= 89)
+                System.out.printf("Grade of subject %d = %s\n", i + 1, "A+");
+            else if (arr[i] >= 70 && arr[i] <= 79)
+                System.out.printf("Grade of subject %d = %s\n", i + 1, "A");
+            else if (arr[i] >= 60 && arr[i] <= 69)
+                System.out.printf("Grade of subject %d = %s\n", i + 1, "B+");
+            else if (arr[i] >= 50 && arr[i] <= 59)
+                System.out.printf("Grade of subject %d = %s\n", i + 1, "B");
+            else
+                System.out.printf("Grade of subject %d = %s", i + 1, "U");
+        }
+    }
+}
diff --git a/style.css b/style.css
new file mode 100644
index 00000000..917b8ab9
--- /dev/null
+++ b/style.css
@@ -0,0 +1,92 @@
+html {
+    font-family: sans-serif;
+  }
+  
+  body {
+    width: 300px;
+    max-width: 750px;
+    min-width: 480px;
+    margin: 0 auto;
+    background-color: #212121;
+  }
+  
+  .lastResult {
+    color: white;
+    padding: 7px;
+  }
+  
+  .guesses {
+    color: white;
+    padding: 7px;
+  }
+  
+  button {
+    background-color: #141414;
+    color: #fff;
+    width: 250px;
+    height: 50px;
+    border-radius: 25px;
+    font-size: 30px;
+    border-style: none;
+    margin-top: 30px;
+    /* margin-left: 50px; */
+  }
+  
+  #subt {
+    background-color: #161616;
+    color: #ffffff;
+    width: 200px;
+    height: 50px;
+    border-radius: 10px;
+    font-size: 20px;
+    border-style: none;
+    margin-top: 50px;
+    /* margin-left: 75px; */
+  }
+  
+  #guessField {
+    color: #000;
+    width: 250px;
+    height: 50px;
+    font-size: 30px;
+    border-style: none;
+    margin-top: 25px;
+  
+    /* margin-left: 50px; */
+    border: 5px solid #6c6d6d;
+    text-align: center;
+  }
+  
+  #guess {
+    font-size: 55px;
+    /* margin-left: 90px; */
+    margin-top: 120px;
+    color: #fff;
+  }
+  
+  .guesses {
+    background-color: #7a7a7a;
+  }
+  
+  #wrapper {
+    box-sizing: border-box;
+    text-align: center;
+    width: 450px;
+    height: 584px;
+    background-color: #474747;
+    color: #fff;
+    font-size: 25px;
+  }
+  
+  h1 {
+    background-color: #161616;
+  
+    color: #fff;
+    text-align: center;
+  }
+  
+  p {
+    font-size: 16px;
+    text-align: center;
+  }
+  
\ No newline at end of file
diff --git a/sum.java b/sum.java
index 750b4544..bae3e609 100644
--- a/sum.java
+++ b/sum.java
@@ -1,11 +1,22 @@
-public class SumThreeNumbers {
+import java.util.Scanner;
+
+public class SumNumbers {
     public static void main(String[] args) {
-        int num1 = 5;
-        int num2 = 10;
-        int num3 = 15;
-        
-        int sum = num1 + num2 + num3;
-        
-        System.out.println("The sum of " + num1 + ", " + num2 + ", and " + num3 + " is: " + sum);
+        Scanner scanner = new Scanner(System.in);
+        int sum = 0;
+
+        System.out.println("Enter numbers (enter 0 to calculate the sum):");
+
+        while (true) {
+            int number = scanner.nextInt();
+            if (number == 0) {
+                break; // Exit the loop if the user enters 0
+            }
+            sum += number;
+        }
+
+        System.out.println("The sum of the numbers is: " + sum);
+
+        scanner.close(); // Don't forget to close the scanner
     }
 }
\ No newline at end of file
diff --git a/swingIpFInder.java b/swingIpFInder.java
new file mode 100644
index 00000000..907b528f
--- /dev/null
+++ b/swingIpFInder.java
@@ -0,0 +1,38 @@
+import javax.swing.*;  
+import java.awt.event.*;  
+import java.net.*;  
+public class IPFinder extends JFrame implements ActionListener{  
+    JLabel l;  
+    JTextField tf;  
+    JButton b;  
+IPFinder(){  
+    super("IP Finder Tool - Javatpoint");  
+    l=new JLabel("Enter URL:");  
+    l.setBounds(50,70,150,20);;  
+    tf=new JTextField();  
+    tf.setBounds(50,100,200,20);  
+      
+    b=new JButton("Find IP");  
+    b.setBounds(50,150,80,30);  
+    b.addActionListener(this);  
+    add(l);  
+    add(tf);  
+    add(b);  
+    setSize(300,300);  
+    setLayout(null);  
+    setVisible(true);  
+}  
+public void actionPerformed(ActionEvent e){  
+    String url=tf.getText();  
+    try {  
+        InetAddress ia=InetAddress.getByName(url);  
+        String ip=ia.getHostAddress();  
+        JOptionPane.showMessageDialog(this,ip);  
+    } catch (UnknownHostException e1) {  
+        JOptionPane.showMessageDialog(this,e1.toString());  
+    }  
+}  
+public static void main(String[] args) {  
+    new IPFinder();  
+}  
+}  
diff --git a/target/dependency/hamcrest-core-1.3.jar b/target/dependency/hamcrest-core-1.3.jar
new file mode 100644
index 00000000..9d5fe16e
Binary files /dev/null and b/target/dependency/hamcrest-core-1.3.jar differ
diff --git a/target/dependency/json-simple-1.1.1.jar b/target/dependency/json-simple-1.1.1.jar
new file mode 100644
index 00000000..dfd5856d
Binary files /dev/null and b/target/dependency/json-simple-1.1.1.jar differ
diff --git a/target/dependency/junit-4.12.jar b/target/dependency/junit-4.12.jar
new file mode 100644
index 00000000..3a7fc266
Binary files /dev/null and b/target/dependency/junit-4.12.jar differ
diff --git a/terminal_bar_graph.java b/terminal_bar_graph.java
new file mode 100644
index 00000000..ad0e6722
--- /dev/null
+++ b/terminal_bar_graph.java
@@ -0,0 +1,31 @@
+import java.util.*;
+public class terminal_bar_graph
+{
+    public static void main(String args[])
+    {
+        System.out.println("\u000C");
+        Scanner sc=new Scanner(System.in);
+        System.out.println("Enter 10 numbers: ");
+        int a[]=new int[10];char b=(char)(9608);char c=(char)(9612);
+        int d[]=new int[10];
+        int e[]=new int[10];
+        for(int i=0;i<10;i++)
+        {
+            a[i]=sc.nextInt();
+            e[i]=a[i];
+            d[i]=a[i]%2;
+            a[i]=a[i]/2;            
+        }
+        System.out.println("\u000C");
+        for(int i=0;i<10;i++)
+        {
+            for(int j=0;j<a[i];j++)
+            {
+                System.out.print(b);
+                if(d[i]==1&&j==a[i]-1)
+                System.out.print(c);
+            }
+            System.out.println(e[i]);
+        }
+    }
+}
\ No newline at end of file
diff --git a/textEditor.java b/textEditor.java
new file mode 100644
index 00000000..c496842f
--- /dev/null
+++ b/textEditor.java
@@ -0,0 +1,201 @@
+ import java.awt.*;  
+ import java.awt.event.*;  
+ import java.io.*;  
+ import java.util.*;  
+ //Texteditor class starts here  
+ class Texteditor extends Frame implements ActionListener  
+ {  
+ TextArea ta=new TextArea();  
+ int i,len1,len,pos1;  
+ String str="",s3="",s2="",s4="",s32="",s6="",s7="",s8="",s9="";  
+ String months[]={"January","February","March","April","May","June","July","August","September","October","November","December"};  
+ CheckboxMenuItem chkb=new CheckboxMenuItem("Word Wrap");  
+ public Texteditor()  
+ {  
+ MenuBar mb=new MenuBar();  
+ setLayout(new BorderLayout());  
+ add("Center",ta);  
+ setMenuBar(mb);  
+ Menu m1=new Menu("File");  
+ Menu m2=new Menu("Edit");  
+ Menu m3=new Menu("Tools");  
+ Menu m4=new Menu("Help");  
+ mb.add(m1);  
+ mb.add(m2);  
+ mb.add(m3);  
+ mb.add(m4);  
+ MenuItem mi1[]={  
+ new MenuItem("New"),new MenuItem("Open"),new MenuItem("Save")  
+ ,new MenuItem("Save As"),new MenuItem("Page Setup")  
+ ,new MenuItem("Print"),new MenuItem("Exit")  
+ };  
+ MenuItem mi2[]={new MenuItem("Delete"),new MenuItem("Cut"),  
+ new MenuItem("Copy"),new MenuItem("Paste"),new MenuItem("Find"),  
+ new MenuItem("Find Next"),new MenuItem("Replace"),  
+ new MenuItem("Go To"),new MenuItem("Select All"),  
+ new MenuItem("Time Stamp")};  
+ MenuItem mi3[]={new MenuItem("Choose Font"),new MenuItem("Compile"),  
+ new MenuItem("Run")};  
+ MenuItem mi4[]={new MenuItem("Help Topics"),  
+ new MenuItem("About Texteditor")};  
+ for(int i=0;i<len1;i++ )="" <br=""> {  
+ m1.add(mi1[i]);  
+ mi1[i].addActionListener(this);  
+ }  
+ for(int i=0;i<len1;i++) {="" <br=""> m2.add(mi2[i]);  
+ mi2[i].addActionListener(this);  
+ }  
+ m3.add(chkb);  
+ chkb.addActionListener(this);  
+ for(int i=0;i<len1;i++ )="" <br=""> {  
+ m3.add(mi3[i]);  
+ mi3[i].addActionListener(this);  
+ }  
+ for(int i=0;i<len1;i++) <br=""> {  
+ m4.add(mi4[i]);  
+ mi4[i].addActionListener(this);  
+ }  
+ MyWindowsAdapter mw=new MyWindowsAdapter(this);  
+ addWindowListener(mw);  
+ setSize(500,500);  
+ setTitle("untitled notepad");  
+ setVisible(true);  
+ }  
+ public void actionPerformed(ActionEvent ae)  
+ {  
+ String arg=(String)ae.getActionCommand();  
+ if(arg.equals("New"))  
+ { dispose();  
+ Texteditor t11=new Texteditor();  
+ t11.setSize(500,500);  
+ t11.setVisible(true);  
+ }  
+ try {  
+ if(arg.equals("Open"))  
+ {  
+ FileDialog fd1=new FileDialog(this,"Select File",FileDialog.LOAD);  
+ fd1.setVisible(true);  
+ String s4="";  
+ s2=fd1.getFile();  
+ s3=fd1.getDirectory();  
+ s32=s3+s2;  
+ File f=new File(s32);  
+ FileInputStream fii=new FileInputStream(f);  
+ len=(int)f.length();  
+ for(int j=0;j<len1;j++ )="" <br=""> {  
+ char s5=(char)fii.read();  
+ s4=s4 + s5;  
+ }  
+ ta.setText(s4);  
+ }  
+ }  
+ catch(IOException e)  
+ {  
+ }  
+ try  
+ {  
+ if(arg.equals("Save As"))  
+ {  
+ FileDialog dialog1=new FileDialog(this,"Save As",FileDialog.SAVE);  
+ dialog1.setVisible(true);  
+ s7=dialog1.getDirectory();  
+ s8=dialog1.getFile();  
+ s9=s7+s8+".txt";  
+ s6=ta.getText();  
+ len1=s6.length();  
+ byte buf[]=s6.getBytes();  
+ File f1=new File(s9);  
+ FileOutputStream fobj1=new FileOutputStream(f1);  
+ for(int k=0;k<len1;k++) <br=""> {  
+ fobj1.write(buf[k]);  
+ }  
+ fobj1.close();  
+ }  
+ this.setTitle(s8 +" Texteditor File");  
+ }  
+ catch(IOException e){}  
+ if(arg.equals("Exit"))  
+ {  
+ System.exit(0);  
+ }  
+ if(arg.equals("Cut"))  
+ {  
+ str=ta.getSelectedText();  
+ i=ta.getText().indexOf(str);  
+ ta.replaceRange(" ",i,i+str.length());  
+ }  
+ if(arg.equals("Copy"))  
+ {  
+ str=ta.getSelectedText();  
+ }  
+ if(arg.equals("Paste"))  
+ {  
+ pos1=ta.getCaretPosition();  
+ ta.insert(str,pos1);  
+ }  
+ if(arg.equals("Delete"))  
+ {  
+ String msg=ta.getSelectedText();  
+ i=ta.getText().indexOf(msg);  
+ ta.replaceRange(" ",i,i+msg.length());  
+ msg="";  
+ }  
+ if(arg.equals("Select All"))  
+ {  
+ String strText=ta.getText();  
+ int strLen=strText.length();  
+ ta.select(0,strLen);  
+ }  
+ if(arg.equals("Time Stamp"))  
+ {  
+ GregorianCalendar gcalendar=new GregorianCalendar();  
+ String h=String.valueOf(gcalendar.get(Calendar.HOUR));  
+ String m=String.valueOf(gcalendar.get(Calendar.MINUTE));  
+ String s=String.valueOf(gcalendar.get(Calendar.SECOND));  
+ String date=String.valueOf(gcalendar.get(Calendar.DATE));  
+ String mon=months[gcalendar.get(Calendar.MONTH)];  
+ String year=String.valueOf(gcalendar.get(Calendar.YEAR));  
+ String hms="Time"+" - "+h+":"+m+":"+s+" Date"+" - "+date+" "+mon+" "+year+" ";  
+ int loc=ta.getCaretPosition();  
+ ta.insert(hms,loc);  
+ }  
+ if(arg.equals("About Texteditor"))  
+ {  
+ AboutDialog d1=new AboutDialog(this,"About Texteditor");  
+ d1.setVisible(true);  
+ setSize(500,500);  
+ }  
+ }//Action pereformed end  
+ public class MyWindowsAdapter extends WindowAdapter  
+ {  
+ Texteditor tt;  
+ public MyWindowsAdapter(Texteditor ttt)  
+ {  
+ tt=ttt;  
+ }  
+ public void windowClosing(WindowEvent we)  
+ {  
+ tt.dispose();  
+ }  
+ }//Inner class winadapter end....  
+ }//End of Texteditor class  
+ public class balls  
+ { public static void main(String args[])  
+ {  
+ Texteditor to=new Texteditor();  
+ }  
+ }  
+ class AboutDialog extends Dialog implements ActionListener  
+ {  
+ AboutDialog(Frame parent,String title)  
+ {  
+ super(parent,title,false);  
+ this.setResizable(false);  
+ setLayout(new FlowLayout(FlowLayout.LEFT));  
+ setSize(500,300);  
+ }  
+ public void actionPerformed(ActionEvent ae)  
+ {  
+ dispose();  
+ }  
+ }  
diff --git a/the_metro_app/Graph_M$DijkstraPair.class b/the_metro_app/Graph_M$DijkstraPair.class
new file mode 100644
index 00000000..af02520f
Binary files /dev/null and b/the_metro_app/Graph_M$DijkstraPair.class differ
diff --git a/the_metro_app/Graph_M$Pair.class b/the_metro_app/Graph_M$Pair.class
new file mode 100644
index 00000000..1a73cb54
Binary files /dev/null and b/the_metro_app/Graph_M$Pair.class differ
diff --git a/the_metro_app/Graph_M$Vertex.class b/the_metro_app/Graph_M$Vertex.class
new file mode 100644
index 00000000..b4146705
Binary files /dev/null and b/the_metro_app/Graph_M$Vertex.class differ
diff --git a/the_metro_app/Graph_M.class b/the_metro_app/Graph_M.class
new file mode 100644
index 00000000..e4542c28
Binary files /dev/null and b/the_metro_app/Graph_M.class differ
diff --git a/the_metro_app/Graph_M.java b/the_metro_app/Graph_M.java
new file mode 100644
index 00000000..246b482e
--- /dev/null
+++ b/the_metro_app/Graph_M.java
@@ -0,0 +1,704 @@
+import java.util.*;
+import java.io.*;
+
+	
+	public class Graph_M 
+	{
+		public class Vertex 
+		{
+			HashMap<String, Integer> nbrs = new HashMap<>();
+		}
+
+		static HashMap<String, Vertex> vtces;
+
+		public Graph_M() 
+		{
+			vtces = new HashMap<>();
+		}
+
+		public int numVetex() 
+		{
+			return this.vtces.size();
+		}
+
+		public boolean containsVertex(String vname) 
+		{
+			return this.vtces.containsKey(vname);
+		}
+
+		public void addVertex(String vname) 
+		{
+			Vertex vtx = new Vertex();
+			vtces.put(vname, vtx);
+		}
+
+		public void removeVertex(String vname) 
+		{
+			Vertex vtx = vtces.get(vname);
+			ArrayList<String> keys = new ArrayList<>(vtx.nbrs.keySet());
+
+			for (String key : keys) 
+			{
+				Vertex nbrVtx = vtces.get(key);
+				nbrVtx.nbrs.remove(vname);
+			}
+
+			vtces.remove(vname);
+		}
+
+		public int numEdges() 
+		{
+			ArrayList<String> keys = new ArrayList<>(vtces.keySet());
+			int count = 0;
+
+			for (String key : keys) 
+			{
+				Vertex vtx = vtces.get(key);
+				count = count + vtx.nbrs.size();
+			}
+
+			return count / 2;
+		}
+
+		public boolean containsEdge(String vname1, String vname2) 
+		{
+			Vertex vtx1 = vtces.get(vname1);
+			Vertex vtx2 = vtces.get(vname2);
+			
+			if (vtx1 == null || vtx2 == null || !vtx1.nbrs.containsKey(vname2)) {
+				return false;
+			}
+
+			return true;
+		}
+
+		public void addEdge(String vname1, String vname2, int value) 
+		{
+			Vertex vtx1 = vtces.get(vname1); 
+			Vertex vtx2 = vtces.get(vname2); 
+
+			if (vtx1 == null || vtx2 == null || vtx1.nbrs.containsKey(vname2)) {
+				return;
+			}
+
+			vtx1.nbrs.put(vname2, value);
+			vtx2.nbrs.put(vname1, value);
+		}
+
+		public void removeEdge(String vname1, String vname2) 
+		{
+			Vertex vtx1 = vtces.get(vname1);
+			Vertex vtx2 = vtces.get(vname2);
+			
+			//check if the vertices given or the edge between these vertices exist or not
+			if (vtx1 == null || vtx2 == null || !vtx1.nbrs.containsKey(vname2)) {
+				return;
+			}
+
+			vtx1.nbrs.remove(vname2);
+			vtx2.nbrs.remove(vname1);
+		}
+
+		public void display_Map() 
+		{
+			System.out.println("\t Delhi Metro Map");
+			System.out.println("\t------------------");
+			System.out.println("----------------------------------------------------\n");
+			ArrayList<String> keys = new ArrayList<>(vtces.keySet());
+
+			for (String key : keys) 
+			{
+				String str = key + " =>\n";
+				Vertex vtx = vtces.get(key);
+				ArrayList<String> vtxnbrs = new ArrayList<>(vtx.nbrs.keySet());
+				
+				for (String nbr : vtxnbrs)
+				{
+					str = str + "\t" + nbr + "\t";
+                    			if (nbr.length()<16)
+                    			str = str + "\t";
+                    			if (nbr.length()<8)
+                    			str = str + "\t";
+                    			str = str + vtx.nbrs.get(nbr) + "\n";
+				}
+				System.out.println(str);
+			}
+			System.out.println("\t------------------");
+			System.out.println("---------------------------------------------------\n");
+
+		}
+		
+		public void display_Stations() 
+		{
+			System.out.println("\n***********************************************************************\n");
+			ArrayList<String> keys = new ArrayList<>(vtces.keySet());
+			int i=1;
+			for(String key : keys) 
+			{
+				System.out.println(i + ". " + key);
+				i++;
+			}
+			System.out.println("\n***********************************************************************\n");
+		}
+			
+	/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+		
+		public boolean hasPath(String vname1, String vname2, HashMap<String, Boolean> processed) 
+		{
+			// DIR EDGE
+			if (containsEdge(vname1, vname2)) {
+				return true;
+			}
+
+			//MARK AS DONE
+			processed.put(vname1, true);
+
+			Vertex vtx = vtces.get(vname1);
+			ArrayList<String> nbrs = new ArrayList<>(vtx.nbrs.keySet());
+
+			//TRAVERSE THE NBRS OF THE VERTEX
+			for (String nbr : nbrs) 
+			{
+
+				if (!processed.containsKey(nbr))
+					if (hasPath(nbr, vname2, processed))
+						return true;
+			}
+
+			return false;
+		}
+		
+		
+		private class DijkstraPair implements Comparable<DijkstraPair> 
+		{
+			String vname;
+			String psf;
+			int cost;
+
+			/*
+			The compareTo method is defined in Java.lang.Comparable.
+			Here, we override the method because the conventional compareTo method
+			is used to compare strings,integers and other primitive data types. But
+			here in this case, we intend to compare two objects of DijkstraPair class.
+			*/ 
+
+			/*
+			Removing the overriden method gives us this errror:
+			The type Graph_M.DijkstraPair must implement the inherited abstract method Comparable<Graph_M.DijkstraPair>.compareTo(Graph_M.DijkstraPair)
+
+			This is because DijkstraPair is not an abstract class and implements Comparable interface which has an abstract 
+			method compareTo. In order to make our class concrete(a class which provides implementation for all its methods)
+			we have to override the method compareTo
+			 */
+			@Override
+			public int compareTo(DijkstraPair o) 
+			{
+				return o.cost - this.cost;
+			}
+		}
+		
+		public int dijkstra(String src, String des, boolean nan) 
+		{
+			int val = 0;
+			ArrayList<String> ans = new ArrayList<>();
+			HashMap<String, DijkstraPair> map = new HashMap<>();
+
+			Heap<DijkstraPair> heap = new Heap<>();
+
+			for (String key : vtces.keySet()) 
+			{
+				DijkstraPair np = new DijkstraPair();
+				np.vname = key;
+				//np.psf = "";
+				np.cost = Integer.MAX_VALUE;
+
+				if (key.equals(src)) 
+				{
+					np.cost = 0;
+					np.psf = key;
+				}
+
+				heap.add(np);
+				map.put(key, np);
+			}
+
+			//keep removing the pairs while heap is not empty
+			while (!heap.isEmpty()) 
+			{
+				DijkstraPair rp = heap.remove();
+				
+				if(rp.vname.equals(des))
+				{
+					val = rp.cost;
+					break;
+				}
+				
+				map.remove(rp.vname);
+
+				ans.add(rp.vname);
+				
+				Vertex v = vtces.get(rp.vname);
+				for (String nbr : v.nbrs.keySet()) 
+				{
+					if (map.containsKey(nbr)) 
+					{
+						int oc = map.get(nbr).cost;
+						Vertex k = vtces.get(rp.vname);
+						int nc;
+						if(nan)
+							nc = rp.cost + 120 + 40*k.nbrs.get(nbr);
+						else
+							nc = rp.cost + k.nbrs.get(nbr);
+
+						if (nc < oc) 
+						{
+							DijkstraPair gp = map.get(nbr);
+							gp.psf = rp.psf + nbr;
+							gp.cost = nc;
+
+							heap.updatePriority(gp);
+						}
+					}
+				}
+			}
+			return val;
+		}
+		
+		private class Pair 
+		{
+			String vname;
+			String psf;
+			int min_dis;
+			int min_time;
+		}
+		
+		public String Get_Minimum_Distance(String src, String dst) 
+		{
+			int min = Integer.MAX_VALUE;
+			//int time = 0;
+			String ans = "";
+			HashMap<String, Boolean> processed = new HashMap<>();
+			LinkedList<Pair> stack = new LinkedList<>();
+
+			// create a new pair
+			Pair sp = new Pair();
+			sp.vname = src;
+			sp.psf = src + "  ";
+			sp.min_dis = 0;
+			sp.min_time = 0;
+			
+			// put the new pair in stack
+			stack.addFirst(sp);
+
+			// while stack is not empty keep on doing the work
+			while (!stack.isEmpty()) 
+			{
+				// remove a pair from stack
+				Pair rp = stack.removeFirst();
+
+				if (processed.containsKey(rp.vname)) 
+				{
+					continue;
+				}
+
+				// processed put
+				processed.put(rp.vname, true);
+				
+				//if there exists a direct edge b/w removed pair and destination vertex
+				if (rp.vname.equals(dst)) 
+				{
+					int temp = rp.min_dis;
+					if(temp<min) {
+						ans = rp.psf;
+						min = temp;
+					}
+					continue;
+				}
+
+				Vertex rpvtx = vtces.get(rp.vname);
+				ArrayList<String> nbrs = new ArrayList<>(rpvtx.nbrs.keySet());
+
+				for(String nbr : nbrs) 
+				{
+					// process only unprocessed nbrs
+					if (!processed.containsKey(nbr)) {
+
+						// make a new pair of nbr and put in queue
+						Pair np = new Pair();
+						np.vname = nbr;
+						np.psf = rp.psf + nbr + "  ";
+						np.min_dis = rp.min_dis + rpvtx.nbrs.get(nbr); 
+						//np.min_time = rp.min_time + 120 + 40*rpvtx.nbrs.get(nbr); 
+						stack.addFirst(np);
+					}
+				}
+			}
+			ans = ans + Integer.toString(min);
+			return ans;
+		}
+		
+		
+		public String Get_Minimum_Time(String src, String dst) 
+		{
+			int min = Integer.MAX_VALUE;
+			String ans = "";
+			HashMap<String, Boolean> processed = new HashMap<>();
+			LinkedList<Pair> stack = new LinkedList<>();
+
+			// create a new pair
+			Pair sp = new Pair();
+			sp.vname = src;
+			sp.psf = src + "  ";
+			sp.min_dis = 0;
+			sp.min_time = 0;
+			
+			// put the new pair in queue
+			stack.addFirst(sp);
+
+			// while queue is not empty keep on doing the work
+			while (!stack.isEmpty()) {
+
+				// remove a pair from queue
+				Pair rp = stack.removeFirst();
+
+				if (processed.containsKey(rp.vname)) 
+				{
+					continue;
+				}
+
+				// processed put
+				processed.put(rp.vname, true);
+
+				//if there exists a direct edge b/w removed pair and destination vertex
+				if (rp.vname.equals(dst)) 
+				{
+					int temp = rp.min_time;
+					if(temp<min) {
+						ans = rp.psf;
+						min = temp;
+					}
+					continue;
+				}
+
+				Vertex rpvtx = vtces.get(rp.vname);
+				ArrayList<String> nbrs = new ArrayList<>(rpvtx.nbrs.keySet());
+
+				for (String nbr : nbrs) 
+				{
+					// process only unprocessed nbrs
+					if (!processed.containsKey(nbr)) {
+
+						// make a new pair of nbr and put in queue
+						Pair np = new Pair();
+						np.vname = nbr;
+						np.psf = rp.psf + nbr + "  ";
+						//np.min_dis = rp.min_dis + rpvtx.nbrs.get(nbr);
+						np.min_time = rp.min_time + 120 + 40*rpvtx.nbrs.get(nbr); 
+						stack.addFirst(np);
+					}
+				}
+			}
+			Double minutes = Math.ceil((double)min / 60);
+			ans = ans + Double.toString(minutes);
+			return ans;
+		}
+		
+		public ArrayList<String> get_Interchanges(String str)
+		{
+			ArrayList<String> arr = new ArrayList<>();
+			String res[] = str.split("  ");
+			arr.add(res[0]);
+			int count = 0;
+			for(int i=1;i<res.length-1;i++)
+			{
+				int index = res[i].indexOf('~');
+				String s = res[i].substring(index+1);
+				
+				if(s.length()==2)
+				{
+					String prev = res[i-1].substring(res[i-1].indexOf('~')+1);
+					String next = res[i+1].substring(res[i+1].indexOf('~')+1);
+					
+					if(prev.equals(next)) 
+					{
+						arr.add(res[i]);
+					}
+					else
+					{
+						arr.add(res[i]+" ==> "+res[i+1]);
+						i++;
+						count++;
+					}
+				}
+				else
+				{
+					arr.add(res[i]);
+				}
+			}
+			arr.add(Integer.toString(count));
+			arr.add(res[res.length-1]);
+			return arr;
+		}
+		
+		public static void Create_Metro_Map(Graph_M g)
+		{
+			g.addVertex("Noida Sector 62~B");
+			g.addVertex("Botanical Garden~B");
+			g.addVertex("Yamuna Bank~B");
+			g.addVertex("Rajiv Chowk~BY");
+			g.addVertex("Vaishali~B");
+			g.addVertex("Moti Nagar~B");
+			g.addVertex("Janak Puri West~BO");
+			g.addVertex("Dwarka Sector 21~B");
+			g.addVertex("Huda City Center~Y");
+			g.addVertex("Saket~Y");
+			g.addVertex("Vishwavidyalaya~Y");
+			g.addVertex("Chandni Chowk~Y");
+			g.addVertex("New Delhi~YO");
+			g.addVertex("AIIMS~Y");
+			g.addVertex("Shivaji Stadium~O");
+			g.addVertex("DDS Campus~O");
+			g.addVertex("IGI Airport~O");
+			g.addVertex("Rajouri Garden~BP");
+			g.addVertex("Netaji Subhash Place~PR");
+			g.addVertex("Punjabi Bagh West~P");
+			
+			g.addEdge("Noida Sector 62~B", "Botanical Garden~B", 8);
+			g.addEdge("Botanical Garden~B", "Yamuna Bank~B", 10);
+			g.addEdge("Yamuna Bank~B", "Vaishali~B", 8);
+			g.addEdge("Yamuna Bank~B", "Rajiv Chowk~BY", 6);
+			g.addEdge("Rajiv Chowk~BY", "Moti Nagar~B", 9);
+			g.addEdge("Moti Nagar~B", "Janak Puri West~BO", 7);
+			g.addEdge("Janak Puri West~BO", "Dwarka Sector 21~B", 6);
+			g.addEdge("Huda City Center~Y", "Saket~Y", 15);
+			g.addEdge("Saket~Y", "AIIMS~Y", 6);
+			g.addEdge("AIIMS~Y", "Rajiv Chowk~BY", 7);
+			g.addEdge("Rajiv Chowk~BY", "New Delhi~YO", 1);
+			g.addEdge("New Delhi~YO", "Chandni Chowk~Y", 2);
+			g.addEdge("Chandni Chowk~Y", "Vishwavidyalaya~Y", 5);
+			g.addEdge("New Delhi~YO", "Shivaji Stadium~O", 2);
+			g.addEdge("Shivaji Stadium~O", "DDS Campus~O", 7);
+			g.addEdge("DDS Campus~O", "IGI Airport~O", 8);
+			g.addEdge("Moti Nagar~B", "Rajouri Garden~BP", 2);
+			g.addEdge("Punjabi Bagh West~P", "Rajouri Garden~BP", 2);
+			g.addEdge("Punjabi Bagh West~P", "Netaji Subhash Place~PR", 3);
+		}
+		
+		public static String[] printCodelist()
+		{
+			System.out.println("List of station along with their codes:\n");
+			ArrayList<String> keys = new ArrayList<>(vtces.keySet());
+			int i=1,j=0,m=1;
+			StringTokenizer stname;
+			String temp="";
+			String codes[] = new String[keys.size()];
+			char c;
+			for(String key : keys) 
+			{
+				stname = new StringTokenizer(key);
+				codes[i-1] = "";
+				j=0;
+				while (stname.hasMoreTokens())
+				{
+				        temp = stname.nextToken();
+				        c = temp.charAt(0);
+				        while (c>47 && c<58)
+				        {
+				                codes[i-1]+= c;
+				                j++;
+				                c = temp.charAt(j);
+				        }
+				        if ((c<48 || c>57) && c<123)
+				                codes[i-1]+= c;
+				}
+				if (codes[i-1].length() < 2)
+					codes[i-1]+= Character.toUpperCase(temp.charAt(1));
+				            
+				System.out.print(i + ". " + key + "\t");
+				if (key.length()<(22-m))
+                    			System.out.print("\t");
+				if (key.length()<(14-m))
+                    			System.out.print("\t");
+                    		if (key.length()<(6-m))
+                    			System.out.print("\t");
+                    		System.out.println(codes[i-1]);
+				i++;
+				if (i == (int)Math.pow(10,m))
+				        m++;
+			}
+			return codes;
+		}
+		
+		public static void main(String[] args) throws IOException
+		{
+			Graph_M g = new Graph_M();
+			Create_Metro_Map(g);
+			
+			System.out.println("\n\t\t\t****WELCOME TO THE METRO APP*****");
+			// System.out.println("\t\t\t\t~~LIST OF ACTIONS~~\n\n");
+			// System.out.println("1. LIST ALL THE STATIONS IN THE MAP");
+			// System.out.println("2. SHOW THE METRO MAP");
+			// System.out.println("3. GET SHORTEST DISTANCE FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+			// System.out.println("4. GET SHORTEST TIME TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+			// System.out.println("5. GET SHORTEST PATH (DISTANCE WISE) TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+			// System.out.println("6. GET SHORTEST PATH (TIME WISE) TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+			// System.out.print("\nENTER YOUR CHOICE FROM THE ABOVE LIST : ");
+			BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
+			// int choice = Integer.parseInt(inp.readLine());
+			//STARTING SWITCH CASE
+			while(true)
+			{
+				System.out.println("\t\t\t\t~~LIST OF ACTIONS~~\n\n");
+				System.out.println("1. LIST ALL THE STATIONS IN THE MAP");
+				System.out.println("2. SHOW THE METRO MAP");
+				System.out.println("3. GET SHORTEST DISTANCE FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+				System.out.println("4. GET SHORTEST TIME TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+				System.out.println("5. GET SHORTEST PATH (DISTANCE WISE) TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+				System.out.println("6. GET SHORTEST PATH (TIME WISE) TO REACH FROM A 'SOURCE' STATION TO 'DESTINATION' STATION");
+				System.out.println("7. EXIT THE MENU");
+				System.out.print("\nENTER YOUR CHOICE FROM THE ABOVE LIST (1 to 7) : ");
+				int choice = -1;
+				try {
+					choice = Integer.parseInt(inp.readLine());
+				} catch(Exception e) {
+					// default will handle
+				}
+				System.out.print("\n***********************************************************\n");
+				if(choice == 7)
+				{
+					System.exit(0);
+				}
+				switch(choice)
+				{
+				case 1:
+					g.display_Stations();
+					break;
+			
+				case 2:
+					g.display_Map();
+					break;
+				
+				case 3:
+					ArrayList<String> keys = new ArrayList<>(vtces.keySet());
+					String codes[] = printCodelist();
+					System.out.println("\n1. TO ENTER SERIAL NO. OF STATIONS\n2. TO ENTER CODE OF STATIONS\n3. TO ENTER NAME OF STATIONS\n");
+					System.out.println("ENTER YOUR CHOICE:");
+				        int ch = Integer.parseInt(inp.readLine());
+					int j;
+						
+					String st1 = "", st2 = "";
+					System.out.println("ENTER THE SOURCE AND DESTINATION STATIONS");
+					if (ch == 1)
+					{
+					    st1 = keys.get(Integer.parseInt(inp.readLine())-1);
+					    st2 = keys.get(Integer.parseInt(inp.readLine())-1);
+					}
+					else if (ch == 2)
+					{
+					    String a,b;
+					    a = (inp.readLine()).toUpperCase();
+					    for (j=0;j<keys.size();j++)
+					       if (a.equals(codes[j]))
+					           break;
+					    st1 = keys.get(j);
+					    b = (inp.readLine()).toUpperCase();
+					    for (j=0;j<keys.size();j++)
+					       if (b.equals(codes[j]))
+					           break;
+					    st2 = keys.get(j);
+					}
+					else if (ch == 3)
+					{
+					    st1 = inp.readLine();
+					    st2 = inp.readLine();
+					}
+					else
+					{
+					    System.out.println("Invalid choice");
+					    System.exit(0);
+					}
+				
+					HashMap<String, Boolean> processed = new HashMap<>();
+					if(!g.containsVertex(st1) || !g.containsVertex(st2) || !g.hasPath(st1, st2, processed))
+						System.out.println("THE INPUTS ARE INVALID");
+					else
+					System.out.println("SHORTEST DISTANCE FROM "+st1+" TO "+st2+" IS "+g.dijkstra(st1, st2, false)+"KM\n");
+					break;
+				
+				case 4:
+					System.out.print("ENTER THE SOURCE STATION: ");
+					String sat1 = inp.readLine();
+					System.out.print("ENTER THE DESTINATION STATION: ");
+					String sat2 = inp.readLine();
+				
+					HashMap<String, Boolean> processed1= new HashMap<>();				
+					System.out.println("SHORTEST TIME FROM ("+sat1+") TO ("+sat2+") IS "+g.dijkstra(sat1, sat2, true)/60+" MINUTES\n\n");
+					break;
+				
+				case 5:
+					System.out.println("ENTER THE SOURCE AND DESTINATION STATIONS");
+					String s1 = inp.readLine();
+					String s2 = inp.readLine();
+				
+					HashMap<String, Boolean> processed2 = new HashMap<>();
+					if(!g.containsVertex(s1) || !g.containsVertex(s2) || !g.hasPath(s1, s2, processed2))
+						System.out.println("THE INPUTS ARE INVALID");
+					else 
+					{
+						ArrayList<String> str = g.get_Interchanges(g.Get_Minimum_Distance(s1, s2));
+						int len = str.size();
+						System.out.println("SOURCE STATION : " + s1);
+						System.out.println("SOURCE STATION : " + s2);
+						System.out.println("DISTANCE : " + str.get(len-1));
+						System.out.println("NUMBER OF INTERCHANGES : " + str.get(len-2));
+						//System.out.println(str);
+						System.out.println("~~~~~~~~~~~~~");
+						System.out.println("START  ==>  " + str.get(0));
+						for(int i=1; i<len-3; i++)
+						{
+							System.out.println(str.get(i));
+						}
+						System.out.print(str.get(len-3) + "   ==>    END");
+						System.out.println("\n~~~~~~~~~~~~~");
+					}
+					break;
+				
+				case 6:
+					System.out.print("ENTER THE SOURCE STATION: ");
+					String ss1 = inp.readLine();
+					System.out.print("ENTER THE DESTINATION STATION: ");
+					String ss2 = inp.readLine();
+				
+					HashMap<String, Boolean> processed3 = new HashMap<>();
+					if(!g.containsVertex(ss1) || !g.containsVertex(ss2) || !g.hasPath(ss1, ss2, processed3))
+						System.out.println("THE INPUTS ARE INVALID");
+					else
+					{
+						ArrayList<String> str = g.get_Interchanges(g.Get_Minimum_Time(ss1, ss2));
+						int len = str.size();
+						System.out.println("SOURCE STATION : " + ss1);
+						System.out.println("DESTINATION STATION : " + ss2);
+						System.out.println("TIME : " + str.get(len-1)+" MINUTES");
+						System.out.println("NUMBER OF INTERCHANGES : " + str.get(len-2));
+						//System.out.println(str);
+						System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
+						System.out.print("START  ==>  " + str.get(0) + " ==>  ");
+						for(int i=1; i<len-3; i++)
+						{
+							System.out.println(str.get(i));
+						}
+						System.out.print(str.get(len-3) + "   ==>    END");
+						System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
+					}
+					break;	
+               	         default:  //If switch expression does not match with any case, 
+                	        	//default statements are executed by the program.
+                            	//No break is needed in the default case
+                    	        System.out.println("Please enter a valid option! ");
+                        	    System.out.println("The options you can choose are from 1 to 6. ");
+                            
+				}
+			}
+			
+		}	
+	}
diff --git a/the_metro_app/Heap.class b/the_metro_app/Heap.class
new file mode 100644
index 00000000..72a96a32
Binary files /dev/null and b/the_metro_app/Heap.class differ
diff --git a/the_metro_app/Heap.java b/the_metro_app/Heap.java
new file mode 100644
index 00000000..075f5463
--- /dev/null
+++ b/the_metro_app/Heap.java
@@ -0,0 +1,100 @@
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class Heap<T extends Comparable<T>> 
+{
+	ArrayList<T> data = new ArrayList<>();
+	HashMap<T, Integer> map = new HashMap<>();
+
+	public void add(T item) 
+	{
+		data.add(item);   
+		map.put(item, this.data.size() - 1);
+		upheapify(data.size() - 1);
+	}
+
+	private void upheapify(int ci) 
+	{
+		int pi = (ci - 1) / 2;
+		if (isLarger(data.get(ci), data.get(pi)) > 0) 
+		{
+			swap(pi, ci);
+			upheapify(pi);
+		}
+	}
+
+	private void swap(int i, int j) 
+	{
+		T ith = data.get(i);
+		T jth = data.get(j);
+		
+		data.set(i, jth);
+		data.set(j, ith);
+		map.put(ith, j);
+		map.put(jth, i);
+	}
+
+	public void display() 
+	{
+		System.out.println(data);
+	}
+
+	public int size() 
+	{
+		return this.data.size();
+	}
+
+	public boolean isEmpty() 
+	{
+		return this.size() == 0;
+	}
+
+	public T remove() 
+	{
+		swap(0, this.data.size() - 1);
+		T rv = this.data.remove(this.data.size() - 1);
+		downheapify(0);
+
+		map.remove(rv);
+		return rv;
+	}
+
+	private void downheapify(int pi) 
+	{
+		int lci = 2 * pi + 1;
+		int rci = 2 * pi + 2;
+		int mini = pi;
+
+		if (lci < this.data.size() && isLarger(data.get(lci), data.get(mini)) > 0)
+		{
+			mini = lci;
+		}
+		
+		if (rci < this.data.size() && isLarger(data.get(rci), data.get(mini)) > 0) 
+		{
+			mini = rci;
+		}
+		
+		if (mini != pi)
+		{
+			swap(mini, pi);
+			downheapify(mini);
+		}
+	}
+
+	public T get() 
+	{
+		return this.data.get(0);
+	}
+
+	public int isLarger(T t, T o) 
+	{
+		return t.compareTo(o);
+	}
+
+	public void updatePriority(T pair) 
+	{
+		int index = map.get(pair);
+		upheapify(index);
+	}
+}
diff --git a/the_metro_app/README.md b/the_metro_app/README.md
new file mode 100644
index 00000000..2eac60cc
--- /dev/null
+++ b/the_metro_app/README.md
@@ -0,0 +1,24 @@
+# DELHI METRO RAIL APP
+
+Please don't get confused, this is NOT an ANDROID Application!
+
+This is a simple Java program that will take information (name) of the source station and the destination station, of Delhi Metro, from the user and display the fare and shortest metro route to reach the destination. It will also be having a metro map for commuter’s better navigation.
+
+The idea is implemented using Graph and Heap data structures.
+The graph has nodes and edges. Nodes represent a metro station that will be containing certain information regarding that station like its name, its metro corridor, and the lines which it connects. Edges (the connection between two nodes) represent the distance between the two stations and the cost of each edge will be equal to the distance between the two of its connecting stations(nodes). 
+
+By using different algorithms like Dijkstra, breadth-first search, depth-first search, etc, the shortest path between the source station and the destination station is determined, and accordingly, the fare is being calculated on the basis of the total distance between the two stations. Finally, the metro route between the two stations and the total fare is displayed.
+
+Main.java cointains all the major code and Heap.java contains heap implementation.
+
+
+##  REQUIREMENTS
+
+> The project can run on any online or offline Integrated Development Environment (IDE) like Eclipse, Netbeans, ideone.com, etc.
+> You should have at least elementary knowledge of Java Programming language to work on the project.
+> Knowledge of data structures like Graph and Heap and Algorithms like Dijkstra, BFS, DFS, etc is appreciated, however, it is not essential.
+> And lastly, some understanding of the Collection framework makes it a cakewalk journey. (If you don't know about the Collection framework it is not a                   problem, you can proceed without it and while working if you feel the need to know you can refer to https://www.geeksforgeeks.org/collections-in-java-2/ ).
+
+
+## That was all... You are all set to work on the project!!!!  
+	
diff --git a/the_metro_app/Requirements.md b/the_metro_app/Requirements.md
new file mode 100644
index 00000000..415a44d0
--- /dev/null
+++ b/the_metro_app/Requirements.md
@@ -0,0 +1,39 @@
+# Requirements
+
+## Java Collection framework
+
+The Collection in Java is a framework that provides an architecture to store and manipulate the group of objects.
+
+![flowchart](https://user-images.githubusercontent.com/71463658/101475597-9db6f400-3972-11eb-8b9f-dec58a00104f.png)
+
+## Collection framework used in this project
+
+### In Graph_M.java
+
+*  ArrayList
+* LinkedList
+* Stack
+* HashMap
+
+### In Heap.java
+
+* HashMap
+* ArrayList
+
+
+
+## Data Structures
+Data structure is a way of organizing data in the computer so that it can be used effectively.
+The data structures used in this project are:
+* Array
+* HashMap
+* Linked List
+* Heap
+* Stack
+* Graph
+
+* The array data structure is implemented using ArrayList class which is a resizable array.It stores data in contiguous memory locations.
+* Hashmap data structure is used to store key-value pairs.
+* The stack data structure required by the algorithm is implemented using linked list.It follows the principle Last In First Out(LIFO)
+* Heap is implemented with the help of ArrayList and HashMap.It is a tree based data structure where all elements of the tree are in a particular order.
+* Graph is a complex data structure containing vertices and edges connecting these vertices.This is implemented in the project with the help of ArrayList and HashMap.
diff --git a/todoapp.java b/todoapp.java
new file mode 100644
index 00000000..5014d325
--- /dev/null
+++ b/todoapp.java
@@ -0,0 +1,85 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+class Task {
+    private String description;
+
+    public Task(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+}
+
+class TodoList {
+    private ArrayList<Task> tasks = new ArrayList<>();
+
+    public void addTask(String description) {
+        Task task = new Task(description);
+        tasks.add(task);
+        System.out.println("Task added successfully!");
+    }
+
+    public void listTasks() {
+        if (tasks.isEmpty()) {
+            System.out.println("No tasks found.");
+        } else {
+            System.out.println("Task List:");
+            for (int i = 0; i < tasks.size(); i++) {
+                System.out.println((i + 1) + ". " + tasks.get(i).getDescription());
+            }
+        }
+    }
+
+    public void removeTask(int index) {
+        if (index >= 0 && index < tasks.size()) {
+            tasks.remove(index);
+            System.out.println("Task removed successfully!");
+        } else {
+            System.out.println("Invalid task index.");
+        }
+    }
+}
+
+public class TodoApp {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        TodoList todoList = new TodoList();
+
+        while (true) {
+            System.out.println("\nTo-Do List Application");
+            System.out.println("1. Add Task");
+            System.out.println("2. List Tasks");
+            System.out.println("3. Remove Task");
+            System.out.println("4. Exit");
+            System.out.print("Enter your choice: ");
+
+            int choice = scanner.nextInt();
+            scanner.nextLine(); // Consume the newline character
+
+            switch (choice) {
+                case 1:
+                    System.out.print("Enter task description: ");
+                    String description = scanner.nextLine();
+                    todoList.addTask(description);
+                    break;
+                case 2:
+                    todoList.listTasks();
+                    break;
+                case 3:
+                    System.out.print("Enter the task index to remove: ");
+                    int index = scanner.nextInt();
+                    todoList.removeTask(index - 1);
+                    break;
+                case 4:
+                    System.out.println("Exiting the To-Do List Application. Goodbye!");
+                    scanner.close();
+                    System.exit(0);
+                default:
+                    System.out.println("Invalid choice. Please try again.");
+            }
+        }
+    }
+}
diff --git a/tree.cpp b/tree.cpp
new file mode 100644
index 00000000..c4161666
--- /dev/null
+++ b/tree.cpp
@@ -0,0 +1,74 @@
+
+#include <bits/stdc++.h>
+
+void markParents(BinaryTreeNode<int> *root, unordered_map<BinaryTreeNode<int> *, BinaryTreeNode<int> *> &parent_track, BinaryTreeNode<int> *target)
+{
+    queue<BinaryTreeNode<int> *> queue;
+    queue.push(root);
+    while (!queue.empty())
+    {
+        BinaryTreeNode<int> *current = queue.front();
+        queue.pop();
+        if (current->left)
+        {
+            parent_track[current->left] = current;
+            queue.push(current->left);
+        }
+        if (current->right)
+        {
+            parent_track[current->right] = current;
+            queue.push(current->right);
+        }
+    }
+}
+
+vector<BinaryTreeNode<int> *> printNodesAtDistanceK(BinaryTreeNode<int> *root, BinaryTreeNode<int> *target, int k)
+{
+    unordered_map<BinaryTreeNode<int> *, BinaryTreeNode<int> *> parent_track;
+
+    markParents(root, parent_track, target);
+
+    unordered_map<BinaryTreeNode<int> *, bool> visited;
+
+    queue<BinaryTreeNode<int> *> queue;
+    queue.push(target);
+    visited[target] = true;
+    int curr_level = 0;
+
+    while (!queue.empty())
+    {
+        int size = queue.size();
+
+        if (curr_level++ == k)
+            break;
+
+        for (int i = 0; i < size; i++)
+        {
+            BinaryTreeNode<int> *current = queue.front();
+            queue.pop();
+            if (current->left && !visited[current->left])
+            {
+                queue.push(current->left);
+                visited[current->left] = true;
+            }
+            if (current->right && !visited[current->right])
+            {
+                queue.push(current->right);
+                visited[current->right] = true;
+            }
+            if (parent_track[current] && !visited[parent_track[current]])
+            {
+                queue.push(parent_track[current]);
+                visited[parent_track[current]] = true;
+            }
+        }
+    }
+    vector<BinaryTreeNode<int> *> result;
+    while (!queue.empty())
+    {
+        BinaryTreeNode<int> *current = queue.front();
+        queue.pop();
+        result.push_back(current);
+    }
+    return result;
+}
diff --git a/triangle.java b/triangle.java
new file mode 100644
index 00000000..fe1e8669
--- /dev/null
+++ b/triangle.java
@@ -0,0 +1,35 @@
+// Java Program to print pattern 
+// Zero-One triangle 
+import java.util.*; 
+
+public class GeeksForGeeks { 
+	// Function to demonstrate pattern 
+	public static void printPattern(int n) 
+	{ 
+		int i, j; 
+		//outer loop to handle number of rows 
+		for (i = 1; i <= n; i++) { 
+			//inner loop to handle number of columns 
+			for (j = 1; j <= i; j++) { 
+				// if the sum of (i+j) is even then print 1 
+				if ((i + j) % 2 == 0) { 
+					System.out.print(1 + " "); 
+				} 
+				// otherwise print 0 
+				else { 
+					System.out.print(0 + " "); 
+				} 
+			} 
+
+			//printing new line for each row 
+			System.out.println(); 
+		} 
+	} 
+
+	// Driver Function 
+	public static void main(String args[]) 
+	{ 
+		int n = 6; 
+		printPattern(n); 
+	} 
+}
diff --git a/url.java b/url.java
new file mode 100644
index 00000000..6ee0b5e9
--- /dev/null
+++ b/url.java
@@ -0,0 +1,52 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import java.io.InputStream;  
+import java.net.*;  
+public class SourceGetter extends Frame implements ActionListener{  
+    TextField tf;  
+    TextArea ta;  
+    Button b;  
+    Label l;  
+    SourceGetter(){  
+        super("Source Getter Tool - Javatpoint");  
+        l=new Label("Enter URL:");  
+        l.setBounds(50,50,50,20);  
+          
+        tf=new TextField();  
+        tf.setBounds(120,50,250,20);  
+          
+        b=new Button("Get Source Code");  
+        b.setBounds(120, 100,120,30);  
+        b.addActionListener(this);  
+          
+        ta=new TextArea();  
+        ta.setBounds(120,150,250,150);  
+          
+        add(l);add(tf);add(b);add(ta);  
+        setSize(400,400);  
+        setLayout(null);  
+        setVisible(true);  
+    }  
+    public void actionPerformed(ActionEvent e){  
+        String s=tf.getText();  
+        if(s==null){}  
+        else{  
+            try{  
+            URL u=new URL(s);  
+            URLConnection uc=u.openConnection();  
+          
+            InputStream is=uc.getInputStream();  
+            int i;  
+            StringBuilder sb=new StringBuilder();  
+            while((i=is.read())!=-1){  
+                sb.append((char)i);  
+            }  
+            String source=sb.toString();  
+            ta.setText(source);  
+            }catch(Exception ex){System.out.println(e);}  
+        }  
+    }  
+    public static void main(String[] args) {  
+        new SourceGetter();  
+    }  
+}  
diff --git a/urlsourcegenerator.java b/urlsourcegenerator.java
new file mode 100644
index 00000000..6ee0b5e9
--- /dev/null
+++ b/urlsourcegenerator.java
@@ -0,0 +1,52 @@
+import java.awt.*;  
+import java.awt.event.*;  
+import java.io.InputStream;  
+import java.net.*;  
+public class SourceGetter extends Frame implements ActionListener{  
+    TextField tf;  
+    TextArea ta;  
+    Button b;  
+    Label l;  
+    SourceGetter(){  
+        super("Source Getter Tool - Javatpoint");  
+        l=new Label("Enter URL:");  
+        l.setBounds(50,50,50,20);  
+          
+        tf=new TextField();  
+        tf.setBounds(120,50,250,20);  
+          
+        b=new Button("Get Source Code");  
+        b.setBounds(120, 100,120,30);  
+        b.addActionListener(this);  
+          
+        ta=new TextArea();  
+        ta.setBounds(120,150,250,150);  
+          
+        add(l);add(tf);add(b);add(ta);  
+        setSize(400,400);  
+        setLayout(null);  
+        setVisible(true);  
+    }  
+    public void actionPerformed(ActionEvent e){  
+        String s=tf.getText();  
+        if(s==null){}  
+        else{  
+            try{  
+            URL u=new URL(s);  
+            URLConnection uc=u.openConnection();  
+          
+            InputStream is=uc.getInputStream();  
+            int i;  
+            StringBuilder sb=new StringBuilder();  
+            while((i=is.read())!=-1){  
+                sb.append((char)i);  
+            }  
+            String source=sb.toString();  
+            ta.setText(source);  
+            }catch(Exception ex){System.out.println(e);}  
+        }  
+    }  
+    public static void main(String[] args) {  
+        new SourceGetter();  
+    }  
+}  
diff --git a/velocity-calculator/VelocityCalculator.java b/velocity-calculator/VelocityCalculator.java
new file mode 100644
index 00000000..377e9a05
--- /dev/null
+++ b/velocity-calculator/VelocityCalculator.java
@@ -0,0 +1,24 @@
+import java.util.Scanner;
+
+public class VelocityCalculator {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+
+        System.out.println("Velocity Calculator");
+        System.out.print("Enter initial position (meters): ");
+        double initialPosition = scanner.nextDouble();
+
+        System.out.print("Enter final position (meters): ");
+        double finalPosition = scanner.nextDouble();
+
+        System.out.print("Enter time taken (seconds): ");
+        double time = scanner.nextDouble();
+
+        // Calculate velocity using the formula: velocity = (final position - initial position) / time
+        double velocity = (finalPosition - initialPosition) / time;
+
+        System.out.println("The velocity is " + velocity + " meters per second.");
+
+        scanner.close();
+    }
+}
diff --git a/water_gun_game/readme.md b/water_gun_game/readme.md
new file mode 100644
index 00000000..afdb166b
--- /dev/null
+++ b/water_gun_game/readme.md
@@ -0,0 +1,48 @@
+# Water Gun Game in Java
+
+A simple text-based two-player water gun game implemented in Java.
+
+## Game Description
+
+In this game, two players take turns choosing actions: filling their water guns or shooting each other. The game continues until one of the players runs out of water.
+
+## Features
+
+- Two-player game with basic actions: Fill water gun and Shoot.
+- Random water shot amounts between 0 and 20.
+
+## Getting Started
+
+1. Clone or download the project to your local machine.
+
+2. Compile and run the game using a Java development environment or command line.
+
+3. Follow the on-screen instructions to play the game.
+
+4. Players can choose to "Fill water gun" (action 1) to restore their water or "Shoot" (action 2) to shoot the other player with a random water amount.
+
+## Sample Gameplay
+
+```plaintext
+Welcome to the Water Gun Game!
+Enter Player 1's name: Alice
+Enter Player 2's name: Bob
+
+Alice's water: 100
+Bob's water: 100
+Alice, choose an action (1: Fill water gun, 2: Shoot): 2
+Alice shot Bob with 9 water!
+
+Alice's water: 100
+Bob's water: 91
+Bob, choose an action (1: Fill water gun, 2: Shoot): 1
+Bob filled their water gun.
+
+Alice's water: 100
+Bob's water: 100
+Alice, choose an action (1: Fill water gun, 2: Shoot): 2
+Alice shot Bob with 15 water!
+
+...
+
+Bob is out of water. Alice wins!
diff --git a/water_gun_game/water.java b/water_gun_game/water.java
new file mode 100644
index 00000000..52ed7f74
--- /dev/null
+++ b/water_gun_game/water.java
@@ -0,0 +1,63 @@
+import java.util.Scanner;
+import java.util.Random;
+
+public class WaterGunGame {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        Random random = new Random();
+
+        System.out.println("Welcome to the Water Gun Game!");
+        System.out.print("Enter Player 1's name: ");
+        String player1Name = scanner.nextLine();
+        System.out.print("Enter Player 2's name: ");
+        String player2Name = scanner.nextLine();
+
+        int player1Water = 100;
+        int player2Water = 100;
+        boolean isPlayer1Turn = true;
+
+        while (player1Water > 0 && player2Water > 0) {
+            System.out.println("\n" + player1Name + "'s water: " + player1Water);
+            System.out.println(player2Name + "'s water: " + player2Water);
+
+            if (isPlayer1Turn) {
+                System.out.print(player1Name + ", choose an action (1: Fill water gun, 2: Shoot): ");
+            } else {
+                System.out.print(player2Name + ", choose an action (1: Fill water gun, 2: Shoot): ");
+            }
+
+            int action = scanner.nextInt();
+
+            if (action == 1) {
+                if (isPlayer1Turn) {
+                    player1Water = 100;
+                    System.out.println(player1Name + " filled their water gun.");
+                } else {
+                    player2Water = 100;
+                    System.out.println(player2Name + " filled their water gun.");
+                }
+            } else if (action == 2) {
+                int shotAmount = random.nextInt(21); // Randomly shoot between 0 and 20
+                if (isPlayer1Turn) {
+                    player2Water -= shotAmount;
+                    System.out.println(player1Name + " shot " + player2Name + " with " + shotAmount + " water!");
+                } else {
+                    player1Water -= shotAmount;
+                    System.out.println(player2Name + " shot " + player1Name + " with " + shotAmount + " water!");
+                }
+            } else {
+                System.out.println("Invalid action. Choose 1 to fill or 2 to shoot.");
+            }
+
+            isPlayer1Turn = !isPlayer1Turn;
+        }
+
+        if (player1Water <= 0) {
+            System.out.println(player1Name + " is out of water. " + player2Name + " wins!");
+        } else {
+            System.out.println(player2Name + " is out of water. " + player1Name + " wins!");
+        }
+
+        scanner.close();
+    }
+}
diff --git a/wordcounter.java b/wordcounter.java
new file mode 100644
index 00000000..004feb8d
--- /dev/null
+++ b/wordcounter.java
@@ -0,0 +1,76 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+class WordCharCount extends JFrame implements ActionListener {
+    JTextArea textArea;
+    JButton wordButton, charButton, bgColorButton, textColorButton;
+
+    WordCharCount() {
+        super("Word Character Counter - JavaTpoint");
+        
+        textArea = new JTextArea();
+        textArea.setBounds(50, 50, 300, 200);
+
+        wordButton = createButton("Word", 50, 300, 100, 30);
+        charButton = createButton("Character", 180, 300, 100, 30);
+        bgColorButton = createButton("Background Color", 50, 340, 150, 30);
+        textColorButton = createButton("Text Color", 210, 340, 120, 30);
+
+        addComponents();
+        addActionListeners();
+        
+        setSize(400, 400);
+        setLayout(null);
+        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setVisible(true);
+    }
+
+    private JButton createButton(String label, int x, int y, int width, int height) {
+        JButton button = new JButton(label);
+        button.setBounds(x, y, width, height);
+        return button;
+    }
+
+    private void addComponents() {
+        add(textArea);
+        add(wordButton);
+        add(charButton);
+        add(bgColorButton);
+        add(textColorButton);
+    }
+
+    private void addActionListeners() {
+        wordButton.addActionListener(this);
+        charButton.addActionListener(this);
+        bgColorButton.addActionListener(this);
+        textColorButton.addActionListener(this);
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        String text = textArea.getText();
+        if (e.getSource() == wordButton) {
+            String[] words = text.split("\\s");
+            showMessage("Total words: " + words.length);
+        } else if (e.getSource() == charButton) {
+            showMessage("Total Characters with space: " + text.length());
+        } else if (e.getSource() == bgColorButton) {
+            Color bgColor = JColorChooser.showDialog(this, "Choose Background Color", Color.WHITE);
+            textArea.setBackground(bgColor);
+        } else if (e.getSource() == textColorButton) {
+            Color textColor = JColorChooser.showDialog(this, "Choose Text Color", Color.BLACK);
+            textArea.setForeground(textColor);
+        }
+    }
+
+    private void showMessage(String message) {
+        JOptionPane.showMessageDialog(this, message);
+    }
+}
+
+public class CharWordCountTool {
+    public static void main(String[] args) {
+        SwingUtilities.invokeLater(WordCharCount::new);
+    }
+}