Классы:
· public class AddRes – добавление товара в общий список.
· public class FindRes – поиск товара.
Методы:
· Класса AddRes
o public void AddRs() – добавление товара.
· Класса FindRes
o public void FindResName() – поиск товара по наименованию.
o public void FindResXY() – поиск товара по стеллажу и ячейке.
Поля:
· Класса AddRes
o name = ""; - имя товара.
o numSt = 0; - номер стеллажа.
o numBl = 0; - номер ячейки.
o numKl = 0; - количество.
o temp = false; - одинаковая запись.
o temp1 = false; - одинаковое расположение.
· Класса FindRes
o nameFn = ""; - поиск по имени.
o xxxx, yyyy = ""; - поиск по стеллажу и ячейке.
Блок-схемы
Схема добавления записи (рис1):
Схема поиска записи (рис2):
Схема удаления записи (рис3):
Результат работы программы
Полный вид программы до заполнения информацией(рис.1) и после(рис.2):
Рис.1.
Рис.2.
Окно списка всех заявок с функцией удаления(рис.3):
Рис.3.
Поиск по названию(рис.4):
Рис.4.
Поиск по координатам(рис.5): Рис.5.
Код программы
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;
using System.IO;
namespace AutoInf
{
public partial class myFrm11: Form
{
public myFrm11()
{
InitializeComponent();
}
private void myFrm11_Load(object sender, EventArgs e)
{
}
private void txtName_TextChanged(object sender, EventArgs e)
{
}
private void vtnAddName_Click(object sender, EventArgs e)
{
string text = txtName.Text.Trim();
bool logik = false;
if (txtName.Text!= "")
{
foreach (string a in cmbName.Items)
if (a.ToLower() == text.ToLower()) { logik = true; break; }
if (logik) MessageBox.Show("Такое наименование уже существует!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); else { cmbName.Items.Add(text); txtName.Text = null; MessageBox.Show("Добавлено в список!", "Готово", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }
}
else MessageBox.Show("Поле пустое!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void btnAdd_Click(object sender, EventArgs e)
{
if (cmbName.SelectedIndex!= -1)
{
AddRes myAddRes = new AddRes();
myAddRes.AddRs(cmbName.SelectedItem.ToString(), int.Parse(numStolb.Value.ToString()), int.Parse(numBlock.Value.ToString()), int.Parse(numKol.Value.ToString()), ref dtg);
}
}
private void btnDell_Click(object sender, EventArgs e)
{
try
{
int ind = dtg.SelectedCells[0].RowIndex;
dtg.Rows.RemoveAt(ind);
}
catch { MessageBox.Show("Удаление пустой строки!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); }
}
private void btnQest_Click(object sender, EventArgs e)
{
MessageBox.Show("- Если добавленый товар уже имеется на складе, то товар кладётся в ту же ячейку с увеличением единицы продукта!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
private void btnOpen_Click(object sender, EventArgs e)
{
Stream myStr = null;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
|
|
{
if ((myStr = openFileDialog1.OpenFile())!= null)
{
StreamReader myRead = new StreamReader(myStr);
string[] str;
int _num = 0;
try
{
string[] str1 = myRead.ReadToEnd().Split('\n');
_num = str1.Count();
dtg.RowCount = _num;
for (int i = 0; i < _num; i++)
{
str = str1[i].Split('^');
for (int j = 0; j < dtg.ColumnCount; j++)
{
try
{
dtg.Rows[i].Cells[j].Value = str[j];
}
catch { }
}
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
myRead.Close();
}
myStr.Close();
}
MessageBox.Show("Готово!", "Готово", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
Stream myStr = null;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStr = saveFileDialog1.OpenFile())!= null)
{
StreamWriter mywrite = new StreamWriter(myStr);
try
{
for (int i = 0; i < dtg.RowCount - 1; i++)
{
for (int j = 0; j < dtg.ColumnCount; j++)
{
string dt = dtg.Rows[i].Cells[j].Value.ToString().Replace("^", "[etot_simvol]");
mywrite.Write(dt + "^");
}
mywrite.WriteLine();
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
finally
{
mywrite.Close();
}
myStr.Close();
}
}
MessageBox.Show("Готово!", "Готово", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
private void btnFindname_Click(object sender, EventArgs e)
{
FindRes myFindRes = new FindRes();
string s1, s2 = "";
myFindRes.FindResName(txtFindName.Text, ref dtg, out s1, out s2);
lblFindName.Text = "Товар \"" + txtFindName.Text + "\" находится в " + s2 + " ячейке, в " + s1 + " колонке";
}
private void btnFindXY_Click(object sender, EventArgs e)
{
FindRes myFindRes = new FindRes();
string s1, s2 = "";
myFindRes.FindResXY(int.Parse(numFindStl.Value.ToString()), int.Parse(numFindBlock.Value.ToString()), ref dtg, out s1, out s2);
lblFindXY.Text= "В ячейке "+int.Parse(numFindBlock.Value.ToString())+", стелаже "+int.Parse(numFindStl.Value.ToString()) +", находится товар:"+s1+" ("+s2+"шт.)";
}
private void groupBox3_Enter(object sender, EventArgs e)
{
}
}
public class AddRes
{
string name = "";
int numSt = 0;
int numBl = 0;
int numKl = 0;
bool temp = false;
bool temp1 = false;
public void AddRs(string Name, int St, int Bl, int Kl, ref DataGridView _dtgTemp)
{
name = Name;
numSt = St;
numBl = Bl;
numKl = Kl;
if (_dtgTemp.RowCount == 1)
_dtgTemp.Rows.Add(name, numSt, numBl, numKl);
else
{
for (int i = 0; i < _dtgTemp.RowCount - 1; i++)
{
if (_dtgTemp.Rows[i].Cells[0].Value.ToString().ToLower() == name.ToLower())
{
_dtgTemp.Rows[i].Cells[3].Value = int.Parse(_dtgTemp.Rows[i].Cells[3].Value.ToString()) + numKl;
temp = true;
break;
}
}
if (temp == false)
{
for (int i = 0; i < _dtgTemp.RowCount - 1; i++)
if (_dtgTemp.Rows[i].Cells[1].Value.ToString() == numSt.ToString() && _dtgTemp.Rows[i].Cells[2].Value.ToString() == numBl.ToString())
{
temp1 = true;
MessageBox.Show("Эта ячейка уже занята товаром: " + _dtgTemp.Rows[i].Cells[0].Value.ToString(), "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (temp1 == false) _dtgTemp.Rows.Add(name, numSt, numBl, numKl);
}
}
}
}
public class FindRes
{
|
|
string nameFn = "";
string xxxx, yyyy = "";
public void FindResName(string n1, ref DataGridView _dtgTemp, out string st1, out string st2)
{
nameFn = n1;
st1 = st2 = "";
for (int i = 0; i < _dtgTemp.RowCount - 1; i++)
{
if (_dtgTemp.Rows[i].Cells[0].Value.ToString().ToLower() == nameFn.ToLower())
{
st1 = _dtgTemp.Rows[i].Cells[1].Value.ToString();
st2 = _dtgTemp.Rows[i].Cells[2].Value.ToString();
break;
}
}
}
public void FindResXY(int x, int y, ref DataGridView _dtgTemp, out string st1, out string st2)
{
st1 = st2 = "";
xxxx = x.ToString();
yyyy = y.ToString();
for (int i = 0; i < _dtgTemp.RowCount - 1; i++)
{
if (_dtgTemp.Rows[i].Cells[1].Value.ToString() == xxxx && _dtgTemp.Rows[i].Cells[2].Value.ToString() == yyyy)
{
st1 = _dtgTemp.Rows[i].Cells[0].Value.ToString();
st2 = _dtgTemp.Rows[i].Cells[3].Value.ToString();
break;
}
}
}
}
}
Заключение
Для начала нужно добавить наименование в общий список наименований (правый верхний угол), после чего указать стеллаж и ячейку, в котором будет храниться товар и само количество товара. Запись добавится в общий список товаров на складе (левый верхний угол). Если добавляется товар с уже существующим названием, то он кладётся в ту же ячейку, где встречается сам товар. Если ячейка занята другим товаром, то появится соответствующие уведомление. Возможно удаление конкретного товара со склада. Поиск товара осуществляется в отдельных панелях, расположенных в нижнем правом углу.