You are on page 1of 37

MAYOOR SCHOOL NOIDA

ACADEMIC YEAR: 2022-23

PROJECT REPORT ON
“SOCIAL MEDIA SITE USER MANAGEMENT SYSTEM”

Roll No. : 21661058


Name : Debshri Chatterjee
Class : XII-F
Subject : Informatics Practices
Sub. Code : 065
MAYOOR SCHOOL NOIDA

CERTIFICATE

This is to certify that Cadet DEBSHRI CHATTERJEE Roll No. :


21661058 has successfully completed the project work entitled
"SOCIAL MEDIA SITE USER MANAGEMENT SYSTEM" in the subject
Informatics Practices (065) laid down in the regulations of CBSE for
the purpose of Practical Examination in Class XII to be held in Mayoor
School, Noida on _27/01/23_.

(PRAJAKTA KALGAONKAR)
PGT Comp Science

Examiner:
Name: ___ _ _ __

Signature:
TABLE OF CONTENTS

S\N DESCRIPTION PAGE NO.

1. Acknowledgement 01

2. Introduction 02

3. Objectives of the project 02

4. Proposed system 03

5. System Development Life Cycle (SDLC) 04

6. Phases of SDLC 05

7. Source Code 10

8. Output 16

9. Testing 28

11. Bibliography 34
ACKNOWLEDGEMENT

Primarily, I would like to express my deep sense of gratitude to God for


giving me strength for the successful completion of the project. Then I
would like to express my special thanks of gratitude to my IP teacher
Mrs. Prajakta Kalgaonkar as well as our principal Mrs. Alka
Awasthi who gave me the golden opportunity to do this wonderful
project on the topic “SOCIAL MEDIA SITE USER MANAGEMENT
SYSTEM”, which also helped me in doing a lot of research and I came to
know about so many new things.

Secondly, I would also like to thank my parents and friends who helped
me a lot in finishing this project within the limited time frame.

Debshri Chatterjee
XII-F
INTRODUCTION
A social media user management system is a software that is designed to
manage the functions related to user management of a social media site. It
is used to maintain large records of users. It helps the admin or the
database administrator or manager to maintain the database of new and
existing users, any kind of user information, search users, get user insights,
update user information, edit information, retrieve information, user login
and sign up, accurate data about users, analytics, etc.

OBJECTIVES OF THE PROJECT


The purpose of a social media site user management system is to build an
application program to reduce the cumbersome impact of a relatively large
database and to provide instant and accurate data about user, to maintain
large records of users, account status, user activity, analytics, to get insights
of users, keep user information, etc. securely, quickly and efficiently
thereby saving a lot of time and effort and ensuring data security and
integrity.
PROPOSED SYSTEM
Proposed system is an efficient and fast user management system for social
media sites. Through this software, the admin or the database
administrator or manager of the site can maintain a large data of their
users, store any kind of user information, search users, get user insights,
update user information, edit information, retrieve information, user login
and sign up, accurate and minutest details of their users in quick time.

This proposed system has the following advantages:


 User Friendly Interface
 Fast access to Database
 More Storage Capacity
 Less Error
 Complete Data Protection
 Look and Feel Environment

All the difficulties of managing a bulky and complicated user database for
social media sites have been rectified through various easiest and simplest
database management softwares.
SYSTEM DEVELOPMENT LIFE CYCLE (SDLC)
The systems development life cycle is a project management technique that
divides complex projects into smaller, more easily managed segments or
phases. Segmenting projects allows managers to verify the successful
completion of project phases before allocating resources to subsequent
phases.

Software development projects typically include initiation, planning,


design, development, testing, implementation, and maintenance phases.
However, the phases may be divided differently depending on the
organization involved.
PHASES OF SYSTEM DEVELOPMENT LIFE CYCLE

Initiation Phase

The initiation phase is the beginning of the project. In this phase, the idea
for the project is explored and elaborated. The goal of this phase is to
examine the feasibility of the project. In addition, decisions are made
concerning who is to carry out the project, which party (or parties) will be
involved and whether the project has an adequate base of support among
those who are involved.

In this phase, the current or prospective project leader writes a proposal,


which contains a description of the above-mentioned matters. Examples of
this type of project proposal include business plans and grant applications.
The prospective sponsors of the project evaluate the proposal and, upon
approval, provide the necessary financing. The project officially begins at
the time of approval.

