Додаток А
Лістинг програми
Лістинг Menu
// Підключення бібліотек
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 Tests
{
public partial class Menu : Form
{
// Функція головного меню
public Menu()
{
InitializeComponent();
}
// Відкриття форми з обранням тесту
private void pictureBox2_Click(object sender, EventArgs e)
{
LoadForm LF = new LoadForm();
LF.Show();
this.Hide();
}
// Вихід з програми
private void pictureBox1_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Лістинг LoadForm
// Підключення бібліотек
using System;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Linq;
using Check;
namespace Tests
{
public partial class LoadForm : Form
{
XmlReader xmlThemeRead;
// Створення об’єкту у папці ТЕСТ
DirectoryInfo testsDirectory = new DirectoryInfo("Tests");
public LoadForm()
{
InitializeComponent();
if (!Checking.DataChecking())
MessageBox.Show("Розробив студент групи К12 2.9 Смірнов М.О", "Повідомлення", MessageBoxButtons.OK, MessageBoxIcon.Information);
foreach (TextBox textbox in this.Controls.OfType<TextBox>())
{
textbox.Dispose();
}
if (testsDirectory.Exists == false)
CreateTestDir();
comboBox1.Items.AddRange(testsDirectory.GetDirectories());
// Додавання папок з дерикторії Tests
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) // Оновлення listBox1 при обранні comboBox1
{
ThemeLabel.Text = "Тема тесту: ";
// Очищення теми
DirectoryInfo testsDir = new DirectoryInfo("Tests\\" + comboBox1.Text);
listBox1.Items.Clear();
// Очищення listBox1
foreach (FileInfo file in testsDir.GetFiles())
{
listBox1.Items.Add(Path.GetFileNameWithoutExtension(file.FullName));
}
pictureBox2.Enabled = false;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Ви впевнені що хочете вийти?", "Вихід", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
e.Cancel = true;
else
this.Visible = true;
}
public void CreateTestDir()
{
testsDirectory.Create();
testsDirectory.CreateSubdirectory("Периферійні пристрої");
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
xmlThemeRead = new XmlTextReader("Tests\\" + comboBox1.Text + "\\" + listBox1.Text + ".xml");
// Пошук вузла <Theme>
do xmlThemeRead.Read();
while (xmlThemeRead.Name != "Theme");
// зчитуємо тему тесту
xmlThemeRead.Read();
// вивести тему тесту
ThemeLabel.Text = "Тема тесту: " + xmlThemeRead.Value;
// виходимо з вузла <Theme>
xmlThemeRead.Read();
pictureBox2.Enabled = true;
}
catch (Exception)
{
MessageBox.Show("Виберіть інший файл!", "Помилка!");
}
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
MessageBox.Show("Введіть Ваше ім'я!", "Помилка!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
// Просимо ввести ім'я
else
{
string xmlPath = "Tests\\" + comboBox1.Text + "\\" + listBox1.Text + ".xml"; //Зберігаємо шлях до xml - файлу
MainForm MF = new MainForm(xmlPath, textBox1.Text, ThemeLabel.Text); //Передаємо в форму 2 шлях до тесту і ім'я користувача
MF.Show();
// Викликаємо форму тестування
this.Visible = false;
// Приховуємо форму
}
}
}
}
Лістинг MainForm
// Підключення бібліотек
using System;
using System.Xml;
using System.Windows.Forms;
namespace Tests
{
public partial class MainForm : Form
{
XmlReader xmlReader;
// Ім’я користувача
string PersonName;
// Тема тесту
string Theme;
// загальна кількість питань
int nv;
// вірних відповідей
int RightAnsw;
int position = 0;
// Питання
string qw;
// Варіанти відповідей
string[] answ = new string[4];
// Вірна відповідь
string right;
bool righting;
public MainForm(string TestPath, string personName, string theme)
{
InitializeComponent();
// Ім’я користувача
PersonName = personName;
// Тема тесту
Theme = theme;
MessageBox.Show("Для початку тестування натисніть \"ОК\"", "Тестування");
// Створюємо xmlReader
xmlReader = new XmlTextReader(TestPath);
// Читання xmlReader
xmlReader.Read();
// Зчитування кі-сть питань
ReadNombers();
LoadQwest();
ShowQwest();
}
public void ReadNombers()
{
// пошук вузла <qw>
do xmlReader.Read();
while (xmlReader.Name != "qw");
nv = Convert.ToInt32(xmlReader.GetAttribute("numbers"));
// Читаємо атрибут вузла <qw>
xmlReader.Read();
// Вхід в вузол <qw>
}
public void LoadQwest()
{
position++;
if (position > nv)
Itog();
else
{
// Пошук питань
do xmlReader.Read();
while (xmlReader.Name != "q" + position);
if (xmlReader.Name == "q" + position)
{
qw = xmlReader.GetAttribute("text");
// Зчитування питання
right = xmlReader.GetAttribute("right");
// Зчитування відповіді
xmlReader.Read();
// Вхід в вузол <q>
// Пошук <answers>
do xmlReader.Read();
while (xmlReader.Name != "answers");
xmlReader.Read();
// Вхід в вузол <answers>
answ = xmlReader.Value.Split('|');
// Зберігання відповідей в масив
}
}
}
public void ShowQwest()
{
QwLabel.Text = qw;
// Вивід питання
// Вивід варіантів відповідей
radioButton0.Text = answ[0];
radioButton1.Text = answ[1];
radioButton2.Text = answ[2];
radioButton3.Text = answ[3];
pictureBox2.Enabled = false;
// Блокування кнопки
}
public void Checked()
{
if (righting == true)
RightAnsw++;
}
public void Itog()
{
MessageBox.Show("Тестування завершено!", "Тестування");
FinalForm FF = new FinalForm(PersonName, Theme, nv, RightAnsw);
this.Dispose();
FF.ShowDialog();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
Application.Exit();
}
// Перевірка radioButton на активність
private void radioButton_CheckedChanged(object sender, EventArgs e)
{
righting = false;
if (radioButton0.Checked)
{
if (radioButton0.Text == right)
righting = true;
}
if (radioButton1.Checked)
{
if (radioButton1.Text == right)
righting = true;
}
if (radioButton2.Checked)
{
if (radioButton2.Text == right)
righting = true;
}
if (radioButton3.Checked)
{
if (radioButton3.Text == right)
righting = true;
}
pictureBox2.Enabled = true;
}
private void pictureBox2_Click(object sender, EventArgs e)
{
// Перевірка наявності питань
Checked();
//Завантаження питання
LoadQwest();
//Вивід питання
ShowQwest();
righting = false;
}
}
}
Лістинг FinalForm
// Підключення бібліотек
using System;
using System.Windows.Forms;
using mark;
namespace Tests
{
public partial class FinalForm : Form
{
// Кількість балів
double Mark;
public FinalForm(string PersonName, string Theme, int NumbersOfQwest, int RightAnswers)
{
InitializeComponent();
/ /Заповнюємо текстові поля
NameLabel.Text += PersonName;
ThemeLabel.Text = Theme;
NumbersLabel.Text += NumbersOfQwest.ToString();
RightLabel.Text += RightAnswers.ToString();
// обчислюємо оцінку
// MarkOfQwest = 100 / NumbersOfQwest;
// Mark = MarkOfQwest * RightAnswers;
Mark = mark.MarkClass.Mark(NumbersOfQwest, RightAnswers);
// виводимо оцінку
MarkLabel.Text += Mark.ToString();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}