Sie sind auf Seite 1von 64

Automated Test System

A MINOR PROJECT REPORT On Automated Test System


Submitted to

Maharishi Markandeshwar University


In the partial fulfillment of the requirement for the award of the degree of

B-Tech. (7th Sem.) Session: 2009-2013

GUIDED BY:
Mr. Rakesh Kamboj Lecturer M.M.E.C

SUBMITTED BY:
Nitin Malik (11090118) Tarandeep Singh (11090135) Vishal Gulati(11090142)

1 |Page

Automated Test System


CANDIDATE DECLERATION

We hereby certify that the work which is being presented in the project entitled Automated Test System in fulfillment of the requirement for the award of the degree of Bachelor Of Technology in Computer Engineering of M.M. Engineering College, Mullana, Ambala, Haryana, India is an authentic record of our own work carried out during a period from August 2012 to December 2012, under the supervision of Mr. Rakesh Kamboj The matter presented in this project has not been submitted by us for the award of any other degree of this or any other Institute/University.

Tarandeep Singh (11090135) Nitin Malik (11090118) Vishal Gulati(11090142)


This is to certify that the above statement made by the candidate is correct to the best of my knowledge.

Date:(Assistant prof.)

Mr. Rakesh Kamboj

External Examine Examiner

Head Of Department

Internal

2 |Page

Automated Test System


Acknowledgement

We wish to express our deep sense of indebtedness and sincerest gratitude to our guide Mr. Rakesh Kamboj Department of Computer engineering, M.M. Engineering College Mullana, Ambala, Haryana, India for his invaluable guidance and constructive criticism throughout his dissertation. He has displayed unique tolerance and understanding at every step of progress and encouraged us. We deem it our privilege to have carried out our work under his able guidance. We would especially like to thank Prof. Sandeep Goyal(Assoc. Professor and Head), Department of Computer engineering, M.M. Engineering College Mullana, Ambala, Haryana, India, without whom this work would not have been as it is now. Our sincere thanks go to Mr. Kushagra Aggarwal for his painstaking attitude and prudential suggestions throughout our project work.

As a Final Personal Note, we are grateful to our parents, who are inspirational to us in their understanding, patience and constant encouragement

Nitin Malik (11090118) Tarandeep Singh (11090135) Vishal Gulati(11090142)

3 |Page

Automated Test System

Abstract

AUTOMATED TEST SYSTEM is a software application to automate the test taking


procedure at various institutes that provide testing facilties at various levels. This system will provide a basis for effective fulfillment of conducting Automated tests as a replacement for the paper based tests which are conducted during the internals in the college. It is a generic software which is not specifically for MMU. but can be used by any college, school or institute. It can be operated easily even by new users, as it uses interactive menus, frames, buttons etc. It is not required for the user to have any special knowledge. It has a simple interface and the user does not need to have any prior knowledge to access the system.

This project has been made using Java.It uses MS Access for creating the database. The following Packages of Java are used in the project:

Java.sql Java.awt Java.awt.event import javax.swing.


A Package in Java is a group of related classes,interfaces and sub-packages. It uses Frame class which is a sub-class of the Window class.It is used to create a GUI application window.

4 |Page

Automated Test System

CONTENTS
Sr. No. 1. Chapter Introduction Page No. 6-19

2.

Background of project

20

3.

System model

21-24

4.

Implementation

24-51

5.

Result and Declaration

56-64

6.

References

54-65

Introduction to JAVA
5 |Page

Automated Test System


The creation of JAVA
Java was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. in 1991. It took 18 months to develop the first working version. This language was initially called Oak but was renamed Java in 1995. Between the initial implementation of Oak in the fall of 1992 and the public announcement of Java in the spring of 1995, many more people contributed to the design and evolution of the language. Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yellin, and Tim Lindholm were key contributors to the maturing of the original prototype. Somewhat surprisingly, the original impetus for Java was not the Internet! Instead, the primary motivation was the need for a platform-independent (that is, architectureneutral) language that could be used to create software to be embedded in various consumer electronic devices, such as microwave ovens and remote controls. As you can probably guess, many different types of CPUs are used as controllers. The trouble with C and C++ (and most other languages) is that they are designed to be compiled for a specific target. Although it is possible to compile a C++ program for just about any type of CPU, to do so requires a full C++ compiler targeted for that CPU. The problem is that compilers are expensive and time-consuming to create. An easier and more cost-efficientsolution was needed. In an attempt to find such a solution, Gosling and others began work on a portable, platform-independent language that could be used to produce code that would run on a variety of CPUs under differing environments. This effort ultimately led to the creation of Java.

Why JAVA is important to Internet


6 |Page

Automated Test System

The Internet helped catapult Java to the forefront of programming, and Java, in turn, has had a profound effect on the Internet. The reason for this is quite simple: Java expands the universe of objects that can move about freely in cyberspace. In a network, two very broad categories of objects are transmitted between the server and your personal computer: passive information and dynamic, active programs. For example, when you read your e-mail, you are viewing passive data. Even when you download program, the programs code is still only passive data until you execute it. However, second type of object can be transmitted to your computer: a dynamic, self-executing program. Such a program is an active agent on the client computer, yet is initiated by the server. For example, a program might be provided by the server to display properly the data that the server is sending. As desirable as dynamic, networked programs are, they also present serious problems in the areas of security and portability. Prior to Java, cyberspace was effectively closed to half the entities that now live there. As you will see, Java addresses those concerns and, by doing so, has opened the door to an exciting new form of program: the applet.

JAVA Applets & Applications:


Java can be used to create two types of programs: applications and applets. An application is a program that runs on your computer, under the operating system of that computer. That is, an application created by Java is more or less like one created using C or C++. When used to create applications, Java is not much different from any other computer language. Rather, it is Javas ability to create applets that makes it important. An applet is an application designed to be transmitted over the Internet and executed by a Java-compatible Web browser. An applet is actually a tiny Java program, dynamically downloaded across the network, just like an image, sound file, or video clip. The important difference is that an applet is an intelligent program, not just an animation or media file. In other words, an applet is a program that can react to user input and dynamically changenot just run the same animation or sound over and over.
7 |Page

