Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

Программные средства систем управления

Работа добавлена на сайт samzan.ru: 2016-03-13


PAGE   \* MERGEFORMAT 1

EMBED Visio.Drawing.11

                                                                                       

КУРСОВАЯ   РАБОТА

по курсу «Программные средства систем управления»


Содержание

Реферат

Введение ……..…………………………………………………………..…….3                                                                                 Техническое задание…..……………………………………...……………….4

Описание программы…………………...……………..……………..………..7

Описание методов…………………………………………………………….9

Текст программы…………………………………………….….….…………12 Методика испытаний……………………………….…….…………………..20

Руководство оператора………………………………………..……………...23

Список литературы……………………………………………………………26

Заключение

Список литературы

Приложения

РЕФЕРАТ

Пояснительная записка к курсовой работе содержит: 40с.

Цель проекта – обрести и закрепить практические навыки по разработке программных продуктов с использованием современных инструментальных средств программирования и отладки, в частности с использованием среды разработки Visual Studio.Net 2008. Кроме того цель работы включает в себя изучение требований ЕСПД по оформлению программной документации.

В курсовом проекте рассмотрен программный продукт с прилагающийся программной документацией для работ с файлами и текстом (строками).

Программа реализована на языке С#, с использованием программного пакета Microsoft Visual Studio 2008. Она реализует различные операции над строковыми типами данных, а также методы их обработки для получения заданных в задании результатов. Так же реализованы операции работы с файлами.

В пояснительной записке описаны такие разделы программной документации как: техническое задание, руководство оператору, методика испытаний и описание программы в соответствии с существующей системой ГОСТов.

С клавиатуры можно вводить только цифры,запятые,и только в строке «U» добавлен знак «-» минус. Сохранение рабочих данных реализовано методами сериализации, а также создан поисковый механизм строки по номеру.

ВВЕДЕНИЕ

Язык С# создан компанией Microsoft для поддержки среды .NET Framework и опирается на богатое наследие в области программирования. Его главным архитектором был ведущий специалист в этой области – Андерс Хейлсберг.  C# - прямой потомок двух самых успешных в мире компьютерных языков: С и С++. От С он унаследовал синтаксис, ключевые слова и операторы. Он позволяет построить и усовершенствовать объектную модель, определённую в С++. Также С# близко связан с языком Java. В состав его элементов включены такие понятия как делегаты (представители), свойства, индексаторы и события. Также добавлен синтаксис, который поддерживает атрибуты; упрощено создание компонентов за счёт исключения проблем связанных с СОМ (Component Object Model). C# предлагает  средства динамического обнаружения ошибок, обеспечения безопасности и управляемого выполнения программ, дает программистам доступ к указателям. Таким образом, С# сочетает первозданную мощь С++ с типовой безопасностью Java, которая обеспечивается наличием механизма контроля типов (type checking) и корректным использованием шаблонных классов (template class). Более того, язык С# отличается тем, что компромисс между мощью и надёжностью тщательно сбалансирован и практически прозрачен (не заметен для пользователя или программы).

В настоящее время язык С# считается одним из мощнейших языков и его усовершенствование не прекращается.

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Данная курсовая работа представляет собой программную реализацию для курсового задания по разработке программы, реализующей работу с текстом и сохранением данных в файл.

Программа должна вычислить ток на участке цепи R2-R3 с заданными пользователем данными.

ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

Задание на выполнение курсового проекта выдано кафедрой «Автоматика и управление в технических системах».

НАЗНАЧЕНИЕ РАЗРАБОТКИ

Данный программный продукт должен обеспечить пользователю удобную работу с данными, сохранение и считывание данных из файла.

ТРЕБОВАНИЯ К ПРОГРАММНОМУ ПРОДУКТУ

  1.  Функциональные характеристики

Программа должна осуществлять работу с данными на пользовательском уровне и иметь удобный интерфейс.

Входными данными являются цифровые значения. Результатом обработки данных является вывод цифровых вычислений. На основе введённых записей должен формироваться типизированный файл данных.

Должна быть предусмотрена возможность просмотра существующего файла, а также создание и запись данных в новый файл.

При вводе данных на обработку должны быть предусмотрены варианты работы в некорректных ситуациях, а именно:

  •  Ввод неправильных символов;
  •  Сортировка и сохранение результатов с указанным пользователем расширением;
  •  Возможность просмотра всех входных данных;
  •  Осуществление поиска по номеру сохранённой записи из файла.
  1.  Условия эксплуатации