System Concept Development Phase


The Concept Development Phase may begin after the approval of the
Concept Proposal and Project Charter, the completion of the Initiation
project status review, and the approval to proceed to the Concept
Development Phase.

The focus of the phase is two-fold:


1) evaluate feasibility of alternatives
2) clearly define and approve project scope, including the system, all
deliverables, and all required activities.

The Concept Development Phase activities are inputs into the development
of the ITPR, which is a required output of this phase.
Planning Phase
The planning stage (also called the feasibility stage) the phase in which
developers will plan for the upcoming project. It helps to define the
problem and scope of any existing systems, as well as determine the
objectives for their new systems. By developing an effective outline for the
upcoming development cycle, they'll theoretically catch problems before
they affect development. And help to secure the funding and resources they
need to make their plan happen.
Perhaps most importantly, the planning stage sets the project schedule,
which can be of key importance if development is for a commercial product
that must be sent to market by a certain time.

Analysis Phase
The analysis stage includes gathering all the specific details required for a
new system as well as determining the first ideas for prototypes.
Developers may:

 Define any prototype system requirements


 Evaluate alternatives to existing prototypes
 Perform research and analysis to determine the needs of end-users
Furthermore, developers will often create a software requirement
specification or SRS document.
This includes all the specifications for software, hardware, and network
requirements for the system they plan to build. This will prevent them from
overdrawing funding or resources when working at the same place as other
development teams.
Design Phase
The design stage is a necessary precursor to the main developer stage.
Developers will first outline the details for the overall application,
alongside specific aspects, such as its:

 User interfaces
 System interfaces
 Network and network requirements
 Databases
They’ll typically turn the SRS document they created into a more logical
structure that can later be implemented in a programming language.
Operation, training, and maintenance plans will all be drawn up so that
developers know what they need to do throughout every stage of the cycle
moving forward.
Once complete, development managers will prepare a design document to
be referenced throughout the next phases of the SDLC.

Development Phase
The development stage is the part where developers actually write code
and build the application according to the earlier design documents and
outlined specifications.
This is where Static Application Security Testing or SAST tools come into
play.
Product program code is built per the design document specifications. In
theory, all of the prior planning and outlined should make the actual
development phase relatively straightforward.
Developers will follow any coding guidelines as defined by the organization
and utilize different tools such as compilers, debuggers, and interpreters.
Programming languages can include staples such as Python, C++, PHP, and
more. Developers will choose the right programming code to use based on
the project specifications and requirements.
Testing Phase
The software must be tested to make sure that there aren’t any bugs and
that the end-user experience will not negatively be affected at any point.
During the testing stage, developers will go over their software with a fine-
tooth comb, noting any bugs or defects that need to be tracked, fixed, and
later retested.
It’s important that the software overall ends up meeting the quality
standards that were previously defined in the SRS document.
Depending on the skill of the developers, the complexity of the software,
and the requirements for the end-user, testing can either be an extremely
short phase or take a very long time.

Implementation and Integration Phase


After testing, the overall design for the software will come together.
Different modules or designs will be integrated into the primary source
code through developer efforts, usually by leveraging training
environments to detect further errors or defects.
The information system will be integrated into its environment and
eventually installed. After passing this stage, the software is theoretically
ready for market and may be provided to any end-users.

Maintenance Phase
The SDLC doesn’t end when software reaches the market. Developers must
now move into a maintenance mode and begin practicing any activities
required to handle issues reported by end-users.
Furthermore, developers are responsible for implementing any changes
that the software might need after deployment.
This can include handling residual bugs that were not able to be patched
before launch or resolving new issues that crop up due to user reports.
Larger systems may require longer maintenance stages compared to
smaller systems.

Disposition Phase
The Disposition Phase is the end of an information system’s life cycle. The
information system is formally retired according to organizational needs,
laws and regulations, and the Disposition Plan. The disposition activities
ensure that the information system is terminated in an orderly manner and
that vital information about the system is preserved according to
applicable records management regulations and policies for future access.
The decision to proceed with the Disposition Phase is based on
recommendations and approvals from an In-Process Review during the
Operations and Maintenance Phase.
SOURCE CODE
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import time

def menu():

