Sie sind auf Seite 1von 50

XYZ Institute of Technology

Noida, U.P.


Time Table Generation App

It is always a pleasure to remind the fine
people in the Engineering program for their sincere
guidance I received to uphold my practical as well as
theoretical skills in engineering.
thank_________________________________ for his
support and encouragement so each and every student
could excel in studies.

I would also like to acknowledge and my

heartfelt gratitude to all the faculty member of the
department who helped me throughout the course.
Finally, I would like to express my deep sense
of gratitude to the almighty for showing me the way and
helping in completion of training.



Existing and Proposed System


Salient Features of the System


Software Requirement Analysis

Problem Definition
Feasibility Analysis
Economic Feasibility
Technical Feasibility
Behavioural Feasibility


Life Cycle Model

Waterfall Model


Software Hardware Requirement

Android Studio
Java JDK
Java Programming Language
XML Scripting Language


Software Specification


Hardware Specification


Define Modules and Functionalities


Subject Management Module

Time Table generation Module


Software Design


UML Diagram


Data Flow Diagram


Database Design


E-R Diagram


Test Types
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Database Testing


Installation Manual


Suggestion for future work


JDK Installation
Android Studio Installation

Automatic Time Table Generator is an Android
based application used to generate automatically.
Currently Time Table is managed manually. It
will help to manage all the periods automatically.
Maximum and minimum work load for a faculty for a
day, week and month will be specified for the efficient
generation of time table.
It is a comprehensive time table management
solution for colleges which will help to overcome the
challenges in manually setting the time table.

1. Existing and Proposed System

Normally Time table generation is done
manually. As we know all institutions /organisations
have their own Time tables, managing and maintaining
these will not be difficult. Considering work load with
this scheduling will make it more complex. As
mentioned, when Time table generation is being done, it
should consider the maximum and minimum workload
that is in a college. In those cases Time table generation
is more complex. Also it is a time consuming process.
Automatic Timetable Manager is an Android
based application used to generate Timetable
automatically. It will help user to manage all the periods
automatically. It will produce an excel sheet or a PDF
file of time table generated.

2. Salient Features of the System

Automatic Time Table Manager is an Android
Based Application.
It will help in generating time table automatically.
Proposed System will help to generate time table
automatically and also helps saving time.
There is no need for a faculty to worry about their
time table.
It is a comprehensive time table management
solution for colleges which help to overcome the
challenges in the current system.

3. Software Requirement Analysis

The current problem is setting up of time table
manually. Any absent is there, then assigning that
period to another faculty is not an easy job because at
that time we should consider the maximum workload
for a faculty (assigning extra period should not exceed
the maximum workload).
3.1. Problem Definition
Avoid the complexity of setting and managing
time table manually it will help user to manage
all the periods automatically. Faculty can
receive their period information in their phone.
Initially we will be setting the maximum
workloads for a faculty in a day, week and
month. Main challenge is to manage time table
when any faculty is absent by using this app it
will be very easy to allocate subject for
different faculty.

3.2. Feasibility Analysis

A feasibility study was an evolution of a
proposal designed to determine the difficulty
in carrying out a designated task. Generally, a
development and project implementation.
3.2.1. Economic Feasibilty
To develop the proposed system, it needs no
extra facilities and devices. All dependencies
are satisfied from the open source projects. All
tools used are free, open source and the
programming language is JAVA and XML and
hence, its development is economically
3.2.2. Technical Feasibility
Proposed system is technically feasible
because the proposed system requires only
those hardware and software that are available
in the system. It requires the installation of
JVM, JAVA, Android Studio, Universal
Google USB Driver and SQLite which can be
done for free. Moreover, expandability will be

maintained in the new system. New modules

can be added later on the application, if
required in the future. Additionally, the app
will have user friendly forms and UI.
3.2.3. Behavioural Feasibility
Behavioural Feasibility determines how much
effort will go in the proposed information
system, and in educating and training the user
on the new system. Since the user interface is
very simple and easily understandable, no
training is required for using this app.

