-
Notifications
You must be signed in to change notification settings - Fork 16.9k
Add comprehensive scholarship management application #316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
noyder6143
wants to merge
1
commit into
codebasics:master
Choose a base branch
from
noyder6143:claude/local-scholarship-app-011CV69hVjdRrCsmHi7FvcUR
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,109 @@ | ||
| # Quick Start Guide | ||
|
|
||
| ## Get Started in 3 Steps | ||
|
|
||
| ### 1. Install Dependencies | ||
| ```bash | ||
| cd scholarship_app | ||
| pip install -r requirements.txt | ||
| ``` | ||
|
|
||
| ### 2. Load Sample Data (Optional) | ||
| ```bash | ||
| python utils/sample_data.py | ||
| ``` | ||
|
|
||
| This will create: | ||
| - 5 sample scholarships | ||
| - 5 sample students | ||
| - 8 sample applications | ||
|
|
||
| ### 3. Run the Application | ||
| ```bash | ||
| python main.py | ||
| ``` | ||
|
|
||
| or | ||
|
|
||
| ```bash | ||
| python cli.py | ||
| ``` | ||
|
|
||
| ## First Time Usage | ||
|
|
||
| When you first run the application, the menu will appear: | ||
|
|
||
| ``` | ||
| ============================================================ | ||
| ========== SCHOLARSHIP MANAGEMENT SYSTEM ================== | ||
| ============================================================ | ||
|
|
||
| [1] Manage Scholarships | ||
| [2] Manage Students | ||
| [3] Manage Applications | ||
| [4] View Statistics | ||
| [5] Search | ||
| [0] Exit | ||
| ``` | ||
|
|
||
| ### Try These Common Tasks | ||
|
|
||
| #### View All Scholarships | ||
| 1. Select `[1] Manage Scholarships` | ||
| 2. Select `[2] View All Scholarships` | ||
|
|
||
| #### Submit an Application | ||
| 1. Select `[3] Manage Applications` | ||
| 2. Select `[1] Submit New Application` | ||
| 3. Enter Student ID (e.g., 1) | ||
| 4. Enter Scholarship ID (e.g., 1) | ||
| 5. Add optional notes | ||
|
|
||
| #### View Statistics | ||
| - Select `[4] View Statistics` from main menu | ||
|
|
||
| #### Search for a Scholarship | ||
| 1. Select `[1] Manage Scholarships` | ||
| 2. Select `[6] Search Scholarships` | ||
| 3. Enter keyword (e.g., "STEM") | ||
|
|
||
| ## Sample IDs (if you loaded sample data) | ||
|
|
||
| **Students:** | ||
| - ID 1: Emily Johnson | ||
| - ID 2: Michael Chen | ||
| - ID 3: Sarah Williams | ||
| - ID 4: David Martinez | ||
| - ID 5: Jessica Taylor | ||
|
|
||
| **Scholarships:** | ||
| - ID 1: Merit Excellence Scholarship ($5,000) | ||
| - ID 2: STEM Innovation Award ($7,500) | ||
| - ID 3: Community Service Scholarship ($3,000) | ||
| - ID 4: First Generation College Student Grant ($4,000) | ||
| - ID 5: Arts and Humanities Scholarship ($3,500) | ||
|
|
||
| ## Testing | ||
|
|
||
| Run the test suite to verify everything is working: | ||
| ```bash | ||
| python tests/test_basic.py | ||
| ``` | ||
|
|
||
| ## Need Help? | ||
|
|
||
| See the full [README.md](README.md) for detailed documentation. | ||
|
|
||
| ## Common Issues | ||
|
|
||
| **Module not found error:** | ||
| - Make sure you're in the `scholarship_app` directory | ||
| - Verify dependencies are installed: `pip install -r requirements.txt` | ||
|
|
||
| **Database locked error:** | ||
| - Close any other instances of the application | ||
| - Check if the database file exists: `ls database/scholarship.db` | ||
|
|
||
| --- | ||
|
|
||
| Enjoy managing scholarships! 🎓 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,269 @@ | ||
| # Scholarship Management System | ||
|
|
||
| A comprehensive local application for managing scholarships, students, and scholarship applications. | ||
|
|
||
| ## Features | ||
|
|
||
| ### Scholarship Management | ||
| - Create, read, update, and delete scholarship records | ||
| - Track scholarship details including: | ||
| - Name and description | ||
| - Award amount | ||
| - Deadline | ||
| - Eligibility criteria | ||
| - Provider/organization | ||
| - Search scholarships by keyword | ||
| - Filter scholarships by amount range | ||
|
|
||
| ### Student Management | ||
| - Maintain student/applicant records | ||
| - Track student information: | ||
| - Personal details (name, email, phone, address) | ||
| - Academic information (GPA, graduation year) | ||
| - Search students by name or email | ||
| - Filter students by GPA range | ||
|
|
||
| ### Application Tracking | ||
| - Submit scholarship applications | ||
| - Track application status (pending, under review, approved, rejected, awarded) | ||
| - View applications by student | ||
| - View applications by scholarship | ||
| - Filter applications by status | ||
| - Add notes to applications | ||
| - Prevent duplicate applications | ||
|
|
||
| ### Statistics & Reporting | ||
| - View overall application statistics | ||
| - Track pending, approved, rejected, and awarded applications | ||
| - Monitor total students and scholarships | ||
|
|
||
| ## Installation | ||
|
|
||
| ### Prerequisites | ||
| - Python 3.7 or higher | ||
| - pip (Python package manager) | ||
|
|
||
| ### Setup | ||
|
|
||
| 1. Navigate to the scholarship_app directory: | ||
| ```bash | ||
| cd scholarship_app | ||
| ``` | ||
|
|
||
| 2. Install required dependencies: | ||
| ```bash | ||
| pip install -r requirements.txt | ||
| ``` | ||
|
|
||
| 3. (Optional) Load sample data: | ||
| ```bash | ||
| python utils/sample_data.py | ||
| ``` | ||
|
|
||
| ## Usage | ||
|
|
||
| ### Running the Application | ||
|
|
||
| Start the application by running: | ||
| ```bash | ||
| python main.py | ||
| ``` | ||
|
|
||
| Or alternatively: | ||
| ```bash | ||
| python cli.py | ||
| ``` | ||
|
|
||
| ### Main Menu Options | ||
|
|
||
| The application provides an intuitive menu-driven interface: | ||
|
|
||
| 1. **Manage Scholarships** - Add, view, update, delete, and search scholarships | ||
| 2. **Manage Students** - Add, view, update, delete, and search students | ||
| 3. **Manage Applications** - Submit and track scholarship applications | ||
| 4. **View Statistics** - See overall system statistics | ||
| 5. **Search** - Quick search for scholarships or students | ||
| 0. **Exit** - Close the application | ||
|
|
||
| ### Sample Workflows | ||
|
|
||
| #### Adding a New Scholarship | ||
| 1. Select "Manage Scholarships" from main menu | ||
| 2. Choose "Add New Scholarship" | ||
| 3. Enter scholarship details (name, amount, deadline, etc.) | ||
| 4. Scholarship is saved to the database | ||
|
|
||
| #### Submitting an Application | ||
| 1. Select "Manage Applications" from main menu | ||
| 2. Choose "Submit New Application" | ||
| 3. Enter student ID and scholarship ID | ||
| 4. Add optional notes | ||
| 5. Application is created with 'pending' status | ||
|
|
||
| #### Updating Application Status | ||
| 1. Select "Manage Applications" from main menu | ||
| 2. Choose "Update Application Status" | ||
| 3. Enter application ID | ||
| 4. Select new status (pending, under review, approved, rejected, awarded) | ||
| 5. Add optional notes | ||
| 6. Status is updated in the database | ||
|
|
||
| ## Database Structure | ||
|
|
||
| The application uses SQLite database with three main tables: | ||
|
|
||
| ### scholarships | ||
| - id (Primary Key) | ||
| - name | ||
| - description | ||
| - amount | ||
| - deadline | ||
| - eligibility_criteria | ||
| - provider | ||
| - created_at | ||
| - updated_at | ||
|
|
||
| ### students | ||
| - id (Primary Key) | ||
| - first_name | ||
| - last_name | ||
| - email (Unique) | ||
| - phone | ||
| - address | ||
| - gpa | ||
| - graduation_year | ||
| - created_at | ||
| - updated_at | ||
|
|
||
| ### applications | ||
| - id (Primary Key) | ||
| - student_id (Foreign Key) | ||
| - scholarship_id (Foreign Key) | ||
| - application_date | ||
| - status | ||
| - notes | ||
| - created_at | ||
| - updated_at | ||
|
|
||
| ## Project Structure | ||
|
|
||
| ``` | ||
| scholarship_app/ | ||
| │ | ||
| ├── database/ | ||
| │ ├── __init__.py | ||
| │ ├── db_manager.py # Database connection and schema | ||
| │ └── scholarship.db # SQLite database (created on first run) | ||
| │ | ||
| ├── models/ | ||
| │ ├── __init__.py | ||
| │ ├── scholarship.py # Scholarship model and operations | ||
| │ ├── student.py # Student model and operations | ||
| │ └── application.py # Application model and operations | ||
| │ | ||
| ├── utils/ | ||
| │ ├── __init__.py | ||
| │ └── sample_data.py # Sample data loader | ||
| │ | ||
| ├── tests/ # Test directory (for future tests) | ||
| │ | ||
| ├── __init__.py | ||
| ├── main.py # Main entry point | ||
| ├── cli.py # Command-line interface | ||
| ├── requirements.txt # Python dependencies | ||
| └── README.md # This file | ||
| ``` | ||
|
|
||
| ## Features Explained | ||
|
|
||
| ### CRUD Operations | ||
| - **Create**: Add new scholarships, students, and applications | ||
| - **Read**: View all records or individual details | ||
| - **Update**: Modify existing records | ||
| - **Delete**: Remove records (with confirmation) | ||
|
|
||
| ### Search Functionality | ||
| - Search scholarships by name, provider, or description | ||
| - Search students by name or email | ||
| - All searches are case-insensitive and support partial matches | ||
|
|
||
| ### Data Validation | ||
| - Email uniqueness for students | ||
| - Prevents duplicate applications (same student + scholarship) | ||
| - Foreign key constraints ensure data integrity | ||
|
|
||
| ### User Interface | ||
| - Clean, menu-driven CLI | ||
| - Tabular data display using tabulate library | ||
| - Clear prompts and confirmations | ||
| - Status indicators (✓ for success, ✗ for errors) | ||
|
|
||
| ## Sample Data | ||
|
|
||
| The application includes a sample data loader that creates: | ||
| - 5 sample scholarships | ||
| - 5 sample students | ||
| - 8 sample applications | ||
|
|
||
| To load sample data: | ||
| ```bash | ||
| python utils/sample_data.py | ||
| ``` | ||
|
|
||
| ## Tips | ||
|
|
||
| 1. **Start with Sample Data**: Load sample data to explore the application features | ||
| 2. **Unique Emails**: Student emails must be unique | ||
| 3. **Application Statuses**: Available statuses are: | ||
| - pending | ||
| - under review | ||
| - approved | ||
| - rejected | ||
| - awarded | ||
| 4. **Date Format**: Use YYYY-MM-DD format for deadlines | ||
| 5. **Backup**: The database file (scholarship.db) can be backed up by copying it | ||
|
|
||
| ## Future Enhancements | ||
|
|
||
| Potential features for future versions: | ||
| - Web-based interface | ||
| - Email notifications for deadlines | ||
| - Document upload support | ||
| - Reporting and analytics dashboard | ||
| - Export to CSV/PDF | ||
| - Multi-user support with authentication | ||
| - Scholarship recommendation system | ||
|
|
||
| ## Technical Details | ||
|
|
||
| - **Language**: Python 3.7+ | ||
| - **Database**: SQLite3 | ||
| - **UI Library**: tabulate (for table formatting) | ||
| - **Architecture**: Model-based with separated database layer | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Database Locked Error | ||
| If you get a "database is locked" error, ensure no other instance of the application is running. | ||
|
|
||
| ### Import Errors | ||
| Make sure all dependencies are installed: | ||
| ```bash | ||
| pip install -r requirements.txt | ||
| ``` | ||
|
|
||
| ### Module Not Found | ||
| Ensure you're running the application from the correct directory (scholarship_app). | ||
|
|
||
| ## License | ||
|
|
||
| This project is provided as-is for educational and local use. | ||
|
|
||
| ## Contact | ||
|
|
||
| For questions or issues, please refer to the project repository. | ||
|
|
||
| --- | ||
|
|
||
| **Version**: 1.0.0 | ||
| **Last Updated**: November 2024 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| """ | ||
| Scholarship Management Application | ||
| A local application to manage scholarships, students, and applications | ||
| """ | ||
|
|
||
| __version__ = '1.0.0' | ||
| __author__ = 'Scholarship App Team' |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good one!