Skip to content
This repository has been archived by the owner on Aug 15, 2019. It is now read-only.

Commit

Permalink
Updated docs and license for 2015 release
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonpaulos committed Jan 16, 2015
1 parent bd5cc27 commit a95e688
Show file tree
Hide file tree
Showing 40 changed files with 45 additions and 48 deletions.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2014 Jason Paulos
Copyright (c) 2015 Jason Paulos

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
4 changes: 2 additions & 2 deletions Qt_MatchMaker/BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
The MatchMaker application uses the Qt library to provide a user interface that is consistant between different operating systems. Because of this, it is possible to compile the application for a variety of different systems and archetectuers. The steps for doing so are outlined below. It is assumed that you have already downloaded or cloned a copy of the GitHub repository.

1. __Installing Qt__
* In order to build the application, you must first install Qt. It can be found here: http://qt-project.org/downloads. I used Qt 5.2.0 to develop the application, but other versions should work as well. It is important to install versions of the library for all the compiler variations that you intend to use. For example, if you're running Windows and want to compile for MinGW 32 bit and Visual Studio 2012 32 and 64 bit, you would install all three of those kits from the Qt online installer.
* In order to build the application, you must first install Qt. It can be found here: http://www.qt.io/download/. I used Qt 5.4.0 to develop the application, but other versions should work as well. It is important to install versions of the library for all the compiler variations that you intend to use. For example, if you're running Windows and want to compile for MinGW 32 bit and Visual Studio 2012 32 and 64 bit, you would install all three of those kits from the Qt online installer.

2. __Building the project__
* Now that you have Qt installed, you can use it in two different ways to build the MatchMaker project, either through Qt Creator or through the command line.
Expand Down Expand Up @@ -31,4 +31,4 @@ The MatchMaker application uses the Qt library to provide a user interface that
And that's it. Now the project should be compiling, and if the Qt installation paths are set up successfully, there should be no errors, although there may be a few warnings.

