, ICT3611
ASSIGNMENT 8
(PORTFOLIO) 2026
DUE OCTOBER 2026
Option 1 – Question 8.1: Shipping of Goods System
Part 1: Creating the Database (ShippingPortfolio.accdb)
Step 1: Create tables in Access
Clients table:
Field Name Data Type
client_name Short Text
freight_type Short Text
shipments_per_month Number (Integer)
average_cost_per_shipment Number (Double)
FreightRoutes table:
Field Name Data Type
freight_type Short Text
region Short Text
hazard_class Short Text
route_name Short Text
total_trips Number (Integer)
total_tonnage Number (Double)
,Step 2: Sample INSERT statements (run in Access Query Designer)
-- FreightRoutes (20 records)
INSERT INTO FreightRoutes VALUES ('General Cargo','Coastal','Low','Route A1',120,4800);
INSERT INTO FreightRoutes VALUES ('Refrigerated','Coastal','Medium','Route B2',90,3600);
INSERT INTO FreightRoutes VALUES ('Hazardous Chemicals','Inland','High','Route C3',60,2400);
INSERT INTO FreightRoutes VALUES ('Automotive Parts','Inland','Low','Route D4',150,7500);
INSERT INTO FreightRoutes VALUES ('Bulk Grain','Inland','Low','Route E5',200,12000);
INSERT INTO FreightRoutes VALUES ('Livestock','Inland','Medium','Route F6',40,1600);
INSERT INTO FreightRoutes VALUES ('Electronics','International','Medium','Route G7',80,3200);
INSERT INTO FreightRoutes VALUES ('Textiles','Coastal','Low','Route H8',110,4400);
INSERT INTO FreightRoutes VALUES ('Machinery','Inland','Medium','Route I9',70,5600);
INSERT INTO FreightRoutes VALUES ('Petroleum','Coastal','High','Route J10',55,6600);
INSERT INTO FreightRoutes VALUES ('Pharmaceuticals','International','High','Route K11',45,900);
INSERT INTO FreightRoutes VALUES ('Construction Material','Inland','Low','Route L12',180,14400);
INSERT INTO FreightRoutes VALUES ('Frozen Foods','Coastal','Medium','Route M13',95,3800);
INSERT INTO FreightRoutes VALUES ('Luxury Vehicles','International','Medium','Route
N14',30,1200);
INSERT INTO FreightRoutes VALUES ('Raw Minerals','Inland','High','Route O15',65,13000);
INSERT INTO FreightRoutes VALUES ('Paper Products','Coastal','Low','Route P16',140,5600);
INSERT INTO FreightRoutes VALUES ('Steel Coils','Inland','High','Route Q17',50,10000);
INSERT INTO FreightRoutes VALUES ('Wine & Spirits','Coastal','Medium','Route R18',85,2550);
INSERT INTO FreightRoutes VALUES ('Medical Equipment','International','High','Route S19',25,500);
INSERT INTO FreightRoutes VALUES ('Fresh Produce','Coastal','Low','Route T20',100,3000);
For Clients, generate 100+ rows. Sample:
INSERT INTO Clients VALUES ('Alpha Logistics','General Cargo',12,4500);
INSERT INTO Clients VALUES ('Beta Shipping','Refrigerated',8,5200);
INSERT INTO Clients VALUES ('Gamma Traders','Hazardous Chemicals',5,7800);
INSERT INTO Clients VALUES ('Delta Corp','Automotive Parts',15,3200);
INSERT INTO Clients VALUES ('Epsilon Ltd','Bulk Grain',20,2100);
-- ... continue to 100+ records
, Part 2: C# Program (Windows Forms)
Setup:
Create a Windows Forms App (.NET Framework)
Add reference: System.Data.OleDb
Add connection string pointing to ShippingPortfolio.accdb
Form1.Designer.cs controls needed
Add these controls to Form1:
ListBox lstFreightTypes1, TextBox txtRouteName
DataGridView dgv1, DataGridView dgv2, DataGridView dgv3
ListBox lstHighestTotal, ListBox lstHighestAvg, ListBox lstFreightClients, ListBox
lstHighCostClients, ListBox lstFilteredClients, ListBox lstFilteredByThreshold
Label lblTotalHighCost, Label lblOverallAvg, Label lblTotalTonnage, Label lblCountFreight, Label
lblCountRegion
RadioButton rbCoastal, rbInland, rbInternational
TextBox txtFreightTypeCount, TextBox txtRegionCount
TextBox txtThreshold, TextBox txtAvgInput, TextBox txtFreightInput
Button btnCalcAvg, Button btnCalcTonnage, Button btnCountFreight, Button btnCountRegion,
Button btnFilterThreshold, Button btnTask14
Form1.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Linq;
namespace ShippingPortfolioApp
{
public partial class Form1 : Form
{
// Update this path to match your project folder
string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=ShippingPortfolio.accdb;";
public Form1()
{
InitializeComponent();
Load += Form1_Load;
}
private DataTable GetData(string sql)
{
DataTable dt = new DataTable();
ASSIGNMENT 8
(PORTFOLIO) 2026
DUE OCTOBER 2026
Option 1 – Question 8.1: Shipping of Goods System
Part 1: Creating the Database (ShippingPortfolio.accdb)
Step 1: Create tables in Access
Clients table:
Field Name Data Type
client_name Short Text
freight_type Short Text
shipments_per_month Number (Integer)
average_cost_per_shipment Number (Double)
FreightRoutes table:
Field Name Data Type
freight_type Short Text
region Short Text
hazard_class Short Text
route_name Short Text
total_trips Number (Integer)
total_tonnage Number (Double)
,Step 2: Sample INSERT statements (run in Access Query Designer)
-- FreightRoutes (20 records)
INSERT INTO FreightRoutes VALUES ('General Cargo','Coastal','Low','Route A1',120,4800);
INSERT INTO FreightRoutes VALUES ('Refrigerated','Coastal','Medium','Route B2',90,3600);
INSERT INTO FreightRoutes VALUES ('Hazardous Chemicals','Inland','High','Route C3',60,2400);
INSERT INTO FreightRoutes VALUES ('Automotive Parts','Inland','Low','Route D4',150,7500);
INSERT INTO FreightRoutes VALUES ('Bulk Grain','Inland','Low','Route E5',200,12000);
INSERT INTO FreightRoutes VALUES ('Livestock','Inland','Medium','Route F6',40,1600);
INSERT INTO FreightRoutes VALUES ('Electronics','International','Medium','Route G7',80,3200);
INSERT INTO FreightRoutes VALUES ('Textiles','Coastal','Low','Route H8',110,4400);
INSERT INTO FreightRoutes VALUES ('Machinery','Inland','Medium','Route I9',70,5600);
INSERT INTO FreightRoutes VALUES ('Petroleum','Coastal','High','Route J10',55,6600);
INSERT INTO FreightRoutes VALUES ('Pharmaceuticals','International','High','Route K11',45,900);
INSERT INTO FreightRoutes VALUES ('Construction Material','Inland','Low','Route L12',180,14400);
INSERT INTO FreightRoutes VALUES ('Frozen Foods','Coastal','Medium','Route M13',95,3800);
INSERT INTO FreightRoutes VALUES ('Luxury Vehicles','International','Medium','Route
N14',30,1200);
INSERT INTO FreightRoutes VALUES ('Raw Minerals','Inland','High','Route O15',65,13000);
INSERT INTO FreightRoutes VALUES ('Paper Products','Coastal','Low','Route P16',140,5600);
INSERT INTO FreightRoutes VALUES ('Steel Coils','Inland','High','Route Q17',50,10000);
INSERT INTO FreightRoutes VALUES ('Wine & Spirits','Coastal','Medium','Route R18',85,2550);
INSERT INTO FreightRoutes VALUES ('Medical Equipment','International','High','Route S19',25,500);
INSERT INTO FreightRoutes VALUES ('Fresh Produce','Coastal','Low','Route T20',100,3000);
For Clients, generate 100+ rows. Sample:
INSERT INTO Clients VALUES ('Alpha Logistics','General Cargo',12,4500);
INSERT INTO Clients VALUES ('Beta Shipping','Refrigerated',8,5200);
INSERT INTO Clients VALUES ('Gamma Traders','Hazardous Chemicals',5,7800);
INSERT INTO Clients VALUES ('Delta Corp','Automotive Parts',15,3200);
INSERT INTO Clients VALUES ('Epsilon Ltd','Bulk Grain',20,2100);
-- ... continue to 100+ records
, Part 2: C# Program (Windows Forms)
Setup:
Create a Windows Forms App (.NET Framework)
Add reference: System.Data.OleDb
Add connection string pointing to ShippingPortfolio.accdb
Form1.Designer.cs controls needed
Add these controls to Form1:
ListBox lstFreightTypes1, TextBox txtRouteName
DataGridView dgv1, DataGridView dgv2, DataGridView dgv3
ListBox lstHighestTotal, ListBox lstHighestAvg, ListBox lstFreightClients, ListBox
lstHighCostClients, ListBox lstFilteredClients, ListBox lstFilteredByThreshold
Label lblTotalHighCost, Label lblOverallAvg, Label lblTotalTonnage, Label lblCountFreight, Label
lblCountRegion
RadioButton rbCoastal, rbInland, rbInternational
TextBox txtFreightTypeCount, TextBox txtRegionCount
TextBox txtThreshold, TextBox txtAvgInput, TextBox txtFreightInput
Button btnCalcAvg, Button btnCalcTonnage, Button btnCountFreight, Button btnCountRegion,
Button btnFilterThreshold, Button btnTask14
Form1.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Linq;
namespace ShippingPortfolioApp
{
public partial class Form1 : Form
{
// Update this path to match your project folder
string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=ShippingPortfolio.accdb;";
public Form1()
{
InitializeComponent();
Load += Form1_Load;
}
private DataTable GetData(string sql)
{
DataTable dt = new DataTable();