Тестування програмного забезпечення

4.1Розробка тестів

Тестування програми електронна книга рецептів на основі функціонального тестування.

 

Резюме (Summary)1: Перевірка функціонування кнопки завантаження інформації з БД.

Середовище виконання: Windows 7.

Опис (Description) – Перевіряємо чи при натисканні на відповідну кнопку виводяться рецепти у вигляді книжки.

Етапи для відтворення проблеми:

1. Відкриваю програму електронна книга рецептів.

2. Натискаю відповідну кнопку.

Очікуваний результат виконання(Expectedresult): На екран повинна виводитись табличка з рецептами у вигляді книжки.

Поточний результат виконання(Observedresult):На екран вивелась табличка з рецептами у вигляді книжки.

Складність(Severity): рівень середній

Тест пройшов успішно.

Резюме (Summary)2: Перевірка можливості редагування інформації про рецепт.

Середовище виконання: Windows 7.

Опис (Description) –Перевіряємо чи при натисканні на відповідну кнопку виведеться вікно в якому можливо редагувати інформацію про рецепт.

Етапи для відтворення проблеми:

1. Відкриваю програму електронна книга рецептів.

2. Натискаю відповідну кнопку.

Очікуваний результат виконання(Expectedresult): Повинне виводитись вікно на екран в якому можна редагувати інформацію про рецепт .

Поточний результат виконання(Observedresult): При натисканні на кнопку нічого не відбулось.

Складність(Severity): рівень середній

Першочерговість(Priority):

Р.2.- виправити до кінця закінчення етапу тестування.

 


 

РОЗДІЛ 5

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

5.1 Інструкція користувачеві

Щоб запустити програму «Електронна книга рецептів» необхідно відкрити файл запуску.

Рис.10.Головне вікно програми.

Після чого необхідно завантажити дані про рецепти з БД за допомогою відповідної кнопки, після чого можна працювати з програмою. Після натискання на кнопку 1-рецепти виведуться на екран у вигляді книжки, як показано на рис.11 , якщо натиснути на кнопку 2- то рецепти виведуться у вигляді списку, як показано на рис.12 . Також можна роздрукувати вибраний рецепт, для цього необхідно натиснути на кнопку 3, після чого виведеться вікно яке зображено на рис.13, на якому потрібно буде натиснути на кнопку "Печать".

Рис.11.Виведення рецептів у вигляді книги.

Рис.12. Вікно з змістом.

Рис.13. Вікно друку.

На рис.13 показано можливість роздруку вибраного рецепту.


 

Висновок

В ході виконання роботи мовою С# в середовищі Visual Studio 2010 реалізовано програму "Електронна книга рецептів". Також продемонстровано на прикладі можливості об’єктно-орієнтованого програмування.

Реалізовано такі функціональні вимоги:

·Здійснено запис та зчитування даних у файл (з файлу).

·Можливість виведення всіх рецептів на екран.

·Можливість виведення детальної інформації про вибраний рецепт.

·Можливість пошуку за назвою.

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

·Можливість задання під кожен рецепт відповідного зображення.

·Можливість роздруку рецептів.

·Технологія Windows Forms дає можливість створювати зручний інтерфейс користувача.

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

На закінчення терміну на виконання курсової роботи залишились не реалізованими такі функціональні вимоги: можливість зміни даних (додавання, вилучення, редагування).

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

 

 


 

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

1. Герберт Шилдт Полный справочник по С#; перюб с англ. – М. : Издательский дом «Вильяме», 2014.-752 с.

2. Джейсон Прайс, Майк Гандэрлой. VisualC#. Net. Полоное руководство; пер. с англ. – К.: ВЕК+, СПб.: КОРОНА принт, К.:НТИ, М.:Энтроп, 2004.-960 с.

3. ГербертШилдт - C# Учебный Курс. - Питер, Москва, 2003.

4. А.В. Фролов, Г.В. Фролов - Язык С#. Самоучитель. – М.: Диалог-Мифи, 2003.-560с.