3.3. Methodology
The establishment makes use of Software
Engineering Principles in order to obtain
economically developed app that is reliable
and works efficiently on real machine is called
software engineering.
Software Engineering is the discipline whose
aim is:
o Production of quality software.
o Cost within the budget.
o Satisfies all requirement.
Software Process is the way in which we
produce the software. Apart from hiring smart
knowledgeable engineers and buying the latest
development process is also needed, so that
engineers can systematically use the best
technical and managerial practices to
successfully complete their projects.

A Software Life Cycle is a series of

identifiable stages that a software product
undergoes during its lifetime. A software life
cycle model is a descriptive and diagrammatic
representation of the software life cycle. A life
cycle model represents all the activities
required to make a software product transit
through its life cycle phases. It also captures
the order in which these activities are to be

4. Life Cycle Models

There are various life cycle models to improve
the software processes:

Waterfall Model
Prototype Model
Iterative Enhancement Model
Evolutionary Model
Spiral Model

4.1. Waterfall Model

The waterfall model is a sequential design
process, used in software development processes,
in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases
of conception, initiation, analysis, design,
construction, testing, production/implementation
and maintenance.
The waterfall development model originates in
the manufacturing and construction industries:
highly structured physical environments in which
after-the-fact changes are prohibitively costly, if
not impossible. Since no formal software
development methodologies existed at the time,
this hardware-oriented model was simply
adapted for software development.

In Royce's original waterfall model, the following

phases are followed in order:
1. System and software requirements: captured in
a product requirements document
2. Analysis: resulting in models, schema, and
business rules
3. Design: resulting in the software architecture
4. Coding: the development,
integration of software
5. Testing: the systematic
debugging of defects





6. Operations: the installation, migration,

support, and maintenance of complete systems
Thus the waterfall model maintains that one should
move to a phase only when its preceding phase is
reviewed and verified.

Clients may not know exactly what their

requirements are before they see working software
and so change their requirements, leading to
redesign, redevelopment, and retesting, and
increased costs.

Designers may not be aware of future difficulties

when designing a new software product or feature;
in which case, it is better to revise the design than
persist in a design that does not account for any
newly discovered constraints, requirements, or
In response to the perceived problems with the
pure waterfall model, modified waterfall models
were introduced, such as "Sashimi (Waterfall with
Overlapping Phases), Waterfall with Subprojects,
and Waterfall with Risk Reduction".

5. Software and Hardware

Platform forms the foundation on which the
architecture, designed and implementation of a
product is built. System specification define the
full functionality of the system. In many systems
we work on, some functionalities performed in
hardware and some in software. System
specification documents can thus be defined as a
requirements documentation that formally
specifies the system level requirements of an
application. This app developed on Android
5.1. Android Studio
Android Studio is an integrated development
environment (IDE) for developing for the
Android platform. It was announced on May 16,
2013 at the Google I/O conference by Google's
Product Manager, Katherine Chou. Android
Studio is freely available under the Apache
License 2.0.

Android Studio was in early access preview stage

starting from version 0.1 in May 2013, then
entered beta stage starting from version 0.8
which was released in June 2014. The first stable
build was released in December 2014, starting
from version 1.0.
Based on Jet Brains' IntelliJ IDEA software,
Android Studio is designed specifically for
Android development. It is available for
download on Windows, Mac OS X and Linux,
and replaced Eclipse Android Development
Tools (ADT) as Google's primary IDE for native
Android application development.
5.2. Java JDK
The Java Development Kit (JDK) is an
implementation of either one of the
Java SE, Java EE or Java ME platforms
released by Oracle Corporation in the
form of a binary product aimed at Java
developers on Solaris, Linux, Mac OS X
or Windows. The JDK includes a private
JVM and a few other resources to finish
the development of a Java Application.
Since the introduction of the Java
platform, it has been by far the most

widely used Software Development Kit

