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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2016, 16:51   #1
Alxdr
Новичок
Джуниор
 
Регистрация: 10.01.2016
Сообщений: 2
По умолчанию Тестовая форма

Есть код. в короткие сроки необходимо воплотить в жизнь тестовую форму начал разбираться возникает проблема по анализу кода, какие объекты должны быть на форме.
Код:
namespace Kursach
{
    public partial class TestForm : Form
    {
private ChoiseButtons buttons;
private Test test;
private string userName;
private List<int> correctAnswers = new List<int>();
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<int> 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)
    {
    }

    }
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 30.03.2016 в 16:57.
Alxdr вне форума Ответить с цитированием
Старый 01.04.2016, 05:16   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Вы этот код сами писали ? Ну или хотя бы наполовину его понимаете ? Мягко скажем написан он в странноватой манере, и похоже это не весь код. А если Вы его не понять где взяли, и пытаетесь собрать к нему форму, то дело - печаль.

Проще глянуть эту тему http://www.programmersforum.ru/showthread.php?t=215919 при надобности - доработать могу до Ваших потребностей.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тестовая программа rUs_LAN Qt и кроссплатформенное программирование С/С++ 2 06.08.2012 22:01
тестовая програма Олександр17 Microsoft Office Word 6 11.02.2011 16:53
Тестовая программа Sarmat) Паскаль, Turbo Pascal, PascalABC.NET 6 24.01.2011 15:21
тестовая програма Олександр17 Microsoft Office Word 1 23.01.2011 05:47