Розробка засобів моделювання програмного продукту

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 20.05.2015
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;

float [,] MatrixMembers;

TextBox [,] Koefficients = new TextBox [5, 5];

TextBox [] Freemembers = new TextBox [5];

public Gauss ()

{InitializeComponent (); }

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;

if (MatrixSize! = PreviousMatrixSize)

{richTextBox1. Text = "";

if (Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);

Koefficients [Row, Cell]. Dispose (); }}

for (Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);

Freemembers [Row]. Dispose (); }}

BeginXPosition = 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();

Koefficients [Row, Cell]. Width = 30;

Koefficients [Row, Cell]. Height = 30;

Koefficients [Row, Cell]. Location = new Point (45 * Row + BeginXPosition, 35 * Cell + 45);

Koefficients [Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();

Koefficients [Row, Cell]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Koefficients [Row, Cell]); } }

for (Row = 0; Row < MatrixSize; Row++)

{Freemembers [Row] = new TextBox ();

Freemembers [Row]. Width = 30;

Freemembers [Row]. Height = 30;

Freemembers [Row]. Location = new Point (265, 35 * Row + 45);

Freemembers [Row]. Name = "Textbox " + Row. ToString () + Cell. ToString ();

Freemembers [Row]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Freemembers [Row]); }

label4. Location = new Point (240, 35 * MatrixSize + 45);

richTextBox1. Location = new Point (5, 35 * MatrixSize + 65);

richTextBox1. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }

label2. Location = new Point (125 - 42,5);

Control = 1;

PreviousMatrixSize = MatrixSize; }

private void button2_Click (object sender, EventArgs e)

{for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Cell, Row]. Text = "";

Freemembers [Row]. Text = ""; }}

richTextBox1. Text = ""; }

private void Gauss_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }

private void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";

float [,] MatrixMembers = new float [MatrixSize, MatrixSize + 1];

float Value;

float [] Temp = new float [MatrixSize + 1];

string [] Description = { "Общий", "Первый", "Второй", "Третий", "Четвертый", "Пятый" };

int Iteration, IsEmptyM, IsEmptyF, Counteri, Counterj;

int Cell1, Cell2, Cell3, Cell4, Cell5, Row1, Row2, Row3, Counter;

float [] opr = new float [MatrixSize + 1];

float [] opr4 = new float [MatrixSize + 1];

float [] opr5 = new float [MatrixSize + 1];

IsEmptyM = 0;

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; } }

IsEmptyF = 0;

for (Row = 0; Row < MatrixSize; Row++)

{if (Freemembers [Row]. Text == "") IsEmptyF = 1; }

………………………………………………………….

private void button3_Click (object sender, EventArgs e)

{Process. Start (@"Метод Гаусса. docx"); }

private void Gauss_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.5 - Лістинг форми "Gauss"

Модуль "Kramer" призначений для вирішення систем лінійних рівнянь методом Крамера. Цей модуль описує окрему форму, що містить алгоритм для вирішення рівнянь різної розмірності. Лістинг форми показаний на рисунку 2.6.

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;

using System. Diagnostics;

namespace Диплом

{public partial class Kramer: Form

{int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;

TextBox [,] Koefficients = new TextBox [5, 5];

TextBox [] Freemembers = new TextBox [5];

public Kramer ()

{InitializeComponent (); }

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;

if (MatrixSize! = PreviousMatrixSize)

{richTextBox1. Text = "";

if (Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);

Koefficients [Row, Cell]. Dispose (); }}

for (Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);

Freemembers [Row]. Dispose (); }}

BeginXPosition = 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();

Koefficients [Row, Cell]. Width = 30;

Koefficients [Row, Cell]. Height = 30;

Koefficients [Row, Cell]. Location = new Point (45 * Row + BeginXPosition, 35 * Cell + 45);

Koefficients [Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();

Koefficients [Row, Cell]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Koefficients [Row, Cell]); }}

for (Row = 0; Row < MatrixSize; Row++)

{Freemembers [Row] = new TextBox ();

Freemembers [Row]. Width = 30;

Freemembers [Row]. Height = 30;

Freemembers [Row]. Location = new Point (265, 35 * Row + 45);

{

for (Row = 0; Row < MatrixSize; Row++)

{

Solution [Row] = MatrixMembers [Row, 0];

MatrixMembers [Row, 0] = FreeMembersVector [Row]; }}

if (Iteration > 0 && Iteration < MatrixSize)

{for (Row = 0; Row < MatrixSize; Row++)

{MatrixMembers [Row, Iteration - 1] = Solution [Row];

Solution [Row] = MatrixMembers [Row, Iteration];

MatrixMembers [Row, Iteration] = FreeMembersVector [Row]; }}}

