Projects
โ1. ๐งญ Project Guidelines
- Each student must submit two projects: 1. Solo Project 2. Group Project Group project can have maximum 3 members. Each project must have: โ Command-line interface โ SQLite database โ Proper Git repository โ Meaningful commit history โ Clear project structure โ Working project demo
- All projects must have a command-line interface, also called CLI. CLI means users interact with the project through terminal or command prompt. Example: 1. Register user 2. Login 3. Add record 4. View records 5. Export report 6. Exit The project should show a menu and allow users to choose options.
- GUI is optional. Students who want to explore more can create GUI using libraries like: - Tkinter - PyQt - Kivy ๐ GUI is bonus only. ๐ CLI is mandatory even if GUI is created.
- All project data must be stored in SQLite database. Do not store main project data only in text files, CSV files, or JSON files. CSV files can be used for export. Example: Project data: Store in SQLite database. Report export: Can export to CSV file.
- Each project must have a proper Git repository. Repository should include: - Source code - README file - .gitignore file - Meaningful commit history Examples of good commit messages: - Initial project setup - Add user registration feature - Add SQLite database connection - Add CSV export feature - Add email notification feature Avoid unclear commit messages like: - update - final - changes - fixed
- Using AI tools is allowed for code generation and debugging. However, students must: โ Understand the generated code โ Be able to explain the code โ Be able to modify the code โ Know how the database tables are designed โ Know how main features work ๐ If you cannot explain the code, it will not be considered your work.
- Every project should include: - CLI menu - User input validation - SQLite database - Add/view/update/delete functionality where needed - CSV export where mentioned - Chart generation where mentioned - Email notification where mentioned - Proper error handling - README file - Git commits
- Example:
project_name/main.pydatabase.pymodels.pyservices.pyreports.pyemail_utils.pyrequirements.txtREADME.md.gitignoredatabase.dbExplanation:main.py: Main CLI menu and program entry point.database.py: Database connection and table creation.models.py: Table-related structure or helper functions.services.py: Main business logic.reports.py: CSV export and chart generation.email_utils.py: Email sending logic.requirements.txt: List of required third-party libraries.README.md: Project explanation and usage guide. Sample Project: Inventory Management System
1.1 Project Submission Requirement
1.2 CLI Requirement
1.3 Optional GUI
1.4 Database Requirement
1.5 Git Requirement
1.6 AI Usage Policy
1.7 Common Project Requirements
1.8 Suggested Project Structure
2. ๐ค Final Submission Checklist
- Before submitting each project, check the following: โ Project runs from CLI โ SQLite database is used โ Tables are created properly โ Add/view/update/delete features work โ CSV export works where required โ Chart generation works where required โ Email notification works where required โ Git repository exists โ Commit history is meaningful โ README file explains the project โ Code is understandable by all group members โ No unnecessary files are pushed to GitHub
2.1 Before Submitting
3. ๐ README Requirements
- Each project should include a README.md file. README should contain: - Project title - Project overview - Features - Technologies used - How to run the project - Database tables used - Screenshots or sample CLI output if possible - Team members for group project - AI usage note if AI was used
3.1 README Contents
4. ๐งช Demo Expectations
- During project demo, students should be able to explain: - What problem the project solves - How the CLI works - How data is stored in SQLite - What tables are used - How Git was used - How email/report/chart features work - Which part was written or improved using AI - What challenges were faced
4.1 What Students Should Explain
Practice QuestionsNot started
Project 1: Leave Management System
Question 1 of 5
- This system is used to manage employee leave requests in a company.
- Employees can apply for leave.
- Managers can approve or reject leave requests using CLI.
- An employee wants leave from 10 June to 15 June.
- Instead of sending messages or emails manually, the employee submits a leave request in the system.
- The manager checks the request and decides whether to approve or reject it.
- Employee registration
- Employee login
- Employee can apply for leave
- Employee enters start date, end date, and reason
- Employee can view leave status
- Manager login
- Manager can view all leave requests
- Manager can approve or reject leave using leave ID
- Manager can export leave requests to CSV
- Manager can generate bar chart of leave status distribution
- Email notification is sent to employee after approval or rejection
- All data is stored in SQLite database
- employees table: id, name, email, password, role
- leave_requests table: id, employee_id, start_date, end_date, reason, status, created_at
- Employee logs in through CLI menu.
- Employee applies for leave.
- Leave request is saved with status Pending.
- Manager logs in.
- Manager views all leave requests.
- Manager approves or rejects the request.
- Employee receives email notification.
- Window showing leave requests in table format
- Buttons to approve or reject requests
- Filter by Pending, Approved, Rejected
1.1 Project Overview1.2 Real-World Example1.3 Core Features1.4 Suggested Tables1.5 Example Flow1.6 Optional GUIProject 2: Support Ticket Handler
Question 2 of 5
- This system is used to manage customer complaints or support requests.
- Users create support tickets.
- Support staff update ticket status step by step using CLI.
- A user cannot log in to a website.
- The user creates a support ticket describing the issue.
- The support team checks the ticket and updates the status until the issue is solved.
- User registration
- User login
- User can create support ticket
- Ticket should have title, description, and priority
- System assigns unique ticket ID automatically
- Support staff login
- Support staff can view all tickets
- Support staff can update ticket status
- User can check ticket status using ticket ID
- Support staff can export ticket list to CSV
- Support staff can generate pie chart for tickets by status
- Email notification is sent when ticket status changes
- All data is stored in SQLite database
- Possible ticket status values: Open, In Progress, Resolved
- Possible priority values: Low, Medium, High
- users table: id, name, email, password, role
- tickets table: id, user_id, title, description, priority, status, created_at, updated_at
- User creates ticket: Internet not working.
- Ticket is saved with status Open.
- Support staff views ticket list.
- Support staff updates status to In Progress.
- Support staff finally marks it as Resolved.
- User receives email updates.
- Dashboard showing all tickets
- Filter by status and priority
- Buttons to update ticket status
2.1 Project Overview2.2 Real-World Example2.3 Core Features2.4 Ticket Status Options2.5 Suggested Tables2.6 Example Flow2.7 Optional GUIProject 3: Course Management System
Question 3 of 5
- This system is used to manage students and course enrollment in schools or institutes.
- Students can register and enroll in available courses using CLI.
- Admin can manage courses.
- A student wants to join a Python course.
- The student selects the course from the system.
- The system enrolls the student and stores the record.
- Student registration
- Student login
- Admin login
- Admin can add courses
- Admin can update or delete courses
- Students can view available courses
- Students can enroll in a course
- System prevents duplicate enrollment
- Students can view their enrolled courses
- Admin can export course enrollment list to CSV
- Admin can generate bar chart showing number of students in each course
- Email confirmation is sent after successful enrollment
- All data is stored in SQLite database
- students table: id, name, email, password
- courses table: id, course_name, description, duration, fee
- enrollments table: id, student_id, course_id, enrollment_date
- Student registers in the system.
- Admin adds course: Python Basics.
- Student views available courses.
- Student enrolls in Python Basics.
- System checks duplicate enrollment.
- Enrollment is saved in database.
- Email confirmation is sent to student.
- Course list displayed in table format
- Enrollment button
- Admin dashboard for course management
3.1 Project Overview3.2 Real-World Example3.3 Core Features3.4 Suggested Tables3.5 Example Flow3.6 Optional GUIProject 4: Expense Tracker
Question 4 of 5
- This system helps users track income and expenses.
- It provides summaries to help users understand spending habits.
- A student records daily expenses like food and transport.
- At the end of the month, the student checks how much money was spent and saved.
- User registration
- User login
- Add income entry
- Add expense entry
- Each entry should have category, amount, date, and note
- View total income
- View total expenses
- View current balance
- View monthly report
- Export monthly report to CSV
- Generate bar chart of category-wise expenditure
- Email monthly report to user
- All data is stored in SQLite database
- users table: id, name, email, password
- transactions table: id, user_id, type, category, amount, date, note
- Transaction type values: Income, Expense
- User logs in.
- User adds income: Pocket money 5000.
- User adds expense: Food 200.
- System calculates current balance.
- User views monthly report.
- Report is exported to CSV.
- Report is sent by email.
- Dashboard with income and expense summary
- Charts for category-wise spending
- Monthly summary view
4.1 Project Overview4.2 Real-World Example4.3 Core Features4.4 Suggested Tables4.5 Example Flow4.6 Optional GUIProject 5: Inventory System
Question 5 of 5
- This system is used to manage product stock in a shop or small business.
- It helps track products, sales, and stock levels.
- A shop sells products like laptops and phones.
- When a product is sold, stock is reduced automatically.
- If stock becomes low, the system alerts the manager.
- Admin login
- Add new products
- Update product quantity
- Update product price
- Delete products
- View all products in CLI table format
- Record product sales
- Reduce stock after sales
- Show low stock products
- Send low stock alert using email
- Export product list to CSV
- Generate stock report
- All data is stored in SQLite database
- products table: id, name, category, price, quantity, low_stock_limit
- sales table: id, product_id, quantity_sold, sale_date, total_amount
- Admin adds product: Laptop, 10 units.
- A sale happens: 2 laptops sold.
- Stock reduces from 10 to 8.
- System checks stock level.
- If stock is below low stock limit, email alert is sent.
- Admin updates stock if needed.
- Product dashboard with stock table
- Search and filter products
- Buttons for add, update, and delete
- Low stock warning display
5.1 Project Overview5.2 Real-World Example5.3 Core Features5.4 Suggested Tables5.5 Example Flow5.6 Optional GUI
