// package_delivery_system.h // Pantea Aria // Header file for package delivery system functions #define PACKAGE_DELIVERY_SYSTEM_H // #defines #define MAX_LEN 100 // enum definition enum priority_type { STANDARD, EXPRESS, URGENT }; enum status_type { PENDING, IN_TRANSIT, DELIVERED }; // struct definitions struct delivery_centre { char name[MAX_LEN]; //int num_packages; // to use later :) struct package *packages; }; struct package { char sender[MAX_LEN]; char receiver[MAX_LEN]; double weight; enum priority_type priority; enum status_type status; struct package *next; }; // Creates a new empty delivery centre struct delivery_centre *create_centre(char name[]); // Add a new package to the centre at the head void insert_package_at_head(struct delivery_centre *centre, char sender[], char receiver[], double weight, enum priority_type priority, enum status_type status); // Given a string, look for package where the receiver is this string struct package *search_package(struct delivery_centre *centre, char receiver[]); // Remove package(s) with certain priority void delete_package_of_priority(struct delivery_centre *centre, enum priority_type priority); // Append packages from centre_2 after centre_1 and returns them in one centre struct delivery_centre *merge_centres(char merged_centre_name[], struct delivery_centre *centre_1, struct delivery_centre *centre_2); // Split packages into 3 centres based on status void split_centre(struct delivery_centre *given_centre, struct delivery_centre *pending, struct delivery_centre *in_transit, struct delivery_centre *delivered); // Removes all packages from a centre void clear_centre(struct delivery_centre *centre); // Returns number of packages in a given centre int count_packages(struct delivery_centre *centre); // Prints out details of a single package void print_single_package(struct package *package); // Print/display all packages in centre void print_packages(struct delivery_centre *centre); // create package struct package *create_package(char sender[], char receiver[], double weight, enum priority_type priority, enum status_type status);