print()
print("******************************************************************************")
print(" Welcome To Social Media Site User Management System ")
print("******************************************************************************")
print(" Menu ")
print(" ************************************* ")
print()
print(" -> Data Analysis:")
print(" 1) Reading file without index")
print(" 2) Reading file with new column names")
print(" 3) Sorting the values in ascending order of Names")
print(" -> Data Visualization:")
print(" 4) Line plot")
print(" 5) Bar Plot")
print(" 6) Horizontal Bar Plot")
print(" -> Data Manipulation:")
print(" 7) Extracting the middle row from the file ")
print(" 8) Reading 4 records from top and 6 from bottom of the file")
print(" 9) Duplicate file with new user-defined name")
print(" 10) Replacing NaN values with zeroes")
print(" 11) Create a CSV file with data frame ")
print(" 12) Read previously created CSV file " )
print()
print("******************************************************************************")

menu()

#For Option (1)


def no_index():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-
1',index_col=0)
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
df.head()
print("Reading file without index....")
time.sleep(4)
print(df)
#For Option (2)
def new_colnames():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-
1',skiprows=1,names=("ID","NAME","DATE OF
BIRTH","AGE","SEX","EMAIL","COUNTRY","AREA","CONTACT
NUMBER","REGISTRATION DATE","ACCOUNT STATUS"))
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['CONTACT NUMBER'] = df['CONTACT NUMBER'].astype('Int64')
df.head()
print("Reading file with new column names....")
time.sleep(4)
print(df)

#For Option (3)


def sort_val_asc():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
df.head()
df.sort_values(by=['User Name'],inplace=True)
print("Sorting the values in ascending oder of Name....")
time.sleep(4)
print(df)

#For Option (4)