if (opr5 [0]! = 0)

{for (Iteration = 1; Iteration < MatrixSize + 1; Iteration++)

{x [Iteration - 1] = opr5 [Iteration] / opr5 [0];

richTextBox1. Text += "\n\nx" + Iteration. ToString () + " = " + opr5 [Iteration]. ToString () + " / " + opr5 [0]. ToString () + " = " + Math. Round (x [Iteration - 1],

3) + "\n"; }}}}}

……………………………………………………………

else MessageBox. Show ("Заполните все поля!"); }

private void button2_Click (object sender, EventArgs e)

{for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Cell, Row]. Text = "";

Freemembers [Row]. Text = ""; }}

richTextBox1. Text = ""; }

private void Kramer_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }

private void button4_Click (object sender, EventArgs e)

{if (richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();

saveFile1. DefaultExt = "*. rtf";

saveFile1. Filter = "RTF Files|*. rtf";

if (saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName, RichTextBoxStreamType. PlainText); }}

else

{MessageBox. Show ("Нечего сохранять!"); }}

private void Kramer_FormClosed (object sender, FormClosedEventArgs e)

{MainMenu. Control [1] = 0; }

private void button3_Click (object sender, EventArgs e)

{Process. Start (@"Метод Крамера. docx"); }

private void Kramer_FormClosing (object sender, FormClosingEventArgs e)

{

DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.6 - Лістинг форми "Kramer"

Модуль "Matrix" призначений для вирішення систем лінійних рівнянь матричним методом. Цей модуль описує окрему форму, що містить алгоритм для вирішення рівнянь різної розмірності. Лістинг форми показаний на рисунку 2.7.

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;

using System. Diagnostics;

namespace Диплом

{

public partial class Matrix: Form

{

int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;

TextBox [,] Koefficients = new TextBox [5, 5];

TextBox [] Freemembers = new TextBox [5];

public Matrix ()

{InitializeComponent (); }

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{MatrixSize = comboBox1. SelectedIndex + 2;

if (MatrixSize! = PreviousMatrixSize)

{

richTextBox1. Text = "";

if (Control == 1)

{for (Row = 0; Row < PreviousMatrixSize; Row++)

{for (Cell = 0; Cell < PreviousMatrixSize; Cell++)

{this. Controls. Remove (Koefficients [Row, Cell]);

Koefficients [Row, Cell]. Dispose (); }}

for (Row = 0; Row < PreviousMatrixSize; Row++)

{this. Controls. Remove (Freemembers [Row]);

Freemembers [Row]. Dispose (); }}

BeginXPosition = 125 - ( (30 * MatrixSize + 15 * (MatrixSize - 1)) / 2);

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{Koefficients [Row, Cell] = new TextBox ();

Koefficients [Row, Cell]. Width = 30;

Koefficients [Row, Cell]. Height = 30;

Koefficients [Row, Cell]. Location = new Point (45 * Row + BeginXPosition,

35 * Cell + 45);

Koefficients [Row, Cell]. Name = "Textbox " + Row. ToString () + Cell. ToString ();

Koefficients [Row, Cell]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Koefficients [Row, Cell]); }}

for (Row = 0; Row < MatrixSize; Row++)

{

Freemembers [Row] = new TextBox ();

Freemembers [Row]. Width = 30;

Freemembers [Row]. Height = 30;

Freemembers [Row]. Location = new Point (265, 35 * Row + 45);

Freemembers [Row]. Name = "Textbox " + Row. ToString () + Cell. ToString ();

Freemembers [Row]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Freemembers [Row]); }

label4. Location = new Point (240, 35 * MatrixSize + 45);

richTextBox1. Location = new Point (5, 35 * MatrixSize + 65);

richTextBox1. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }

label2. Location = new Point (125 - 42,5);

Control = 1;

PreviousMatrixSize = MatrixSize; }

……………………………………………………………

for (j = 0; j < MatrixSize; j++)

{

richTextBox1. Text += Math. Round (A [i, j],

3). ToString () + "*" + B [j]. ToString ();

if (j! = MatrixSize - 1) richTextBox1. Text += "+"; }

richTextBox1. Text += " = " + Math. Round (x [i],

3). ToString () + "\n\n"; }}}}

