Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
492784.rtf
Скачиваний:
50
Добавлен:
24.03.2015
Размер:
25.04 Mб
Скачать

5 Тестирование

Для тестирования программы производились различные манипуляции с данными.

Проводились следующие тесты:

Тест 1 – Пустое значение в обязательном поле ввода данных, помеченном символом «*», изображен на рисунке 13:

Рисунок 13 – Ввод пустого значения в поле «Отчество»

Сообщение, которое будет показано пользователю после ввода пустого значения, представлено на рисунке 14.

Рисунок 14 – Ошибка при вводе пустого значения

Тест 2 – Попытка ввода текста в числовое поле, изображен на рисунке 15:

Рисунок 15 – Ввод текста в поле «Стоимость»

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

Рисунок 16– Ввод некорректных данных

Тест 3 – В полях ввода справа и слева от введенных данных встречаются пробелы. В этом случае они не учитываются и данные в журнал записываются без них, изображен на рисунке 17:

Рисунок 17 – Встречаются пробелы слева и справа от введенных данных

Тест 4 - Открытие некорректного XML-файла, изображен на рисунке 18:

Рисунок 18 – Попытка открыть некорректный XML-файл

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

Тестирование выявило мелкие недочеты, которые впоследствии были устранены.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Э. Троелсен. С# и платформа .NET. Библиотека программиста. - СПб.: Питер, 2004. —796 с.: ил.

  2. Е.А. Жоголев. «Технология программирования» - М., Научный мир, 2004, 216 с

  3. Т. А. Павловская. «С#. Программирование на языке высокого уровня. Учебник для вузов» - СПб.: Питер, 2007. – 432 с.

  4. Microsoft Developer Network(MSDN). [Электронный ресурс]. – Режим доступа: msdn.microsoft.com, свободный.

  5. СТО 01.04 – 2005. Работы студентов. Общие требования и правила оформления. – введ. 2005 – 04 – 01. – Архангельск: Изд-во Арханг. гос. техн. ун-та, 2005.

ПРИЛОЖЕНИЕ А

Листинг библиотеки классов

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Serialization;

using System.IO;

namespace KR

