ExpertSystem_BrokenDetail is a Qt desktop expert system that helps identify a likely faulty car component from observed symptoms.
The application narrows candidates as the user selects factors (symptoms). When only one candidate remains, the system returns a diagnosis.
This project demonstrates a clear, educational example of rule-based filtering in a graphical interface:
- Symptom-driven narrowing of possible causes
- Deterministic behavior that is easy to inspect
- Knowledge stored outside code in a text resource for simple updates
- Open
ExpertSystem_BrokenDetail/ExpertSystem/ExpertSystem.proin Qt Creator. - Build the project with a Qt kit that supports Widgets and C++17.
- Run the application.
- In the UI, select factors in the left list to narrow down possible broken details.
- Two-list workflow: available factors and selected factors
- Incremental filtering of candidate details after each selection
- Selection management with Select, Remove, and Clear actions
- Knowledge base loaded from an embedded Qt resource file
- Language: C++17
- Framework: Qt (Core, Gui, Widgets)
- Project format: qmake (
.pro) - UI: Qt Widgets (
mainwindow.ui)
- Qt 5 or newer with Widgets module
- C++17-compatible compiler
- qmake (or Qt Creator with qmake support)
- No external runtime services
- No database server required
- Open
ExpertSystem_BrokenDetail/ExpertSystem/ExpertSystem.pro. - Select a valid desktop Qt kit.
- Build and run.
From ExpertSystem_BrokenDetail/ExpertSystem/:
qmake ExpertSystem.pro
makeOn Windows with MinGW, mingw32-make may be required instead of make.
After building, start the generated executable and use the interface:
- Select one symptom from the left list.
- Click Select to move it to the chosen list.
- Repeat until one detail remains.
- Read the diagnosis shown in the information dialog.
Use Remove to undo one selected symptom or Clear to reset all selections.
ExpertSystem_BrokenDetail/ExpertSystem/main.cpp: application entry pointExpertSystem_BrokenDetail/ExpertSystem/mainwindow.h: main window declarations and data structuresExpertSystem_BrokenDetail/ExpertSystem/mainwindow.cpp: filtering logic, resource loading, and UI actionsExpertSystem_BrokenDetail/ExpertSystem/mainwindow.ui: widget layout and controlsExpertSystem_BrokenDetail/ExpertSystem/details&factors.txt: expert knowledge (detail-to-factors mapping)ExpertSystem_BrokenDetail/ExpertSystem/database.qrc: Qt resource configurationExpertSystem_BrokenDetail/ExpertSystem/ExpertSystem.pro: qmake build configuration
To add or adjust domain knowledge:
- Edit
ExpertSystem_BrokenDetail/ExpertSystem/details&factors.txt. - Keep the existing
detail: factor, factor, factorpattern used in the file. - Rebuild and run the application.
- Validate new factors and diagnoses through the UI workflow.
- No confidence scores or ranked alternatives
- Exact-text factor matching only
- No import/export UI for the knowledge base
- No built-in persistence of user sessions
MIT License. See ExpertSystem_BrokenDetail/LICENSE.