Class 12 CBSE Computer Science Investigatory Project
This document summarizes a student project on developing a speed typing application. It includes sections describing the purpose of the project, algorithms used, program code, and outputs. The project aims to help users improve their typing speed and accuracy through a test that tracks time, score, words per minute, and misses. The program code details functions for selecting a topic, displaying typing tests with timed inputs, scoring performance, and storing results in a database.
BONAFIDE CERTIFICATE
External Examiner
Sealof Institution
This is to certify that this bonafide project work
âSpeed Typing Appâ in the subject of Computer
Science has been completed by Nandan Ramesh of
Class XII A in the academic year 2020-2021 and is
submitted for the AISSCE practical examination
conducted by CBSE at PSBB Learning Leadership
Academy, Bangalore.
Internal Examiner
School Principal
WHY THIS PROJECT?
In todayâs technologically advancing
world, it has become essential for
everyone to learn how to use
computers and its functions, for even
day-to-day tasks like-
âą Writing important Emails
âą Online Examinations
âą Research papers
âą Maintaining Personal Blogs
âą Coding / Programming âŠ... and
many more
Whatâs the most important factor
common in all these tasks is the basic
skill of âtypingâ on a keyboard. This
may sound simple but when one has
got limited time on hand, learning
how to type not only âfastâ but with
good âaccuracyâ, can reduce oneâs
workload considerably and even
provide a sense of relief and
completion.
Thus, through this project, I wish to
help in improving oneâs typing speed
and accuracy.
âą Typing isthe process of writing or inputting text by
pressing keys on a typewriter, computer
keyboard, cell phone, or calculator. It can be
distinguished from other means of text input, such
as handwriting and speech recognition. Text can be
in the form of letters, numbers and other symbols.
âą Words per minute (WPM) is a measure of typing
speed, commonly used in recruitment. For the
purposes of WPM measurement a word is
standardized to five characters or keystrokes.
Therefore, "brown" counts as one word, but
"mozzarella" counts as two. The benefits of a
standardized measurement of input speed are that
it enables comparison across language and
hardware boundaries.
âą In one study of average computer users, the
average rate for transcription was 33 words per
minute, and 19 words per minute for composition. In
the same study, when the group was divided into
"fast", "moderate" and "slow" groups, the average
speeds were 40 wpm, 35 wpm, and 23 wpm
respectively.
âą An average professional typist reaches 50 to 80
wpm, while some positions can require 80 to 95 wpm
(usually the minimum required for dispatch
positions and other typing jobs), and some
advanced typists work at speeds above 120
wpm. Two-finger typists, sometimes also referred to
as "hunt and peck" typists, commonly reach
sustained speeds of about 37 wpm for memorized
text and 27 wpm when copying text, but in bursts
may be able to reach speeds of 60 to 70 wpm.
topic( ) Function
âąDefine the function
âą Create a pointer variable topic_window
âą Display title âChoose a Topicâ
âą Set dimensions for topic_window
Ă Define 4 nested topic functions tech( ), science( ), sports( ), literature( )
Ă Each nested function will create a file pointer to its specific text file containing related words and
store the individual words by read( ) and split( ) method
Ă Each topic function then creates a button to be displayed on the topic_window, with specific
dimensions.
Ă The fetched words are sent to the function typing_page( ) as arguments.
typing_page( ) Function
âą Function is defined with âinput_wordsâ as a parameter.
âą Create a pointer variable type_window
âą Display the title â This is a speed test ! â
âą Set the dimensions for type_window
âą Use random function to shuffle the input_words
Ă Create the different labels and buttons to be displayed on the type_window :
o Word_display
o Score_display
o Wpm_count
o Wpm_heading
o Time display
o Time_count
o Instructions display
o Word_entry box
o Exit button
Ă Each Label / Button will have the details :
o Window to be displayed on ( type_window)
o Text to be displayed (if applicable)
o Font of the displayed text
o Background colour of Label / Button
o Foreground colour of Label / Button
o Location of Label / Button on userâs screen
Ă Exit button will end the type_window loop and quit the window.
13.
time( ) Function
âąDefine the function
âą Create global variables ( timeleft, score, miss, wpm )
âą Check if timeleft is greater than 11 , else makes the time counter red
âą Check if timeleft is greater than 0, if yes, it will get decremented by 1 and displayed on the window
âą If no, the game has ended, the details such as,
o WPM
o SCORE
o MISSES
o TOTAL SCORE
âą Above details will be printed and the timeleft is made 60 again to restart the game run.
start_game( ) Function
âą Define the function
âą Create global variables ( score, miss, wpm, word_concad )
âą Check if timeleft is equal to 60
âą If yes, then call the time( ) function for the timer to run on the typing window
âą As the user enters words into the entry box, check if entered word is equal to the displayed word
âą If yes, a score of 1 is added
âą Concatenate the user entered characters into word_concad. The length of this string divided by 5
will give us the WPM (Words Per Minute)
âą Display the updated score and WPM count
âą If entered word is not equal to displayed word, then âmissâ is increased by 1
âą The words are then shuffled again using random module and word at the first position of word list
is displayed on the window again until the timeleft becomes 0.
14.
mysql( ) Function
âąDefine the function
âą Create a database connection using mysql.connector function with -
o Host
o User
o Passwrd
o database
âą Create a cursor object that temporarily stores the data that is transferred between the python
program and the database
âą Call the user( ) function to generate a random value / set of numbers to be used as a UserID in the
table where the data will be stored.
âą Insert the values-
o UserID
o WPM
o Total Score
o Correct Words
o Wrong Words
o Time Taken
âą Execute the query using the execute( ) function
âą Commit the changes to the database using the commit( ) function
user( ) Function
âą Define the function
âą Create a global variable âuserIDâ
âą Use random.randrange( ) function to generate a random number
âą This UserID value can now be used in the database to store data
LIMITATION
S
âą The dimensionsof the
windows may not be suitable
for all screen sizes, it may
become jumbled up when
used on a different screen
size.
âą There will be a small lag
between typing two words
each time, this may lead to a
lower WPM count and score.
âą The database connection will
not work unless the database
exists on the device already.
A new database will have to
be made on each new device
for it to work.
29.
SCOPE FOR
IMPROVEMENT
âą Abetter and more efficient
formula can be created for
calculating the WPM of the user
accurately.
âą More words can be added for
each topic to avoid repetition of
words during the speed test.
âą An option can be added to let the
user choose for how long he/she
wants to do the speed test ( 2 mins
, 5 mins , etc.)
âą There can be a multiplayer
feature where a user can compete
with other users and compare
their scores, WPM, etc.