5. Бондарев В.Н. Програмирование на С #. 2005.djvu.

6. Вайнер, Пинсон. C # Изнутри.2000.djvu.

7. Вандевурд, Джосаттис. Шаблоны C #. Справочник разработчика.Вильямс. 2003.djvu.

8.Глушаков, Коваль, Смирнов. Язык программирования С #, учебный курс. 2001.djvu.

 


 

Додаток А

Національний університет “Львівська політехніка”

Навчально-науковий інститут підприємництва та перспективних технологій

 

 

Кафедра інформаційних систем і технологій

 

Затвердив Керівник Машевська М. В. «___»_________________2014 р.

Виконав

Ст. групи КН-39 Петелька Н.С.

«___» ________________2014 р.

ТЕХНІЧНЕ ЗАВДАННЯ

на виконання курсової роботи

на тему: Розробка програмного комплексу системи " електронна книга рецептів"

з дисципліни:

«Проблемно-орієнтоване програмування»

 

1.1 Мета: Метою курсової роботи є розробка комплексу програм для розробки програмного комплексу системи " Електронна книга рецептів ".

1.2 Найменування та галузь застосування об'єкта розробки:Дана робота присвячена розробці програмного забезпечення для системи " Електронна книга рецептів".

1.3 Підстава для проведення робіт:Підставою для розробки
програмного забезпечення є навчальний план спеціальності 6.050101 «Комп'ютерні науки», робоча програма дисципліни "Проблемно-орієнтоване програмування", індивідуальне завдання.

1.4 Дата початку роботи: «__01___» вересня 2014 р.

1.5 Дата закінчення роботи: «_25__» грудня 2014 р.

1.6 Мета призначення розробки:Метою даної роботи є набуття навичок розробки програмного забезпечення для автоматизації системи "Електронна книга рецептів". Система повинна застосовуватися для отримання довідкової інформації про приготування тої чи іншої страви. Призначається для полегшення приготування різних страв. Операції з даними про рецепт можуть розширюватись.

1.7 Вимоги до надійності:Надійність даного проекту забезпечується
використанням структурного програмування; а також тим, що програма працює під керівництвом єдиного меню; в ній передбачені переривання, тобто програма реагує на невірні дії користувача, вказуючи на дії, які необхідно виконати користувачеві.

Все програмне забезпечення та супроводжуюча технічна документація повинні задовольняти наступним ДЕСТам:

ИСО 5807 - 85 ГОСТ на розробку програмних документів, схем алгоритмів програм, даних та систем.

ГОСТ 19.781 - 74 - Вимоги до розробки програмного забезпечення.

ГОСТ 19.101-77 (СТ СЭВ 1626 - 79) - Держстандарт на розробку програмної документації, видів програм та програмних документів.

ГОСТ 29.401 - 78 - Текст програми. Вимоги до змісту та оформлення.

ГОСТ 19.106 - 78 - Вимоги до програмної документації.

ГОСТ 7.1 - 84 та ДСТУ 3008 - 95 - Розробка технічної документації.

1.8 Стадії та етапи розробки:

1. Постановки задачі та розробка технічного завдання на
виконання розробки програмного забезпечення для системи "Електронна книга рецептів"( до 29.09.2014 р.).

2. Варіантний аналіз існуючих методів поставленої задачі та вибір
СУБД та програмного середовища для роботи з БД для системи "Електронна книга рецептів". .( до 13.10.2014 р.).

3. Розробка структури програми та структури бази даних для системи "Електронна книга рецептів . ( до 3.11.200 р.).

4. Розробка програмного забезпечення та розробка інтерфейсу, створення бази даних для системи "Електронна книга рецептів". (до 17.11.2014 р.).

5. Розроблення тестів та тестування розробленої програми
та для системи "Електронна книга рецептів". ( до 24.11.2014 р.).

6. Демонстрація програмного забезпечення для системи "Електронна книга рецептів". ( до 1.12.2014 р.).

7. Розробка пояснювальної записки ( до 8.12.2014 р.).

