Warehouse App Management System C Program
Part A Introduction
Your friend owns a frozen food warehouse which keeps wholesale food items in a gigantic freezer at -24C. Orders arrive daily from supermarkets and restaurants by email and are “picked” and placed on pallets before being shipped to the customer.
Your friend explains that the company is using off the shelf software to successfully manage the delivery side of the business. He explains that he needs a way to monitor and communicate the pallet picking jobs to the employees.
He is interested in having an app developed so that he can assign, manage and monitor the progress of the picking operations. His employees with smart phones will see what pallets (orders) are assigned to them and then update them when completed.
As a first step, he wishes to analyse data regarding pallet picking jobs and employee information to see how efficiently his company is performing. You are required to implement (using the C programming language) a prototype management system for the frozen food store. Make use of techniques covered in the course material: functions, file handling, dynamic memory allocation, data structures and sorting algorithms.
The Warehouse App Management System (WAMS) will have 2 important files: one file to record information about the employees and another file to record information about the pallets picked by the employees. The picker’s name and number are kept on file. Each pallet (job) will have an employee’s number, job number, customer name, date (and time) due and a date (and time) completed on file. You can use a dummy date and time for the date and time completed information. An employee can have many picking jobs assigned to him.
WAMS should provide functions to add employees and jobs, view employee information, sort employee information by name, view job information by date, sort job information by location, and view job information by employee.
Create a C program to implement the functions described below. Note that you may add your own utility-style functions in addition to each of the functions required. Note also that the program should be contained in one file only (i.e. no header files or multiple source files). Document your code by including comments throughout, for example, document functions with header comments. (Comments contained just before the function definition.) Your system should include a user manual containing instructions on how to run the WAMS as well as pseudo code or flowcharts for each function.
Function 1: display_menu
When the application is started, use this function to print a list of options to the user using a numbered list. When the user selects an option, the system performs the required action, and returns to the menu waiting for the user to select another option. Include an option to exit the system.
Your main menu system might resemble the following:
1. Add an Employee
2. Add a job
3. View all employee information
4. Sort employee information by name
5. View job information by date and time due
6. Sort job information by customer
7. Sort job information by date and time due
8. Set job as completed
9. View job information by employee
Function 2: load_data
This function is automatically called when the program is started. It reads employee and job information from files. If the files do not exist, notify the user, create the files and display the main menu. Once a file is open, data is read into an array of structs by dynamically creating sufficient memory for each entry read from the file.
Define a struct to represent the information for an employee, containing the following fields:
• Number (int)
• Employee (char)
Define a struct to represent the information for a job, containing the following fields:
• Employee number (int)
• Job Number (int)
• Customer (char()
• Due date/time (appropriate object)
• Completed Time (appropriate object)
Function 3: add_new_employee
When the user selects the “add new employee” menu item, prompt them for the data for the new employee. Append the new employee to the array of current employees and notify the user that the new record has been added successfully.
Function 4: add_new_job
When the user selects the “add new job” menu item, prompt them for the new job information. Append the new job to the array of current jobs and notify the user that the new record has been added successfully.
Function 5: view_employee
When the user selects the “view employees” option, this function prints a list of all employee information on record. Make sure that the employee information is in a report with headers, not simply a list of raw information.
Function 6: sort_employee
Give the user the option to sort employees by name. Store the sorted information and notify the user of the name of the file. This function displays the employee, number, sorted by employee. Make a copy of the original array of employees to perform the sorting function. Make sure that the employee information is in a report with headers, not simply a list of raw information.
Function 7: view_job_information_time_due
When the user selects the “View job information by date and time due” menu option, this function prompts the user for a job number. It then displays the date/time (in a human-readable format), the employee number, the customer and the time completed. Make sure that the information is in a report with headers, not simply a list of raw information.
Function 8: sort_job_information_by_customer
When the user selects the “sort job information by customer” menu options, this function display all jobs sorted by customer. Store the sorted information and notify the user of the name of the file. Make a copy of the original array of jobs to perform the sorting function. Make sure that the job information is in a report with headers, not simply a list of raw information.
Function 9: set_job_completed
When the user selects the “Set job as completed” menu options, prompt them for the job number. Then find the corresponding job and set the date and time completed variable to the current date and time. Store the updated information and notify the user of the name of the file.
Function 10: view_job_information_by_employee
When the user selects the “view job information by employee” menu option, this function displays each employee and the job number of the jobs that they have in the database. Make sure that the information is in a report with headers, not simply a list of raw information.
Function 11: save_data
This function is called when the user chooses to exit the system. Open all data files and write out the information contained in the respective arrays.
Part B – Modification
What other set of requirements could be implemented as part of WAMS to improve its functionality toward a real-time app? Choose one requirement (e.g. Print a list of recently completed jobs or print the most urgent unfinished job.), provide a definition, flowchart or pseudo code, and a suitable implementation to be included as part of the overall system. Amend the employee and/or job structures accordingly, to handle any extra information.