Automated Test System


As exciting as applets are, they would be nothing more than wishful thinking if Java were not able to address the two fundamental problems associated with them: security and portability. Before continuing, lets define what these two terms mean relative to the Internet.

Advantages of JAVA

8 |Page

Automated Test System


Simple Secure Portable Object-oriented Robust Multithreaded Architecture-neutral Interpreted High performance Distributed Dynamic

Simple
9 |Page

Automated Test System


Java was designed to be easy for the professional programmer to learn and use effectively. Assuming that you have some programming experience, you will not find Java hard to master. If you already understand the basic concepts of object-oriented programming, learning Java will be even easier. Best of all, if you are an experienced C++ programmer, moving to Java will require very little effort. Because Java inherits the C/C++ syntax and many of the object-oriented features of C++, most programmers have little trouble learning Java. Also, some of the more confusing concepts from C++ are either left out of Java or implemented in a cleaner, more approachable manner. Beyond its similarities with C/C++, Java has another attribute that makes it easy to learn: it makes an effort not to have surprising features. In Java, there are a small number of clearly defined ways to accomplish a given task.

Security:
As you are likely aware, every time that you download a normal program, you are risking a viral infection. Prior to Java, most users did not download executable programs frequently, and those who did scanned them for viruses prior to execution. Even so, most users still worried about the possibility of infecting their systems with a virus. In addition to viruses, another type of malicious program exists that must be guarded against. This type of program can gather private information, such as credit card numbers, bank account balances, and passwords, by searching the contents of your computers local file system. Java answers both of these concerns by providing a firewall between a networked application and your computer. When you use a Java-compatible Web browser, you can safely download Java applets without fear of viral infection or malicious intent. Java achieves this protection by confining a Java program to the Java execution environment and not allowing it access to other parts of the computer. (You will see how this is accomplished shortly.) The ability to download applets with confidence that no harm will be done and that no security will be breached is considered by many to be the single most important aspect of Java.
10 | P a g e

Automated Test System

Portability:
As discussed earlier, many types of computers and operating systems are in use throughout the worldand many are connected to the Internet. For programs to be dynamically downloaded to all the various types of platforms connected to the Internet, some means of generating portable executable code is needed. As you will soon see, the same mechanism that helps ensure security also helps create portability. Indeed, Javas solution to these two problems is both elegant and efficient.

Object Oriented
Although influenced by its predecessors, Java was not designed to be source-code compatible with any other language. This allowed the Java team the freedom to design with a blank slate. One outcome of this was a clean, usable, pragmatic approach to objects. Borrowing liberally from many seminal object-software environments of the last few decades, Java manages to strike a balance between the purists everything is an object paradigm and the pragmatists stay out of my way model. The object model in Java is simple and easy to extend, while simple types, such as integers, are kept as high-performance nonobjects.

Robust
The multiplatformed environment of the Web places extraordinary demands on a
11 | P a g e

Automated Test System


program, because the program must execute reliably in a variety of systems. Thus, the ability to create robust programs was given a high priority in the design of Java. To gain reliability, Java restricts you in a few key areas, to force you to find your mistakes early in program development. At the same time, Java frees you from having to worry about many of the most common causes of programming errors. Because Java is a strictly typed language, it checks your code at compile time. However, it also checks your code at run time. In fact, many hard-to-track-down bugs that often turn up in hard-to-reproduce run-time situations are simply impossible to create in Java. Knowing that what you have written will behave in a predictable way under diverse conditions is a key feature of Java. To better understand how Java is robust, consider two of the main reasons for program failure: memory management mistakes and mishandled exceptional conditions (that is, run-time errors). Memory management can be a difficult, tedious task in traditional programming environments. For example, in C/C++, the programmer must manually allocate and free all dynamic memory. This sometimes leads to problems, because programmers will either forget to free memory that has been previously allocated or, worse, try to free some memory that another part of their code is still using. Java virtually eliminates these problems by managing memory allocation and deallocation for you. (In fact, deallocation is completely automatic, because Java provides garbage collection for unused objects.) Exceptional conditions in traditional environments often arise in situations such as division by zero or file not found, and they must be managed with clumsy and hard-to-read constructs. Java helps in this area by providing object-oriented exception handling. In a well-written Java program, all run-time errors canand shouldbe managed by your program.

Multithreaded
Java was designed to meet the real-world requirement of creating interactive,
12 | P a g e

Automated Test System


networked programs. To accomplish this, Java supports multithreaded programming, which allows you to write programs that do many things simultaneously. The Java run-time system comes with an elegant yet sophisticated solution for multiprocess synchronization that enables you to construct smoothly running interactive systems. Javas easy-to-use approach to multithreading allows you to think about the specific behavior of your program, not the multitasking subsystem.

Architectural Neutral
A central issue for the Java designers was that of code longevity and portability. One of the main problems facing programmers is that no guarantee exists that if you write a program today, it will run tomorroweven on the same machine. Operating system upgrades, processor upgrades, and changes in core system resources can all combine to make a program malfunction. The Java designers made several hard decisions in the Java language and the Java Virtual Machine in an attempt to alter this situation. Their goal was write once; run anywhere, any time, forever. To a great extent, this goal was accomplished.

Interpreted & high performance


As described earlier, Java enables the creation of cross-platform programs by compiling into an intermediate representation called Java bytecode. This code can be interpreted on any system that provides a Java Virtual Machine. Most previous attempts at crossplatform solutions have done so at the expense of performance. Other interpreted systems, such as BASIC, Tcl, and PERL, suffer from almost insurmountable performance deficits. Java, however, was designed to perform well on very low-power CPUs. As explained earlier, while it is true that Java was engineered for interpretation, the Java bytecode was carefully designed so that it would be easy to translate directly into native machine code for very high performance by using a just-in-time compiler. Java run-time systems that provide this feature lose none of the benefits of the platform-independent
13 | P a g e

Automated Test System


code. High-performance cross-platform is no longer an oxymoron

Distributed
Java is designed for the distributed environment of the Internet, because it handles TCP/IP protocols. In fact, accessing a resource using a URL is not much different from accessing a file. The original version of Java (Oak) included features for intraaddress-space messaging. This allowed objects on two different computers to execute procedures remotely. Java revived these interfaces in a package called Remote Method Invocation (RMI). This feature brings an unparalleled level of abstraction to client/ server programming.