8. Захист курсової роботи ( до 15.12.2014 р.).

1.9 Вимоги до безпеки.

Розроблене програмне забезпечення повинно відповідати сучасним вимогам СНІП та ДЕСТів до робочого місця операторів ЕОМ

 


 

Додаток Б

Form1

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.IO;

using System.Drawing.Printing;

 

namespace recepty

{

publicpartialclassForm1 : Form

{

int ci = 0, cj = 1;

int count = 0;

string[] data;

Book bookC1 = newBook();

Form2 frm2 = newForm2();

string[][] list;

PrintDocument PD = newPrintDocument();

 

public Form1()

{

InitializeComponent();

}

 

privatevoid button1_Click(object sender,EventArgs e)

{

this.panel1.Visible = true;

pictureBox8.Visible = pictureBox9.Visible = true;

panel7.Refresh();

 

data = bookC1.GetDataArr();

count = data.Length;

 

showData();

}

 

privatevoid showData()

{

if (ci < count && ci >= 0)

{

setDataForm(data[ci].Split('#'), 1, label1, label6, label5);

}

else

{

deleteDataForm(1, label1, label6, label5);

}

if (cj < count && cj > 0)

{

setDataForm(data[cj].Split('#'), 2, label3, label2, label4);

}

else

{

deleteDataForm(2, label3, label2, label4);

}

}

void setDataForm(string [] data_inf,int numb,paramsLabel []ct)

{

try

{

if (numb == 1)

pictureBox1.Image = Image.FromFile(Directory.GetCurrentDirectory() + data_inf[5].Remove(0, 2));

}

catch

{

pictureBox1.Image = null;

}

try

{

if (numb == 2)

{

pictureBox2.Image = Image.FromFile(Directory.GetCurrentDirectory() + data_inf[5].Remove(0, 2));

}

}

catch

{

pictureBox2.Image = null;

}

pictureBox1.SizeMode = pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;

 

ct[0].Text=data_inf[0].Trim('\n','');

ct[1].Text=data_inf[2].Trim('\n','');

ct[2].Text=data_inf[3].Trim('\n','');

}

void deleteDataForm(int numb,paramsLabel [] ct)

{

if (numb==1)

pictureBox1.Image=null;

elseif (numb==2)

pictureBox2.Image=null;

 

ct[0].Text="";

ct[1].Text="";

ct[2].Text="";

}

privatevoid button_Click(object sender,EventArgs e)

{

if (sender==this.pictureBox8)

{

ci-=2; cj-=2;

pictureBox9.Enabled=true;

if (ci<=0 && cj<=1)

pictureBox8.Enabled=false;

}

elseif (sender==this.pictureBox9)

{

ci+=2; cj+=2;

pictureBox8.Enabled=true;

if (ci>=count-1 && cj>=count)

pictureBox9.Enabled=false;

}

showData();

}

privatevoid Form1_Load(object sender,EventArgs e)

{

this.BackgroundImage=Image.FromFile(Directory.GetCurrentDirectory()+"\\data\\book.jpg");

}

 

privatevoid pictureBox5_Click(object sender,EventArgs e)

{

this.panel1.Visible=false;

deleteDataForm(2, label2, label3, label4);

 

frm2.listBox1.Items.Clear();

frm2.listBox1.Items.Add("\t ЗМІСТ\n");

list=bookC1.GetList();

 

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

frm2.listBox1.Items.Add(list[i][0].Trim(''));

frm2.listBox1.SelectedIndexChanged+=new System.EventHandler(this.listBox_SelectedIndexChanged);

 

frm2.panel1.BringToFront();

panel7.Controls.Add(frm2.panel1);

pictureBox8.Visible=pictureBox9.Visible=false;

}

 

privatevoid listBox_SelectedIndexChanged(object sender, EventArgs e)

{

cj=0;

if (frm2.listBox1.SelectedIndex!=0)

{

setDataForm(list[frm2.listBox1.SelectedIndex -1],2,label3,label2,label4);

cj++;

}

}

 

privatevoid pictureBox7_Click(object sender,EventArgs e)

{

PrintDoc();

}

privatevoid PrintDoc()

{

PrinterSettings PS=newPrinterSettings();

PD.PrinterSettings=PS;

PD.PrinterSettings.PrintRange =PrintRange.SomePages;

PrinterSet.name=label3.Text;

PrinterSet.ingrad=label2.Text;

PrinterSet.article=label4.Text;

PrinterSet.image1=pictureBox2.Image;

PD.PrintPage+=newPrintPageEventHandler(PrinterSet.PD_PrintPage);

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

{

PD.PrinterSettings.PrinterName=printDialog1.PrinterSettings.PrinterName;

PD.Print();

}

}

 

 

}

}

 