else MessageBox. Show ("Заполните все поля!"); }

private void button4_Click (object sender, EventArgs e)

{

if (richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();

saveFile1. DefaultExt = "*. rtf";

saveFile1. Filter = "RTF Files|*. rtf";

if (saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName,RichTextBoxStreamType. PlainText); }}

else{MessageBox. Show ("Нечего сохранять!"); }}

private void Matrix_FormClosed (object sender, FormClosedEventArgs e)

{MainMenu. Control [2] = 0; }

private void button3_Click (object sender, EventArgs e)

{Process. Start (@"Матричный метод. docx"); }

private void Matrix_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (result == DialogResult. No)

{

e. Cancel = true; }}}}

Рисунок 2.7 - Лістинг форми "Matrix"

Модуль "Determinant" призначений для знаходження визначника матриці. Цей модуль описує окрему форму, що містить алгоритм для знаходження визначника матриць різної розмірності. Лістинг форми показаний на рисунку 2.8.

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;

using System. Diagnostics;

namespace Диплом

{public partial class Determinant: Form

{TextBox [,] Koefficients = new TextBox [5, 5];

int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;

public Determinant () {InitializeComponent (); }

private void Form5_Load (object sender, EventArgs e)

{comboBox1. SelectedIndex = 0; }

private void button4_Click (object sender, EventArgs e)

{if (richTextBox1. Text! = "")

{SaveFileDialog saveFile1 = new SaveFileDialog ();

saveFile1. DefaultExt = "*. rtf";

saveFile1. Filter = "RTF Files|*. rtf";

if (saveFile1. ShowDialog () == System. Windows. Forms. DialogResult. OK && saveFile1. FileName. Length > 0)

{richTextBox1. SaveFile (saveFile1. FileName, RichTextBoxStreamType. PlainText); }}

else{MessageBox. Show ("Нечего сохранять!"); }}

private void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";

float [,] MatrixMembers = new float [MatrixSize, MatrixSize + 1];

float Value, opr = 1;

int Iteration, IsEmptyM, Counteri, Counterj;

IsEmptyM = 0;

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; }}

if (IsEmptyM == 0)

{ExitOrNot = 0;

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{try

{MatrixMembers [Row, Cell] = Convert. ToSingle (Koefficients [Cell, Row]. Text); }

catch

{ExitOrNot = 1; }}}

if (ExitOrNot == 1) MessageBox. Show ("Неверный формат введенных чисел! Проверьте правильность введенных данных! Bводить можно только цифры от 0 до 9, знак минус и запятую");

if (ExitOrNot == 0)

{richTextBox1. Text += "Имеем матрицу\n\n";

for (Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";

for (Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

3). ToString () + "\t"; }

richTextBox1. Text += "\n\n"; }

for (Row = 0; Row < MatrixSize; Row++)

{for (Iteration = 0; Iteration < Row; Iteration++)

{if (MatrixMembers [Row, Iteration]! = 0)

{Value = (-MatrixMembers [Row, Iteration]) / MatrixMembers [Iteration, Iteration];

richTextBox1. Text += "\n\nУмножим " + (Iteration + 1). ToString () + " строку на " + Math. Round (Value,

3) + " и сложим ее с " + (Row + 1). ToString () + " строкой\n\n";

for (Cell = 0; Cell < MatrixSize; Cell++)

{MatrixMembers [Row, Cell] = MatrixMembers [Row, Cell] + MatrixMembers [Iteration, Cell] * Value; }

for (Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";

for (Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

3). ToString () + "\t"; }

richTextBox1. Text += "\n\n"; }}}}

……………………………………………………………

Koefficients [Row, Cell]. TextAlign = HorizontalAlignment. Center;

this. Controls. Add (Koefficients [Row, Cell]); }}

label4. Location = new Point (240, 35 * MatrixSize + 45);

richTextBox1. Location = new Point (5, 35 * MatrixSize + 65);

richTextBox1. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }

label2. Location = new Point (157 - 42,5);

Control = 1;

PreviousMatrixSize = MatrixSize; }

private void Determinant_FormClosed (object sender, FormClosedEventArgs e) {MainMenu. Control [3] = 0; }

private void button3_Click (object sender, EventArgs e)

{Process. Start (@"Нахождение определителя. docx"); }

private void Determinant_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.8 - Лістинг форми "Determinant"

