Welcome to the final project of the Microsoft Access tutorial. In this project, you will build a complete database application for an educational institute. You will use tables, relationships, forms, queries, reports, macros, validation rules, and backup techniques learned throughout the course.
InstituteManagement.accdb
The application should allow an institute to:
InstituteManagement.accdb.Use meaningful names for all tables, queries, forms, and reports.
Save the table as Students.
| Field Name | Data Type | Purpose |
|---|---|---|
| StudentID | AutoNumber | Primary key |
| StudentName | Short Text | Student's full name |
| FatherName | Short Text | Father's name |
| Mobile | Short Text | Contact number |
| Short Text | Email address | |
| Address | Long Text | Residential address |
| AdmissionDate | Date/Time | Date of admission |
Save the table as Courses.
| Field Name | Data Type | Purpose |
|---|---|---|
| CourseID | AutoNumber | Primary key |
| CourseName | Short Text | Course name |
| Duration | Short Text | Course duration |
| CourseFee | Currency | Total course fee |
| CourseName | Duration | CourseFee |
|---|---|---|
| ADCA | 12 Months | 10500 |
| Tally Prime | 3 Months | 4000 |
| Web Development | 6 Months | 10000 |
The Enrollment table connects students with their
selected courses. Save it as Enrollment.
| Field Name | Data Type | Purpose |
|---|---|---|
| EnrollmentID | AutoNumber | Primary key |
| StudentID | Number (Long Integer) | Foreign key |
| CourseID | Number (Long Integer) | Foreign key |
| EnrollmentDate | Date/Time | Enrollment date |
A separate enrollment table allows students to take multiple courses and each course to have multiple students.
Save the table as FeePayments.
| Field Name | Data Type | Purpose |
|---|---|---|
| PaymentID | AutoNumber | Primary key |
| EnrollmentID | Number (Long Integer) | Related enrollment |
| PaymentDate | Date/Time | Date of payment |
| AmountPaid | Currency | Amount received |
| PaymentMethod | Short Text | Cash, bank transfer, etc. |
| ReceiptNumber | Short Text | Payment reference |
Each payment should be stored as a separate transaction. This supports installments and payment history.
Students.StudentID
|
| One-to-Many
v
Enrollment.StudentID
Courses.CourseID
|
| One-to-Many
v
Enrollment.CourseID
Enrollment.EnrollmentID
|
| One-to-Many
v
FeePayments.EnrollmentID
Create the following forms using Form Wizard or Form Design:
frmStudents — add and edit student details.frmCourses — maintain course information.frmEnrollment — enroll students in courses.frmFeePayments — record fee installments.Create a query that displays each student's name and the course in which they are enrolled.
SELECT
Students.StudentID,
Students.StudentName,
Courses.CourseName,
Enrollment.EnrollmentDate
FROM
(Students
INNER JOIN Enrollment
ON Students.StudentID = Enrollment.StudentID)
INNER JOIN Courses
ON Enrollment.CourseID = Courses.CourseID
ORDER BY
Students.StudentName;
qryStudentEnrollment.The fee dues query compares each enrollment's course fee with the total payments recorded for that enrollment.
First, save the following query as
qryEnrollmentPayments:
SELECT
Enrollment.EnrollmentID,
Students.StudentName,
Courses.CourseName,
Courses.CourseFee,
Nz(Sum(FeePayments.AmountPaid),0) AS TotalPaid
FROM
((Students
INNER JOIN Enrollment
ON Students.StudentID = Enrollment.StudentID)
INNER JOIN Courses
ON Enrollment.CourseID = Courses.CourseID)
LEFT JOIN FeePayments
ON Enrollment.EnrollmentID = FeePayments.EnrollmentID
GROUP BY
Enrollment.EnrollmentID,
Students.StudentName,
Courses.CourseName,
Courses.CourseFee;
Next, create another query using the saved query as its data source:
SELECT
EnrollmentID,
StudentName,
CourseName,
CourseFee,
TotalPaid,
CourseFee - TotalPaid AS FeeDue
FROM
qryEnrollmentPayments;
Save the second query as qryFeeDues.
It calculates the remaining amount for each enrollment.
Create reports for reviewing and printing database information.
rptStudentList — list of registered students.rptCourseList — list of available courses.rptStudentEnrollment — students and their courses.rptFeeDues — total fees, paid amounts, and outstanding dues.rptPaymentHistory — individual fee transactions.The main menu allows users to open forms and reports from one central location.
INSTITUTE MANAGEMENT SYSTEM
-----------------------------------
[ Manage Students ]
[ Manage Courses ]
[ Student Enrollment ]
[ Fee Payments ]
[ Student Enrollment Report ]
[ Fee Dues Report ]
[ Payment History ]
[ Exit Application ]
frmMainMenu.Macros can automate routine actions without requiring you to write VBA for every operation.
Macro Action: OpenForm
Form Name: frmStudents
Macro Action: MessageBox
Message: Welcome to Institute Management System
Title: Welcome
Validation rules help prevent invalid values from being entered into the database.
Course Fee
Validation Rule: >=0
Validation Text: Course fee cannot be negative.
Amount Paid
Validation Rule: >0
Validation Text: Payment amount must be greater than zero.
Required Student Name
Set the StudentName field's Required property to Yes and consider setting Allow Zero Length to No.
Create a backup after testing the completed application.
InstituteManagement.accdb.InstituteManagement_Backup_2026-10-13.accdb
Use this checklist to track your project work:
1. Which Access object stores structured records?
2. Which field connects an enrollment to a student?
3. Which query helps calculate outstanding fees?