Для нормальной эксплуатации программы необходим оператор со знанием ПК.

  1.  Состав и параметры технических средств

Программа рассчитана на использование в среде Windows. Минимальные требования к ПК определяются требованиями операционной системы, обязательно наличие устройства ввода данных (клавиатура), устройство управления (мышь) и устройство отображения информации (монитор). Минимальный объем свободного места на дисковом накопителе – 3мБ.

  1.  Информационная и программная совместимость.

Программный продукт должен функционировать в операционной системе Windows XP, и написан на языке С#.

ПРОГРАММНАЯ ДОКУМЕНТАЦИЯ

К разрабатываемому продукту должны прилагаться следующие программные документы:

  •  спецификация;
  •  техническое задание;
  •  описание программы;
  •  текст программы;
  •  руководство оператора;
  •  методика испытаний;

СТАДИИ И ЭТАПЫ РАЗРАБОТКИ

Жизненный цикл программного средства состоит из двух стадий: стадии разработки и стадии эксплуатации. Стадия разработки программного средства включает в себя следующие этапы:

  •  получение исходной информации;
  •  проектирование алгоритмов;
  •  кодирование программы;
  •  тестирование и отладка программы;
  •  оформление программной документации.

ОПИСАНИЕ ПРОГРАММЫ

Данная программа позволяет записать входные данные и полученный результат в типизированный файл. При этом можно как создать новый файл, так и сделать запись в уже существующий. Все записи в файлах нумеруются по порядку. Программой предоставляется возможность поиска сохраненных данных по номеру ключевого поля. Предусмотрена также проверка на корректность вводимых символов: разрешается ввод только латинских букв, запятой и точки, при этом ввод других символов исключён програмно.

Структура данных в файле состоит из номера ключевого поля, входных данных и результата. Файл типизирован, то есть состоит из множества одинаковых по структуре записей.

ОБЩИЕ СВЕДЕНИЯ

  1.  Наименование программного продукта:

«Разработка программы реального времени».

  1.  Программное обеспечение

Для нормального функционирования программы необходим ПК с операционной системой Windows XP/Windows 7.

  1.  Язык программирования

Программа была написана на языке программирования С# в среде Microsoft Visual Studio 2008.

ФУНКЦИОНАЛЬНОЕ НАЗНАЧЕНИЕ

Программа должна осуществлять работу с данными на пользовательском уровне. Для работы необходимо иметь файл с записями. Запись должна состоять из:

  1.  номера ключевого поля файла;
  2.  входных данных;
  3.  результата.

СВЯЗИ С ДРУГИМИ ПРОГРАММАМИ

Программа полностью автономна, а, следовательно, необходимость в использовании её в комплексе с другими программами отсутствует.

ИСПОЛЬЗУЕМЫЕ ТЕХНИЧЕСКИЕ СРЕДСТВА

Функционирование программы целиком обеспечивается стандартной конфигурацией системы персональных ЭВМ с двуядерным процессором 2Ггц. Для эксплуатации программы необходимо запустить исполняемый файл «Dzhafarov.exe». При запуске программа перейдёт в диалоговый режим работы.

ВХОДНЫЕ ДАННЫЕ

Входными данными в программе являются цифровые значения резисторов и напряжения(напряжение можно задать как положительное так и отрицательное)введённые с клавиатуры.

ВЫХОДНЫЕ ДАННЫЕ

Выходными данными является: вычисления тока на участке цепи R2-R3, определённые по формуле: 

I2 = (U/((R1*(R2+R3+R4+R5))+(R6*(R2+R3+R4+R5))+((R2+R3)*(R4+R5))))*(R4+R5) – в виде цифровых данных.

ОПИСАНИЕ МЕТОДОВ

private void button1_Click(object sender, EventArgs e)

Эта процедура, в зависимости от режима работы определяет активность компонента ввода. Также из этой подпрограммы осуществляется вызов процедуры обработки вводимых данных.

private void timer1_Tick (object sender, EventArgs e)

Эта процедура – таймер, который осуществляет контроль интервала времени между вводом символов.

private void Form1_Load(object sender, EventArgs e)

Эта процедура осуществляет вызов диалогового окна About. Также предоставляет информацию о дисковых накопителях.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

 Эта процедура активизирует таймер для контроля интервала времени между вводом символов. Также с помощью этой функции происходит контроль правильности ввода символов и ограничение количества ввода символов.

