OOPS Lab Manual (Results)
OOPS Lab Manual (Results)
Test Cases:
Output:
Sum of numbers from 1 to 100 is: 5050
Output:
Sum of numbers from 1 to 50 is: 1275
Output:
Sum of numbers from 1 to 10 is: 55
Output:
Sum of numbers from 50 to 100 is: 3825
Output:
Sum of numbers from 1 to 1 is: 1
MCQ’s:
1.b) 5050
2.c) N * (N + 1) / 2
3. b) for
4.c) int
5.b) O(N)
6.c) int
7. b) 100
8.c) +
import java.util.Scanner;
public class PrimeCheck {
public static void main(String[] args) {
// Step 1: Input number n
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int n = sc.nextInt();
sc.close();
// Step 2: If n <= 1, it's not prime
if (n <= 1) {
System.out.println("Not Prime");
return;
}
// Step 3 & 4: Check divisibility from 2 to sqrt(n)
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
System.out.println("Not Prime");
return;
}
}
// Step 5: Else, it is a prime number
System.out.println("Prime");
}
}
output:
Enter a number: 2
Prime
Test Cases:
● TC1: Input 2 → Output: Prime
● TC2: Input 15 → Output: Not Prime
● TC3: Input 17 → Output: Prime
● TC4: Input 1 → Output: Not Prime
● TC5: Input 0 → Output: Not Prime
MCQ’s
1. c) 7
2. c) 4
3. c) for
4. a) 1
5. b) 1
6. c) boolean
7. b) No
8. a) Prime
9. c) nextInt()
10. c) 2 to sqrt(n)
import java.util.Scanner;
public class FibonacciRec {
public static int fib(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fib(n - 1) + fib(n - 2);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter number of terms: ");
int n = sc.nextInt();
sc.close();
System.out.println("Fibonacci sequence:");
for (int i = 0; i < n; i++) {
System.out.print(fib(i) + " ");
}
}
}
output:
Enter number of terms: 7
Fibonacci sequence:
0112358
Test Cases:
● TC1: n = 5 → Output: 0 1 1 2 3
● TC2: n = 7 → Output: 0 1 1 2 3 5 8
● TC3: n = 1 → Output: 0
● TC4: n = 0 → Output:
● TC5: n = 10 → Output: 0 1 1 2 3 5 8 13 21 34
MCQs:
2. b) fib(0) = 0
3. b) 2
5. c) Efficiency
6. c) int
7. d) O(2^n)
8. a) 5
9. b) void
10. c) 8
OUTPUT:
Car started
Car started
Car started
Car stopped
MCQ’s:
2. c) class
3. a) new Car()
5. b) private
6. c) 123method
8. c) this
9. b) Many
● Circle → π × r × r
Shape.java
package Inheritance;
public class Shape {
public double area() {
System.out.println("Default area");
return 0;
}
}
Circle.java
package Inheritance;
public class Circle extends Shape {
double radius;
public Circle(double r) {
radius = r;
}
@Override
public double area() {
return 3.14 * radius * radius;
}
}
Rectangle.java
package Inheritance;
public class Rectangle extends Shape {
double length, width;
public Rectangle(double l, double w) {
length = l;
width = w;
}
@Override
public double area() {
return length * width;
}
}
InheritanceTest.java
package Inheritance;
public class InheritanceTest {
public static void main(String[] args) {
Shape circle1 = new Circle(5);
System.out.println("TC1 - Circle Area: " + circle1.area());
Shape rect1 = new Rectangle(10, 5);
System.out.println("TC2 - Rectangle Area: " + rect1.area());
Shape shape = new Shape();
System.out.println("TC3 - Shape Area: " + shape.area());
Shape circle2 = new Circle(0);
System.out.println("TC4 - Zero Radius Circle Area: " + circle2.area());
Shape rect2 = new Rectangle(10, 0);
System.out.println("TC5 - Rectangle Area with width 0: " + rect2.area());
}
}
output:
MCQs:
2. c) extends
5. b) No
6. b) Object
7. c) 0
8. c) Shape
10. c) Hybrid
Ex 6. Program Title: Interface for Banking System
package BankingApp;
public interface BankingService {
void deposit(double amount);
void withdraw(double amount);
void showBalance();
}
package BankingApp;
public class Account implements BankingService {
private double balance = 0;
@Override
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
System.out.println("Deposited ₹" + amount);
} else {
System.out.println("Invalid deposit amount.");
}
}
@Override
public void withdraw(double amount) {
if (amount <= balance) {
balance -= amount;
System.out.println("Withdrew ₹" + amount);
} else {
System.out.println("Insufficient funds.");
}
}
@Override
public void showBalance() {
System.out.println("Current Balance: ₹" + balance);
}
}
package BankingApp;
public class Transaction {
public void log(String action, double amount) {
System.out.println("Transaction Log: " + action + " ₹" + amount);
}
}
package BankingApp;
public class BankTest {
public static void main(String[] args) {
// Polymorphic reference
BankingService account = new Account();
Transaction txn = new Transaction();
// TC1: Deposit ₹1000 → Balance = ₹1000
System.out.println("TC1: Deposit ₹1000");
account.deposit(1000);
account.showBalance();
// TC2: Withdraw ₹500 → Balance = ₹500
System.out.println("\nTC2: Withdraw ₹500");
account.withdraw(500);
account.showBalance();
// TC3: Withdraw ₹1500 → Insufficient funds
System.out.println("\nTC3: Withdraw ₹1500");
account.withdraw(1500);
// TC4: Deposit negative amount → Invalid
System.out.println("\nTC4: Deposit -200");
account.deposit(-200);
// TC5: Log transactions
System.out.println("\nTC5: Log transaction");
txn.log("Deposit", 1000);
txn.log("Withdraw", 500);
}
}
output:
TC1: Deposit ₹1000
Deposited ₹1000.0
Current Balance: ₹1000.0
TC2: Withdraw ₹500
Withdrew ₹500.0
Current Balance: ₹500.0
TC3: Withdraw ₹1500
Insufficient funds.
TC4: Deposit -200
Invalid deposit amount.
TC5: Log transaction
Transaction Log: Deposit ₹1000.0
Transaction Log: Withdraw ₹500.0
MCQs:
1. c) Collection of abstract methods
2. a) interface
3. b) No
4. c) implements
6. b) Yes
DivisionByZeroHandler.java
import java.util.Scanner;
public class DivisionByZeroHandler {
public static void safeDivide(int numerator, int denominator) {
try {
int result = numerator / denominator;
System.out.println("Output: " + result);
} catch (ArithmeticException e) {
System.out.println("Output: Exception handled");
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("TC1: 10 / 2 → ");
safeDivide(10, 2);
System.out.print("TC2: 20 / 0 → ");
safeDivide(20, 0);
System.out.print("TC3: -5 / 5 → ");
safeDivide(-5, 5);
System.out.print("TC4: 0 / 3 → ");
safeDivide(0, 3);
System.out.print("TC5: 100 / -10 → ");
safeDivide(100, -10);
scanner.close();
}
}
Output:
TC1: 10 / 2 → Output: 5
TC2: 20 / 0 → Output: Exception handled
TC3: -5 / 5 → Output: -1
TC4: 0 / 3 → Output: 0
TC5: 100 / -10 → Output: -10
MCQ’s
1. d
2. c
3. c
4. b
5. c
6. b
7. c
8. b
9. b
10. b
Racer.java
package multithreading;
public class Racer extends Thread {
private String name;
private int steps;
private long sleepMillis;
public Racer(String name, int steps, long sleepMillis) {
this.name = name;
this.steps = steps;
this.sleepMillis = sleepMillis;
}
@Override
public void run() {
for (int i = 1; i <= steps; i++) {
System.out.printf("%s: Step %d/%d%n", name, i, steps);
try {
Thread.sleep(sleepMillis);
} catch (InterruptedException e) {
System.out.println(name + " was interrupted.");
return;
}
}
System.out.println(name + " has finished!");
}
}
RaceSimulation.java
package multithreading;
public class RaceSimulation {
public static void main(String[] args) throws InterruptedException {
System.out.println("=== TC1: Two threads start together ===");
Racer r1 = new Racer("Runner-A", 5, 500);
Racer r2 = new Racer("Runner-B", 5, 500);
r1.start();
r2.start();
r1.join(); r2.join();
System.out.println("\n=== TC2: Different sleep times (B faster) ===");
r1 = new Racer("Runner-A", 5, 700);
r2 = new Racer("Runner-B", 5, 300);
r1.start();
r2.start();
r1.join(); r2.join();
System.out.println("\n=== TC3: Race between A and B (non-deterministic)
===");
r1 = new Racer("Runner-A", 5, 400);
r2 = new Racer("Runner-B", 5, 450);
r1.start();
r2.start();
r1.join(); r2.join();
System.out.println("\n=== TC4: Three-thread race ===");
Racer r3 = new Racer("Runner-C", 5, 500);
r1 = new Racer("Runner-A", 5, 500);
r2 = new Racer("Runner-B", 5, 500);
r1.start();
r2.start();
r3.start();
r1.join(); r2.join(); r3.join();
System.out.println("\n=== TC5: Same sleep times, interleaved output
===");
r1 = new Racer("Runner-A", 5, 500);
r2 = new Racer("Runner-B", 5, 500);
r1.start();
r2.start();
r1.join(); r2.join();
}
}
Output:
MCQ’s
1. b) start()
5. c) run()
7. b) Runnable
8. b) Yes
9. c) Concurrency
10. d) Varies
1. TreeNode.java
package tree;
public class TreeNode<T extends Comparable<T>> {
T data;
TreeNode<T> left, right;
public TreeNode(T data) {
this.data = data;
this.left = null;
this.right = null;
}
}
2. BinaryTree.java
package tree;
import java.util.LinkedList;
import java.util.Queue;
public class BinaryTree<T extends Comparable<T>> {
private TreeNode<T> root;
// Insert method
public void insert(T data) {
root = insertRec(root, data);
}
private TreeNode<T> insertRec(TreeNode<T> node, T data) {
if (node == null) return new TreeNode<>(data);
if (data.compareTo(node.data) < 0)
node.left = insertRec(node.left, data);
else
node.right = insertRec(node.right, data);
return node;
}
// DFS: In-Order
public void inOrder() {
inOrderRec(root);
System.out.println();
}
private void inOrderRec(TreeNode<T> node) {
if (node != null) {
inOrderRec(node.left);
System.out.print(node.data + " ");
inOrderRec(node.right);
}
}
// DFS: Pre-Order
public void preOrder() {
preOrderRec(root);
System.out.println();
}
private void preOrderRec(TreeNode<T> node) {
if (node != null) {
System.out.print(node.data + " ");
preOrderRec(node.left);
preOrderRec(node.right);
}
}
// DFS: Post-Order
public void postOrder() {
postOrderRec(root);
System.out.println();
}
private void postOrderRec(TreeNode<T> node) {
if (node != null) {
postOrderRec(node.left);
postOrderRec(node.right);
System.out.print(node.data + " ");
}
}
// BFS: Level Order
public void levelOrder() {
if (root == null) return;
Queue<TreeNode<T>> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode<T> node = queue.poll();
System.out.print(node.data + " ");
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
}
System.out.println();
}
}
3. BinaryTreeTest.java
package tree;
public class BinaryTreeTest {
public static void main(String[] args) {
BinaryTree<Integer> tree = new BinaryTree<>();
// Test Case 1: Insert 10, 5, 20
tree.insert(10);
tree.insert(5);
tree.insert(20);
System.out.print("Level Order (BFS): ");
tree.levelOrder(); // Expected: 10 5 20
System.out.print("In-Order (DFS): ");
tree.inOrder(); // Expected: 5 10 20
System.out.print("Pre-Order (DFS): ");
tree.preOrder(); // Expected: 10 5 20
System.out.print("Post-Order (DFS): ");
tree.postOrder(); // Expected: 5 20 10
}
}
Output:
MCQ’s:
1. b
2. c
3. b
4. b
5. a
6. a
7. d
8. c
9. a
10. b
// Save as Client.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String serverAddress = "localhost"; // or use IP address
int port = 12345;
try (Socket socket = new Socket(serverAddress, port)) {
System.out.println("Connected to server.");
// Send message
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello from client!");
// Receive reply
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String reply = in.readLine();
System.out.println("Server replies: " + reply);
} catch (IOException e) {
System.out.println("Client error: " + e.getMessage());
}
}
}
// Save as Server.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 12345;
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server started. Waiting for client...");
while (true) {
Socket socket = serverSocket.accept(); // Waits for client
System.out.println("Client connected.");
// Input from client
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientMessage = in.readLine();
System.out.println("Client says: " + clientMessage);
// Output to client
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Server received: " + clientMessage);
// Close connection
socket.close();
System.out.println("Connection closed.\n");
}
} catch (IOException e) {
System.out.println("Server error: " + e.getMessage());
}
}
}
Output:
Connected to server.
Server replies: Server received: Hello from client!
Right-click inside the console window ➝ click "Terminate and Remove Launch".
TC2: Server not running → Output: Connection refused(Run the client program first)
TC3: Client sends message → Server receives correctly(Run Server.java then run Client.java)
Client.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String serverAddress = "localhost"; // or use IP address
int port = 12345;
try (Socket socket = new Socket(serverAddress, port)) {
System.out.println("Connected to server.");
// Send message
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hello from client!");
// Receive reply
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String reply = in.readLine();
System.out.println("Server replies: " + reply);
} catch (IOException e) {
System.out.println("Client error: " + e.getMessage());
}
}
}
Server.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 12345;
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server started. Waiting for client...");
while (true) {
Socket socket = serverSocket.accept(); // Waits for client
System.out.println("Client connected.");
// Input from client
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientMessage = in.readLine();
System.out.println("Client says: " + clientMessage);
// Output to client
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Server received: " + clientMessage);
// Close connection
socket.close();
System.out.println("Connection closed.\n");
}
} catch (IOException e) {
System.out.println("Server error: " + e.getMessage());
}
}
}
output:
Client.java
Conclusion:
Typed "Welcome" in client Server printed "Client says: Server received the message
Welcome" correctly
—-------------------------------------------------------------------------------------------------------------------------------
Client.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 12345);
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // to read
server reply
System.out.println("Connected to server. Type message:");
String msg;
while (!(msg = userInput.readLine()).equalsIgnoreCase("exit")) {
out.println(msg);
String reply = in.readLine(); // read server reply
System.out.println(reply);
}
out.println("exit");
socket.close();
System.out.println("Client exited.");
}
}
Server.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(12345);
System.out.println("Server started. Waiting for client...");
Socket clientSocket = server.accept();
System.out.println("Client connected.");
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); // enable auto-flush
String msg;
while ((msg = in.readLine()) != null) {
System.out.println("Client says: " + msg);
out.println("Server reply: Received your message -> " + msg); // send reply to client
if (msg.equalsIgnoreCase("exit")) break;
}
clientSocket.close();
server.close();
System.out.println("Server stopped.");
}
}
Output:
—---------------------------------------------------------------------------------------------------------------------
TC5: Multiple clients → Server handles sequentially
Client.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 12345);
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("Connected to server. Type message:");
String msg;
while (!(msg = userInput.readLine()).equalsIgnoreCase("exit")) {
out.println(msg);
System.out.println(in.readLine());
}
out.println("exit");
socket.close();
System.out.println("Client exited.");
}
}
Server.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(12345);
System.out.println("Server started. Waiting for clients...");
while (true) {
Socket clientSocket = server.accept();
System.out.println("Client connected.");
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String msg;
while ((msg = in.readLine()) != null) {
System.out.println("Client says: " + msg);
out.println("Server reply: Received -> " + msg);
if (msg.equalsIgnoreCase("exit")) break;
}
clientSocket.close();
System.out.println("Client disconnected.\n");
}
}
}
Output:
—---------------------------------------------------------------------------------------------------------------------------------
All test cases in one program:
Client.java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
String serverAddress = "localhost";
int port = 12345;
try (Socket socket = new Socket(serverAddress, port)) {
System.out.println("TC1: Connected to server.");
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.print("Enter a message: ");
String message = console.readLine();
// TC3: Send message
out.println(message);
// TC4: Receive reply
String reply = in.readLine();
System.out.println("TC4: Server replied → " + reply);
} catch (ConnectException e) {
System.out.println("TC2: Connection refused. Is the server running?");
} catch (IOException e) {
System.out.println("Client error: " + e.getMessage());
}
}
}
Server.java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
int port = 12345;
System.out.println("Server starting on port " + port);
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("TC1: Server is online and listening...");
while (true) {
Socket clientSocket = serverSocket.accept(); // TC1
System.out.println("Client connected."); // TC1
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// TC3: Receive message from client
String clientMsg = in.readLine();
System.out.println("TC3: Received from client → " + clientMsg);
// TC4: Send back reply
String reply = "Server reply: " + clientMsg;
out.println(reply);
System.out.println("TC4: Sent to client → " + reply);
clientSocket.close();
System.out.println("Connection closed.\n"); // TC5: Server ready for next client
}
} catch (IOException e) {
System.out.println("Server error: " + e.getMessage());
}
}
}
Output:
Server.java
Client.java
MCQ’s:
1. c) java.net
2. b) ServerSocket
3. c) accept()
4. a) 0 to 65535
5. a) IOException
6. d) close()
7. a) 127.0.0.1
9. c) TCP
10. b) InputStream
—---—----------------------------------------------------------------------------------------------------------------------
Mysql
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
SHOW DATABASES;
CREATE DATABASE employees;
USE employees;
JDBCTest.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCTest {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/employees?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "12345";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("Connected");
conn.close();
} catch (ClassNotFoundException e) {
System.out.println("Driver not found");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("Connection failed: " + e.getMessage());
}
}
}
Output:
TC1: Connect to DB successfully → Output: Connected
Connected
Alltest.java
import java.sql.*;
public class AllTest{
public static void main(String[] args) {
// Step 1: Load JDBC driver
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("Step 1: JDBC Driver Loaded.");
} catch (ClassNotFoundException e) {
System.out.println("Driver not found.");
return;
}
// Connection parameters
String url = "jdbc:mysql://localhost:3306/employees?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "12345";
// TC1: Connect to DB successfully
try (
Connection conn = DriverManager.getConnection(url, user, password); // Step 2
Statement stmt = conn.createStatement(); // Step 3
){
System.out.println("TC1: Connected to database. (Step 2)");
// TC2: Execute SELECT query
String sql = "SELECT * FROM employees";
ResultSet rs = stmt.executeQuery(sql); // Step 4
System.out.println("TC2: SELECT query executed. (Step 4)");
// Step 5: Display result
boolean found = false;
System.out.println("TC2: Displaying results:");
while (rs.next()) {
found = true;
int id = rs.getInt("emp_id");
String name = rs.getString("emp_name");
double salary = rs.getDouble("emp_salary");
System.out.println(id + " | " + name + " | " + salary);
}
if (!found) {
System.out.println("TC4: No results found.");
} else {
System.out.println("TC2: Records displayed. (Step 5)");
}
rs.close();
} catch (SQLException e) {
System.out.println("TC1 or TC2 Failed: " + e.getMessage());
}
// TC3: Invalid credentials
try {
Connection connWrong = DriverManager.getConnection(url, user, "wrongpassword");
System.out.println("TC3: Unexpected success with wrong password!");
connWrong.close();
} catch (SQLException e) {
System.out.println("TC3: Access denied (invalid credentials).");
}
// TC4: Empty query (no matching results)
try (
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
){
ResultSet rs = stmt.executeQuery("SELECT * FROM employees WHERE emp_id = -1");
if (!rs.next()) {
System.out.println("TC4: No results as expected (empty query).");
} else {
System.out.println("TC4: Unexpected data found.");
}
rs.close();
} catch (SQLException e) {
System.out.println("TC4 Failed: " + e.getMessage());
}
// TC5: Malformed SQL
try (
Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
){
stmt.executeQuery("SELEC * FORM employees"); // Intentional error
} catch (SQLException e) {
System.out.println("TC5: SQLSyntaxErrorException caught for malformed query.");
}
}
}
Output:
Step 1: JDBC Driver Loaded.
TC1: Connected to database. (Step 2)
TC2: SELECT query executed. (Step 4)
TC2: Displaying results:
1 | Alice | 50000.0
2 | Bob | 60000.0
3 | Charlie | 55000.0
TC2: Records displayed. (Step 5)
TC3: Access denied (invalid credentials).
TC4: No results as expected (empty query).
TC5: SQLSyntaxErrorException caught for malformed query.
—-------------------------------------------------
MCQ’s:
1. a) java.sql
2. c) DriverManager
3. c) executeQuery()
4. b) ResultSet
6. c) PreparedStatement
7. d) com.mysql.cj.jdbc.Driver
8. a) SQLException
9. b) 3306
10. c) close()
—----------------------------------------------------------
MultiThreadedServerInterface.java
import java.rmi.Remote;
import java.rmi.RemoteException;
—-----------------------------------------------------------------------------------------------
MultiThreadedServerImpl.java
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
@Override
public String processRequest(String request) throws RemoteException {
String threadName = Thread.currentThread().getName();
System.out.println("Processing request in thread: " + threadName);
return "Processed: " + request + " by thread " + threadName;
}
}
—--------------------------------------------------------------------------------------
MultiThreadedServer.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
System.out.println("Server ready...");
} catch (Exception e) {
System.err.println("Server exception:");
e.printStackTrace();
}
}
}
—-------------------------------------------------------------------------------------------
TestClient.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class TestClient {
public static void main(String[] args) {
System.out.println("=== TC1: Start server, connect client → Success ===");
boolean tc1 = testConnection();
System.out.println("TC1 Result: " + (tc1 ? "Success" : "Fail") + "\n");
System.out.println("=== TC2: Client sends request → Server responds ===");
testRequestResponse();
System.out.println();
System.out.println("=== TC3: Multiple clients → Handled via threads ===");
testMultipleClients();
System.out.println();
System.out.println("=== TC4: Server not running → Lookup fails ===");
System.out.println("Please STOP the server and press Enter to continue...");
try { System.in.read(); } catch (Exception ignored) {}
testLookupFailWhenServerDown();
System.out.println();
System.out.println("=== TC5: Invalid method call → RemoteException ===");
testInvalidLookup();
System.out.println();
}
static boolean testConnection() {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
registry.lookup("MultiThreadedServer");
return true;
} catch (Exception e) {
System.err.println("TC1 Exception:");
e.printStackTrace();
return false;
}
}
static void testRequestResponse() {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
MultiThreadedServerInterface stub = (MultiThreadedServerInterface)
registry.lookup("MultiThreadedServer");
String response = stub.processRequest("Hello TC2");
System.out.println("TC2 Server response: " + response);
} catch (Exception e) {
System.err.println("TC2 Exception:");
e.printStackTrace();
}
}
static void testMultipleClients() {
final int clients = 5;
Thread[] threads = new Thread[clients];
for (int i = 0; i < clients; i++) {
final int id = i + 1;
threads[i] = new Thread(() -> {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
MultiThreadedServerInterface stub = (MultiThreadedServerInterface)
registry.lookup("MultiThreadedServer");
String response = stub.processRequest("Request from client " + id);
System.out.println("TC3 Client " + id + " received: " + response);
} catch (Exception e) {
System.err.println("TC3 Client " + id + " Exception:");
e.printStackTrace();
}
});
threads[i].start();
}
for (Thread t : threads) {
try {
t.join();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
static void testLookupFailWhenServerDown() {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
registry.lookup("MultiThreadedServer"); // Expected to fail if server is down
System.err.println("TC4 Unexpected success: server lookup succeeded when server should be down!");
} catch (Exception e) {
System.out.println("TC4 Expected failure (server not running):");
e.printStackTrace();
}
}
static void testInvalidLookup() {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
registry.lookup("InvalidServerName"); // Expected to throw NotBoundException
System.err.println("TC5 Unexpected success: invalid lookup succeeded!");
} catch (Exception e) {
System.out.println("TC5 Expected failure (invalid lookup):");
e.printStackTrace();
}
}
}
Output:
MultiThreadedServer.java
Test case 5:
TC5.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class TC5 {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
System.out.println("Trying to lookup invalid server name...");
registry.lookup("InvalidServerName"); // This does NOT exist
System.out.println("ERROR: Lookup succeeded unexpectedly!");
} catch (Exception e) {
System.out.println("TC5 Expected failure (invalid lookup):");
e.printStackTrace();
}
}
}
Output:
Trying to lookup invalid server name...
TC5 Expected failure (invalid lookup):
java.rmi.NotBoundException: InvalidServerName
at java.rmi/sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:237)
at java.rmi/sun.rmi.registry.RegistryImpl_Skel.dispatch(RegistryImpl_Skel.java:133)
at java.rmi/sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:470)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:299)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)
at
java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1575)
at
java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:304)
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:280)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:382)
at java.rmi/sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:123)
at TC5.main(TC5.java:9)
MCQ’s:
2. a) java.rmi
3. b) bind()
4. b) LocateRegistry
5. c) RemoteException
7. c) Remote
8. c) lookup()
9. b) Yes
10. c) rmiregistry
13. Program Title: GUI for Temperature Conversion
TemperatureConverter.java
import javax.swing.*;
import java.awt.event.*;
public class TemperatureConverter extends JFrame {
private JTextField inputField; // Input field for temperature value
private JButton toCelsiusBtn; // Button to convert to Celsius
private JButton toFahrenheitBtn; // Button to convert to Fahrenheit
private JLabel resultLabel; // Label to show result or error messages
public TemperatureConverter() {
setTitle("Temperature Converter");
setSize(320, 160);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
JLabel inputLabel = new JLabel("Enter Temperature:");
inputLabel.setBounds(10, 10, 130, 25);
add(inputLabel);
inputField = new JTextField();
inputField.setBounds(140, 10, 150, 25);
add(inputField);
toCelsiusBtn = new JButton("Convert to Celsius");
toCelsiusBtn.setBounds(10, 50, 140, 30);
add(toCelsiusBtn);
toFahrenheitBtn = new JButton("Convert to Fahrenheit");
toFahrenheitBtn.setBounds(160, 50, 140, 30);
add(toFahrenheitBtn);
resultLabel = new JLabel("Result: ");
resultLabel.setBounds(10, 90, 290, 25);
add(resultLabel);
// Add button listeners
toCelsiusBtn.addActionListener(e -> convertToCelsius());
toFahrenheitBtn.addActionListener(e -> convertToFahrenheit());
}
// Convert Fahrenheit to Celsius
private void convertToCelsius() {
String input = inputField.getText().trim();
// TC4: Blank input → show error
if (input.isEmpty()) {
resultLabel.setText("Error: Input cannot be blank.");
return;
}
try {
double f = Double.parseDouble(input); // Try to parse input number
// TC1: Input 100°F → Output 37.78°C handled here
double c = (f - 32) * 5 / 9; // Convert F to C
resultLabel.setText(String.format("Result: %.2f °C", c));
} catch (NumberFormatException ex) {
// TC5: Invalid input like "abc"
resultLabel.setText("Invalid input! Please enter a number.");
}
}
// Convert Celsius to Fahrenheit
private void convertToFahrenheit() {
String input = inputField.getText().trim();
// TC4: Blank input → show error
if (input.isEmpty()) {
resultLabel.setText("Error: Input cannot be blank.");
return;
}
try {
double c = Double.parseDouble(input); // Parse input number
// TC2: Input 0°C → Output 32°F handled here
// TC3: Input -40°C → Output -40°F handled here
double f = (c * 9 / 5) + 32; // Convert C to F
resultLabel.setText(String.format("Result: %.2f °F", f));
} catch (NumberFormatException ex) {
// TC5: Invalid input like "abc"
resultLabel.setText("Invalid input! Please enter a number.");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new TemperatureConverter().setVisible(true);
});
}
}
Output:
Test case 1:
Test case 2:
Test Case 3:
Test Case 4:
Test Case 5:
Output:
1. a) java.awt
2. b) JButton
3. c) GridLayout
4. c) ActionEvent
5. c) add()
6. c) getText()
7. b) Celsius
9. c) LayoutManager
Click Finish.
Browse to the lib folder inside your extracted JavaFX SDK directory (e.g., C:\javafx-sdk-20\lib).
Select all JAR files in that folder → Click Open → Then Apply and Close.
In the Arguments tab, in the VM arguments box, paste this (adjust path to your JavaFX SDK lib folder):
bash
Copy
Edit
--module-path "C:\javafx-sdk-20\lib" --add-modules javafx.controls,javafx.media
(Use double quotes if your path contains spaces.)
Use Load Media button to pick a media file and test play/pause/stop.
BasicMediaPlayer.java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.media.*;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import javafx.util.Duration;
import java.io.File;
public class BasicMediaPlayer extends Application {
private MediaPlayer mediaPlayer;
private Label statusLabel = new Label("No media loaded.");
@Override
public void start(Stage primaryStage) {
// Buttons for control
Button loadButton = new Button("Load Media");
Button playButton = new Button("Play");
Button pauseButton = new Button("Pause");
Button stopButton = new Button("Stop");
// Initially disable play, pause, and stop buttons
playButton.setDisable(true);
pauseButton.setDisable(true);
stopButton.setDisable(true);
// Load media file (used for TC4 and TC5 handling)
loadButton.setOnAction(e -> {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Choose Media File");
File file = fileChooser.showOpenDialog(primaryStage);
if (file != null) {
try {
if (mediaPlayer != null) {
mediaPlayer.dispose(); // Clean up old media player
}
// Load media - handles TC5 (MediaException if unsupported format)
Media media = new Media(file.toURI().toString());
mediaPlayer = new MediaPlayer(media);
// Enable control buttons
playButton.setDisable(false);
pauseButton.setDisable(false);
stopButton.setDisable(false);
statusLabel.setText("Media loaded: " + file.getName());
// Media events
mediaPlayer.setOnPlaying(() -> statusLabel.setText("Playing")); // TC1
mediaPlayer.setOnPaused(() -> statusLabel.setText("Paused")); // TC2
mediaPlayer.setOnStopped(() -> statusLabel.setText("Stopped")); // TC3
mediaPlayer.setOnEndOfMedia(() -> {
mediaPlayer.stop();
statusLabel.setText("Playback finished");
});
mediaPlayer.setOnError(() ->
statusLabel.setText("Error: " + mediaPlayer.getError().getMessage())
);
} catch (MediaException ex) {
// TC5: Invalid or unsupported media format
statusLabel.setText("Unsupported media format.");
playButton.setDisable(true);
pauseButton.setDisable(true);
stopButton.setDisable(true);
}
} else {
// TC4: No file selected
statusLabel.setText("No file loaded.");
}
});
// TC1: Play
playButton.setOnAction(e -> {
if (mediaPlayer != null) {
mediaPlayer.play();
} else {
statusLabel.setText("Error: Load a media file first."); // TC4 fallback
}
});
// TC2: Pause
pauseButton.setOnAction(e -> {
if (mediaPlayer != null) {
mediaPlayer.pause();
}
});
// TC3: Stop and reset
stopButton.setOnAction(e -> {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.seek(Duration.ZERO); // Reset to beginning
}
});
// Layout setup
HBox controls = new HBox(10, loadButton, playButton, pauseButton, stopButton);
VBox root = new VBox(10, controls, statusLabel);
root.setStyle("-fx-padding: 20; -fx-alignment: center;");
Scene scene = new Scene(root, 420, 140);
primaryStage.setTitle("JavaFX Media Player");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
MCQ’s:
1. b) Media
2. c) MediaPlayer
5. c) play()
6. c) start(Stage)
8. a) MediaException
9. c) Stage
RealTimeChartApp.java
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Duration;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import java.util.Random;
public class RealTimeChartApp extends Application {
private XYChart.Series<Number, Number> series;
private int xValue = 0;
private Timeline timeline;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Real-time Data Visualization");
// Step 2: Create axes and LineChart
NumberAxis xAxis = new NumberAxis();
xAxis.setLabel("Time (seconds)");
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Value");
LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
lineChart.setTitle("Real-time Line Chart");
// Initialize series and add to chart
series = new XYChart.Series<>();
series.setName("Random Data");
lineChart.getData().add(series);
// Buttons to start/stop updates
Button startBtn = new Button("Start");
Button stopBtn = new Button("Stop");
// Step 3 & 4: Simulate data and update chart every second
timeline = new Timeline(new KeyFrame(Duration.seconds(1), e -> addData()));
timeline.setCycleCount(Timeline.INDEFINITE);
startBtn.setOnAction(e -> timeline.play());
stopBtn.setOnAction(e -> timeline.pause());
VBox vbox = new VBox(10, lineChart, startBtn, stopBtn);
Scene scene = new Scene(vbox, 800, 600);
primaryStage.setScene(scene);
primaryStage.show();
// TC1: App starts with empty chart (series empty)
}
private void addData() {
// Step 5: Handle non-numeric gracefully by simulating only numeric values here
try {
Random random = new Random();
double yValue = 10 + random.nextDouble() * 90; // Range 10-100
// TC4: Chart scales automatically as NumberAxis does by default
Platform.runLater(() -> series.getData().add(new XYChart.Data<>(xValue++, yValue)));
// Limit points to keep chart readable
if (series.getData().size() > 30) {
Platform.runLater(() -> series.getData().remove(0));
}
} catch (Exception ex) {
System.err.println("Error adding data: " + ex.getMessage());
}
}
public static void main(String[] args) {
launch(args);
}
}
TC1: App starts → Chart displays empty
TC2: Data added every second → Graph updates in real-time
TC3: Stop updates → Graph freezes
TC4: Data out of range → Chart scales accordingly
1. c) LineChart
2. b) Chart
3. c) Timeline
4. b) XYChart.Series
6. d) Timeline
7. a) Strings
8. a) setData()
10. c) BorderPane