(SDK). On 17 November 2006, Sun
announced that it would be released
under the GNU General Public License
(GPL), thus making it free software.
This happened in large part on 8 May
2007, when Sun contributed the source
code to the OpenJDK.
5.3. SQLite
SQLite is a relational database management
system contained in a C programming library. In
contrast to many other database management
systems, SQLite is not a clientserver database
engine. Rather, it is embedded into the end
SQLite is ACID-compliant and implements most
of the SQL standard, using a dynamically and
weakly typed SQL syntax that does not guarantee
the domain integrity.
SQLite is a popular choice as embedded database
software for local/client storage in application
software such as web browsers. It is arguably the
most widely deployed database engine, as it is
used today by several widespread browsers,
operating systems, and embedded systems,

among others. SQLite has bindings to many

programming languages.

5.4. Java Programming Language

Java is a general-purpose computer programming
language that is concurrent, class-based, objectoriented, and specifically designed to have as
few implementation dependencies as possible. It
is intended to let application developers "write
once, run anywhere" (WORA), meaning that
compiled Java code can run on all platforms that
support Java without the need for recompilation.
Java applications are typically compiled to
bytecode that can run on any Java virtual
machine (JVM) regardless of computer
architecture. As of 2015, Java is one of the most
popular programming languages in use,
particularly for client-server web applications,
with a reported 9 million developers. Java was
originally developed by James Gosling at Sun
Microsystems (which has since been acquired by
Oracle Corporation) and released in 1995 as a
core component of Sun Microsystems' Java

platform. The language derives much of its

syntax from C and C++, but it has fewer lowlevel facilities than either of them.
The original and reference implementation Java
compilers, virtual machines, and class libraries
were originally released by Sun under
proprietary licences. As of May 2007, in
compliance with the specifications of the Java
Community Process, Sun relicensed most of its
Java technologies under the GNU General Public
License. Others have also developed alternative
implementations of these Sun technologies, such
as the GNU Compiler for Java (bytecode
compiler), GNU Classpath (standard libraries),
and IcedTea-Web (browser plugin for applets).
The latest version is Java 8, which is the only
version currently supported for free by Oracle,
although earlier versions are supported both by
Oracle and other companies on a commercial

5.5. XML Scripting Language

Extensible Markup Language (XML) is a
markup language that defines a set of rules for
encoding documents in a format which is both

human-readable and machine-readable. It is

defined by the W3C's XML 1.0 Specification and
by several other related specifications, all of
which are free open standards.
The design goals of XML emphasize simplicity,
generality and usability across the Internet. It is a
textual data format with strong support via
Unicode for different human languages.
Although the design of XML focuses on
documents, it is widely used for the
representation of arbitrary data structures such
as those used in web services.
Several schema systems exist to aid in the
definition of XML-based languages, while many
application programming interfaces (APIs) have
been developed to aid the processing of XML
The material in this section is based on the XML
Specification. This is not an exhaustive list of all
the constructs that appear in XML; it provides an
introduction to the key constructs most often
encountered in day-to-day use.

6. Software Specification
Operating System

- Windows/Android

- Android
Design Tool
Runtime Environment

- Android Studio
- Dalvik/ART
- SQLite

ART: Android Run Time Environment
JACK: Java Android Compiler Kit

7. Hardware Specification

- MTK/Snapdragon

Clock speed

- 0.5GHz


- 512MB


- 20MB

Processor belonging to any series of vendors

MTK (MediaTek) or Qualcomm Snapdragon will
work fine with the App.

8. Define the modules and their

The proposed system consists of the following
8.1. Subject management Module
Subject management module in this project is
meant for the users. In
this module, subjects are allocated for users.
It does the following tasks:
Give subject , faculty and Semester
View timetable
View leave request
8.2. Timetable Generation Module

It is the important part of project which generate

automatically. IN this module it develop module.
Generation done by considering maximum and
minimum workload for a Faculty (without less
and without exceeding). This will be generated
by admin and viewed by Principal and Faculty
who's are the users of the system.

