49721 (Автоматизированная обучающая система по дисциплине "Программирование"), страница 5

2016-07-30СтудИзба

Описание файла

Документ из архива "Автоматизированная обучающая система по дисциплине "Программирование"", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49721"

Текст 5 страницы из документа "49721"

private ChoiseButtons buttons;

private DirectoryInfo[] lecturesDirectories;

private DirectoryInfo currentLectureDirectory;

private Point startPosition = new Point(5, 15);

private Size buttonSize = new Size(200, 30);

private int distance = 5;

private Modes currentMode;

public LecturesForm(string folderPath)

{

InitializeComponent();

buttons = new ChoiseButtons(ButtonTypes.RadioButton, startPosition.X, startPosition.Y, buttonSize.Width, buttonSize.Height, distance);

DirectoryInfo directory = new DirectoryInfo(folderPath);

lecturesDirectories = directory.GetDirectories();

foreach (DirectoryInfo lectureDirectory in lecturesDirectories)

{

groupBoxLectures.Controls.Add(buttons.AddNextButton(lectureDirectory.Name));

}

SetChooseLectureMode();

}

private void button1_Click(object sender, EventArgs e)

{

if (currentMode == Modes.ChooseLecture)

{

List selected = buttons.GetSelected();

if (selected.Count == 0)

{

MessageBox.Show("Выберите лекцию!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}

else

{

currentLectureDirectory = lecturesDirectories[selected[0]];

try

{

FileStream fileStream = new FileStream(currentLectureDirectory.FullName + "\\lecture", FileMode.Open);

StreamReader streamReader = new StreamReader(fileStream);

richTextBoxLecture.Text = streamReader.ReadToEnd();

streamReader.Close();

fileStream.Close();

}

catch

{

TestForm.ShowCriticalErrorMessage("Не найден файл с лекцией\nПриложение будет закрыто");

}

}

SetLecturesMode();

}

else

{

InitForm form = new InitForm();

if (form.ShowDialog() == DialogResult.OK)

{

new TestForm(currentLectureDirectory.FullName, currentLectureDirectory.Name, form.UserName, this).Show();

}

}

}

private void SetLecturesMode()

{

currentMode = Modes.Lecture;

buttonChoose.Text = "Тест";

richTextBoxLecture.Visible = true;

linkLabelResults.Visible = false;

groupBoxLectures.Visible = false;

richTextBoxLecture.Dock = DockStyle.Fill;

linkLabelBack.Visible = true;

this.MaximumSize = new Size();

this.MinimumSize = new Size();

this.Size = new Size(739, 419);

this.MaximizeBox = true;

this.Text = currentLectureDirectory.Name;

buttonChoose.Select();

}

private void SetChooseLectureMode()

{

currentMode = Modes.ChooseLecture;

linkLabelResults.Visible = true;

buttonChoose.Text = "Выбрать";

richTextBoxLecture.Visible = false;

groupBoxLectures.Visible = true;

linkLabelBack.Visible = false;

this.Text = "Выбор лекции";

this.MaximumSize = new Size(739, 419);

this.MinimumSize = new Size(739, 419);

this.Size = new Size(739, 419);

this.MaximizeBox = false;

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

SetChooseLectureMode();

}

private void LecturesForm_VisibleChanged(object sender, EventArgs e)

{

if (Visible == true)

{

SetChooseLectureMode();

}

}

private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)

{

new ResultsForm().ShowDialog();

}

private void panel2_Paint(object sender, PaintEventArgs e)

{

}

}

}

Код тестовой формы

namespace Kursach

