LAB MANUAL ... DEPARTMENT OF COMPUTER SCIENCE AND ... Write a multi-
threaded Java program to print all numbers below 100,000 that are both.
SURYA GROUP OF INSTITUTIONS SCHOOL OF ENGINEERING AND TECHNOLOGY VIKIRAVANDI-605602
CS2309 JAVA LAB LAB MANUAL
III YEAR B.E (COMPUTER SCIENCE AND ENGINEERING)
Prepared by S.VARADHARAJAN ASSISTANT PROFESSOR
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
1
CS2309
JAVA LAB
LTPC 0032
1. Develop Rational number class in Java. Use JavaDoc comments for documentation. Your implementation should use efficient representation for a rational number, i.e. (500 / 1000) should be represented as (½). 2. Develop Date class in Java similar to the one available in java.util package. Use JavaDoc comments. 3. Implement Lisp-like list in Java. Write basic operations such as 'car', 'cdr', and 'cons'. If L is a list [3, 0, 2, 5], L.car () returns 3, while L.cdr () returns [0, 2, 5]. 4. Design a Java interface for ADT Stack. Develop two different classes that implement this interface, one using array and the other using linked-list. Provide necessary exception handling in both the implementations. 5. Design a Vehicle class hierarchy in Java. Write a test program to demonstrate polymorphism. 6. Design classes for Currency, Rupee, and Dollar. Write a program that randomly generates Rupee and Dollar objects and write them into a file using object serialization. Write another program to read that file, convert to Rupee if it reads a Dollar, while leave the value as it is if it reads a Rupee. 7. Design a scientific calculator using event-driven programming paradigm of Java. 8. Write a multi-threaded Java program to print all numbers below 100,000 that are both prime and fibonacci number (some examples are 2, 3, 5, 13, etc.). Design a thread that generates prime numbers below 100,000 and writes them into a pipe. Design another thread that generates fibonacci numbers and writes them to another pipe. The main thread should read both the pipes to identify numbers common to both. 9. Develop a simple OPAC system for library using even-driven and concurrent programming paradigms of Java. Use JDBC to connect to a back-end database. 10. Develop multi-threaded echo server and a corresponding GUI client in Java. 11. [Mini-Project] Develop a programmer's editor in Java that supports syntax highlighting, compilation support, debugging support, etc. TOTAL= 45
PERIODS
2
REQUIREMENTS
HARDWARE:
Pentium IV with 2 GB RAM, 160 GB HARD Disk, Monitor 1024 x 768 colour 60 Hz. 30 Nodes
SOFTWARE:
Windows /Linux operating system JDK 1.6(or above) 30 user license
3
TABLE OF CONTENTS LIST OF EXPERIMENTS
1
Rational number
2
Date class in Java
3
Implement Lisp-like list in Java.
4
Java interface for ADT Stack using array and the sing linkedlist.
5
Polymorphism
6
object serialization
7
scientific calculator Multi-threaded Java program
8
Fibonacci number (some examples are 2, 3, 5, 13, etc.). prime numbers below 100,000 and writes them into a pipe Main thread should read both the pipes.
9
A Simple OPAC system for library
10
Multi-threaded echo server GUI client.
11
[Mini-Project] programmer’s editor.
4
Ex No1:
Rational Numbers
AIM To write a Java Program to develop a class for Rational numbers.
ALGORITHM:
Step 1:-Declare a class called Rational and invoke a function called gcd(a,b). Step 2:-Find out the reminder when a is divided by b and pass it as a parameter to the function. Step 3:-Create an object for the class and declare the required string and integer variables. Step 4:-Create an object of class DataInputStream .Read the numbers through the ReadLine() method into the object. Step 5:-Convert the input accepted into Integers through the parseInt method and store them in variables a and b. Step 6:-store the value returned by the function GCD in variable l. Step 7:-Divide a by l and b by l and store them in variables x and y.
Program:-
import java.io.*; class rational1 { public rational1(){}
public long gcd(long a,long b) { if(b==0) return a; else return gcd(b,a%b); } } public class rational 5
{ public static void main(String args[])throws IOException { /** * create and initialize a new Rational object */ rational1 r=new rational1(); /** * The Numerator and Denominator part of Rational */ long a,b,x,y; String str; DataInputStream in= new DataInputStream(System.in); System.out.println("Enter the value for A"); str=in.readLine(); a=Integer.parseInt(str); System.out.println("Enter the value for B"); str=in.readLine(); b=Integer.parseInt(str);
long l=r.gcd(a,b); System.out.println(); System.out.println("The GCD of the number is:"+l); x=a/l; y=b/l; System.out.println(); System.out.println("The resultant value is: "+x+"/"+y); } }
6
Output
Enter the value for A 500 Enter the value for B 1000
The GCD of the number is:500
The resultant value is: 1/2
Result Thus the above program was executed and verified successfully.
7
Ex No 2:
Date Class in Java
AIM To design a Date class in Java.
ALGORITHM:Step 1: Declare a class called Date example and create an object called date. Step 2:- Display the Date and Time through these objects with the Methods in Date Class. Step 3:- Declare two objects called start time and end time for this class . Step 4:- Create another object called changed object and display the changed time with the calculation Step 5:- In the main function create object for the class Date and display the time and date accordingly.
8
SOURCE CODE
import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFormat; public class DateExample { private static void DateExample() { Date date = new Date(); System.out.println("Current Date and Time is : " + date); System.out.println(); System.out.println("Date object showing specific date and time"); Date particulardate1 = new Date(2000,3,12); Date particulardate2 = new Date(2000,4,12,9,10); System.out.println(); System.out.println("First Particular date : " + particulardate1); System.out.println("Second Particular date: " + particulardate2); System.out.println(); System.out.println("Demo of getTime() method returning milliseconds"); System.out.println(); Date strtime = new Date(); System.out.println("Start Time: " + strtime); Date endtime = new Date(); System.out.println("End Time is: " + endtime); long elapsed_time = endtime.getTime() - strtime.getTime(); System.out.println("Elapsed Time is:" + elapsed_time + "milliseconds"); System.out.println(); System.out.println("Changed date object using setTime() method"); System.out.println(); Date chngdate = new Date(); System.out.println("Date before change is: " + chngdate); chngdate.setHours(12); System.out.println("Now the Changed date is: " + chngdate); System.out.println(); } 9
public static void main(String[] args) { System.out.println(); DateExample(); } }
OUTPUT
D:\java>java DateExample
Current Date and Time is : Thu May 05 09:56:18 IST 2011
Date object showing specific date and time
First Particular date : Thu Apr 12 00:00:00 IST 3900 Second Particular date: Sat May 12 09:10:00 IST 3900
Demo of getTime() method returning milliseconds
Start Time: Thu May 05 09:56:18 IST 2011 End Time is: Thu May 05 09:56:18 IST 2011 Elapsed Time is:0 milliseconds
Changed date object using setHours() method
Date before change is: Thu May 05 09:56:18 IST 2011 Now the Changed date is: Thu May 05 12:56:18 IST 2011
Result Thus the above program was executed and verified successfully.
10
3.Implement Lisp-like list in Java.
Aim: To Implement basic operations such as 'car', 'cdr', and 'cons' using Lisp-like list in Java. If L is a list [3, 0, 2, 5], L.car() returns 3, while L.cdr() returns [0,2,5]
Procedure:
11
Program: import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.StringTokenizer;
import java.util.logging.Logger;
public class LispCommands { private String[] tokenList;
private static Logger LOGGER = Logger.getLogger(LispCommands.class.getName());
public LispCommands() {
}
private void car() { LOGGER.info(tokenList[0]); }
private void cdr() { List list = Arrays.asList(tokenList); ArrayList slist = new ArrayList(list); slist.remove(0); display(slist); }
private void cons(String args) { List arrayList = new ArrayList(Arrays.asList(tokenList)); arrayList.add(args); Collections.reverse(arrayList); display(arrayList); 12
}
private void parse(String args) { ArrayList tokenList = new ArrayList(); if(args != null){ StringTokenizer tokens = new StringTokenizer(args,"[]"); while (tokens.hasMoreElements()) { StringTokenizer commaTokens = new StringTokenizer(tokens.nextToken(),","); while (commaTokens.hasMoreElements()) { String token = commaTokens.nextToken(); if(token != null && !token.trim().equals("")){
tokenList.add(token.trim()); } }
} } this.tokenList = tokenList.toArray(new String[0]);
}
private void display(Object result) { System.out.println(); if(result instanceof String){ LOGGER.info(result.toString()); } else if(result.getClass().getName().equals("java.util.ArrayList")){ LOGGER.info(result.toString()); } } public static void main(String[] args) { LispCommands L = new LispCommands(); L.parse("[3, 0, 2, 5]"); L.car(); 13
L.cdr(); L.cons("7"); }}
Output:
Result: Thus the above program was executed and verified successfully
14
Ex.No:4
Implementation of Stack ADT
AIM To write a Java Program to design an interface for Stack ADT.and implement Stack ADT using both Array and Linked List.
Procedure:
15
Program: public class ADTArray implements ADTStack { Object[] array; int index; public ADTArray() { this.array = new Object[128]; this.index = 0; } //@Override public Object pop() { index--; return array[index]; } //@Override public void push(Object item) { array[index] = item; index++; } public static void main(String[] args) { ADTStack stack = new ADTArray(); stack.push("Hi"); stack.push(new Integer(100)); System.out.println(stack.pop()); System.out.println(stack.pop()); } } public class ADTList implements ADTStack {
private StackElement top; private int count = 0;
public void push(Object obj) { StackElement stackElement = new StackElement(obj); stackElement.next = top; top = stackElement; count++; 16
} //@Override public Object pop() { if (top == null) return null; Object obj = top.value; top = top.next; count--; return obj; } class StackElement { Object value; StackElement next; public StackElement(Object obj) { value = obj; next = null; } } public static void main(String[] args) { ADTStack stack = new ADTList(); stack.push("Hi"); stack.push(new Integer(100)); System.out.println(stack.pop()); System.out.println(stack.pop()); } } public interface ADTStack { public void push (Object item); public Object pop (); }
17
Output:-
C:\>java ADTArray 100 Hi C:\>java ADTList 100 Hi C:\>java ADTStack Exception in thread “main” java.lang.NoSuchMethodError:main
Result: Thus the above program was executed and verified successfully.
18
Ex no: 5
Polymorphism
Aim:To develop a vehicle class hierarchy in Java to demonstrate the concept of polymorphism.
Algorithm:-
Step 1:-Declare a super class called vehicle with data elements doors,wheels and seats.
Step 2:-Derive another class called car and invoke a function tostring() to display the variables.
Step 3:-Derive another class called motorcycle with same data and method called setseats() .
Step 4:-Declare another sub class called Truck with 2 constructors and finally assign values to variables.
Step 5:-In the main function, create an object for class motorcycle and display all details of sub classes through object.
19
Sourcecode:-
//This is the class that will be inherited public class Vehicle { public int doors; public int seats; public int wheels; Vehicle() { wheels=4; doors=4; seats=4; } } //This class inherits Vehicle.java public class Car extends Vehicle { public String toString() { return "This car has "+seats+" Seats, "+doors+" Doors "+ "and "+wheels+" wheels."; } } //This class inherits Vehicle.java public class MotorCycle extends Vehicle { MotorCycle() { wheels=2; doors=0; seats=1; } 20
void setSeats(int num) { seats=num; } public String toString() { return "This motorcycle has "+seats+" Seats, "+doors+" Doors "+ "and "+wheels+" wheels."; } } //This class inherits Vehicle.java public class Truck extends Vehicle { boolean isPickup; Truck() { isPickup=true; } Truck(boolean aPickup) { this(); isPickup=aPickup; } Truck(int doors, int seats, int inWheels, boolean isPickup) { this.doors=doors; this.seats=seats; wheels=inWheels; this.isPickup=isPickup; } public String toString() { return "This "+(isPickup?"pickup":"truck")+ " has "+seats+" Seats, "+doors+" Doors "+"and "+wheels+" wheels."; 21
} } //This class tests the classes that inherit Vehicle.java public class VehiclesTest { public static void main(String args[]) { MotorCycle mine = new MotorCycle(); System.out.println(mine); Car mine2 = new Car(); System.out.println(mine2); mine2.doors=2; System.out.println(mine2); Truck mine3 = new Truck(); System.out.println(mine3); Truck mine4 = new Truck(false); mine4.doors=2; System.out.println(mine4);
} }
22
Output
This motorcycle has 1 Seats, 0 Doors and 2 wheels This car has 4 Seats, 4 Doors and 4 wheels This car has 4 Seats, 2 Doors and 4 wheels This pickup has 4 Seats, 4 Doors and 4 wheels This truck has 4 Seats, 2 Doors and 4 wheels
Result: Thus the above program was executed and verified successfully.
23
Ex No:-6
Object Serialization
Aim:-To write a Java Program to randomly generate objects and write them into a file using concept of Object Serialization.
Algorithm:-
Step 1:Declare a class called Currency .Open a file in output mode with a name.
Step 2:-Write new data into the object using writeobject() method.
Step 3:-Similarly create an input stream object .Read it both in terms of Dollars and Rupees.close the output object.
Step 4:-derive a class called Dollar which implements serializable interface.Invoke a constructor and function to display the data.
Step 5:Similarly declare a class called Rupee with private variables and use print function to display the variables.
Step 6: terminate the execution. The output is displayed as dollar to rupee conversion and vice versa.
Sourcecode:-
// Currency conversion import java.io.*; public class Currency { 24
public static void main(String args[]) { Dollar dr=new Dollar('$',40); dr.printDollar(); Rupee re=new Rupee("Rs.",50); re.printRupee(); try { File f=new File("rd.txt"); FileOutputStream fos=new FileOutputStream(f); ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(dr); oos.writeObject(re); oos.flush(); oos.close(); ObjectInputStream ois=new ObjectInputStream(new FileInputStream("rd.txt")); Dollar d1; d1=(Dollar)ois.readObject(); d1.printDollar(); Rupee r1; r1=(Rupee)ois.readObject(); r1.printRupee(); ois.close(); } catch(Exception e) { } }
} class Dollar implements Serializable { private float dol; private char sym; 25
public Dollar(char sm,float doll) { sym=sm; dol=doll; } void printDollar() { System.out.print(sym); System.out.println(dol); } } class Rupee implements Serializable { private String sym; private float rs; public Rupee(String sm,float rup) { sym=sm; rs=rup; } void printRupee() { System.out.print(sym); System.out.println(rs); } }
Output:-
26
E:\java>java Currency $40.0 Rs.50.0 $40.0 Rs.50.0
Result: Thus the above program was executed and verified successfully.
27
EX NO: 7
Scientific Calculator
AIM: To design a scientific calculator using event-driven programming paradigm of Java.
ALGORITHM: Step1: Define a class CalcFrame for creating a calculator frame and added windolistener to close the calculator Step2: create instance of object for View menu and various other objects Step3: add a listener to receive item events when the state of an item changes Step4: Define the methods for all operations of stientific calculator Step5::Get the input and display the result
PROGRAM /** Scientific calculator*/ import java.awt.*; import java.awt.event.*; // class CalcFrame for creating a calculator frame and added windolistener to // close the calculator class CalcFrame extends Frame { CalcFrame( String str) { // call to superclass super(str); // to close the calculator(Frame) addWindowListener(new WindowAdapter() { public void windowClosing (WindowEvent we) { System.exit(0); } }); } }
// main class Calculator implemnets two // interfaces ActionListener // and ItemListener public class Calculator implements ActionListener, ItemListener { // creating instances of objects 28
CalcFrame fr; TextField display; Button key[] = new Button[20]; // creates a button object array of 20 Button clearAll, clearEntry, round; Button scientificKey[] = new Button[10]; // creates a button array of 8 // declaring variables boolean addButtonPressed, subtractButtonPressed, multiplyButtonPressed; boolean divideButtonPressed, decimalPointPressed, powerButtonPressed; boolean roundButtonPressed = false; double initialNumber;// the first number for the two number operation double currentNumber = 0; // the number shown in the screen while it is being pressed int decimalPlaces = 0; // main function public static void main (String args[]) { // constructor Calculator calc = new Calculator(); calc.makeCalculator(); } public void makeCalculator() { // size of the button final int BWIDTH = 25; final int BHEIGHT = 25; int count =1; // create frame for the calculator fr = new CalcFrame("Scientific Calculator"); // set the size fr.setSize(300,350); fr.setBackground(Color.blue);; fr.setLayout(null); // set the initial numbers that is 1 to 9 for (int row = 0; row < 3; ++row) { for (int col = 0; col < 3; ++col) { // this will set the key from 1 to 9 key[count] = new Button(Integer.toString(count)); key[count].addActionListener(this); // set the boundry for the keys key[count].setBounds(30*(col + 1), 30*(row + 4),BWIDTH,BHEIGHT); key[count].setBackground(Color.yellow); // add to the frame fr.add(key[count++]); } } // Now create, addlistener and add to frame all other keys //0 key[0] = new Button("0"); key[0].addActionListener(this); key[0].setBounds(30,210,BWIDTH,BHEIGHT); 29
key[0].setBackground(Color.yellow); fr.add(key[0]); //decimal key[10] = new Button("."); key[10].addActionListener(this); key[10].setBounds(60,210,BWIDTH,BHEIGHT); key[10].setBackground(Color.yellow); fr.add(key[10]); //equals to key[11] = new Button("="); key[11].addActionListener(this); key[11].setBounds(90,210,BWIDTH,BHEIGHT); key[11].setBackground(Color.yellow); fr.add(key[11]); //multiply key[12] = new Button("*"); key[12].addActionListener(this); key[12].setBounds(120,120,BWIDTH,BHEIGHT); key[12].setBackground(Color.yellow); fr.add(key[12]); //divide key[13] = new Button("/"); key[13].addActionListener(this); key[13].setBounds(120,150,BWIDTH,BHEIGHT); key[13].setBackground(Color.yellow); fr.add(key[13]); //addition key[14] = new Button("+"); key[14].addActionListener(this); key[14].setBounds(120,180,BWIDTH,BHEIGHT); key[14].setBackground(Color.yellow); fr.add(key[14]); //subtract key[15] = new Button("-"); key[15].addActionListener(this); key[15].setBounds(120,210,BWIDTH,BHEIGHT); key[15].setBackground(Color.yellow); fr.add(key[15]); //reciprocal key[16] = new Button("1/x"); key[16].addActionListener(this); key[16].setBounds(150,120,BWIDTH,BHEIGHT); key[16].setBackground(Color.yellow); fr.add(key[16]); //power key[17] = new Button("x^n"); key[17].addActionListener(this); key[17].setBounds(150,150,BWIDTH,BHEIGHT); key[17].setBackground(Color.yellow); fr.add(key[17]); 30
//change sign key[18] = new Button("+/-"); key[18].addActionListener(this); key[18].setBounds(150,180,BWIDTH,BHEIGHT); key[18].setBackground(Color.yellow); fr.add(key[18]); //factorial key[19] = new Button("x!"); key[19].addActionListener(this); key[19].setBounds(150,210,BWIDTH,BHEIGHT); key[19].setBackground(Color.yellow); fr.add(key[19]); // CA clearAll = new Button("CA"); clearAll.addActionListener(this); clearAll.setBounds(30, 240, BWIDTH+20, BHEIGHT); clearAll.setBackground(Color.yellow); fr.add(clearAll); // CE clearEntry = new Button("CE"); clearEntry.addActionListener(this); clearEntry.setBounds(80, 240, BWIDTH+20, BHEIGHT); clearEntry.setBackground(Color.yellow); fr.add(clearEntry); // round round = new Button("Round"); round.addActionListener(this); round.setBounds(130, 240, BWIDTH+20, BHEIGHT); round.setBackground(Color.yellow); fr.add(round); // set display area display = new TextField("0"); display.setBounds(30,90,150,20); display.setBackground(Color.white);
// key for scientific calculator // Sine scientificKey[0] = new Button("Sin"); scientificKey[0].addActionListener(this); scientificKey[0].setBounds(180, 120, BWIDTH + 10, BHEIGHT); scientificKey[0].setVisible(true); scientificKey[0].setBackground(Color.yellow); fr.add(scientificKey[0]); // cosine scientificKey[1] = new Button("Cos"); scientificKey[1].addActionListener(this); scientificKey[1].setBounds(180, 150, BWIDTH + 10, BHEIGHT); scientificKey[1].setBackground(Color.yellow); scientificKey[1].setVisible(true); 31
fr.add(scientificKey[1]); // Tan scientificKey[2] = new Button("Tan"); scientificKey[2].addActionListener(this); scientificKey[2].setBounds(180, 180, BWIDTH + 10, BHEIGHT); scientificKey[2].setBackground(Color.yellow); scientificKey[2].setVisible(true); fr.add(scientificKey[2]); // PI scientificKey[3] = new Button("Pi"); scientificKey[3].addActionListener(this); scientificKey[3].setBounds(180, 210, BWIDTH + 10, BHEIGHT); scientificKey[3].setBackground(Color.yellow); scientificKey[3].setVisible(true); fr.add(scientificKey[3]); // aSine scientificKey[4] = new Button("aSin"); scientificKey[4].addActionListener(this); scientificKey[4].setBounds(220, 120, BWIDTH + 10, BHEIGHT); scientificKey[4].setBackground(Color.yellow); scientificKey[4].setVisible(true); fr.add(scientificKey[4]); // aCos scientificKey[5] = new Button("aCos"); scientificKey[5].addActionListener(this); scientificKey[5].setBounds(220, 150, BWIDTH + 10, BHEIGHT); scientificKey[5].setBackground(Color.yellow); scientificKey[5].setVisible(true); fr.add(scientificKey[5]); // aTan scientificKey[6] = new Button("aTan"); scientificKey[6].addActionListener(this); scientificKey[6].setBounds(220, 180, BWIDTH + 10, BHEIGHT); scientificKey[6].setBackground(Color.yellow); scientificKey[6].setVisible(true); fr.add(scientificKey[6]); // E scientificKey[7] = new Button("E"); scientificKey[7].addActionListener(this); scientificKey[7].setBounds(220, 210, BWIDTH + 10, BHEIGHT); scientificKey[7].setBackground(Color.yellow); scientificKey[7].setVisible(true); fr.add(scientificKey[7]); // to degrees scientificKey[8] = new Button("todeg"); scientificKey[8].addActionListener(this); scientificKey[8].setBounds(180, 240, BWIDTH + 10, BHEIGHT); scientificKey[8].setBackground(Color.yellow); scientificKey[8].setVisible(true); fr.add(scientificKey[8]); 32
// to radians scientificKey[9] = new Button("torad"); scientificKey[9].addActionListener(this); scientificKey[9].setBounds(220, 240, BWIDTH + 10, BHEIGHT); scientificKey[9].setBackground(Color.yellow); scientificKey[9].setVisible(true); fr.add(scientificKey[9]); fr.add(display); fr.setVisible(true); } // end of makeCalculator public void actionPerformed(ActionEvent ae) { String buttonText = ae.getActionCommand(); double displayNumber = Double.valueOf(display.getText()).doubleValue(); // if the button pressed text is 0 to 9 if((buttonText.charAt(0) >= '0') & (buttonText.charAt(0) javac Receiver.java C:\jdk1.5\bin>javac Main.java 44
MATCH ::2 MATCH ::3 MATCH ::5 MATCH ::13 MATCH ::89 MATCH ::233 MATCH ::1597 C:\jdk1.5\bin>
Result: Thus the above program was executed and verified successfully.
45
Ex.No: 9
A Simple OPAC system for library
Aim:To develop a simple OPAC System for library management system using event-driven and concurrent programming paradigms and java database connectivity.
Algorithm:Step 1:Initiate a class and declare the driver for the Driver name required to connect to the database.
Step 2:-Enclose the coding in a try block to handle errors and trap the exception in a catch block.
Step 3:-Establish the connection object to connect to the backend.
Step 4:-Create an object for Statement object using createStatement() object.
Step 5:-Issue a query through executeQuery() method.
Program
import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Datas extends JFrame implements ActionListener { JTextField id; JTextField name; JButton next; JButton addnew; JPanel p; static ResultSet res; static Connection conn; static Statement stat; public Datas() 46
{ super("Our Application"); Container c = getContentPane(); c.setLayout(new GridLayout(5,1)); id = new JTextField(20); name = new JTextField(20); next = new JButton("Next BOOK"); p = new JPanel(); c.add(new JLabel("ISBN",JLabel.CENTER)); c.add(id); c.add(new JLabel("Book Name",JLabel.CENTER)); c.add(name); c.add(p); p.add(next); next.addActionListener(this); pack(); setVisible(true); addWindowListener(new WIN()); } public static void main(String args[]) { Datas d = new Datas(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:custo"); // cust is the DSN Name stat = conn.createStatement(); res = stat.executeQuery("Select * from stu"); // Customers is the table name res.next(); } catch(Exception e) { System.out.println("Error" +e); } d.showRecord(res); } public void actionPerformed(ActionEvent e) { if(e.getSource() == next) { try { res.next(); } catch(Exception ee) {} showRecord(res); } } public void showRecord(ResultSet res) { try { 47
id.setText(res.getString(2)); name.setText(res.getString(3)); } catch(Exception e) {} }//end of the main //Inner class WIN implemented class WIN extends WindowAdapter { public void windowClosing(WindowEvent w) { JOptionPane jop = new JOptionPane(); jop.showMessageDialog(null,"Database","Thanks",JOptionPane.QUESTION_MESSAGE); } }
} //end of the class
Output:
48
49
Concurrent import java.sql.*; import java.sql.DriverManager.*; class Ja { String bookid,bookname; int booksno; Connection con; Statement stmt; ResultSet rs; Ja() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:co"); } catch(Exception e) { System.out.println("connection error"); } } void myput() { try { stmt=con.createStatement(); rs=stmt.executeQuery("SELECT * FROM opac"); while(rs.next()) { booksno=rs.getInt(1); bookid=rs.getString(2); bookname=rs.getString(3); System.out.println("\n"+ booksno+"\t"+bookid+"\t"+bookname); } rs.close(); stmt.close(); con.close(); } catch(SQLException e) { System.out.println("sql error"); } } } class prog1 { public static void main(String arg[]) 50
{ Ja j=new Ja(); j.myput(); } }
Output:
Result: Thus the above program was executed and verified successfully.
51
Ex.No:
10 Multi-threaded echo server GUI clients
Aim:To develop a Java Program that supports multithreaded echo server and a GUI client.
Procedure:
Program: /**************PROGRAM FOR MULTI-THREADED ECHO SERVER********************/ /******************************* chatclient .java**********************************/
import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; class chatclient extends Frame implements ActionListener,Runnable { TextArea ta; TextField tf; BufferedReader br; PrintWriter pw; public static void main(String args[]) { 52
chatclient cc=new chatclient("ChatClient",args[0],4040); cc.show(); cc.setSize(300,400); } chatclient(String title,String address,int port) { super(title); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); ta=new TextArea(10,60); ta.setEditable(false); add(ta,BorderLayout.CENTER); tf=new TextField(" ",10); tf.addActionListener(this); add(tf,BorderLayout.SOUTH); try { Socket s=new Socket(address,port); InputStream is=s.getInputStream(); InputStreamReader isr=new InputStreamReader(is); br=new BufferedReader(isr); OutputStream os=s.getOutputStream(); pw=new PrintWriter(os,true); } catch(Exception e) { System.out.println(e); } Thread thread=new Thread(this); thread.start(); } public void actionPerformed(ActionEvent ae) { try { String str=tf.getText(); pw.println(str); tf.setText(" "); } catch(Exception e) { System.out.println(e); } } public void run() { 53
try { while(true) { String str=br.readLine(); ta.append(str+"\n"); } } catch(Exception e) { System.out.println(e); } } }
/*************************** chatserver.java***********************************/ import java.net.*; import java.util.*; class chatserver { static Vector serverthreads; public static void main(String args[]) { try { serverthreads=new Vector(); ServerSocket ss=new ServerSocket(4040); while(true) { Socket s=ss.accept(); serverthread st=new serverthread(s); st.start(); serverthreads.addElement(st); } } catch(Exception e) { System.out.println(e); } } public synchronized static void echoAll(String str) { 54
Enumeration e=serverthreads.elements(); while(e.hasMoreElements()) { try { serverthread st=(serverthread)e.nextElement(); st.echo(str); } catch(Exception ae) { System.out.println(ae); } } } }
/****************************** serverthread.java*********************************/ import java.io.*; import java.net.*; class serverthread extends Thread { private BufferedReader br; private PrintWriter pw; public serverthread(Socket socket) { try { InputStream is=socket.getInputStream(); InputStreamReader isr=new InputStreamReader(is); br=new BufferedReader(isr); OutputStream os=socket.getOutputStream(); pw=new PrintWriter(os,true); } catch(Exception e) { System.out.println(e); } } public void run() { try { while(true) { 55
String str=br.readLine(); chatserver.echoAll(str); } } catch(Exception e) { System.out.println(e); } } public void echo(String str) { try { pw.println(str); } catch(Exception e) { System.out.println(e); } } }
OUTPUT:
D:\ Java\jdk1.5.0_03\bin>javac ServerThread.java D:\ Java\jdk1.5.0_03\bin>javac chatserver.java D:\Java\jdk1.5.0_03\bin>java chatserver D:\Java\jdk1.5.0_03\bin>javac chatclient.java D:\Java\jdk1.5.0_03\bin>java chatclient 192.168.15.143 D:\Java\jdk1.5.0_03\bin>java chatclient 192.168.15.143 D:\Java\jdk1.5.0_03\bin>java chatclient 192.168.15.143
56
Result: Thus the above program was executed and verified successfully.
57
MiniProject Aim:
To Develop a programmer's editor in Java that supports syntax highlighting, compilation support, debugging support, etc Program: /*********************** PROGAMMER’S EDITOR IN JAVA************************/ /* Client Frame Design with width=600 & height=500*/ import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStreamReader; import javax.swing.*; import javax.swing.border.Border; import javax.swing.text.Element; import java.util.StringTokenizer; public class Client implements ActionListener,MouseListener,MouseMotionListener { /************ Components *****************/ JFrame frame; JTextArea jta1; public JTextArea jta2; JTextArea jta3; JButton jb1; JButton jb2; JButton jb3; JButton jb4; JLabel jl1; JLabel jl2; JLabel jl3; JScrollPane jsp1; JScrollPane jsp2; JScrollPane jsp3; JTabbedPane jtp1; JTabbedPane jtp2; JTabbedPane jtp3; JMenuBar jm; JMenu open;
58
JMenu exit; JMenu file; JMenu help; JMenu compile; JMenu run; JMenu opt; /************ Variables *****************/ String line; String option; String className; String pureFile; File f2; File f3; public Client() { frame=new JFrame("XDoS Compiler"); frame.setLayout(null); frame.setBounds(300,10,200,200); frame.setSize(900,650); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jta1=new JTextArea(300,400); jsp1=new JScrollPane(jta1); jsp1.setBounds(10, 10, 670, 200); jsp1.setEnabled(false); Border etchedBdr1 = BorderFactory.createEtchedBorder(); jta1.setBorder(etchedBdr1); //frame.add(jsp1); jta2=new JTextArea(300,400); jsp2=new JScrollPane(jta2); jsp2.setBounds(10, 280, 670, 150); Border etchedBdr2 = BorderFactory.createEtchedBorder(); jta2.setBorder(etchedBdr2); jta2.setEditable(false); //frame.add(jsp2); jta3=new JTextArea(300,400); jsp3=new JScrollPane(jta3); jsp3.setBounds(10, 450, 670, 150); Border etchedBdr3 = BorderFactory.createEtchedBorder(); jta3.setBorder(etchedBdr3); //frame.add(jsp3); jl1=new JLabel(); jl1.setBounds(500, 380, 670, 150); frame.add(jl1); jl2=new JLabel(); jl2.setBounds(550, 380, 670, 150); frame.add(jl2); jl3=new JLabel(); jl3.setBounds(600, 380, 670, 150); frame.add(jl3); jb1=new JButton("Browse"); jb1.setBounds(50, 235, 100, 20); jb1.addActionListener(this); //frame.add(jb1);
59
jb2=new JButton("compile"); jb2.setBounds(200, 235, 100, 20); jb2.addActionListener(this); //frame.add(jb2); jb3=new JButton("Send"); jb3.setBounds(550, 235, 100, 20); jb3.addActionListener(this); //frame.add(jb3); jb4=new JButton("Run"); jb4.setBounds(400, 235, 100, 20); jb4.addActionListener(this); //frame.add(jb4); jtp1=new JTabbedPane(); jtp1.addTab( "untitled.java", jsp1 ); jtp1.setBounds(10, 40, 670, 400); UIManager.put("TabbedPane.selected", Color.green); jtp1.set ForegroundAt(0,Color.BLUE); jtp1.setBackgroundAt(0,Color.BLUE); frame.add(jtp1); jtp2=new JTabbedPane(); jtp2.addTab( "Result", jsp2 ); jtp2.setBounds(10, 450, 670, 150); frame.add(jtp2); jtp3=new JTabbedPane(); jtp3.addTab( "Reply", jsp3 ); jtp3.setBounds(700, 40, 180, 560); frame.add(jtp3); jm=new JMenuBar(); file=new JMenu("File"); file.setMnemonic('F'); opt=new JMenu("Option"); opt.setMnemonic('O'); opt.setEnabled(false); jm.add(file); jm.add(opt); compile=new JMenu("Compile"); compile.setMnemonic('C'); Action action3 = new AbstractAction("Compile") { public void actionPerformed(ActionEvent e) { compile(); } }; JMenuItem item3 = file.add(action3); opt.add(item3); run=new JMenu("Run"); run.setMnemonic('R'); Action action4 = new AbstractAction("Run") { public void actionPerformed(ActionEvent e) { run(); } };
60
JMenuItem item4 = file.add(action4); opt.add(item4); help=new JMenu("Help"); jm.add(help); open=new JMenu("open"); Action action1 = new AbstractAction("Open") { public void actionPerformed(ActionEvent e) { open(); } }; JMenuItem item1 = file.add(action1); file.add(item1); exit=new JMenu("Exit"); Action action2 = new AbstractAction("Exit") { public void actionPerformed(ActionEvent e) { System.exit(0); } }; JMenuItem item2 = file.add(action2);
file.add(item2); jm.setBounds(5, 0, 880, 30); frame.add(jm); frame.setResizable(false); frame.setVisible(true); jta1.addMouseListener(this); jta1.addMouseMotionListener(this); jtp1.addMouseListener(this); jtp2.addMouseListener(this); } public void mouseClicked(MouseEvent ew) { if(ew.getSource()==jta1) { jl3.setText("Line-No: "+Integer.toString(getCurrentLineNumber())); } else if(ew.getSource()==jtp2) { if(jtp1.isShowing()) { frame.remove(jtp1); jtp2.setBounds(10, 40, 670, 560); jl1.setBounds(500, 535, 670, 150); jl2.setBounds(550, 535, 670, 150); jl3.setBounds(600, 535, 670, 150); jta2.addMouseMotionListener(this); jl3.setText("Line-No: "+Integer.toString(getCurrentLineNumber())); } else { frame.add(jtp1); jtp2.setBounds(10, 450, 670, 150); jl1.setBounds(500, 380, 670, 150); jl2.setBounds(550, 380, 670, 150); jl3.setBounds(600, 380, 670, 150); jta2.removeMouseMotionListener(this); }} else if(ew.getSource()==jtp1)
61
{ if(jtp2.isShowing()) { frame.remove(jtp2); frame.remove(jtp3); jtp1.setBounds(10, 40, 870, 560); jl1.setBounds(500, 535, 670, 150); jl2.setBounds(550, 535, 670, 150); jl3.setBounds(600, 535, 670, 150); } else { frame.add(jtp2); frame.add(jtp3); jtp1.setBounds(10, 40, 670, 400); jl1.setBounds(500, 380, 670, 150); jl2.setBounds(550, 380, 670, 150); jl3.setBounds(600, 380, 670, 150); } } } public void mouseEntered(MouseEvent ew) {} public void mouseExited(MouseEvent ew) {} public void mousePressed(MouseEvent ew) {} public void mouseReleased(MouseEvent ew) {} public void mouseMoved(MouseEvent e) { jl1.setText("X-: "+Integer.toString(e.getX())); jl2.setText("Y-: "+Integer.toString(e.getY())); } public void mouseDragged(MouseEvent e) {} public void actionPerformed(ActionEvent ae) {} public void open() { JFileChooser fileChooser = new JFileChooser(); fileChooser.addChoosableFileFilter(new MyFilter()); int select=fileChooser.showOpenDialog(frame); if(select==JFileChooser.APPROVE_OPTION) { File file=fileChooser.getSelectedFile(); String filename=fileChooser.getSelectedFile().getName(); try { FileInputStream fis=new FileInputStream(file); int n=fis.available(); byte dat[]=new byte[n]; fis.read(dat); String data=new String(dat); jtp1.setTitleAt(0, filename); jta1.setText(data); opt.setEnabled(true); } catch(Exception e) { e.printStackTrace(); } } } public int getCurrentLineNumber() { int line; int caretPosition = jta1.getCaretPosition(); Element root = jta1.getDocument().getDefaultRootElement(); line = root.getElementIndex(caretPosition) + 1; return line; } public void compile() { try { jtp2.setTitleAt(0,"Compile"); String ta1=jta1.getText().trim(); StringBuffer sb=new StringBuffer(ta1); int id1=ta1.indexOf("public class"); int id2=ta1.indexOf(" ",id1+13);
62
String name=ta1.substring(id1, id2).trim(); StringTokenizer st3=new StringTokenizer(name,"\n"); System.out.println(st3.countTokens()); String word=st3.nextToken().toString().trim(); System.out.println(word+"*"); StringTokenizer st4=new StringTokenizer(word," "); System.out.println(st4.countTokens()); st4.nextToken(); st4.nextToken(); pureFile=st4.nextToken().toString().trim(); className=pureFile+".java"; //System.out.println(st4.nextElement().toString().trim()+"*"); FileOutputStream f=new FileOutputStream(className); f.write(ta1.getBytes()); f.close(); f2=new File(className); f3=new File(pureFile+".class"); System.out.println(f2.getAbsolutePath()); String path=f2.getAbsolutePath(); int a1=path.indexOf("\\"); int a2=path.lastIndexOf("\\"); System.out.println(a1+" "+a2); String colan=path.substring(0, a1).trim(); String location=path.substring(0, a2+1).trim(); System.out.println(colan); System.out.println(location); compiler(className); }
catch (Exception err) { err.printStackTrace(); } //option=JOptionPane.showInputDialog(null,"Enter Destination System Name","Destination",1).toString(); //System.out.println(option); // jta2.setText(line); } public void run() { jtp2.setTitleAt(0,"Run"); runer(pureFile); } public static void main(String args[]) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { } new Client(); } public void compiler(String name) { try { jta2.setText(""); jta2.append("Compilation Started.....\n"); jta2.append("Proceed.....\n"); jta2.setForeground(Color.blue); String callAndArgs= "cmd /c compile.bat "+name; Process p =Runtime.getRuntime().exec(callAndArgs); BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); String str=br.readLine(); while(str!=null) { System.out.println(str); str=br.readLine(); } File f1 = new File("error.txt"); FileReader fr = new FileReader(f1); BufferedReader br1 = new BufferedReader(fr);
63
StringBuffer sb1 = new StringBuffer(); String eachLine = br1.readLine(); while (eachLine != null) { jta2.setForeground(Color.RED); sb1.append(eachLine); sb1.append("\n"); eachLine= br1.readLine(); } jta2.append(sb1.toString()); //input.close(); if(f1.length()==0) { jta2.append("Compiled Successfully........\n"); jta2.append("Done........"); } } catch(Exception e) { e.printStackTrace(); } } public void runer(String name) { try { jta3.setText(""); String callAndArgs= "cmd /c run.bat "+name; Process p =Runtime.getRuntime().exec(callAndArgs); BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream())); String str=br.readLine(); while(str!=null) { System.out.println(str); str=br.readLine(); } File f1 = new File("output.txt"); FileReader fr = new FileReader(f1); BufferedReader br1 = new BufferedReader(fr); StringBuffer sb1 = new StringBuffer(); String eachLine = br1.readLine(); while (eachLine != null) { sb1.append(eachLine); sb1.append("\n"); eachLine = br1.readLine(); } String sp=sb1.toString(); StringBuffer st=new StringBuffer(sp); System.out.println(st.length()); int indx=sp.indexOf(">"); int r=1; while(indx != -1) { System.out.println(Integer.toString(indx)+"*"); System.out.println(st); st.insert(indx+r, "\n"); indx=sp.indexOf(">",indx+1); r++; System.out.println(Integer.toString(indx)+"#"); } jta2.setText(st.toString()); f2.deleteOnExit(); f3.deleteOnExit(); } catch(Exception e) { e.printStackTrace(); } } }
64
class MyFilter extends javax.swing.filechooser.FileFilter { public boolean accept(File file) { return file.isDirectory() || file.getName().endsWith(".java"); } public String getDescription() { return "*.java"; } }
/* Test Frame Design */ import javax.swing.*; import java.awt.*; public class Test { public Test() { JFrame f = new JFrame("Test"); f.setLayout(new FlowLayout()); JTextField jt1 = new JTextField(25); f.add(jt1); f.setVisible(true); f.setSize(200,200); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]) { new Test(); } }
OUTPUT: D:\ Java\jdk1.5.0_03\bin>javac Client.java D:\ Java\jdk1.5.0_03\bin>javac Test.java D:\ Java\jdk1.5.0_03\bin>java Test D:\ Java\jdk1.5.0_03\bin>java Client
65
Result: Thus the above program was executed and verified successfully.
66