Головна |
5.4.1 Опис способів перевірки
Працездатність програми «Щоденник» перевіряється описаними нижче способами:
1) До початку перевірки, перейменуйте бінарний файл Database.mdb, в каталозі «C: \ Program Files \ DIARY \». Після цього запустити програму, яка видасть повідомлення про помилку, описане в розділі 5. «Повідомлення системному програмісту» даного програмного керівництва.
2) Запустити програму і видалити бінарний файл Database.mdb. Проаналізувати за дією програми.
3) Запустити програму з файлом Database.mdb і додати, відредагувати і видалити запис.
5.4.2 Методи прогону
5.4.2.1 Перевірка працездатності програми
1) При запущеній програмі «Щоденник» додайте запис, внесіть її і закрийте програму.
2) Запустіть програму «Щоденник» і перегляньте ті записи, які створили.
3) Створіть ще запили і закрийте програму.
4) Запустіть програму і введіть в пошук заголовок запису і знайдіть створену запис.
5) Натисніть перегляд всіх записів і перевірте чи вивелися.
6) Видаліть одну запис і перевірте пішла вона.
7) Видаліть всі записи і закрийте програму.
8) Запустіть програму і перегляньте чи записи.
5.4.2.2 Перевірка на повідомлення про помилку
1) До початку перевірки, перейменуйте бінарний файл Database.mdb, в каталозі «C: \ Program Files \ DIARY \». Після цього запустіть програму «Щоденник». Програма повинна видати повідомлення про помилку, описане в розділі 5. «Повідомлення системному програмісту» даного програмного керівництва.
2) При запущеній програмі «Щоденник» перейменуйте файл Database.mdb і перевірте на реакцію програми.
3) По закінченню перевірки поверніть попереднє найменування файлу Database.mdb і перевірте на працездатність програми.
5.5 ПОВІДОМЛЕННЯ системних програмістів
Програма «Щоденник» видає повідомлення про помилку, показане на рис. 1.
Малюнок 1.
ПРИЧИНА. Зазначений в повідомленні файл (Database.mdb) не найден в каталозі C: ??\ Program Files \ DIARY \, або даний каталог не існує.
Програма «Щоденник» видає повідомлення про помилку, показане на рис. 2.
Малюнок 2.
ПРИЧИНА. Зазначений в повідомленні файл (Database.mdb) був замінений.
ДІЇ програмістів. Перевірити за вказаною шляху наявність файлу Database.mdb і в разі відсутності створити його. Якщо файл існує, то відкрити його для читання, щоб його неможливо було змінити при запущеній програмі.
6 ТЕКСТ ПРОГРАМИ
6.1 ОСНОВНА ПРОГРАМА
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace AbstractCourse1
{
public partial class Form1: Form
{
DataEngine dt;
string tableName = "data";
string fileName = "Database.mdb";
public Form1 () // Ініціалізація форми
{
InitializeComponent ();
foreach (IceButton.IceButton i in tmenu.Controls)
{
i.Text = i.Tag.ToString ();
}
try
{
if (! System.IO.File.Exists (fileName))
{
System.IO.File.WriteAllBytes (fileName, Source.template);
}
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
System.Threading.Thread.CurrentThread.Abort ();
}
dt = new DataEngine (fileName, "ID", "Dates", "Header", "Body", "Worker", "IsDone");
LoadToGrid (dt.SelectAllTasks (tableName));
iceButton1.Click + = new EventHandler (iceButton1_Click); // Sea
iceButton2.Click + = new EventHandler (iceButton2_Click); // Add
iceButton5.Click + = new EventHandler (iceButton5_Click); // Delete one
iceButton6.Click + = new EventHandler (iceButton6_Click); // ToDay
iceButton4.Click + = new EventHandler (iceButton4_Click);
iceButton3.Click + = new EventHandler (iceButton3_Click);
t_search.KeyDown + = new KeyEventHandler (t_search_KeyDown);
dataGridView1.CellDoubleClick + = new DataGridViewCellEventHandler (dataGridView1_CellDoubleClick);
}
void t_search_KeyDown (object sender, KeyEventArgs e) // Пошук
{
if (e.KeyCode == Keys.Enter)
{
label1_Click (sender, e);
}
}
void dataGridView1_CellDoubleClick (object sender, DataGridViewCellEventArgs e) // Відкриття записи
{
if (e.RowIndex> = 0)
{
long id = Convert.ToInt64 (dataGridView1.Rows [e.RowIndex] .Cells [0] .Value);
Task tmp = dt.SelectById (tableName, id);
UseE_Form (EditForm.EditType.Edit, tmp);
}
}
void UseE_Form (EditForm.EditType editMode, Task StartValue) // Створення і відображення діалогу створення / редагування
{
EditForm e_form;
e_form = new EditForm (editMode, StartValue);
e_form.Cancel + = new Action
e_form.JustClose + = new Action
e_form.Save + = new Action
e_form.ShowDialog ();
}
#region UsingEvents
void e_form_Cancel (Task arg1, EditForm arg2)
{
arg2.Close ();
}
void e_form_JustClose (Task arg1, EditForm arg2)
{
DialogResult d;
d = MessageBox.Show ("Хочете зберегти?", "Save", MessageBoxButtons.YesNoCancel);
switch (d)
{
case DialogResult.Yes:
{
e_form_Save (arg1, arg2);
LoadToGrid (dt.SelectAllTasks (tableName));
arg2.Close ();
break;
}
case DialogResult.Cancel:
{
break;
}
case DialogResult.No:
{
arg2.Close ();
LoadToGrid (dt.SelectAllTasks (tableName));
break;
}
}
}
void e_form_Save (Task arg1, EditForm arg2)
{
if (arg1.ID> = 0)
{
dt.UpdateTask (arg1, tableName);
}
else
{
dt.InsertNewTask (arg1, tableName);
}
MessageBox.Show ("Збережено");
}
#endregion
void iceButton2_Click (object sender, EventArgs e) // Додавання нового завдання. Виводить форму редагування
{
Task tmp;
tmp = new Task ();
tmp.Date = DateTime.Now;
UseE_Form (EditForm.EditType.New, tmp);
}
void iceButton5_Click (object sender, EventArgs e) // Видалення. Видалення вибраної записи з підтвердженням
{
if (dataGridView1.SelectedCells.Count> 0)
{
DialogResult d;
long id = Convert.ToInt64 (dataGridView1.Rows [dataGridView1.SelectedCells [0] .RowIndex] .Cells [0] .Value);
Task tmp = dt.SelectById (tableName, id);
d = MessageBox.Show ("Ви точно хочете видалити цей запис?" + "\ n" + tmp.Header + "\ n" +
tmp.Body.PadRight (100), "Видалення", MessageBoxButtons.YesNo);
switch (d)
{
case DialogResult.Yes:
{
dt.DeleteTask (tableName, tmp);
MessageBox.Show ("Вилучено");
break;
}
}
LoadToGrid (dt.SelectAllTasks (tableName));
}
else
{
MessageBox.Show ("Спочатку потрібно записати новий");
}
}
void iceButton1_Click (object sender, EventArgs e) // Завантаження елементів в форму
{
LoadToGrid (dt.SelectAllTasks (tableName));
}
void iceButton4_Click (object sender, EventArgs e) // Вихід. Завершення поточного потоку
{
System.Threading.Thread.CurrentThread.Abort ();
}
void iceButton6_Click (object sender, EventArgs e) // Поточні справи. Вибірка за датою. Дата вважається по лоакльному часу
{
LoadToGrid (dt.SelectByDate (tableName, DateTime.Now));
}
void iceButton3_Click (object sender, EventArgs e) // Видалення всього. Очітстка бази завдань.
{
DialogResult dr;
dr = MessageBox.Show ("Ви точно хочете видалити всі записи?", "Стерти всі", MessageBoxButtons.YesNo);
switch (dr)
{
case DialogResult.Yes:
{
dt.DeleteAllTask ??(tableName);
LoadToGrid (dt.SelectAllTasks (tableName));
MessageBox.Show ("Вилучено");
break;
}
case DialogResult.No:
{
break;
}
}
}
private void LoadToGrid (Task Onetask) // Завантаження одного елемента в таблицю
{
dataGridView1.Rows.Add (Onetask.ToValues ??());
}
private void LoadToGrid (Angar tasks) // Масова завантаження елементів в таблицю зі сховища
{
dataGridView1.Rows.Clear ();
foreach (Task t in tasks.Storage)
{
dataGridView1.Rows.Add (t.ToValues ??());
}
}
private void Form1_Load (object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
}
public enum WordEn
{
/ *
номер,
Заголовок,
опис,
Дата,
виконавець
* /
ID, Header, Body, TargetDate, Worker
}
private void label1_Click (object sender, EventArgs e) // Пошук
{
WordEn we;
we = (WordEn) comboBox1.SelectedIndex;
try
{
switch (we)
{
case WordEn.ID:
{
if (t_search.Text! = "")
LoadToGrid (dt.SelectTask (tableName, we.ToString (), Convert.ToInt64 (t_search.Text) .ToString (), ""));
break;
}
default:
{
LoadToGrid (dt.SelectTask (tableName, we.ToString (),
t_search.Text.Replace (" '", "'"), " '"));
break;
}
}
MessageBox.Show ("Готово");
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
}
}
private void toolStripStatusLabel1_Click (object sender, EventArgs e) // Про автора
{
Author at;
at = new Author ();
at.ShowDialog ();
}
private void iceButton1_Load (object sender, EventArgs e)
{
}
}
}
6.2 ПІДПРОГРАМА РЕДАГУВАННЯ І ЗБЕРЕЖЕННЯ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace AbstractCourse1
{
public partial class EditForm: Form
{
public event Action
public event Action
public event Action
public enum EditType
{
Edit, New
}
EditType _editmode;
Task _task;
public EditForm (EditType EditMode, Task StartValue)
{
InitializeComponent ();
this.FormClosing + = new FormClosingEventHandler (EditForm_FormClosing);
_editmode = EditMode;
_task = StartValue;
Fill ();
switch (_editmode)
{
case EditType.New:
{
_task.ID = -1;
break;
}
case EditType.Edit:
{
break;
}
}
}
private void UpdateTask ()
{
_task.Date = t_dates.Value;
_task.Header = t_header.Text;
_task.IsDone = t_IsDone.Checked;
_task.Body = t_memo.Text;
_task.Worker = t_worker.Text;
}
private void Fill ()
{
t_dates.Value = _task.Date;
t_header.Text = _task.Header;
t_IsDone.Checked = _task.IsDone;
t_memo.Text = _task.Body;
t_worker.Text = _task.Worker;
}
private void закритьToolStripMenuItem_Click (object sender, EventArgs e)
{
try
{
UpdateTask ();
JustClose.Invoke (_task, this);
}
catch (Exception ex)
{
}
}
private void сохранітьToolStripMenuItem_Click (object sender, EventArgs e)
{
try
{
UpdateTask ();
Save.Invoke (_task, this);
}
catch (Exception ex)
{
}
}
private void отменітьToolStripMenuItem_Click (object sender, EventArgs e)
{
try
{
UpdateTask ();
Cancel.Invoke (_task, this);
}
catch (Exception ex)
{
}
}
void EditForm_FormClosing (object sender, FormClosingEventArgs e)
{
}
private void labelN_Click (object sender, EventArgs e)
{
}
}
}
алгоритми | технологічна частина
Короткий опис вироби | Результуючі компоненти вироби | Узгодження заявок на перевірку | позначення | Безпека і секретність системи |