Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2008, 21:13   #1
veyder21
 
Регистрация: 24.12.2008
Сообщений: 5
По умолчанию прога для тестирования

подскажите кто нить плиз где можно найти листинг или готовую прогу Экзаменатор (прога для тестирования) на C#?
veyder21 вне форума Ответить с цитированием
Старый 27.12.2008, 21:24   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от veyder21 Посмотреть сообщение
подскажите кто нить плиз где можно найти листинг или готовую прогу Экзаменатор (прога для тестирования) на C#?
Написать или заказать за денюжку
ЗЫ. не надо только плакать про бедность студенческую и нехватку времени на кодинг
pu4koff вне форума Ответить с цитированием
Старый 27.12.2008, 22:54   #3
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

так её писать час-полтора от силы... или Вам супер-пупер функции нужны или что-нибудь подобное?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 28.12.2008, 12:56   #4
veyder21
 
Регистрация: 24.12.2008
Сообщений: 5
По умолчанию

дак я и написал ее с чтением из xml-файла.Форма запускается но при запуске не выводится текст из файла а при нажатии на кнопку для вывода следующего вопроса прога виснет и выделяет желтым xmlReader.Read() сразу после объявления Boolean:
Код:
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 Экзаменатор
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
// путь к каталогу файла теста
        private string fpath;
// имя файла теста
        private string fname;
        // XmlReader обеспечивает чтение данных xml-файла
private System.Xml.XmlReader XmlReader;
private string 
    qw,     // вопрос
    pic;    // путь к файлу иллюстрации
        // варианты ответа
private string [] answ=new string[3];
private int
right,      // правильный ответ (номер)
otv,        // выбранный ответ (номер)
n,          // количество правильных ответов
nv,         // общее количество вопросов
mode;       // состояние программы:
            // 0 - вывести первый вопрос (начало работы);
            // 1 - вывести следующий вопрос;
            // 2 - завершение работы программы
        // выводит заголовок теста
private void showHead() 
    // ищем узел <head>
{ do xmlReader.Read();
while(xmlReader.Name!="head");
    // считываем заголовок
xmlReader.Read();
this.Text=xmlReader.Value;
    // выводим из узла <head>
xmlReader.Read();
}
        // выводит описание теста
private void showDescription()
{
    // ищем узел <description>
do xmlReader.Read();
while(xmlReader.Name!="description");
    // считываем описание теста
xmlReader.Read();
label1.Text=xmlReader.Value;
    // выводим из узла <description>
xmlReader.Read();
    // ищем узел вопросов <qw>
do xmlReader.Read();
while(xmlReader.Name!="qw");
    // входим внутрь узла
xmlReader.Read();
}
        // читает вопрос из файла теста
private Boolean getQw()
{
    // считываем тег <q>
    xmlReader.Read();
    if(xmlReader.Name=="q") 
    {
        // здесь прочитан тег <q>,
        // атрибут <text> которого содержит вопрос, а 
        // атрибут src содержит имя файла иллюстрации.

        // извлекаем значение атрибутов:
        qw=xmlReader.GetAttribute("text");
        pic=xmlReader.GetAttribute("src");
        if (!pic.Equals(string.Empty)) pic=fpath+pic;
        // входим внутрь узла
        xmlReader.Read();
        int i=0;
        // считываем данные узла вопроса <q>
        while (xmlReader.Name!="q")
    {
        xmlReader.Read();
            // варианты ответа
if(xmlReader.Name=="a")
{
    // запоминаем правильный ответ
    if(xmlReader.GetAttribute("right")=="yes") right=i;
    // считываем вариант ответа
    xmlReader.Read();
    if (i<3) answ[i]=xmlReader.Value;
    // выходим из узла <a>
    xmlReader.Read();
    i++;
}
    }
        // выходим из узла вопроса <q>
        xmlReader.Read();
        return true;
    }
        // если считанный тег не является 
        //тегом вопроса <q>
    else return false;
}
        // выводит вопрос и варианты ответа
        private void showQw()
        {
            // выводим вопрос
            label1.Text=qw;
            // иллюстрация
            if (pic.Length !=0)
            {
                try {
                    pictureBox1.Image=new Bitmap(pic);
                    pictureBox1.Visible=true;
                    radioButton1.Top=pictureBox1.Bottom+16;
                }
                catch {
                    if (pictureBox1.Visible)
                        pictureBox1.Visible=false;
                    label1.Text +="\n\n\nОшибка доступа к файлу"+pic+".";
                    radioButton1.Top=label1.Bottom+8;
                }
            }
            else {
                if (pictureBox1.Visible)
                    PictureBox1.Visible=false;
                radioButton1.Top=label1.Bottom;
            }
            // варианты ответа
            radioButton1.Text=answ[0];
            radioButton2.Top=radioButton1.Top+24;
            radioButton2.Text=answ[1];
            radioButton3.Top=radioButton1.Top+24;
            radioButton3.Text=answ[2];
            if (radioButton1.Checked) radioButton1.Checked=false;
            if (radioButton2.Checked) radioButton2.Checked=false;
            if (radioButton3.Checked) radioButton3.Checked=false;
            button1.Enabled=false;
        }
