Лабораторная работа №2
Техническое задание на разработку программного продукта
«Запись выражения на языке С# с использованием классов»
Оглавление
Введение 3
1 Основания для разработки 3
2 Назначение разработки 3
3 Требования к программе 3
3.1 Требования к функциональным характеристикам 3
3.2 Требования к надежности 3
3.2.1 Требования к обеспечению надежного функционирования программы 3
3.2.2 Время восстановления после отказа 4
3.2.3 Отказы из-за некорректных действий оператора 4
3 Условия эксплуатации 4
3.1 Климатические условия эксплуатации 4
3.2 Требования к квалификации и численности персонала 4
3.3 Требования к составу и параметрам технических средств 4
3.4 Требования к информационной и программной совместимости 5
3.5 Требования к транспортировке и хранению 5
3.6 Специальные требования 5
4 Требования к программной документации 5
5 Технико-экономические показатели 5
6 Стадии и этапы разработки 5
7 Код программы 6
8 Тестирование программного продукта 10
9 Разработка блок-схемы 11
Список использованных источников 13
Программа «Запись и расчет выражения на языке С#» предназначена для расчета арифметического выражения на языке С#.
Основанием для разработки является задание №1, выданное 16.09.2020 доцентом кафедры «Информатика» Гуриковым С.Р.
Программный продукт «Запись и расчет выражения на языке С#» предназначен для записи и расчета арифметического выражения, представленного в формулах (1-2), на языке С# приложении Microsoft Visual Studio 2019 с использованием классов.
Пользователем программы выступает человек, которому необходимо рассчитать арифметическое выражение. Имеются возможности открытия специальных форм и использование метода корректировки данных.
Программа должна обеспечивать возможность выполнения перечисленных ниже функций:
Разработка метода function1, предназначенного для расчета формулы 1.
Разработка метода function2, предназначенного для расчета формулы 2.
Реализация метода ввода данных.
Реализация метода вывода данных.
Реализация сплэш-формы.
Использование метода корректировки данных.
Чтобы обеспечить реализацию выше указанных характеристик, необходимо разработать метод корректировки данных, не позволяющий пользователю вводить некорректные данные, а также функцию расчета арифметического выражения.
Надежное (устойчивое) функционирование программы должно быть обеспечено выполнением пользователем совокупности организационно-технических мероприятий, перечень которых приведен ниже:
1) организацией бесперебойного питания технических средств;
2) использованием лицензионного программного обеспечения;
3) регулярным выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов;
4) Использование программы в некоммерческих целях
Также программное обеспечение должно иметь:
защиту данных
обработку исключений
реализацию метода корректировки данных
реализацию спешл-формы
реализацию всех методов, описанных выше
Время восстановления после отказа, вызванного сбоем электропитания технических средств (иными внешними факторами), не фатальным сбоем (не крахом) операционной системы, не должно превышать 30-ти минут при условии соблюдения условий эксплуатации технических и программных средств.
Время восстановления после отказа, вызванного неисправностью технических средств, фатальным сбоем (крахом) операционной системы, не должно превышать времени, требуемого на устранение неисправностей технических средств и переустановки программных средств.
3.2.3 Отказы из-за некорректных действий оператора
Отказы программы возможны вследствие некорректных действий оператора (пользователя) при взаимодействии с операционной системой. Во избежание возникновения отказов программы по указанной выше причине следует обеспечить работу конечного пользователя без предоставления ему административных привилегий и использовать метод корректировки данных.
3 Условия эксплуатации
3.1 Климатические условия эксплуатации
Климатические условия эксплуатации, при которых должны обеспечиваться заданные характеристики, должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации, то есть программный продукт должен успешно функционировать при следующих параметрах:
1) температуре 0-40ºС
2) давлении равном 725-749 мм.рт.ст.
3) комфортной влажности воздуха для техники 40-60%
3.2 Требования к квалификации и численности персонала
Минимальное количество персонала, требуемого для работы программы, должно составлять не менее 1 штатной единиц — конечного пользователя программы.
3.3 Требования к составу и параметрам технических средств
Системные требования для разрабатываемого ПП следующие:
1) процессор Pentium-2.0Hz, не менее
2) оперативная память объемом, 1Гигабайт, не менее
3) 64-разрядная операционная система, процессор х64
4) Visual Studio 2010 - 2019
5) Не менее двух ядер в процессоре
6) до 210 ГБ (минимум 800 МБ) свободного места в зависимости от установленных компонентов на жестком диске
3.4 Требования к информационной и программной совместимости
Программа должна работать в операционных системах начиная с Windows XP и до Windows 10.
3.5 Требования к транспортировке и хранению
Программный продукт представлен на электронном носителе, программная документация поставляется в электронном виде.
3.6 Специальные требования
Специальные требования к данной программе не предъявляются.
4 Требования к программной документации
Предварительный состав программной документации, состав программной документации должен включать в себя:
1) техническое задание;
2) программу и методики испытаний;
3) руководство оператора;
5 Технико-экономические показатели
Экономические преимущества разработки, ориентировочная экономическая эффективность не рассчитываются. Аналогия не проводится ввиду уникальности предъявляемых требований к разработке.
6 Стадии и этапы разработки
Стадии и этапы разработки представлены на таблице 1.
Номер этапа |
Название этапа |
Срок реализации |
Отчетность |
1 |
Разработка технического задания |
16-17 сентября 2020 |
Реализация технического задания |
2 |
Разработка ядра программного продукта |
17-18 сентября 2020 |
Реализация программного продукта, описание внутренних параметров ввода и вывода данных |
3 |
Разработка алгоритмов, методов и их реализация |
18-19 сентября 2020 |
Описание алгоритмов и методов, создание программной модели, реализующей методы и алгоритмы |
4 |
Тестирование программного продукта и составление программной документации |
20-21 сентября 2020 |
Тесты, документация программного продукта |
5 |
Подготовка и передача программного продукта |
21-22 сентября 2020 |
Выполнена работа по подготовке и передаче программного продукта и программной документации в эксплуатацию |
Таблица 1 – Стадии и этапы разработки
Код программы, предназначенной для расчета формулы 1 и 2 представлен ниже:
Forms1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Второй_курс
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label3_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void label9_Click(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
this.Hide();
f.ShowDialog();
}
}
}
Forms4.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Второй_курс
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button3_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
this.Hide();
f.ShowDialog();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox1.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
textBox2.Focus();
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox2.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
textBox3.Focus();
}
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox3.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
button2.Focus();
}
private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox3.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
button2.Focus();
}
private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox3.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
button2.Focus();
}
private void textBox6_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox3.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
button2.Focus();
}
private void textBox7_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !(Char.IsControl(e.KeyChar)))
{
if (!(e.KeyChar.ToString() == "," && textBox3.Text.IndexOf(",") == -1) && !(e.KeyChar.ToString() == "-"))
e.Handled = true;
}
if (e.KeyChar.Equals((char)13))
button2.Focus();
}
private void button2_Click(object sender, EventArgs e)
{
double m, c, x, a, b, z, s;
m = Class1.Vvod(textBox1);
c = Class1.Vvod(textBox2);
x = Class1.Vvod(textBox3);
a = Class1.Vvod(textBox6);
b = Class1.Vvod(textBox7);
z = Class1.function1(x, m, c);
s = Class1.function2(x, a, b);
Class1.Vivod(textBox4, z);
Class1.Vivod(textBox5, s);
}
}
}
Forms5.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Второй_курс
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Maximum = 1000;
progressBar1.Value = 0;
for (int i = 0; i <= progressBar1.Maximum - 1; i++)
{
progressBar1.Increment(1);
label1.Text = progressBar1.Value.ToString();
label1.Refresh();
}
if (progressBar1.Value == progressBar1.Maximum)
{
timer1.Enabled = false;
Form3 f = new Form3();
this.Hide();
f.ShowDialog();
}
}
}
}
Class1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Второй_курс
{
class Class1
{
public static double function1(double x, double m, double c)
{
double z = (Math.Sin(x) / Math.Sqrt(1 + m * m * Math.Sin(x) * Math.Sin(x))) - c * m * Math.Log10(m * x);
return z;
}
public static double function2(double x, double a, double b)
{
double s = Math.Exp(-a * x) * Math.Sqrt(x + 1) + Math.Exp(-b * x) * Math.Sqrt(x + 1.5);
return s;
}
public static double Vvod(TextBox t)
{
return Convert.ToDouble(t.Text);
}
public static void Vivod(TextBox t, double v)