Project Source Codeby monoed.africa

Exam Malpractice Incident Reporting System: a worked example in PHP and MySQL

An offline system where reporters file examination malpractice incidents and exam officers review, decide and close each case with a full dated audit trail.

This is a real system made by the same builder you would use, for the topic “Design and Implementation of an Examination Malpractice Incident Reporting and Management System”. It is shown as an example. Yours is built for your own topic and your own answers, so its screens, tables and rules will differ. The source code on this page is not for download.

The problem it solves

Examination malpractice incidents are often reported informally, lost in paper trails, or lack a clear record of decisions and follow-up. Staff need a simple, offline way to file reports and for officers to manage each case through to closure.

Who uses it

admin

Administrator who manages user accounts and can perform all officer actions.

  • Manage user accounts
  • View all reports
  • Record decisions and close cases
  • Export filtered reports
  • View dashboard and audit history

officer

Exam officer who reviews all reports, records decisions and closes cases.

  • View all reports
  • Change report status
  • Record decisions and notes
  • Close cases
  • Export filtered reports

reporter

Staff member who files incident reports and sees only their own reports.

  • File a new report
  • View their own reports
  • View own report detail and history
  • Export their own filtered reports

What it does

  • Login and role-based access

    Secure login with hashed passwords, session management, CSRF protection and role-based visibility of screens.

  • Incident report filing

    A single on-screen form to file a malpractice incident with all required fields and typed evidence notes.

  • Case review, decision and closure workflow

    Officers review all reports, move status from Submitted to Under review, record decisions, close cases and add notes. Every change is saved with officer name and timestamp.

  • Restricted views for reporters

    Reporters see only their own reports and can view detail and history but cannot change status.

  • CSV export of filtered cases

    Export the currently filtered case list to CSV. Reporters export only their own filtered reports.

  • User administration

    Create and manage user accounts and roles.

Screens

Screenshots of the running system, taken by our checks. The records are sample data and are labelled so on each page.

Exam Malpractice Incident Reporting System: Dashboard
Overview counts and recent incident activity.
Exam Malpractice Incident Reporting System: File new report
Form for filing a malpractice incident.
Exam Malpractice Incident Reporting System: My reports
Reporter's own incident reports with filters and CSV export.
Exam Malpractice Incident Reporting System: All reports
Filterable list of all incident reports for officers.
Exam Malpractice Incident Reporting System: Case detail
Full case details, history and officer decision actions.
Exam Malpractice Incident Reporting System: User administration
Manage user accounts and roles.

Database tables

  • usersStores user accounts with role and hashed password.id, username, password_hash, full_name, role, created_at
  • incident_reportsStores malpractice incident reports filed by reporters.id, reporter_id, student_name, matriculation_no, course_code, exam_date, venue, description, malpractice_type, evidence_note, status, filed_at
  • case_historyStores each status change, decision and note with officer and timestamp.id, report_id, officer_id, status_from, status_to, decision, created_at

Built with

  • PHP. The chosen stack and it runs in XAMPP on Windows and Linux.
  • PDO with the MySQL driver. Prepared statements stop SQL injection and PDO is part of PHP.
  • MariaDB or MySQL. Reliable relational storage for structured case records and constraints.
  • Bootstrap. Consistent pages with no online dependency.
  • Chart.js. Small chart library that works offline.
  • theme.js. Keeps chart colours in one local file instead of hard-coded values.

How to run it: running a PHP project on XAMPP. Not sure which language to pick? Python or PHP.

How it was tested

67 of 67 tests passed, 67 of them automated. The system was also installed from scratch and every screen was opened as the right kind of user before it was accepted.

What it does not do

  • Local XAMPP demonstration only; no online or multi-institution deployment.
  • Evidence is typed text only; there are no file uploads.
  • No real email or SMS; any student notification is simulated on screen and labelled.
  • No public self-registration; an admin creates every account.
  • Incident records cannot be deleted; closed cases keep their history for audit.
  • Reporters can only see their own reports and cannot change a status.
  • The demonstration was checked on PHP 8.2 with MariaDB on Linux and in a local browser; Windows, XAMPP and PHP 7.4 were not run here.

Want a exam malpractice incident reporting system for your own school or business case?

Type your topic as your department approved it. You answer a few questions and read the full plan free. It costs ₦13,500 only if you want it built, with a guide, defence questions and screenshots.

Start with this topic