CS102/enrolment
Report
enrolment›data

data/· managed by dataManager

Data files

Each entity type lives in its own text file, one record per line, fields separated by | and lists by commas. The columns below are taken from the load and save methods.

delimiter |list separator ,missing file → empty listplain-text passwords

How files connect#

How the data files reference each otherstudents.txt lists course codes from courses.txt. courses.txt stores an instructor ID from instructors.txt and student IDs from students.txt. assessments.txt stores a student ID and a course code. administrators.txt stands alone.enrolledCourses → codeenrolledStudents → idinstructor → idstudentId → idcourseCode → codestudents.txt8 columns · Studentcourses.txt9 columns · Courseinstructors.txt6 columns · Instructorassessments.txt5 columns · Assessmentadministrators.txt6 columns · Administrator

Student · 7+ fields per line

students.txt#

One student per line. The last column lists enrolled course codes. Read by loadStudents(), written by saveStudents().

students.txtsample · 3 lines
Sara Khalid|2200000001|Student1234|sara.k@uni.example|0500000101|North Residence|15|CS102,MATH201
Noura Saleh|2200000002|Noura12345|noura.s@uni.example|0500000102|West Campus|12|CS102,PHYS101
Faisal Omar|2200000003|Faisal1234|faisal.o@uni.example|0500000103|East Gate|18|ENG101,PHYS101
#FieldJava typeHow it loads
0nameStringparts[0]
1idStringparts[1], must be unique
2passwordStringparts[2], stored as plain text
3emailStringparts[3]
4phoneNumberStringparts[4]
5addressStringparts[5]
6creditLimitintInteger.parseInt(parts[6])
7enrolledCoursesList<Course>parts[7] split on commas → getCourseByCode()

Instructor · 6+ fields per line

instructors.txt#

Profile fields only. Courses point at instructors, not the other way round. Read by loadInstructors(), written by saveInstructors().

instructors.txtsample · 2 lines
Lina Haddad|4000000001|Teacher1234|lina.h@uni.example|0500000201|Faculty Block A
Omar Faris|4000000002|Teacher5678|omar.f@uni.example|0500000202|Faculty Block B
#FieldJava typeHow it loads
0nameStringparts[0]
1idStringparts[1], must be unique
2passwordStringparts[2]
3emailStringparts[3]
4phoneNumberStringparts[4]
5addressStringparts[5]

Administrator · 6+ fields per line

administrators.txt#

Same layout as instructors. The default admin is added at start-up if its ID is not already here. Read by loadAdministrators(), written by saveAdministrators().

administrators.txtsample · 1 lines
Registrar Office|1000000001|Registrar2026|registrar@uni.example|0500000301|Admin Building
#FieldJava typeHow it loads
0nameStringparts[0]
1idStringparts[1], must be unique
2passwordStringparts[2]
3emailStringparts[3]
4phoneNumberStringparts[4]
5addressStringparts[5]

Course · 8+ fields per line

courses.txt#

Empty schedule, description or instructor columns load as null. Read by loadCourses(), written by saveCourses().

courses.txtsample · 5 lines
Programming II|CS102|Sun/Tue 10:00|Object-oriented programming in Java|Open|4000000001|30|3|2200000001,2200000002
Discrete Mathematics|MATH201|Mon/Wed 12:00|Logic, sets and proofs|Open|4000000002|25|3|2200000001
Data Structures|CS210|Sun/Tue 13:00|Lists, trees and graphs|Open|4000000001|20|4|​
Technical Writing|ENG101|Thu 09:00|Reports, memos and presentations|Closed|4000000002|20|2|2200000003
Physics I|PHYS101|Mon/Wed 08:00|​|Open|​|2|4|2200000002,2200000003
#FieldJava typeHow it loads
0courseNameStringparts[0]
1courseCodeStringparts[1], must be unique
2scheduleStringparts[2], empty → null
3descriptionStringparts[3], empty → null
4enrollmentStatusEnrollmentStatusEnumvalueOf(parts[4]): Open or Closed
5instructorInstructorparts[5] → getInstructorById(), empty → null
6capacityintInteger.parseInt(parts[6])
7creditHoursintInteger.parseInt(parts[7])
8enrolledStudentsList<Student>parts[8] split on commas → getStudentById()

Assessment · 5+ fields per line

assessments.txt#

One grade per line, keyed by student, course and exam type. Read by loadAssessments(), written by saveAssessments().

assessments.txtsample · 5 lines
2200000001|CS102|Quiz_1|88.0|Quiz_1
2200000001|CS102|Midterm_1|91.5|Midterm_1
2200000002|CS102|Quiz_1|76.0|Quiz_1
2200000001|MATH201|Quiz_1|69.0|Quiz_1
2200000003|ENG101|Project|94.0|Project
#FieldJava typeHow it loads
0studentIdStringparts[0]
1courseCodeStringparts[1]
2examTypeExamTypevalueOf(parts[2])
3scoredoubleDouble.parseDouble(parts[3])
4assessmentNameStringparts[4], the exam type's name when graded in the app