csejavalab

download csejavalab

of 66

Transcript of csejavalab

  • 7/28/2019 csejavalab

    1/66

    1

    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

  • 7/28/2019 csejavalab

    2/66

    2

    CS2309 JAVA LAB L T P C0 0 3 2

    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

  • 7/28/2019 csejavalab

    3/66

    3

    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

  • 7/28/2019 csejavalab

    4/66

    4

    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 linked-

    list.

    5 Polymorphism

    6 object serialization

    7 scientific calculator

    8

    Multi-threaded Java program

    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] programmers editor.

  • 7/28/2019 csejavalab

    5/66

    5

    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

  • 7/28/2019 csejavalab

    6/66

    6

    {

    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);

    }

    }

  • 7/28/2019 csejavalab

    7/66

    7

    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/28/2019 csejavalab

    8/66

    8

    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 calculationStep 5:- In the main function create object for the class Date and display the time and date

    accordingly.

  • 7/28/2019 csejavalab

    9/66

    9

    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();

    }

  • 7/28/2019 csejavalab

    10/66

    10

    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

    ResultThus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    11/66

    11

    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:

  • 7/28/2019 csejavalab

    12/66

    12

    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);

  • 7/28/2019 csejavalab

    13/66

    13

    }

    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();

  • 7/28/2019 csejavalab

    14/66

    14

    L.cdr();

    L.cons("7");

    }}

    Output:

    Result:Thus the above program was executed and verified successfully

  • 7/28/2019 csejavalab

    15/66

    15

    Ex.No:4 Implementation of Stack ADT

    AIM

    To write a Java Program to design an interface for Stack ADT.and implement Stack ADTusing both Array and Linked List.

    Procedure:

  • 7/28/2019 csejavalab

    16/66

    16

    Program:

    public class ADTArray implements ADTStack{

    Object[] array;int index;

    public ADTArray() {this.array = new Object[128];

    this.index = 0;}

    //@Overridepublic Object pop() {

    index--;

    return array[index];}

    //@Overridepublic 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++;

  • 7/28/2019 csejavalab

    17/66

    17

    }

    //@Overridepublic 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 ();

    }

  • 7/28/2019 csejavalab

    18/66

    18

    Output:-

    C:\>java ADTArray100Hi

    C:\>java ADTList100Hi

    C:\>java ADTStackException in thread main java.lang.NoSuchMethodError:main

    Result:Thus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    19/66

    19

    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.

  • 7/28/2019 csejavalab

    20/66

    20

    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;

    }

  • 7/28/2019 csejavalab

    21/66

    21

    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.";

  • 7/28/2019 csejavalab

    22/66

    22

    }

    }

    //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);

    }

    }

  • 7/28/2019 csejavalab

    23/66

    23

    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.

  • 7/28/2019 csejavalab

    24/66

    24

    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

    {

  • 7/28/2019 csejavalab

    25/66

    25

    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;

  • 7/28/2019 csejavalab

    26/66

    26

    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:-

  • 7/28/2019 csejavalab

    27/66

    27

    E:\java>java Currency

    $40.0

    Rs.50.0

    $40.0

    Rs.50.0

    Result:Thus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    28/66

    28

    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 changesStep4: 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 superclasssuper(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

  • 7/28/2019 csejavalab

    29/66

    29

    CalcFrame fr;TextField display;Button key[] = new Button[20]; // creates a button object array of 20Button clearAll, clearEntry, round;Button scientificKey[] = new Button[10]; // creates a button array of 8

    // declaring variablesboolean addButtonPressed, subtractButtonPressed, multiplyButtonPressed;boolean divideButtonPressed, decimalPointPressed, powerButtonPressed;boolean roundButtonPressed = false;double initialNumber;// the first number for the two number operationdouble currentNumber = 0; // the number shown in the screen while it is being pressedint decimalPlaces = 0;

    // main functionpublic static void main (String args[]) {// constructor

    Calculator calc = new Calculator();calc.makeCalculator();

    }

    public void makeCalculator() {// size of the buttonfinal int BWIDTH = 25;final int BHEIGHT = 25;int count =1;// create frame for the calculatorfr = new CalcFrame("Scientific Calculator");// set the sizefr.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 9key[count] = new Button(Integer.toString(count));key[count].addActionListener(this);

    // set the boundry for the keyskey[count].setBounds(30*(col + 1), 30*(row + 4),BWIDTH,BHEIGHT);key[count].setBackground(Color.yellow);// add to the framefr.add(key[count++]);

    }}

    // Now create, addlistener and add to frame all other keys//0key[0] = new Button("0");

    key[0].addActionListener(this);key[0].setBounds(30,210,BWIDTH,BHEIGHT);

  • 7/28/2019 csejavalab

    30/66

    30

    key[0].setBackground(Color.yellow);fr.add(key[0]);//decimalkey[10] = new Button(".");key[10].addActionListener(this);

    key[10].setBounds(60,210,BWIDTH,BHEIGHT);key[10].setBackground(Color.yellow);fr.add(key[10]);//equals tokey[11] = new Button("=");key[11].addActionListener(this);key[11].setBounds(90,210,BWIDTH,BHEIGHT);key[11].setBackground(Color.yellow);fr.add(key[11]);//multiplykey[12] = new Button("*");

    key[12].addActionListener(this);key[12].setBounds(120,120,BWIDTH,BHEIGHT);key[12].setBackground(Color.yellow);fr.add(key[12]);//dividekey[13] = new Button("/");key[13].addActionListener(this);key[13].setBounds(120,150,BWIDTH,BHEIGHT);key[13].setBackground(Color.yellow);fr.add(key[13]);//additionkey[14] = new Button("+");key[14].addActionListener(this);key[14].setBounds(120,180,BWIDTH,BHEIGHT);key[14].setBackground(Color.yellow);fr.add(key[14]);//subtractkey[15] = new Button("-");key[15].addActionListener(this);key[15].setBounds(120,210,BWIDTH,BHEIGHT);key[15].setBackground(Color.yellow);

    fr.add(key[15]);//reciprocalkey[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]);//powerkey[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]);

  • 7/28/2019 csejavalab

    31/66

    31

    //change signkey[18] = new Button("+/-");key[18].addActionListener(this);key[18].setBounds(150,180,BWIDTH,BHEIGHT);key[18].setBackground(Color.yellow);

    fr.add(key[18]);//factorialkey[19] = new Button("x!");key[19].addActionListener(this);key[19].setBounds(150,210,BWIDTH,BHEIGHT);key[19].setBackground(Color.yellow);fr.add(key[19]);// CAclearAll = new Button("CA");clearAll.addActionListener(this);clearAll.setBounds(30, 240, BWIDTH+20, BHEIGHT);

    clearAll.setBackground(Color.yellow);fr.add(clearAll);// CEclearEntry = new Button("CE");clearEntry.addActionListener(this);clearEntry.setBounds(80, 240, BWIDTH+20, BHEIGHT);clearEntry.setBackground(Color.yellow);fr.add(clearEntry);// roundround = new Button("Round");round.addActionListener(this);round.setBounds(130, 240, BWIDTH+20, BHEIGHT);round.setBackground(Color.yellow);fr.add(round);// set display areadisplay = new TextField("0");display.setBounds(30,90,150,20);display.setBackground(Color.white);

    // key for scientific calculator

    // SinescientificKey[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]);// cosinescientificKey[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);

  • 7/28/2019 csejavalab

    32/66

    32

    fr.add(scientificKey[1]);// TanscientificKey[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]);// PIscientificKey[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]);// aCosscientificKey[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]);// aTanscientificKey[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 degreesscientificKey[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]);

  • 7/28/2019 csejavalab

    33/66

    33

    // to radiansscientificKey[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)

  • 7/28/2019 csejavalab

    34/66

    34

    // if button pressed is subtractif (buttonText == "-") {subtractButtonPressed = true;initialNumber = displayNumber;

    currentNumber = 0;decimalPointPressed = false;

    }

    // if button pressed is divideif (buttonText == "/") {divideButtonPressed = true;initialNumber = displayNumber;currentNumber = 0;decimalPointPressed = false;

    }

    // if button pressed is multiplyif (buttonText == "*") {multiplyButtonPressed = true;initialNumber = displayNumber;currentNumber = 0;decimalPointPressed = false;

    }

    // if button pressed is reciprocalif (buttonText == "1/x") {// call reciprocal methoddisplay.setText(reciprocal(displayNumber));currentNumber = 0;decimalPointPressed = false;

    }

    // if button is pressed to change a sign//

    if (buttonText == "+/-") {// call changesign meyhod to change the

    // signdisplay.setText(changeSign(displayNumber));currentNumber = 0;decimalPointPressed = false;

    }

    // factorial buttonif (buttonText == "x!") {display.setText(factorial(displayNumber));currentNumber = 0;decimalPointPressed = false;

    }

  • 7/28/2019 csejavalab

    35/66

    35

    // power buttonif (buttonText == "x^n") {

    powerButtonPressed = true;initialNumber = displayNumber;currentNumber = 0;

    decimalPointPressed = false;}

    // now for scientific buttonsif (buttonText == "Sin") {

    display.setText(Double.toString(Math.sin(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "Cos") {

    display.setText(Double.toString(Math.cos(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "Tan") {display.setText(Double.toString(Math.tan(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "aSin") {display.setText(Double.toString(Math.asin(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "aCos") {display.setText(Double.toString(Math.acos(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "aTan") {display.setText(Double.toString(Math.atan(displayNumber)));currentNumber = 0;decimalPointPressed = false;

    }

    // this will convert the numbers displayed to degreesif (buttonText == "todeg")display.setText(Double.toString(Math.toDegrees(displayNumber)));

    // this will convert the numbers display// ed to radians

  • 7/28/2019 csejavalab

    36/66

    36

    if (buttonText == "torad")display.setText(Double.toString(Math.toRadians(displayNumber)));

    if (buttonText == "Pi") {display.setText(Double.toString(Math.PI));

    currentNumber =0;decimalPointPressed = false;

    }

    if (buttonText == "Round")roundButtonPressed = true;// check if decimal point is pressed

    if (buttonText == ".") {String displayedNumber = display.getText();

    boolean decimalPointFound = false;

    int i;decimalPointPressed = true;// check for decimal point

    for (i =0; i < displayedNumber.length(); ++i) {

    if(displayedNumber.charAt(i) == '.') {decimalPointFound = true;continue;

    }}

    if (!decimalPointFound)decimalPlaces = 1;

    }

    if(buttonText == "CA"){// set all buttons to falseresetAllButtons();display.setText("0");

    currentNumber = 0;}

    if (buttonText == "CE") {display.setText("0");currentNumber = 0;decimalPointPressed = false;

    }

    if (buttonText == "E") {display.setText(Double.toString(Math.E));

    currentNumber = 0;decimalPointPressed = false;

  • 7/28/2019 csejavalab

    37/66

    37

    }

    // the main actionif (buttonText == "=") {currentNumber = 0;

    // if add button is pressedif(addButtonPressed)display.setText(Double.toString(initialNumber + displayNumber));// if subtract button is pressedif(subtractButtonPressed)display.setText(Double.toString(initialNumber - displayNumber));// if divide button is pressed

    if (divideButtonPressed) {// check if the divisor is zero

    if(displayNumber == 0) {MessageBox mb = new MessageBox ( fr, "Error ", true, "Cannot divide by

    zero.");mb.show();

    }elsedisplay.setText(Double.toString(initialNumber/displayNumber));

    }

    // if multiply button is pressedif(multiplyButtonPressed)display.setText(Double.toString(initialNumber * displayNumber));// if power button is pressedif (powerButtonPressed)display.setText(power(initialNumber, displayNumber));// set all the buttons to falseresetAllButtons();

    }} // end of action events

    public void itemStateChanged(ItemEvent ie){} // end of itemState

    // this method will reset all the button// Pressed property to falsepublic void resetAllButtons() {

    addButtonPressed = false;subtractButtonPressed = false;multiplyButtonPressed = false;divideButtonPressed = false;decimalPointPressed = false;

    powerButtonPressed = false;roundButtonPressed = false;

    }

  • 7/28/2019 csejavalab

    38/66

    38

    public String factorial(double num) {int theNum = (int)num;

    if (theNum < 1) {MessageBox mb = new MessageBox (fr, "Facorial Error", true,"Cannot find the factorial of numbers less than 1.");

    mb.show();return ("0");

    }else {for (int i=(theNum -1); i > 1; --i)theNum *= i;return Integer.toString(theNum);

    }

    }

    public String reciprocal(double num) {if (num ==0) {MessageBox mb = new MessageBox(fr,"Reciprocal Error", true,"Cannot find the reciprocal of 0");mb.show();

    }elsenum = 1/num;return Double.toString(num);

    }public String power (double base, double index) {return Double.toString(Math.pow(base, index));

    }public String changeSign(double num) {return Double.toString(-num);

    }}

    class MessageBox extends Dialog implements ActionListener {Button ok;

    MessageBox(Frame f, String title, boolean mode, String message) {

    super(f, title, mode);Panel centrePanel = new Panel();Label lbl = new Label(message);centrePanel.add(lbl);add(centrePanel, "Center");Panel southPanel = new Panel();ok = new Button ("OK");ok.addActionListener(this);southPanel.add(ok);add(southPanel, "South");

    pack();

    addWindowListener (new WindowAdapter() {public void windowClosing (WindowEvent we) {

  • 7/28/2019 csejavalab

    39/66

    39

    System.exit(0);}

    });}

    public void actionPerformed(ActionEvent ae) {dispose();

    }}

    OUTPUT:

    RESULT:

    Thus a scientific calculator using even-driven programming paradigm of Java isdeveloped.

  • 7/28/2019 csejavalab

    40/66

    40

    EX NO:-8 Multithreading

    Aim:-

    To 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.

    Procedure:

  • 7/28/2019 csejavalab

    41/66

    41

    Program:

    import java.io.IOException;

    import java.io.PipedWriter;

    public class FibonacciGenerator extends Thread {

    private PipedWriter fibWriter = new PipedWriter();

    public PipedWriter getPipedWriter() {return fibWriter;

    }

    @Overridepublic void run() {

    super.run();generateFibonacci();

    }

    private int f(int n) {if (n < 2) {

    return n;}else {

    return f(n-1)+ f(n-2);}

    }

    public void generateFibonacci() {

    /*do {fibValue = f(i);

    System.out.println("From Fibo : " + fibValue);try {

    fibWriter.write(fibValue);

    } catch (IOException e) {e.printStackTrace();

    }

    i++;} while(fibValue < 10000);*/for (int i = 2, fibValue = 0; (fibValue = f(i)) < 10000; i++) {

    //System.out.println("From Fibo : " + fibValue);try {

    fibWriter.write(fibValue);

    } catch (IOException e) {// TODO Auto-generated catch block

  • 7/28/2019 csejavalab

    42/66

    42

    e.printStackTrace();}

    }//suspend();

    }

    public static void main(String[] args) {new FibonacciGenerator().generateFibonacci();

    }}

    import java.io.IOException;import java.io.PipedReader;

    class Receiver extends Thread {

    private PipedReader fibReader;private PipedReader primeReader;

    public Receiver(FibonacciGenerator f ib, PrimeGenerator prime)throws IOException {

    fibReader = new PipedReader(fib.getPipedWriter());primeReader = new PipedReader(prime.getPipedWriter());

    }

    public void run() {

    int prime = 0;int fib = 0;try {

    prime = primeReader.read();fib = fibReader.read();

    } catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();

    }while (true) {

    //System.out.println("FROM PRIME PIPE ::" + prime);//System.out.println("FROM FIB PIPE::" + fib);try {

    if (prime == fib) {System.out.println("MATCH ::" + prime);prime = primeReader.read();fib = fibReader.read();

    } else if (fib < prime) {fib = fibReader.read();

    } else {

    prime = primeReader.read();}} catch (IOException e) {

  • 7/28/2019 csejavalab

    43/66

    43

    System.exit(-1);}

    }

    }}

    import java.io.IOException;import java.io.PipedWriter;

    public class PrimeGenerator extends Thread {

    private PipedWriter primeWriter = new PipedWriter();

    public PipedWriter getPipedWriter() {return primeWriter;

    }

    @Overridepublic void run() {

    super.run();generatePrime();

    }

    public void generatePrime() {for (int i = 2; i < 10000; i++) {

    if (isPrime(i)) {try {

    //System.out.println("From Prime : " + i);primeWriter.write(i);

    } catch (IOException e) {e.printStackTrace();

    }}

    }//suspend();

    }

    private boolean isPrime(int n) {boolean prime = true;

    int sqrtValue = (int) Math.sqrt(n);

    for (int i = 2; i

  • 7/28/2019 csejavalab

    44/66

    44

    return prime;}

    public static void main(String[] args) throws IOException {PrimeGenerator gene = new PrimeGenerator();gene.generatePrime();

    }

    }

    import java.io.IOException;

    public class Main {

    /*** @param args* @throws IOException*/public static void main(String[] args) throws IOException {

    FibonacciGenerator f ibonacciGenerator = new FibonacciGenerator();PrimeGenerator primeGenerator = new PrimeGenerator();

    Receiver receiver = new Receiver(fibonacciGenerator, primeGenerator);

    fibonacciGenerator.start();primeGenerator.start();receiver.start();

    /*fibonacciGenerator.stop();primeGenerator.stop();receiver.stop();*/

    //fibonacciGenerator.run();}

    }

    Output:C:\jdk1.5\bin>javac FibonacciGenerator.java

    C:\jdk1.5\bin>javac PrimeGenerator.java

    C:\jdk1.5\bin>javac Receiver.java

    C:\jdk1.5\bin>javac Main.java

  • 7/28/2019 csejavalab

    45/66

    45

    MATCH ::2MATCH ::3MATCH ::5MATCH ::13MATCH ::89

    MATCH ::233MATCH ::1597

    C:\jdk1.5\bin>

    Result:Thus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    46/66

    46

    Ex.No: 9 A Simple OPAC system for library

    Aim:-

    To develop a simple OPAC System for library management system using event-driven andconcurrent 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()

  • 7/28/2019 csejavalab

    47/66

    47

    {

    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 Namestat = 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 {

  • 7/28/2019 csejavalab

    48/66

    48

    id.setText(res.getString(2));name.setText(res.getString(3));}catch(Exception e) {}

    }//end of the main

    //Inner class WIN implementedclass 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:

  • 7/28/2019 csejavalab

    49/66

    49

  • 7/28/2019 csejavalab

    50/66

    50

    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[])

  • 7/28/2019 csejavalab

    51/66

    51

    {Ja j=new Ja();

    j.myput();}}

    Output:

    Result:

    Thus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    52/66

    52

    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[]){

  • 7/28/2019 csejavalab

    53/66

    53

    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(){

  • 7/28/2019 csejavalab

    54/66

    54

    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){

  • 7/28/2019 csejavalab

    55/66

    55

    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){

  • 7/28/2019 csejavalab

    56/66

  • 7/28/2019 csejavalab

    57/66

    57

    Result:Thus the above program was executed and verified successfully.

  • 7/28/2019 csejavalab

    58/66

    58

    MiniProject

    Aim:

    To Develop a programmer's editor in Java that supports syntax highlighting,

    compilation support, debugging support, etc

    Program:

    /*********************** PROGAMMERS 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;

  • 7/28/2019 csejavalab

    59/66

    59

    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);

  • 7/28/2019 csejavalab

    60/66

    60

    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();

    }};

  • 7/28/2019 csejavalab

    61/66

    61

    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)

  • 7/28/2019 csejavalab

    62/66

    62

    {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);

  • 7/28/2019 csejavalab

    63/66

    63

    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 SystemName","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);

  • 7/28/2019 csejavalab

    64/66

    64

    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())); Stringstr=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(); } } }

  • 7/28/2019 csejavalab

    65/66

    65

    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.javaD:\ Java\jdk1.5.0_03\bin>javac Test.javaD:\ Java\jdk1.5.0_03\bin>java TestD:\ Java\jdk1.5.0_03\bin>java Client

  • 7/28/2019 csejavalab

    66/66