Модуль "InventMatrix" призначений для знаходження зворотної матриці. Цей модуль описує окрему форму, що містить алгоритм для знаходження зворотних матриць для матриць різної розмірності. Лістинг форми показаний на рисунку 2.9.

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;

using System. Diagnostics;

namespace Диплом

{public partial class InventMatrix: Form

{TextBox [,] Koefficients = new TextBox [5, 5];

int MatrixSize = 2, Row, Cell, PreviousMatrixSize, Control = 1, BeginXPosition, ExitOrNot;

public InventMatrix ()

{InitializeComponent (); }

private void button1_Click (object sender, EventArgs e)

{richTextBox1. Text = "";

float [,] MatrixMembers = new float [MatrixSize, MatrixSize*2];

float Value;

float [] Temp = new float [MatrixSize + 1];

string [] Description = { "Общий", "Первый", "Второй", "Третий", "Четвертый", "Пятый" };

int Iteration, IsEmptyM, IsEmptyF, Counteri, Counterj;

int Cell1, Cell2, Cell3, Cell4, Cell5, Row1, Row2, Row3, Counter;

float [] opr = new float [MatrixSize + 1];

float [] opr4 = new float [MatrixSize + 1];

float [] opr5 = new float [MatrixSize + 1];

IsEmptyM = 0;

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{if (Koefficients [Cell, Row]. Text == "") IsEmptyM = 1; }}

IsEmptyF = 0;

if (IsEmptyM == 0 && IsEmptyF == 0)

{ExitOrNot = 0;

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = 0; Cell < MatrixSize; Cell++)

{try

{MatrixMembers [Row, Cell] = Convert. ToSingle (Koefficients [Cell, Row]. Text); }

catch {ExitOrNot = 1; }}}

if (ExitOrNot == 1) MessageBox. Show ("Неверный формат введенных чисел! Проверьте правильность введенных данных! Bводить можно только цифры от 0 до 9, знак минус и запятую");

if (ExitOrNot == 0)

{richTextBox1. Text += "Имеем начальную матрицу\n\n";

for (Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";

for (Counterj = 0; Counterj < MatrixSize; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

3). ToString () + "\t"; }

richTextBox1. Text += "\n\n"; }

for (Row = 0; Row < MatrixSize; Row++)

{for (Cell = MatrixSize; Cell < MatrixSize * 2; Cell++)

{MatrixMembers [Row, Cell] = 0;

if (Row == Cell - MatrixSize) MatrixMembers [Row, Cell] = 1; }}

richTextBox1. Text += "Чтобы найти обратную матрицу, допишем к данной матрице справа единичную\n\n";

for (Counteri = 0; Counteri < MatrixSize; Counteri++)

{richTextBox1. Text += "\t";

for (Counterj = 0; Counterj < MatrixSize * 2; Counterj++)

{richTextBox1. Text += Math. Round (MatrixMembers [Counteri, Counterj],

3). ToString () + "\t";

if (Counterj == MatrixSize - 1) richTextBox1. Text += "|\t"; }

richTextBox1. Text += "\n\n"; }

if (MatrixSize == 2)

{opr [0] = MatrixMembers [0, 0] * MatrixMembers [1, 1] - MatrixMembers [1, 0] * MatrixMembers [0, 1];

if (opr [0] == 0)

{richTextBox1. Text += "\n\nОпределитель матрицы равен нулю, соответственно данная матрица вырожденная и не имеет обратной"; }}

if (MatrixSize == 3)

……………………………………………………………

richTextBox1. Location = new Point (5, 35 * MatrixSize + 65);

richTextBox1. Size = new Size (525, 490 - (35 * MatrixSize + 105)); }

label2. Location = new Point (157 - 42,5);

Control = 1;

PreviousMatrixSize = MatrixSize; }

private void InventMatrix_FormClosed (object sender, FormClosedEventArgs e) {MainMenu. Control [4] = 0; }

private void button3_Click (object sender, EventArgs e)

{Process. Start (@"Нахождение обратной матрицы. docx"); }

private void InventMatrix_FormClosing (object sender, FormClosingEventArgs e)

{DialogResult result = MessageBox. Show ("Закрыть окно?", "Закрытие формы", MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (result == DialogResult. No)

{e. Cancel = true; }}}}

Рисунок 2.9 - Лістинг форми "InventMatrix"

2.3 Елементи інтерфейсу програмного продукту

Програма "Есть решение!" створена як навчальний посібник для вивчення дисципліни "Чисельні методи", а тому має простий та зрозумілий для користувача інтерфейс.

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