Dynamic
Java programs carry with them substantial amounts of run-time type information that is used to verify and resolve accesses to objects at run time. This makes it possible to dynamically link code in a safe and expedient manner. This is crucial to the robustness of the applet environment, in which small fragments of bytecode may be dynamically updated on a running system.

JDBC Connectivity-Java Database Connectivity

14 | P a g e

Automated Test System


JDBC is Java application programming interface that allows the Java programmers to access database management system from Java code. In short JDBC helps the programmers to write java applications that manage these three programming activities: 1. It helps us to connect to a data source, like a database. 2. It helps us in sending queries and updating statements to the database. 3. Retrieving and processing the results received from the database in terms of answering to your query.

Database:
A database is an organized collection of information. A simple example of a database are like your telephone directory, recipe book etc. A Relational model is the basis for any relational database management system (RDBMS). A relational model has mainly three components:

1. A collection of objects or relations,. 2. Operators that act on the objects or relations. 3. Data integrity methods. To design a database we need three things: 1. Table 2. Rows 3. Columns

SOFTWARE DEVELOPMENT LIFE CYCLE


15 | P a g e

Automated Test System

The Systems Development Life Cycle (SDLC), or Software Development Life Cycle in systems engineering, information systems and software engineering, is the process of creating or altering systems, and the models and methodologies that people use to develop these systems. The concept generally refers to computer or information systems. Emphasis on this article (SDLC) is on man-made technological life-cycle. But there are many other life-cycle models to choose from. This includes ecological life cycles, for every life cycle, whether biological or technological, has a beginning and an end. In software engineering the SDLC concept underpins many kinds of software development methodologies. These methodologies form the framework for planning and controlling the creation of an information system[1]: the software development process. In project management a project can be defined both with a project life cycle (PLC) and an SDLC, during which slightly different activities occur. According to Taylor (2004) "the project life cycle encompasses all the activities of the project, while the systems development life cycle focuses on realizing the product requirements".

Figure:3 Model of the Systems Development Life Cycle


16 | P a g e

Automated Test System


with the Maintenance bubble highlighted.

The System Development Life Cycle framework provides a sequence of activities for system designers and developers to follow. It consists of a set of steps or phases in which each phase of the SDLC uses the results of the previous one. A Systems Development Life Cycle (SDLC) adheres to important phases that are essential for developers, such as planning, analysis, design, and implementation, and are explained in the section below. A number of system development life cycle (SDLC) models have been created: waterfall, fountain, spiral, build and fix, rapid prototyping, incremental, and synchronize and stabilize. The oldest of these, and the best known, is the waterfall model: a sequence of stages in which the output of each stage becomes the input for the next. These stages can be characterized and divided up in different ways, including the following:

Project planning, feasibility study: Establishes a high-level view of the intended project and determines its goals.

Systems analysis, requirements definition: Defines project goals into defined functions and operation of the intended application. Analyzes end-user information needs.

Systems design: Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation.

Implementation: The real code is written here.

17 | P a g e

Automated Test System

Integration and testing: Brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability.

Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business.

Maintenance: What happens during the rest of the software's life: changes, correction, additions, moves to a different computing platform and more. This, the least glamorous and perhaps most important step of all, goes on seemingly forever.

Introduction to Automated Test System


Automated Test System is basically intended at developing software for providing an Automated System for the students of MMU. We will be developing this software because of the following reasons:

1. Presently, if the teachers

conduct any objective test, they have to check the answer sheets manually which is time consuming.

2. Students cannot do practice of attempting objective question papers. 3. Generation of results manually might result in errors. The Automated Test System will
be overcoming the above mentioned problems and will be providing the following features:

4. There will be a real time testing environment.


18 | P a g e

Automated Test System

5. Test creation will become easier which will be including incorporation of new questions
and deletion and modification of already existing questions periodically.

6. Paper pattern which includes duration of test, number of questions of various levels and
marking scheme; will have flexibility, i.e. faculty will have such options.

7. Results and the answers will be displayed instantaneously just after the completion of
test.

8. The records of the students will be updated in their profile after the completion of their
test for future references.

9. There will be different level of questions in the paper so that the judgement of students
knowledge can be done efficiently.

10. 11.

There will be zero paper work. The students will have to get themselves registered before they proceed further.

Background

EXISTING SYSTEM
The whole process of assigning test and evaluating their scores after the test, was done manually till date. Processing the test paper i.e. checking and distributing respective scores used to take time when the software was not installed.

19 | P a g e

Automated Test System


DISADVANTAGES OF CURRENT SYSTEM
The current system is very time consuming.

It is very difficult to analyze the exam manually.

To take exam of more candidates more invigilators are required but no need of invigilator in case of on line exam.

Results are not precise as calculation and evaluations are done manually.

The chances of paper leakage are more in current system as compared to proposed system.

Result processing takes more time as it is done manually

System Model

Automates Test System will provide a basis for effective fulfillment of conducting Automated tests as a replacement for the paper based tests which are conducted during the internals in the college. It is a generic software which is not specifically for MMU. but can be used by any college, school or institute. The only necessary condition for the usage of this software is that there should be following users:
20 | P a g e

Automated Test System


Administrator: He is the person who will be responsible for maintaining the whole system. He will have access to the profile of every student which will give the record of the performance of that student in various tests he gave. He will be provided with the effective test system supervision. In case the system works only as a practice session the result is not stored in the database ans hence can't be accessed for any further use. This part of the system is enhanced when used in major exam taking institutes.

User: He is the person who will be appearing in the test which will be conducted by the faculty. He will know his result instantaneously. Before all this, he will have to register himself or fill login-id and password if already registered. The person has to select for which he is giving the exam and selects ot and appears for it .The exam result is shown when the user completed the exam.

DATA TABLES

Log Information Table Question Series

Field name
21 | P a g e

Data type

Description

Automated Test System Username Password Fname Doe Subj Conducted Text Text Text Text Text Text Username of user Password provided by the admin Father name Date of exam Subject to appear for If the exam is yet conducted