{

public class LoadAndSave

{

#region Метод LoadXML - загрузка данных из файла

public static ListShop LoadXML(string filename, ListShop listshop)

{

XmlSerializer Serializer = new XmlSerializer(typeof(ListShop));

try

{

using (StreamReader reader = new StreamReader(filename))

{

listshop = (ListShop)Serializer.Deserialize(reader);

}

}

catch (FileNotFoundException)

{

string newXML = @"<?xml version=""1.0"" encoding=""utf-8""?>" + '\n' + @"<ListKafe xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" + '\n' + "<AllKafe />" + '\n' + "</ListKafe>";

using (StreamWriter writer = new StreamWriter(filename))

{

writer.Write(newXML);

}

}

return listshop;

}

#endregion

#region Save - сохранение экземляра класса Shop в файл

public static bool Save(ListShop listshop, string filename)

{

XmlSerializer sr = new XmlSerializer(listshop.GetType());

StringBuilder sb = new StringBuilder();

StreamWriter SW = new StreamWriter(filename);

sr.Serialize(SW, listshop);

SW.Close();

return true;

}

#endregion

}

public interface IFIOtoString

{

string FIOtoString();

}

#region классы (кафе, сотрудник,блюдо, заказ и др.) и интерфейсы

public class ListShop

{

public List<Worker> AllWorker = new List<Worker>();

public List<Food> AllFood = new List<Food>();

public List<Sale> AllSale = new List<Sale>();

public List<Check> AllCheck = new List<Check>();

}

public class Man

{

string name;

string surname;

string ot;

public string Name

{

get { return name; }

set { name = value; }

}

public string Ot

{

get { return ot; }

set { ot = value; }

}

public string Surname

{

get { return surname; }

set { surname = value; }

}

public Man()

{

name = "";

surname = "";

ot = "";

}

public Man(string Name, string Surname, string Ot)

{

name = Name;

surname = Surname;

ot = Ot;

}

}

[Serializable]

public class Worker : Man, IFIOtoString

{

DateTime ustrdate;

string twnumber;

string wmail;

public DateTime Ustrdate

{

get { return ustrdate; }

set { ustrdate = value; }

}

public string Twnumber

{

get { return twnumber; }

set { twnumber = value; }

}

public string Mail

{

get { return wmail; }

set { wmail = value; }

}

public string FIOtoString()

{

return Name + " " + Ot + " " + Surname;

}

}

[Serializable]

public class Food

{

int id;

string name;

string ingr;

int price;

int kol;

public int ID

{

get { return id; }

set { id = value; }

}

public int Kol

{

get { return kol; }

set { kol = value; }

}

public string Name

{

get { return name; }

set { name = value; }

}

public string Ingr

{

get { return ingr; }

set { ingr = value; }

}

public int Price

{

get { return price; }

set { price = value; }

}

}

[Serializable]

public class Sale : Worker, IFIOtoString

{

Food foodsale;

DateTime date;

Worker worker;

int kolv;

public Food Food

{

get { return foodsale; }

set { foodsale = value; }

}

public DateTime Date

{

get { return date; }

set { date = value; }

}

public Worker Worker

{

get { return worker; }

set { worker = value; }

}

public int Kolv

{

get { return kolv; }

set { kolv = value; }

}

public Sale()

{

foodsale = new Food();

date = new DateTime();

worker = new Worker();

}

public Sale(Food Food, DateTime Date, Worker Worker)

{

foodsale = Food;

date = Date;

worker = Worker;

}

}

public class Check

{

private List<Sale> sales = new List<Sale>();

private DateTime printTime;

private double cost=0;

private string printText="";

public DateTime PrintTime

{

get { return printTime; }

}

public string PrintText

{

get { return printText; }

}

public Check( IEnumerable<Sale> newSales)

{

sales.AddRange(newSales);

foreach (Sale sale in sales)

{

cost += sale.Food.Price*sale.Kolv;

}

}

public Check(Sale newSale)

{

sales.Add(newSale);

cost += newSale.Food.Price*newSale.Kolv;

}

public Check()

{

}

public void AddSale(IEnumerable<Sale> newSales)

{

sales.AddRange(newSales);

foreach (Sale sale in sales)

{

cost += sale.Food.Price * sale.Kolv;

}

}

public void AddSale(Sale newSale)

{

sales.Add(newSale);

cost += newSale.Food.Price * newSale.Kolv;

}

public double Cost

{

get { return cost; }

}

public string PrintCheck()

{

int temp=0;

printTime = DateTime.Now;

StringBuilder checkText = new StringBuilder();

checkText.AppendLine("*** Кафе ***");

checkText.AppendLine("Заказы :");

foreach (Sale sale in sales)

{

temp++;

checkText.AppendLine(String.Format("{0}: {1} - {2}*{3} = {4} этот заказ обслуживал {5} {6}", temp, sale.Food.Name,

sale.Food.Price, sale.Kolv, sale.Food.Price*sale.Kolv,sale.Worker.Name,sale.Worker.Surname));

}

checkText.AppendLine(string.Format("Итоговая стоимость {0}", cost));

checkText.AppendLine(string.Format("{0}",printTime));

checkText.AppendLine("***Спасибо за покупку****");

printText = checkText.ToString();

return checkText.ToString();

}

}

#endregion

}

ПРИЛОЖЕНИЕ Б

Листинг клиентского приложения

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 KR

