69087

ВИКОРИСТАННЯ СТАНДАРТНИХ КОМПОНЕНТІВ В ПРОЕКТІ

Лекция

Информатика, кибернетика и программирование

В цій лекції ми розглянемо як реалізувати обробку функцій текстового редактора з використанням стандартних компонентів .Net Framework, які називають вікнами діалогу. Вікно діалогу - це модальна форма, її розміри не можна змінювати.

Украинкский

2014-09-29

74.2 KB

2 чел.

12

ЛЕКЦІЯ 7. ВИКОРИСТАННЯ СТАНДАРТНИХ КОМПОНЕНТІВ В ПРОЕКТІ

План

7.1. Відкриття файлу - OpenFileDialog

7.2. Збереження файлу -  SaveFileDialog

7.3. Вибір шрифту  - FontDialog

7.4. Вибір кольору - ColorDialog

7.5. Друкування файлу – PrintDialog

7.6. Обробка подій кнопок панелі інструментів

7.7. Завершення роботи програми та інші події

7.8. Виведення повідомлень - MessageBox

В цій лекції ми розглянемо як реалізувати обробку функцій текстового редактора з використанням стандартних компонентів .Net Framework, які називають вікнами діалогу.

Вікно діалогу - це модальна форма, її розміри не можна змінювати. Крім того, в цих вікнах не використовуються елементи, що поміщаються у верхню частину звичайних форм: ControlBox, MinimizeBox і MaximizeBox.

Стандартні вікна діалогу OpenFileDialog, SaveFileDialog, FontDialog,  ColorDialog зосереджені в закладці Dialog Toolbox.

Стандартні вікна діалогу для друкування файлу – в закладці Printing.

Для того, щоб ці компоненти можна було використовувати в програмі, потрібно їх "перетягти" на форму. Вони розміщуються в невидимій частині форми (лотку).

Спочатку створимо дві глобальні змінні класу форми, які будемо використовувати в різних методах.

public partial class Form1 : Form

   {

       private string fn = string.Empty;  // им'я файла

       private bool docChanged = false; // true - в текст внесено зміни

.....

}

Внесемо, також зміни в конструктор форми:

Властивість FileName задає назву файлу, яка знаходитиметься в полі "Ім'я файлу" при появі діалогу. Встановимо значення FileName ="".

Властивість Filter задає обмеження файлів, які можуть бути вибрані для відкриття, — у вікні будуть показані лише файли із заданим розширенням. Через вертикальну роздільну лінію можна задати зміну типу розширення, що відображується у випадаючому списку "Тип файлів".

Тут введемо Text Files (*.txt)|*.txt|All Files(*.*)|*.* що означає огляд або текстових файлів, або всіх.

Призначимо, також властивості Title для діалогів відкриття і збереження файлу.

Зробимо ці призначення в конструкторі форми.

Лістинг 7.1.

      public Form1()

       {

           //Створення форми

           InitializeComponent();

           textBox1.ScrollBars = ScrollBars.Vertical;

           textBox1.Text = string.Empty;

           this.Text = "NkEdit - Новий документ";

           // вивести панель инструментов

           toolStrip1.Visible = true;

           панельІнструментівToolStripMenuItem.Checked = true;

           // налаштування компонента openDialog1

           openFileDialog1.DefaultExt = "txt";

           openFileDialog1.Filter = "(*.txt)|*.txt|All Files(*.*)|*.* ";

           openFileDialog1.Title = "Відкрити документ";

           openFileDialog1.Multiselect = false;

           // налаштування компонента saveDialog1

           saveFileDialog1.DefaultExt = "txt";

           saveFileDialog1.Filter = "(*.txt)|*.txt|All Files(*.*)|*.* ";

           saveFileDialog1.Title = "Зберегти документ";

}

Для виведення діагностичний повідомлень (попереджень, повідомлень про помилки, тощо) використовується стандартний статичний клас MessageBox.

7.1. Відкриття файлу - OpenFileDialog 

Додамо на форму діалог OpenFileDialog з вікна панелі інструментів ToolBox.

Переходимо в код форми. Підключаємо простір імен для роботи з файловими потоками:

using System.IO;

Реалізуємо код діалогу відкриття файлу у вигляді закритого методу  OpenDocument() для того, щоб викликати його з меню і з панелі інструментів, не дублюючи код.