private void Form1_FormClosed(object sender, FormClosedEventArgs e)

Метод показывает время работы программы после закрытия основной формы.

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

Эта процедура закрывает основную форму при нажатии пункта меню Файл «Выход».

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

При выборе пункта меню  «О программе» открывается форма приветствия.

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

При выборе пункта меню «Сохранить как…» из этой процедуры происходит вызов процедуры  sfdSave.FileName,  которая позволяет записать имя файла для сохранения.

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

Если выбран пункт меню Файл «Открыть», то происходит считывание данных из выбранного файла.

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

Эта процедура осуществляет запись данных в файл, если имя файла уже было задано, и вызов процедуры сохранитьКакToolStripMenuItem_Click(sender, e), если имя не задано.

private void FMain_FormClosing(object sender, FormClosingEventArgs e)

Процедура проверки сохранения данных программы перед её закрытием.

private void НакопителяхToolStripMenuItem_Click(object     sender, EventArgs e)

При нажатии на пункт меню «Накопители» выводится окно с информацией о состоянии дисков.

public bool Write(string text)

Метод записи данных, введенных пользователем, в объект.

public string Read()

Метод считывания результата.

public void Work()

Метод, который выполняет основную задачу, поставленную перед программистом.

public void SetTime()

Метод записи начала работы программы.

public GetTime()

Метод возвращения времени начала работы программы.

public void SaveToFile()

Эта процедура производит запись данных в файл.

public void WriteSaveFileName(string N)

Метод записи имени файла в соответствующий номер.

public void ReadFromFile(System.Windows.Forms.DataGridView DGV)

Эта процедура переносит данные  из файла в ячейку вывода данных.

public void Find(string N)

Этот метод совершает поиск строки по заданному пользователем номеру ключевого поля.

public void Generator()

Метод генератора ключевого поля.

ТЕКСТ ПРОГРАММЫ

About.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Dzhafarov

{

   public partial class About : Form

   {

       public About()

       {

           InitializeComponent();

       }

       private void timer1_Tick(object sender, EventArgs e)

       {

           Close();

       }

   }

}

Form1.cs

using System;

using System.Windows.Forms;

using System.Drawing;

using System.IO;

namespace Dzhafarov

{

   public partial class Form1 : Form

   {

       private object1 MyObject; // Основной объект

       private bool click = false;

       public Form1()

       {

           InitializeComponent();

       }

       // При закрытии программы.

 private void fMain_FormClosed(object sender, FormClosedEventArgs e)

