This project is a modular university registration system ("Mini-Golestan") written in MATLAB. It was developed for a university course on Mathematical Software and adheres to MATLAB development practices, including packages, classes, file-based data persistence, and vectorized operations.
The system supports three user roles:
- Students: Can view their grades, see class statistics (min/max/avg), and check their GPA.
- Teachers: Can view class rosters and enter/edit grades for their courses.
- Employees: Can view and edit course information, such as credit hours.
- Persistent Data: All data (users, grades, courses) is stored in .matfiles, so changes are saved between sessions.
- Modular Package: All application logic is encapsulated in a +golestanMATLAB package, separating it from the main script.
- Clean Data Structures: Uses MATLAB tablesinstead of raw matrices. This allows for readable, named-column access (e.g.,students.MathDB) instead of "magic numbers" (students(:, 3)).
- Separation of Concerns:
- DataService.mhandles all file loading/saving.
- AuthService.mhandles user login.
- utils.mprovides static helper functions (GPA, grade assessment).
- StudentPortal.m,- TeacherPortal.m, and- EmployeePortal.mcontain their own UI loops.
 
- Efficient Code: Uses fast, vectorized table lookups instead of for-loop user searches.
matlab-university-portal/ 
├── .gitignore 
├── LICENSE 
├── README.md                      # This documentation 
├── initialize_data.m              # --- RUN THIS FIRST --- 
├── main.m                         # The main runnable script (CLI) 
└── +golestan/                     # The MATLAB package folder 
    ├── AuthService.m              # Static class for login 
    ├── DataService.m              # Class for loading/saving .mat files 
    ├── EmployeePortal.m           # Function for the employee UI 
    ├── StudentPortal.m            # Function for the student UI 
    ├── TeacherPortal.m            # Function for the teacher UI 
    └── utils.m                    # Static class for gpacalc, assess
- Open MATLAB.
- Add to Path: Make sure the project's root folder is on the MATLAB path.
>> addpath(genpath(pwd));
- Initialize the Database (Run Once):
Run the initialization script from the MATLAB command window. This will create the data/directory.>> initialize_data Initializing database in 'data/' directory... Database initialized successfully. 
- Run the Main Program:
Now you can run the main application.
>> main Welcome to Mini Golestan! --- Main Menu --- Which type of user are you? e) Employee t) Teacher s) Student x) Exit Program Enter your choice: 
Feel free to connect or reach out if you have any questions!
- Maryam Rezaee
- GitHub: @msmrexe
- Email: ms.maryamrezaee@gmail.com
This project is licensed under the MIT License. See the LICENSE file for full details.