Лістинг 7.2.

//Відкрити документ

      private void OpenDocument()

      {

           openFileDialog1.FileName = string.Empty;

           // Відобразити діалог відкриття файлу

           if (openFileDialog1.ShowDialog() == DialogResult.OK)

           {

               fn = openFileDialog1.FileName;

               // відобразити им'я файла у заголовку вікна

               this.Text = fn;

               try

               {

                   // читання даних з файлу

                   System.IO.StreamReader sr =

                       new System.IO.StreamReader(fn);

                   textBox1.Text = sr.ReadToEnd();

                   textBox1.SelectionStart = textBox1.TextLength;

                   sr.Close();

               }

               catch (Exception exc)

               {

                   MessageBox.Show("Помилка читання файла.\n" + exc.ToString(), "NkEdit",

                       MessageBoxButtons.OK,

                       MessageBoxIcon.Error);

               }

          }

     }

В цьому методі команда

openFileDialog1.ShowDialog

відкриває вікно діалогу для пошуку і відкриття файлів. В змінній FileName повертається назва вибраного файлу. В об'єкті DialogResult. повертається true, якщо користувач натиснув кнопку OK.

Отже, якщо користувач натиснув кнопку OK, змінній fn призначається значення FileName, виконується читання файлу в текстове поле редактора.

При помилці читання файлу генерується переривання (виключення) і керування переходить в блок catch обробки переривання.

Додаємо обробник для команди  меню Відкрити:

//Відкрити...

private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

      {

          OpenDocument();

}

Такий саме обробник додаємо для кнопки панелі інструментів

private void openToolStripButton_Click(object sender, EventArgs e)

{

   OpenDocument();

}

7.2. Збереження файлу -  SaveFileDialog

Для збереження файлів додаємо на форму елемент управління saveFileDialog1. Властивості цього діалогу такі самі, як в OpenFileDialog. Роботу з цим діалогом реалізуємо в методі SaveDocument.

Лістинг 7.3.

     // Зберегти документ - закритий метод

       private int SaveDocument()

       {

           int result = 0;

           if (fn == string.Empty)

           {

               // відобразити діалог Зберегти

               if (saveFileDialog1.ShowDialog() == DialogResult.OK)

               {

                   // відобразити им'я файла у заголовку вікна

                   fn = saveFileDialog1.FileName;

                   this.Text = fn;

               }

               else result = -1;

           }

           // зберегти файл

           if (fn != string.Empty)

           {

               try

               {

                   // отримуємо інформацию про файл fn

                   System.IO.FileInfo fi = new System.IO.FileInfo(fn);

                   // створюємо потік для запису (перезаписуємо файл)

                   System.IO.StreamWriter sw = fi.CreateText();

                   // записуємо дані

                   sw.Write(textBox1.Text);

                   // закриваємо потік

                   sw.Close();

                   result = 0;

               }

               catch (Exception exc)

               {

                   MessageBox.Show(exc.ToString(), "NkEdit",

                       MessageBoxButtons.OK,

                       MessageBoxIcon.Error);

               }

           }

           return result;

       }

Додаємо обробник для команди  меню Зберегти:

//Зберегти...

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

   SaveDocument();

}

Такий саме обробник додаємо для кнопки панелі інструментів

//кнопка Зберегти (save) - використовуємо закритий метод SaveDocument();

private void saveToolStripButton_Click(object sender, EventArgs e)

{

   SaveDocument();

}

7.3. Вибір шрифту  - FontDialog

Стандартний  компонент FontDialog дозволяє  вибирати шрифт та його параметри для всього тексту. Для цього властивості текстового поля призначається значення, яке повертає властивіть компоненту:

textBox1.Font = fontDialog1.Font;

Код обробника меню Шрифт:

//Меню шрифт

       private void шрифтToolStripMenuItem_Click(object sender, EventArgs e)

       {

           fontDialog1.Font = textBox1.Font;

           if (fontDialog1.ShowDialog() == DialogResult.OK)

           {

               textBox1.Font = fontDialog1.Font;

           }

 }

7.4. Вибір кольору – ColorDialog

Додамо в меню параметри команду Колір для вибору кольору тексту. В обробник команди додамо виклик діалогу colorDialog.