       {

           string S;

           TimeSpan wtime;

           wtime = System.DateTime.Now - MyObject.GetTime(); // Время работы программы.

           S = "Время работы программы: " + wtime.Hours.ToString().PadLeft(2, '0') + ":" + wtime.Minutes.ToString().PadLeft(2, '0') + ":" + wtime.Seconds.ToString().PadLeft(2, '0') + (char)13;// Вычисление времени работы программы и перевод времени в формат строки.

           MessageBox.Show(S, "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);

       }

       

       private void Form1_Load(object sender, EventArgs e)

       {

           MyObject = new object1();

           MyObject.SetTime(); // Вызывается метод SetTime

           About A = new About();

           A.timer1.Start();

           A.ShowDialog(); // Отображение формы About

       }

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

       {

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

           {

               MyObject.WriteOpenFileName(ofdOpen.FileName);

               MyObject.WriteSaveFileName(ofdOpen.FileName);

               filebox.Text = MyObject.ReadFromFile();

               Search.Enabled = true;

               findbutt.Enabled = true;

           }  

       }

       private void timer1_Tick(object sender, EventArgs e) // Основной таймер (5 сек)

       {

           timer1.Stop();

       }

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

       {

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

           {

               {

                   MyObject.WriteSaveFileName(sfdSave.FileName);

                   MyObject.Generator(); // Определяет кол-во строк в файле.

                   MyObject.SaveToFile();

               }

           }   

       }

       

       private void выходToolStripMenuItem_Click(object sender, EventArgs e)

       {

           Close();

       }

       private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

       {

           About A = new About();

           A.ShowDialog();

       }

       private void сведенияОНакопителяхToolStripMenuItem_Click(object sender, EventArgs e)

       {

           string[] discs = System.IO.Directory.GetLogicalDrives(); // Получает сведения о накопителях.

           string d = "";

           for (int i = 0; i < discs.Length; i++)

           {

               try

               {

                   DriveInfo d1 = new DriveInfo(discs[i]);

                   d += d1.Name + "  " + d1.TotalSize.ToString() + "  " + d1.TotalFreeSpace.ToString() + (char)13; // Формирование необходимых сведений о конкретном накопителе.

               }

               catch

               {

                   d += "Диск " + i + " не готов!" + (char)13;

               }

           }

           MessageBox.Show(d, "Сведения");

       }

       private void Form1_FormClosed(object sender, FormClosedEventArgs e) // При закрытии программы

       {

           string S;

           TimeSpan wtime;

           wtime = System.DateTime.Now - MyObject.GetTime(); // Время работы программы.

           S = "Время работы программы: " + wtime.Hours.ToString().PadLeft(2, '0') + ":" + wtime.Minutes.ToString().PadLeft(2, '0') + ":" + wtime.Seconds.ToString().PadLeft(2, '0') + (char)13;// Вычисление времени работы программы и перевод времени в формат строки.

           MessageBox.Show(S, "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Information);

       }

       private void button1_Click(object sender, EventArgs e)

       {

           if (click == false)

           {

               timer1.Start();

               button1.Text = "Сброс";

               textBox1.Enabled = true;

               textBox2.Enabled = true;

               textBox3.Enabled = true;

               textBox4.Enabled = true;

               textBox5.Enabled = true;

               textBox6.Enabled = true;

               textBox7.Enabled = true;

               click = true;

           }

           else

           {

               timer1.Stop();

               button1.Text = "Ввести";

               label9.Visible = false;

               textBox1.Text = "";

               textBox2.Text = "";

               textBox3.Text = "";

               textBox4.Text = "";

               textBox5.Text = "";

               textBox6.Text = "";

               textBox7.Text = "";

               

               answer.Text = "Ответ:";

               textBox1.Enabled = false;

               textBox2.Enabled = false;

               textBox3.Enabled = false;

               textBox4.Enabled = false;

               textBox5.Enabled = false;

               textBox6.Enabled = false;

               textBox7.Enabled = false;

               

               click = false;

           }

       }

       private void timer1_Tick_1(object sender, EventArgs e)

       {

           if (textBox1.Text != "" & textBox2.Text != "" & textBox3.Text != "" & textBox4.Text != ""

                & textBox5.Text != "" & textBox6.Text != "" & textBox7.Text != "")

           {

               timer1.Stop();

           }

           else

           {

               label9.Visible = true;

           }

       }

       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)045 || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, ",", "-" и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,-}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox2_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox3_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox4_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox5_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox6_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox7_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void textBox8_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008 || e.KeyChar == (char)044)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

               label9.Visible = false;

               timer1.Stop();

               timer1.Start();

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789,}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void button2_Click(object sender, EventArgs e)

       {

           if (textBox1.Text != "" & textBox2.Text != "" & textBox3.Text != "" & textBox4.Text != ""

                & textBox5.Text != "" & textBox6.Text != "" & textBox7.Text != "")

           {

               timer1.Stop();

               if (MyObject.Write(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text) == true) // Передача введенной информации методу Write главного объекта.

               {

                   MyObject.Work();

                   if (MyObject.Read() == "NaN")

                   {

                       answer.Text = "Ответ:\r\nI2= 0 В";

                   }

                   else

                       answer.Text = "Ответ:\r\nI2=" + MyObject.Read() + " В"; // Вывод результата вычислений через текстбокс.

               }

           }

           else

               label9.Visible = true;

       }

       private void очиститьToolStripMenuItem_Click(object sender, EventArgs e)

       {

           textBox1.Text = "";

           textBox2.Text = "";

           textBox3.Text = "";

           textBox4.Text = "";

           textBox5.Text = "";

           textBox6.Text = "";

           textBox7.Text = "";

           

           filebox.Text = "";

           answer.Text = "Ответ:";

           Search.Text = "";

           Search.Enabled = false;

           findbutt.Enabled = false;

       }

       private void findbutt_Click(object sender, EventArgs e)

       {

           MyObject.Find(Search.Text);

       }

       private void Search_KeyPress(object sender, KeyPressEventArgs e)

       {

           if (Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008)// Допускается ввод {0123456789}, "," и клавиши Backspace

           {

           }

           else

           {

               MessageBox.Show("Допустимые знаки этого поля: \r\n{0123456789}", "Предупреждение");

               e.Handled = true;// Неправильный символ не будет вводиться в TextBox.

           }

       }

       private void answer_Click(object sender, EventArgs e)

       {

       }

       private void правкаToolStripMenuItem_Click(object sender, EventArgs e)

       {

       }

       private void filebox_TextChanged(object sender, EventArgs e)

       {

       }

     

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

       {

           {

               if (!MyObject.IsSaveFileName())

               {

                   MyObject.Generator(); // Определяет кол-во строк в файле.

                   MyObject.SaveToFile();

               }

               else

                   сохранитьКакToolStripMenuItem_Click(sender, e);

           }

       }

       private void файлToolStripMenuItem_Click(object sender, EventArgs e)

       {

       }

       

       private void Form1_FormClosing_1(object sender, FormClosingEventArgs e)

       {

           timer1.Stop();

           if (MyObject.GetReady() == true)

               if (MessageBox.Show("Файл не сохранён. Продолжить выход?", "ВНИМАНИЕ!",

                   MessageBoxButtons.YesNo) == DialogResult.No)//Подтверждение выхода без сохранения

                   e.Cancel = true;//Отмена процесса закрывания формы

       }

   }

}        }