Question Series Table

Field name
question Ans1 Ans2 Ans3 Ans4
22 | P a g e

Data Type
text Text Text Text Text

Description
Question that examiner puts Answer1 Answer2 Answer3 Answer4

Automated Test System Rightans Subject Number Text Right answer to question Subject chosen

Users Table

Field name username password

Description text text

HARDWARE REQUIREMENT:

Processor: Main memory:

Pentium P3 onwards 128 MB

Hard disk: Modem: Telephone line:

40GB internal chip (any) any landline connection

SOFTWARE REQUIREMENT:
23 | P a g e

Automated Test System

Platform: The operating system requirement of our application software is WINDOWS 98 or higher Front end: JAVA Backend: MS ACCESS

Source code

coding for main (login) class:

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.ArrayList; public class Login extends JDialog { public static String subject;

24 | P a g e

Automated Test System


JLabel lbtop = new JLabel("Login Window"); JCheckBox cb = new JCheckBox("Administrator"); JLabel lbname = new JLabel("Name"); JLabel lbpassword = new JLabel("Password"); JLabel lbsubject = new JLabel("Subject"); JTextField txtname = new JTextField(20); JPasswordField txtpassword = new JPasswordField(20); JComboBox cmbsubject; JButton btlogin = new JButton("Login"); JButton btexit = new JButton("Exit"); Container c = getContentPane(); public Login() { this.setLayout(null); this.setSize(350,420); this.setLocation(300,100); this.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); cmbsubject = new JComboBox(); for(int i=0;i<QuestionSeries.subjects.size();i++) cmbsubject.addItem(QuestionSeries.subjects.get(i)); lbtop.setBounds(120,30,100,20); cb.setBounds(118,60,150,30); lbname.setBounds(55,100,100,20); txtname.setBounds(150,100,100,20); lbpassword.setBounds(55,140,100,20);
25 | P a g e

Automated Test System


txtpassword.setBounds(150,140,100,20); lbsubject.setBounds(55,180,100,20); cmbsubject.setBounds(150,180,100,20); btlogin.setBounds(45,250,80,20); btexit.setBounds(200,250,80,20); c.add(lbtop); c.add(cb); c.add(lbname); c.add(txtname); c.add(lbpassword); c.add(txtpassword); c.add(lbsubject); c.add(cmbsubject); c.add(btlogin); c.add(btexit); btlogin.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ if (cb.isSelected()) checkad(); else check(); } } ); btexit.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ System.exit(0); } }
26 | P a g e

Automated Test System


); setVisible(true); } public void check(){ if( checkUser(txtname.getText(),new String(txtpassword.getPassword()),cmbsubject.getSelectedItem().toString())){ subject = cmbsubject.getSelectedItem().toString(); OnlineTest.studentname=txtname.getText(); OnlineTest.myself = new OnlineTest(); this.setVisible(false); } else{ JOptionPane.showMessageDialog(null,"Invalid login..."); } } public void checkad(){ if(checkUserad(txtname.getText(),new String(txtpassword.getPassword()))){ administrator ad=new administrator(); this.setVisible(false); } else{ JOptionPane.showMessageDialog(null,"Invalid login..."); } } boolean checkUser(String name, String password, String subj) { Connection con = null; Statement st = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn"); } catch(Exception e){ System.out.println("Error connecting : " + e); }
27 | P a g e

Automated Test System

try{ st= con.createStatement(); ResultSet rs= st.executeQuery("Select * from Log_information where username='" + name + "' and password='" + password + "' and subj='" + subj + "' and conducted='N';"); return rs.next(); } catch(Exception ex){ System.out.println("Error checking login : " + ex.getMessage()); return false; } finally{ try { st.close(); } catch (Exception e) { } try { con.close(); } catch (Exception e) { } } } boolean checkUserad(String name, String password) { Connection con = null; Statement st = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn"); } catch(Exception e){ System.out.println("Error connecting : " + e); }

try{ st= con.createStatement();


28 | P a g e

Automated Test System


ResultSet rs= st.executeQuery("Select * from users where username='" + name + "' and password='" + password + "'"); return rs.next(); } catch(Exception ex){ System.out.println("Error checking login : " + ex.getMessage()); return false; } finally{ try { st.close(); } catch (Exception e) { } try { con.close(); } catch (Exception e) { } } } public static void main(String [] args) { new Login(); }

coding for online test class:

import java.awt. *; import java.awt.event.*; import javax.swing.*; import java.sql.*;


29 | P a g e

Automated Test System


import java.util.ArrayList;