private void колірToolStripMenuItem_Click(object sender, EventArgs e)

       {

           if (colorDialog1.ShowDialog() == DialogResult.OK)

               textBox1.ForeColor = colorDialog1.Color;

       }

Для зміни кольору тексту в редакторі застосуємо властивість ForeColor:

    

          textBox1.ForeColor = colorDialog1.Color;

7.5. Друкування файлу – PrintDialog

Для організації друкування  та його налаштування призначені відповідні стандартні компоненти.

Перетягуємо на форму з вікна ToolBox елементи: PrintDocument, PageSetupDialog, PrintPreviewDialog і PrintDialog. Подібно до інших діалогів, вони відображуються на панелі компонентів в середовищі Visual Studio .NET.

При друці формується одна або декілька сторінок, за які відповідає об'єкт PrintDocument.

Елементи управління PageSetupDialog, PrintPreviewDialog і PrintDialog є діалоговими вікнами параметрів сторінок, попереднього перегляду і друку відповідно.

Спочатку у вікні Властивості призначимо для властивості Document елементів PageSetupDialog і PrintPreviewDialog значення властивості Name елементу PrintDocument — printDocument1. Тим самим ми зв'язуємо об'єкт printDocument1, що відповідає за формування сторінок друку, з діалоговими вікнами. Це можна зробити і в коді форми.

Для роботи з друком в бібліотеці .NET Framework застосовується клас System.Drawing.Printing, тому його потрібно підключити на самому початку роботи:

using System.Drawing.Printing;

У класі форми оголошуємо наступні глобальні змінні

       int pagesPrinted = 0;              //номер поточної сторінки, що друкується

       string bufOut = "";                //буфер для виводу тексту

В обробнику команди меню Друкувати спочатку записуємо вміст текстового поля в буфер bufOut для того, щоб можна було обчислити кількість рядків у файлі.  Замість цього можна скористатися властивостями файлу.

Потім встановлюємо в 0 кількість надрукованих сторінок.

Далі створюємо об'єкт pd класу PrintDocument.

Команда

         pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

встановлює властивості PrintPage поточное значення кількості надрукованих сторінок. Подія PrintPageEventHandler виникає при закінченні кожної сторінки. При цьому для кожної сторінки викликається метод pd_PrintPages.

Потім викликається вікно діалогу друкування.

Лістинг 7.4.

//Друкувати...

private void друкуватиToolStripMenuItem_Click(object sender, EventArgs e)

{

   //Організація діалогу друкування

   bufOut = textBox1.Text;

   this.pagesPrinted = 0;

   PrintDocument pd = new PrintDocument();

   pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

   printDialog1.ShowDialog();

}

Обробник команди меню Попередній перегляд відрізняється від друкування тільки  викликом діалогу попереднього перегляду.

Лістинг 7.5.

//==============================================================================

private void попереднійПереглядToolStripMenuItem_Click(object sender, EventArgs e)

{

   //попередній перегляд

   bufOut = textBox1.Text;

   this.pagesPrinted = 0;

   PrintPreviewDialog ppd = new PrintPreviewDialog();

   PrintDocument pd = new PrintDocument();

   pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPages);

   ppd.Document = pd;

   ppd.ShowDialog();

}

Для друкування однієї сторінки тексту розроблено метод pd_PrintPages.  Друкування виконується в графічному режимі, тому сторінка є графічним  об'єктом. В цьому методі спочатку  обчислюється область друку на сторінці (розміри верхнього і нижнього полів), текст буфера розбивається на рядки  і обчислюється кількість рядків. Далі розраховується кількість рядків на сторінці  для встановленого шрифта.

Інформація про сторінку знаходиться в об'єкті Graphics.

Лістинг 7.6.

private void pd_PrintPages(object sender, PrintPageEventArgs e)

{

   float yPos = 0;

   float leftMargin = e.MarginBounds.Left;

   float topMargin = e.MarginBounds.Top;

   string line = null;

   //розбиваємо текст на рядки і обчислюємо їх кількість

   string[] split = bufOut.Split(new Char[] { '\n' });

   int nLines = split.Length; //число строк

   //розраховуємо кількість рядків на сторінці

   int linesPerPage = (int)(e.MarginBounds.Height / this.Font.GetHeight(e.Graphics));

   int lineNo = this.pagesPrinted * linesPerPage;

   //друкуємо кожен рядок з масиву

   int count = 0;

   while (count < linesPerPage && lineNo < nLines)

   {

       line = split[count];

       yPos = topMargin + (count * this.Font.GetHeight(e.Graphics));

       e.Graphics.DrawString(line, this.Font, Brushes.Black, leftMargin, yPos, new StringFormat());

       lineNo++;

       count++;

   }

   if (nLines > lineNo)

       e.HasMorePages = true;

   else

       e.HasMorePages = false;

   pagesPrinted++;  //подсчет напечатанных страниц

}

