|
Descriptions[Iteration].Location = new Point(100, 50 * Iteration + 139); Descriptions[Iteration].Name = "Label " + Iteration.ToString(); Descriptions[Iteration].Text = "Вариант " + (Iteration + 1).ToString(); this.Controls.Add(Descriptions[Iteration]);} PreviousIndex = comboBox1.SelectedIndex;}}
Рисунок 2.10 – Процедура зміни кількості полів для варіантів відповіді
Процедура збереження створеного опитування та кожного запитання до файлу опитування представлена на рисунку 2.11.
private void button1_Click(object sender, EventArgs e) {if (Step > 1) {Control = 0;
for (Iteration = 0; Iteration < comboBox1.SelectedIndex + 2; Iteration++)
{if (Questions[Iteration].Text == "") Control = 1;}
if (textBox1.Text!= "" && Control!= 1)
{FileStream cst = new FileStream("Temp", FileMode.Append);
StreamWriter streamWriter = new StreamWriter(cst);
streamWriter.Write("\n" + textBox1.Text + "~");
for (Iteration = 0; Iteration < comboBox1.SelectedIndex + 2; Iteration++)
{streamWriter.Write(Questions[Iteration].Text + "#");
streamWriter.Write("0" + "#");}
streamWriter.Close(); cst.Close(); MessageBox.Show("Вопрос успешно сохранен!");
Step++; Next = 1; button1.Enabled = false;}
else {MessageBox.Show("Заполните все поля!");}}
if (Step == 1) {Control = 0; for (Iteration = 0; Iteration < comboBox1.SelectedIndex + 2; Iteration++)
{if (Questions[Iteration].Text == "") Control = 1;}
if (textBox1.Text!= "" && Control!= 1)
{FileStream cst = new FileStream("Temp", FileMode.Create); StreamWriter streamWriter = new StreamWriter(cst); streamWriter.Write(textBox1.Text + "~"); for (Iteration = 0; Iteration < comboBox1.SelectedIndex + 2; Iteration++)
{streamWriter.Write(Questions[Iteration].Text + "#");
streamWriter.Write("0" + "#");}
streamWriter.Close(); cst.Close();
MessageBox.Show("Вопрос успешно сохранен!");
Step++; Next = 1; button1.Enabled = false;}
else {MessageBox.Show("Заполните все поля!");}}
if (Step == 0) {if (textBox1.Text!= "")
{FileStringName = textBox1.Text + ".cst";
if (!File.Exists(FileStringName))
{FileStream cst = new FileStream("Temp", FileMode.Create); cst.Close();
MessageBox.Show("Опрос " + textBox1.Text + " успешно создан!"); Step++;
button1.Text = "Сохранить текущий вопрос"; button2.Text = "Закрыть мастер"; button1.Location = new Point(10, 445); button2.Location = new Point(410, 445); button3.Location = new Point(210, 445); button3.Visible = true; comboBox1.Visible = true; comboBox1.Location = new Point(320, 90);
label1.Location = new Point(70, 52);
label1.Text = "Введите Ваш вопрос";
label2.Location = new Point(160, 94);
textBox1.Location = new Point(200, 50);
textBox1.Size = new System.Drawing.Size(375, 20);
label2.Visible = true; textBox1.Text = "";
PreviousIndex = 0; for (Iteration = 0; Iteration < 2; Iteration++) {Questions[Iteration] = new TextBox();
Questions[Iteration].Width = 380;
Questions[Iteration].Height = 30;
Questions[Iteration].Location = new Point(190, 50 * Iteration + 135); Questions[Iteration].Name = "Textbox " + Iteration.ToString(); this.Controls. Add(Questions[Iteration]); Descriptions[Iteration] = new Label(); Descriptions[Iteration].Location = new Point(100, 50 * Iteration + 139); Descriptions[Iteration].Name = "Label " + Iteration.ToString(); Descriptions[Iteration].Text = "Вариант " + (Iteration + 1).ToString(); this.Controls.Add(Descriptions[Iteration]);}}
else { MessageBox.Show("Опрос с именем '" + textBox1.Text + "' уже существует!"); }}
else {MessageBox.Show("Укажите имя создаваемого опроса!");}}}
Рисунок 2.11 – Процедура збереження опитування та кожного запитання
Процедура переходу до створення наступного запитання в опитуванні представлено на рисунку 2.12.
private void button3_Click(object sender, EventArgs e) { if (Next == 1) {textBox1.Text = ""; for (Iteration = 0; Iteration < comboBox1.SelectedIndex + 2; Iteration++) {this.Controls.Remove(Questions [Iteration]); Questions[Iteration].Dispose(); this. Controls.Remove (Descriptions[Iteration]); Descriptions[Iteration]. Dispose();} for (Iteration = 0; Iteration < 2; Iteration++) {Questions[Iteration] = new TextBox(); Questions[Iteration].Width = 380; Questions [Iteration].Height = 30; Questions [Iteration].Location = new Point(190, 50 * Iteration + 135); Questions[Iteration].Name = "Textbox " + Iteration.ToString(); this.Controls.Add (Questions [Iteration]); Descriptions[Iteration] = new Label(); Descriptions[Iteration].Location = new Point(100, 50 * Iteration + 139); Descriptions [Iteration].Name = "Label " + Iteration.ToString(); Descriptions [Iteration].Text = "Вариант " + (Iteration + 1).ToString(); this.Controls.Add(Descriptions [Iteration]);}Next = 0; button1.Enabled = true; comboBox1.SelectedIndex = 0;} else {MessageBox. Show("Сохраните текущий вопрос для перехода к следующему!");}}
Рисунок 2.12 – Процедура додавання нового запитання
Процедура закриття майстра створення опитування показана на рисунку 2.13.
private void button2_Click (object sender, EventArgs e)
{
this.Close();
}
Рисунок 2.13 – Процедура закриття майстра створення опитувань
Процедура, яка викликає діалог для підтвердження або скасування закриття форми, показана на рисунку 2.14.
private void InterviewCreator_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("Несохраненные данные будут утеряны.\nЗакрыть мастер?", "Закрытие мастера", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{e.Cancel = true;}
if (result == DialogResult.Yes)
{
if (Step == 1) File.Delete(FileStringName);
if (Step > 1)
{
EncryptFile("Temp", FileStringName);
File.Delete("Temp");
}}}
Рисунок 2.14 – Процедура підтвердження виходу з майстра опитування
Процедура шифрування файлу опитування представлена на рисунку 2.15. Ця процедура має однаковий код для форми InterviewCreator та InterviewExplorer.
static void EncryptFile(string sInputFilename, string sOutputFilename)
{
FileStream fsInput = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
FileStream fsEncrypted = new FileStream(sOutputFilename, FileMode.Create, FileAccess.Write);
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
byte[] Key =
{
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
};
byte[] IV =
{
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
};
DES.Key = Key;
DES.IV = IV;
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write);
byte[] bytearrayinput = new byte[fsInput.Length];
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length);
cryptostream.Close();
fsInput.Close();
fsEncrypted.Close();
}
Рисунок 2.15 – Процедура шифрування файлу опитування
Модуль InterviewExplorer описує форму, яка призначена для проходження опитувань користувачами. Під час завантаження форми програма формує список доступних опитувань, що містяться в папці з програмою. Цей список виводиться в компонент на формі. Користувач обирає потрібне йому опитування, натискає кнопку відкриття, після чого дані з файлу опитування розшифровуються в тимчасовий файл та завантажуються в програму. Програма порядково зчитує інформацію з файлу опитування, де кожен рядок відповідає запитанню та містить дані про варіанти відповіді та кількість відповідей на кожен з них. На основі зчитаної інформації на екран виводиться заголовок опитування та група компонентів, які дозволяють вибрати лише один з них, кожен компонент має заголовок, що відповідає варіанту відповіді. Після натиску на кнопку відповіді, до числа, яке відображає, скільки раз був вибраний варіант відповіді, який обрав користувач, додається один, після чого ця інформація зберігається в тимчасовий файл. Після того, як користувач відповість на всі запитання в опитуванні, дані з тимчасового файлу шифруються та записуються в файл опитування, а всі тимчасові файли видаляються.
Процедура завантаження майстра проходження опитувань представлена на рисунку 2.16.
private void InterviewExplorer_Load(object sender, EventArgs e)
{
string[] dir = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.cst");
for (int Iteration = 0; Iteration < dir.Length; Iteration++)
dir[Iteration] = Path.GetFileNameWithoutExtension(dir[Iteration]);
listBox1.Items.AddRange(dir);
}
Рисунок 2.16 – Процедура завантаження майстра проходження опитувань
Процедура розшифрування даних файлу опитування показана на рисунку 2.17. Ця процедура однакова для форм InterviewExplorer та Stats.
static void DecryptFile(string sInputFilename, string sOutputFilename)
{
DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
byte[] Key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
};
byte[] IV =
{
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
};
DES.Key = Key;
DES.IV = IV;
FileStream fsread = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read);
ICryptoTransform desdecrypt = DES.CreateDecryptor();
CryptoStream cryptostreamDecr = new CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read);
StreamWriter fsDecrypted = new StreamWriter(sOutputFilename);
fsDecrypted.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
fsDecrypted.Flush();
fsDecrypted.Close();
cryptostreamDecr.Close();
}
Рисунок 2.17 – Процедура розшифрування файлу опитування
Процедура, яка завантажує дані, які отримані з файлу опитування після його розшифрування, в програму, та фіксує відповіді користувача і складує їх з основними результатами та записує їх до тимчасового файлу, представлена на рисунку 2.18.
private void button3_Click(object sender, EventArgs e)
{if (Step > 0) {FileStream cst = new FileStream("Temp", FileMode.Open);
StreamReader streamReader = new StreamReader(cst); if (Step == Counter + 1)
{cst.Close(); streamReader.Close();
EncryptFile("AdTemp", FileName);
File.Delete("AdTemp"); File.Delete("Temp");
this.Close();}if (Step == Counter)
{FileStream tmp = new FileStream("AdTemp", FileMode.Append); StreamWriter tmprd = new StreamWriter(tmp);
for (Iteration = 0; Iteration < Step; Iteration++)
Data = streamReader.ReadLine();
NumberOfVariants = 0;
for (Iteration = 0; Iteration < Data.Length; Iteration++)
{if (Data[Iteration].Equals('#') == true) NumberOfVariants++;}
Results = new float[NumberOfVariants / 2];
for (Iteration = 0; Iteration < NumberOfVariants; Iteration++)
{Questions = Data.Split('#');Res = Data.Split('#');}
try {
Res[0] = Res[1]; Res[1] = Res[3];
Res[2] = Res[5]; Res[3] = Res[7];
Res[4] = Res[9];Res[5] = Res[11];}
catch { }
try {Questions[1] = Questions[2];
Questions[2] = Questions[4];
Questions[3] = Questions[6];
Questions[4] = Questions[8];
Questions[5] = Questions[10];}
catch { }
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{Results[Iteration] = Convert.ToSingle(Res[Iteration]);}
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{if (Variants[Iteration].Checked == true) Results[Iteration] += 1;}
tmprd.Write(label1.Text + "~");
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{tmprd.Write(Variants[Iteration].Text + "#" + Results[Iteration] + "#");}
for (Iteration = 0; Iteration < PreviousSize; Iteration++)
{this.Controls.Remove(Variants[Iteration]);
Variants[Iteration].Dispose();}
streamReader.Close(); cst.Close();
if (Step!= Counter) tmprd.Write("\n");
tmprd.Close(); tmp.Close(); Step++;
label1.Text = "Вы ответили на все вопросы в данном опросе. \nСпасибо за то, что уделили личное время для прохождения данного опроса.\nВаше мнение будет учтено.";
label1.Location = new Point(100, 175);
this.Text = "Мастер прохождения опросов";
button3.Text = "Закрыть мастер";}
if (Step < Counter)
{FileStream tmp = new FileStream("AdTemp", FileMode.Append);
StreamWriter tmprd = new StreamWriter(tmp);
if (Step == 1) Data = streamReader.ReadLine();
if (Step > 1)
{for (Iteration = 0; Iteration < Step; Iteration++)
Data = streamReader.ReadLine();}
NumberOfVariants = 0;
for (Iteration = 0; Iteration < Data.Length; Iteration++)
………………………………………………………..
Results = new float[NumberOfVariants / 2];
for (Iteration = 0; Iteration < NumberOfVariants; Iteration++)
{Questions = Data.Split('#');
Res = Data.Split('#');}
try
{Res[0] = Res[1]; Res[1] = Res[3];
Res[2] = Res[5]; Res[3] = Res[7];
Res[4] = Res[9]; Res[5] = Res[11];}
catch { }
try
{Questions[1] = Questions[2];
Questions[2] = Questions[4];
Questions[3] = Questions[6];
Questions[4] = Questions[8];
Questions[5] = Questions[10];}
catch { }
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{Results[Iteration] = Convert.ToSingle(Res[Iteration]);}
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{Variants[Iteration] = new RadioButton();
Variants[Iteration].Location = new Point(230, 50 * Iteration + 100);
Variants[Iteration].Name = "RadioButton " + Iteration.ToString();
Variants[Iteration].AutoSize = true;
Variants[Iteration].Text = Temp.ToString();
this.Controls.Add(Variants[Iteration]);
Variants[Iteration].Text = Questions[Iteration].ToString();}
Variants[0].Select();
try
{while ((HowMany = streamReader.ReadLine())!= null)
{Counter++;}}
catch { }
streamReader.Close();
cst.Close();
PreviousSize = NumberOfVariants / 2;
Step++;
}
}
Рисунок 2.18 – Процедура відкриття файлу опитування та збереження даних про відповіді користувача
Процедура, яка викликається при закритті майстра проходження опитувань для підтвердження або скасування виходу з майстра, показана на рисунку 2.19.
private void InterviewExplorer_FormClosing(object sender, FormClosingEventArgs e)
{
if (Step <= Counter)
{DialogResult result;
if (Step!=0) result = MessageBox.Show("Несохраненные данные будут утеряны.\nЗакрыть опрос?", "Закрытие опроса", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
else result = MessageBox.Show("Несохраненные данные будут утеряны.\nЗакрыть мастер?", "Закрытие мастера", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
}
File.Delete("Temp");
File.Delete("AdTemp");
}
}
Рисунок 2.19 – Процедура підтвердження виходу з майстра проходження опитувань
Модуль Stats описує форму, яка призначена для перегляду статистики опитувань. Після завантаження майстра перегляду статистики на формі будується список з доступних опитувань, які містяться в папці з програмою. Після того, як користувач вибере потрібне опитування та натисне на кнопку вибору, дані з файлу опитування розшифруються до тимчасового файлу. Кожен рядок містить інформацію про одне запитання, отже натиском на кнопки переключення між запитаннями, програмі надається інструкція до зчитування певного рядка тимчасового файлу з розшифрованими даними файлу опитування. На їх основі будуються лінійні діаграми із зображенням кількості відповідей та процентною часткою кожного варіанту відповіді. Після вибору опитування одразу будується діаграма по першому запитанню, а потім побудова діаграм залежить від дій користувача, від того, на яке запитання в опитуванні він переключиться. Після закриття майстра перегляду статистики тимчасовий файл з розшифрованими даними видаляється.
Процедура завантаження майстру перегляду статистики показана на рисунку 2.20.
private void Stats_Load(object sender, EventArgs e)
{
string[] dir = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.cst");
for (int Iteration = 0; Iteration < dir.Length; Iteration++)
dir[Iteration] = Path.GetFileNameWithoutExtension(dir[Iteration]);
listBox1.Items.AddRange(dir);
button1.Visible = false;
button2.Visible = false;
pictureBox1.Visible = false;
}
Рисунок 2.20 – Процедура завантаження майстру перегляду статистики
Процедура вибору опитування та закриття майстра після перегляду статистики зображена на рисунку 2.21.
private void button3_Click(object sender, EventArgs e)
{if (Control == 1)
{this.Close();}
if (Control == 0)
{FileName = listBox1.SelectedItem.ToString() + ".cst";
this.Text = "Просмотр статистики опроса " + listBox1.SelectedItem.ToString();
label1.Font = new Font("Arial", 10, FontStyle.Regular);
listBox1.Dispose();
button3.Text = "Закрыть окно просмотра статистики";
button1.Visible = true;
button2.Visible = true;
pictureBox1.Visible = true;
DecryptFile(FileName, "Temp");
FileStream cst = new FileStream("Temp", FileMode.Open);
StreamReader streamReader = new StreamReader(cst);
try
{while ((HowMany = streamReader.ReadLine())!= null)
{Counter++;}}
catch { } button1.Enabled = false;
if (Counter == 0)
{button1.Enabled = false;
button2.Enabled = false;}
streamReader.Close();
cst.Close();
label1.Location = new Point(20, 5);
label1.MaximumSize = new Size(565, 50);
Step++;
PaintEventArgs p = new PaintEventArgs(pictureBox1.CreateGraphics(), pictureBox1.Bounds);
pictureBox1_Paint(sender, p);
Control++;}}
Рисунок 2.21 – Процедура вибору та закриття опитування
Процедура побудови лінійних діаграм для поточного запитання для відображення статистики зображена на рисунку 2.22.
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{FileStream cst = new FileStream("Temp", FileMode.Open);
StreamReader streamReader = new StreamReader(cst);
Temp = "";
for (Iteration = 0; Iteration < Step; Iteration++)
Data = streamReader.ReadLine();
Iteration = 0;
while (Data[Iteration].Equals('~')!= true)
{Temp += Data[Iteration]; Iteration++; }
label1.Text = Temp.ToString();
Data = Data.Remove(0, Temp.Length + 1);
NumberOfVariants = 0;
for (Iteration = 0; Iteration < Data.Length; Iteration++)
{if (Data[Iteration].Equals('#') == true) NumberOfVariants++;}
Results = new float[NumberOfVariants / 2];
for (Iteration = 0; Iteration < NumberOfVariants; Iteration++)
{Questions = Data.Split('#');Res = Data.Split('#');}
try
{Res[0] = Res[1]; Res[1] = Res[3];
Res[2] = Res[5]; Res[3] = Res[7];
Res[4] = Res[9]; Res[5] = Res[11];}
catch { }
try {Questions[1] = Questions[2];
Questions[2] = Questions[4];
Questions[3] = Questions[6];
Questions[4] = Questions[8];
Questions[5] = Questions[10];}
catch { } Sum = 0;
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{Results[Iteration] = Convert.ToSingle(Res[Iteration]);
Sum += Results[Iteration];}
Graphics g = e.Graphics;
Brush b = new SolidBrush(Color.Blue);
Brush v = new SolidBrush(Color.Black);
Brush w = new SolidBrush(Color.FromKnownColor(KnownColor.Control));
g.FillRectangle(w, 0, 0, pictureBox1.Width, pictureBox1.Height);
Font f = new Font("Arial", 10);
for (Iteration = 0; Iteration < NumberOfVariants / 2; Iteration++)
{g.DrawString(Questions[Iteration], f, v, 30, 55 * Iteration);
g.FillRectangle(b, 30, 55 * Iteration + 25, 450 * (Results[Iteration] / Sum), 20);
Questions[Iteration] = Math.Round((Results[Iteration] / Sum * 100), 2).ToString() + " % (" + Results[Iteration].ToString() + ")";
g.DrawString(Questions[Iteration], f, v, 450, 55 * Iteration + 25);}
Questions[0] = "Чиcло опрошенных " + Sum.ToString();
g.DrawString(Questions[0], f, v, 22, 55 * (Iteration) + 25);
streamReader.Close();cst.Close();}
Рисунок 2.22 – Процедура побудови лінійних діаграм
Процедура переходу на наступне запитання показана на рисунку 2.23.
private void button2_Click(object sender, EventArgs e)
{
if (Step!= Counter) Step++;
if (Step == Counter) button2.Enabled = false;
button1.Enabled = true;
PaintEventArgs p = new PaintEventArgs(pictureBox1.CreateGraphics(), pictureBox1.Bounds);
pictureBox1_Paint(sender, p);}
Рисунок 2.23 – Процедура переходу на наступне запитання
Процедура переходу на попереднє запитання представлена на рисунку 2.24.
private void button1_Click(object sender, EventArgs e)
{
if (Step!= 1) Step--;
if (Step == 1) button1.Enabled = false;
button2.Enabled = true;
PaintEventArgs p = new PaintEventArgs(pictureBox1.CreateGraphics(), pictureBox1.Bounds);
pictureBox1_Paint(sender, p);}
Рисунок 2.24 – Процедура переходу на попереднє запитання
Процедура, яка викликається при виході з майстра перегляду статистики для підтвердження або скасування виходу з майстра зображена на рисунку 2.25.
private void Stats_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("Закрыть окно просмотра статистики?", "Закрытие окна", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{e.Cancel = true;}
if (result == DialogResult.Yes)
{File.Delete("Temp");}
}
Рисунок 2.25 – Процедура підтвердження виходу з майстру перегляду статистики
2.3 Елементи інтерфейсу.програмного продукту
Програма «Социологические исследования» створена як зручний додаток для проведення соціологічних досліджень, що надає змогу легко та зручно створювати опитування, надавати відповіді на запитання опитувань, переглядати детальну статистику.
Інтерфейс програми був спеціально розроблений для широкої аудиторії користувачів, тому не потребує спеціальних навичок для роботи.
Головною формою програми «Социологические исследования», а за сумісністю і головним меню, є початкова форма (рис. 2.1). З неї користувач може запустити необхідний йому модуль програми (створення опитування, проведення опитування або перегляд статистики) або закрити її.
Для того, щоб створити опитування, користувачу необхідно з головного меню запустити майстер створення опитувань. Для цього йому необхідно натиснути на напис «Создать опрос». Після цього відкриється майстер створення опитувань, який зображений на рисунку 2.26.
Рисунок 2.26 – Майстер створення опитувань
Для того, щоб задати назву опитування, необхідно ввести її в поле напроти напису «Введите название опроса». Для створення опитування із заданою назвою необхідно натиснути на кнопку «Создать опрос». Якщо опитування із введеною назвою вже існує, програма попередить про це відповідним повідомленням. Якщо опитування створено успішно, то програма видасть відповідне повідомлення. Для скасування створення опитування необхідно натиснути на кнопку «Отмена».
Після успішного створення опитування на формі з’являються компоненти для додавання запитань (рисунок 2.27).
Для того, щоб додати запитання в опитування, необхідно ввести заголовок опитування, вибрати у списку напроти напису «Количество вариантов ответа» необхідну кількість варіантів відповіді (від 2 до 6), після чого заповнити створені поля та натиснути кнопку «Сохранить текущий вопрос». Якщо поля не будуть заповнені, програма сповістить про це відповідним повідомленням.
Рисунок 2.27 – Додавання запитань до опитування
Після створення запитання, у користувача є вибір – завершити роботу з майстром або створити ще одне запитання. Для закриття майстра необхідно натиснути на кнопку «Закрыть мастер» або натиснути на хрестик на формі та підтвердити вихід у діалоговому вікні (рисунок 2.28). Якщо користувач не створить жодного запитання, то файл опитування буде видалений.
Рисунок 2.28 – Підтвердження виходу з майстра створення опитувань
Для створення ще одного запитання необхідно натиснути на кнопку «Добавить новый вопрос» та повторити процедуру створення запитання. Додати нове запитання можна тільки після збереження поточного. Користувач може створювати довільну кількість запитань в опитуванні.
Для того, щоб пройти опитування, користувачу необхідно запустити майстер проходження опитувань. Для цього необхідно натиснути на напис «Пройти опрос» в головній формі програми. Після запуску майстра користувач повинен обрати в списку необхідне опитування та натиснути на кнопку «Пройти опрос» (рисунок 2.29).
Рисунок 2.29 – Вибір опитування зі списку для проходження
Після вибору опитування на форму завантажаться запитання з опитування. Щоб надати відповідь, необхідно вибрати свій варіант відповіді натиском на компонент з відповідним заголовком та натиснути на кнопку «Ответить» (рисунок 2.30). Після цього (якщо в опитуванні більше одного запитання) відкриється наступне запитання. Процедура надання відповіді ідентична для всіх запитань опитування.
Рисунок 2.30 – Надання відповіді на запитання
Після надання відповідей на всі запитання в опитуванні, на форму виведеться повідомлення, вказане на рисунку 2.31.
Рисунок 2.31 – Повідомлення про закінчення опитування
Після цього потрібно закрити майстер натиском на кнопку «Закрыть» або на хрестик угорі форми. Якщо вийти з майстра, не надавши відповіді на всі запитання, на екран буде виведено повідомлення про втрату даних, так як у такому випадку дані про проходження не збережуться та не додадуться до загальної статистики. У цьому діалоговому вікні потрібно або підтвердити або скасувати вихід. При скасуванні виходу можна продовжити надавати відповіді на запитання.
Для того, щоб переглянути статистику, необхідно запустити майстер перегляду статистики. Для цього необхідно натиснути на напис «Просмортеть статистику опроса». Після завантаження майстра на формі побудується список з доступних опитувань, серед яких потрібно вибрати необхідне та натиснути кнопку «Просмотреть статистику опроса» (рисунок 2.32).
Дата добавления: 2015-10-21; просмотров: 11 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |