Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ranaessam03/customer-orders-and-boycotts-assistant
This repository contains Prolog solutions for managing customer orders and identifying boycott items and their alternatives based on provided data.
https://github.com/ranaessam03/customer-orders-and-boycotts-assistant
Last synced: 1 day ago
JSON representation
This repository contains Prolog solutions for managing customer orders and identifying boycott items and their alternatives based on provided data.
- Host: GitHub
- URL: https://github.com/ranaessam03/customer-orders-and-boycotts-assistant
- Owner: RanaEssam03
- Created: 2024-03-14T23:27:14.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-05-15T09:31:52.000Z (8 months ago)
- Last Synced: 2024-06-24T20:54:50.565Z (6 months ago)
- Language: Perl
- Homepage:
- Size: 94.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Customer Orders and Boycotts Assistant
This repository contains Prolog solutions for managing customer orders and identifying boycott items and their alternatives based on provided data.
## Problem Statement
Given a `data.pl` file with facts about customers, items, orders, and boycott information, the Prolog program in this repository answers various questions about customers and their orders. It also assists customers in identifying items to boycott and suggests alternatives.
## Data File
The `data.pl` file includes facts such as:
- `customer(CustID, CustUserName).`
- `item(ItemName, companyName, Price).`
- `order(CustID, OrderID, [Items]).`
- `boycott_company(companyName, justification).`
- `alternative(ItemName, AlternativeItem).`## Required Predicates
The program provides the following predicates:
1. **List Orders**: List all orders of a specific customer.
2. **Count Orders**: Get the number of orders of a specific customer given their ID.
3. **List Items in Order**: List all items in a specific customer order given customer ID and order ID.
4. **Count Items in Order**: Get the number of items in a specific customer order given customer name and order ID.
5. **Calculate Order Price**: Calculate the price of a given order given customer name and order ID.
6. **Boycott Check**: Determine whether an item or company is subject to boycott.
7. **Boycott Justification**: Find the justification for boycotting a company or an item.## Setup
To run the Prolog program, you will need a Prolog interpreter. The most commonly used interpreter is SWI-Prolog, which is available for most operating systems.
### Installing SWI-Prolog
1. **Windows**: Download the installer from SWI-Prolog's website and follow the installation instructions.
2. **macOS**: Use Homebrew by running `brew install swi-prolog` in the terminal.
3. **Linux**: Use your distribution's package manager to install SWI-Prolog. For example, on Ubuntu, you can run `sudo apt-get install swi-prolog`.### Running the Program
After installing SWI-Prolog, you can run the program by following these steps:
1. Clone the repository or download the files to your local machine.
2. Open a terminal or command prompt window.
3. Navigate to the directory containing the cloned repository.
4. Start the SWI-Prolog interpreter by typing `swipl`.
5. Consult `['solutions.pl'].`
6. Now you can query the database using the predicates provided in the solution files.### Example Query
```prolog
?- list_orders(shahd_ghazal2002, L).
L = [order(101, 2, [loreal_hair_serum_100ml, sunsilk_shampoo_350ml]), order(101, 1, [puvana, orange_1k, feba_dishwash_1L, snickers, ahlawy])].