INES – RUHENGERI
Faculty of Sciences and Information Technology
Department of Computer Science
SWE / YEAR 3 /DAY - 2024-2025
Assignment#3: Develop a Desktop Student Management System with Team Collaboration
and Presentation / 100 Marks
Overview
In this assignment, you will work in teams as per your 2nd assignment to develop a Student
Management System (SMS) desktop application using C# (.NET) with SQLite3 as the database.
This project will enhance your technical skills, teamwork, and project documentation abilities.
The assignment will involve:
1. Developing a functional SMS application with CRUD operations.
2. Collaborating effectively as a team to complete the project.
3. Documenting and presenting your work through a YouTube video.
4. Participating in live consultation sessions with the lecturer for guidance.
Team Roles and Responsibilities
Each team has 6 members. Assigned roles as follows (Assignment#2):
1. Team Lead:
o Oversees project progress, ensures deadlines are met, and submits deliverables.
2. Backend Developer:
o Sets up and manages the SQLite database, implements CRUD functionality.
3. Frontend Developer:
o Designs and implements the user interface using WinForms.
4. Quality Assurance (QA) Analyst:
o Tests all functionalities to ensure correctness and usability.
5. Documentation Specialist:
o Prepares detailed project documentation, including challenges and solutions.
6. Deployment Manager:
o Packages the application, prepares an installer, and tests it on the Team Lead's
machine.
Application Requirements
The Student Management System should include:
1. CRUD Features:
o Add, View, Edit, and Delete student records.
2. Database Setup:
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
o Use SQLite3 to create a table Students with fields: StudentID, Name, Age, and
Grade.
3. User Interface:
o A clean and user-friendly GUI using WinForms.
4. Application Icon:
o Use your Group Number as the application’s icon for branding.
5. Deployment:
o Install the final application on the Team Lead’s machine.
Assignment Workflow
1. Project Initialization (Team Lead)
• Create the project structure and assign tasks to team members.
• Ensure all members have access to a shared repository (e.g., GitHub).
2. Database Setup (Backend Developer)
• Create the SQLite3 database and test it with sample data.
3. GUI Design (Frontend Developer)
• Create forms for CRUD operations and ensure proper navigation.
4. Implement CRUD Logic (Backend Developer)
• Write code to perform Create, Read, Update, and Delete operations on the database.
5. Testing (QA Analyst)
• Test all features for correctness and usability. Document results with screenshots.
6. Documentation (Documentation Specialist)
• Prepare a concise document with:
o An introduction to the application.
o Implementation details.
o Challenges and solutions.
o Screenshots of the GUI and sample outputs.
7. Deployment (Deployment Manager)
• Package the application into an installer.
• Test the installation on the Team Lead’s machine.
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
In-Class Consultation
During class, there will be three live consultation sessions where the lecturer will:
• Assess your team collaboration and progress.
• Provide guidance and resolve any challenges.
• Evaluate teamwork and individual contributions.
Final Presentation
1. Create a Video:
o Each group will create a 3-5 minute video showcasing:
▪ Group Number and Member Introductions.
▪ Application functionalities (CRUD operations).
▪ Installation process.
o Use the Group Number as the application icon and display it in the video.
2. Upload to YouTube:
o Upload the video to YouTube and prepare to share the link during the final class
session on Friday, 24th January 2025.
o The YouTube channel for submissions will be communicated during class.
Grading Scheme
Task Marks
Project Initialization 10
Database Setup 15
Frontend Design 20
CRUD Logic Implementation 25
Quality Assurance 15
Documentation 10
Deployment 5
YouTube Presentation 10
Total 100
"Great software is not just built, it’s crafted through collaboration and creativity!"
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
======================== GUIDANCE =====================
Step-by-Step Process and Roles
1. Project Initialization (Team Lead)
• Task: Set up the project structure and assign tasks to team members.
• Steps:
o Create a GitHub repository (or local folder structure).
o Ensure each team member has access and understands their role.
o Set deadlines for each milestone (e.g., database setup, GUI design, testing).
• Marks: 10 marks
• Expected Result: A well-structured project repository with clear task delegation.
2. Database Setup (Backend Developer)
• Task: Set up an SQLite database to store student records.
• Steps:
1. Create a database named StudentDB.sqlite.
2. Create a table Students with the following fields:
▪ StudentID (INTEGER, Primary Key, Auto Increment)
▪ Name (TEXT, Not Null)
▪ Age (INTEGER, Not Null)
▪ Grade (TEXT, Not Null)
3. Add sample data to test the setup.
o Example: INSERT INTO Students (Name, Age, Grade) VALUES ('John Doe', 20,
'A');
• Marks: 15 marks
• Expected Result: A working SQLite database with a table and sample data.
3. Frontend Design (Frontend Developer)
• Task: Create the user interface using WinForms.
• Steps:
1. Create forms for the following:
▪ Main Form: Displays student records.
▪ Add/Edit Form: Allows adding or editing student details.
2. Add buttons for CRUD operations:
▪ "Add Student," "Edit," "Delete," and "Refresh List."
3. Bind the data grid view to display student records from the SQLite database.
• Marks: 20 marks
• Expected Result: A functional GUI where users can interact with the student database.
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
4. CRUD Logic Implementation (Backend Developer)
• Task: Implement the logic for CRUD operations.
• Steps:
1. Create:
▪ Add functionality to insert new records into the database.
2. Read:
▪ Fetch and display all student records in a grid view.
3. Update:
▪ Enable editing of existing student details and save changes.
4. Delete:
▪ Allow users to remove a student record.
o Use parameterized queries to prevent SQL injection.
• Marks: 25 marks
• Expected Result: Full CRUD functionality integrated with the GUI.
5. Quality Assurance (QA Analyst)
• Task: Test all features to ensure correctness and usability.
• Steps:
1. Perform testing for each CRUD operation:
▪ Add: Verify new records appear in the database.
▪ View: Confirm all records are displayed correctly.
▪ Edit: Ensure updated details are saved.
▪ Delete: Check that records are removed without errors.
2. Test edge cases, such as empty fields or invalid data inputs.
3. Document results with screenshots for each operation.
• Marks: 15 marks
• Expected Result: A bug-free application with detailed testing reports.
6. Documentation (Documentation Specialist)
• Task: Prepare a technical document for the project.
• Steps:
1. Write an introduction describing the application purpose.
2. Document the following for each feature:
▪ Task description
▪ Implementation details
▪ Challenges faced and solutions
3. Include screenshots of the GUI and database schema.
• Marks: 10 marks
• Expected Result: A well-structured project document ready for submission.
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
7. Deployment (Deployment Manager)
• Task: Package and submit the final project.
• Steps:
1. Organize all project files (code, database, documentation) into a single folder.
2. Ensure file names follow a consistent naming convention.
3. Test the application on a different system to ensure deployment readiness.
4. Submit the final deliverables to the Team Lead.
• Marks: 5 marks
• Expected Result: A neatly packaged and ready-to-deploy project.
Installation on Team Lead’s Machine
To ensure the application is installed and runs smoothly on the Team Lead's machine, follow these
steps:
1. Prepare the Application for Deployment
(Backend Developer + Deployment Manager)
• Task: Generate the necessary files for installation.
• Steps:
1. Compile the Application:
▪ Open the project in Visual Studio.
▪ Switch the build mode to "Release" from "Debug."
▪ Build the solution to generate the .exe file in the bin\Release folder.
2. Include Database File:
▪ Copy the StudentDB.sqlite file to the output folder.
▪ Ensure the application references this file correctly using a relative path.
3. Create a Config File:
▪ Add a configuration file (e.g., app.config) to define the database connection
string.
Example:
xml
CopyEdit
<connectionStrings>
<add name="StudentDB" connectionString="Data
Source=StudentDB.sqlite;Version=3;" />
</connectionStrings>
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
2. Create an Installer
(Deployment Manager)
• Task: Package the application into an installer.
• Steps:
1. Use a Setup Tool:
▪ Use tools like Inno Setup, WiX Toolset, or Visual Studio Installer
Projects to create an installer.
2. Installer Configuration:
▪ Specify the installation folder (e.g., C:\Program
Files\StudentManagementSystem).
▪ Include the following files:
▪ Compiled .exe file.
▪ StudentDB.sqlite database.
▪ Any required DLLs or configuration files.
▪ Create shortcuts for the desktop and start menu.
3. Test the Installer:
▪ Run the installer on the Team Lead’s machine and verify that the application
works.
3. Post-Installation Testing
(Team Lead + QA Analyst)
• Task: Verify the installed application.
• Steps:
1. Launch the application using the shortcut.
2. Perform basic operations (CRUD) to confirm the application works as expected.
3. Ensure that all files are installed in the designated folder.
UI/UX Improvement Tips
(Frontend Developer)
To make the application visually appealing and user-friendly, follow these tips:
1. Design Considerations
• Color Scheme:
o Use a consistent and professional color palette (e.g., blue, white, and gray). Avoid
clashing colors.
• Font Selection:
o Choose a readable font like Segoe UI or Arial.
o Use a consistent font size for labels and a slightly larger size for headings.
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133
2. Layout Enhancements
• Main Form:
o Add a title at the top (e.g., "Student Management System").
o Use a data grid to display student records neatly.
o Group related buttons (e.g., CRUD operations) together for intuitive navigation.
• Forms for Adding/Editing Students:
o Use input validation (e.g., mark required fields with asterisks and display error
messages for invalid inputs).
o Include dropdowns or radio buttons for fields like grade where applicable.
3. Icons and Visuals
• Add icons to buttons to make their purpose clear (e.g., a "+" icon for "Add Student," a
pencil icon for "Edit").
• Include a simple logo or banner for branding.
4. Responsiveness
• Ensure the forms resize properly to fit different screen sizes.
• Use anchors and docking features in WinForms to maintain layout integrity.
5. User Feedback
• Provide feedback messages (e.g., "Student added successfully!") after each operation.
• Highlight the selected record in the data grid for better clarity during edit/delete actions.
"Every great programmer once started as a beginner. Your effort and teamwork in this
project will lay the foundation for a strong career in software development. Keep learning,
keep coding!"
Clement Munyentwari |ambitieux.clement@gmail.com | +250 788807133