{

public partial class TestForm : Form

{

private ChoiseButtons buttons;

private Test test;

private string userName;

private List correctAnswers = new List();

private Point startPosition = new Point(5, 15);

private Size buttonSize = new Size(200, 30);

private int distance = 5;

private Form parentForm;

public TestForm(string path, string testName, string userName, Form formToClose)

{

parentForm = formToClose;

formToClose.Hide();

InitializeComponent();

this.userName = userName;

try

{

test = new Test(testName, path);

}

catch (Exception)

{

ShowCriticalErrorMessage("Один из файлов тестов имеет неверный формат\nПриложение будет закрыто");

}

test.BeginTest();

Question question = test.CurrentQuestion;

buttons = new ChoiseButtons(ButtonTypes.CheckboxButton, startPosition.X, startPosition.Y, buttonSize.Width, buttonSize.Height, distance);

InitQuestionWindow(question);

questionsGroupBox.Select();

}

private void InitQuestionWindow(Question question)

{

ButtonTypes type = (question.CorrectAnswers.Count != 1) ? ButtonTypes.CheckboxButton : ButtonTypes.RadioButton;

buttons.Reset(type);

questionsGroupBox.Controls.Clear();

this.Text = question.QuestonName;

this.textBoxTest.Text = question.QuestonText;

for (int i = 0; i < question.Answers.Count; i++)

{

buttons.AddNextButton(question.Answers[i + 1]);

questionsGroupBox.Controls.Add(buttons[i]);

}

}

public static void ShowCriticalErrorMessage(string message)

{

ShowErrorMessage(message, "Критическая ошибка");

Environment.Exit(1);

}

private static void ShowInfoMessage(string info, string message)

{

ShowMessage(message, info, MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private static void ShowErrorMessage(string info, string message)

{

ShowMessage(message, info, MessageBoxButtons.OK, MessageBoxIcon.Error);

}

private static void ShowMessage(string info, string message, MessageBoxButtons buttons, MessageBoxIcon icon)

{

MessageBox.Show(message, info, buttons, icon);

}

private void buttonNextQuestion_Click(object sender, EventArgs e)

{

List selected = buttons.GetSelected();

bool isCorrect = false;

if (selected.Count == test.CurrentQuestion.CorrectAnswers.Count)

{

isCorrect = true;

foreach (int correctQuestionNumber in test.CurrentQuestion.CorrectAnswers)

{

if (!selected.Contains(correctQuestionNumber - 1))

{

isCorrect = false;

}

}

}

if (isCorrect) correctAnswers.Add(test.CurrentQuestion.QuestionNumber);

if (!test.IsTestEnded)

{

InitQuestionWindow(test.GoToNextQuestion());

}

else

{

EndTest();

}

}

private void EndTest()

{

FileStream testFileStream = new FileStream("data\\results.txt", FileMode.Append);

StreamWriter testStreamWriter = new StreamWriter(testFileStream);

testStreamWriter.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\t" + test.TestName + "\t" + userName + ": " + correctAnswers.Count + "/" + test.QuestionsCount);

testStreamWriter.Close();

testFileStream.Close();

DialogResult userDecision = MessageBox.Show("Ваш результат - " + correctAnswers.Count + "/" + test.QuestionsCount + "\nПерейти к выбору лекций?", "Тест окончен", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (userDecision == System.Windows.Forms.DialogResult.Yes)

{

parentForm.Show();

this.Close();

}

else

{

Environment.Exit(0);

}

}

private void SetChooseLectureMode()

{

questionsGroupBox.Visible = false;

buttonNextQuestion.Visible = false;

textBoxTest.Visible = false;

}

private void TestForm_FormClosing(object sender, FormClosingEventArgs e)

{

if (parentForm.Visible == false)

{

parentForm.Close();

}

}

private void TestForm_Load(object sender, EventArgs e)

{

}

}

}

Код формы результатов

namespace Kursach

{

public partial class ResultsForm : Form

{

public ResultsForm()

{

InitializeComponent();

try

{

FileStream fileStream = new FileStream("data\\results.txt", FileMode.Open);

StreamReader streamReader = new StreamReader(fileStream);

textBox1.Text = streamReader.ReadToEnd();

this.Select();

streamReader.Close();

fileStream.Close();

}

catch

{

textBox1.Text = "Никто не проходил тесты";

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

}

}

Код информационной формы

namespace Kursach

{

public partial class InitForm : Form

{

public InitForm()

{

InitializeComponent();

}

public string UserName

{

get { return textBoxName.Text + " " + textBoxSurname.Text; }

}

private void buttonBeginTest_Click(object sender, EventArgs e)

{

DialogResult = System.Windows.Forms.DialogResult.OK;

}

private void InitForm_Load(object sender, EventArgs e)

{

}

}

}

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4121
Авторов
на СтудИзбе
667
Средний доход
с одного платного файла
Обучение Подробнее