PrinterSet

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing.Printing;

using System.Drawing;

using System.Windows.Forms;

 

namespace recepty

{

classPrinterSet

{

PrintDocument PD=newPrintDocument();

publicstaticImage image1;

publicstaticstring name;

publicstaticstring ingrad;

publicstaticstring article;

publicstaticint z=0;

publicstaticint count=0;

 

publicstaticvoid PD_PrintPage(object sender,PrintPageEventArgs e)

{

string PrintText=Environment.NewLine;

PrintText+=ingrad+Environment.NewLine;

PrintText+=checkTextLine(article)+Environment.NewLine;

Font PrintFont=newFont("Times New Roman",5,FontStyle.Regular,GraphicsUnit.Millimeter);

Font PrintFont2=newFont("Times New Roman",5,FontStyle.Bold,GraphicsUnit.Millimeter);

Rectangle rectang=e.PageBounds;

rectang.Location=newPoint(30,320);

int linesPerPage=Convert.ToInt16(e.PageBounds.Height / PrintFont.GetHeight(e.Graphics));

 

string [] text_lines=PrintText.Split('\n');

string tx="";

while (z<text_lines.Length &&count++<linesPerPage-5)

{

tx+=text_lines[z++]+Environment.NewLine;

}

e.Graphics.DrawImage(image1,100,20,270,250);

e.Graphics.DrawString("\n",PrintFont,Brushes.Black,rectang);

e.Graphics.DrawString(name,PrintFont2,Brushes.Black,120,300);

e.Graphics.DrawString(tx,PrintFont,Brushes.Black,rectang);

 

count=0;

 

if (z<text_lines.Length)

e.HasMorePages=true;

else e.HasMorePages=false;

}

 

privatestaticstring checkTextLine(string text)

{

string res="";

int k=text.Length /80;

 

if (k==0)

return text+Environment.NewLine;

 

int pos_p=0;

int pos_n=0;

 

while (pos_p!=-1)

{

pos_n=text.IndexOf("",(pos_p+80<text.Length)?pos_p+80:text.Length -1);

res+=text.Substring(pos_p,(pos_n-pos_p>0)?pos_n-pos_p:text.Length-pos_p)+Environment.NewLine;

pos_p=pos_n;

}

return res;

}

}

}

Book

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Windows.Forms;

 

namespace recepty

{

classBook

{

publicstring[] GetDataArr()

{

string[] data=null;

int i=0;

TextReader text;

Stream str=Stream.Null;

OpenFileDialog openFileDialog1=newOpenFileDialog();

string text_line;

 

string data_text="";

openFileDialog1.FileName=Directory.GetCurrentDirectory()+"\\data\\recepty.txt";

try

{

if ((str=openFileDialog1.OpenFile()) !=Stream.Null)

{

text=newStreamReader(str,Encoding.Default);

 

while ((text_line=text.ReadLine()) !=null)

{

data_text+=text_line+Environment.NewLine;

}

}

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

 

str.Close();

 

data=data_text.Split('&');

return data;

}

 

publicstring [][] GetList()

{

string[] data=GetDataArr();

string[][]list=newstring[data.Length][];

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

list[i]=data[i].Split('#');

return list;

}

}

}