Файл: Инструкция для пользователя программы 44 1 Установка и запуск программы 44.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 239
Скачиваний: 1
СОДЕРЖАНИЕ
1.4 Проектирование базы данных
1.4.1 Основы теории баз данных
1.4.2 Особенности проектирования баз данных
1.5 Конструирование диаграммы данных
1.7.1 Клиент-серверная модель вычислений
1.7.2 Преимущества и недостатки вычислений клиент-сервер
ГЛАВА 2. Разработка программного продукта
2.1 Создание интерфейса программы
2.3 Создание классов для доступа к данным сервера
2.4 Привязка данных к элементам управления
2.5 Расчет значений по формулам
2.6 Обработка исключительных ситуаций
2.7 Инструкция для пользователя программы
2.7.1 Установка и запуск программы
2.7.2 Графический интерфейс пользователя
2.7.6 Расчет технологических данных
2.7.7 Составление технологической карты
2.7.8 Завершение работы программы
2.8.1 Общая характеристика программного средства
2.8.2 Расчет полной себестоимости разработки программного средства
2.8.3 Определение отпускной цены на программное средство
Для диалогового окна «Клиенты» привязка данных к элементам управления таблицы и текстовых полей осуществлялась следующим образом:
bs = new BindingSource();
bindingNavigator1.BindingSource = bs;
clients = KolorData.clients;
bs.DataSource = clients;
bs.DataMember = "Клиенты";
dataGridView1.DataSource = bs;
dataGridView1.Columns["Id"].Visible = false;
textBox1.DataBindings.Add("Text", bs, "Клиент");
textBox2.DataBindings.Add("Text", bs, "Адрес");
textBox3.DataBindings.Add("Text", bs, "Телефон");
textBox4.DataBindings.Add("Text", bs, "E-mail");
textBox5.DataBindings.Add("Text", bs, "Примечание");
После инициализации компонента BindingSource, осуществлена привязка элемента управления «bindingNavigator» к данному компоненту. Затем осуществляется получение данных из класса «KolorData», которые впоследствии через переменную «clients» указываются в свойстве «DataSource».
Для того, чтобы привязать элемент управления таблицы необходимо в свойстве «DataSource», этого элемента указать переменную «BindingSource» (в данном примере – это переменная «bs»).
После проделанных операций элемент управления таблицы автоматически отобразит привязанные данные. Если данные в «DataSet» были изменены, то эти изменения автоматически отобразятся в элементе управления и наоборот, данные измененные в элементе управления автоматически изменятся в привязанном «DataSet».
При создании интерфейса программы было решено, для наглядности и удобства, использовать текстовые поля для отображения текущей строки таблицы.
Чтобы это стало возможным необходимо привязать текстовые поля к компоненту «BindingSource» через свойство «DataBindings». Эта привязка отображена в предыдущем примере.
При выделении строки таблицы компонент «BindingSource» сам обновит значения в текстовых полях. Это не только удобно, но и освобождает программиста от написания множества строк кода для осуществления обновления всех полей.
Более сложная привязка осуществляется, когда необходимо отображать значения из одного столбца «DataSet», а идентификатор значения присваивать из другого столбца. В этом случае необходимо в свойствах элемента управления задавать значения «DisplayMember» и «ValueMember», как это делается для элементов списков выборок в диалоговом окне «Марки машин»:
DataSet markimashin = new DataSet();
markimashin = KolorData.markiMashin;
bs_markiMashin = new BindingSource();
bs_markiMashin.DataSource = markimashin;
bs_markiMashin.DataMember = "Марки машин";
comboBox1.DataSource = bs_markiMashin;
comboBox1.DisplayMember = "Название";
comboBox1.ValueMember = "Id";
comboBox1.DataBindings.Add("SelectedValue", bs, "Id машины");
comboBox1.DataBindings.Add("Text", bs, "Машина");
В этом примере у элемента «comboBox1» помимо свойства «DataSource» заданы свойства «DisplayMember» и «ValueMember» соответствующие заголовкам таблицы «Марки машин».
2.5 Расчет значений по формулам
Одна из основных возможностей программного продукта – это автоматический расчет цены заказа. Цена заказа рассчитывается при заполнении нового заказа на вкладке «Новый заказ». Листинг программного кода вкладки «Новый заказ» приведен в приложении.
После ввода тиража продукции в поле «Тираж», выбора формата продукции в списке «Формат продукции» может быть осуществлен автоматический расчет при нажатии на кнопку «Рассчитать» группы «Цена по прейскуранту».
Расчет цены производится следующим образом:
string formatProdVal = comboBox2.SelectedValue.ToString();
string vidBumagiVal = comboBox3.SelectedValue.ToString();
string tirajVal = textBox2.Text;
DataTable result = KolorData.cenaPoPreyskuranty(formatProdVal, vidBumagiVal, tirajVal);
if (result.Rows.Count > 0)
{
cena1 = int.Parse(result.Rows[0]["Цена за ед"].ToString());
cena2 = int.Parse(result.Rows[0]["Цена за ед без НДС"].ToString());
cena1 *= int.Parse(tirajVal);
cena2 *= int.Parse(tirajVal);
textBox4.Text = cena1.ToString();
textBox5.Text = cena2.ToString();
}
В данном примере осуществляется получение значений из списков «Формат бумаги», «Вид бумаги» и «Тираж». Далее эти значения указываются функции «cenaPoPreyskyranty» класса «KolorData», которая возвращает результат в виде объекта «DataTable». В этом объекте хранятся значения цены за единицу продукции при заданных формате, виде бумаги и тираже. Затем происходит расчет цены для указанного тиража. Значения цены за единицу продукции преобразуются в числовой тип «int» и умножаются на заданный тираж. Окончательный результат вычислений отображается в текстовых полях «Цена, руб» и «Цена без НДС, руб» [16; стр. 12-13].
Рассчитанные значения цены заказа вносятся в базу данных только после заполнения данных всего заказа по нажатию кнопки «Сохранить заказ», а до этого пересчет цены, при изменении данных заказа, может осуществляться неограниченное число раз.
Дальнейший расчет заказа производится на вкладке «Расчет заказа». Здесь рассчитываются основные технологические данные заказа.
Для того, чтобы рассчитать технологические данные заказа, технолог должен получить сведения о заказе, затем на основании этих сведений выбрать марку машины
, которая будет использована для печати заказа. После выбора марки машины для расчета данных заказа необходимо нажать на кнопку «Рассчитать». Рассчитанные значения отобразятся в нижней таблице (рисунок 21) вкладки «Расчет заказа».
Рисунок 21 – Рассчитанные технологические данные заказа
В данном примере происходит объявление переменных, в которые в дальнейшем будут записываться результаты вычислений. Некоторые значения приводятся в числовой тип. Затем происходит расчет количества печатных листов, листов на приладку и на технические отходы. После расчета количества листов формата A1/A2 происходит расчет массы бумаги. Все рассчитанные значения вносятся в объект «dannyeRascheta» с типом «DataTable».
После расчета основных технологических данных необходимых для печати заказа, составляется технологическая карта, нажав по кнопке «Технологическая карта».
Диалоговое окно «Технологическая карта» с составленной картой заказа №16 показано на рисунке 22.
Пользователю необходимо лишь ввести значения в столбцы, выделенные цветом. Остальные значения будут рассчитаны программой автоматически на основании введенных данных.
Рисунок 22 – Составленная технологическая карта заказа №16
Для того, чтобы значения столбцов «Факт время» и «Всего зарплаты» рассчитывались сразу после ввода пользователем значений в столбцах «Кол-во единиц» и «Норма времени» необходимо добавить событие «CellValueChanged» к элементу таблицы. Это реализовано следующим образом:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
double factVremya = (double)dataGridView1["Кол-во единиц", e.RowIndex].Value * (double)dataGridView1["Норма времени", e.RowIndex].Value / 60;
factVremya = Math.Round(factVremya, 4);
dataGridView1["Факт время", e.RowIndex].Value = factVremya;
double vsegoZarplaty = (int)dataGridView1["Часовая тар ставка", e.RowIndex].Value * factVremya * 1.3;
vsegoZarplaty = Math.Round(vsegoZarplaty, 4);
dataGridView1["Всего зарплаты", e.RowIndex].Value = (int)Math.Ceiling(vsegoZarplaty);
bs_tehKarta.EndEdit();
}}
В этом примере проверяется, пусты ли значения рассчитываемых столбцов. Если значения пусты, то происходит расчет
значений фактического времени и зарплаты, а затем они присваиваются соответствующим столбцам таблицы. Рассчитанная технологическая карта вносится в базу данных при нажатии кнопки «Сохранить», либо при закрытии диалогового окна «Технологическая карта» [11; стр. 67-68].