class QuestionSeries { static String info =" Online Test Week \n \nINSTRUCTIONS:\nThere are 20 questions in this test and 10 minutes to complete them all.\nThe finish button is highlighted in blue when you reach the end of the test. \nClicking the finish button will display the results with the correct answers marked in light red. \n \nThe timecounter begins when you click on the 'start' button \n \nBest of luck!\n"; static String []question = new String[20]; static String [][]answers =new String[20][500]; static int []n = new int[20]; static String []choice= new String[20]; static int tally = choice.length; static String testtitle="Online Test"; static int timeLimit =10; static int passMark = 35; public static ArrayList<String> subjects = new ArrayList<String>(); public static Connection con = null; public static Statement st = null; public static void loadQuestions(){ ResultSet rs = null; try{ String qry = "select Question,ans1,ans2,ans3,ans4,rightans from questionseries where subject='" + Login.subject + "'"; st = con.createStatement(); rs = st.executeQuery(qry); int i = -1; while( rs.next() && i<19 ){ question[++i] = rs.getString(1); answers[i][0] = rs.getString(2); answers[i][1] = rs.getString(3); answers[i][2] = rs.getString(4); answers[i][3] = rs.getString(5);
30 | P a g e

Automated Test System


n[i] = rs.getInt(6); choice[i] = String.valueOf(n[i]); } try { rs.close(); } catch (Exception e) { } try { st.close(); } catch (Exception e) { } } catch(Exception ex){ System.out.println("Error loading questions : " + ex.getMessage()); } } static{ ResultSet rs=null; try{ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn"); } catch(Exception e){ System.out.println("Error connecting : " + e); }

String qry = "select distinct subject from questionseries"; Statement st = con.createStatement(); rs = st.executeQuery(qry); while( rs.next() ){ subjects.add(rs.getString(1)); } }
31 | P a g e

Automated Test System


catch(Exception e){ System.out.println("Error initializing : " + e); } finally{ try { rs.close(); } catch (Exception e) { } try { st.close(); } catch (Exception e) { } } } } /* OnlineTest class */ public class OnlineTest extends JFrame{ static String studentname =""; static String password =""; static int TOTAL=20; static boolean loginResult; public static OnlineTest myself;

int seconds, minutes; int quesnum, itemCheck, mark; final String TESTTITLE = QuestionSeries.testtitle; final int TIMELIMIT = QuestionSeries.timeLimit; final int PASS = QuestionSeries.passMark; String []answers = new String[TOTAL]; JButton []choice_button = new JButton[6]; JTextArea answerboxes[] = new JTextArea[4]; JRadioButton []boxes = new JRadioButton[4]; JTextPane pane = new JTextPane(); JLabel student, choose, message, timecounter, testresult; boolean start_test, check_answer, allowRestart, finishtest; Northwindow panelNorth = new Northwindow();
32 | P a g e

Automated Test System


Southwindow panelSouth = new Southwindow(); Centerwindow panelCenter = new Centerwindow();

/* OnlineTest Constructor */ protected OnlineTest(){ QuestionSeries.loadQuestions(); for (int i=0; i<TOTAL; i++) answers[i] =""; getContentPane().setLayout(new BorderLayout() ); getContentPane().add("North", panelNorth); getContentPane().add("South", panelSouth); getContentPane().add("Center", panelCenter); int width = 0, height=0; //for what we've used if(java.awt.Toolkit.getDefaultToolkit().getScreenSize().getWidth()<799) {width=640;height=460;} else {width=720; height=540; } setSize(width,height); Dimension dim = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); setLocation((dim.width-width)/2, (dim.height-height)/2); setTitle(" "+QuestionSeries.testtitle); setDefaultCloseOperation( EXIT_ON_CLOSE ); setVisible(true); } /** ** Northwindow class **/ class Northwindow extends JPanel{ /** ** Northwindow constructor **/ public Northwindow(){ setLayout(new GridLayout(2,2)); setBackground(new Color(230, 230, 255));
33 | P a g e

Automated Test System


student = new JLabel("\t Welcome : "+studentname+" to the Online Java Test"); student.setFont(new Font("",Font.BOLD,16) ); message = new JLabel(); message.setForeground(Color.blue); add(student); add(message); add(new JLabel(" ") ); add(new JLabel(" ") ); setBorder(BorderFactory.createEtchedBorder() ); } } /** ** Southwindow class **/ class Southwindow extends JPanel{ public Southwindow(){ String []key = {"","start:","next:","finish:","check next:","check previous:"}; for(int i=0; i<choice_button.length; i++) { choice_button[i] = new JButton(key[i]); choice_button[i].addActionListener(new ActionHandler() ); if(i !=0)add(choice_button[i]); } setBorder(BorderFactory.createEtchedBorder() ); } } /** ** Centerwindow class **/ class Centerwindow extends JPanel{ public Centerwindow(){ setLayout(new GridLayout(1,2) ); JScrollPane west = new JScrollPane(pane); pane.setForeground(Color.red); pane.setFont(new Font ("monospaced",0,12) ); pane.setText(QuestionSeries.info); pane.setEditable(false);
34 | P a g e

Automated Test System


JPanel east = new JPanel(); east.setLayout(new BorderLayout() ); JPanel northEast = new JPanel(); northEast.setBackground(new Color(230, 230, 255) ); east.add("North", northEast); JPanel westEast = new JPanel(); westEast.setLayout(new GridLayout(6,1) ); east.add("West", westEast); JPanel centerEast = new JPanel(); centerEast.setLayout(new GridLayout(6,1) ); centerEast.setBackground(new Color(255,255,200)); east.add("Center", centerEast); timecounter = new JLabel(" There are "+TOTAL+" questions in total"); timecounter.setFont(new Font ("Arial",Font.BOLD,16) ); timecounter.setForeground(new Color(0,90,20) ); northEast.add(timecounter); westEast.add(new JLabel(" ")); String []boxs = {" A ", " B ", " C ", " D "}; for(int i=0; i<boxes.length; i++) { boxes[i] = new JRadioButton(boxs[i]); boxes[i].addItemListener(new ItemHandler() ); westEast.add(boxes[i]); } westEast.add(new JLabel(" ") ); choose = new JLabel(" CHOOSE CORRECT ANSWERS"); choose.setBorder(BorderFactory.createEtchedBorder() ); centerEast.add(choose); JScrollPane panes[] = new JScrollPane[4]; for(int i=0; i<answerboxes.length; i++){ answerboxes[i] = new JTextArea(); answerboxes[i].setBorder(BorderFactory.createEtchedBorder() ); answerboxes[i].setEditable(false); answerboxes[i].setBackground(Color.white); answerboxes[i].setFont(new Font("",0,12) ); answerboxes[i].setLineWrap(true); answerboxes[i].setWrapStyleWord(true); panes[i] = new JScrollPane(answerboxes[i]);
35 | P a g e

Automated Test System


centerEast.add(panes[i]); } if(TIMELIMIT >0)testresult = new JLabel(studentname+", You have only : "+TIMELIMIT+" minutes to complete."); else testresult = new JLabel(" There is no time limit for this test"); testresult.setBorder(BorderFactory.createEtchedBorder() ); centerEast.add(testresult); add(west); add(east); } } /** ** ActionHandler class to handle all the action events from the buttons. **/ class ActionHandler implements ActionListener{ /* actionPerformed method */ public void actionPerformed(ActionEvent evt){ String source = evt.getActionCommand(); if(source.equals("start:")){ choice_button[1].setVisible(false); start_test=true; allowRestart=true; if(TIMELIMIT >0)new Timer(); // inner Timer class panelSouth.remove(choice_button[1]); //start displayquestion(); } if(start_test){ if(source.equals("previous:")) { recordanswer(); quesnum--; if(quesnum == -1) quesnum=TOTAL-1; checkteststatus(); displayquestion(); } if(source.equals("next:")) { recordanswer(); quesnum++;
36 | P a g e

Automated Test System


if(quesnum == TOTAL-1) finishtest=true; if(quesnum == TOTAL) quesnum=0; checkteststatus(); displayquestion(); } if(source.equals("finish:")) { if (finishtest){ recordanswer(); quesnum = 0; choice_button[4].setBackground(Color.lightGray); timecounter.setForeground(Color.blue); timecounter.setFont(new Font ("Arial",0,14) ); start_test=false; check_answer=true; panelSouth.add(choice_button[0]); mark_ques(); displayquestion(); checkteststatus(); calculateResult(); } else JOptionPane.showMessageDialog(null,"Cycle through all questions before pressing finish", "User Message",JOptionPane.INFORMATION_MESSAGE); } } if (check_answer){ if(source.equals("check next:")) { quesnum++; if(quesnum == TOTAL) quesnum=0; mark_ques(); displayquestion(); checkteststatus(); } if(source.equals("check previous:")) { quesnum--; if(quesnum == -1)
37 | P a g e

Automated Test System


quesnum=TOTAL-1; mark_ques(); displayquestion(); checkteststatus(); } } validate(); } /* Timer class */ class Timer extends Thread implements Runnable{ public Timer(){ new Thread(this).start(); } public void run() { while(start_test){ try { Thread.sleep(1000); seconds++; if(seconds % 60 == 0 && seconds != 0){ seconds -= 60; minutes++; } timecounter.setText(" Time Counter: "+minutes+" mins : "+seconds+" secs "); if(minutes==TIMELIMIT){ start_test=false; endTest(); } } catch(InterruptedException ex) { System.out.print(ex); } } } } /* checkteststatus method */ public void checkteststatus(){
38 | P a g e

Automated Test System


if((quesnum == TOTAL1)&&(start_test))choice_button[3].setBackground(Color.green); else choice_button[4].setBackground(Color.lightGray); if(answers[quesnum].length() >0){ for(int i=0; i<QuestionSeries.choice[quesnum].length(); i++) boxes[Integer.parseInt(answers[quesnum].substring(i,i+1) )1].setSelected (true); } else for(int i=0; i<boxes.length; i++)boxes[i].setSelected(false); } /* displayquestion method */ public void displayquestion(){ int j = quesnum+1; pane.setText(QuestionSeries.question[quesnum]); if(start_test)message.setText("Question "+j+" out of "+TOTAL); for (int i=0; i<4; i++)answerboxes[i].setText(QuestionSeries.answers[quesnum][i]); if(start_test){ String temp=""; /*if(QuestionSeries.n[quesnum]==1) temp="<html>&nbsp;&nbsp;&nbsp;Choose only <b>ONE</b> Option</html>"; else if(QuestionSeries.n[quesnum]==2) temp="<html>&nbsp;&nbsp;Choose <b>TWO </b> Options</html>"; else if(QuestionSeries.n[quesnum]==3) temp="<html>&nbsp;&nbsp;Choose <b>THREE</b> Options</html>"; else temp="<html>&nbsp;&nbsp;<b>ALL are true</b> true</html>";*/ choose.setText(temp); } else { timecounter.setText(" Your choices are shown in the boxes"); choose.setText(" Correct answers are marked in light red."); } } /* record answer method */ public void recordanswer(){ String tmp = ""; for(int i=0; i<boxes.length; i++) if(boxes[i].isSelected() ) tmp +=i+1;
39 | P a g e

Automated Test System


answers[quesnum] = tmp; } /* endTest method */ public void endTest(){ message.setText("TIME OVER: please press 'finish'"); choice_button[3].setEnabled(false); choice_button[4].setEnabled(false); choice_button[2].setEnabled(true); } /* mark_ques() method to highlight correct answers */ public void mark_ques(){ for(int i=0; i<boxes.length; i++)boxes[i].setSelected(false); for(int i=0; i<answerboxes.length; i++){ try{ answerboxes[i].setBackground(Color.white); } catch(Exception ex){ } } for(int i=0; i<QuestionSeries.choice[quesnum].length(); i++){ try{ answerboxes[Integer.parseInt(QuestionSeries.choice[quesnum].substring(i,i+1))1].setBackground(Color.red); } catch(Exception ex){ } } if(QuestionSeries.choice[quesnum].equals(answers[quesnum])) message.setText("Answer correct, well done!"); else message.setText("Sorry, you got this one wrong."); }
40 | P a g e

Automated Test System


public void calculateResult(){ mark=0; double temp=0.0; java.text.DecimalFormat df = new java.text.DecimalFormat("#0.#"); for(int i=0; i<TOTAL; i++) if(QuestionSeries.choice[i].equals(answers[i]))mark++; temp=(double)mark; if((temp*100/TOTAL) >=PASS) testresult.setText(" Well done "+studentname + ", you are passed"); else testresult.setText(studentname + ", better luck next time "); student.setText(" Final score for "+studentname+": "+mark+" out of "+TOTAL+": "+df.format(temp/TOTAL*100)+"%"); new Resultwindow().setVisible(true); } } /* Resultwindow class */ class Resultwindow extends JFrame{ Resultwindow() { super( studentname+" results: " +(mark*100/TOTAL >=PASS ? "PASS":"FAIL") ); Container cont = getContentPane(); cont.setLayout(new GridLayout(TOTAL/2+3,5,2,5) ); cont.setBackground(new Color(255,220,255) ); cont.add(new JLabel(" "+"Marks: "+mark+"/"+TOTAL+": "+"Percentage: "+ (mark*100/TOTAL)+"%") ); for(int i=0; i<3; i++)cont.add(new JLabel() ); String temp[] = new String[TOTAL]; for(int i=0; i<TOTAL; i++){ if(QuestionSeries.choice[i].equals(answers[i])) temp[i]="correct"; else temp[i]="wrong"; } for(int i=0; i<TOTAL; i++) cont.add(new JLabel(" Question "+(i+1)+": "+temp[i]) ); pack(); setLocation(200,200);
41 | P a g e

Automated Test System


} } /* ItemHandler class */ class ItemHandler implements ItemListener { public void itemStateChanged(ItemEvent evt) { if(start_test) { for(int i=0; i<4 ; i++) if(boxes[i].isSelected() ) itemCheck++; if(itemCheck > 1) { java.awt.Toolkit.getDefaultToolkit().beep(); if(QuestionSeries.n[quesnum]==1) JOptionPane.showMessageDialog(null,"<html><font size='4' color='00308a'><center>"+ "There is only 1 possible<br> answer to question "+(quesnum+1)+ "<html>","User Information Message",JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null,"<html><font size='4' color='00308a'><center>"+ "There are only 1 possible<br> answers to question "+(quesnum+1)+ "<html>","User Information Message",JOptionPane.INFORMATION_MESSAGE); } itemCheck=0; } } } }