7.6. Обробка подій кнопок панелі інструментів

Кнопки панелі інструментів дублюють відповідні команди меню. І кнопки і команди меню генерують власні події, наприклад, Click.

Для того, щоб не дублювати код обробників можна:

1. Написати закритий метод класу, який реалізує обробку події і викликати цей метод з обробника меню і обробника кнопки. Цей спосіб ми застосовували для відкриття і збереження файлу.

2. Застосувати делегати. Тут делегати відіграють роль покажчиків на функцію.

Наприклад, обробник меню Про програму має вигляд:

//Довідка про програму - власна форма

       private void мояДовідкаToolStripMenuItem_Click(object sender, EventArgs e)

       {

        //створення об'єкту класу і записк форми як модального діалогу

           MyHelp myform = new MyHelp();

           myform.ShowDialog();

       }

Обробник кнопки на панелі інструментів містить тільки посилання на потрібний обробник

//кнопка Help - виклик власного вікна про програму

private void helpToolStripButton_Click(object sender, EventArgs e)

{

   мояДовідкаToolStripMenuItem_Click(this, new EventArgs());

}

Делегат використовується і для роботи з новим файлом – команда меню Новий.

Лістинг 7.7.

//Обробники подій Click при виборі команд меню       

//новий документ

   private void новийToolStripMenuItem_Click(object sender, EventArgs e)

      {

          //меню Новий документ

          if (docChanged)

          {

              DialogResult dr;

              dr = MessageBox.Show(

                                    "Зберегти зміни?", "NkEdit",

                                    MessageBoxButtons.YesNoCancel,

                                    MessageBoxIcon.Warning);

              switch (dr)

              {

                  case DialogResult.Yes:

                      if (SaveDocument() == 0)

                      {

                          textBox1.Clear();

                          docChanged = false;

                      }

                      break;

                  case DialogResult.No:

                      textBox1.Clear();

                      docChanged = false;

                      break;

                  case DialogResult.Cancel:

                      //

                      break;

              };

          }

      }

В обробнику кнопки панелі інструментів використовується делегат – показчик на обробник меню

//Кнопка Новий - new

private void newToolStripButton_Click(object sender, EventArgs e)

       {

        //виклик обробника меню Новий, генеруємо нову подію

        новийToolStripMenuItem_Click(this, new EventArgs ());

}

7.7. Завершення роботи програми та інші події

7.7.1. Завершення роботи програми

Вихід з програми виконується при виборі команди меню Вихід. При цьому потрібно перевірити, чи збережені останні зміни у файлі.

Лістинг 7.8.

//Вихід

//Обробник команди меню Вихід - завершення роботи програми

private void вихідToolStripMenuItem_Click(object sender, EventArgs e)

{

   //Завершення роботи - перевірити чи збережені зміни у файлі

   if (docChanged)

   {

       DialogResult dr;

       dr = MessageBox.Show("Зберегти зміни?", "NkEdit",

                             MessageBoxButtons.YesNoCancel,

                             MessageBoxIcon.Warning);

       switch (dr)

       {

           case DialogResult.Yes:

               SaveDocument();

               this.Close();

               break;

           case DialogResult.No:

               this.Close();

               break;

           case DialogResult.Cancel:

               // відмінити закриття вікна програми

               break;

       };

   }

   this.Close();

}

7.7.2. Обробка події зміни файлу

При кожній дії з текстом у вікні генерується подія TextChanged, її обробка полягає у встановленні глобальної змінної в true. Перевірка значення цієї змінної виконується при завершенні роботи.

      //Текст у вікні редактора змінився - обробник події TextChanged

       private void textBox1_TextChanged(object sender, EventArgs e)

       {

          docChanged = true;

 }

7.7.3. Закриття вікна у заголовку форми