Data.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Dzhafarov

{

   [Serializable]

   class Data

   {

       // Поля хранят данные для записи в файл.

       public double U;

       public double R1;

       public double R2;

       public double R3;

       public double R4;

       public double R5;

       public double R6;

       public double I2;

       public int Key;

       public int i;

       public short k;

   }

}

Object1.cs

using System;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using System.Windows.Forms;

using System.Data;

namespace Dzhafarov

{

   class object1 // Основная часть программы

   {

       // Поля

       private double U;

       private double R1;

       private double R2;

       private double R3;

       private double R4;

       private double R5;

       private double R6;

       private double I2;

       private string OpenFileName = ""; // имя файла

       private string SaveFileName = ""; // ...

       private bool Ready; // true - work() выполнен, false - нет

       private int Key = 0;

       private DateTime StartTime; // Время начала работы программы

       // Методы

       public object1()

       {

           this.Ready = false;

       }

       public bool IsSaveFileName()// Метод, определяющий задано или нет имя для записи

       {

           if (this.SaveFileName == "") // Длина заданного имени = 0

               return true;

           else

               return false;

       }

       public bool GetReady()// Метод позволяет получить значение флага Ready(private)

       {

           return this.Ready;

       }

       public void SetTime() // Метод записывает время включения программы в StartTime.

       {

           this.StartTime = System.DateTime.Now; // Текущее системное время.

       }

       public System.DateTime GetTime()// Считывание начального времени.

       {

           return this.StartTime;

       }

       public bool Write(string u, string r1, string r2, string r3, string r4, string r5, string r6) // Записывает в поля вводимые данные.

       {

           if ((u.Length != 0) & (r1.Length != 0) & (r2.Length != 0) & (r3.Length != 0) & (r4.Length != 0)

               & (r5.Length != 0) & (r6.Length != 0) ) // Если полученные данные не пусты.

           {

                   try // Конвертация

                   {

                       this.U = System.Convert.ToDouble(u);

                       this.R1 = System.Convert.ToDouble(r1);

                       this.R2 = System.Convert.ToDouble(r2);

                       this.R3 = System.Convert.ToDouble(r3);

                       this.R4 = System.Convert.ToDouble(r4);

                       this.R5 = System.Convert.ToDouble(r5);

                       this.R6 = System.Convert.ToDouble(r6);

                      

                       return true;

                   }

                   catch

                   {

                       MessageBox.Show("Некорректные данные!", "Предупреждение");

                   }

           }

           return false;

       }

       public void Work() // Главный метод, находит ток на R2-R3

       {

           I2 = (U/((R1*(R2+R3+R4+R5))+(R6*(R2+R3+R4+R5))+((R2+R3)*(R4+R5))))*(R4+R5);

           Ready = true;

       }

       public string Read() // Возвращает резульат вычисления.

       {

           string i2 = System.Convert.ToString(I2);

           return i2;

       }

       public void WriteOpenFileName(string N) // Записывает имя открываемого файла

       {

           this.OpenFileName = N;              // в поле OpenFileName

       }

       public void WriteSaveFileName(string N) // Записывает имя для сохраняемого файла

       {

           this.SaveFileName = N;              // в поле SaveFileName

       }

       // Работа с файлами

       public void SaveToFile() // Метод сохранения данных в файл.

