СОДЕРЖАНИЕ
1. Аналитический обзор разработки АСУ
1.2 Основные понятия и определения
1.3 Общее описание разрабатываемой АСУ
1.5 Анализ предметной области разработки
2. Разработка базы данных для системы
2.2 Построение концептуальной (инфологической) модели БД
2.3 Построение логической схемы БД
3. Разработка клиентского приложения
3.1 Выбор языка и среды программирования
3.2 Требования к клиентскому приложению
3.2.2 Требования к функционалу
3.3 Проектирование клиентского приложения
3.3.3 Выбор шаблонов проектирования
3.3.4 UML диаграмма классов с учетом выбранных шаблонов
3.3.5 Построение блок-схем алгоритмов подпрограмм
4.1 Общие сведения по разработке сайта
4.2 Выбор языков программирования
5.1 Тестирование клиентского приложения
5.1.3 Заказы. Перевод в поставки
5.1.4 Поставки. Установка цены продажи на товар
5.1.5 Тестирование продажи товара
5.1.8 Тестирование анализа продаж товаров
5.1.6 Тестирование отмены продажи товара
5.1.9 Тестирование функции «Остатки»
5.1.10 Тестирование подпрограммы для работы с пользователями сайта
5.2.1 Правильность выполнения функций по нажатию кнопок и переходов по гиперссылкам
5.2.2 Правильность выполнения SQL-запросов к БД
5.2.3 Тестирование слайдера «Slick»
6. Внедрение продукта в производство
}: System::Void Продажа_Enter(System::Object^ sender, System::EventArgs^ e) {->Visible = true;->Visible = true;->Visible = true;>Height = 445;>Visible = true;
}: System::Void Информация_Enter(System::Object^ sender, System::EventArgs^ e) {>Height = 445;
}: System::Void Отчёты_Enter(System::Object^ sender, System::EventArgs^ e) {>Height = 445;
}: System::Void dateTimePicker2_ValueChanged(System::Object^ sender, System::EventArgs^ e) {^ dateStart = (gcnew DateAdapter(dateTimePicker1))->getDate();^ dateEnd = (gcnew DateAdapter(dateTimePicker2))->getDate();::getSingleton()->fillTable(otchet, "select Код_продажи as 'Код продажи',Дата_продажи as 'Дата продажи',Покупатель,Назв_товара as 'Наименование товара',Количество as 'Количество товара',Сумма from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "';");
}: System::Void choose_brend_Enter(System::Object^ sender, System::EventArgs^ e) {
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {_brend->Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Брэнд from autorun2.Товары where Название_товара = '" + this->choose_tov->Text + "' ;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("Брэнд"));
}each (String^ name in names) {_brend->Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void choose_brend_TextChanged(System::Object^ sender, System::EventArgs^ e) {
}: System::Void choose_tov_TextChanged_1(System::Object^ sender, System::EventArgs^ e) {_brend->Text = "";>Enabled = false;
}: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {(checkBox1->Checked == true) {::getSingleton()->fillTable(dataGridView2, "select Название_товара, Брэнд , Стоимость_продажи as 'Цена',Остаток_шт as 'Остаток', Для_авто as 'Для автомобиля', Размеры, Характеристики from autorun2.Товары where Стоимость_продажи < '" + this->txt_tsena->Text + "' and Название_товара = '" + this->choose_tov->Text + "';");->Visible = false;>Visible = false;->Height = 535;>Visible = true;>Height = 640;
}(checkBox1->Checked == false) {>Visible = true;->Visible = true;>Height = 445;->Height = 340;
}
}: System::Void txt_tsena_TextChanged(System::Object^ sender, System::EventArgs^ e) {
//checkBox1->Visible = true;
}: System::Void radioButton1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {(radioButton1->Checked == false)
{->Visible = false;->Visible = false;->Visible = false;->Visible = false;
}(radioButton1->Checked == true) {22->Text = ("Интересует ли вас выручка магазина за этот период?");
this->label22->BackColor = System::Drawing::Color::Maroon;->Visible = false;->Visible = false;->Visible = false;>Visible = true;->Visible = true;->Visible = true;->Visible = true;->Visible = true;
}
}: System::Void radioButton2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {(radioButton2->Checked == false)
{->Visible = false;->Visible = false;->Visible = false;->Visible = false;->Visible = false;->Visible = false;->Visible = false;->Visible = false;
}(radioButton2->Checked == true) {->Visible = true;->Visible = true;->Visible = true;->Visible = true;
}
}: System::Void checkBox1_Leave(System::Object^ sender, System::EventArgs^ e) {->Checked = false;
}: System::Void СППР_Enter(System::Object^ sender, System::EventArgs^ e) {>Height = 445;
}: System::Void dateTimePicker3_ValueChanged(System::Object^ sender, System::EventArgs^ e) {^ dateStart = (gcnew DateAdapter(dateTimePicker4))->getDate();^ dateEnd = (gcnew DateAdapter(dateTimePicker3))->getDate();::getSingleton()->fillTable(otchet, "select sum(Сумма) as 'Сумма продаж за выбранный период' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "';");->Visible = true;->Visible = true;->Visible = true;
//otchet2->Visible = true;::getSingleton()->fillTable(otchet2, "select sum(Выручка) as 'Выручка за выбранный период' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "';");
}: System::Void button23_Click(System::Object^ sender, System::EventArgs^ e) {->Visible = true;>label22->BackColor = System::Drawing::Color::Black;^ dateStart = (gcnew DateAdapter(dateTimePicker4))->getDate();^ dateEnd = (gcnew DateAdapter(dateTimePicker3))->getDate();22->Text = ("Выведена выручка магазина за период с " + dateStart + " по " + dateEnd + "");
button23->Visible = false;->Visible = false;
}: System::Void button24_Click(System::Object^ sender, System::EventArgs^ e) {->Visible = false;->Visible = false;->Visible = false;
}: System::Void button22_Click(System::Object^ sender, System::EventArgs^ e) {
//tabControl1->SelectedIndex = 1;
//int x = 35;
//int y = 13;
//this->button22->Size = System::Drawing::Size(x, y);
//while (this->button22->Size != System::Drawing::Size(66, 55)) {
//x++;y++;
//}
}: System::Void button25_Click(System::Object^ sender, System::EventArgs^ e) {
//tabControl1->SelectedIndex = 2;
}: System::Void button27_Click(System::Object^ sender, System::EventArgs^ e) {
//tabControl1->SelectedIndex = 3;
}: System::Void button26_Click(System::Object^ sender, System::EventArgs^ e) {
// " select sum(Выручка) as 'Выручка за выбранный период' from autorun2.Выручка where Дата_продажи Between '" + this->dateTimePicker4->Text + "' AND '" + this->dateTimePicker3->Text + "';"
//tabControl1->SelectedIndex = 4;
}: System::Void dateTimePicker5_ValueChanged(System::Object^ sender, System::EventArgs^ e) {^ dateStart = (gcnew DateAdapter(dateTimePicker6))->getDate();^ dateEnd = (gcnew DateAdapter(dateTimePicker5))->getDate();::getSingleton()->fillTable(otchet3, "select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "' group by Назв_товара,Брэнд order by sum(Количество) limit 5;");::getSingleton()->fillTable(otchet4, "select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "' group by Назв_товара,Брэнд order by sum(Количество) desc limit 5;");{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа group by Назв_товара,Брэнд order by sum(Количество) limit 1;");^ pName;^ pName1;(myReader->Read()) {= myReader->GetString("Назв_товара");= myReader->GetString("Брэнд");
}_mask_name->Text = pName;_brend_mask->Text = pName1;
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void btn_add_yes_Click(System::Object^ sender, System::EventArgs^ e) {
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("update autorun2.товары set Остаток_шт=Остаток_шт+'" + this->txt7->Text + "'where Код_товара='" + this->txt1->Text + "' or Название_товара='" + this->txt4->Text + "' and Брэнд ='" + this->txt3->Text + "';");
while (myReader->Read()) {
}::Show("Добавлено '" + this->txt7->Text + "' единиц(ы) товара '" + this->txt4->Text + "'");
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void comboBox2_Enter(System::Object^ sender, System::EventArgs^ e) {
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {>Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Категория from autorun2.Товары;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("Категория"));
}each (String^ name in names) {>Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void perevodOK_Click(System::Object^ sender, System::EventArgs^ e) {>Visible = false;(txt1->Text == "") {::Show("Не заполнены поля!");
}
else {
//выполняем sql запрос к базе для сохранения данных в таблицу
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("Insert into autorun2.Поставки (Название_товара,Брэнд,Доставлено_ед_товара,Стоимость_заказа,Категория,Размеры,Характеристики,Для_авто) values('" + this->txt2->Text + "','" + this->txt3->Text + "', '" + this->txt4->Text + "', '" + this->txt5->Text + "', '" + this->txt6->Text + "', '" + this->txt7->Text + "', '" + this->txt8->Text + "', '" + this->txt9->Text + "') ;");
while (myReader->Read()) {
}
MessageBox::Show("Данные успешно занесены в базу");
}(Exception^ ex) {::Show(ex->Message);
}
}
}: System::Void perevod_Click(System::Object^ sender, System::EventArgs^ e) {->Visible = true;
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Название_товара,Брэнд,Количество_ед_товара,Стоимость_закупки,Категория,Размеры,Характеристики,Для_авто,Дата_заказа from autorun2.Заказы where Код_заказа='" + this->txt1->Text + "';");
String^ pName;^ name1;^ name2;^ name3;^ name4;^ name5;^ name6;^ name7;^ name8;(myReader->Read()) {= myReader->GetString("Название_товара");= myReader->GetString("Брэнд");= myReader->GetString("Количество_ед_товара");= myReader->GetString("Стоимость_закупки");= myReader->GetString("Категория");= myReader->GetString("Размеры");= myReader->GetString("Характеристики");= myReader->GetString("Для_авто");= myReader->GetString("Дата_заказа");
}->Text = pName;->Text = name1;->Text = name2;->Text = name3;->Text = name4;->Text = name5;->Text = name6;->Text = name7;->Text = name8;
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void button26_Click_1(System::Object^ sender, System::EventArgs^ e) {
}: System::Void button27_Click_1(System::Object^ sender, System::EventArgs^ e) {
}: System::Void button28_Click(System::Object^ sender, System::EventArgs^ e) {
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("update autorun2.поставки set Стоимость_продажи='" + this->txt6->Text + "'where Код_поставки='" + this->txt1->Text + "' ;");
while (myReader->Read()) {
}
}(Exception^ ex) {::Show(ex->Message);
}::getSingleton()->fillTable(dataGridView1, "select Код_поставки as 'Код поставки',Название_товара as 'Название товара',Брэнд, Доставлено_ед_товара as 'Доставлено товара',Стоимость_заказа as 'Стоимость заказа',Стоимость_продажи as 'Стоимость продажи',Категория as 'Категория',Размеры,Характеристики,Для_авто as 'Для автомобиля', Дата_поставки as 'Дата поставки' from autorun2.Поставки ; ");
}: System::Void txt_tov_count_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {((e->KeyChar<'0' || e->KeyChar>'9') && e->KeyChar != 127 && e->KeyChar != 8)>Handled = true;>Handled = false;
}: System::Void txt_FIO_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {(e->KeyChar<'0' || e->KeyChar>'9')>Handled = false;>Handled = true;
}: System::Void choose_cli_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {(e->KeyChar<'0' || e->KeyChar>'9')>Handled = false;>Handled = true;
}: System::Void categ_TextChanged(System::Object^ sender, System::EventArgs^ e) {{_tov->Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Название_товара from autorun2.Товары where Категория = '" + this->categ->Text + "' ;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("Название_товара"));
}each (String^ name in names) {_tov->Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void combo_ID_TextChanged(System::Object^ sender, System::EventArgs^ e) {>Enabled = false;->Visible = true;_tsena->Clear();_ost->Clear();_tov_count->Clear();_sum->Clear();_viruchka->Clear();^ ostatok;^ tsena;
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Остаток_шт from autorun2.Товары where Код_товара = '" + this->combo_ID->Text + "' ;");(myReader->Read()) {= myReader->GetString("Остаток_шт");
}_ost->Text = ostatok;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Стоимость_продажи from autorun2.Товары where Код_товара='" + this->combo_ID->Text + "';");^ pName;(myReader->Read()) {= myReader->GetString("Стоимость_продажи");
}_tsena->Text = pName;
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void combo_ID_Enter(System::Object^ sender, System::EventArgs^ e) {{_ID->Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Код_товара from autorun2.Товары where Название_товара = '" + this->choose_tov->Text + "' and Брэнд = '" + this->choose_brend->Text + "' ;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("Код_товара"));
}each (String^ name in names) {_ID->Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void Сайт_Enter(System::Object^ sender, System::EventArgs^ e) {>Height = 445;{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select count(login) from autorun2.users1 where Статус='Онлайн';");^ login;(myReader->Read()) {= myReader->GetString("count(login)");
}>Text = login;
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void txt_login_Enter(System::Object^ sender, System::EventArgs^ e) {{_login->Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select login from autorun2.users1;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("login"));
}each (String^ name in names) {_login->Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}: System::Void combo_ID2_Enter(System::Object^ sender, System::EventArgs^ e) {{_ID2->Items->Clear();^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Код_резерва from autorun2.Резервирование where Логин = '" + this->combo_login->Text + "' ;");^ names = gcnew ArrayList();(myReader->Read()) {>Add(myReader->GetString("Код_резерва"));
}each (String^ name in names) {_ID2->Items->Add(name);
}
}(Exception^ ex) {::Show(ex->Message);
}
}
private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) {
if (combo_ID2->Text != "" || txt_tov2->Text != "") {
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("Insert into autorun2.Продажа (Покупатель,Назв_товара,Категория_тов,Брэнд,Количество,Сумма) values ('" + this->txt_fio1->Text + "','" + this->txt_tov2->Text + "','" + this->txt_categ->Text + "','" + this->txt_brend->Text + "','" + this->textBox6->Text + "',replace('" + this->txt_sum1->Text + "',',','.'));");
while (myReader->Read()) {
}
}
catch (Exception^ ex) {
MessageBox::Show(ex->Message);
}
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("Delete from autorun2.Резервирование where Код_резерва = '" + this->combo_ID2->Text + "';");
while (myReader->Read()) {
}
MessageBox::Show("Продано!");
}
catch (Exception^ ex) {
MessageBox::Show(ex->Message);
}
ConnToDB::getSingleton()->fillTable(dataGridView3, "select * from autorun2.Резервирование where Логин = '" + this->combo_login->Text + "' ;");
}
else if (txt_tov2->Text == "") {
MessageBox::Show("На выбранного покупателя ничего не зарезервировано!");
}
else if (combo_ID2->Text == "") {
MessageBox::Show("Заполните поля для продажи!");
}
combo_login->Text = "";
combo_ID2->Text = "";
}: System::Void combo_login_TextChanged(System::Object^ sender, System::EventArgs^ e) {::getSingleton()->fillTable(dataGridView3, "select * from autorun2.Резервирование where Логин = '" + this->combo_login->Text + "' ;");_ID2->Enabled = true;
}: System::Void combo_ID2_TextChanged(System::Object^ sender, System::EventArgs^ e) {{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Количество from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ count;(myReader->Read()) {= myReader->GetString("Количество");
}->Text = count;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select ФИО from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ fio;(myReader->Read()) {= myReader->GetString("ФИО");
}_fio1->Text = fio;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Название_товара from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ name2;(myReader->Read()) {= myReader->GetString("Название_товара");
}_tov2->Text = name2;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Бренд from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ brend;(myReader->Read()) {= myReader->GetString("Бренд");
}_brend->Text = brend;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Сумма from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ sum;(myReader->Read()) {= myReader->GetString("Сумма");
}_sum1->Text = sum;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Категория_тов from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ categ;(myReader->Read()) {= myReader->GetString("Категория_тов");
}_categ->Text = categ;
}(Exception^ ex) {::Show(ex->Message);
}{^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Код_тов from autorun2.Резервирование where Код_резерва='" + this->combo_ID2->Text + "';");^ id;(myReader->Read()) {= myReader->GetString("Код_тов");