DATA STRUCTURES AND ALGORITHMS
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
CAB301 DATA STRUCTURES AND ALGORITHMS
1
Development of a Software Application for a Tool
Library
Weighting: 60%
Group or Individual: Individual
In this project you will develop a software application to solve a real-world problem. To
implement this software application, you will need to use some of the data structures and
algorithms covered in this unit, to store, manage and manipulate data. It will be necessary to
design algorithms, to solve the computational problems arising during the development
process, and to analyse the time efficiency of the algorithms.
1. Information, Operation Processes and Requirements
You are hired to develop a software system for a not-for-profit tool library. The solution you
implement will manage the information about the tools, as well as the members of the tool
library.
The tool library lends its tools free of charge to people in the community. All the tools in the
tool library are obtained either from donations or purchased with funds raised by the
community.
In the tool library there are nine (9) categories of tools. In each of these nine (9) tools
categories, there are a few tool types. For example, one of the nine (9) categories is Painting
Tools. Painting Tools are divided into five (5) types, including Sanding Tools, Brushes,
Rollers, Paint Removal Tools, and Paint Scrapers. Appendix A shows the details of the nine
(9) categories and those tool types in each of the tool categories.
In each of the tool types, there may be multiple tools with different names. For example,
Irwin 125mm Orbital Sander, Rocket Sanding Block Holder and PowerFit 120 Triangular
Sander are three Sanding Tools.
In tool library, there could be multiple tools with the same name. For example, there could be
five (5) Irwin 125mm Orbital Sanders in the tool library.
When the tool library receives a tool, staff will register it with the software system. If the tool
library has already had some tools that have the same name with the tool, the quantity of the
tool needs to be increased in the software system. If the tool library does not have any tool
that has the same name with the tool, the name and quantity of the tool received must be
entered into the software system.
For a person to borrow any tool from the tool library, they must first become a member of the
tool library. To obtain membership, the person must provide:
• Firstname
• Lastname
• Contact phone number
CAB301 DATA STRUCTURES AND ALGORITHMS
2
These details must be entered into the software system before the person can obtain
membership with the tool library, and only then may the person borrow tools from the tool
library.
When a member borrows a tool from the tool library, details of this loan must be entered into
the software system. The tool library has some specific restrictions and policies.
1. Information about every tool stocked by the tool library is stored together in a
catalogue. Members may browse this catalogue to find information about each of the
tools.
2. A member cannot borrow more than three (3) tools at the same time.
3. If a member finds a tool in the catalogue they want to borrow, but all of this tool type
is currently on loan, the member cannot obviously borrow the tool, nor can they
reserve the tool.
4. When a member returns a tool or tools to the tool library, the loan record for the
tool(s) must be removed from the software system. Any other loans the member may
still have should remain be in the software system.
The system analysis has already been done, and a high-level object-oriented design has been
created. Your task is to follow the following iterative and incremental software development
process to implement the object-oriented design.
2. Software Development Process and Tasks
a. Design and implement a class, Tool, which implements the iTool interface to be
provided. In this software application, each tool is represented by an object of class
Tool.
b. Design and implement a class, ToolCollection, which implements the iToolCollection
interface that has been provided with this assignment specification. In this software
application, an object of the ToolCollection class is used to store and manipulate a
collection of Tool objects. This class must use an Array or Arrays to store a
collection of Tool objects. An object of this class can be used to store a collection of
tools that are being rented by a member or a collection of tools of a tool type.
c. Design and implement a class, Member, which implements the iMember interface that
has been provided with this assignment specification. In this software application,
each registered member is represented by an object of class Member.
d. Design and implement a class, MemberCollection, which implements the
iMemberCollection interface that has been provided with this assignment
specification. A collection of registered members can be stored in an object of class
MemberCollection. This class must use a Binary Search Tree as a class member to
store a collection of Member objects. An object of this class can be used to store all
those registered members or to store a collection of members who are currently
renting a particular tool.
e. Design and implement a class, ToolLibrarySystem, which implements the
iToolLibrarySystem interface that has been provided with this assignment
CAB301 DATA STRUCTURES AND ALGORITHMS
3
specification. The software uses the implemented methods in the class to implement
the functionalities of the software system. For example, the system uses the
implemented method, void add(iTool), in this class to implement the functionality of
adding a new tool to the system.
f. Make good use of the above five classes to build a software application for the tool
library, satisfying the following functional and non-functional requirements:
• The software application must be a Console Application of Microsoft Visual
Studio 2019 on Microsoft Windows 10 and the programming language used in the
software development must be C#.