При закритті форми через системну кнопку у заголовку форми генерується подія FormClosing. Для того, щоб зв'язати обробник з подією, потрібно його встановити у вікні подій форми для цієї події. Тоді при закритті форми буде перевірятися, чи змінювався текст у вікні.  

Лістинг 7.9.

// Користувач натиснув на формі кнопку "Закрити вікно" у Заголовку

       private void Form1_FormClosing(object sender, FormClosingEventArgs e)

       {

           if (docChanged)

           {

               DialogResult dr;

               dr = MessageBox.Show("Зберегти зміни?", "NkEdit",

                                     MessageBoxButtons.YesNoCancel,

                                     MessageBoxIcon.Warning);

               switch (dr)

               {

                   case DialogResult.Yes:

                       if (SaveDocument() != 0)

                           // користувач відмінив операцію збереження файлу

                           e.Cancel = true; // відмінити закриття вікна програми

                       break;

                   case DialogResult.No: ;

                       break;

                   case DialogResult.Cancel:

                       // відмінити закриття вікна програми

                       e.Cancel = true;

                       break;

               };

           }

}

7.8. Виведення повідомлень - MessageBox

Для виведення діагностичних повідомлень використовується стандартний статичний клас MessageBox.

Метод Show цього классу виводить текст повідомлення користувачу.

Приклад:

MessageBox. Show(“Hello!”);

Прототип методу має вигляд:

public static DialogResult Show(string message);

   

Метод Show повертає результат типу DialogResult.

Коли користувач клацає кнопку ОК, метод Show повертає значення, рівне DialogResult.OK. Це значення можна використати в програмі для перевірки дій користувача (яку кнопку він натиснув, щоб закрити форму).

Існує багато перегружених методів класу MessageBox.Show. Крім тексту повідомлення, можна задати інші параметри, наприклад, параметр caption дозволяє задати текст заголовка діалогового вікна MessageBox.

За допомогою параметра btns можна вказати, які кнопки необхідно розташувати у вікні діалогового вікна. Цей параметр задається константами з переліку MessageBoxButtons (табл. 7.1).

Таблиця 7.1. Можливі значення параметра btns

Константа

Кнопки, які відображаються у вікні MessageBox

ОК

OK

OKCancel

OK, Cancel

YesNo

Yes, No

YesNoCancel

Yes, No, Cancel

RetryCancel

Retry, Cancel

AbortRetryIgnore

Abort, Retry, Ignore

Параметр icon методу MessageBox.Show дозволяє вибрати один з декількох значків для розташування в лівій частині діалогового вікна. Він задається у вигляді константи з переліку MessageBoxIcon (рис. 7.1):

Константа

Значок

Asterisk, Information

Error, Stop

Exclamation, Darning

Question

None

Значок не виводиться

Рис. 7.1. Можливі значення MessageBoxIcon

Параметр defButton методу MessageBox.Show призначений для вибору кнопки, яка отримає фокус відразу після відображення діалогового вікна. Цей параметр повинен мати одне із значень з переліку MessageBoxDefaultButton (табл. 7.2):

Таблиця 7.2. Можливі значення MessageBoxDefaultButton

Константа

Номер кнопки, яка одержує фокус вводу за замовчанням

Button l

1

Button 2

2

Button 3

3

Якщо в діалоговому вікні відображаються кнопки Yes, No і Cancel, то вони будуть пронумеровані послідовно: кнопка Yes отримає номер 1 (константа Button1), кнопка No - номер 2 (константа Button2), а кнопка Cancel - номер 3 (константа Button3).

Якщо у вікні MessageBox є декілька кнопок, то для того, щоб визначити, яку кнопку клацнув користувач, програма повинна проаналізувати значення, яке повертає метод MessageBox.Show.

Метод MessageBox.Show може повернути одне з декількох значень з переліку DialogResult (табл.7.3):

Таблиця 7.3. Можливі значення DialogResult

Константа

Кнопка, при виборі якої повертається ця константа

Abort

Abort

Cancel

Cancel

Ignore

Ignore

No

No

None

Модальне вікно діалогу продовжує працювати

OK

OK

Retry

Retry

Yes

Yes

Приклад:

   DialogResult result = MessageBox.Show(" Видалити дані  \n по працівнику? ",

     "Попередження", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,

       MessageBoxDefaultButton.Button2);