Головною формою програми "Есть решение!", а за сумісністю і головним меню, є початкова форма (рис.2.1). З неї користувач запускає необхідні йому модулі (для вирішення систем лінійних рівнянь, виконання операцій над матрицями або отримання інформації про програму). Так як всі модулі програми мають ідентичний інтерфейс, буде розібрано роботу з одним модулем - модулем для вирішення систем лінійних рівнянь методом Гауса.

При завантаженні модуля користувач бачить перед собою форму, зображену на рисунку 2.10.

Рисунок 2.10 - Модуль "Метод Гауса" після завантаження

Для початку роботи користувачу необхідно обрати розмірність матриці. Для цього необхідно клікнути на компонент з випадаючим списком з написом "Размерность матрицы" та у випадаючому списку обрати необхідну розмірність (рис.2.11).

Рисунок 2.11 - Вибір розмірності матриці у випадаючому списку

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

Рисунок 2.12 - Заповнення полів для виконання обчислення

Після заповнення полів для отримання рішення необхідно натиснути кнопку "Решить". Після цього рішення буде виведено в поле під назвою "Решение" (рис.2.13). Якщо користувач введе некоректні дані, наприклад букви, або двічі введе кому в числі, то програма попередить його про це відповідним повідомленням (рис.2.14).

Для того, щоб зберегти результат рішення до текстового файлу, необхідно натиснути на кнопку "Сохранить" (якщо не буде даних для збереження, система сповістить про це відповідним повідомленням), у вікні, що відкриється, задати ім'я файлу, папку для його збереження, та натиснути кнопку "Сохранить" (рис. 2.15).

Рисунок 2.13 - Відображення ходу рішення

Рисунок 2.14 - Повідомлення про введення некорректних даних

Для того, щоб очистити дані, введені в полях для коефіцієнтів матриці та вільних членів, та отримані в полі для виводу рішення, необхідно натиснути кнопку "Очистить все".

Для того, щоб отримати довідкову інформацію, необхідно натиснути на кнопку "Справка", після чого відкриється довідкова інформація про поточний тип задачі в форматі файлу". rtf", для чого потребується встановлена програма "WordPad" або "Microsoft Office Word".

Рисунок 2.15 - Збереження рішення в текстовий файл

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

3. Економічний розділ

3.1 Розрахунок капітальних витрат на створення програмного продукту

Капітальні витрати "К" на створення програмного виробу (ПВ) мають одноразовий характері розраховуються за формулою (3.1):

К = К1 + К2 + К3, (3.1)

де К1 - витрати на обладнання з урахуванням транспортно-заготівельних витрат, грн.;

К2 - витрати на ліцензійні програмні продукти, грн.;

К3 - витрати на створення програмного продукту, грн.

Примітка: Транспортно-заготівельні витрати прийняти 1 - 5 % від вартості обладнання.

Розрахунок витрат на створення ПВ - К3 розраховуються за формулою (3.2):

К3 = З1 + З2 + З3, (3.2)

де З1 - витрати праці програмістів-розробників, грн.;

З2 - витрати комп'ютерного часу, грн.;

33 - непрямі (накладні) витрати, грн.

Витрати праці програмістів-розробників "З1" розраховуються за формулою (3.3):

(3.3)

де Nk - кількість розробників k-й професії, чол;

rk - годинна зарплата розробника k-й професії, грн.;

Tk - трудомісткість розробки для k-го розробника (кількість витраченого розробником часу), годин;

Кзар - коефіцієнт нарахувань на фонд заробітної плати, (1,2 - 1,45).

Годинна зарплата розробника "rk" визначається за формулою (3.4):

(3.4)

де Мк - місячна зарплата розробника, грн.;

Fkмес - місячний фонд часу його роботи, год.

Трудомісткість розробки включає час виконання робіт, представлених в таблиці 3.1.

Таблиця 3.1 - Трудомісткість робіт

Стадії розробки

Етапи робіт

Зміст робіт

1

2

3

Технічне завдання

15.03.13 - 30.03.13

Обґрунтування необхідності розробки програми

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

Науково-дослідні роботи

Розробка і затвердження технічного завдання

Ескізний проект

31.03.13 - 15.04.13

Розробка ескізного проекту

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

Затвердження ескізного проекту

Технічний проект

16.04.13 - 05.04.13

Розробка технічного проекту

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

Затвердження технічного проекту

Робочий проект

06.05.13 - 20.05.13

Розробка програми