veyder21 вне форума Ответить с цитированием
Старый 28.12.2008, 12:57   #5
veyder21
 
Регистрация: 24.12.2008
Сообщений: 5
По умолчанию

Код:
 // выводит оценку пройденного теста
        private void showLevel() 
        {
            // ищем узел оценок <levels>
            do xmlReader.Read();
            while(xmlReader.Name!="levels");
            // входим внутрь узла
            xmlReader.Read();
            // считываем данные узал оценок
            while(xmlReader.Name !="levels") 
            {
                xmlReader.Read();
                if (xmlReader.Name=="level")
                    // n - количество правильных ответов,
                    // проверяем, попадаем ли в категорию
                    if (n>=System.Convert.ToInt32(XmlReader.GetAttribute("score")))
                        break;
            }
            // выводим оценку
            label1.Text="Тестирование завершено.\n"+
                "Всего вопросов:"+nv.ToString+"."+
                "Правильных ответов:"+n.ToString()+".\n"+
                xmlReader.GetAttribute("text");
        }
        // конструктор формы, имеет параметры запуска args
        public void Form1_Activated(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=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"+exc.ToString(),"Ошибка доступа к файлу",MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                    mode=2;
                }
            }
                // не задан файл теста
            else {
                label1.Text="Не задан файл теста.\n"+
                    "Файл необходимо указать"+
                    "В командной строке запуска программы.\n"+
                    "Например: 'exam economics.xml'"+
                    "или 'exam C:\\test.xml'.";
                mode=2;
             }
        }
        // щелчок на кнопке выбора ответа
            private void radioButton_Click(object sender,System.EventArgs e)
            {
                if ((RadioButton)sender==radioButton1) otv=0;
                if ((RadioButton)sender==radioButton2) otv=1;
                if ((RadioButton)sender==radioButton3) otv=2;
                button1.Enabled=true;
            }
              // щелчок на кнопке ОК
        private void button1_Click(object sender, System.EventArgs e)
        {
            switch (mode) {
                case 0:         // начало работы программы
                    radioButton1.Visible=true;
                    radioButton2.Visible=true;
                    radioButton3.Visible=true;
                    this.getQw();
                    this.showQw();
                    mode=1;
                    break;
                case 1:
                    nv++;
                    // правильный ли ответ выбран
                    if (otv==right) n++;
                    if (this.getQw()) this.showQw();
                    else {
                        // больше вопросов нет 
                        radioButton1.Visible=false;
                        radioButton2.Visible=false;
                        radioButton3.Visible=false;
                        pictureBox1.Visible=false;
                        // обработка и вывод результата
                        this.showLevel();
                        // следующий щелчок на кнопке ОК
                        // закроет окно программы
                        mode=2;
                    }
                    break;
                case 2:         // завершение работы программы
                    this.Close();
                    break;
            }
}

        
    }
}
veyder21 вне форума Ответить с цитированием
Старый 28.12.2008, 15:21   #6
veyder21
 
Регистрация: 24.12.2008
Сообщений: 5
По умолчанию

код xml-файла
Код:
<?xml version="1.0" encoding="windows-1251" ?>
<test>
  <head></head>
    <description></description>
      
  <qw>
    <q text="" src=".bmp">
    <a right="yes"></a>
    <a right="no"></a>
    <a right="no"></a>
    </q>
............................
      </qw>
  <levels>
    <level score="10" text="Даны правильные ответы на все вопросы. Оценка - Отлично."/>
    <level score="8" text="Данные ответы не все верны. Оценка - Хорошо."/>
    <level score="6" text="Даные ответы не все верны. Оценка - Удовлетворительно."/>
    <level score="2" text="Вы не справились с данным тестом. Оценка - Неудовлетворительно."/>
    </levels>
  </test>
veyder21 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите написать программу на Delphi для тестирования kovin Помощь студентам 10 05.01.2011 15:16
Помогите. Программа для тестирования. SergeyVS Помощь студентам 3 20.05.2010 17:50
Прога для школы??? Sanek777 Фриланс 6 04.11.2008 19:56
Прога для подсчета tag Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 06.06.2007 12:40
Где найти тесты для тестирования кандидатов на позицию программиста? lexluther Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 28.01.2007 13:29