9. Software Design
The most creative and challenging phase of the
life cycle is system design. The term design
describes a final system and the process by
which it is developed. It refers to the technical
specifications that will be applied in
implementations of the system. The importance
of software design can be stated in a single word
representations of software that can be assessed
for quality. Design is the only way where we can
accurately translate user requirements into a
complete software product or system. Without
design we risk building an unstable system that
might fail if small changes are made. It may as
well be difficult to test, or could be one whos

quality cant be tested. So it is an essential phase

in the development of a software product.

10. UML Diagrams


11. Data Flow Diagrams

The DFD is also known as the bubble chart. It is

a simple graphical formalism that can be used to
represent a system in terms of the input data to
the system, various processing carried out in
these data and the output data generated by the
system. Starting with a set of high-level
functions that a system performance of DFD
model in hierarchically it represents various sub
In a normal convention, logical DFD can be
completed using only four notations:
Represents source or destination of data
Represents Data Flow
Represents a process that transforms incoming
data into outgoing data
Represents Data Source
Function Symbol
A function is represented using a circle. This
symbol is called a process or a bubble. Bubbles
are annotated with the names of corresponding
External Entity Symbol
An external entity such as a librarian, library
member etc is represented by a rectangle. The

external entities are essentially those physical

entities external to the software system, which
interact with the system by inputting data to the
system or by consuming the data produced by the
Data Flow Symbol
A directed arc or an arrow is used as a Data Flow
Symbol. This represents the data flow occurring
between two processes or between an external
entity and a process in direction of the Data
Flow Arrow. Data Flow symbols are annotated
with corresponding data names.
Data Store Symbol
A Data Store represents a logical file; it is
represented using two parallel lines. A logical file
can represent either Data Store Symbol, which
can represent either data structure or a physical
file on disk.
Output Symbol
The output symbol is used when a hardcopy is
produced and the user of the copies cannot be
clearly specified or there are several users of the
output. The DFD at the simplest level is referred
to as the Context Analysis Diagram. These are
expanded by level, each explaining in process in

detail. Processes are numbered for easy

identification and are normally labelled in block
letters. Each data flow is labelled for easy

12. Database design

The system is implemented in such a way that all

the valid
Informations are stored in the database.
Database design converts the data model
developed in logical designing to database
definition. This is supported by database
software. The management of data involves both
the definition of structure of the storage of
information and provision of mechanism for the
manipulation of information. In addition
database system must provide safety of
information handle, despite the system crashes
due to attempts of unauthorized access.
A database is a collection of interrelated data
stored with minimum redundancy to serve many
users quickly and efficiently. In database design,
several views of data must be considered along
with the person who users them. The logical
view is what the data look like, regardless of how
they are stored. The physical view is the way
data exist in physical storage. Tables are
carefully designed aiming to achieve its main
objectives i.e., to make information access easy,
quick, inexpensive and flexible for user.

Normalization is the process of analyzing the

given relation schemas based on their Functional
Dependencies and primary keys to achieve the
desirable properties of Minimizing Redundancy,
Minimizing the insertion, deletion and updating
Normalization is carried out for the following
To structure the data so that perfect
relationship between
entries can be
To permit simple retrieval of data in response
query and report requests.
To reduce the need to restructure or reorganize
data when new application requirement arises.
Normalization consists of various levels:
1. First Normal Form (1NF)
A table is in 1NF if there are no duplicate rows in
the table. Each cell is single valued. Entries in a
column are of the same kind.
2. Second Normal Form (2NF)
Second Normal form is based on the concept of
full functional dependency. A table (relation) is
in 2NF if .It is in First Normal Form and if all
non-key attributes are dependent on the key.
Dependent on only a part of the (composite) key,

the definition of 2NF is sometimes phrased as,

"A table is in 2nF if it is in 1NF and if it has no
partial dependencies.
3. Third Normal Form (3NF)
Third Normal Form is based on the concept of
transitive dependency. A table (relation) is in
3NF if it is in Second Normal Form and if it has
no transitive dependencies.

13. E-R Diagram

14. Testing

Validation and checks

