An Android application designed to help students calculate their Grade Point Average (GPA) easily and efficiently.
- Manual Input: Add subjects and grades manually through a simple interface
- PDF Import: Automatically extract subject information and grades from PDF result files
- Supports result PDFs from Velammal Student Portal
- Compatible with DigiLocker Degree marksheets
- Dynamic Calculation: GPA updates instantly as subjects and grades are modified
- Swipe-to-Delete: Remove subject entries with a simple swipe gesture
- Language: Java
- PDF Processing: PDFBox for Android
- UI Components: Material Design 3
-
Manual Input:
- Add a subject entry by long-pressing the "Add PDF" button
- Select a subject from the dropdown list
- Choose a grade (O, A+, A, B+, B, C, U, AB)
-
PDF Import:
- Tap the PDF icon in the top app bar
- Select one or more result PDFs from your device
- The app will parse the PDFs and automatically populate the subjects and grades
-
Clear All Entries:
- Long-press the settings icon to clear all subject entries
The PDF extraction functionality is specifically designed for marksheets from Velammal Engineering College. Other institution marksheets may have different formatting and might not be parsed correctly. If you need to use this app with marksheets from other institutions, you may need to modify the regex pattern in PdfParser.java:
The application uses the following grade point system:
- O: 10.0 points
- A+: 9.0 points
- A: 8.0 points
- B+: 7.0 points
- B: 6.0 points
- C: 5.0 points
- U: 0.0 points (Unsatisfactory)
- AB: 0.0 points (Absent)
📦 GPACalculator/
├─ 📂 .github/
│ └─ 📂 workflows/
│ └─ 📄 build-release.yml
├─ 📂 app/
│ ├─ 📂 src/
│ │ └─ 📂 main/
│ │ ├─ 📂 java/
│ │ │ └─ 📂 com/
│ │ │ └─ 📂 example/
│ │ │ └─ 📂 gpacalculator/
│ │ │ ├─ 📄 GpaCalculator.java
│ │ │ ├─ 📄 GradeEnum.java
│ │ │ ├─ 📄 MainActivity.java
│ │ │ ├─ 📄 PdfParser.java
│ │ │ ├─ 📄 Subject.java
│ │ │ ├─ 📄 SubjectRepository.java
│ │ │ ├─ 📄 SubjectResult.java
│ │ │ └─ 📄 SwipeDismissLayout.java
│ │ ├─ 📂 res/
│ │ │ ├─ 📂 drawable/
│ │ │ │ ├─ 📄 add_pdf.xml
│ │ │ │ ├─ 📄 ic_launcher_background.xml
│ │ │ │ ├─ 📄 ic_launcher_foreground.xml
│ │ │ │ └─ 📄 settings.xml
│ │ │ ├─ 📂 layout/
│ │ │ │ ├─ 📄 activity_main.xml
│ │ │ │ ├─ 📄 dialog_progress.xml
│ │ │ │ └─ 📄 subject_row.xml
│ │ │ ├─ 📂 menu/
│ │ │ │ └─ 📄 top_app_bar_menu.xml
│ │ │ └─ 📂 values/
│ │ │ └─ 📄 strings.xml
│ │ └─ 📄 AndroidManifest.xml
│ ├─ 📄 .gitignore
│ ├─ 📄 build.gradle.kts
│ └─ 📄 proguard-rules.pro
├─ 📂 gradle/
│ ├─ 📂 wrapper/
│ │ ├─ 📄 gradle-wrapper.jar
│ │ └─ 📄 gradle-wrapper.properties
│ └─ 📄 libs.versions.toml
├─ 📄 .gitignore
├─ 📄 build.gradle.kts
├─ 📄 gradle.properties
├─ 📄 gradlew
├─ 📄 gradlew.bat
├─ 📄 README.md
└─ 📄 settings.gradle.kts
MainActivity: Main application UI and logicPdfParser: PDF extraction functionalityGpaCalculator: GPA calculation algorithmSubjectRepository: Subject database managementSwipeDismissLayout: Custom view for swipe-to-delete functionality
This project uses Gradle for building. To build the application:
# Clone the repository
git clone https://github.com/yourusername/GPACalculator.git
# Navigate to project directory
cd GPACalculator
# Build debug APK
./gradlew assembleDebug
# Build release APK (requires keystore configuration)
./gradlew assembleReleaseFor release builds, you need to set up the keystore:
- Create a
keystoredirectory in the project root - Place your
keystore.jksfile in the keystore directory - Create a
keystore.propertiesfile with the following content:
storeFile=../keystore/keystore.jks
storePassword=your_store_password
keyAlias=your_key_alias
keyPassword=your_key_passwordMIT License