       {

           //Защита

           if (!Ready) return;

           if (this.SaveFileName == "")

           {

               MessageBox.Show("Не задан файл для сохранения", "Ошибка");

               return;

           }

           

           //Buffer object(Буферная переменная)

           Data D = new Data();

           

           Stream S; // Потоковая переменная.

           try

           {

               if (File.Exists(this.SaveFileName)) //Проверяем, существует ли файл на диске

               {

                   S = File.Open(this.SaveFileName, FileMode.Append); //Открываем файл с этим именем в режиме дополнения

                   // Сохранение данных.

                   D.Key = this.Key + 1; // Ключ.

                   D.U = this.U;

                   D.R1 = this.R1;

                   D.R2 = this.R2;

                   D.R3 = this.R3;

                   D.R4 = this.R4;

                   D.R5 = this.R5;

                   D.R6 = this.R6;

                   

                   D.I2 = this.I2;

               }

               else

               {

                   S = File.Open(this.SaveFileName, FileMode.Create); //Создание нового файла// Сохранение данных.

                   Key = 0;

                   D.Key = this.Key + 1; // Ключ.

                   D.U = this.U;

                   D.R1 = this.R1;

                   D.R2 = this.R2;

                   D.R3 = this.R3;

                   D.R4 = this.R4;

                   D.R5 = this.R5;

                   D.R6 = this.R6;

                   

                   D.I2 = this.I2;

               }

               BinaryFormatter BF = new BinaryFormatter();

               BF.Serialize(S, D); // Сериализация.

               S.Close();

               this.Ready = false;

           }

           catch

           {

               MessageBox.Show("Произошла ошибка при работе с файлом!", "ОШИБКА!");

           }

       }

       public string ReadFromFile() // Метод чтения из файла.

       {

           if ((this.OpenFileName == null) || (this.OpenFileName == ""))

           {

               return "Error";

           }

           Key = 0;

           try

           {

               if (File.Exists(this.OpenFileName)) // Если задано имя открываемого файла.

               {

                   Stream S;

                   Data D = new Data();

                   object O;

                   BinaryFormatter BF = new BinaryFormatter();

                   S = File.Open(this.OpenFileName, FileMode.Open); // Открытие файла в поток.

                   string temp = "", one = "";

                   while (S.Position < S.Length) // Пока поток читается

                   {

                       O = BF.Deserialize(S); // Поток десериализуется и записывается в O.

                       D = O as Data;

                       if (D == null) break;

                       // Формирование string переменной с данными из файла.

                       temp += one + D.Key + ". Входные данные: "+"U="+D.U+", R1="+D.R1+", R2="+D.R2+", R3="+D.R3+", R4="+D.R4+

                           ", R5="+D.R5+", R6="+D.R6+"\r\nРезультат: I2="+D.I2;

                       one = "\r\n\r\n";

                       Key++;

                   }

                   S.Close();

                   return temp; // Возвращение сформированных данных.

               }

               return "Error";

           }

           catch

           {

               MessageBox.Show("Невозможно прочесть файл.", "Ошибка накопителя");

               return "Error";

           }

       } // Read from file.

       public void Find(string numS) // Поиск строки внутри файла.

       {

           int numI = 0;

           try

           {

               numI = Convert.ToInt16(numS);

               if ((this.OpenFileName == null) || (this.OpenFileName == ""))

               {

                   return;

               }

               try

               {

                   if (File.Exists(this.OpenFileName))

                   {

                       Stream S;

                       Data D = new Data();

                       object O;

                       BinaryFormatter BF = new BinaryFormatter();

                       S = File.Open(this.OpenFileName, FileMode.Open);

                       while (S.Position < S.Length)

                       {

                           O = BF.Deserialize(S);

                           D = O as Data;

                           if (D == null) break;

                           if (numI == D.Key)

                           {

                               string temp = "";

                               temp = D.Key + ". Входные данные: " + "U=" + D.U + ", R1=" + D.R1 + ", R2=" + D.R2 + ", R3=" + D.R3 + ", R4=" + D.R4 +

                       ", R5=" + D.R5 + ", R6=" + D.R6 + "\r\nРезультат: I2=" + D.I2;

                               MessageBox.Show("Искомая строка найдена:\r\n"+temp);

                              

S.Close();

                              

 return;

                           }

                       }

                       

S.Close();

                       

MessageBox.Show("Строка отсутсвует", "Результат поиска");

                   }

               }

               catch

               {

                   MessageBox.Show("Невозможно прочесть файл.", "Ошибка накопителя");

               }

           }

           catch

           {

               MessageBox.Show("Номер задан некорректно", "Ошибка");

           }

       }