Software validation is achieved through a series
of tests that demonstrate conformity with
requirements. Validation succeeds when software
functions in a manner that can be reasonably
expected by the customer. Here line by line
checking is used to find errors. Comment line
facility is used for checking errors.
Testing is necessary for the success of the
system. During testing, program to be tested is
executed with a set of test data and the output of
the program for test data is evaluated to
determine if the programs are performing as
Validation means checking the quality of
software in both simulated and live
environments. System validation ensures that the
user can in fact match his/her claims, especially
system performance. True validation is verified
by having each system tested.
First the application goes through a phase often
referred as alpha testing in which the errors and
failures based on simulated user requirements are
verified and studied. The modified software is
then subjected to phase two called beta testing in
the actual users site or live environment. After a
scheduled time, failures and errors are

enhancements are made before the package is

In a software development project, errors can be
injected at any stage during development. Even if
error detecting and eliminating techniques were
employed in the previous analysis and design
phases, errors are likely to remain undetected.
Unfortunately, these errors will be reflected in
the code. Since code is frequently the only
product that can be executed and whose actual
behaviour can be observed, testing is the phase
where the errors remaining from the earlier
phases must be detected in addition to detecting
the errors introduced during coding activity.
Having proper test cases is central to successful
testing. We would like to determine a set of test
cases such that successful execution of all of
them implies that there are no errors in the
program. Therefore, our project crew aimed at
selecting the test cases such that the maximum
possible numbers of errors are detected by the
minimum number of test cases.
For this we have adopted both manual testing
techniques and automated testing techniques.
First and foremost, testing was done by means of
Inspection, where participants manually examine
system deliverables for occurrences of wellknown errors. Inspection team consists of 5

members who are trained for their tasks. Items

for inspection include completeness of the
design, and functional requirements, internal
completeness and consistency in definition and
usage of terminology, and correctness of the
interfaces between modules. Syntax, grammar,
and some other routine errors were checked by
automated inspection software, so manual
inspection checks are used for more subtle errors.
And we have done the testing following design
phase prior to implementation.
Testing objectives are:
Testing is a process of executing a program
with the intent of finding an error.
A good test case is one that has a high
probability of finding an as-yet- undiscovered
A successful test is one that uncovers an asyet-undiscovered error. Automated testing is
performed at four different levels.

14.1. Test Types

1. Unit Testing

2. Integration Testing
3. System Testing
4. Acceptance Testing

Unit Testing

In unit testing different modules are tested

against the specifications produced during
design phase for the modules in the project and
the goal is to test the internal logic of the
In order to perform the unit testing, the best
approach we adopted in this project is
functional testing in which inputs are given to
the system for which the expected results are
known, boundary values and special values.
For this the module selected was advance
details where the balance amount falls to
negative indicating there is no more payment
required. Secondly performance testing was
done to determine the amount of execution
time spent in various aspects like the module,
program throughput, response time, and the
device utilization by the program unit.

Integration Testing

The primary goal of the integration testing is to

see if the modules can be integrated properly.
The integration testing is therefore considered
as testing the design. Thus in the integration
testing step, all the errors uncovered are
corrected for the next testing steps.

System Testing

System testing is similar to integration testing,

but instead of integrating modules into
programs for testing, programs are integrated
into systems for testing the interfaces between
programs in a system. System testing can be
defined in many ways, but a simple definition
is that validation succeeds when the software
functions in a manner that can be reasonably
expected by the customer.

Acceptance Testing

Once the system tests have been satisfactory

completed, the system is ready for acceptance
testing. Acceptance testing is the process
whereby actual users test a completed
information system in the environment where
it will eventually be used, the end result of
which is the users acceptance or rejection.

The admin and staff at Company accepted

proposed system after testing.
14.2. Database Testing
The accuracy and integrity of data stored by
the server is tested. Transactions posted by
client applications are examined to ensure that
data are properly stored, updated and retrieved.
Archiving is also tested.

