Finalreport
Finalreport
Project Report On
SESSION: 2023-24
BY
Shlok Mishra (2200460140048)
Aparna Tiwari (2200460140013)
I
Notes Sharing System
CERTIFICATE
This is to certify that the project report entitled Notes Sharing System submitted to Department
of Computer Applications, MAHARANA PRATAP ENGINEERING COLLEGE, Kanpur, in
partial fulfillment of the required for the award of degree of MASTER OF COMPUTER
APPLICATIONS (MCA) is an authenticate and an original work carried out by
Aparna Tiwari (2200460140013) and Shlok Mishra (2200460140048) under my guidance.
The matter given in this project is genuine work done by student and has not been submitted
whether to this University or to any other University / Institution for the fulfillment of the
requirements of any course of study.
Date: Date:
II
Notes Sharing System
ACKNOWLEDGEMENT
This Major Project would not have been possible without the help of many people. Hereafter, I
would like to thank them for their help, support, and advice they have given me while working
on the project. First, I would like to thank my Major Project guide, Prof. Dr. Swati Saxena for
her guidance, help, and the many discussion sessions that gave me courage and enthusiasm to
design and build this application. I thank all the faculties of Department of Computer
Applications for their support and guidance. I extend my gratitude to HOD of department Mr.
Mayank Shukla.
III
Notes Sharing System
ABSTRACT
Online note sharing is the project used for sharing notes using website. Notes that the user wants
for the particular subject can be found in the website. The user need to sign up and then, they can
log into system. They will get their own dashboard where they can see the number of notes for
the particular faculty. After that they can download it and read the notes. They can even upload
the notes if they have some. They can even edit the profile like name, profile, change password.
Eventually, in admin side they can see all the users who are using it. Admin has the authority to
delete the users too. If the user had uploaded the notes, then admin check the note and is it is
usable then they will approve it and all the other user will get the note according to the faculty.
IV
Notes Sharing System
Table of Content
TITLE PAGE………………………………………………………………………………………………I
CERTIFICATE……………………………………………………………………………………………II
ACKNOWLEDGEMENT………………………………………………………………………………...III
ABSTRACT…………………………………….……………………………………………..………….IV
TABLE OF CONTECT…………………………….……………………………………………………..V
LIST OF FIGURES……………………………………………………………………………………....VII
1. INTRODUCTION………………………………………………………………………………………1
1.1. BREIF OVERVIEW OF WORK……………...……………………………………………………1
1.2. OBJECTIVES……………………………………………………………………………………….1
1.3. SCOPE………………………………………………………………………………………………2
2. SYSTEM ANALYSIS……………………………………………………………………………….….3
2.1. IDENTIFICAITONS OF NEED……………………………………………………………………3
2.2. PRELIMINARY INVESTIGATION……………………………………………………………….3
2.3. LITERATURE REVIEW…………………………………………………………………………...4
2.4. PROJECT FEASIBILITY STUDY…………………………………………………………………5
2.5. PROJECT PLANNING……………………………………………………………………………..6
2.6. SOFTWARE REQUIREMENT SPECIFICATIONS………………………………………………7
2.7. SOFTWARE ENGINEERING PARADIGM APPLIED …………………………………………11
2.8. DATA MODELS…………………………………………………………………………………...12
2.8.1. DATA FLOW DIAGRAMS (DFD)………………………………………………………...12
2.8.2. ENTITY-RELATIONSHIP DIAGRAMS (ERD)…………………………………………..13
2.8.3. USE-CASE DIAGRAM………………………………………...…………………………..14
2.8.4. CLASS DIAGRAM…………………………………………………………………………16
2.8.5. SEQUENCE DIAGRAM……………………………………………………………………17
3. IMPLEMENTATION TECHNOLOGY………………………………………………………………..19
3.1. PROGRAMMING LANGUAGE………………………………………………………………….19
3.2. DEVELOPING ENVIRONMENT……………………………………...…………………………21
4. SYSTEM DESIGN……………………………………………………………………………………..22
4.1. MODULE DETAILS……………………………………………………………………………….22
4.2. DATA INTEGRITY AND CONSTRAINTS………………………………………………………23
4.3. DATA DESIGN…………………………………………………………………………………….24
4.4. DATABASE SECURITY DESIGN CONSTRAINTS……………………………………………..26
4.5. USER INTERFACE DESIGN……………………………..……………………………………….27
V
Notes Sharing System
VI
Notes Sharing System
List of Figures
VII
Notes Sharing System
VIII
Notes Sharing System
CHAPTER-1. INTRODUCTION
Notes Sharing System is a web based notes sharing and management system which helps
students and teachers to share their notes online effectively. It reduces the wasting of time in
manually distributing notes to each individual. It greatly overcomes the lack of availability and
converts the manual old school paperwork to a fully automated and managed online system.
Notes Sharing System allows it's users to securely register and log in to their individual accounts
and create, read, update, delete notes according to their needs. It provides notes to everyone in a
very secure manner. Multiple users can work in this system at the same time under centralized
supervision by administrator. It is a very useful notes management system for Colleges, Schools
and other Institutes to manage and share their notes in a secure, efficient and effective manner.
1.2 Objective
1
Notes Sharing System
1.3 Scope
This project has a large scope as it has the following features which help in making it easy to use,
understand and modify it:
2
Notes Sharing System
Easy Access Anywhere: You can access your notes from your computer, phone, or
tablet, no matter where you are. It's like having your notes with you all the time, just a
click away.
Keeping Things Organized: Instead of having notes scattered everywhere, you can keep
them all in one place. You can even organize them neatly by subject or topic.
Saving Important Stuff: You can store important notes and documents safely, so you
can find them easily later on when you need them.
Keeping Things Safe: Your notes are kept safe and secure, so you don't have to worry
about losing them or someone else seeing them without permission.
3
Notes Sharing System
5. Conclusion:
Summarize the findings of the preliminary investigation.
Provide recommendations on whether to proceed with the project based on feasibility,
risks, and potential benefits.
1.Purpose: Note-sharing sites are created to help students and learners share study materials,
lecture notes, and other educational resources.
2.Features: These sites typically allow users to upload their notes in various formats such as text
documents, PDFs, or images. Users can also search for specific topics or courses to find relevant
notes. Some sites offer features like commenting and rating, where users can provide feedback
on the quality of the notes.
3.Benefits: Note-sharing sites make it easier for students to access supplementary materials for
their studies. They can find notes on subjects they're struggling with or explore additional
resources to deepen their understanding.
4.Drawbacks: One potential drawback is the quality control of the notes. Since anyone can
upload notes, there may be inaccuracies or poorly written content. Users should be cautious and
verify the information they find on these sites.
5.Popularity: Note-sharing sites have gained popularity among students worldwide due to their
convenience and accessibility. Some sites have millions of users and a vast collection of notes on
various subjects.
6.Accessibility and Inclusivity: Note-sharing sites contribute to making education more
accessible to a wider audience. Students who may have missed classes due to various reasons or
those with different learning styles can benefit from accessing notes shared by others.
4
Notes Sharing System
A feasibility study for a note-sharing site would assess whether the idea is viable and practical to
implement.
1.Technical Feasibility:
Infrastructure: Do we have the technology and resources to build the website? Can we
ensure it works well on different devices like computers, tablets, and smartphones?
Security: Can we keep the website safe from cyber-attacks and protect users' data?
Scalability: Will the website be able to handle a large number of users and notes without
crashing?
2.Operational Feasibility:
Usability: Will users find the website easy to navigate and use? Can they upload and
access notes without any hassle?
Maintenance: Can we keep the website running smoothly over time? How much effort
will it take to fix any issues that come up?
Community Engagement: Will users actively participate in sharing notes and engaging
with the platform?
3.Economic Feasibility:
Costs: How much will it cost to develop the website, including technology, personnel,
and marketing expenses?
Revenue Streams: Can we generate enough revenue through methods like subscriptions,
advertisements, or premium features to cover these costs and potentially make a profit?
Market Potential: Is there enough demand for a note-sharing site to make it financially
viable? What is the competition like, and how can we differentiate ourselves to attract
users?
6
Notes Sharing System
2.6.2. Output:
Registration/Login Page: Interface for users to create new accounts or log in to existing
ones.
Dashboard: Overview page displaying notes, folders, notifications, and other relevant
information.
Search Results: The system outputs search results based on the user's query, displaying
relevant notes and documents.
User Profile: Display of user information, settings, and activity history.
1.User Management:
User Registration: Users should be able to create new accounts by providing
necessary details like username, email, and password.
User Authentication: The system must authenticate users during login using valid
credentials.
User Profile Management: Users should be able to update their profile information,
including profile picture, bio, and contact details.
2. Note Management:
Note Search: Users should be able to search for specific notes using keywords or
filters, with results displayed based on relevance.
Note Sharing: Users should be able to share their notes with other users or groups,
specifying permissions for viewing and editing.
7
Notes Sharing System
Response Time: The system should provide fast response times for user interactions,
ensuring a smooth and responsive user experience.
Scalability: The system should be able to handle a large number of users and notes
without compromising performance or reliability.
4. User Interface:
Intuitive Interface: The user interface should be intuitive and user-friendly, allowing
users to navigate the system easily and perform tasks efficiently.
Accessibility: The system should be accessible to users with disabilities, following
accessibility standards and guidelines.
1.Hardware Requirement:
RAM: 1 GB (further increase that as per requirement.).
Hard Disk: 80 GB (further increase that as per requirement.)
Display: 1024 * 768, True Type Color-32 Bit
Mouse: Any Normal Mouse.
Keyboard: Any window Supported Keyboard.
2. Software Requirements:
Technology: Python Django
IDE: Pycharm/Atom
Client Side Technologies: HTML, CSS, JavaScript, Bootstrap
Server Side Technologies: Python
Data Base Server: Sqlite
Operating System: Microsoft Windows/Linux
8
Notes Sharing System
Signup Table
Admin Table
Notes Table
9
Notes Sharing System
PRIMARY KEY,
id INT AUTO_INCREMENT Unique identifier for each note.
10
Notes Sharing System
Model: Defined in models.py, where you have defined models for Signup and Notes.
These models represent the data structure of your application and interact with the
database.
View: Represented by the functions in views.py. These functions handle user requests,
process data from the models, and render appropriate HTML templates. Each view
function corresponds to a specific URL endpoint and is responsible for generating the
appropriate response.
Controller: In Django, the URL configuration (urls.py) serves as the controller. It maps
URL patterns to specific view functions, defining the flow of control in the application.
Requests coming from users are routed to the appropriate view function based on the
URL pattern.
Additionally, our project follows the Django MTV (Model-Template-View) architecture, which
is essentially a variation of MVC tailored for web development with Django:
Model: Represents the data structure (e.g., Signup and Notes models).
Template: HTML templates stored in the templates directory, which are used to present
the user interface.
View: Functions in views.py that handle user requests and interact with models to fetch
or manipulate data, then render templates to generate HTML responses.
This architectural pattern promotes separation of concerns, making your codebase more modular,
maintainable, and scalable.
11
Notes Sharing System
Upload Edit
Account Database
Notes File Uploaded Notes
v Confirm
Notes dragged
Publish
Verify Into Browser
User
Admin Verify Notes
Login Details Login to View
Account Notes
Login Details
Notes feedback
Accept Notes
12
Notes Sharing System
Admin
contact Name
Is
File type
Profile Upload Notes
branch
edit
View
My notes
subject
notes
Change
password
13
Notes Sharing System
Manage Notes
Manage Users
Accept Notes
Reject Notes
Admin System
14
Notes Sharing System
Upload Notes
Search Notes
Download Notes
Edit/Delete
Notes
User System
15
Notes Sharing System
Notes
Admin
S.no Name Type
S.no Name Type
1. Uploaded by Varchar(30)
1. adminname Varchar(30)
2. Uploading date Varchar(15)
2. password Varchar(20)
3. Branch Varchar(15)
4. Subject Varchar(20)
5. File-type text
Users
6. Description Varchar(200)
S.no Name Type
7. Status Varchar(15)
1. First Varchar(25)
name
2. Last Varchar(15)
name
3. Email-id Varchar(30)
4. Contact Varchar(10)
5. Password Varchar(20)
6. Branch Varchar(15)
7. Role Varchar(10)
16
Notes Sharing System
:Validate()
:executeQuery()
Login req
Response
Show Result
Admin
Success:hide Failed:show(
17
Notes Sharing System
:Validate()
:executeQuery()
Login req
Response
Show Result
User
Success:hide Failed:show(
18
Notes Sharing System
1. HTML: HTML (Hypertext Markup Language) is the standard language used to create and
design documents on the World Wide Web. It provides the fundamental structure for web pages
and web applications.
Key Components of HTML
Tags: HTML tags are the basic building blocks of HTML. They are used to define
elements within a document. Tags are enclosed in angle brackets, e.g., <tagname>.
Elements: An element in HTML is everything from the start tag to the end tag, including
the content in between.
Attributes: Attributes provide additional information about HTML elements. They are
always included in the opening tag and usually come in name/value pairs like
name="value".
2. Python: Python is a high-level, interpreted programming language known for its simplicity
and readability. It supports multiple programming paradigms and is widely used in various
fields, including web development, data analysis, artificial intelligence, scientific computing, and
more.
Key Features of Python
3.CSS (Cascade Style Sheet): CSS is a language used to specify the style of web pages,
including aspects like layout, colors, and fonts. It allows developers to separate content (HTML)
19
Notes Sharing System
from design, making it easier to maintain and update websites. CSS enhances the user experience
by making web pages more visually appealing and responsive.
Key Features of CSS
Selectors: CSS selectors are used to select the HTML elements you want to style.
Examples include element selectors, class selectors, and ID selectors.
Properties: CSS properties define the styles to be applied to the selected elements.
Properties are paired with values to create rules.
Box Model: The CSS box model describes the rectangular boxes generated for elements
in the document tree. It consists of margins, borders, padding, and the content area.
20
Notes Sharing System
Pycharm: PyCharm is an IDE used for programming in Python. It provides code analysis, a
graphical debugger, an integrated unit tester, integration with version control systems (VCS), and
supports web development with Django. PyCharm is available in three editions: The Community
Edition, the Professional Edition, and the Educational Edition.
Community Edition: Free and open-source, suitable for pure Python development.
Professional Edition: Paid version with additional features for web development, data
science, and other advanced capabilities.
Educational Edition: Free version aimed at helping teachers create courses and for
students to learn Python programming.
3.Web Development
The Professional Edition supports web development frameworks such as Django,
Flask, and Pyramid.
Features include template debugging, ORM support, and front-end development
tools.
Example: Create a Django project and use PyCharm to manage models, views,
templates, and static files.
21
Notes Sharing System
4.1.1. Registration:
Student can register with valid details like contact detail, email, profile details etc.
Teacher can register with valid details like specific branch, contact detail, email.
22
Notes Sharing System
For data integrity and constraints in our Django project, you've implemented several measures to
ensure the consistency, accuracy, and reliability of your data. Here's an overview of the data
integrity and constraints applied in our project:
Field Constraints: Various field constraints are applied to model fields to ensure data
consistency. For example, max_length constraints are set for fields like contact, branch,
subject, and filetype to limit the length of input data.
Default Values: Default values are specified for certain fields, such as status in the Notes
model. This ensures that if a value is not provided during record creation, a default value
is automatically assigned, maintaining consistency.
Data Validation: We've implemented form validation logic to ensure that only valid data
is accepted from user input. For example, in the upload_notes view, you check if all
required fields are provided before saving the note to the database, preventing the
insertion of incomplete or incorrect data.
By implementing these data integrity measures and constraints, we've established a robust
foundation for our application, reducing the risk of data corruption, inconsistency, and security
vulnerabilities. These practices contribute to the overall reliability and usability of our note-
sharing website.
23
Notes Sharing System
Admin
User
Field
Name Data Type Constraints Description
PRIMARY KEY,
id INT AUTO_INCREMENT Unique identifier for each user.
Notes
24
Notes Sharing System
PRIMARY KEY,
id INT AUTO_INCREMENT Unique identifier for each note.
Database security design constraints are essential for ensuring the confidentiality, integrity, and
availability of your data. In our Django project, we have implemented several security design
constraints to protect our database from unauthorized access, data breaches, and other security
threats.
25
Notes Sharing System
Authorization: Certain views and functionalities are protected using conditional checks,
such as checking if a user is authenticated (request.user.is_authenticated) or if a user is a
staff member (user.is_staff). This enforces access control based on user roles.
2. Encryption:
Password Storage: Django's authentication system automatically hashes and salts
passwords before storing them in the database. This protects user passwords from being
exposed in case of a database breach.
HTTPS: While not directly implemented in the provided code snippets, it's important to
ensure that communication between the web server and clients is encrypted using HTTPS
(SSL/TLS) to prevent eavesdropping and tampering of data in transit.
26
Notes Sharing System
4.5.2About Us
27
Notes Sharing System
4.5.3. Contact Us
28
Notes Sharing System
4.5.4. Sign Up
29
Notes Sharing System
4.5.5. Login
30
Notes Sharing System
31
Notes Sharing System
32
Notes Sharing System
33
Notes Sharing System
34
Notes Sharing System
35
Notes Sharing System
36
Notes Sharing System
37
Notes Sharing System
For our note-sharing website project, there's a tailored test case design covering various aspects
of functionality, security, usability, and performance:
1. Functional Testing:
User Authentication:
Test Case 1: Verify that a new user can register with valid credentials.
Test Case 2: Validate that registered users can log in with correct credentials.
Test Case 3: Ensure that invalid login attempts are properly handled.
Note Management:
Test Case 4: Test note creation functionality for authenticated users.
Test Case 5: Verify that users can view their own notes after logging in.
Test Case 6: Test note deletion functionality for authenticated users.
Admin Functionality:
Test Case 7: Ensure that administrators can log in with valid credentials.
Test Case 8: Validate admin dashboard functionality, including viewing pending notes
and managing users.
Test Case 9: Verify that administrators can change the status of notes (e.g., accept,
reject).
Profile Management:
Test Case 10: Test profile editing functionality for authenticated users.
Test Case 11: Validate password change functionality for authenticated users.
Test Case 12: Ensure that users can log out successfully.
2. Security Testing:
Input Validation:
Test Case 13: Test for SQL injection vulnerabilities by injecting SQL code into input
fields.
Test Case 14: Validate that HTML and JavaScript code is properly sanitized to prevent
cross-site scripting (XSS) attacks.
Authentication and Authorization:
Test Case 15: Verify that unauthorized users cannot access restricted functionalities.
Test Case 16: Test for privilege escalation vulnerabilities by attempting to access
administrative functionalities without appropriate permissions.
Data Encryption:
38
Notes Sharing System
Test Case 17: Ensure that sensitive data, such as passwords, is stored securely using
encryption techniques.
Test Case 18: Validate that data transmitted over the network is encrypted using HTTPS.
3. Usability Testing:
Test Case 19: Evaluate the user interface for consistency, clarity, and ease of use.
Test Case 20: Test for responsiveness and compatibility across different devices and
screen sizes.
Test Case 21: Validate error messages and feedback provided to users for input validation
failures or other errors
CHAPTER-5. CODING
39
Notes Sharing System
5.1. Index
5.2. Views.py
40
Notes Sharing System
5.3. Models.py
41
Notes Sharing System
CHAPTER-6. TESTING
42
Notes Sharing System
1. Unit Testing:
Objective: Test individual units of code to ensure they work as expected.
Tools: unittest, pytest, Django's built-in testing framework.
Scope: Models, views, forms, and utilities.
2. Integration Testing:
Objective: Test the interaction between different components/modules.
Tools: pytest-django.
Scope: Interaction between views, templates, and models.
3. Functional Testing:
Objective: Test the application's functionality as a user would.
Tools: Selenium, Django's LiveServerTestCase.
Scope: User login, file uploads, form submissions, etc.
4. Regression Testing:
Objective: Ensure new changes haven't broken existing functionality.
Tools: Combination of unit and integration tests.
Scope: All areas of the application.
43
Notes Sharing System
Objective: To ensure that all features of the Django Notes Management System are functioning
as expected and meet the requirements.
Testing Schedule
Resources
Testers: Aparna Tiwari , Shlok Mishra
Tools: pytest, pytest-django, Selenium, Django TestCase
44
Notes Sharing System
TC-003 Test notes upload functionality Pass Notes upload working as expected.
TC-004 Test admin view users functionality Pass Admin can view users as expected.
TC-005 Test change password functionality Pass Password change working as expected.
TC-006 Test profile view functionality Pass Profile view working as expected.
TC-007 Test profile edit functionality Pass Profile edit working as expected.
TC-008 Test admin login functionality Pass Admin login working as expected.
TC-009 Test user logout functionality Pass User logout working as expected.
TC-010 Test view all notes functionality Pass View all notes working as expected
A website where you can share notes in easy languages has a good future. Here's why:
45
Notes Sharing System
Easy to Understand: Easy languages are simple and can be understood by many people,
making the website useful to a lot of folks.
Helps Learning: It's great for people who are learning a new language. They can find
notes that are easy to read and learn from.
For Everyone: It's inclusive. People from different backgrounds and abilities can benefit
from it, including those who find it hard to learn.
Working Together: People can share their own notes, so everyone can help each other
learn.
Global Reach: Easy languages are understood by many people worldwide, so the
website can reach a lot of users around the world.
Gets Better: The website can add more helpful features like recordings, games, and
videos to make learning even easier.
Education: As the demand for language learning continues to grow globally, especially
with the rise of remote learning, a platform offering notes in easy languages can be
invaluable for students of all ages.
Adaptability: The website can evolve to incorporate features such as audio recordings,
interactive exercises, and multimedia content to enhance the learning experience further
CHAPTER-8. CONCLUSION
In conclusion, the notes sharing site caters to the dynamic needs of both teachers and students,
providing a seamless platform for sharing, accessing, and managing educational resources. With
its user-friendly interface and robust features, users can effortlessly upload, download, and
collaborate on notes, fostering a collaborative learning environment.
46
Notes Sharing System
For teachers and students alike, the ability to sign in and log in unlocks a plethora of
functionalities tailored to their specific roles. Teachers can upload lecture notes, study materials,
and assignments, empowering students with valuable resources to aid their learning journey.
Students, in turn, benefit from easy access to a wide range of educational materials, facilitating
their comprehension and academic growth.
The administrative functionalities further enhance the site's utility, allowing administrators to
oversee user activity, manage user accounts, and moderate content effectively. Admins can view
a comprehensive list of users, exercise control over user accounts by deleting or managing them,
and review and approve/reject notes uploaded by users. This administrative oversight ensures the
quality and integrity of the content shared on the platform.
Overall, this site helps everyone learn better by sharing notes, and the admins keep everything
running smoothly behind the scenes.
CHAPTER-9. BIBlLIOGRAPHY
W3schools.com
Djangoproject.com
47
Notes Sharing System
Tutorialspoints.com
Javatpoint.com
Realpython.com
48