Professional Documents
Culture Documents
Webglibrary: A Minor Project-Ii Report Submitted in Partial Fulfillment of The Requirement For The Degree of
Webglibrary: A Minor Project-Ii Report Submitted in Partial Fulfillment of The Requirement For The Degree of
Webglibrary: A Minor Project-Ii Report Submitted in Partial Fulfillment of The Requirement For The Degree of
Guided By Submitted by
Prof. Abhishek Raghuvanshi Abhijeet Shastri
[0704CS191002]
Abhirang Sharma
[0704CS191005]
Bhupendra Singh Sheskhawat
[0704CS191032]
The project entitled “WebGLibrary” submitted by Abhijeet Shastri, Abhirang Sharma and
Bhupendra Shekhawat as partial fulfillment for the award of Bachelor of Technology in
Computer Science and Engineering by Rajiv Gandhi Prodyogiki Vishwavidyalaya, Bhopal.
Project Coordinator
Date:
RECOMMENDATION
The project entitled “WebGLibrary” submitted by Abhijeet Shastri, Abhirang Sharma and
Bhupendra Singh Shekhawat as partial is a satisfactory account of the Bonafede work done under
our guidance is recommended towards partial fulfillment for the award of the Bachelor of
Technology in Computer Science and Engineering from Mahakal Institute of Technology,
Ujjain by Rajiv Gandhi Prodyogiki Vishwavidyalaya, Bhopal.
Date: Date:
Endorsed By
Head
Abhijeet Shastri
[0704CS191002]
Abhirang Sharma
[0704CS191005]
IV
TABLE OF CONTENTS
Page No.
Project Approval Sheet I
Recommendation II
Recommendation Letter from responsible authority(In case of Live Project) III
Acknowledgement IV
Table of Contents V
Abstract VI
Figure Index VII
Table Index VIII
List of Abbreviations IX
Chapter 1 Introduction (1-3)
1.1 Introduction 01
1.2 Identification of Problem Domain 03
Chapter 2 Literature Review (4-11)
2.1 Literature Review 4
2.1.1 Study of …………………………… 4
2.1.2 Study of …………………………… 4-10
2.2 Limitation of existing system 11
Chapter 3 Rationale and Process (12-15)
3.1 Objective 12
3.2 Software Model Adapted 13-15
Chapter 4 System Analysis Overview (16-29)
4.1Requirement Analysis 16
4.1.1 Hardware Requirement 17
4.1.2 Software Requirement 17
4.1.3 Functional & Non functional Requirements 18-19
4.2 Use -Case diagram & Use -Case description 20-22
4.3 Sequence Diagram 23-28
4.4 System Flow Diagram 29
Chapter 5 System Design Overview (30-35)
5.1 Data Dictionary 30-31
5.2 Class Diagram 32
5.3 Data Flow Diagram 33-34
Chapter 6 Work Plan and System Database Structure (36-40)
6.1 Time Frame Work 36
6.2 Design Database Table 37-40
Chapter 7 Implementation & Testing (41-55)
7.1 Testing Strategy Adapted 41-44
7.2 System Testing 45-48
7.3 Test Cases 49-55
Chapter 8 Conclusion and Future Extension (56)
8.1 Conclusion 56
8.2 Future Scope 56
REFERENCES (57-59)
VII
TABLE INDEX
Table No. Title of Table Page No.
VIII
CHAPTER 1
INTRODUCTION
1.1 INTRODUCTION
Generic programming is a style of computer programming in which algorithms are written in
terms of types to-be-specified-later that are then instantiated when needed for specific types
provided as parameters.
Every skilled programmer needs to be able to create libraries pertaining to this topic, but many
times creating these libraries over and over again can be tedious. For example: Stack, queue,
Singly Linked List etc. (different types of data structures) in generic forms.
With that in mind we will upload these libraries to a website/server created for the benefit of
veteran programmers who will find these libraries helpful to use them directly in their code as
well as beginner programmers who will be able to get access to use these in their own code
directly thereby making it easier for them to learn(Although beginner programmers will be given
proper warning beforehand that these libraries are for them to learn through and not a shortcut
for them to use considering they need to be able to create/replicate the libraries on their own and
not depend on ours to do the necessary work for them).
a) Use your own compiler on a local network (this method allows you to store the libraries
on your own personal computer).
b) Use an online compiler to store and use the libraries from the compiler’s website you got
the compiler from.
Our library results from the idea to create a generic library of reusable algorithms. For our
website we will focus on providing generic libraries for C, C++ and python.
1.2. Problem Domain
As we all know even the simplest of programs (that are created for testing or commercial
purposes) that require handling lists, queues, stacks etc. types of data require us to write multiple
lines of code. Many a times the code for handling these types of data tends to be tedious to write
and even takes too much time to write it up. Time that could be better spent thinking, managing
and writing the code for the more important parts of the code of the program.
Not to mention a beginner programmer might not even be that familiar with these concepts or in
some situations not even know about them. In such situations they wouldn’t be able to do
anything to further their projects. Basically, progress on the project/program would be at a
standstill unless they are replaced by a better programmer OR until they learn how to handle this
type of data themselves.
To overcome the issues written about earlier, a good solution would be to write up the code in
advance, but then the problem that arises is who would write up the code, even for example if the
code is found online, it would still be found in parts/fragments only and the programmer would
have to go on multiple websites to get what they want.
That’s where our website ‘WebGLibrary’ comes in. This website created by us will provide the
different fragments/parts of the code that are necessary to create the projects of other
programmers. On the front page of the website, programmers will be given two options: one for
veteran programmers and the other for beginner programmers.
The option for veteran programmers will directly send the user to the list of libraries from where
they can choose and see the code and its output.
While the option for beginner programmers will give the user ample amount of warning that
though they are getting to see the code and its output, they should still be able to produce both on
their own and that in their case the website is there to help them to learn the code as a self-
learning tool, and not a substitute for them to use if and when they need these libraries to create
their own projects. After that they would be sent to the same page the veteran programmers are
sent to see the list of libraries. Although in their case, the website would even give a brief
explanation as to what the library they are getting access to is and how it works as an extra page
before they get to see and try out the code.
Finally, both types of users will be sent to the same page where their chosen library will be
shown.
CHAPTER 2
LITERATURE REVIEW
Libraries:
The C programming language uses libraries as its primary method of extension. In C, a library is
a set of functions contained within a single "archive" file. Each library typically has a header file,
which contains the prototypes of the functions contained within the library that may be used by a
program, and declarations of special data types and macro symbols used with these functions. In
order for a program to use a library, it must include the library's header file, and the library must
be linked with the program, which in many cases requires compiler flags (e.g., -lm, shorthand for
"link the math library").
The most common C library is the C standard library, which is specified by the ISO and ANSI C
standards and comes with every C implementation (implementations which target limited
environments such as embedded systems may provide only a subset of the standard library). This
library supports stream input and output, memory allocation, mathematics, character strings, and
time values. Several separate standard headers (for example, stdio.h) specify the interfaces for
these and other standard library facilities.
Another common set of C library functions are those used by applications specifically targeted
for Unix and Unix-like systems, especially functions which provide an interface to the kernel.
These functions are detailed in various standards such as POSIX and the Single UNIX
specification.
Since many programs have been written in C, there are a wide variety of other libraries available.
Libraries are often written in C because C compilers generate efficient object code; programmers
then create interfaces to the library so that the routines can be used from higher-level languages
like Java, Perl, and Python.
2.1.2 Study of C++:
C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of
the C programming language, or "C with Classes".
Compatibility:
With C:
The C and C++ programming languages are closely related but have many significant
differences. C++ began as a fork of an early, pre-standardized C, and was designed to be mostly
source-and-link compatible with C compilers of the time. Due to this, development tools for the
two languages (such as IDEs and compilers) are often integrated into a single product, with the
programmer able to specify C or C++ as their source language.
However, C is not a subset of C++, and nontrivial C programs will not compile as C++ code
without modification. Likewise, C++ introduces many features that are not available in C and in
practice almost all code written in C++ is not conforming C code. This article, however, focuses
on differences that cause conforming C code to be ill-formed C++ code, or to be
conforming/well-formed in both languages but to behave differently in C and C++.
C++ is often considered to be a superset of C but this is not strictly true. Most C code can easily
be made to compile correctly in C++ but there are a few differences that cause some valid C code
to be invalid or behave differently in C++. For example, C allows implicit conversion from void*
to other pointer types but C++ does not (for type safety reasons). Also, C++ defines many new
keywords, such as new and class, which may be used as identifiers (for example, variable
names) in a C program.
Some incompatibilities have been removed by the 1999 revision of the C standard (C99), which
now supports C++ features such as line comments (//) and declarations mixed with code. On the
other hand, C99 introduced a number of new features that C++ did not support that were
incompatible or redundant in C++, such as variable-length arrays, native complex-number types
(however, the std::complex class in the C++ standard library provides similar functionality,
although not code-compatible), designated initializers, compound literals, and the restrict
keyword. Some of the C99-introduced features were included in the subsequent version of the
C++ standard, C++11 (out of those which were not redundant). However, the C++11 standard
introduces new incompatibilities, such as disallowing assignment of a string literal to a character
pointer, which remains valid C.
To intermix C and C++ code, any function declaration or definition that is to be called from/used
both in C and C++ must be declared with C linkage by placing it within an extern "C"
{/*...*/} block. Such a function may not rely on features depending on name mangling (i.e.,
function overloading).
2.1.3 Study of Python:
Python is a high-level, general-purpose programming language. Its design philosophy
emphasizes code readability with the use of significant indentation. Its language constructs and
object-oriented approach aim to help programmers write clear, logical code for small- and large-
scale projects.
Guido van Rossum began working on Python in the late 1980s as a successor to the ABC
programming language and first released it in 1991 as Python 0.9.0. Python 2.0 was released in
2000 and introduced new features such as list comprehensions, cycle-detecting garbage
collection, reference counting, and Unicode support. Python 3.0, released in 2008, was a major
revision that is not completely backward-compatible with earlier versions. Python 2 was
discontinued with version 2.7.18 in 2020.
Even with all the existing libraries in C and C++, we still have to create data structures for parts
of code that handle the data from its managing it through sorting, to creating a stack/queue etc. to
properly index it, to searching for specific kind of data from the heaps of data we store in our
programs to anything in-between.
While creating these is crucial, creating multiple iterations of it to handle all our different
programs and the data associated with it is tedious and time consuming.
Not only is it annoying to create the same library for handling data over and over again, it also
happens to be a waste of valuable time, which could have been better used to work on the parts
of the of the program that are important and need care and time to fix all the bugs in it.
To fix this problem, a generic template for these would go a long way.
Not to mention beginner programmers can use it to learn and create their own versions of it
themselves to use just like the veterans.
That’s where our website would come in. It will help by giving them the necessary libraries they
need for their projects/programs. They can then use it in anyway they want by either
implementing it directly in their code or learn from it and create their own version for their
specific use.
CHAPTER 3
RATIONALE AND PROCESS
3.1. Objective
The Objective of this Project is to aid programmers both veterans and beginners, to help them in
creating their own projects/programs/small time code by giving them generic data structures’
code so that they can use it/them to reduce the hassle of programming repetitive code thereby
saving time to focus on the more important parts of their code/program/project. For beginners it
even helps them in learning how to create these data structures like list, stack , etc. on their
considering that even though we can get these data structures as predefined but still learning
them helps in creating custom functions for them. These data structures are known as ‘Generic
Data Structures’.
Generic Data Structure: In codes of previous data structure, the node can only store a number,
but we need a way so that it can store any type of data, making them reusable.
3.2. Software Model Adapted
RAD Model
What is RAD Model?
RAD Model or Rapid Application Development model is a software development process based
on prototyping without any specific planning. In RAD model, there is less attention paid to the
planning and more priority is given to the development tasks. It targets at developing software in
a short span of time.
Business Modeling
Data Modeling
Process Modeling
Application Generation
Testing and Turnover
There are following five major phases of Rapid Application Development Model
RAD Model
Activities performed in RAD Modeling
Phases
Application Automated tools are used for the construction of the software, to
convert process and data models into prototypes
Generation
Testing and As prototypes are individually tested during every iteration, the overall
testing time is reduced in RAD.
Turnover
When to use RAD Methodology?
Summary
Requirement analysis is significant and essential activity after elicitation. We analyze, refine, and
scrutinize the gathered requirements to make consistent and unambiguous requirements. This
activity reviews all requirements and may provide a graphical view of the entire system. After
the completion of the analysis, it is expected that the understandability of the project may
improve significantly. Here, we may also use the interaction with the customer to clarify points
of confusion and to understand which requirements are more important than others.
(i) Draw the context diagram: The context diagram is a simple model that defines the
boundaries and interfaces of the proposed systems with the external world. It identifies the
entities outside the proposed system that interact with the system. The context diagram of student
result management system is given below:
(ii) Development of a Prototype (optional): One effective way to find out what the customer
wants is to construct a prototype, something that looks and preferably acts as part of the system
they say they want.
We can use their feedback to modify the prototype until the customer is satisfied continuously.
Hence, the prototype helps the client to visualize the proposed system and increase the
understanding of the requirements. When developers and users are not sure about some of the
elements, a prototype may help both the parties to take a final decision.
Some projects are developed for the general market. In such cases, the prototype should be
shown to some representative sample of the population of potential purchasers. Even though a
person who tries out a prototype may not buy the final system, but their feedback may allow us
to make the product more attractive to others.
The prototype should be built quickly and at a relatively low cost. Hence it will always have
limitations and would not be acceptable in the final system. This is an optional activity.
(iii) Model the requirements: This process usually consists of various graphical representations
of the functions, data entities, external entities, and the relationships between them. The
graphical view may help to find incorrect, inconsistent, missing, and superfluous requirements.
Such models include the Data Flow diagram, Entity-Relationship diagram, Data Dictionaries,
State-transition diagrams, etc.
(iv) Finalise the requirements: After modeling the requirements, we will have a better
understanding of the system behavior. The inconsistencies and ambiguities have been identified
and corrected. The flow of data amongst various modules has been analyzed. Elicitation and
analyze activities have provided better insight into the system. Now we finalize the analyzed
requirements, and the next step is to document these requirements in a prescribed format.
4.1.1 Hardware Requirements
Functional Requirements: These are the requirements that the end user specifically demands as
basic facilities that the system should offer. All these functionalities need to be necessarily
incorporated into the system as a part of the contract. These are represented or stated in the form
of input to be given to the system, the operation performed and the output expected. They are
basically the requirements stated by the user which one can see directly in the final product,
unlike the non-functional requirements.
Run Button
Non-functional requirements: These are basically the quality constraints that the system must
satisfy according to the project contract. The priority or extent to which these factors are
implemented varies from one project to other. They are also called non-behavioral requirements.
They basically deal with issues like:
Portability
Security
Maintainability
Reliability
Scalability
Performance
Reusability
Flexibility
Capacity
Accuracy
Performance
Navigation
4.2 Use -Case diagram & Use -Case description
A use case diagram is used to represent the dynamic behavior of a system. It encapsulates the
system's functionality by incorporating use cases, actors, and their relationships. It models the
tasks, services, and functions required by a system/subsystem of an application. It depicts the
high-level functionality of a system and also tells how the user handles a system.
The main purpose of a use case diagram is to portray the dynamic aspect of a system. It
accumulates the system's requirement, which includes both internal as well as external
influences. It invokes persons, use cases, and several things that invoke the actors and elements
accountable for the implementation of use case diagrams. It represents how an entity from the
external environment can interact with a part of the system.
Structure
3. Information gathering
4. Design Work
5. Coding Work
8. Project Showcase
CHAPTER 7
A testing Strategy is an outline that describes the testing approach of the software
development cycle. The purpose of a test strategy is to provide a rational deduction
from organizational, high-level objectives to actual test activities to meet those
objective from a quality assurance perspective.
If the proposed application completed the debugging task during the testing phase,
then it should enter deployment phase. However, since the number of users are
limited so far and the proposed application is not in the final public version, there
are still many modules that need to be improved and updated. Therefore, it will be
uploaded to the relevant platform to promote to the users after the final public
version is released. In addition it can execute the app in non-network state, but the
download module requires internet connection to open the relevant web page to
download the Libraries.
Below are the steps to describe how a new user will access the data structures on
the website:
1. The user will first go to the website home page, he/she needs to
navigate the website as per their experience as to whether they are a
beginner or a veteran programmer.
3. On the desired data structure, the user can see the wall of code and get
it to use it in their own projects/programs etc., with the added bonus
of getting the option to run the code to see how it works.
7.3 Test Cases
Test Objective: To ensure that the function selected by the user is giving output as
accepted
Add an ‘int’ to list 1 ‘int’ added to the list 1 Added successfully to list
1
Add a ‘char’ to list 1 ‘char’ added to the list 1 Added successfully to list
1
Add a ‘string’ to list 2 ‘string’ added to the list 2 Added successfully to list
2
Add a ‘struct’ to list 2 ‘struct’ added to the list 2 Added successfully to list
2
Insert an element into list Element inserted into list Inserted successfully to
1 1 list 1
Insert an element into list Element inserted into list Inserted successfully to
2 2 list 2
Test Objective : To ensure that the function selected by the user is giving output as
accepted
Test Objective : To ensure that the function selected by the user is giving output as
accepted
8.1 Conclusion
While from the viewpoint of a student or someone who would still be learning
programming it is more like a tool for them that they can use to learn to create
some generic data structures on their own.
8.2 Future Scope
• Function for creating ordered list according to parameters set by user will be
included for use.
• https://rextester.com/l/c_online_compiler_gcc
• https://www.w3schools.com/
• https://www.geeksforgeeks.org/
• https://www.wikipedia.org/
• John Ducket, Web Design with HTML, CSS, JavaScript and jQuery
Appendix
Home Page
Choose your Level
Warning Page
Content List
Singly Linked List and Output
Doubly Linked List
Doubly Linked List continuation
Stack and its Output
Queue and its Output