With the increased competitiveness of cohorts in Singapore, tuition centres have become more prevalent than ever before.
According to a newspaper article in The Straits Times, billions of dollars are spent in the tuition industry in Singapore every single year.
These are just the numbers in Singapore. If we go to other countries, the situation is much worse. In India, new tuition centres preparing students for competitive entrance exams like JEE and NEET spring up every single day.
In such a fast-growing market, it is important that these tuition centres use better and more efficient student management systems to increase efficiency and automation of manual laborious tasks.
These systems enable tutors and administrative staff to focus on more pressing issues and work on catering to every students’ needs instead of being swamped with paperwork.
Classify is a student management system meant to assist administrative staff of private tuition centres.
The product is capable of storing students, and generating outputs based on provided parameters, such as phone number, or subjects taken.
Within our program, a student can be stored with their
We have determined these to be the attributes important to running a working tuition centre. Based on these attributes, our program also has functions to sort students based on subjects taken.
java -jar ./Classify.jar
help
within the program to get a quick view of the available commands.Initialises the process of adding in a student.
Prints out the details of a given student in the interface.
Initialises the process of editing both academic and non-academic details of a student.
Removes a student from the master list of students.
Removes a student from the master list of students and adds them to the archive.
Removes a student from the archive and adds them to the master list of students.
Displays a list of all the students with that associated subject taken in the tuition centre. If user enters different letter cases from subjects stored, the system will still match strings regardless of letter case for user intuitiveness.
Displays a list of all the students at the tuition centre with no other parameters shown.
Displays a list of all the students with their total classes attended at the tuition centre.
Displays a list of all the students that have been moved to archive.
Displays a list of all students who were recently deleted.
Displays a list of all students with their phone numbers.
Sorts the master list of students from A to Z. When the user types list, it will generate the updated sorted list.
Sorts the master list of students from the lowest number of classes attended to highest. When the user types list, it will generate the updated sorted list.
Sorts the master list of students from the oldest date to the most recent. When the user types list, it will generate the updated sorted list.
Adds in the most recently deleted student back into the runtime database.
Finds a specific deleted student and adds it back into the runtime database.
Enables users to add multiple students taking the same subject and having the same number of classes attended all at once.
Prints a message with instructions on how to use the features of Classify.
Exits the program.
Please note that any of the following characters are banned in any string prompts, #, -
and ~
in all fields except for the date of payment field.
add
Initialises an interface for adding a student and their relevant details to the database. Allows the user to do add or add [name]
Students of the same name can be added so long as they possess a different phone number. Students with the same phone number can be added so long as they have different names.
User is expected to add only student’s name as registered in NRIC or passport.
The first letter of the student’s name will be capitalised, while the 2nd letter onwards will be lowercase, regardless of initial input.
However, if the name contains multiple parts, each corresponding first letter after every space will be capitalised as well.
Example:
Format: add
or add NAME
Depending on whether the user entered the student’s name or not during the command, fields will be printed out in the terminal, awaiting a user input each time.
Please note that the user input NUMBER (shown below) must be an 8-digit number starting with 8 or 9. Thus, please be informed and educated that our software only works in countries that have phone numbers that are 8 digits long and start with 8 or 9.
Do note that the subject field will allow numbers as well, since lessons such as Chinese1E and Chinese1H are legitimate class names, which could signify express and higher mother tongue respectively. As such, it is on the onus of the user to not use nonsensical names for the subjects, to ensure that the database is sensible.
Last payment date must be within a range from 1970-01-01 to the day after the current date. This is a buffer to account for situations when storing dates, such as for audit reasons.
The gender field and remarks section are optional, hence if the user presses enter
, they would proceed with the next command or end the add student interface respectively.
add wario
Subject (enter nothing to skip):
SUBJECT
Current marks out of 100 (blank to skip) :
100
Enter Classes Attended (blank to skip):
1
Do you want to add another subject and grade? (yes/no)
no
Please input a valid Phone number:
Enter a non-number or blank to exit interface.
89718971
Please input the student's gender:
male
Please input their last payment date in the format of YYYY-MM-DD. Enter blank to input today's date.
14-04-2024
Please input any remarks:
He likes turtles
Student added successfully!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For any student that exists within the program’s master, archive and recently deleted list, the user cannot add new students with a name-phone number pair that matches that of the existing student.
The following is an example of trying to add a new student that matches the name and phone number of an already existing student.
add melodie
Subject (enter nothing to skip):
No subjects added.
Please input a valid phone number:
Enter a non-number or blank to exit interface.
88888888
Student and Phone number pair found. If not found in the list, please restore or unarchive the student instead.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
view
Views a student’s details. Allows the user to do view [name] or just view.
Format: view
or view NAME
Depending on whether the user entered the student’s name or not during the command, fields will be printed out in the terminal, awaiting a user input each time. If user enters different letter cases from name stored data, the system will still match strings regardless of letter case for user intuitiveness.
How it works (cases for input):
James Wong
view wario
Student details:
Name: wario
Phone Number: 97655678
Gender: male
Last Payment Date: 12/12/2023
Remarks: Unknown
Subject: subject
Current marks out of 100: 100.0
Classes Attended: 1
Note that if 2 people of the same name are present in the list, the program will prompt the user to differentiate them through a choice between the available phone numbers tagged to them.
delete
Deletes the student from the list. Allows the user to do delete [student] or just delete.
Format: delete
or delete NAME
Depending on whether the user entered the student’s name or not during the command, a field will be printed out in the terminal, awaiting a user input.
delete
Enter student name:
wario
Student removed successfully!
edit
Edit a student’s details and subjects. Allows the user to do edit [student] or just edit.
Format: edit
or edit NAME
If user has not entered a name, they will be prompted to input a name. Once program received name input, the student master list will be searched for the name. Name search is not case-sensitive.
If the name input matches that of an existing student, edit mode will be entered for that student. If 2 students with the same name is found, the user will be prompted to enter the desired student’s phone number to select them.
In edit mode, a list of actions will be printed and user can choose from a list of actions to take. The following actions (listed along with their indexes) can be executed:
The user can enter the action’s index to execute the respective action, e.g. user can input “1” to add new subject.
Each action has its own step by step prompts for user to follow, as seen in below.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Welcome to Classify!
What can I do for you today?
>> edit
Name of student to edit (blank to exit):
>> vincent
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Student details:
Name: Vincent
Phone Number: 99999999
Gender: Unknown
Last Payment Date: 2024-04-08
Remarks: Unknown
No subjects and grades found for this student.
How would you like to edit student? Enter index (blank to exit):
1. Add subject
2. Modify subject
3. Delete subject
4. Modify phone number
5. Modify remarks
6. Modify payment date
7. Edit Gender.
>> 1
Subject (enter nothing to skip): PE
Current marks out of 100 (blank to skip) :
>> 1
Enter Classes Attended (blank to skip):
>> 10
Do you want to add another subject and grade? (yes/no)
>> no
If no student is found in the master student list, edit mode will not be entered and the program will resume as per normal.
edit
Name of student to edit (blank to exit):
luigi
No student found to edit!
Similar to View Student, if the there are 2 or more students with the same name, the program would prompt the user to input the corresponding phone number of the student that they would like to edit.
restore
Restores a student deleted in the current session. Allows the user to do restore [student] or just restore.
Format: restore
or restore NAME
Depending on whether the user entered the student’s name or not during the command, a field will be printed out in the terminal, awaiting a user input.
restore
Enter student name:
mario
Student has been restored!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
undo
Undoes the latest “delete student”. Used by typing undo
Format: undo
undo
Last delete undone!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: This command does not undo changes from the edit
command.
list
Displays the list of all students, or students with a specified subject. The user can further specify if they would like to display the full student list, the list with the total classes attended, as well as the list of students in the archive or in the recently deleted list.
Format: list
Allows the user to specify a subject, then displays all students with that subject. If the field is left blank, students will be displayed regardless of the subjects they have.
The user can then select by index, from 5 additional options.
Do note that there is a difference between 0 and no classes attended found. If the program displays 0 classes attended, it means that the user entered the field 0 when adding the student. If it says no classes found, it means the user skipped that field when adding the student.
Important: If the input is invalid in the indexed portion of the list, e.g. the user types in 6
, hello
or presses enter
, the
list command would terminate.
list
Enter subject name (leave blank for all students):
math
Students with the subject "math":
- Toad - Classes Attended for math: 12
- Wario - Classes Attended for math: 5
- Mario - Classes Attended for math: 8
- Luigi - Classes Attended for math: 0
- Moyai - Classes Attended for math: 11
- Peach - No Classes Attended found for math
- Daisy - No Classes Attended found for math
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
list
Enter subject name (leave blank for all students):
Choose the type of list to display: (index only)
1. Full student list
2. List of students with total classes attended
3. List of students with phone number shown
4. List of students in archive
5. List of students in recently deleted
Enter your choice (1, 2, 3, 4 or 5):
2
List of students with total classes attended:
1.Toad - Total Classes Attended: 13
2.Wario - Total Classes Attended: 14
3.Mario - Total Classes Attended: 15
4.Luigi - Total Classes Attended: 16
5.Moyai - Total Classes Attended: 17
6.Peach - Total Classes Attended: 18
7.Daisy - Total Classes Attended: 19
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
list
Enter subject name (leave blank for all students):
Choose the type of list to display: (index only)
1. Full student list
2. List of students with total classes attended
3. List of students with phone number shown
4. List of students in archive
5. List of students in recently deleted
Enter your choice (1, 2, 3, 4 or 5):
3
List of students with phone numbers:
1.Toad - Phone Number: 91234567
2.Wario - Phone Number: 97654321
3.Mario - Phone Number: 81234567
4.Luigi - Phone Number: 87654321
5.Moyai - Phone Number: 88776655
6.Peach - Phone Number: 99887766
7.Daisy - Phone Number: 88997766
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
list
Enter subject name (leave blank for all students):
Choose the type of list to display: (index only)
1. Full student list
2. List of students with total classes attended
3. List of students with phone number shown
4. List of students in archive
5. List of students in recently deleted
Enter your choice (1, 2, 3, 4 or 5):
4
List of students in archive:
1.Timothee Chalamet
Currently, there is 1 student in the list.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
list
Enter subject name (leave blank for all students):
Choose the type of list to display: (index only)
1. Full student list
2. List of students with total classes attended
3. List of students with phone number shown
4. List of students in archive
5. List of students in recently deleted
Enter your choice (1, 2, 3, 4 or 5):
5
List of students in recently deleted:
1.Toad
2.Peach
3.Moyai
4.Mario
Currently, there are 4 students in the list.
sort
Sorts the list of students based on the following input. Allows the user to do sort [type] or just sort.
Format: sort
, sort name
, sort classes
or sort payment
Depending on whether the user entered the student’s name or not during the command, fields will be printed out in the terminal, awaiting a user input each time.
In the event the commands sort name
, sort classes
or sort payment
was typed, the program would immediately
go into the sort type.
sort
Sort by: (Choose index) or press enter to escape
1. Name (A to Z):
2. Total number of classes attended:
3. Date of last fee payment:
1
List of Students:
1. Mario
2. Toad
3. Wario
Currently, there are 3 students in the list.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sort complete!
sort payment
1.Toad - Date of last payment: 2015-10-21
2.Mario - Date of last payment: 2024-03-30
3.Wario - Date of last payment: 2024-03-30
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sort complete!
process
Reads a text file in the inputFolder folder located inside the data folder.
Format: process
, press enter, filename
(without filetype) or filename.txt
(with file extension)
The processed file will add the students into the masterStudentList with relevant attributes for subject name, grades, and classes attended.
All other student attributes (eg. gender, last payment date, remarks, etc) must be updated by the user.
Please make sure that the proper format for the input file is followed. Only one subject and class attended value should be present per text file. Otherwise, the program will read in the first subject and class attended, and apply it to all students present in the text file.
Any students with missing or invalid grades or phone number will be skipped.
The text file which is being processed MUST follow the format shown here in the SampleFile.txt
You can change the subject name, classes attended, name, phone number and grades of the student. When doing so, please follow the given format below:
Subject: CS2113
Classes Attended: 12
Luigi ~~ 98989898 ~~ 90.0
Daisy ~~ 98989888 ~~ 95.0
Mario ~~ 98988888 ~~ 98.0
Peach ~~ 98888888 ~~ 95.0
Tai Lung ~~ 90909090 ~~ 99.0
process
Current Files in your Input Folder:
1. SampleFile.txt
2. mathclass.txt
3. scienceclass.txt
Please enter the exact name of the file you'd like to process:
mathclass <---
Fetching the data from mathclass.txt.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
process
Current Files in your Input Folder:
1. SampleFile.txt
2. mathclass.txt
3. scienceclass.txt
Please enter the exact name of the file you'd like to process:
scienceclass.txt <---
Fetching the data from scienceclass.txt.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
archive
Adds a student to the archive and removes them from the master list.
Format: archive
, archive NAME
Depending on whether the user entered the student’s name or not during the command, a field will be printed out in the terminal, awaiting a user input.
For any archived student, the user will be unable to add a student with the same name and contact number pair as the archived.
archive wario
Archive successful.
The user can then view currently archived students using the list
command.
unarchive
Removes a student from the archive and adds them back to the master list.
Format: unarchive
, unarchive NAME
Depending on whether the user entered the student’s name or not during the command, a field will be printed out in the terminal, awaiting a user input.
The user can then view currently archived students using the list
command.
unarchive wario
Unarchive successful.
unarchive yeeter
No student found!
If a student that exists in the archive data file matches the name and phone number of an already existing student, the archived student will not be loaded into the archive list and will be overwritten subsequently.
help
Prints instructions which detail how to use all the features of Classify.
Format: help
help
add
Adds a student to the student list,
expects a name, grade and lessons attended
e.g. add [name]
edit
Edits a students details, expects a name,
can be used directly with a name
e.g. edit [name]
view
Views a students details, expects a name,
can be used directly with a name
e.g. view [name]
delete
Deletes a student from the student list,
expects a name,
can be used directly with a name
e.g. delete [name]
restore
Restore a student deleted within the
current session, expects a name,
can be used directly by restore [name].
undo
Restores the last student deleted
in the current session.
list
Displays the list of all students
Currently available types:
Whole student list
With total classes attended
With phone number
The archived list
The recently deleted list
By certain subject only
bye
Exits Classify
sort
Sorts the student list by the
input parameter, expects an attribute
to sort by,
can be used directly by sort [type].
Currently available types:
Name
Classes
Payment
archive
Removes the specified student from
the list and archives them,
expects a name, can be used directly by
archive [name].
unarchive
Removes the specified student from the
archive and adds them to the list,
expects a name, can be used directly by
unarchive [name].
process
Processes a text file containing
a list of students
taking the same subject and the
same number of classes.
help
Prints this help message
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bye
Exits the Classify program.
Format: bye
bye
Hope you've had a productive day. See you again! Goodbye!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section provides a quick overview of all the commands used in our Classify.
Command | Description | View Command |
---|---|---|
General | ||
add <student> |
- Adds a student into the list. - If the name of the student is not specified in the initial command, the program will prompt the user for the name. |
Add |
view <student> |
Views a students details. If the name of the student is not specified in the initial command, the program will prompt the user for the name. |
View |
delete <student> |
Deletes the student from the list. If the name of the student is not specified in the initial command, the program will prompt the user for the name. |
Delete |
edit <student> |
Allows the user to edit the details of the student. If the name of the student is not specified in the initial command, the program will prompt the user for the name. |
Edit |
Listing | ||
list , press enter, <subject> |
Displays the list of students that has taken that subject. | List |
list , press enter, press enter, <1> |
Displays the list of students that is registered in the tuition centre. | List |
list , press enter, press enter, <2> |
Displays the list of students that is registered in the tuition centre with the total number of classes taken. | List |
list , press enter, press enter, <3> |
Displays the list of students that is registered in the tuition centre with their phone numbers beside their names | List |
list , press enter, press enter, <4> |
Displays the list of students who were archived. | List |
list , press enter, press enter, <5> |
Displays the list of students who were recently deleted from the master list. | List |
Sorting | ||
sort <name> |
Sorts the list lexicographically. If the word name is not specified in the initial command, the program will prompt the user for an appropriate flag. |
Sort |
sort <payment> |
Sorts the list by the last fee payment date of a student. If the word payment is not specified in the initial command, the program will prompt the user for an appropriate flag. |
Sort |
sort <classes> |
Sorts the list by the number of classes a student has attended. If the word classes is not specified in the initial command, the program will prompt the user for an appropriate flag. |
Sort |
Process Text File | ||
process , press enter,<text_file_name> |
Processes a text file containing a list of students taking the same subject and having attended the same number of lessons. Adds all of them into the current list with their individual grades for the subject. Will need to manually input their other attributes (eg. phone number, gender, etc) |
Process |
Archiving | ||
archive <student> |
Archives specified student. Removes student from current list and adds student to archive. | Archive |
unarchive <student> |
Unarchives specified student. Moves student from archive to current list. | Unarchive |
Recently Deleted | ||
undo |
Undoes the last deleted entry. | Undo |
restore <student> |
Restores the student from the current session | Restore |
Others | ||
help |
Generates the list of commands. | Help |
bye |
Terminates the program. | Bye |
Q: How do I transfer my data to another computer?
A: Plug out the corresponding drive from the computer you would like to transfer from, and connect it to either the SATA or m.2 port of the computer you would like to transfer to. Please make sure to reinstall any existing drivers to ensure maximum compatibility.
Q: How do I transfer my data to another computer without removing any components?
A: In the jar directory (folder containing jar file), data is stored in the “data” folder (./data). You can import the contents within this data directory to that of the jar directory on the new computer.
Q: What inputs are not allowed?
A: The inputs that are banned (which are used for file saving) are #
and ~
, and in all cases except for dates, -
.
Q: (Follow up from above) Why are other special characters not banned?
A: Due to the ever-changing climate of what is considered a name (and more), we have limited the bans to 3 special characters above only. In the event your name or other identification metrics contains #
, ~
or -
, we seek for your understanding.
Q: What happens if my data file gets corrupted?
A: We recommend manually looking through the data file and rectifying any errors, or by running Classify with a corrupted data file, the prompts on screen will guide you to delete all data in the file to restore Classify to a working state.