Skip to content

ikoOSKAR rewritten in Qt Framework and C++

License

Notifications You must be signed in to change notification settings

ikolomiko/ikooskar-qt

Repository files navigation

Table of Contents

 

What is ikoOSKAR

ikoOSKAR (iko Ortak Sınav Karma Sistemi) allows you to easily manage your school's student placement schemes for exams. This program is especially targeted for high schools. Check out the official website for ikoOSKAR! (still WIP)

With ikoOSKAR you can:

  • Create student placement schemes with minimum same-grade student interaction
  • Get placement schemes for each classroom / exam hall
  • Create the list of students' exam places (the classroom / exam hall and the desk number) for each class / section, respectively
  • Prevent students from cheating in exams
  • Easily manage the student database
  • View and manipulate each class / section
  • Add hundreds of new students to the database at once; just select the spreadsheet file exported from e-okul or create your own xlsx file.
  • Add, edit or remove individual students
  • Update all students' grade informations at the end of each academic year, with just one click.
    • This action also assumes that every 12th grade student have graduated and proceeds to delete every 12th grade student from the database
  • View and edit older schemes, grouped by date

 

ikoOSKAR-Qt

This project is a reimplementation of ikoOSKAR which was originally written in C# and .Net Framework.

C++17 and Qt Framework 6.x are being used for this reimplementation, which makes the program cross-platform and also more efficient.

The code formatter of choice is clang-format with -style=webkit styling option.

doxygen is being used for the auto-generated and auto-deployed documentations, with the configurations in this file, using this script.

Dependencies for development

  • Qt Creator (optional but highly recommended)
  • Qt Framework >= 6.2
  • Compiler: GCC (for Linux), MinGW-w64 (for Windows)
    • x86_64-w64-mingw32.static-cmake package is required for cross compiling from Linux to Windows. The package is available on MXE and required by this cross-compiling script.
  • libexpat
  • CMake
  • Ninja (optional)
  • Code formatter (optional): clang-format
  • NSIS >= 3.0, for creating installers for Windows
    • x86_64-w64-mingw32.static-makensis package is required when creating Windows installers from Linux. The package is available on MXE and required by this cross-compiling script.

Dependencies for the end user

  • Internet connection for the first activation
  • Any program that can open .xlsx files (e.g. LibreOffice, Gnumeric, WPS Office, MS Office)

 

Documentation Overview

This project consists of 4 layers:

  1. Data Access Layer (DAL for short): This is the layer which interacts with raw data; such as the database, the filesystem and the CloudAuth API
  2. Business Logic Layer (BLL for short): This is the layer which contains the program logic and interacts between the UI and the DAL
  3. User Interface Layer (UI for short) (aka Presentation Layer): This is the layer which handles all UI operations
  4. Shared Layer (aka Entities): This layer contains shared classes and information across all the other layers

For further information, check out the official documentation

 

Contents of Layers

You can see which class belongs to which layer in the tables below. Classes with direct relationship are represented at the same row. The Shared Layer is shown separately because its classes are used commonly among other classes and do NOT have a direct relationship with only one (or two) class(es).

You can click on the elements of the tables to navigate to the corresponding file/folder.

DAL BLL UI
Database DatabaseHelper DatabasePage
MultiImport [1] MultiImportHelper MultiImportDialog
- StudentEditor StudentEditorDialog
- SchemeGenerator NewSchemeDialog
libxlsxwriter [2] SchemeExporter -
- HistoryProvider SchemesPage [3]
- Authenticator AboutPage
- - MainWindow
LocalAuth, CloudAuth Authenticator AuthenticatorWindow
- - ErrorUi
- - WelcomePage
- - Page
Shared
Student
ExamStudent
Desk
DeskCoordinates
Hall
Pattern
Scheme

 

License

ikoOSKAR-Qt is licensed under the GNU General Public License version 3 or later.

[1] FreeXL, the library used by ikoOSKAR::DAL::MultiImport to parse XLS and XLSX files, is licensed under the MPL tri-license terms. The GPL v2.0+ is chosen for this project.

[2] libxlsxwriter, the library used by ikoOSKAR::BLL::SchemeExporter, is licensed under a FreeBSD License.

[3] qt-collapsible-section, the code ikoOSKAR::UI::ExamWidget based on, is licensed under the GNU Lesser General Public License version 3.