Курсовая работа (Задание):
Разработка базы данных цветочного магазина на языке C#.
Цели:
- сделать нормализацию данных;
- осуществить этапы проектирования базы данных;
- построить и описать диаграммы проекта;
- разработать формы и представить текст программы;
- привести результаты тестирования программного продукта.
Задачи:
- Свободный доступ к информации;
- Удобный и понятный для пользователя интерфейс приложения;
- Сортировка данных по выбранному критерию;
- Возможность поиска цветка по выбранному критерию;
- Защита паролей шифром одно алфавитной замены;
- Добавление, редактирование, удаление данных.
Содержание отчета к программе
В отчете находятся все необходимые диаграммы к нашей программе, такие как:
- Концептуальная модель базы данных цветочного магазина
- Логическая модель базы данных цветочного магазина
- Физическая модель базы данных цветочного магазина
- Диаграмма Usecase
- Диаграмма Statechart
- Диаграмма ООП классов
Также, присутствуют все скриншоты с описанием каждого действия пользователя в программе (показаны в видео).
Как мы можем увидеть из сриншота, в пояснительной записке содержится 34 страницы.
Логическая модель базы данных цветочного магазина
Фрагмент программного кода
namespace FlowerShop.Forms { public partial class FDialogMakeSaleFlower : Form { private DataAccessLayer DataAccessLayer { get { if (this.m_dataAccessLayer == null) this.m_dataAccessLayer = new DataAccessLayer(); return this.m_dataAccessLayer; } } private DataTable m_dt_Buyers; private DataAccessLayer m_dataAccessLayer; int id_personnel, id_sale_product, id_m_fl, count_M_FL = 0, cost_M_FL = 0; bool CheckResultFrom_DAL = false; public FDialogMakeSaleFlower(int _id_personnel, int _id_m_fl ,int _count_M_FL, int _cost_M_FL) { InitializeComponent(); /* нужно для заполнения таблицы SaleFlower в БД */ id_personnel = _id_personnel; id_m_fl = _id_m_fl; count_M_FL = _count_M_FL; cost_M_FL = _cost_M_FL; MS_txtCount_M_FL_Sale.Text = count_M_FL.ToString(); MS_txtSum_M_FL_Sale.Text = (cost_M_FL * count_M_FL).ToString(); Init_Buyers(); } private void Init_Buyers() { this.m_dt_Buyers = new DataAccessLayer().dt_AllBuyers; if (this.m_dt_Buyers == null) { MessageBox.Show("Не удалось получить данные!"); return; } MS_dgvBuyers.AutoGenerateColumns = false; MS_dgvBuyers.DataSource = this.m_dt_Buyers; MS_dgvBuyers.Columns[0].DataPropertyName = "ID_BUYER"; MS_dgvBuyers.Columns[1].DataPropertyName = "FIO_BUYER"; MS_dgvBuyers.Columns[2].DataPropertyName = "ADDRESS_BUYER"; MS_dgvBuyers.Columns[3].DataPropertyName = "PHONE_BUYER"; ((DataTable)MS_dgvBuyers.DataSource).Rows.Add(); // добавялем строку для данных о покупателе } private void MS_btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void MS_txtCount_M_FL_Sale_TextChanged(object sender, EventArgs e) { if (MS_txtCount_M_FL_Sale.Text == "") MS_txtSum_M_FL_Sale.Text = "0"; else MS_txtSum_M_FL_Sale.Text = (cost_M_FL * Convert.ToInt32(MS_txtCount_M_FL_Sale.Text)).ToString(); } private void MS_btnOk_Click(object sender, EventArgs e) { MS_dgvBuyers.EndEdit(); // заканчиваем редактирование ячейки, чтобы не было ошибки "заполните все поля", которая проверяется ниже // остаток от количества цветов, если ноль или меньше то ошибка int AmountOf_residue = count_M_FL - Convert.ToInt32(MS_txtCount_M_FL_Sale.Text); if (AmountOf_residue < 0 || Convert.ToInt32(MS_txtCount_M_FL_Sale.Text) == 0) { MessageBox.Show("Ошибка, столько товара нет!"); return; } /*--------------- проверка на пустые поля ------------------------------- */ if (MS_txtCount_M_FL_Sale.Text == "") { MessageBox.Show("Ошибка! Заполните все поля"); return; } for (int column = 0; column < MS_dgvBuyers.ColumnCount; ++column) if (MS_dgvBuyers[column, MS_dgvBuyers.RowCount - 1].Value == null || MS_dgvBuyers[column, MS_dgvBuyers.RowCount - 1].Value.ToString() == "") { MessageBox.Show("Ошибка! Заполните все поля"); return; } /*--------------- Занесение информации о покупателе в БД ------------------------------- */ CheckResultFrom_DAL = this.DataAccessLayer.INSERTBuyerToDB( new Buyers(Convert.ToInt32(MS_dgvBuyers.CurrentRow.Cells[0].Value), MS_dgvBuyers.CurrentRow.Cells[1].Value.ToString(), MS_dgvBuyers.CurrentRow.Cells[2].Value.ToString(), MS_dgvBuyers.CurrentRow.Cells[3].Value.ToString()) ); if (!CheckResultFrom_DAL) { MessageBox.Show("Ошибка продажи товара!"); return; } /*--------------- Занесение информации о продаже в БД ------------------------------- */ // получаем количество idSaleFlower и прибавляем единицу для правильной вставки id_sale_product = this.DataAccessLayer.Func_GetCountIDSaleFlower() + 1; CheckResultFrom_DAL = this.DataAccessLayer.INSERTSaleFlowerToDB( new SaleProduct(id_personnel, id_sale_product, Convert.ToInt32(MS_txtCount_M_FL_Sale.Text), Convert.ToDateTime(DateTime.Now), Convert.ToInt32(MS_dgvBuyers.CurrentRow.Cells[0].Value), Convert.ToInt32(MS_txtSum_M_FL_Sale.Text), id_m_fl)); if (!CheckResultFrom_DAL) { MessageBox.Show("Ошибка продажи товара!"); return; } /*--------------- Обновление Остатка количества цветка -------------------------------*/ CheckResultFrom_DAL = this.DataAccessLayer.UPDATE_CountMFlower_afterSaleFlower_in_DB(id_m_fl, AmountOf_residue); if (CheckResultFrom_DAL) { this.Text = "Продажа цветка - УСПЕХ"; System.Threading.Thread.Sleep(3000); this.Close(); } else { MessageBox.Show("Ошибка продажи товара!"); return; } } } }
Скриншот архива с проектом
Содержание архива
- Исходный код проекта FlowerShop
- Презентация + пояснительная записка на 34 страницы
- Файл FlowerShop.erwin - модель данных для БД
- Файл flowershop.sql - sql скрипт для создания БД в любоей среде разработки
- Файл с минимальными требованиями к программе
Alekseev