42 | P a g e

Automated Test System

coding for class that register user:

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.ArrayList; public class exsched extends JDialog { public static String subject; JLabel lbtop = new JLabel("SET STUDENTS DETAIL"); JLabel lbname = new JLabel("NAME"); JLabel lbfname = new JLabel("FATHERS NAME"); JLabel lbdoe = new JLabel("DATE OF EXAM"); JLabel lbsub = new JLabel("SELECT SUBJECT"); JLabel lbspass = new JLabel("SET PASSWORD"); JLabel lbpass = new JLabel("CONFIRM PASSWORD"); JButton btexit = new JButton("Exit"); JButton btsave = new JButton("Save"); JTextField txtname=new JTextField(20);
43 | P a g e

Automated Test System


JTextField txtfname = new JTextField(20); JTextField txtdoe = new JTextField(20); JComboBox txtsub = new JComboBox(); JPasswordField txtspass = new JPasswordField(20); JPasswordField txtpass = new JPasswordField(20); Container c = getContentPane(); public exsched() { this.setLayout(null); this.setSize(400,350); this.setLocation(100,100); this.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); lbtop.setBounds(140,40,200,40); for(int i=0;i<QuestionSeries.subjects.size();i++) txtsub.addItem(QuestionSeries.subjects.get(i)); lbname.setBounds(50,100,250,20); txtname.setBounds(200,100,100,20); lbfname.setBounds(50,120,250,20); txtfname.setBounds(200,120,100,20); lbdoe.setBounds(50,140,250,20); txtdoe.setBounds(200,140,100,20); lbsub.setBounds(50,160,250,20); txtsub.setBounds(200,160,100,20); lbspass.setBounds(50,180,250,20); txtspass.setBounds(200,180,100,20); lbpass.setBounds(50,200,250,20); txtpass.setBounds(200,200,100,20); btsave.setBounds(50,230,80,20);
44 | P a g e

Automated Test System


btexit.setBounds(200,230,80,20);

c.add(lbtop); c.add(lbname); c.add(txtname); c.add(lbfname); c.add(txtfname); c.add(lbdoe); c.add(txtdoe); c.add(lbsub); c.add(txtsub); c.add(lbspass); c.add(txtspass); c.add(lbpass); c.add(txtpass); c.add(btsave); c.add(btexit);

btsave.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ if (!perfor()) System.out.println("Error in Saving"); txtname.setText(""); txtfname.setText(""); txtdoe.setText(""); txtpass.setText(""); txtspass.setText(""); } } );

