Attendance Tracker Final Delieverable
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
Login Screen
List of semesters
Menu in the list of semesters.
Add a Semester
Settings screen
List of Classes within a Semester
Menu in the list of classes.
Add a Class
List of students within a class
Adding an individual student.
Menu in the list of students
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 |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
Tools and Links
At the end of the project we ended up using a few different tools and links. Following are a few.
-
Database (Firebase)
-
Authentication (Firebase/Google)
-
QR Code Scanning (ZXing)
-
Emailing the QR Codes
-
Node.js
-
RESTful API Access on Android
-
Embedding QR Code into Email
- QR Code Image Generation API
- Used to embed the QR Code into the email as an HTML image.
- Example of API use https://api.qrserver.com/v1/create-qr-code/?size=600x600&data=Sm9obiBEb2Utam9obkBkb2UuY29t
- QR Code Image Generation API
-
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.