Answered step by step
Verified Expert Solution
Question
1 Approved Answer
1 COP 3 2 2 3 Introduction to C - Programming Assignment # 3 Due date: See syllabus Objectives 1 . To reinforce your knowledge
COP
Introduction to C Programming Assignment #
Due date: See syllabus
Objectives
To reinforce your knowledge of for loops and while loops
To utilize strings character arrays in C
To implement logic in a program that is menubased and is the seed for a complex, practical
software system.
Problem: Food Bank Program
A Food Bank is a nonprofit organization which distributes food items to people in need during
local emergency food programs. People come in to a Food Bank and make their donations, and
others might come in to make a request for any food item they want.
A Food Bank Program is used to keep track of the stock the Food Bank has ie the donations
keep a record of requests that come in fulfilling requests and printing the status report which
consists of the amount of stock present in the food bank and the requests that are not yet fulfilled.
The program would require you to make two tables: Donations Table and Request Table. Each
table will have two attributes: the Inventory Type, which is what type of food item it is eg Milk,
Meat, etc., and the Amount, which is the amount of that food item, eg etc. Note: For
simplification, no units for amounts are considered.
Functionality Specification
Add donations and requests to the tables.
For any new donation that comes in check if any donation is present in the donations table
with same inventory type; if there is one then increase its amount by the new donation
amount, and do not add a new entry in the donations table. If not, then add a new entry in
the donations table for that donation.
Remove a request from the request table when it is fulfilled.
If for a request the request amount is greater than the amount present, then partially fulfill
that request by the amount present. And do not delete that request from the request table;
just reduce its amount by the amount that is fulfilled.
If in the process of fulfilling the request, the amount present for any donation becomes
zero, then remove that donation from the donations table.
Print the status report, containing stock currently available and requests that are not yet
fulfilled.
When the option is to Fulfill a Request, you are to only process the one request that is at
the top of the Request Table the oldest request Thus, if it cannot be fulfilled, it will stall
the system, until someone donates enough, so it can be satisfied later.
InputOutput Specification
At the beginning, the program should present the user with the available options, and ask for hisher
preference. Based on the preference, the program should perform the corresponding task.
The user will have five choices:
Enter a Donation
Enter a Request
Fulfill the earliest Request
Print status report
Exit
When the user selects the program should ask the user for the inventory type and amount of
the donation to be made. When the donation has been added to the donations table, the program
should notify the user by printing out Donation Added
When the user selects the program should ask the user for the inventory type and amount of
the request to be made. When the request has been added to the requests table, the program should
notify the user by printing out Request Added
When the user selects the program should print Request Fulfilled if the request is completely
fulfilled, print Cannot be Fulfilled if there is no donation of that type, and print
Partially Fulfilled if the donation type exists, but cannot completely satisfy the request.
If a request is fulfilled, it should be deleted from the Requests Table; if a donation is fully
used up in satisfying a request, the Donation Table entry should be deleted.
When the user selects the program should print the current Donations Table and the Requests
Table.
When the user selects the program should print Thank You for running the software. Bye for
now and then the program exits.
Implementation Hints
If we assume that the maximum number of donated types at any time is and that the
Maximum length of a description of the type is then, our tables can be declared as:
char donationsinvtype;
int donationsamount;
You will need to have variables to keep track count of the total donated types, and total requests,
in the two tables.
Use function strcmp to compare if two strings are equal. Remember that when the two strings
are equal this function returns
Use function strcpy to copy from one string variable to another.
While removing the request from the requests table once it is fulfilled, you will have to shift up
the requests that are below that request in the request table, to take the place of the removed request.
The same applies when you remove a donation, if the donation amount becomes zero.
For every new donation you will have to check if the inventory type of that d
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started