When working with large datasets, displaying everything at once can overwhelm users and create a poor user experience. Instead, batching the display allows users to view a manageable portion of the data at a time, giving them the option to load more when ready.
In this article, we’ll explore the concept of batching in iteration and implement it with an interactive example using a Product Inventory system.
Why Batching?
Batching improves usability by:
- Avoiding information overload.
- Providing control over how much data is displayed at once.
- Optimizing performance, especially with large datasets.
A for loop is particularly suited for this task because it gives us precise control over the iteration process, unlike a foreach loop, which processes the entire collection in one go.
Scenario: Product Inventory
Imagine we have a list of products in an inventory system, and we want to display a few products at a time. After showing a batch, the user decides whether to see more or stop.
Implementation
Here’s how we can implement batching with a Product Inventory example in C#.
Step 1: Define the Product Class
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public override string ToString()
{
return $"{Id}. {Name} - ${Price:F2}";
}
}
Step 2: Create a List of Products
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Sample product list
var products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 999.99M },
new Product { Id = 2, Name = "Smartphone", Price = 799.99M },
new Product { Id = 3, Name = "Tablet", Price = 499.99M },
new Product { Id = 4, Name = "Headphones", Price = 199.99M },
new Product { Id = 5, Name = "Smartwatch", Price = 249.99M },
new Product { Id = 6, Name = "Camera", Price = 599.99M },
new Product { Id = 7, Name = "Printer", Price = 149.99M },
new Product { Id = 8, Name = "Monitor", Price = 299.99M },
new Product { Id = 9, Name = "Keyboard", Price = 49.99M },
new Product { Id = 10, Name = "Mouse", Price = 29.99M }
};
Step 3: Implement Batching Logic
// Ask user for batch size
Console.Write("How many products would you like to display at a time? ");
int batchSize = int.Parse(Console.ReadLine() ?? "3");
// Display products in batches
for (int i = 0; i < products.Count; i++)
{
Console.WriteLine(products[i]);
// Check if it's the end of a batch
if ((i + 1) % batchSize == 0 && i < products.Count - 1)
{
Console.Write("Press Enter to see more, or type 'stop' to quit: ");
string input = Console.ReadLine();
if (!string.IsNullOrEmpty(input)) break; // Exit if user types anything
}
}
Console.WriteLine("End of product list.");
}
}
Explanation of the Code
-
Batch Size Input: The user specifies how many items they want to see at a time (
batchSize
). -
Iteration Control: A
for
loop iterates through the products. -
Batch Check:
(i + 1) % batchSize == 0
ensures the user is prompted after displayingbatchSize
products. -
User Interaction:
- If the user presses Enter, the loop continues to the next batch.
- If the user types anything else, the loop breaks, and the program exits.
Sample Output
Input: Batch size = 3
1. Laptop - $999.99
2. Smartphone - $799.99
3. Tablet - $499.99
Press Enter to see more, or type 'stop' to quit:
(User presses Enter)
4. Headphones - $199.99
5. Smartwatch - $249.99
6. Camera - $599.99
Press Enter to see more, or type 'stop' to quit: stop
End of product list.
Benefits of Batching
- Improved User Experience: Users interact with the data at their own pace.
- Scalability: Handles large datasets effectively.
- Flexibility: Easily customizable for different use cases, like search results or paginated APIs.
Assignments
- Easy: Modify the code to display product names only (omit prices).
- Medium: Allow the user to go back to the previous batch.
- Difficult: Implement a search feature that filters products by name before displaying them in batches.
Conclusion
Batching in iteration is a simple yet powerful technique to manage large datasets effectively. By using a for
loop and adding user interaction, you can provide a much friendlier and more responsive experience.
Top comments (0)