btexit.addActionListener(
45 | P a g e

Automated Test System


new ActionListener() { public void actionPerformed(ActionEvent ae){ //System.exit(0); setVisible(false); } } ); setVisible(true); }

public boolean perfor() { Connection con = null; Statement st = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn"); } catch(Exception e){ System.out.println("Error connecting : " + e); return false; }

try{ String str="INSERT INTO log_information ( username, [password], fname, doe, subj, conducted ) VALUES('" + txtname.getText() + "','" + txtpass.getText() + "','" + txtfname.getText() + "','" + txtdoe.getText() + "','" + txtsub.getSelectedItem().toString() + "','N')"; st=con.createStatement(); int rowcount= st.executeUpdate(str); } catch(Exception ex){ System.out.println("Error checking login : " + ex.getMessage()); return false; }
46 | P a g e

Automated Test System


finally{ try { st.close(); } catch (Exception e) { } try { con.close(); } catch (Exception e) { } } return true; }

public static void main(String [] args) { new exsched(); }

coding for class that add question :


import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.ArrayList; public class addques extends JDialog { public static String subject; JLabel lbtop = new JLabel("ADD QUESTION");
47 | P a g e

Automated Test System


JLabel lbadd = new JLabel("question"); JLabel lboption1 = new JLabel("Option1"); JLabel lboption2 = new JLabel("Option2"); JLabel lboption3 = new JLabel("Option3"); JLabel lboption4 = new JLabel("Option4"); JLabel lbright = new JLabel("Right"); JLabel lbsub = new JLabel("Subject"); JButton btexit = new JButton("Exit"); JButton btsave = new JButton("Save"); JTextArea txtques=new JTextArea(4,20); JTextField txtoption1 = new JTextField(20); JTextField txtoption2 = new JTextField(20); JTextField txtoption3 = new JTextField(20); JTextField txtoption4 = new JTextField(20); JTextField txtr = new JTextField(20); JTextField txts = new JTextField(20); Container c = getContentPane(); public addques() { this.setLayout(null); this.setSize(400,500); this.setLocation(100,100); this.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); lbtop.setBounds(160,40,100,40);
48 | P a g e

Automated Test System


lbadd.setBounds(50,100,100,20); txtques.setBounds(160,100,200,80); lboption1.setBounds(50,200,100,20); txtoption1.setBounds(160,200,100,20); lboption2.setBounds(50,220,100,20); txtoption2.setBounds(160,220,100,20); lboption3.setBounds(50,240,100,20); txtoption3.setBounds(160,240,100,20); lboption4.setBounds(50,260,100,20); txtoption4.setBounds(160,260,100,20); lbright.setBounds(50,280,100,20); txtr.setBounds(160,280,100,20); lbsub.setBounds(50,300,100,20); txts.setBounds(160,300,100,20); btsave.setBounds(50,350,80,20); btexit.setBounds(260,350,80,20);

c.add(lbtop); c.add(lbadd); c.add(txtques); c.add(lboption1); c.add(txtoption1); c.add(lboption2); c.add(txtoption2); c.add(lboption3); c.add(txtoption3); c.add(lboption4); c.add(txtoption4); c.add(lbright); c.add(txtr); c.add(lbsub); c.add(txts); c.add(btsave); c.add(btexit);

btsave.addActionListener( new ActionListener()


49 | P a g e

Automated Test System


{ public void actionPerformed(ActionEvent ae){ if (!perfor()) System.out.println("Error in Saving"); txtoption1.setText(""); txtoption2.setText(""); txtoption3.setText(""); txtoption4.setText(""); txtr.setText(""); txts.setText(""); txtques.setText(""); } } );

btexit.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ //System.exit(0); setVisible(false); } } ); setVisible(true); }

public boolean perfor(){ Connection con = null; Statement st = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn");
50 | P a g e

Automated Test System


} catch(Exception e){ System.out.println("Error connecting : " + e); return false; }

try{ String str="INSERT INTO QuestionSeries VALUES('" + txtques.getText() + "','" + txtoption1.getText() + "','" + txtoption2.getText() + "','" + txtoption3.getText() + "','" + txtoption4.getText() + "'," + txtr.getText() + ",'" + txts.getText() + "' )"; st=con.createStatement(); int rowcount= st.executeUpdate(str); } catch(Exception ex){ System.out.println("Error checking login : " + ex.getMessage()); return false; } finally{ try { st.close(); } catch (Exception e) { } try { con.close(); } catch (Exception e) { } }

return true; }

public static void main(String [] args) { new addques(); }

51 | P a g e

Automated Test System


}

coding for administrator class :


import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.*; import java.util.ArrayList; public class administrator extends JDialog { public static String subject; JLabel lbtop = new JLabel("ADMINISTRATOR"); JButton btadd= new JButton("ADD QUST"); JButton btuser = new JButton("REGISTER USER"); JButton btexit=new JButton("EXIT"); Container c = getContentPane(); public administrator() { this.setLayout(null); this.setSize(500,300); this.setLocation(100,100); this.addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); lbtop.setBounds(190,40,100,20);
52 | P a g e

Automated Test System


btadd.setBounds(50,100,120,20); btuser.setBounds(300,100,150,20); btexit.setBounds(195,200,100,20); c.add(lbtop); c.add(btadd); c.add(btuser); c.add(btexit); btadd.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ // check(); new addques(); } } ); btuser.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ new exsched(); } } ); btexit.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae){ System.exit(0); } } ); setVisible(true); }
53 | P a g e

Automated Test System


/* public void check(){ Connection con = null; try { // // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:questiondsn"); a } catch(Exception e){ System.out.println("Error connecting : " + e); }

finally{ try { con.close(); } catch (Exception e) { } } }*/ public static void main(String [] args) { new administrator(); }

PROJECT SCREEN AND ITS IMPLEMENTATION

54 | P a g e

Automated Test System

Figure 1 Login screen of Automated Test System


This is the login screen of the system. Here the administrator gives the username and password .The default username that has been set is admin and password is admin. This is only for security purpose. If the user is admin then he has to check administrator and other cases the subject is slected and user(student) filles its username and password

55 | P a g e

Automated Test System

Figure 2 Home screen of Automated Test system


This screen is the home screen of the automated test system in case the user is admin.. This screen is used to access all the features of the automated test system. The admin can add question to the database the user answers and can register new user .

56 | P a g e

Automated Test System

Figure 3 Add question


This screen is the admin panel in which the admin can add question to the system .The question once added to the system can only be edited in the database. Question added are stored in the table in database The admin fills out the various options.

57 | P a g e

Automated Test System

Figure 4 Adding student details


This screen is the admin panel in which the admin can add a new user which is students who appears for the test. The admin here fills out all the necessary details of the students which are necessary to recognize him later. The password is set by the admin to secure the system.

58 | P a g e

Automated Test System

Figure 5 Screen at the start of the test


The screen is displayed at the starting with all the exam instruction..The time counter begins when u hit the "start" key . In this screen a user named Nitin is shown giving exam.

59 | P a g e

Automated Test System

Figure 6 Screen showing error.


In case the user selects two option an error message is displayed asking to tick only one option. This is one of the constraint that has been applied to the system. This constraint make sure that the students doesn't check out all the answer and only one answer is given for each question.

60 | P a g e

Automated Test System

Figure 7 Screen showing result after completion.


This window is displayed at the end of the test to show the result. In the following system the results are not stored in the database as it is just for practice of the user and to understand his lag areas' proper percentage is calculated acc to answers that are answered correctly.

61 | P a g e

Automated Test System


SCOPE:

The Automated Test System is having the following scope:

1. It can be used by the institute itself for conducting objective tests of various subjects. 2. It is generic software, so it can be used by various other institutes, schools and colleges. 3. The students nowadays face so many competitive exams which are objective. So they can
prepare themselves by using this software personally. Even if the faculty doesnt want to conduct test online, then he can at least keep question bank and modify it by using this software.

ADVANTAGES:

Use full for a rural students, where they can improve their knowledge and come across about automated examination. Improves concentration. User friendly. User information is maintained. Cost effective. Data validation is done during data entry itself so that errors are minimized.

62 | P a g e

Automated Test System

Conclusion
The Automated test System is developed using Java and Ms Access fully meets the objectives of the system for which it has been developed. The system has reached a steady state where all bugs have been eliminated. The system is operated at a high level of efficiency and all the teachers and user associated with the system understands its advantage. The system solves the problem. It was intended to solve as requirement specification.

BIBLOGRAPHY
63 | P a g e

Automated Test System

WEBSITES

http://en.wikipedia.org http://www.java-examples.com/ http://www.java2s.com/ http://www.javaworld.com/javaworld/jw-01-1998/jw-01-bookreview.html

Books

Java: The Complete Reference, by Herbert Scheldt. Programming with Java, by E Balaguruswamy. Head First Java 2nd Edition

64 | P a g e

Das könnte Ihnen auch gefallen