Требования к составу и содержанию работ по созданию системы.
Стадии выполнения работ по созданию Системы.
Работы по созданию системы выполняются в соответствии с
ГОСТ 34.601-90, в 3 стадии:
- Технический проект;
- Рабочая документация;
- Ввод в эксплуатацию.
На стадии «Технический проект» должна быть осуществлена разработка проектных решений по Системе в целом и ее частям, включая информационную и функциональные модели деятельности, документации на Систему и ее частей, разработка и оформление документации на поставку изделий для комплектования системы.
На стадии «Рабочая документация» должна быть осуществлена разработка рабочей документации на Систему, выбраны производители оборудования и общесистемного ПО, выполнена разработка и адаптация программ, включая разработку базы данных (БД) и пользовательских интерфейсов.
На стадии «Ввод в эксплуатацию» должны быть проведены работы по подготовке объекта автоматизации к вводу Системы в действие, подготовке персонала, комплектации системы поставляемыми изделиями (в том числе программными и техническими средствами), пусконаладочные работы, предварительные испытаний, опытная эксплуатация и приемочные испытания.
По завершении стадии «Ввод в эксплуатацию» должна начаться стадия сопровождения, требования и условия которой должны быть определены отдельным договором.
Стадии «Технический проект» и «Рабочая документация» выполняются раздельно.
II.ОПИСАНИЕ ПРОГРАММНЫ
Функциональное назначение.
Разработанная автоматизированная информационная система, содержит сведения о наличии телефонных номеров в туристическом справочнике. В базе данных содержатся информации о номере и о имени. Когда данный ССП будет работать, в нём будут разрабатываться телефонные номера. Тогда программа производит поиск телефонных номеров в базе данных.
Описание структуры (диаграммы и сценарий).
При первой стадии разработки ТМ мы создавали диаграммы разных видов. Это важный этап жизненного цикла любого программного продукта.
1) Функциональные диаграммы нулевого уровня (подробный вариант) (рис.1) и начального уровня (рис. 2)
Рис. 1 функциональная диаграмма нулевого уровня
Рис. 2 Функциональная диаграмма начального уровня
2) STD – диаграмма (рис.3)
Рис. 3 диаграмма STD
3) Диаграмма вариантов использования (рис. 4)
Рис. 4 –диаграмма вариантов использования
Технологии разработки приложения на Microsoft Visual Studio C ++
Microsoft Visual Studio C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная корпорацией Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition. Сменила интегрированную среду разработки Microsoft QuickC.
Visual C++ поддерживает перечень приложений как на Managed C++ и C++/CLI, так и на обычном C++, и тем самым позволяет генерировать код как для платформы .NET Framework, так и для исполнения в среде «чистой» Windows. В этом отношении Visual C++ является уникальным среди других языковых средств, предоставляемых средой Visual Studio, поскольку ни Visual Basic .NET, ни Visual J# не способны генерировать код для чистого Win32, в отличие от предыдущих версий (Visual Basic и Visual С++ соответственно).
Описание классов и методов .
Классы:
· 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;
}
}
}
}
}
Заключение
Для начала нужно добавить наименование в общий список наименований (правый верхний угол), после чего указать стеллаж и ячейку, в котором будет храниться товар и само количество товара. Запись добавится в общий список товаров на складе (левый верхний угол). Если добавляется товар с уже существующим названием, то он кладётся в ту же ячейку, где встречается сам товар. Если ячейка занята другим товаром, то появится соответствующие уведомление. Возможно удаление конкретного товара со склада. Поиск товара осуществляется в отдельных панелях, расположенных в нижнем правом углу.
Список использованной литературы
1. Бойко В.В., Савинков В.М. “Проектирование информационной базы автоматизированной системы на основе СУБД.” М.: Финансы и статистика, 2016.
2. Волков С.И., Романов А.И. Организация машинной обработки экономической информации, 2017.
3. Глушаков С.В., Ломотько Д.В. Базы данных, 2016.
4. Джексон Г. Проектирование реляционных баз данных для использования с микро-ЭВМ М.: Финансы и статистика, 2016.
5. Зеленков Ю.А. Введение в базы данных. Центр Интернет ЯрГУ, 2015.
6. Ивлиев М.К., Порошина Л.А. Автоматизация оперативного и бухгалтерского учета товаров, 2016.
7. Качайлов А.Е. Автоматизация учета на базах и складах, 2014.
8. Кобевник В.Ф. “Охрана труда.” – К.: Высшая школа, 2016.
9. Крис Дейт. Введение в базы данных, 6-е изд. Киев, Диалектика, 2018.
10. Керри Н. Праг, Майкл Р. Ирвин, Access 2000 - Библия пользователя, Диалектика, 2017.
11. Лифшиц Н.И., Левин Е.Т Механизация и автоматизация процессов отборки и комплектования заказов на складах М., 2018.
12. Мартин Дж. Организация баз данных в вычислительных системах.
13. Рожнов В.С. АСОЭИ., М., Финансы и статистика., 2105.
14. Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем, 2016.
15. Титоренко Г.А. Автоматизированные информационные технологии в экономике, 2018.
16. Трубилин И.Т., Семенов М.И., Лойко В.И., Барановская Т.П. Автоматизированные информационные технологии в экономике, 2016.
17. Справочник разработчика АСУ. под ред. Федоренко Н.П. и Карибского В.В., М., Экономика, 2017.
18. Хендерсон К. Руководство разработчика баз данных.