3. __Gathering plugins__
* Because the MatchMaker application interacts with MySQL and SQLite databases, you will need to also obtain copies of the MySQL and SQLite QtSql database drivers. If they were not included in your Qt installation (check /plugins/sqldrivers/), then you will have to build them in order to interact with those databases. Please see http://qt-project.org/doc/qt-5.0/qtsql/sql-driver.html for more information. In order to use the MySQL driver, you must also have a copy of the MySQL library (usually libmysql.dll for Windows or libmysqlclient_r.dylib for Mac OSX) available on the system PATH when running the MatchMaker application.
* Because the MatchMaker application interacts with MySQL and SQLite databases, you will need to also obtain copies of the MySQL and SQLite QtSql database drivers. If they were not included in your Qt installation (check /plugins/sqldrivers/), then you will have to build them in order to interact with those databases. Please see http://qt-project.org/doc/qt-5.0/qtsql/sql-driver.html for more information. In order to use the MySQL driver, you must also have a copy of the MySQL library (usually libmysql.dll for Windows or libmysqlclient_r.dylib for Mac OSX) available on the system PATH when running the MatchMaker application. This can be found here: http://dev.mysql.com/downloads/installer/.
11 changes: 4 additions & 7 deletions Qt_MatchMaker/DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,9 @@ The purpose of the MatchMaker application is to input user information from a da
* An addition to the the DatabaseDialog::State enum, which is used to track the current StepWidget that DatabaseDialog displays
* The restructure of various if else statements in DatabaseDialog that allows the dialog to advanced and go back to other StepWidgets
* And finally, the addition of an overload of the signal/slotAddConnect(...) functions in the class DatabaseManager
Seeing as the addition of other database types is not a streamlined process, the creation of a better database connection system may be a possible future addition. However, for a project that only reqiored SQLite and MySQL database connections, it will suffice.
Seeing as the addition of other database types is not a streamlined process, the creation of a better database connection system may be a possible future addition. However, for a project that only requires SQLite and MySQL database connections, it will suffice.
2. __Matching__
* The entire application is centred around the matchmaking process. In order to calculate the relative possibility for two users to be matched, their survey answers are used to find the "distance" between the users. In this model, the each answer is treated as an element in a multidimensional coordinate system, and the linear algebra concept of vector length is applied to find the length of the vector between the two points. In this case, the vector will be in *R*^(q + 1) space, where q is the number of questions. The number of dimensions is q + 1 because the grade level is also considered an answer. Given the answers of users A and B in a survey that contained q questions, their relative matching possibility would be calculated as follows:
q + 1
sqrt( Σ((A_i - B_i)^2) )
i = 0
This value is then compared with other users of the opposite gender in order to create a sorted list of a user's top matches. However, the process is optimized to find the squared distance between users, as this speeds up the algorithm without sacrificing any precision.
* The entire application is centred around the matchmaking process. In order to calculate the relative possibility for two users to be matched, their survey answers are used to find the "distance" between the users. In this model, the each answer is treated as an element in a multidimensional coordinate system, and the linear algebra concept of vector length is applied to find the length of the vector between the two points. In this case, the vector will be in *R*^(q + 1) space, where q is the number of questions. The number of dimensions is q + 1 because the grade level is also considered an answer.
Finding the distance between two vectors in one thing, but how are the match percentages between two users calculated? This is where the Answer Range field in the input section comes into play. If the maximum range of the answers is known, then we can find the maximum distance that any two vectors can ever be from one another. Thus, the match percentages are just the distance between two vectors divided by the maximum distance possible. To see the exact implementation of this process, please refer to MatchEngine::getMatchLikelihood(...) in MatchEngine.cpp.
3. __Output__
* After the users have been matched, the results need to be printed. Each page is rendered by PrintEngine using a QPainter, and then the combined documents are saved as a PDF file. A future addition to the application might want to add support to print the matches directly to a printer, however, as of now, a PDF is a much better alternative because the results are saved on file and a variety of complex page layouts can be printed using various PDF viewing applications. However, the PDF style is hard coded into the application, so a new version of the application may want to implement the ability to change the PDF style without recompiling.
* After the users have been matched, the results need to be printed. Each page is rendered by PrintEngine using a QPainter, and then the combined documents are saved as a PDF file. A future addition to the application might want to add support to print the matches directly to a printer, however, as of now, a PDF is a much better alternative because the results are saved on file and a variety of complex page layouts can be printed using various PDF viewing applications.
2 changes: 1 addition & 1 deletion Qt_MatchMaker/Database.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseDialog.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseDialog.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseManager.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseManager.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseMySQL.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseMySQL.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseSQLite.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseSQLite.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseSetup.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DatabaseSetup.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbChooseWidget.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbChooseWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbFieldWidget.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbFieldWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbMySQLWidget.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbMySQLWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbSQLiteWidget.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbSQLiteWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/DbValidateWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/Environment.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MainWindow.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MainWindow.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MatchEngine.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MatchEngine.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MatchMaker.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MatchMaker.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MathVector.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/MathVector.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/PrintEngine.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/PrintEngine.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/StepWidget.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/StepWidget.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/User.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/User.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion Qt_MatchMaker/main.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2014 Jason Paulos
/* Copyright (c) 2015 Jason Paulos
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## What is it?

Every February, Sandra Day O'Connor High School hosts a matchmaking event where students can fill out a survey and then receive a list of top matches in the school based off their answers to the survey a few weeks later. This year (2014), we have decided to stop outsourcing the matching process and to use a combination of an online survey and a computer matching program instead. The MatchMaker project is the implementation of these features and has been in development for months leading up to this year's event. Every snippet of code has been custom made to work toward the goal of having a completely in-house, efficient, and extendible tool that is easy to use and works well. The MatchMaker project is licensed under the MIT license, and I encourage you to take advantage of this by examining the code, modifying it, and even extending the application to fit your own purposes. For more information, please see LICENSE.
Every February, Sandra Day O'Connor High School hosts a matchmaking event where students can fill out a survey and then receive a list of top matches in the school based off their answers to the survey a few weeks later. Since 2014, we have decided to stop outsourcing the matching process and to use a combination of an online survey and a computer matching program instead. The MatchMaker project is the implementation of these features. Every snippet of code has been custom made to work toward the goal of having a completely in-house, efficient, and extendible tool that is easy to use and works well. The MatchMaker project is licensed under the MIT license, and I encourage you to take advantage of this by examining the code, modifying it, and even extending the application to fit your own purposes. For more information, please see LICENSE.

## How does it work?

There are two main parts to the project: the online survey and the matching program. The online survey, which can be found in the folder Website, is a collection of PHP files that work together in order to provide questions to students and to store their answers in a database. For more information, please see Website/DOCUMENTATION.md. The matching program, which is the real meat and potatoes of this project, is a Qt GUI application written in C++ that takes a database as an input (possibly one created by the online survey), performs matching operations on the data, and then outputs the matches to a PDF file. The application's source code can be found in the folder Qt_MatchMaker. For more information, please see Qt_MatchMaker/DOCUMENTATION.md.

## How can I use it?

The current release builds of the MatchMaker application for Windows (32 and 64 bit) and for Mac OSX (x86_64) can be found on the GitHub project page: https://github.com/JasonPaulos/MatchMaker. If you want to build the application from source code, please see Qt_MatchMaker/BUILDING.md.
The current release builds of the MatchMaker application for Windows (32 and 64 bit) and for Mac OSX (x86_64) can be found on the GitHub project page: https://github.com/JasonPaulos/MatchMaker/releases. If you want to build the application from source code, please see Qt_MatchMaker/BUILDING.md.

## Who created it?

Expand Down

0 comments on commit a95e688

Please sign in to comment.