{.Stop();(MyObject.Write(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text) == true) // Передача введенной информации методу Write главного объекта.
{.Work();(MyObject.Read() == "NaN")
{.Text = "Ответ:\r\nI2= 0 В";
}.Text = "Ответ:\r\nI2=" + MyObject.Read() + " В"; // Вывод результата вычислений через текстбокс.
}
}.Visible = true;
}
void очиститьToolStripMenuItem_Click(object sender, EventArgs e)
{.Text = "";.Text = "";.Text = "";.Text = "";.Text = "";.Text = "";.Text = "";.Text = "";.Text = "Ответ:";.Text = "";.Enabled = false;.Enabled = false;
}void findbutt_Click(object sender, EventArgs e)
{.Find(Search.Text);
}void Search_KeyPress(object sender, KeyPressEventArgs e)
{(Char.IsDigit(e.KeyChar) || e.KeyChar == (char)008)// Допускается ввод {0123456789}, "," и клавиши Backspace
{
}
{.Show("Допустимые знаки этого поля: \r\n{0123456789}", "Предупреждение");.Handled = true;// Неправильный символ не будет вводиться в TextBox.
}
}void answer_Click(object sender, EventArgs e)
{
}void правкаToolStripMenuItem_Click(object sender, EventArgs e)
{
}void filebox_TextChanged(object sender, EventArgs e)
{
}void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
{(!MyObject.IsSaveFileName())
{.Generator(); // Определяет кол-во строк в файле..SaveToFile();
}
сохранитьКакToolStripMenuItem_Click(sender, e);
}
}void файлToolStripMenuItem_Click(object sender, EventArgs e)
{
}void Form1_FormClosing_1(object sender, FormClosingEventArgs e)
{.Stop();(MyObject.GetReady() == true)
if (MessageBox.Show("Файл не сохранён. Продолжить выход?", "ВНИМАНИЕ!",.YesNo) == DialogResult.No)//Подтверждение выхода без сохранения.Cancel = true;//Отмена процесса закрывания формы
}
}
} }.csSystem;System.Collections.Generic;System.Linq;System.Text;Dzhafarov
{
[Serializable]Data
// Поля хранят данные для записи в файл.
public double U;double R1;double R2;double R3;double R4;double R5;double R6;double I2;int Key;int i;short k;
}
}.csSystem;System.IO;System.Runtime.Serialization.Formatters.Binary;System.Windows.Forms;System.Data;Dzhafarov
{object1 // Основная часть программы
{
// Поляdouble U;double R1;double R2;double R3;double R4;double R5;double R6;double I2;string OpenFileName = ""; // имя файлаstring SaveFileName = ""; // ...bool Ready; // true - work() выполнен, false - нетint Key = 0;DateTime StartTime; // Время начала работы программы
// Методыobject1()
{.Ready = false;
}bool IsSaveFileName()// Метод, определяющий задано или нет имя для записи
{(this.SaveFileName == "") // Длина заданного имени = 0
return true;false;
}bool GetReady()// Метод позволяет получить значение флага Ready(private)
{this.Ready;
} void SetTime() // Метод записывает время включения программы в StartTime.
{.StartTime = System.DateTime.Now; // Текущее системное время.
}System.DateTime GetTime()// Считывание начального времени.
{this.StartTime;
}bool Write(string u, string r1, string r2, string r3, string r4, string r5, string r6) // Записывает в поля вводимые данные.
{((u.Length != 0) & (r1.Length != 0) & (r2.Length != 0) & (r3.Length != 0) & (r4.Length != 0)
& (r5.Length != 0) & (r6.Length != 0) ) // Если полученные данные не пусты.
{// Конвертация
{.U = System.Convert.ToDouble(u);.R1 = System.Convert.ToDouble(r1);.R2 = System.Convert.ToDouble(r2);.R3 = System.Convert.ToDouble(r3);.R4 = System.Convert.ToDouble(r4);.R5 = System.Convert.ToDouble(r5);.R6 = System.Convert.ToDouble(r6);true;
}
{.Show("Некорректные данные!", "Предупреждение");
}
}false;
} void Work() // Главный метод, находит ток на R2-R3
{= (U/((R1*(R2+R3+R4+R5))+(R6*(R2+R3+R4+R5))+((R2+R3)*(R4+R5))))*(R4+R5);= true;
} string Read() // Возвращает резульат вычисления.
{i2 = System.Convert.ToString(I2);i2;
}void WriteOpenFileName(string N) // Записывает имя открываемого файла
{.OpenFileName = N; // в поле OpenFileName
}void WriteSaveFileName(string N) // Записывает имя для сохраняемого файла
{.SaveFileName = N; // в поле SaveFileName
}
// Работа с файламиvoid SaveToFile() // Метод сохранения данных в файл.
{
//Защита(!Ready) return;(this.SaveFileName == "")
{.Show("Не задан файл для сохранения", "Ошибка");
return;
}
//Buffer object(Буферная переменная)D = new Data();
Stream S; // Потоковая переменная.
{(File.Exists(this.SaveFileName)) //Проверяем, существует ли файл на диске
{= File.Open(this.SaveFileName, FileMode.Append); //Открываем файл с этим именем в режиме дополнения
// Сохранение данных..Key = this.Key + 1; // Ключ.
D.U = this.U;.R1 = this.R1;.R2 = this.R2;.R3 = this.R3;.R4 = this.R4;.R5 = this.R5;.R6 = this.R6;.I2 = this.I2;
}
{= File.Open(this.SaveFileName, FileMode.Create); //Создание нового файла// Сохранение данных.= 0;.Key = this.Key + 1; // Ключ..U = this.U;.R1 = this.R1;.R2 = this.R2;.R3 = this.R3;.R4 = this.R4;.R5 = this.R5;.R6 = this.R6;.I2 = this.I2;
}BF = new BinaryFormatter();.Serialize(S, D); // Сериализация..Close();.Ready = false;
}
{.Show("Произошла ошибка при работе с файлом!", "ОШИБКА!");
}
}string ReadFromFile() // Метод чтения из файла.
{((this.OpenFileName == null) || (this.OpenFileName == ""))
{"Error";
}= 0;
{(File.Exists(this.OpenFileName)) // Если задано имя открываемого файла.
{S;D = new Data();O;BF = new BinaryFormatter();= File.Open(this.OpenFileName, FileMode.Open); // Открытие файла в поток.temp = "", one = "";(S.Position < S.Length) // Пока поток читается
{= BF.Deserialize(S); // Поток десериализуется и записывается в O.
D = O as Data;(D == null) break;
// Формирование string переменной с данными из файла.+= 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";++;
}.Close();temp; // Возвращение сформированных данных.
}"Error";
}
{.Show("Невозможно прочесть файл.", "Ошибка накопителя");
return "Error";
} // Read from file.void Find(string numS) // Поиск строки внутри файла.
{numI = 0;
{= Convert.ToInt16(numS);((this.OpenFileName == null) || (this.OpenFileName == ""))
{;
}
{(File.Exists(this.OpenFileName))
{S;D = new Data();O;BF = new BinaryFormatter();= File.Open(this.OpenFileName, FileMode.Open);(S.Position < S.Length)
{= BF.Deserialize(S);= O as Data;(D == null) break;(numI == D.Key)
{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;.Show("Искомая строка найдена:\r\n"+temp);.Close();;
}
}
.Close();
MessageBox.Show("Строка отсутсвует", "Результат поиска");
}
}
{.Show("Невозможно прочесть файл.", "Ошибка накопителя");
}
}
{.Show("Номер задан некорректно", "Ошибка");
}
}void Generator() // Генератор значения ключевого поля.
{((this.SaveFileName == null) || (this.SaveFileName == ""))
{;
}
{(File.Exists(this.SaveFileName))
{S;D = new Data();O;BF = new BinaryFormatter();= File.Open(this.SaveFileName, FileMode.Open);= 0;(S.Position < S.Length)
{= BF.Deserialize(S);= O as Data;(D == null) break;++;
}.Close();
}
}
{.Show("Невозможно прочесть файл.", "Ошибка накопителя");
}
}bool Write(string p, string p_2, string p_3, string p_4, string p_5, string p_6)
{new NotImplementedException();
}bool Status()
{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» осуществляется выход из программы.
ЗАКЛЮЧЕНИЕ
возможности языка. Программа создаёт удобное пользователю окно Windows-приложения, в котором и осуществляется работа. Создание окна приложения значительно облегчается удобной для разработки средой MS Visual Studio, которая создаёт каркас приложения и при помощи специального окна визуализирует процесс построения формы.
Весьма удобными и возможными в C# являются и возможность работы с файлами. Современное программное обеспечение просто немыслимо без сохранения данных на различные носители и является важнейшей задачей программиста. C# обладает набором классов, которые позволяют программисту организовать работу с сохраняемыми и сохранёнными данными нужным ему образом.
С# является весьма перспективным языком с
огромным потенциалом и широкой сферой применения - от создания простейших
консольных приложений и до построения многозадачных Web- и Windows-приложений.
СПИСОК ЛИТЕРАТУРЫ
Герберт Шилдт «Полный справочник по C#», 2011. - 752 с.
К.Нейгел, Б.Ивьен, Д.Глинн, М.Скиннер, К.Уотсон «C# 2009 и платформа .NET 3.0 для профессионалов».
Эндрю Троелсен «C# и платформа .NET», 2010. - 752 с.
В.В.
Лабор «C#. Создание приложений для Windows».
ПРИЛОЖЕНИЕ А
БЛОК-СХЕМЫ АЛГОРИТМОВ