{

public partial class MainForm : Form

{

public MainForm()

{

InitializeComponent();

}

ListShop ListShops = new ListShop();

int sel1 = 0;

int sel2 = 0;

int sel3 = 0;

int sel4 = 0;

private void button2_Click(object sender, EventArgs e) // добавление нового сотрудника

{

if ((textBox1.Text.Trim() == "") || (textBox2.Text.Trim() == "") || (textBox3.Text.Trim() == ""))

{

MessageBox.Show("Не все обязательные поля заполнены");

return;

}

Worker wrk = new Worker();

wrk.Name = textBox2.Text.Trim();

wrk.Ot = textBox3.Text.Trim();

wrk.Surname = textBox1.Text.Trim();

wrk.Twnumber = textBox4.Text.Trim();

wrk.Mail = textBox5.Text.Trim();

wrk.Ustrdate = dateTimePicker1.Value;

ListShops.AllWorker.Add(wrk);

MessageBox.Show("Новый сотрудник добавлен");

button1_Click(sender, e);

}

private void button1_Click(object sender, EventArgs e) // обновление

{

dataGridView1.Rows.Clear();

for (int i = 0; i < ListShops.AllWorker.Count; i++)

{

dataGridView1.Rows.Add(1);

dataGridView1[0, i].Value = ListShops.AllWorker[i].Surname;

dataGridView1[1, i].Value = ListShops.AllWorker[i].Name;

dataGridView1[2, i].Value = ListShops.AllWorker[i].Ot;

dataGridView1[3, i].Value = ListShops.AllWorker[i].Ustrdate;

dataGridView1[4, i].Value = ListShops.AllWorker[i].Twnumber;

dataGridView1[5, i].Value = ListShops.AllWorker[i].Mail;

}

dataGridView3.Rows.Clear();

for (int i = 0; i < ListShops.AllFood.Count; i++)

{

dataGridView3.Rows.Add(1);

dataGridView3[0, i].Value = ListShops.AllFood[i].Name;

dataGridView3[1, i].Value = ListShops.AllFood[i].Ingr;

dataGridView3[2, i].Value = ListShops.AllFood[i].Price;

}

dataGridView4.Rows.Clear();

for (int i = 0; i < ListShops.AllSale.Count; i++)

{

dataGridView4.Rows.Add(1);

dataGridView4[0, i].Value = ListShops.AllSale[i].Food.Name;

dataGridView4[1, i].Value = ListShops.AllSale[i].Date;

dataGridView4[2, i].Value = ListShops.AllSale[i].Worker.Surname + " " + ListShops.AllSale[i].Worker.Name + " " + ListShops.AllSale[i].Worker.Ot;

dataGridView4[3, i].Value = ListShops.AllSale[i].Kolv;

}

if (ListShops.AllWorker.Count > 0)

{

comboBox4.Items.Clear();

for (int i = 0; i < ListShops.AllWorker.Count; i++)

{

comboBox4.Items.Add(ListShops.AllWorker[i].Surname + " " + ListShops.AllWorker[i].Name + " " + ListShops.AllWorker[i].Ot);

}

}

if (ListShops.AllFood.Count > 0)

{

comboBox1.Items.Clear();

for (int i = 0; i < ListShops.AllFood.Count; i++)

{

comboBox1.Items.Add(ListShops.AllFood[i].Name + " " + ListShops.AllFood[i].Ingr + " ");

}

}

}

private void button4_Click(object sender, EventArgs e) // добавление нового блюда

{

if ((textBox12.Text.Trim() == "") || (textBox13.Text.Trim() == "") || (textBox16.Text.Trim() == "") )

{

MessageBox.Show("Не все обязательные поля заполнены");

return;

}

Food org = new Food();

org.Name = textBox12.Text.Trim();

org.Ingr = textBox13.Text.Trim();

try

{

org.Price = int.Parse(textBox16.Text.Trim());

int x = ListShops.AllFood.Count;

if (x != 0)

{

for (int i = 0; i < x; i++)

{

ListShops.AllFood.Add(org);

MessageBox.Show("Продукция успешно добавлена");

}

}

else

{

ListShops.AllFood.Add(org);

MessageBox.Show("Продукция успешно добавлена");

}

button1_Click(sender, e);

}

catch (FormatException)

{

MessageBox.Show("Неверный формат ввода");

}

}

private void button5_Click(object sender, EventArgs e) // добавление нового заказа

{

if ((comboBox1.Text.Trim() == "") || (comboBox4.Text.Trim() == ""))

{

MessageBox.Show("Не все обязательные поля заполены");

return;

}

Sale sl = new Sale();

sl.Food = ListShops.AllFood[comboBox1.SelectedIndex];

sl.Worker = ListShops.AllWorker[comboBox4.SelectedIndex];

sl.Date = dateTimePicker3.Value;

sl.Kolv = (byte)numericUpDown1.Value;

ListShops.AllFood[comboBox1.SelectedIndex].Kol -= sl.Kolv;

ListShops.AllSale.Add(sl);

MessageBox.Show("Успешно добавлено!");

}

private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

{

sel1 = e.RowIndex;

}

private void dataGridView2_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

{

sel2 = e.RowIndex;

}

private void dataGridView3_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

{

sel3 = e.RowIndex;

}

private void dataGridView4_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)

{

sel4 = e.RowIndex;

}

private void button6_Click(object sender, EventArgs e) // удаление сотрудника

{

if (ListShops.AllWorker.Count > 0)

{

ListShops.AllWorker.RemoveAt(sel1);

button1_Click(sender, e);

sel1 = 0;

}

}

private void button8_Click(object sender, EventArgs e) // удаление в меню

{

if (ListShops.AllFood.Count > 0)

{

ListShops.AllFood.RemoveAt(sel1);

button1_Click(sender, e);

sel3 = 0;

}

}

private void button9_Click(object sender, EventArgs e) // удаление в журнале заказов

{

if (ListShops.AllSale.Count > 0)

{

ListShops.AllSale.RemoveAt(sel1);

button1_Click(sender, e);

sel4 = 0;

}

}

private void button10_Click(object sender, EventArgs e) // поиск

{

dataGridView5.Rows.Clear();

int count = 0;

for (int i = 0; i < ListShops.AllSale.Count; i++)

{

if (ListShops.AllSale[i].Date.ToShortDateString() == dateTimePicker3.Value.ToShortDateString())

{

dataGridView5.Rows.Add(1);

dataGridView5[0, count].Value = ListShops.AllSale[i].Food.Name + " " + ListShops.AllSale[i].Food.Ingr;

dataGridView5[1, count].Value = ListShops.AllSale[i].Worker.Surname + " " + ListShops.AllSale[i].Worker.Name + " " + ListShops.AllSale[i].Worker.Ot;

dataGridView5[2, count].Value = ListShops.AllSale[i].Kolv;

dataGridView5[3, count].Value = ListShops.AllSale[i].Food.Price;

}

}

}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)