У ході розробки даного програмного продукту були проведений ряд тестувань, в ході якого були знайдені помилки в роботі системи. Після усунення цих помилок був проведений повторний тест, який не виявив ніяких помилок. Тестування проводилося за методом "білого ящика", на різних платформах і робочих станціях.

Розробка програмної документації

Випробування програми

Впровадження

25.04.12 - 24.05.12

Підготовка і передача програми

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

Технічний проект

16.04.13 - 05.04.13

Розробка технічного проекту

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

Затвердження технічного проекту

Робочий проект

06.05.13 - 20.05.13

Розробка програми

У ході розробки даного програмного продукту були проведений ряд тестувань, в ході якого були знайдені помилки в роботі системи. Після усунення цих помилок був проведений повторний тест, який не виявив ніяких помилок. Тестування проводилося за методом "білого ящика", на різних платформах і робочих станціях.

Розробка програмної документації

Випробування програми

Впровадження

25.04.12 - 24.05.12

Підготовка і передача програми

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

Розрахунок трудомісткість розробки "Tk" для кожного розробника здійснюється за формулою (3.5):

Tk= t1k + t2k + t3k + t4k + t5k, (3.5)

де t1k, t2k, t3k, t4k, t5k - час, витрачений на кожному етапі розробки k-м розробником, год.

Трудомісткість розробки включає час виконання робіт, представлених в таблиці 3.2

Таблиця 3.2 - Загальна тривалість етапів роботи

Етапи робіт

Трудомісткість, годин

Технічне завдання

40

Ескізний проект

80

Технічний проект

70

Робочий проект

110

Впровадження

50

Разом:

350

Витрати комп'ютерного часу "З2" розраховуються за формулою (3.6):

З2 = СкF0 (3.6)

де Ск - собівартість комп'ютерного години, грн.;

F0 - витрати комп'ютерного часу на розробку програми, год.

Собівартість комп'ютерного години "СК" розраховується за формулою (3.7):

СК= СА + СЭ + СТО, (3.7)

де СА - амортизаційні відрахування, грн.;

СЕ - енерговитрати, грн.;

СТО - витрати на техобслуговування, грн.

Амортизаційні відрахування "СА" розраховуються за формулою (3.8):

СА = = СiNАi/ Fгодi, (3.8)

де Сі - балансова вартість i-го обладнання, яке використовується для створення ПК, грн.;

NА - річна норма амортизації i-го устаткування, частки;

Fгод - річний фонд часу роботи i-го устаткування, год.

Енерговитрати "СЕ" розраховуються за формулою (3.9):

СЭ= РЭСкВт, (3.9)

де РЕ - витрата електроенергії, споживаної комп'ютером;

СкВт - вартість 1 кВт/ч електроенергії, грн.

Витрати на технічне обслуговування "СТО" розраховуються за формулою (3.10):

СТО= rТО, (3.10)

Де гТО - годинна зарплата працівника обслуговуючого устаткування, грн.;л - періодичність обслуговування.

Періодичність обслуговування "л" розраховується за формулою (3.11):

(3.11)

де Nто - кількість разів обслуговування обладнання в місяць;

Fмес - місячний фонд часу роботи устаткування, год.

Непрямі витрати "33" визначаються за формулою (3.12):

З3 = С1 + С2 + С3, (3.12)

де С1 - витрати на утримання приміщень, грн.;

С2 - витрати на освітлення, опалення охорону і прибирання приміщень, грн.;

C3 - інші витрати (вартість різних матеріалів, використовуваних при розробці проекту, послуги сторонніх організацій тощо)

За формулою (3.5) визначаємо розрахунок трудомісткість розробки:

Tk=40 + 80 + 70 + 110 + 50= 350

За формулою (3.4) визначаємо годинну зарплата розробника:

= 2200/238 = 11,9

За формулою (3.3) визначаємо витрати праці програмістів-розробників:

З1 = 111,9 350 1,3 = 5414,5

За формулою (3.11) визначаємо періодичність обслуговування:

= 2/ (8 23) = 0,01

За формулою (3.10) визначаємо витрати на технічне обслуговування:

СТО = 8,15 0,01 = 0,0815

За формулою (3.9) визначаємо енерговитрати:

СЭ = 1,075 0,37 = 0,39

За формулою (3.8) визначаємо амортизаційні відрахування:

СА = (4337 0,5) / (23 8 12) = 0,98

За формулою (3.7) визначаємо собівартість комп'ютерного часу:

