Часть 1
204
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
string fpath; // путь к файлу теста
string fname; // файл теста
// XmlReader обеспечивает чтение данных xml-файла
System.Xml.XmlReader xmlReader;
string qw; // вопрос
// варианты ответа
string[] answ = new string[3];
string pic; // путь к файлу иллюстрации
int right; // правильный ответ (номер)
int otv; // выбранный ответ (номер)
int n; // количество правильных ответов
int nv; // общее количество вопросов
int mode; // состояние программы:
// 0 - начало работы;
// 1 - тестирование;
// 2 - завершение работы
// конструктор формы
Примеры и задачи
205
// (см. также Program.cs )
public Form1(string[] args)
{
InitializeComponent();
radioButton1.Visible = false;
radioButton2.Visible = false;
radioButton3.Visible = false;
// имя файла теста должно быть указано
// в качестве параметра команды запуска программы
if (args.Length > 0)
{
// указано только имя файла теста
if (args[0].IndexOf(":") == -1) {
fpath = Application.StartupPath + "\\";
fname = args[0];
}
else
{
// указан путь к файлу теста
fpath =
args[0].Substring(0,args[0].LastIndexOf("\\")+1);
fname =
args[0].Substring(args[0].LastIndexOf("\\")+1);
}
try
{
// прочитать xml-файл
xmlReader =
Часть 1
206
new System.Xml.XmlTextReader(fpath + fname);
xmlReader.Read();
mode = 0;
n = 0;
// загрузить и показать заголовок теста
this.showHead();
// загрузить и показать описание теста
this.showDescription();
}
catch(Exception exc)
{
label1.Text = "Ошибка доступа к файлу " +
fpath + fname;
MessageBox.Show("Ошибка доступа к файлу.\n" +
fpath + fname + "\n",
"Экзаменатор",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
mode = 2;
}
}
else
{
label1.Text =
"Файл теста необходимо указать " +
"в команде запуска программы.\n" +
"Например: 'exam economics.xml' " +
"или 'exam c:\\spb.xml'.";
Примеры и задачи
207
mode = 2;
}
}
// выводит название (заголовок) теста
private void showHead()
{
// ищем узел
do xmlReader.Read();
while(xmlReader.Name != "head");
// считываем заголовок
xmlReader.Read();
// вывести название теста в заголовок окна
this.Text = xmlReader.Value;
// выходим из узла
xmlReader.Read();
}
// выводит описание теста
private void showDescription()
{
// ищем узел
do
xmlReader.Read();
while(xmlReader.Name != "description");
// считываем описание теста
xmlReader.Read();
Do'stlaringiz bilan baham: |