NeoV IT2022PAT
NeoV IT2022PAT
Online education has become a new form of education, with its own pros and cons
compared to face-to-face education. For online education to work, software must be
able to bridge the gaps between the educator and students. For example, a
classroom can hold many students, all with the ability to interact with their educator
and for their educator to interact back. There is no physical classroom for online
education, so software must be developed to allow students and educators to
interact with one another as if they were in person.
User Requirements
User Description Limitations Computer
Role/Who requirements
Educator ● Create fixed ● No ● Storage
lessons limitations space to
● Create personal download the
events software, and
● Edit/delete all save drafts of
lessons/events schedules
● Set the times for ● 2G of RAM
periods and days
● Schedule lessons
● Create, edit, or
delete courses
● View the finished
schedule
● Download the
schedule
Student ● Create personal ● Can’t create, ● Storage
events edit, or space to
● Edit/delete delete fixed download the
personal events lessons software, and
● Schedule lessons ● Can’t create, save drafts of
● View the finished edit, or schedules
schedule
1
● Download the delete ● 2G of RAM
schedule courses
● Can’t edit
the times for
periods and
days
Software Diagram
Database Design
Table Name: tblEventsLessons
Field: LessonKey LessonName LessonAbv LessonColour LessonNote FixedLesson
Data AutoNumber Short Text Short Text Short Text Short Text Yes/No
Type:
Example 5 Physical PhySci clPurple Lab 5 (true)
Data: Sciences
2
Field: CourseKey CourseName
Data Dictionary
Class(es)
TDay Class
-fWeek:integer; //The week of this day
-fDay:integer; //The day within the week
-fLessons: array[1..MAX_PERIODS] of integer; //Each period in the day
-fNumPeriods: integer; //Total number of periods
-fStartTime: integer; //Starting time for the day
-fPeriodLength: integer; //Length of each period
-fPeriodSpacing: integer; //Time between each period
-function LowestKey: integer; //To find the lowest PeriodKey in tblSchedule
3
+constructor Create(week, day, startTime, periodLength, periodSpacing:
integer);
+procedure setWeek(week: integer);
+procedure setDay(day: integer);
+procedure setStartTime(startTime: integer);
+procedure setPeriodLength(periodLength: integer);
+procedure setPeriodSpacing(periodSpacing: integer);
+procedure addPeriod(lessonNum: integer; updateTable: boolean);
+procedure insertPeriod(periodPos, lessonNum: integer);
+procedure replacePeriod(periodPos, lessonNum: integer);
+procedure deletePeriod(periodPos: integer);
+procedure emptyThisDay;
+function getWeek(): integer;
+function getDay(): integer;
+function getLesson(periodPos: integer): integer;
+function getNumPeriods(): integer;
+function getStartTime(): integer;
+function getPeriodLength(): integer;
+function getPeriodSpacing(): integer;
+function calcEndTime(numPeriods: integer): integer;
+function findLessonAbv(periodPos: integer): string;
+function findLessonNote(periodPos: integer): string;
+function findLessonColor(periodPos: integer): string;
+function toString(): string;
The purpose of this class is to help manage the periods within each day. The
weeks are divided into days, and each day is divided into periods. Each
Class will manage 1 day, making it easier to add, replace or delete periods
within their dedicated day. Each Class will be able to calculate the ending
time of a period, and get pieces of information about a lesson in a specific
period of the day.
Text Files
Some settings/preferences are singular variables, which will need to be accessed
when the user reopens the application. An example is: the time between each
period. These values will each be stored on a line of the text file.
arrDays
Index 1 2 3 4 … 21
TDay (A TDay (A second TDay (A third TDay (A fourth TDay … (The last TDay
object) object) object) object) object)
Parallel array:
4
arrStartingTime
Index 1 2 3 4 … 21
Integer 480 450 480 475 … 470
Parallel array:
arrPeriodLength
Index 40 45 30 35 … 40
Integer 40 45 30 35 … 40
Parallel array:
arrPeriodSpacing
Index 1 2 3 4 … 21
Integer 0 5 10 5 … 5
arrEvnLsnKeys
Index 1 2 3 4 …
Integer 2 4 5 3 …
arrEventKeys
Index 1 2 3 4 …
Integer 4 5 7 1 …
arrLessonKeys
Index 1 2 3 4 …
Integer 2 3 8 6 …
arrCourseKeys
Index 1 2 3 4 …
5
Integer 3 2 4 1 …
arrCoursePlanKeys
Index 1 2 3 4 …
Integer 1 2 7 3 …
GUI DESIGN
Main Menu (Schedule)
Design:
6
Edit [Clear All Days, Delete All Courses, Delete All Lessons,
Delete All Events, Duplicate Days]
Curriculum [Change Lessons/Courses] (Goes to the
events/lessons form)
Help [Scheduling, General Settings, Personal Events,
Lessons, Courses, Saving] (Goes to the Help form)
Button Group:
Changes the chosen period
7
Purpose/Use: To navigate to other forms.
To adjust primary settings, such as the number of weeks.
Components: Spin Edits and Combo Boxes:
Capture data used when generating the schedule
Data Validation: None (Built-in)
8
Design:
Purpose/Use: To add, delete or edit events within the list of personal events.
Components: Button Group:
Changes the chosen event
Color Box:
Change the color of the event when on display
Button [Close]
Returns to the Main Menu form
Data Validation: Buttons [Change Event Name, Add New Event]:
The lesson name must be at least 3 characters.
9
Design:
Color Box:
Change the color of the lesson when on display
10
Design:
11
Save Schedule
Design:
Purpose/Use: To show the user the drawn-up schedule, and allow them to
save it as a png or jpg file.
Components: Image
The canvas on which the schedule is drawn
Close
Returns to the Main Menu form
Data Validation: Buttons [Save As A png, Save As A jpg]:
The file name may not have characters outside of the
alphabet, both upper and lower case, digits, and a hyphen.
Help
12
Design:
Button [Close]:
Returns to the Main Menu form
Data Validation: None needed
13
IPO
T INPUT
PROCESSING OUTPUT
A General Validation
S Source (GUI Data Feedbac
Format What Method What How What Format Object
K: Component) Type k
C
ha
n
ge
se
le
ct
ed
w
ee
Mouse Store in iWeek := No No
k/ integer Numeric None N/A N/A No output
(cbxWeek) variable cbxWeek.ItemIndex output output
da
y
of
th
e
sc
he
d
ul
e
Mouse
Store in iDay := No No
(cbxDayOfWee integer Numeric None N/A N/A No output
variable cbxDayOfWeek.ItemIndex output output
k)
sLessonName :=
Database: array of Store in No No
Text None N/A N/A (LessonNameField,IndexO No output
tblSchedule string variable output output
fLessonNumber)
14
For loop repeating for
every period in the day
Add a button (
Numeric
to Get the lesson name of
(of the type of New set of
array of bgpDayPlan the period, from the TGrpButt bgpDayP
TDay object lessons and None N/A N/A periods to
integer for every database table. onItem lan
their period edit
period in the Create a button in the
slots)
selected day bgpDayPlan, and assign
the name as the caption.
)
For loop repeating for
each week
Ini
(
tia
For loop repeating for
lis
Instantiate each day of the week
e
TDay (
o Numeric
arrays objects, and Filter the table to a specific
bj Database (of the lessons No No
of None N/A N/A add periods day. No output
ec Table: Schedule scheduled for output output
integer for their For each record, add a
ts each day)
correspondi period to the TDay object,
an
ng day giving the corresponding
d
lesson number of that
da
period.
ta
)
)
Store to
Digits without temporary Read line from text file
No No
Textfile string any spaces in None N/A N/A variable, onto sTemp No output
output output
between then cast to iTime := StrToInt(sTemp)
integers
15
For loop repeating for
every record in the table
Changes
Add a button (
Setting in Nearly
to Get the lesson name from
Database components compone every
string Text None N/A N/A bgpLessons the database table.
Table: Lessons to their nts’ compone
for every Create a button in
default propertie nt
lesson bgpLessons, and assign
s
the name as the caption.
)
D
el
eti
n
g
an
ite
m
fr
Delete a
o
period within
m
the day/ an
a New set of Correspo
event/ a
b Find the specific record, items in the TGrpButt nding
iSelected- integer Numeric None N/A N/A lesson/ a
ut delete the record button group onItem Button
course/ a
to to edit Group
lesson
n
within a
gr
course
o
u
p
(e.
g.
:
D
ay
)
16
A
d
di Find the lowest available
n key for the table that will
g be added to.
an
ite Get the other necessary
m Data for the values for other fields in a New set of Correspo
to specific type of Add a period record, such as the name items in the TGrpButt nding
integer Numeric None N/A N/A
a item being to the day of a lesson (input box), the button group onItem Button
b added week (combo box), and to edit Group
ut default values.
to
n Add a new record in the
gr corresponding Database
o Table.
u
p
In
se
rti
Find the specific TDay
n
object using iSelectedDay
g
and iSelectedWeek.
a
Call the insertPeriod New set of Correspo
pe
Add a period method, giving items in the TGrpButt nding
ri iSelectedPeriod integer Numeric None N/A N/A
to the day iSelectedPeriod as an button group onItem Button
o
argument. to edit Group
d
Add a new record in the
in
Database Table:
th
Schedule.
e
da
y
No No
iSelectedDay string Numeric None N/A N/A - - No output
output output
No No
iSelectedWeek integer Numeric None N/A N/A - - No output
output output
17
C
ha
n
gi Replace the LessonName
n “Error! field in the Database
g The Table: EventsLessons, at
an name of the key of
ev your iSelectedLesson, with the
If Change the
en event/ new name. New
Keyboard length(str name of the edtChan
t/l string Text 3 or more chars Lesson/ Or event/lesson/ Text
(Input box) ing)<3 event/lesson geName
es course Replace the CourseName course name
then… /course
so must be field in the Database
n/ at least 3 Table: Courses, at the key
co character of iSelectedCourse, with
ur s long.” the new name.
se
na
m
e
iSelectedLesso No No
integer Numeric None N/A N/A - - No output
n output output
18
“Error!
The
C abbreviati
ha on of
n your
gi event/
n lesson
g must not
an be
If string=’’ Replace the LessonAbv
ev empty.”
Not NULL then… Change the field in the Database
en
Keyboard and abbreviation Table: EventsLessons, at New lesson edtChan
t/l string Text “Error! Text
(Input box) No more than 6 If of the the key of abbreviation geAbv
es The
chars length(str event/lesson iSelectedLesson, with the
so abbreviati
ing)>6 new abbreviation.
n on of
ab your
br event/
ev lesson
iat may not
io be more
n than 6
character
s”
iSelectedLesso No No
integer Numeric None N/A N/A - - No output
n output output
C
ha
n
ge
E Cast the color to a string.
ve
nt Mouse Change the Replace the LessonColor
No No
/L (clbChangeColo color Delphi colour None N/A N/A color of the field in the Database No output
output output
es r) event/lesson Table: Lessons, at the key
so of iSelectedLesson, with
n the new color-string.
C
ol
o
ur
19
iSelectedLesso No No
Integer Numeric None N/A N/A - - No output
n output output
On imgSchedule:
Text
Database No No
string (abbreviation None N/A N/A - - No output
Table: Lessons output output
of each lesson)
Database No No
string Delphi colour None N/A N/A - - No output
Table: Lessons output output
No No
spnStartHour integer Numeric None N/A N/A - - No output
output output
20
No No
spnStartMinute integer Numeric None N/A N/A - - No output
output output
spnLengthPerio No No
Integer Numeric None N/A N/A - - No output
ds output output
spnTimeBetwee No No
integer Numeric None N/A N/A - - No output
nPeriods output output
No No
cbxNumWeeks integer Numeric None N/A N/A - - No output
output output
Graphic of the No No
imgSchedule picture None N/A N/A - - No output
schedule output output
21
U
pl
oa
di
n Picture of a Upload the
imgHelp.Picture.LoadFrom Screenshot
g File jpg screenshot None N/A N/A image onto Picture imgHelp
File(‘filename.jpg’); with notes
sc with notes the imgHelp
re
en
sh
ot
L
o
“You
g Change the
sPasswor entered
in Change button to
Keyboard Check if it’s the d= an btnSignI
as string Text bSigned in bSigned:=true; “Log out”, Caption
(Input box) correct password PASSWO incorrect n
ed to true and change
RD password
uc the label
!”
at
or
L
o
g
Change the
o
Change button to
ut btnSignI
- - - - - - bSigned in bSigned:=false; “Log in”, and Caption
as n
to false change the
ed
label
uc
at
or
D Compare
“
u it to each
"'+sTemp Convert it to
pli element
Keyboard Check if it’s a +'" is not a number Find the position in the No No
ca string Text in the No output
(Input box) correct week a valid representing array output output
te array
letter of a the week
da [‘A’,’B’,’C’
week”
ys ]
22
Compare
“
it to each
"'+sTemp Convert it to
element
Keyboard Check if it’s a +'" is not a number iCopyDay:=StrToInt(sTemp No No
string Text in the No output
(Input box) correct day a valid representing ) output output
array
number the day
from 1 to
of a day”
7
Compare
“
it to each
"'+sTemp Convert it to
element
Keyboard Check if it’s a +'" is not a number Find the position in the No No
string Text in the No output
(Input box) correct week a valid representing array output output
array
letter of a the week
[‘A’,’B’,’C’
week”
]
Compare
“
it to each
"'+sTemp Convert it to
element
Keyboard Check if it’s a +'" is not a number iPasteDay:=StrToInt(sTem No No
string Text in the No output
(Input box) correct day a valid representing p) output output
array
number the day
from 1 to
of a day”
7
Create
scheduled
The day
lessons for
that was
the specific New set of
Database pasted
Sets of various week-day, items in the TGrpButt
Table: records None N/A N/A Insert record statement onto will
data by copying bgpSchedule onItem
tblSchedule have a
scheduled to edit
different
lessons from
schedule
the first
week-day
23
Annexure A – Declaration of
Authenticity
I hereby declare that the contents of this assessment task are my own original work (except
for items listed below or where there is clear acknowledgement and appropriate reference
to the work of others) and have not been plagiarised, copied from someone else or
previously submitted for assessment by anyone.
List of assistance received: