Главная страница
Навигация по странице:

  • 15.26 Добавление обработчиков событий для формы «Оформление заказа»

  • 15.27 Добавление обработчиков событий для формы «Информация о заказах»

  • 15.28 Контрольное задание

  • 15.29 Контрольные вопросы

  • Список использованных источников

  • Лабораторный практикум. Лабораторная работа Обследование предметной области Построение модели ide создание контекстной диаграммы Создание диаграммы декомпозиции Создание диаграммы


    Скачать 5.73 Mb.
    НазваниеЛабораторная работа Обследование предметной области Построение модели ide создание контекстной диаграммы Создание диаграммы декомпозиции Создание диаграммы
    АнкорЛабораторный практикум
    Дата25.12.2022
    Размер5.73 Mb.
    Формат файлаpdf
    Имя файлаЛабораторный практикум.pdf
    ТипПрактикум
    #863633
    страница12 из 12
    1   ...   4   5   6   7   8   9   10   11   12
    15.25 Добавление обработчиков событий для формы «Издательства»
    В обозревателе решений перейдите к форме . Добавьте обработчик события на загрузку формы: private void
    FrmPublishHouse_Load(
    object sender, EventArgs e)
    { this
    .publishHouseTableAdapter.Fill(
    this
    .dataSet1.PublishHouse);
    }
    Добавьте обработчик события на закрытие формы: private void
    FrmPublishHouse_FormClosing(
    object sender, FormClosingEventArgs e)
    { try
    { this
    .publishHouseTableAdapter.Update(
    this
    .dataSet1.PublishHouse);
    } catch
    (Exception ex)
    {
    }
    }

    244
    15.26 Добавление обработчиков событий для формы «Оформление
    заказа»
    В обозревателе решений перейдите к форме . Добавьте обработчик события на загрузку формы: private void
    FrmPurchases_Load(
    object sender, EventArgs e)
    { this
    .currentOrderTableAdapter.Fill(
    this
    .dataSet1.CurrentOrder); this
    .deliveriesInfoTableAdapter.Fill(
    this
    .dataSet1.DeliveriesInfo); this
    .clientInfoTableAdapter.Fill(
    this
    .dataSet1.ClientInfo); main = this
    .Owner as
    FrmMain;
    SourceDataToBindingBucketGoods(); this
    .label2.Text = main.amountGoods.ToString() +
    " шт."
    ; this
    .label4.Text = CalcTotalPrice().ToString(); this
    .comboBox1.SelectedIndex = -1; this
    .comboBox2.SelectedIndex = -1;
    }
    Добавьте метод расчета итоговой суммы заказа: private int
    CalcTotalPrice()
    { int totalSum = 0; for
    (
    int i = 0; i < this
    .dataGridView1.Rows.Count; i++) totalSum += Convert.ToInt32(
    this
    .dataGridView1.Rows[i].Cells[3].Value) *
    Convert.ToInt32(
    this
    .dataGridView1.Rows[i].Cells[4].Value); return totalSum;
    }
    Добавьте метод создания источника данных для корзины товаров:
    BindingSource bs = new
    BindingSource(); private void
    SourceDataToBindingBucketGoods()
    { int
    BookID = 2; string conStr =
    @"Data Source=.\SQLEXPRESS; Initial Catalog=BookShopDB;
    Integrated Security=True;"
    ;
    // создание строки подключения
    SqlConnection connection = new
    SqlConnection(conStr); connection.Open();
    SqlCommand cmd = new
    SqlCommand(
    @"SELECT BookID, TitleBookName, Pages, Price
    FROM Books WHERE BookID = @BookID"
    , connection); foreach
    (DictionaryEntry entry in main.bucketGoods)
    {
    BookID = Convert.ToInt32(entry.Key); break
    ;
    } cmd.Parameters.AddWithValue(
    "@BookID"
    , BookID);
    SqlDataReader reader = cmd.ExecuteReader();
    DataTable table = CreateSchemaFromReader(reader,
    "BooksToOrder"
    );
    // создание новой таблицы на основе схемы, предоставляемой DataReader reader.Close(); cmd.Parameters.Clear(); foreach
    (DictionaryEntry entry in main.bucketGoods)
    { cmd.Parameters.Clear();
    BookID = Convert.ToInt32(entry.Key); cmd.Parameters.AddWithValue(
    "@BookID"
    , BookID); reader = cmd.ExecuteReader();
    WriteDataFromReader(table, reader, Convert.ToInt32(entry.Value));
    // запись данных в таблицу с помощью DataReader

    245 reader.Close();
    // Каждый раз закрываем DataReader
    } reader.Close(); connection.Close(); this
    .dataGridView1.DataSource = table; this
    .dataGridView1.Columns[0].HeaderCell.Value =
    "Код"
    ; this
    .dataGridView1.Columns[0].Width = 65; this
    .dataGridView1.Columns[1].HeaderCell.Value =
    "Название книги"
    ; this
    .dataGridView1.Columns[1].Width = 250; this
    .dataGridView1.Columns[1].AutoSizeMode =
    DataGridViewAutoSizeColumnMode.Fill; this
    .dataGridView1.Columns[2].HeaderCell.Value =
    "Страниц"
    ; this
    .dataGridView1.Columns[3].HeaderCell.Value =
    "Цена за 1 шт."
    ; this
    .dataGridView1.Columns[3].Width = 110; this
    .dataGridView1.Columns[4].HeaderCell.Value =
    "Количество шт."
    ; this
    .dataGridView1.Columns[4].Width = 110; bs.DataSource = table; this
    .bindingNavigator1.BindingSource = bs; return
    ;
    }
    Добавьте метод создания таблицы «DataTable» по схеме базы данных:
    ///

    ///
    Метод создает новую таблицу DataTable по схеме SqlDataReader
    ///

    ///
    reader
    ">
    Данные из DataReader
    ///
    tableName
    ">
    Имя новой таблицы DataTable
    ///

    Возвращает таблицу DataTable, составленную по схеме
    DataReader

    private static
    DataTable CreateSchemaFromReader(SqlDataReader reader, string tableName)
    {
    DataTable table = new
    DataTable(tableName); for
    (
    int i = 0; i < reader.FieldCount; i++) table.Columns.Add(
    new
    DataColumn(reader.GetName(i), reader.GetFieldType(i))); table.Columns.Add(
    "AmountOf"
    , typeof
    (
    int
    )); return table;
    }
    Добавьте метод записи данных в таблицу «DataTable» из базы данных:
    ///

    ///
    Метод записывает данные в таблицу DataTable из схемы DataReader
    ///

    ///
    table
    ">
    Таблица DataTable куда будут записаны данные
    ///
    reader
    ">
    Данные из DataReader private static void
    WriteDataFromReader(DataTable table, SqlDataReader reader)
    { while
    (reader.Read())
    {
    DataRow row = table.NewRow(); for
    (
    int i = 0; i < reader.FieldCount; i++) row[i] = reader[i]; table.Rows.Add(row);
    }
    } private static void
    WriteDataFromReader(DataTable table, SqlDataReader reader, int amount)
    { while
    (reader.Read())
    {
    DataRow row = table.NewRow();

    246 for
    (
    int i = 0; i < reader.FieldCount; i++) row[i] = reader[i]; row[reader.FieldCount] = amount; table.Rows.Add(row);
    }
    }
    Добавьте ручной обработчик события «bindingNavigatorDeleteItem_Click» для элемента «BindingNavigator»: private void bindingNavigatorDeleteItem_Click(
    object sender, EventArgs e)
    { if
    (
    this
    .dataGridView1.Rows.Count > 0) if
    (MessageBox.Show(
    this
    ,
    "Эта книга будет удалена из заказа"
    ,
    "Вы уверены, что хотите продолжить?"
    , MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
    System.Windows.Forms.DialogResult.Yes)
    { int temp =
    Convert.ToInt32(
    this
    .dataGridView1.CurrentRow.Cells[4].Value); main.bucketGoods.Remove(Convert.ToInt32(
    this
    .dataGridView1.CurrentRow.Cells[0].Value)); main.amountGoods -= temp; bs.RemoveCurrent(); this
    .label2.Text = main.amountGoods.ToString() +
    " шт."
    ; this
    .label4.Text = CalcTotalPrice().ToString(); main.UpdateFormChanges();
    }
    }
    Добавьте обработчик события на закрытие формы: private void
    FrmPurchases_FormClosing(
    object sender, FormClosingEventArgs e)
    { main.UpdateFormChanges();
    }
    Добавьте обработчик события «Click» для кнопки «Оформить заказ»: private void button2_Click(
    object sender, EventArgs e)
    { if
    (flagHeight) this
    .Width -= 540; else this
    .Width += 540; flagHeight = !flagHeight;
    }
    Добавьте обработчик события «Click» для кнопки «Подтвердить»: private void button1_Click(
    object sender, EventArgs e)
    {
    DataTable dt = new
    DataTable(); dt = (DataTable)dataGridView1.DataSource;
    WriteToOrderItemList();
    }
    15.27 Добавление обработчиков событий для формы «Информация о
    заказах»
    В обозревателе решений перейдите к форме .
    Добавьте обработчик события на загрузку формы:

    247 int
    ? OrderListID = 0;
    private void
    FrmViewOrdersInfo_Load(
    object sender, EventArgs e)
    { this
    .ordersTableAdapter.Fill(
    this
    .dataSet1.Orders);
    OrderListID = Convert.ToInt32(
    this
    .dataGridView1.CurrentRow.Cells[0].Value); this
    .spListOfOrdersTableAdapter.Fill(
    this
    .dataSet1.spListOfOrders, ref
    OrderListID);
    }
    Добавьте обработчик события «SelectionChanged» для элемента
    «dataGridView1»: private void dataGridView1_SelectionChanged(
    object sender, EventArgs e)
    {
    OrderListID = Convert.ToInt32(
    this
    .dataGridView1.CurrentRow.Cells[0].Value); this
    .spListOfOrdersTableAdapter.Fill(
    this
    .dataSet1.spListOfOrders, ref
    OrderListID);
    }
    15.28 Контрольное задание
    Создайте приложение-клиент к базе данных согласно выбранному вами варианту. В приложении должно быть реализовано:
    − отображение таблиц;
    − манипулирование данными;
    − поиск, сортировка, фильтрация данных;
    − не менее 3-х запросов;
    − не менее 3-х хранимых процедур (для проведения затратного анализа).
    15.29 Контрольные вопросы
    1. Как организовать отображение данных из таблиц?
    2. С помощью какого компонента осуществляется манипулирование данными?
    3. При помощи какого метода осуществляется сортировка данных?
    4. С помощью какого метода осуществляется поиск данных?
    5. При помощи какого метода осуществляется фильтрация данных?
    6. Каким образом организуется осуществление выполнения запросов?
    7. Как организовать осуществление выполнения хранимых процедур?

    248
    Список использованных источников
    1   ...   4   5   6   7   8   9   10   11   12


    написать администратору сайта