СК = 0,98 + 0,39 + 0,0815 = 1,4515

За формулою (3.6) визначаємо витрати комп'ютерного часу:

З2 = 1,4515350 = 508,025

За формулою (3.12) визначаємо непрямі витрати:

З3 = 450 + 36 + 4337 = 4823

За формулою (3.2) визначаємо розрахунок витрат на створення ПВ:

К3 = 5414,5 + 508,025+ 4823 = 10745,525

За формулою (3.1) визначаємо капітальні витрати "К" на створення програмного виробу:

К = (4337 + 216,85) + 1560 + 10745,525 = 16859,375

3.2 Розрахунок річної економії поточних витрат

Витрати на розробку проекту "Вр" обчислюються за формулою (3.13):

(3.13)

де Тр - трудомісткість i-го розрахунку, год.;

Ср - годинна собівартість i-го розрахунку, грн.;

n - число експериментів, зроблених за рік, шт.

Розрахунок собівартості проектування

Для розрахунку трудомісткості розробки проекту надали характеристику виконуваних операцій. Дані прийняти самостійно та ведені в таблицю 3.3

Таблиця 3.3 - Характеристика виконуваних робіт

Найменування операцій

Трудомісткість робіт, годин

Кількість повторень на рік (п)

Пошук помилок в роботі програми

0,26

120

Тестування окремих модулів

0,30

80

Процес оптимізації

0,078

60

Разом

0,638

260

Собівартість проектування "Ср" обчислюється за формулою (3.14):

(3.14)

де Ср1 - витрати на оплату праці персоналу, грн.; Ср2 - непрямі витрати, грн. Витрати на оплату праці персоналу "Ср1" розраховуються за формулою (3.15):

(3.15)

де Nk - кількість працівників k-й професії, які беруть участь у розробці проекту;

Rk - годинна зарплата одного працівника k-й професії, грн.;

кзар - коефіцієнт нарахувань на фонд зарплати;

k - кількість різних професій.

Годинна зарплата працівника "Rk" розраховується наступним чином за формулою (3.16):

(3.16)

де Mk - місячний оклад обліковця, грн.;

Fkm - місячний фонд часу роботи працівників, год.

Непрямі витрати "Ср2" визначаються за формулою (3.17):

(3.17)

де С1 - витрати на утримання приміщень за місячний фонд часу роботи, грн.; С2 - витрати на освітлення, опалення охорону і прибирання приміщень за місячний фонд часу роботи, грн.; C3 - інші витрати (вартість різних матеріалів, використовуваних при розробці проекту, послуги сторонніх організацій тощо).

За формулою (3.17) визначаємо непрямі витрати:

За формулою (3.16) визначаємо годинну зарплату працівника:

За формулою (3.15) визначаємо витрати на оплату праці персоналу:

За формулою (3.14) визначаємо собівартість проектування:

За формулою (3.13) визначаємо витрати на розробку проекту:

У разі створення одного ПВ економічний ефект «Еф» визначається за формулою (3.18):

(3.18)

де Вр - поточні витрати, грн.; KЗатр - капітальні витрати на створення програмного виробу, грн; Ен - нормативний коефіцієнт економічної ефективності капіталовкладень, 0,15 частки.

Коефіцієнт економічної ефективності капіталовкладень "ЕР" показує величину річного приросту прибутку або зниження собівартості в результаті використання програмного виробу на одну гривню одноразових витрат (капіталовкладень), розраховується за формулою (3.19):

(3.19)

де Вр - поточні витрати, грн.;

KЗатр - капітальні витрати на створення програмного виробу, грн;

Примітка: Проект вважається ефективним, якщо виконується нерівність, яка розраховується за формулою (3.20):

(3.20)

Термін окупності капіталовкладень "ТР" - період часу, протягом якого окупаються витрати на ПВ розраховується за формулою (3.21):

(3.21)

Економічний розрахунок показує, що розробка та використання ПК є економічно виправданим і доцільним. Про це свідчать наступні цифри:

1 Поточні витрати при впровадженні підсистеми проектування складуть 9081,93 грн.

2. Економічний ефект складає 6553,02 грн.

3. Термін окупності капіталовкладень в ПК складе 1 рік і 11 місяців.

Список використаної літератури

1. ЕСПД. Виды программ и программных документов. ГОСТ 19.101-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт)

2. Документація. Звіт у сфері науки та техніки. Структура і правила оформлення. (ISO 5566: 1982, IDT): ДСТУ 3008-95. - [Чинний від 1995-02-23]. - (Національний стандарт України).