def line_plot():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
df['DOR'] = pd.to_datetime(df['DOR'], infer_datetime_format=True)
df['year']= pd.DatetimeIndex(df['DOR']).year
dfp=df.pivot_table(columns = df['year'],aggfunc
='size').plot(kind='line',color='#1C86EE',marker='o',markersize=11,label='Users')
plt.xlabel("Years")
plt.ylabel("No. of users")
plt.title("Number of user registration from 2018-2022")
plt.grid(True)
plt.legend(loc='upper left')
plt.xticks(ticks=plt.xticks()[0].astype(int))
print("Creating line chart....")
time.sleep(4)
print("Line chart created successfully!")
time.sleep(1)
plt.show()
#For Option (5)
def bar_plot():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
d=df.pivot_table(index = ['Age'],aggfunc ='size')
df['age_group'] = pd.cut(df['Age'], [0,25,45,59,70],labels=['15-25', '26-45', '46-
59','Above 60'])
df['age_group'].value_counts().sort_index().plot.bar()
plt.title("Number of users in different age group")
plt.xlabel("Age Groups")
plt.ylabel("No. of users")
print("Creating bar chart....")
time.sleep(4)
print("Bar chart created successfully!")
time.sleep(1)
plt.show()

#For Option (6)


def horizon_bar_plot():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
d=df.pivot_table(index = ['Country'],aggfunc ='size').plot(kind='barh',color='coral')
plt.xlabel("No. of users")
plt.ylabel("Countries")
plt.title("Number of users from different countries")
print("Creating horizontal bar chart....")
time.sleep(4)
print("Horizontal bar chart created successfully!")
time.sleep(1)
plt.show()

#For Option (7)


def middle_row():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-
1',nrows=23)
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
df.head()
print("Fetching the middle row from the file.... ")
time.sleep(4)
print(df.tail(1))
#For Option (8)
def top_bottom():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
df.head()
print("Fetching top 4 rows from the file....")
time.sleep(4)
print(df.head(4))
time.sleep(1)
print()
print("Fetching last 6 rows from the file....")
time.sleep(4)
print(df.tail(6))

#For Option (9)


def duplicate():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
name_input=eval(input(" -> Enter the file path and file name for your duplicate file
(within double quotes and two backslashes): "))
df.to_csv(name_input)
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
print("Please wait... Duplicate file is being created")
time.sleep(4)
print("Duplicate file with the name","'",os.path.basename(name_input),"'"," created
successfully!")
time.sleep(2)
print(df)

#For Option (10)


def fill_nan():
df=pd.read_csv("C:\\csv\\social_media_site_users_data.csv",encoding='latin-1')
pd.set_option("display.max_rows",None)
pd.set_option("display.max_columns",None)
pd.set_option("display.width",None)
pd.set_option("expand_frame_repr",False)
df['Mobile No.'] = df['Mobile No.'].astype('Int64')
df.head()
df["Mobile No."].fillna(0, inplace = True)
print("Filling NaN values of the file....")
time.sleep(4)
print(df)
print("Successfully replaced NaNs with zeroes!")

#For Option (11)


def create_csv():
users_df={"Name":["Ada Braun","Rakhi Soni","Derek Tyson","Anuj Sharma","Lucas
Cabello"],"Age":[20,44,29,31,23],"Country":["Germany","India","Australia","India","
Mexico"]}
users=pd.DataFrame(users_df)
print(users)
print()
users.to_csv("C:\\csv\\user_details.csv",index=False)
time.sleep(1)
print("Creating csv file of the above dataframe....")
time.sleep(4)
print("CSV file 'user_details.csv' created successfully!")

#For Option (12)


def reading_prev_csv():
print("Reading the previously created csv file 'user_details.csv'....")
time.sleep(4)
print()
read_user_details=pd.read_csv("C:\\csv\\user_details.csv")
print(read_user_details)

#For choosing Options and execution of commands


while True:
opt=" "
opt=int(input(" -> Enter your choice (1 to 12): "))

if opt==1:
no_index()
elif opt==2:
new_colnames()
elif opt==3:
sort_val_asc()
elif opt==4:
line_plot()
elif opt==5:
bar_plot()
elif opt==6:
horizon_bar_plot()
elif opt==7:
middle_row()
elif opt==8:
top_bottom()
elif opt==9:
duplicate()
elif opt==10:
fill_nan()
elif opt==11:
create_csv()
elif opt==12:
reading_prev_csv()
else:
time.sleep(1)
print("Invalid input! Please choose a valid option (1 to 12)")
time.sleep(1)
continue

ch=input(" -> Do you wish to continue? -Y/N ")


if(ch=='N' or ch=='n'):
print("Quitting....")
time.sleep(4)
break
if(ch=='Y' or ch=='y'):
print("Please wait....")
time.sleep(2)
menu()
else:
time.sleep(1)
print("Invalid input! Press Y /y for 'Yes' or N/n for 'No'")
time.sleep(1)
ch=input(" -> Do you wish to continue? -Y/N ")
if(ch=='N' or ch=='n'):
print("Quitting....")
time.sleep(4)
break
else:
print("Please wait....")
time.sleep(2)
menu()
OUTPUT

#Menu
#if opt==1:
#if opt==2:
#if opt==3:
#if opt==4:
#if opt==5:
#if opt==6:
#if opt==7:

#if opt==8:
#if opt==9:

#if opt==10:
#if opt==11:
#if opt==12:

#if opt is invalid (not in 1-12):

#if ch is invalid (not Y/y or N/n):


#if ch is Yes (Y/y):

#if ch is No (N/n):
TESTING
Software Testing is an empirical investigation conducted to provide
stakeholders with information about the quality of the product or service
under test, with respect to the context in which it is intended to operate.
Software Testing also provides an objective, independent view of the
software to allow the business to appreciate and understand the risks at
implementation of the software. Test techniques include, but are not
limited to, the process of executing a program or application with the
intentof finding software bugs.

It can also be stated as the process of validating and verifying that a


software program/application/product meets the business and technical
requirements that guided its design and development, so that it works as
expected and can be implemented with the same characteristics. Software
Testing, depending on the testing method employed, can be implemented
at any time in the development process, however the most test effort
is employed after the requirements have been defined and coding process
hasbeen completed.
TESTING METHODS
Software testing methods are traditionally divided into black box testing
and white box testing. These two approaches are used to describe the
pointof view that a test engineer takes when designing test cases.

Black Box Testing


Black Box Testing is a testing technique where no knowledge of the
internal functionality and structure of the system is available. This testing
technique treats the system as a black box or closed box. The tester only
knows the formal inputs and expected outputs, but does not know how the
program actually arrives at those outputs. As a result, all testing must be
based on functional specifications. For this reason black box testing is also
considered to be functional testing and is also a form of behavioral testing
or opaque box testing or simply closed box testing. Although black box
testing is behavioral testing, behavioral test design is slightly different
from black box test design because internal knowledge may be available in
behavioral testing. It provides external perspective of the software under
test.

Black box testing methods include: equivalence partitioning, boundary


value analysis, all-pairs testing, fuzz testing, model-based testing,
traceability matrix, exploratory testing and specification-based testing.

Specification Based-Testing
Specification-based testing aims to test the functionality of software
according to the applicable requirements. Thus, the tester inputs data into,
and only sees the output from, the test object. This level of testing usually
requires thorough test cases to be provided to the tester, who then can
simply verify that for a given input, the output value (or behaviour), either
"is" or "is not" the same as the expected value specified in the test case.
Specification-based testing is necessary, but it is insufficient to guard
against certain risks.

Advantages of Black Box Testing


 Efficient when used on large systems.
 Since the tester and developer are independent of each other, testing is
balanced and unprejudiced.
 Tester can be non-technical.
 There is no need for the tester to have detailed functional knowledge of
system.
 Tests will be done from an end user's point of view, because the end user
should accept the system. (This testing technique is sometimes also called
Acceptance testing.)
 Testing helps to identify vagueness and contradictions in functional
specifications.
 Test cases can be designed as soon as the functional specifications are
complete.

Disadvantages of Black Box Testing


 Test cases are challenging to design without having clear functional
specifications.
 It is difficult to identify tricky inputs if the test cases are not developed
based on specifications.
 It is difficult to identify all possible inputs in limited testing time. As a
result, writing test cases may be slow and difficult.
 There are chances of having unidentified paths during the testing process.
 There is a high probability of repeating tests already performed by the
programmer.
White-box testing
White-box testing (also known as clear box testing, glass box testing,
transparent box testing and structural testing) looks inside the software
that is being tested and uses that knowledge as part of the testing process.
If, for example, exception is thrown under certain conditions, test might
want to reproduce those conditions. White-box testing requires internal
knowledge of the system and programming skills. It provides internal
perspective of the software under test.

Types of white box testing:

The following types of white box testing exist:

• api testing - Testing of the application using Public and Private APIs.

• Code coverage - creating tests to satisfy some criteria of code coverage.

For example, the test designer can create tests to cause all statements in
the program to be executed at least once.

• fault injection methods.

• mutation testing methods.

• static testing - White box testing includes all static testing.

Code Completeness Evaluation


White box testing methods can also be used to evaluate the completeness
of a test suite that was created with black box testing methods. This allows
the software team to examine parts of a system that are rarely tested and
ensures that the most important function points have been tested

Two common forms of code coverage are:

• Function Coverage: Which reports on functions executed


• Statement Coverage: Which reports on the number of lines executed to
complete the test.

They both return coverage metric, measured as a percentage.

Advantages of White Box Testing

 Testing can commence even before the GUI is ready.0


 As internal functionality is considered, all the possible conditions are
considered and test cases are generated. Hence all the functionalities
are being tested.
 It identifies the specific procedure accuracy within the application.
 It minutely verifies whether the program can be successfully executed
with other parts of the application.
 It identifies error in the hidden code and thus makes debugging process
swift.
 It removes extra lines of code which are not required in the program
thereby optimizing the program and increases the efficiency.
 As the internal coding of the application is considered while preparing
test cases, it becomes very easy to identify the input and the expected
output data.
 It helps in evaluating all the loops and paths.
 It can provide stability and usability of the test cases.
 Thoroughness achieved in white box testing is far more than black box
testing.
 Various hidden defects get unearth while conducting clear box testing.
Disadvantages of White Box testing

 As the internal code of the application has to be considered while


preparing the test cases, skilled testers are required who have
knowledge of programming also. Hence the cost of the resources is high.
 It is not possible for the tester to look into every bit of the code and
identify the hidden errors. This may result in failure of the application.
 Sometimes a change in the code may be required and thus all the
scenarios may need to be tested again.
 White box testing is an exhaustive method.
 It takes time to tester to develop the test cases.
 Test cases are a waste if changes in the implementation code are done
frequently.
 If the application is large then complete testing through white box
techniques is not feasible.
BIBLIOGRAPHY
 Informatics Practices- Class XI By: Sumita Arora
 Informatics Practices with Python- Class XI By: Preeti Arora
 Informatics Practices – NCERT Textbook for Class XI
 Website: https://www.w3resource.com

You might also like