Tool Inventory System
Tool Inventory System
Tool Inventory System
blog
Tool Inventory
System
Hans-Petter Halvorsen
Tool Inventory System - Background
• A company has a room (inventory room) full of
expensive tools
• The tools are used by the employees in their daily
work
• The company wants to keep track of the tools in
this inventory room
• The door into the room has access control (ID card
is needed to open the door) but there is no
tracking of the tools
Tool Inventory System - Goals
• The system should track tools in the inventory,
i.e., track when someone borrow tools and
when someone return tools
• The system should have a card reader at the
door to the tool storage/inventory, which in
addition to unlocking the door means that the
tool that is taken out is registered on this
person.
Tool Inventory System – Suggested Solution
Rough sketch for solution to be implemented:
Tool Storage/Inventory Database
(Data Storage)
Registration Module
Communication
with Database
Web Applications
Tool Management System Tools
Prototype
Hans-Petter Halvorsen
Prototyping Development Time
20-80 Rule:
• It takes 20% of the total development time to make the
system 80% finished (The main functionality but it lacks
robustness, systematic testing, etc.)
• It takes 80% of the time to finish the remaining 20% of the
system (Robustness, bug fixes, fin-tuning, change in
requirements and customer wants some changes or new
functionality, etc.)
• 80% of the users are only using 20% of the features in an
application
https://www.halvorsen.blog
RFID Reader
Hans-Petter Halvorsen
Parallax USB RFID Reader
User ID Cards with RFID for Access Control
The start byte and stop byte are used to easily identify that
a correct string has been received from the reader (they
correspond to line feed (\n)and carriage return (\r)
characters, respectively).
The middle ten bytes are the actual tag's unique ID.
For example, for a tag with a valid ID of 0F0184F07A, the
following bytes would be sent: 0x0A, 0x30, 0x46, 0x30,
0x31, 0x38, 0x34, 0x46, 0x30, 0x37, 0x41, 0x0D.
RFID Python Prototype
RFID Python Prototype
RFID LabVIEW Prototype
RFID LabVIEW Prototype
using System.IO.Ports;
Read RFID Tag with C# SerialPort port = new System.IO.Ports.SerialPort("COM4", 2400, System.IO.Ports.Parity.None,
8, System.IO.Ports.StopBits.One);
port.Open();
port.DtrEnable = true;
string rfidTag;
rfidTag = System.Text.Encoding.UTF8.GetString(data, 0, data.Length);
port.Close();
RFID C# Prototype
using System;
RFID C# Prototype
using System.IO.Ports;
using System.Windows.Forms;
namespace ReadRfidApp
{
public partial class Form1 : Form
{
string rfidTag;
SerialPort port = new System.IO.Ports.SerialPort("COM4", 2400, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
public Form1()
{
InitializeComponent();
}
txtTagData.Text = "";
}
txtTagData.Text = rfidTag;
port.Close();
}
}
}
https://www.halvorsen.blog
Applications
The applications are basic CRUD applications implemented in C# (WinForm and ASP.NET Core)
Hans-Petter Halvorsen
Inventory System - Applications
Internet
SQL Server
Tool Scanner 1
Database
Desktop App
Tools
Tool Management 3
2 Web
Tool with RFID Tag Web Application
Application
Tool Scanner
(App #1)
Hans-Petter Halvorsen
Use Case Diagram
ScanIdCard
ReadIdCard
ScanTool
RFID Reader
Loaner ReadToolTag
LoanTool
Database
ReturnTool
Tool Scanner (App #1)
C# WinForm Desktop Application
Tool Management
(App #2)
Hans-Petter Halvorsen
Use Case Diagram
Login
Logout
ChangeLogin
ShowTools
Administrator Database
CreateTool CreateUser
EditTool EditUser
ReturnTool
BorrowTool
Tool Management (App #2)
ASP.NET Core Web Application
Tools
(App #3)
Hans-Petter Halvorsen
Use Case Diagram
Login
Logout
ChangeLogin
ShowTools
Loaner Database
BorrowTool
ReturnTool
ReserveTool
Tools (App #3)
ASP.NET Core Web Application The User can get an overview of
available Tools in the Inventory
Login
Update User Information
Search
Reserve Tool
https://www.halvorsen.blog
Database
Hans-Petter Halvorsen
Database (ER Diagram)
SQL Server
• NewTool
• DeleteTool
• UpdateTool
• BorrowTool
• BorrowToolById
• ReturnTool
• ReturnToolById
• SetToolStatus
IF EXISTS (SELECT name
Example FROM sysobjects
WHERE name = 'NewTool'
AND type = 'P')
DROP PROCEDURE NewTool
GO
GO
https://www.halvorsen.blog
Visual Studio
Hans-Petter Halvorsen
Visual Studio App #2: Tool
Management (Web App)
E-mail: [email protected]
Web: https://www.halvorsen.blog