After a semester of work our teams final presentation was May 6th. And we felt we had made quite reasonable progress. Following are a few interesting tables and demo images of the final product. Along with a few links we should have probably added to our final documentation.

Demo Images


First Screen

First Screen


Login Screen

Login Screen


List of semesters

List of semesters


Menu in the list of semesters.

Menu in the list of semesters.


Add a Semester

Add a Semester


Settings screen

Settings screen


List of Classes within a Semester

List of Classes within a Semester


Menu in the list of classes.

Menu in the list of classes.


Add a Class

Add a Class

List of students within a class

List of students within a class


Adding an individual student.

Adding an individual student.


Menu in the list of students

Menu in the list of students


Student Details Screen

Student Details Screen

Test Cases

The following is a table of test cases used to ensure that the app operated as expected.

Test ID Test Case Precondition Test Steps Expected Results
1 Log in using a valid Gmail Account. A valid Gmail Account
  1. Open the App.
  2. Select "Login Using Google."
  3. Select or Enter a valid Gmail account as prompted.
Successful login is indicated by the app moving to display the list of semesters as well as an updated data within Firebase for the last time the user has logged on.
2 Log out of the app. The successful completion of test 1.
  1. Open the app.
  2. Select the "Hamburger" menu in the upper right of the list of semeters screen.
  3. Select "Log Out"
The account will be successfully logged out. With the indication being that the app now only displays the login screen. And allows for a new login.
3 Add a Semester The successful completion of test 1.
  1. Open the app.
  2. Select the "+" button on the lower right of the list of semesters screen.
  3. Enter a Semester Name and Select OK.
Once a semester is added it should appear within the list of semesters in the app. As well as appear within Firebase under the specific user that is logged in. If a semester of the entered name already exists the user should be prompted to try again.
4 Open a Semester. The successful completion of test 3. Or the successful completion of test 3 with an already populated account.
  1. Open the app.
  2. Select a semeter from the list displayed.
The app should open to a list of classes within that Semester. Displaying class names. With the list being based on the contents of Firebase for the corresponding semester, and user.
5 Add a Class. The successful completion of test 4.
  1. Perform the actions of test 4.
  2. Select the "+" button on the lower right of the display.
  3. Enter the class name and select OK.
Once a class is added it should appear in the list seen in the app for the currently opened semester. As well as appear within Firebase and be associated with the correct semester and user. If a class of that name already exists within the semester the user will be prompted to try again.
6 Open a Class. The successful completion of test 5. Or the successful completion of test 1 with an already populated account.
  1. Perform the actions of test 4.
  2. Select a class from the list.
The app should open to a list of students within that class. Displaying student names and the number of times they have been checked in. With the list being based on the contents of Firebase for the corresponding class, semester, and user.
7 Add a student. The successful completion of test 6. Or the successful completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select the "+" button on the lower right.
  3. Enter the student's name and email.
  4. Select OK.
Once a student is added they should appear in the list seen in the app for the currently opened class. As well as appear within Firebase and be associated with the correct class, semester, and user. If a student with the same information already exists within the class nothing will change and the student's information will remain unchanged.
8 Import a Class List. A valid CSV file formatted in the aggreed upon method and the successful completion of test 6. Or the successful completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select the Import button.
  3. Find the CSV file.
  4. Select the CSV file.
Each student found within the CSV file should be added and appear in the list seen in the app for the currently opened class. As well as appears within Firebase and be associated with the correct class, semester, and user. If a student with the same information already exists within a class nothing will change and the student's information will remain unchanged. A message should also appear saying how many students where added successfully.
9 Email QR Codes. The successful completion of test 7 or test 8. Or the completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select the "Send QR Codes" button.
Each Student within the class should then be sent an email containing a QR code and the instructions on what to do with it. As well as an explanation as to why they are receiving the email and for which class.
10 Scan QR Codes. Valid QR Codes. Along with the successful completion of test 7 or test 8. Or the completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select the "Scan QR" button.
  3. Place the QR codes in front of the camera for scanning.
  4. Press the Android Back button to finalize scanning session.
After scanning each QR code a message should pop on the screen indicating if the code was scanned and if it was valid. If it was a valid code Firebase will be updated accordingly with the presence being marked in the student's attendance record for that class. And within the app, the list of students in the class will display a new number of how many times the student has been marked as present.
11 Manually mark a Student as present. The successful completion of test 7 or test 8. Or the completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select a student from the list.
  3. Within the student details select the "Mark as present" button.
The attendance record of the student selected should update accordingly on Firebase. As well as the attendance counter displayed within the list of students.
12 Export a Class's attendance record. The successful completion of test 7 or test 8. Or the completion of test 1 with an already populated account.
  1. Perform the actions of test 6.
  2. Select the export to CSV option.
  3. Select the location of where to save the export.
  4. Keep the same name or rename the export as desired.
  5. Click "Save".
A CSV file containing the names of all the students in the selected class and their attendance records should be generated. Containing the total number of times the student attended class and the dates they checked in.

At the end of the project we ended up using a few different tools and links. Following are a few.

Final Thoughts

Overall with this project I think we where all pleased with the End result. With our final live demonstration being a massive success.

In order to prove that everything was functioning as it should. We compiled a CSV file containing the names and email addresses of each of our classmates as well as the professor. So when demonstrating importing functionality we imported that list. With the demonstration of the Email functionality using the same list. The intention being that when we hit the button students in the audience would see that it was functioning as well as the professor.

Even got a chuckle out of the professor. Though even with that success there are a few things I’d change. For example while you can mark a student as present. You can not revert this. So if a student was erroneously marked as present the only method of changing it would be to delete the student’s record. But it’s all little things like that. Where given more time we could iron out the bugs. But unfortunately we only had a semester. It was a fun project never the less with most of the major functionality working quite well.