Висновки

Для прискорення створення програм в Visual Studio використовується багато стандартних компонентів, доступ до яких реалізується через їхні інтерфейси. Ці інтерфейси реалізовані у вигляді полів і методів відповідних класів, з якими може працювати програма. Прикладом таких компонентів є стандартні вікна діалогу, вікна виведення діагностичних повідомлень. Ці готові компоненти є наочним прикладом застосування компонентного підходу, реалізованого в .Net Framework. 

Контрольні питання і завдання для самостійного виконання

  1.  В якій змінній повертається результат роботи стандартного вікна діалогу?
  2.  Яким чином реалізувати зберігання даних в файлі? Яке вікно діалогу для цього використати?
  3.  Яким чином можна встановити фільтр для огляду певних типів файлів? Яку властивість і якого класу потрібно налаштувати?
  4.  Яку властивість потрібно задати для того, щоб вивести назву файлу у вікні діалогу?
  5.  Як реалізувати діалог відкриття файлу?
  6.  Як реалізувати діалог збереження файлу?
  7.  Як реалізувати діалог роботи із шрифтами?
  8.  Як реалізувати друкування файлу?
  9.  Як реалізувати попередній перегляд файлу?
  10.   Як реалізувати виведення вікна повідомлення про помилку, в якому розміщений заголовок «Помилка», текст повідомлення, значок і кнопка ОК?

 

А также другие работы, которые могут Вас заинтересовать

72175. Рабочее время и время отдыха 31.5 KB
  Трудовой кодекс не изменяет установленные КЗоТом нормальную продолжительность рабочего времени не более 40 часов в неделю и сокращенную продолжительность рабочего времени для определенных категорий работников. В соответствии со статье 94 ТК РФ продолжительность ежедневной работы...
72176. Прекращение трудовых отношений 33.5 KB
  Удельный вес различных оснований прекращения трудового договора в общем объеме увольнений неоднозначен. Наиболее распространенными основаниями расторжения трудового договора являются увольнения по инициативе работника и по инициативе работодателя и поэтому они нуждаются...
72177. Понятия и принципы уголовного права 31 KB
  С этих исходных позиций мы сможем со знанием дела уяснить понятие и круг источников уголовного права их содержание. Уголовное право как отрасль права традиционно определяется как совокупность юридических норм которые устанавливают преступность и наказуемость деяний представляющих...
72178. Наказание. Понятие, цели и виды 60.5 KB
  Надо добавить что назначение и исполнение наказания означает в то же время порицание судом от имени государства содеянного виновным и его самого как нанесшего вред обществу. Иными словами содержанием наказания является кара за преступление о чем уже упоминалось в связи с общей...
72179. Понятие административного права 48.5 KB
  Административное право представляет собой совокупность правовых норм регулирующих определенные сферы общественных отношений составляющих предмет этой отрасли права. При этом предмет административного права отвечает на вопрос что какие общественные отношения регулируются нормами...
72180. Административные правонарушения в РФ 63 KB
  Нарушение правил о которых говорилось выше иногда может повлечь уголовную ответственность если это прямо предусмотрено Уголовным кодексом. Для подобных случаев а они наиболее часты государство и учредило административную ответственность которая по характеру мер менее сурова...
72181. ПРАКТИЧЕСКИЕ СХЕМЫ ВЫСОКОКАЧЕСТВЕННОГО ЗВУКОВОСПРОИЗВЕДЕНИЯ 1.68 MB
  Каждый из этих узлов имеет самостоятельное значение и характеризуется своими показателями качества влияющими на качество всего усилителя в целом. Структурную схему современного усилителя высококачественного звуковоспроизведения УВЗ можно представить в виде совокупности различных модулей...
72182. Економіка підприємства: Методичні рекомендації 902 KB
  Методичні рекомендації містять стислі рекомендації до виконання курсової роботи та провідні методичні положення щодо обґрунтування прийнятих студентом рішень підвищення ефективності роботи підприємства цеху виходячи з заданих економічних умов вимоги до курсової роботи порядок її виконання.
72183. Культура мови: навчально-методичний посібник 1.6 MB
  Навчально-методичний посібник містить методичні рекомендації до самостійної роботи, методичні рекомендації до практичних занять, до виконання індивідуальних завдань, підсумковий контроль, список рекомендованої літератури.