       public void Generator() // Генератор значения ключевого поля.

       {

           if ((this.SaveFileName == null) || (this.SaveFileName == ""))

           {

               return;

           }

           try

           {

               if (File.Exists(this.SaveFileName))

               {

                   Stream S;

                   Data D = new Data();

                   object O;

                   BinaryFormatter BF = new BinaryFormatter();

                   S = File.Open(this.SaveFileName, FileMode.Open);

                   Key = 0;

                   while (S.Position < S.Length)

                   {

                       O = BF.Deserialize(S);

                       D = O as Data;

                       if (D == null) break;

                       Key++;

                   }

                   S.Close();

               }

           }

           catch

           {

               MessageBox.Show("Невозможно прочесть файл.", "Ошибка накопителя");

           }

       }

       internal bool Write(string p, string p_2, string p_3, string p_4, string p_5, string p_6)

       {

           throw new NotImplementedException();

       }

       public bool Status()

   {

       return this.Ready;

       }

       

   }// Окончание (граница класса).

}

МЕТОДИКА ИСПЫТАНИЙ

1.Запуск  программы.

Выводятся сведения о разработчике и поставленной задаче.

2.Нажатие клавиши «Ввести:»

Активируется поле ввода данных, где можно вводить данные в одну из колонок:

U,R1,R2,R3,R4,R5,R6.

Входные данные: 0 1 2 3 4 5 6 7 8 9

3.Ввод запятой.

Позволяет вводить нецелые числа.

4.Пользователь вводит запрещённый символ либо букву в колонки R1,R2,R3,R4,R5,R6.

Вывод сообщения:   «Допустимые знаки этого поля:{0123456789,}»

5.Пользователь вводит запрещённый символ либо букву в колонку «U».

Вывод сообщения:   «Допустимые знаки этого поля:{0123456789,-}»

6.Если не вводить данные в течении 5сек.

Вывод сообщения: «ВВЕДИТЕ ДАННЫЕ ДЛЯ РАСЧЁТА!!!»

7.Выбор пункта меню «Сохранить как…».

Появляется диалоговое окно, в котором можно указать имя файла с указанным расширением.

8.Выбор пункта меню «Открыть».

Появляется диалоговое окно, в котором можно выбрать файл для загрузки. В открытом файле отображаются его содержимое.

9.Нажатие на кнопку «Закрыть» на форме.

Программа завершает работу с формой.

10.Нажатие на кнопку «Очистить».

Очищает поле для ввода данных.

11.Пользователь нажал кнопку «Поиск» после команды «Открыть», указав номер нужного ключевого поля файла, например 1.

Вывод сообщения: «Искомая строка найдена:

1. Входные данные: U=2, R1=3, R2=2, R3=1, R4=2, R5=3, R6=2

Результат: I2=0,181818181818182

12.Пользователь ввёл отсутствующий номер ключевого поля файла.

Вывод сообщения: «Строка отсутствует».

13.Выбор пункта меню «О программе».

Выводится форма приветствия со сведениями о разработчике и поставленной задаче.

14.Выбор пункта меню «Сведения о накопителях».

Отображаются сведения о присутствующих накопителях, их полном и свободном объеме.

15.Нажатие Ctrl+Q или выбор пункта меню «Выход» без предварительного сохранения данных.

Вывод сообщения: «Данные не сохранены! Вы действительно хотите выйти?». При нажатии «Да» произойдёт выход без сохранения данных, при нажатии «Нет» данные не будут утеряны и их можно будет сохранить.

16.Выход из программы.

На экран выводится сообщение о времени работы программы, после чего происходит выход из программы.

РУКОВОДСТВО ОПЕРАТОРА

После запуска исполняемого файла Dzhafarov.exe отобразится окно приветствия, в котором указаны название программы, её задание и имя разработчика. Через 10 секунд после запуска или после нажатия на кнопку Esc, произойдёт отображение главной интерфейсной формы.

Для начала работы пользователь должен нажать кнопку «Ввести». Произойдёт активация полей для ввода данных. Пользователь получает возможность вводить цифры.

После завершения корректного ввода необходимо нажать кнопку «Решить» и программа подсчитает ток ,I2, на участке цепи R2-R3. Результат обработки отобразится ниже в поле вывода данных: «Ответ».