15. Conclusion
Automatic Timetable Generator is a android
based application for generating timetable
automatically. It is a great difficult task that to
manage many Faculty's and allocating subjects
for them at a time manually. So proposed system

will help to overcome this disadvantage. Thus we

can generate timetable for any number of courses
and multiple semesters. This system will help to
create dynamic pages so that for implementing
such a system we can make use of the different
tools are widely applicable and free to use




Automatic Time Table Generator is an Android

based application which could further be made
into a Cloud based application. A client-server
type app can pass notifications to individual
faculties. A student portal could also be added so

that every student could stay updated of their

time table.

o Software Engineering Fifth edition by R.
Pressman, McGraw-Hill Publication, 1997



18. Appendices
The purpose of system implementation can be
summarized as follows: making the new system
available to a prepared set of users (deployment),
maintenance of the system within the performing
organization. At a finer level, deploying the
system consists of executing all steps necessary
to educate the consumers on the use of the new
system, placing the newly developed system into

production, confirming that all data required at

the start of the operation are available and
accurate, and validating that, the functions that
interact with the system are functioning properly.
18.1. Installation Manual
Working of this software is required to set some
basic requirements concentrate on hardware and
software requirements.

JDK Installation

Install the latest JDK, but it can be messy if

you have multiple versions of JDK/JRE.If you
have previously installed older version of
JDK/JRE, un-install ALL of them.
Step 1: Download JDK
Go to Java SE download site @
Click the "Download" button under "JDK"
of "Java SE 7".
Check "Accept License Agreement".
Choose your operating platform, e.g.,
Windows x86 for 32-bit Windows OS or
Windows x64 for 64-bit Windows OS. You can

check whether your Windows OS is 32-bit or

64-bit via "Control Panel" System under
the System Type".
Step 2: Install JDK and JRE
Run the downloaded installer which
installs both the JDK (Java Development Kit)
and JRE (Java Runtime). By default, the JDK
will be installed in directory "C:\Program
Files\Java\jdk1.7.0_xx", where xx denotes the
latest upgrade number; and JRE in
"C:\Program Files\Java\jre7".
For novices, accept the defaults. Simply click
"next"..."next"... to install JDK in "C:\Program
"C:\Program Files\Java\jre7".
Take note of your JDK installed directory
(which you will need to use in the next step).
Check the JDK installed directory by
inspecting these folders using Windows'
Step 3: Include JDK's "bin" Directory in the
Variable name: PATH
Files\Java\jdk1.7.0_xx\bin;[exiting entries]

Place the JDK bin directory in front of

"c:\windows\system32" and "c:\windows".
This is because some Windows systems may
have an out-dated copy of JDK/JRE in these
directories. Do a search for "java.exe", and you
will be amazed by the findings.
Step 4: Verify the JDK Installation
Launch a CMD shell (Click "Start" button
run... enter "cmd"; or "Start" button All
Programs Accessories Command
Issue a "path" command to list the
contents of the PATH environment variable.
Check the output and make sure that
<JAVA_HOME>\bin is listed in the PATH.
prompt> path
PATH=c:\Program Files\Java\jdk1.7.0_xx\bin;
[other entries]
Issue the following commands to verify
that JDK/JRE are properly installed and
display their version:
prompt> java -version
java version "1.7.0_xx"
Java(TM) SE Runtime Environment (build
Java HotSpot(TM) Client VM (build 23.3b01, mixed mode, sharing)

prompt> javac -version javac 1.7.0_xx


Android Studio Installation

Installing the Android SDK

If you haven't already, download the Android
SDK bundle for Android Studio or the standalone SDK Tools.
Then, select which SDK bundle you want to
1. Launch the .exe file you just downloaded.
2. Follow the setup wizard to install Android
Studio and any necessary SDK tools.
On some Windows systems, the launcher script
does not find where Java is installed. If you
encounter this problem, you need to set an
environment variable indicating the correct
Select Start menu > Computer > System
Properties > Advanced System Properties.
Then open Advanced tab > Environment
Variables and add a new system variable
JAVA_HOME that points to your JDK folder,