close

Вход

Забыли?

вход по аккаунту

?

Курсовая Kабардинский (2)

код для вставкиСкачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт математики и компьютерных наук
Кафедра программного обеспечения
КУРСОВАЯ РАБОТА
по курсу: "Языки программирования"
Электронная система тестирования
Выполнила:
Студент группы ИСиТ - 129
Кабардинский Евгений Олегович
Проверил:
Зорин Сергей Анатольевич
Тюмень, 2013
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ3
ОПИСАНИЕ АЛГОРИТМА3
ОПИСАНИЕ ПРАКТИЧЕСКОЙ ЗАДАЧИ5
ПРИЛОЖЕНИЕ (КОД ПРОГРАММЫ)8
ИСТОЧНИКИ ИНФОРМАЦИИ, ИСПОЛЬЗУЕМЫЕ ПРИ РЕАЛИЗАЦИИ12
ВВЕДЕНИЕ
В данном курсовом проекте представлено приложение для тестирования студентов.
ОПИСАНИЕ АЛГОРИТМА В данном приложении реализована возможность прохождения тестов и их редактирование.
Файлы вопросов имеют уникальное расширение ".tst"
Для проведения тестирования необходимо:
1. Отобразить диалоговое окно для выбора файла вопросов.
2. Считать файл вопросов, построенный с использованием специальных тэгов (Для удобства создания тестов рекомендуется пользоваться встроенным редактором ).
3. Записать вопросы и ответы в соответствующие поля.
4. Вывод вопросов на экран и ожидание ответа пользователя.
5. При переходе на следующий или предыдущий вопрос сравнивать ответ пользователя и ответ считанный из файла .
6. Записать данные полученные в пункте 4 в соответствующие поля.
7. После просмотра всех вопросов сделать видимой кнопку "Завершить".
8. По нажатию кнопки "Завершить" вывести информацию о прохождении тестирования.
При открытии теста пользователю дается лишь половина , случайно распределенных вопросов.
При открытии файла вопросов есть возможность редактировать текущие вопросы, введя пароль доступа .
Если файл вопрос не содержит тэгов и/или не соответствует заданной структуре, то на экране отобразится окно с соответствующим сообщением.
Для создания файла вопросов (редактировании):
1. Если происходит редактирования теста , то проверить правильность введенного пароля доступа.
2. Считать вопросы вводимые пользователем , заблокировав "пустые" вопросы, записать в редактируемые поля (при редактировании вопросы и ответы считанные из файла так же записываются в редактируемые поля).
3. При нажатии кнопки "Завершить" отображается диалоговое окно, в котором пользователь выбирает директорию для сохранения, а так же задает имя файла.
4. Запись файла в директорию указанную пользователем с расширением ".est". Записываем соответствующие поля с использованием тэгов.
ОПИСАНИЕ ПРАКТИЧЕСКОЙ ЗАДАЧИ
Цель:
Разработка программы для проведения тестирования студентов.
Задачи:
1. Разработать модель электронной системы тестирования.
2. Составить алгоритмы, считывающие, и записывающие данные с использованием специального набора тэгов, а так - же выводящие данные и обрабатывающие ответы пользователя.
3. Реализовать алгоритмы с помощью языка программирования C#.
4. Провести тестирование программы.
5. Написать отчет о проделанной работе.
Программа должна:
1. Поддерживать загрузку файлов с вопросами;
2. Отображать лишь часть, случайно распределенных вопросов;
3. По окончанию теста, выводить отчет с вопросами, ответами пользователя и правильными ответами.
Так же реализована возможность создавать и редактировать файлы вопросов.
Реализация алгоритма:
1. Тестирование
1.1. Отобразить диалоговое окно для выбора файла вопросов.
1.2. Считать файл вопросов, построенный с использованием специальных тэгов (Для удобства создания тестов рекомендуется пользоваться встроенным редактором ).
1.3. Записать вопросы и ответы в соответствующие поля.
1.4. Вывод вопросов на экран и ожидание ответа пользователя.
1.5. При переходе на следующий или предыдущий вопрос сравнивать ответ пользователя и ответ считанный из файла .
1.6. Записать данные полученные в пункте 4 в соответствующие поля.
1.7. После просмотра всех вопросов сделать видимой кнопку "Завершить".
1.8. По нажатию кнопки "Завершить" вывести информацию о прохождении тестирования.
2. Редактирование
2.1. Считать вопросы вводимые пользователем , заблокировав "пустые" вопросы, записать в редактируемые поля (при редактировании вопросы и ответы считанные из файла так же записываются в редактируемые поля).
2.2. При нажатии кнопки "Завершить" отображается диалоговое окно, в котором пользователь выбирает директорию для сохранения, а так же задает имя файла.
2.3. Запись файла в директорию указанную пользователем с расширением ".est". Записываем соответствующие поля с использованием тэгов.
Реализация программы:
ПРИЛОЖЕНИЕ (КОД ПРОГРАММЫ)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Ets
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main_form());
}
}
}
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;
using System.IO;
namespace Ets
{
public partial class Main_form : Form
{
string patch;
string[] question;
string[] answer;
string[] uans;
bool[] uanswer;
int position = 0;
int length = 0;
bool err=true;
int [] rquest;
public Main_form()
{
InitializeComponent();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void load()
{
try
{
err = false;
FileStream fs = new FileStream(patch, FileMode.Open);
bool startload = true;
StreamReader sr = new StreamReader(fs);
string temp;
temp = sr.ReadLine();
if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'l')
{
temp = temp.Remove(0, 4);
length = Convert.ToInt32(temp);
question = new string[length];
answer = new string[length];
uanswer = new bool[length/2];
uans = new string[length/2];
rquest = new int[length / 2];
}
else { MessageBox.Show("При чтении файла произошла ошибка, попробуйте выбрать другой тест"); startload = false; err = true; }
int i = 0;
while (startload)
{
temp = sr.ReadLine();
if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'q') { temp = temp.Remove(0, 4); question[i] = temp; }
else if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'a') { temp = temp.Remove(0, 4); answer[i] = temp; i++; }
else if (temp[0] == '<' && temp[1] == '\\' && temp[2] == 'e') { break; }
else { MessageBox.Show("При чтении файла произошла ошибка, попробуйте выбрать другой тест"); err = true; break; }
}
редактироватьToolStripMenuItem.Enabled = true;
fs.Close();
sr.Close();
}
catch { MessageBox.Show("Файл не найден"); err = true; }
}
private void rqgen()
{
Random r = new Random();
for (int i = 0; i < rquest.Length; i++)
{
rquest[i] = r.Next(question.Length - 1);
for (int j = 0; j < i; j++)
{
if (rquest[i] == rquest[j]) { i--; }
}
}
}
private void show()
{
label4.Text = String.Format("{0} / {1}", position + 1, rquest.Length);
listBox1.Items.Clear();
listBox1.Items.Add(question[rquest[position]]);
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
patch = openFileDialog1.FileName;
if (patch != null)
{
load(); }
if (!err)
{
rqgen();
show();
}
}
private void button2_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
textBox1.Text = "";
if (position < rquest.Length-1)
{
position++;
}
if (position == rquest.Length - 1) { button3.Visible = true; }
show();
textBox1.Text = uans[position];
}
}
private void button1_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
textBox1.Text = "";
if (position > 0)
{
position--;
}
show();
textBox1.Text = uans[position];
}
}
private string info()
{
int p = 0;
string info = "Результаты тестирования : \n";
for (int i = 0; i < rquest.Length; i++)
{
string temp = "";
if (uanswer[i] == true) { temp = "верно"; p++; }
else { temp = "неверно"; }
info += String.Format("Вопрос №{0} - {4} \nРешено - {1} (Ваш ответ : {2} , Правильный ответ : {3})\n\n", i + 1, temp, uans[i], answer[rquest[i]], question[rquest[i]]);
}
info += String.Format("Итог : {0} правильных из {1}",p,rquest.Length);
return info;
}
private void button3_Click(object sender, EventArgs e)
{
if (!err)
{
uans[position] = textBox1.Text;
for (int i = 0; i < rquest.Length; i++)
{
if (uans[i].ToLower() == answer[rquest[i]].ToLower())
{
uanswer[i] = true;
}
else { uanswer[i] = false; }
}
MessageBox.Show(info());
}
}
private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e)
{
Editor f = new Editor();
f.inside(question, answer);
this.Hide();
f.ShowDialog();
this.Show();
}
private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
{
Editor f = new Editor();
this.Hide();
f.ShowDialog();
this.Show();
}
private void button4_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Программа для проведения тестирования студентов. \nПриложение поддерживает загрузку файлов с вопросами. \nЕсть возможность создавать и редактировать \nсущестующие файлы с вопросами.\nПо окончанию теста, на экран выводится отчет с вопросами,\nответами пользователя и правильными ответами.\nКабардинский Евгений ИСиТ 129-2");
}
}
}
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;
using System.IO;
namespace Ets
{
public partial class Editor : Form
{
public Editor()
{
InitializeComponent();
}
string[] quest = new string[1];
string[] answer = new string[1];
int position = 0;
public void inside(string []q , string [] a)
{
quest = q;
answer = a;
richTextBox1.Text = quest[0];
textBox1.Text = answer[0];
}
private void safe()
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
saveFileDialog1.ShowDialog();
string name = saveFileDialog1.FileName;
if (name[name.Length - 1] == 't' && name[name.Length - 2] == 's' && name[name.Length - 3] == 'e' && name[name.Length - 4] == '.') { }
else { name = name + ".est"; }
FileStream fs = new FileStream(name, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("<\\l " + quest.Length);
for (int i = 0; i < quest.Length; i++)
{
sw.WriteLine("<\\q " + quest[i]);
sw.WriteLine("<\\a " + answer[i]);
}
sw.WriteLine("<\\e");
sw.Close();
fs.Close();
MessageBox.Show("Файл сохранен");
}
private void button3_Click(object sender, EventArgs e)
{
safe();
}
private void button1_Click(object sender, EventArgs e)
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
if (position > 0)
{
position--;
}
label4.Text = String.Format("{0}",position+1);
richTextBox1.Text= quest[position];
textBox1.Text = answer[position];
}
private void button2_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != "" && textBox1.Text != "")
{
quest[position] = richTextBox1.Text;
answer[position] = textBox1.Text;
position++;
if (position == quest.Length)
{
Array.Resize(ref quest, quest.Length + 1);
Array.Resize(ref answer, answer.Length + 1);
}
richTextBox1.Text = quest[position];
textBox1.Text = answer[position];
label4.Text = String.Format("{0}", position + 1);
}
else { MessageBox.Show("Введите Вопрос и/или Ответ"); }
}
private void button4_Click(object sender, EventArgs e)
{
this.Close();
}
private void выйтиToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
safe();
}
}
}
ИСТОЧНИКИ ИНФОРМАЦИИ ИСПОЛЬЗУЕМЫЕ ПРИ РЕАЛИЗАЦИИ
1. http://msdn.microsoft.com/ru-ru/library/system.windows.forms.form(v=vs.110).aspx
2. http://msdn.microsoft.com/ru-ru/library/system.windows.forms.openfiledialog(v=vs.110).aspx
3. http://msdn.microsoft.com/ru-ru/library/system.windows.forms.savefiledialog(v=vs.110).aspx
1
12
Документ
Категория
Рефераты
Просмотров
7
Размер файла
118 Кб
Теги
курсовая, kабардинский
1/--страниц
Пожаловаться на содержимое документа