CAB301 DATA STRUCTURES AND ALGORITHMS
1
Development of a Software Application for a Tool
Library
Due Date: 24 May 2021
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.
- 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. - 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. - A member cannot borrow more than three (3) tools at the same time.
- 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. - 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. - 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#.
• Both the staff and all the registered members can use the software application. The
software application has a main menu and two sub-menus. The identity of a user
must be verified in the main menu before he/she can use the system as a registered
member or a staff member. It is assumed that the username and the password for the
staff are‘staff’and‘today123’, respectively, and that the username of a registered
member is the member’s name in one word. For example, if a member’s surname
and given name are‘Smith’and‘John’, respectively, then the member’s username
is‘SmithJohn’. The password is a four-digit integer of the member’s choice.
• The system should have a staff menu that allows a staff member to do the
following:
Add a new tool to the system
Add new pieces of an existing tool to the system
Remove some pieces of a tool from the system (the pieces of a tool cannot
be removed if it is currently not in the tool library)
Register a member with the system
Remove a member from the system
Given the name of a member, find the contact phone number of the
member
• The system should have a member menu that allows a registered member to do the
following:
Display the information about all the tools of a tool type selected by the
user. The information includes the name of the tools and the quantity of the
tools currently in the tool library
Borrow a tool from the tool library, given the name of the tool, if the tool is
available in the tool library
Return a tool to the tool library
List all the tools that are currently holding by the member
Display top three most frequently borrowed tools by all the members in the
descending order by the number of times the tool has been borrowed. The
display should include the name of the tool and the number of times that
the tool has been borrowed by now.
CAB301 DATA STRUCTURES AND ALGORITHMS
4
• The main menu and the two sub-menus should look like:
g. Design a test plan and use the test plan to systematically test the functionality of the
software system.
h. Write a technical report, which is structured as follows:
• Table of contents
• Introduction – Briefly talk about the project and the software application that you
have developed
• Design and Analysis of Algorithms – design an efficient algorithm to solve the
following computational problem(s) in the software application. Use the
pseudocode notations introduced in Lecture 1 to describe your algorithm(s) and
analyse the time efficiency of your algorithm(s).
Display top three (3) most frequently borrowed tools in the descending
order by the number of times that a tool has been borrowed.
CAB301 DATA STRUCTURES AND ALGORITHMS
5
• Software Test Plans and Test Results – design a test plan for each of functionality
testes. In each of the test plan, please include the test scenarios/cases and test data
for each of the test scenarios/cases. Please also provide your test results for each of
the test scenarios/cases using screenshots. - Assignment Requirements
• The software application must be a Console Application of Microsoft Visual Studio - and the programming language must be C#.
• You must not use any third-party C# class libraries.
• All the data structures and algorithms used in the software application must be
covered in this unit. - Submissions
• Your submission should be a single zip file named by your_student_number.zip and
comprises of a complete C# Console Application project and a technical report in PDF.
• Your submission must be submitted via the blackboard. Email submission is not accepted.
• You may resubmit your assignment as many times as you wish before the deadline. If you
submit your assignment multiple times, we will only mark the last submission before the
deadline.
CAB301 DATA STRUCTURES AND ALGORITHMS
6
Appendix A: Tool Categories and Tool Types
A.1 Tool Categories: - Gardening tools
- Flooring tools
- Fencing tools
- Measuring tools
- Cleaning tools
- Painting tools
- Electronic tools
- Electricity tools
- Automotive tools
A.2 Tool Types in Each of the Tool Categories: - Gardening tools
o Line Trimmers
o Lawn Mowers
o Hand Tools
o Wheelbarrows
o Garden Power Tools - Flooring Tools
o Scrapers
o Floor Lasers
o Floor Levelling Tools
o Floor Levelling Materials
o Floor Hand Tools
o Tiling Tools
CAB301 DATA STRUCTURES AND ALGORITHMS
7 - Fencing Tools
o Hand Tools
o Electric Fencing
o Steel Fencing Tools
o Power Tools
o Fencing Accessories - Measuring Tools
o Distance Tools
o Laser Measurer
o Measuring Jugs
o Temperature & Humidity Tools
o Levelling Tools
o Markers - Cleaning Tools
o Draining
o Car Cleaning
o Vacuum
o Pressure Cleaners
o Pool Cleaning
o Floor Cleaning - Painting Tools
o Sanding Tools
o Brushes
o Rollers
o Paint Removal Tools
o Paint Scrapers
o Sprayers
CAB301 DATA STRUCTURES AND ALGORITHMS
8 - Electronic Tools
o Voltage Tester
o Oscilloscopes
o Thermal Imaging
o Data Test Tool
o Insulation Testers - Electricity Tools
o Test Equipment
o Safety Equipment
o Basic Hand tools
o Circuit Protection
o Cable Tools - Automotive Tools
o Jacks
o Air Compressors
o Battery Chargers