{

About about = new About();

about.ShowDialog();

}

private void openToolStripMenuItem_Click(object sender, EventArgs e)

{

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

{

try

{

ListShops = LoadAndSave.LoadXML(openFileDialog1.FileName, ListShops);

}

catch (InvalidOperationException)

{

MessageBox.Show("Ошибка чтения XML-файла");

}

}

button1_Click(sender, e);

}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)

{

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

{

try

{

LoadAndSave.Save(ListShops, saveFileDialog1.FileName);

MessageBox.Show("Файл сохранен");

}

catch (UnauthorizedAccessException)

{

MessageBox.Show("Невозможно сохранить файл");

}

}

}

private void button3_Click(object sender, EventArgs e)

{

Check newCheck = new Check();

if (listBox1.SelectedItems.Count!=0)

{

foreach (int sale in listBox1.SelectedIndices)

{

newCheck.AddSale(ListShops.AllSale[sale]);

}

ListShops.AllCheck.Add(newCheck);

MessageBox.Show(newCheck.PrintCheck());

}

else

{

MessageBox.Show("Вы должны выбрать заказы");

}

}

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)

{

if (tabControl2.TabIndex == 2)

{

listBox1.Items.Clear();

foreach (var sale in ListShops.AllSale)

{

listBox1.Items.Add(string.Format("{0} - {1}", sale.Food.Name, sale.Date.ToShortTimeString()));

}

}

}

private void dataGridView4_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void tabPage4_Click(object sender, EventArgs e)

{

}

}

}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]