3. ЕСПД. Общие положения. ГОСТ 19.001-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

4. Фленов Михаил Библия C#; БХВ-Петербург, 2009. - 560 c.

5. Фленов Михаил Библия C#; БХВ-Петербург, 2011. - 560 c.

6. ЕСПД. Стадии разработки. ГОСТ 19.102-77. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

7. ЕСПД. Обозначение программ и программных документов. ГОСТ 19.103-77 - [Введен 1980-01-01]. - (Межгосударственный стандарт).

8. Гуриков С.Р. Введение в программирование на языке Visual C#; Форум, Инфра-М, 2013. - 448 c.

9. ЕСПД. Требования к программным документам, выполненным печатным способом. ГОСТ 19.106-78. - [Введен 1980-01-01].

10. ЕСПД. Спецификация. Требования к содержанию и оформлению. ГОСТ 19.202-78. - [Введен 1980-01-01]. - (Межгосударственный стандарт).

11. Мартин Р.С., Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#; Символ-Плюс, 2011. - 768 c.

12. Пугачев С., Шериев А., Кичинский К. Разработка приложений для Windows 8 на языке C#; БХВ-Петербург, 2013. - 416 c.

13. Податковий кодекс України (Із змінами і доповненнями, внесеними Законами України) від 7 червня 2012 року № 4915 - VI

14. Економіка підприємства: Підручник/ За заг ред. С.Ф. Покропивного. - Вид.2-ге, перероб. та доп. - К.: КНЕУ, 2001.

15. Экономика предприятия: Учебник для вузов / Л. Я Аврашков, В.В. Адамчук, О.В. Антонов и др.; Под ред. проф.В.Я. Горфинкеля, проф.В.А. Швандара. - 2-е изд., перераб. и доп. - М.: Банки и биржи, ЮНИТИ, 1998.

16. Экономика предприятия: Учебник / Под ред. проф. Н.А. Сафронова. - М.: Юристь, 2002.

17. Экономика организации. Н.Л. Зайцев. - М.: "Экзамен", 2000. - 768с.

18. Економіка підприємства: Навч. посібник. - 2-е вид., випр. і доп. /І.М. Бойчик, М.І. Харів, М.І. Хопчан, Ю.В. Піча. - К.: Каравела; Львів: Новий світ - 2001. - 298 с.

19. Продиус Ю.И. Экономика предприятия: Учебное пособие. - Харьков: ООО "Одиссей". - 2006. - 416 с.

Размещено на Allbest.ru


Подобные документы

  • Основні завдання синоптичної метеорології. Призначення та область застосування програмного продукту "Статистика метеоспостережень", функціональні вимоги до нього. Інформаційне забезпечення, структура, опис інтерфейсу. Тестування програмного продукту.

    курсовая работа [3,6 M], добавлен 30.04.2016

  • Характеристика об’єкта автоматизації, вимоги до системи, склад та зміст системи. Розробка функціональної схеми програмного продукту. Тестування підпрограми програмного продукту. Розробка бази даних та налаштування ECO компонент в Borland Developer Studio.

    практическая работа [1,8 M], добавлен 05.06.2014

  • Виявлення та усунення помилок при розробці програмно-апаратних засобів. Захист від загроз цілісності та конфіденційності інформації. Розробка програми для визначення складності пароля. Структура і функціональне призначення модулів програмного продукту.

    дипломная работа [2,3 M], добавлен 01.10.2013

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

    курсовая работа [460,5 K], добавлен 21.05.2016

  • Опис методів і алгоритмів вирішення задачі в середовищі розробки Myeclipse. Основні функції програмного продукту, його структура. Розробка алгоритму та програми, інструкція користувачу. Результати тестування, лістинг основних блоків. Вікно головного меню.

    курсовая работа [1,8 M], добавлен 24.02.2014

  • Формування електронного реєстру та презентація обліку зайнятості населення. Основні завдання обліку зайнятості (біржі праці). Обґрунтування доцільності створення програмного модуля. Вимоги до програмного продукту. Тестування програмного продукту.

    курсовая работа [399,7 K], добавлен 30.04.2016

  • Цілі та головні задачі систем метаданих, їх структура та елементи, опис словників та класифікаторів. Розробка логіко-функціональної схеми надбудови, її функціональне призначення. Економічне обґрунтування доцільності розробки програмного продукту.

    дипломная работа [1,7 M], добавлен 26.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.