I could use some assistance with this question. Here is what I have so far, plea
ID: 3871683 • Letter: I
Question
I could use some assistance with this question.
Here is what I have so far, pleae help me make it work.
The code must be in C#, and must be easy/ basic as possible because I am a beginner.
-------------------------------------------------------------------------------
Create and use an Inventory Item class
In this exercise, you’ll add a class to an Inventory Maintenance application and then add code to the two forms that use this class.
Open the project and add an InvItem class
1. Open the InventoryMaintenance project in the AssignmentsInventoryMaintenance directory. Then, review the existing code for both of the forms so you get an idea of how this application should work.
1. Add a class named InvItem to this project, and add the properties, method, and constructors that are shown in the table below.
Property Description
ItemNo Gets or sets an int that contains the item’s number.
Description Gets or sets a string that contains the item’s description.
Price Gets or sets a decimal that contains the item’s price.
Method Description
GetDisplayText() Returns a string that contains the item’s number, description, and price formatted like this:
3245649 Agapanthus ($7.95). (The item number and description are separated by four spaces.)
Constructor Description
() Creates an InvItem object with default values.
(itemNo, description, price) Creates an InvItem object with the specified values.
Add code to implement the New Item form
2. Display the code for the New Item form, and declare a class variable named invItem of type InvItem with an initial value of null.
3. Add a public method named GetNewItem that displays the form as a dialog box and returns an InvItem object.
4. Add code to the btnSave_Click event handler that creates a new InvItem object and closes the form if the data is valid.
Add code to implement the Inventory Maintenance form
5. Display the code for the Inventory Maintenance form, and declare a class variable named invItems of type List<InvItem> with an initial value of null.
6. Add a statement to the frmInvMaint_Load event handler that uses the GetItems method of the InvItemDB class to load the items list.
7. Add code to the FillItemListBox method that adds the items in the list to the Items list box. Use the GetDisplayText method of the InvItem class to format the item data.
8. Add code to the btnAdd_Click event handler that creates a new instance of the New Item form and executes the GetNewItem method of that form. If the InvItem object that’s returned by this method is not null, this event handler should add the new item to the list, call the SaveItems method of the InvItemDB class to save the list, and then refresh the Items list box. Test the application to be sure this event handler works.
9. Add code to the btnDelete_Click event handler that removes the selected item from the list, calls the SaveItems method of the InvItemDB class to save the list, and refreshes the Items list box. Be sure to confirm the delete operation. Then, test the application to be sure this event handler works.
-------------------------------------------------------------------------------------------------------------------------------------------
HERE IS WHAT I HAVE SO FAR
InvitemDB.cs
namespace InventoryMaintenance
{
public static class InvItemDB
{
private const string Path = @"....InventoryItems.xml";
public static List<InvItem> GetItems()
{
// create the list
List<InvItem> items = new List<InvItem>();
// create the XmlReaderSettings object
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
// create the XmlReader object
XmlReader xmlIn = XmlReader.Create(Path, settings);
// read past all nodes to the first Book node
if (xmlIn.ReadToDescendant("Item"))
{
// create one Product object for each Product node
do
{
InvItem item = new InvItem();
xmlIn.ReadStartElement("Item");
item.ItemNo = xmlIn.ReadElementContentAsInt();
item.Description = xmlIn.ReadElementContentAsString();
item.Price = xmlIn.ReadElementContentAsDecimal();
items.Add(item);
}
while (xmlIn.ReadToNextSibling("Item"));
}
// close the XmlReader object
xmlIn.Close();
return items;
}
public static void SaveItems(List<InvItem> items)
{
// create the XmlWriterSettings object
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
// create the XmlWriter object
XmlWriter xmlOut = XmlWriter.Create(Path, settings);
// write the start of the document
xmlOut.WriteStartDocument();
xmlOut.WriteStartElement("Items");
// write each product object to the xml file
foreach (InvItem item in items)
{
xmlOut.WriteStartElement("Item");
xmlOut.WriteElementString("ItemNo", Convert.ToString(item.ItemNo));
xmlOut.WriteElementString("Description", item.Description);
xmlOut.WriteElementString("Price", Convert.ToString(item.Price));
xmlOut.WriteEndElement();
}
// write the end tag for the root element
xmlOut.WriteEndElement();
// close the xmlWriter object
xmlOut.Close();
}
}
}
Program.cs
namespace InventoryMaintenance
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmInvMaint());
}
}
}
Validator.cs
namespace InventoryMaintenance
{
public static class Validator
{
private static string title = "Entry Error";
public static string Title
{
get
{
return title;
}
set
{
title = value;
}
}
public static bool IsPresent(TextBox textBox)
{
if (textBox.Text == "")
{
MessageBox.Show(textBox.Tag + " is a required field.", Title);
textBox.Focus();
return false;
}
return true;
}
public static bool IsDecimal(TextBox textBox)
{
decimal number = 0m;
if (Decimal.TryParse(textBox.Text, out number))
{
return true;
}
else
{
MessageBox.Show(textBox.Tag + " must be a decimal value.", Title);
textBox.Focus();
return false;
}
}
public static bool IsInt32(TextBox textBox)
{
int number = 0;
if (Int32.TryParse(textBox.Text, out number))
{
return true;
}
else
{
MessageBox.Show(textBox.Tag + " must be an integer.", Title);
textBox.Focus();
return false;
}
}
public static bool IsWithinRange(TextBox textBox, decimal min, decimal max)
{
decimal number = Convert.ToDecimal(textBox.Text);
if (number < min || number > max)
{
MessageBox.Show(textBox.Tag + " must be between " + min
+ " and " + max + ".", Title);
textBox.Focus();
return false;
}
return true;
}
}
}
---------------------------------------------------------------
Thank you so much!!!! I could really use the help
Inventory Maintenance 3245649 3762592 9210584 4738459 Agapanthus ($7.95) Lionium ($6.95) Snail pellets ($12.95) Japanese Red Maple (S89.95) Add Item Delete Item ExitExplanation / Answer
Program.cs
----------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InventoryMaintenance
{
static class Program
{
///< summary>
/// The main entry point for the application.
///< /summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmInvMaint());
}
}
}
-----------------------------------
frmNewItem.cs
---------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InventoryMaintenance
{
public partial class frmNewItem : Form
{
public frmNewItem()
{
InitializeComponent();
}
private InvItem invItem = null;
public InvItem GetNewItem()
{
this.ShowDialog();
return invItem;
}
private void btnSave_Click(object sender, EventArgs e)
{
if (IsValidData())
{
invItem = new InvItem(Convert.ToInt32(txtItemNo.Text),
txtDescription.Text, Convert.ToDecimal(txtPrice.Text));
this.Close();
}
}
private bool IsValidData()
{
return Validator.IsPresent(txtItemNo) &&
Validator.IsInt32(txtItemNo) &&
Validator.IsPresent(txtDescription) &&
Validator.IsPresent(txtPrice) &&
Validator.IsDecimal(txtPrice);
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
--------------------------------------------------
frmNewItem.designer.cs
------------------------
namespace InventoryMaintenance
{
partial class frmNewItem
{
///< summary>
/// Required designer variable.
///< /summary>
private System.ComponentModel.IContainer components = null;
///< summary>
/// Clean up any resources being used.
///< /summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
///< summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///< /summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.txtItemNo = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtDescription = new System.Windows.Forms.TextBox();
this.btnSave = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.txtPrice = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(15, 17);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(45, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Item no:";
//
// txtItemNo
//
this.txtItemNo.Location = new System.Drawing.Point(84, 17);
this.txtItemNo.Name = "txtItemNo";
this.txtItemNo.Size = new System.Drawing.Size(76, 20);
this.txtItemNo.TabIndex = 1;
this.txtItemNo.Tag = "Item no";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(15, 47);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(63, 13);
this.label2.TabIndex = 2;
this.label2.Text = "Description:";
//
// txtDescription
//
this.txtDescription.Location = new System.Drawing.Point(84, 43);
this.txtDescription.Name = "txtDescription";
this.txtDescription.Size = new System.Drawing.Size(200, 20);
this.txtDescription.TabIndex = 3;
this.txtDescription.Tag = "Description";
//
// btnSave
//
this.btnSave.Location = new System.Drawing.Point(84, 107);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(75, 23);
this.btnSave.TabIndex = 6;
this.btnSave.Text = "Save";
this.btnSave.UseVisualStyleBackColor = true;
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(209, 107);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 7;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(15, 73);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(34, 13);
this.label3.TabIndex = 4;
this.label3.Text = "Price:";
//
// txtPrice
//
this.txtPrice.Location = new System.Drawing.Point(85, 70);
this.txtPrice.Name = "txtPrice";
this.txtPrice.Size = new System.Drawing.Size(75, 20);
this.txtPrice.TabIndex = 5;
this.txtPrice.Tag = "Price";
//
// frmNewItem
//
this.AcceptButton = this.btnSave;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(311, 150);
this.ControlBox = false;
this.Controls.Add(this.txtPrice);
this.Controls.Add(this.label3);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnSave);
this.Controls.Add(this.txtDescription);
this.Controls.Add(this.label2);
this.Controls.Add(this.txtItemNo);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmNewItem";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "New Inventory Item";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtItemNo;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtDescription;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtPrice;
}
}
---------------------------------------------------
frmInvMaint.cs
-------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InventoryMaintenance
{
public partial class frmInvMaint : Form
{
public frmInvMaint()
{
InitializeComponent();
}
private InvItemList invItems = new InvItemList();
private void frmInvMaint_Load(object sender, System.EventArgs e)
{
invItems.Fill();
FillItemListBox();
}
private void FillItemListBox()
{
InvItem item;
lstItems.Items.Clear();
for (int i = 0; i < invItems.Count; i++)
{
item = invItems.GetItemByIndex(i);
lstItems.Items.Add(item.GetDisplayText());
}
}
private void btnAdd_Click(object sender, System.EventArgs e)
{
frmNewItem newItemForm = new frmNewItem();
InvItem invItem = newItemForm.GetNewItem();
if (invItem != null)
{
invItems.Add(invItem);
invItems.Save();
FillItemListBox();
}
}
private void btnDelete_Click(object sender, System.EventArgs e)
{
int i = lstItems.SelectedIndex;
if (i != -1)
{
InvItem invItem = invItems.GetItemByIndex(i);
string message = "Are you sure you want to delete "
+ invItem.Description + "?";
DialogResult button =
MessageBox.Show(message, "Confirm Delete",
MessageBoxButtons.YesNo);
if (button == DialogResult.Yes)
{
invItems.Remove(invItem);
invItems.Save();
FillItemListBox();
}
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
-----------------------------------
frmInvMaint.designer.cs
-------------
namespace InventoryMaintenance
{
partial class frmInvMaint
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing&& (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.lstItems = new System.Windows.Forms.ListBox();
this.btnExit = new System.Windows.Forms.Button();
this.btnDelete = new System.Windows.Forms.Button();
this.btnAdd = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// lstItems
//
this.lstItems.FormattingEnabled = true;
this.lstItems.Location = new System.Drawing.Point(12, 12);
this.lstItems.Name = "lstItems";
this.lstItems.Size = new System.Drawing.Size(325, 160);
this.lstItems.TabIndex = 10;
//
// btnExit
//
this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnExit.Location = new System.Drawing.Point(353, 72);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(104, 24);
this.btnExit.TabIndex = 9;
this.btnExit.Text = "E&xit";
this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
//
// btnDelete
//
this.btnDelete.Location = new System.Drawing.Point(353, 42);
this.btnDelete.Name = "btnDelete";
this.btnDelete.Size = new System.Drawing.Size(104, 24);
this.btnDelete.TabIndex = 8;
this.btnDelete.Text = "Delete Item...";
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// btnAdd
//
this.btnAdd.Location = new System.Drawing.Point(353, 12);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(104, 24);
this.btnAdd.TabIndex = 7;
this.btnAdd.Text = "Add Item...";
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// frmInvMaint
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnExit;
this.ClientSize = new System.Drawing.Size(475, 181);
this.Controls.Add(this.lstItems);
this.Controls.Add(this.btnExit);
this.Controls.Add(this.btnDelete);
this.Controls.Add(this.btnAdd);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Name = "frmInvMaint";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Inventory Maintenance";
this.Load += new System.EventHandler(this.frmInvMaint_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListBox lstItems;
private System.Windows.Forms.Button btnExit;
private System.Windows.Forms.Button btnDelete;
private System.Windows.Forms.Button btnAdd;
}
}
---------------------------------------
InvItemList.cs
------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InventoryMaintenance
{
public class InvItemList
{
private List<InvItem> invItems;
public InvItemList()
{
invItems = new List<InvItem>();
}
public int Count
{
get
{
return invItems.Count;
}
}
public InvItem GetItemByIndex(int i)
{
return invItems[i];
}
public void Add(InvItem invItem)
{
invItems.Add(invItem);
}
public void Add(int itemNo, string description, decimal price)
{
InvItem i = new InvItem(itemNo, description, price);
invItems.Add(i);
}
public void Remove(InvItem invItem)
{
invItems.Remove(invItem);
}
public void Fill()
{
invItems = InvItemDB.GetItems();
}
public void Save()
{
InvItemDB.SaveItems(invItems);
}
}
}
------------------------------------------------------
InvItemDB.cs
-------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace InventoryMaintenance
{
public static class InvItemDB
{
private const string Path = @"....InventoryItems.xml";
public static List<InvItem> GetItems()
{
// create the list
List<InvItem> items = new List<InvItem>();
// create the XmlReaderSettings object
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
// create the XmlReader object
XmlReader xmlIn = XmlReader.Create(Path, settings);
// read past all nodes to the first Book node
if (xmlIn.ReadToDescendant("Item"))
{
// create one Product object for each Product node
do
{
InvItem item = new InvItem();
xmlIn.ReadStartElement("Item");
item.ItemNo = xmlIn.ReadElementContentAsInt();
item.Description = xmlIn.ReadElementContentAsString();
item.Price = xmlIn.ReadElementContentAsDecimal();
items.Add(item);
}
while (xmlIn.ReadToNextSibling("Item"));
}
// close the XmlReader object
xmlIn.Close();
return items;
}
public static void SaveItems(List<InvItem> items)
{
// create the XmlWriterSettings object
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
// create the XmlWriter object
XmlWriter xmlOut = XmlWriter.Create(Path, settings);
// write the start of the document
xmlOut.WriteStartDocument();
xmlOut.WriteStartElement("Items");
// write each product object to the xml file
foreach (InvItem item in items)
{
xmlOut.WriteStartElement("Item");
xmlOut.WriteElementString("ItemNo", Convert.ToString(item.ItemNo));
xmlOut.WriteElementString("Description", item.Description);
xmlOut.WriteElementString("Price", Convert.ToString(item.Price));
xmlOut.WriteEndElement();
}
// write the end tag for the root element
xmlOut.WriteEndElement();
// close the xmlWriter object
xmlOut.Close();
}
}
}
----------------------------------------------
InvItem.cs
--------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InventoryMaintenance
{
public class InvItem
{
private int itemNo;
private string description;
private decimal price;
public InvItem()
{
}
public InvItem(int itemNo, string description, decimal price)
{
this.itemNo = itemNo;
this.description = description;
this.price = price;
}
public int ItemNo
{
get
{
return itemNo;
}
set
{
itemNo = value;
}
}
public string Description
{
get
{
return description;
}
set
{
description = value;
}
}
public decimal Price
{
get
{
return price;
}
set
{
price = value;
}
}
public string GetDisplayText()
{
return itemNo + " " + description + " (" + price.ToString("c") + ")";
}
}
}
---------------------------------------------------
Validator.cs
-------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InventoryMaintenance
{
public static class Validator
{
private static string title = "Entry Error";
public static string Title
{
get
{
return title;
}
set
{
title = value;
}
}
public static bool IsPresent(TextBox textBox)
{
if (textBox.Text == "")
{
MessageBox.Show(textBox.Tag + " is a required field.", Title);
textBox.Focus();
return false;
}
return true;
}
public static bool IsDecimal(TextBox textBox)
{
decimal number = 0m;
if (Decimal.TryParse(textBox.Text, out number))
{
return true;
}
else
{
MessageBox.Show(textBox.Tag + " must be a decimal value.", Title);
textBox.Focus();
return false;
}
}
public static bool IsInt32(TextBox textBox)
{
int number = 0;
if (Int32.TryParse(textBox.Text, out number))
{
return true;
}
else
{
MessageBox.Show(textBox.Tag + " must be an integer.", Title);
textBox.Focus();
return false;
}
}
public static bool IsWithinRange(TextBox textBox, decimal min, decimal max)
{
decimal number = Convert.ToDecimal(textBox.Text);
if (number < min || number > max)
{
MessageBox.Show(textBox.Tag + " must be between " + min
+ " and " + max + ".", Title);
textBox.Focus();
return false;
}
return true;
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.