Если в процессе набора входных данных была нажата не цифра, появится сообщение:  «Допустимые знаки этого поля:{0123456789,-}».

Для сохранения результата и данных, которые были введены с клавиатуры, необходимо в меню «Файл» выбрать пункт «Сохранить как». Появится стандартное для Windоws диалоговое окно выбора файла для сохранения, после чего данные запишутся в указанный файл.

Для отображения ранее сохранённых в файл данных необходимо выбрать пункт меню «Открыть». Появится стандартное для Windоws диалоговое окно выбора файла для открытия. После выбора файла его содержимое отобразится в специальной форме.

Существует возможность отобразить ключевые поля в файле под определённым порядковым номером. Это удобно, если сохранено большое количество данных. При открытии файла, будет предложен поиск конкретного ключевого поля и вывод программой сообщения: «Искомая строка найдена» с имеющимися в ней входными данными и результатом. В случае ввода несуществующего номера ключевого поля, появляется сообщение: «Строка отсутствует».

Завершение работы программы происходит при выборе пункта меню «Выход», если вы не сохраняли файл в процессе работы, то программа выведет на экран сообщение: «Данные не сохранены! Вы действительно хотите выйти?» при нажатии кнопки «Нет» программа продолжит работу, а при нажатии кнопки «Да» программа продолжит выход выведет сообщение указывающее время работы программы и при нажатии кнопки «Ok» осуществляется выход из программы.

ЗАКЛЮЧЕНИЕ

В данном курсовом проекте создана программа на языке C#, которая вычисляет ток на участке цепи R2-R3.

В этой программе реализованы различные возможности языка.  Программа создаёт удобное пользователю окно Windows-приложения, в котором и осуществляется работа. Создание окна приложения значительно облегчается удобной для разработки средой MS Visual Studio, которая создаёт каркас приложения и при помощи специального окна визуализирует процесс построения формы.

Весьма удобными и возможными в C# являются и возможность работы с файлами. Современное программное обеспечение просто немыслимо без сохранения данных на различные носители и является важнейшей задачей программиста. C# обладает набором классов, которые позволяют программисту организовать работу с сохраняемыми и сохранёнными данными нужным ему образом.

С# является весьма перспективным языком с огромным потенциалом и широкой сферой применения – от создания простейших консольных приложений и до построения многозадачных Web- и Windows-приложений.

СПИСОК ЛИТЕРАТУРЫ

  1.  Герберт Шилдт «Полный справочник по C#», 2011. – 752 с.
  2.  К.Нейгел, Б.Ивьен, Д.Глинн, М.Скиннер, К.Уотсон «C# 2009 и платформа .NET 3.0 для профессионалов».
  3.  Эндрю Троелсен «C#  и платформа .NET», 2010. – 752 с.
  4.  В.В. Лабор «C#. Создание приложений для Windows».

ПРИЛОЖЕНИЕ А

МЕТОДИКА ИСПЫТАНИЙ

ПРИЛОЖЕНИЕ Б

БЛОК-СХЕМЫ АЛГОРИТМОВ




1. Политическая культура общества
2. ЗаданиеОбразец В каждом задании 6 вопросов
3. тематическое планирование на 20122013 учебный год Предмет- Информатика Класс- 3 Учитель- Л
4. Государственное и муниципальное управление проходят учебную экономическую преддипломную практику в о
5. тема линейных алгебраических уравнений СЛАУ вида 4
6. задание по английскому языку для 3 класса для всех УМК базовый уровень
7. Звичайні співробітники будуть зацікавлені в гарних стосунках з Вами від Вас чимало залежить
8. Реферат- Умеете ли вы общаться.html
9. Философские понятия материального и идеального
10. вариантов даны в приложении
11. тематическая; 6. Станция спортивная; 7
12. Задание 1 На рисунках а и б изобразите блоксхему установки лабораторного диализа и схему работы диализато
13. Четыре обезьяны wellnessmn Сергей Малашок КиевМосква Врачпсихотерапевт член международного клуб
14. тема имеет единственное решение в двух случаях вопервых если квадратное уравнение имеет единственное реш
15. Реферат- Учет финансовых вложений (инвестиций) и ценных бумаг
16. Формирование фонда перераспределения земель 1
17. Социально-психологическая деятельность по коррекции агрессивного поведения у подростков
18. лекціях які були записані його учнями не дійшли повністю дав визначення поезії
19. Мистическое в романе Булгакова «Мастер и Маргарита»
20. половое влечение