Скачать 493.14 Kb.
|
_timeLeft -= TimeSpan.FromMilliseconds( t.Interval ); if( Settings.Mode == UserMode.Learn ) outTimeLeft.Text = String.Format( "неограниченно" ); else { outTimeLeft.Text = String.Format("{0:D2}:{1:D2}", _timeLeft.Minutes, _timeLeft.Seconds); if( _timeLeft <= TimeSpan.Zero ) CheckAnswer(); } } private void cmdAnswer_Click( object sender, EventArgs e ) { CheckAnswer(); } private void CheckAnswer() { var totalCount = 0; var rightCount = 0; for( int i = 0; i < tableLayoutPanelSteps.Controls.Count; i++ ) { var ctl = ( ControlStep )tableLayoutPanelSteps.GetControlFromPosition( 0, i ); if( _solverSteps[ i ].ExpressionEditable ) { totalCount++; if( ExpressionHelper.AreExpressionsEqual( ctl.exprStep.Text, ( string )ctl.exprStep.Tag ) ) rightCount++; else ctl.exprStep.BackColor = Color.Red; } if( _solverSteps[ i ].ResultEditable ) { totalCount++; if( ExpressionHelper.AreExpressionsEqual( ctl.resultStep.Text, ( string )ctl.resultStep.Tag ) ) rightCount++; else ctl.resultStep.BackColor = Color.Red; } } var stepPercentRight = ( double )rightCount * 100 / totalCount; timerTimeout.Enabled = false; cmdAnswer.Enabled = false; ulong answer; var isAnswerRight = UInt64.TryParse( inAnswer.Text, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowThousands, null, out answer ); isAnswerRight &= answer == _requiredAnswer; if( !isAnswerRight ) inAnswer.BackColor = Color.Red; inAnswer.Enabled = false; tableLayoutPanelSteps.Enabled = false; const double answerWeightPercent = 20; const int maxMark = 10; var percentRight = (100 - answerWeightPercent) * stepPercentRight / 100 + Convert.ToInt32( isAnswerRight ) * answerWeightPercent; var mark = ( int )Math.Round( percentRight / 10 ); outMark.Text = String.Format( "{0} из {1}", mark, maxMark ); outRightAnswer.Text = _requiredAnswer.ToString(); } private void FormMain_KeyUp( object sender, KeyEventArgs e ) { // cheat if( e.Alt & e.Control & e.Shift & e.KeyCode == Keys.Z ) { for( int i = 0; i < tableLayoutPanelSteps.Controls.Count; i++ ) { var ctl = ( ControlStep )tableLayoutPanelSteps.GetControlFromPosition( 0, i ); ctl.varStep.Text = ( string )ctl.varStep.Tag; ctl.exprStep.Text = ( string )ctl.exprStep.Tag; ctl.resultStep.Text = ( string )ctl.resultStep.Tag; } } } private void cmdRestart_Click( object sender, EventArgs e ) { var set = new FormSetNumbers(); set.ShowDialog( this ); _leftNumber = set.Value1; _rightNumber = set.Value2; StartTest(); } private void menuHelp_Click( object sender, EventArgs e ) { } private void menuChangeMode_Click( object sender, EventArgs e ) { var formLogin = new FormLogin(); formLogin.ShowDialog(); outUser.Text = String.IsNullOrEmpty( Settings.User ) ? "(обучение)" : Settings.User; GenerateNumbers( _rnd, ref _leftNumber, ref _rightNumber ); StartTest(); } } } // ExpressionHelper.cs using System; using System.Text; namespace DigitalDuality.GraduateWork { public static class ExpressionHelper { /// /// Сравнивает два мат. выражения на равенство, почти в точности. /// public static bool AreExpressionsEqual( string expr1, string expr2 ) { var e1 = NormalizeExpression( expr1 ); var e2 = NormalizeExpression( expr2 ); return String.Equals( e1, e2, StringComparison.CurrentCultureIgnoreCase ); } /// /// Приводит выражение к упрощённому виду. /// /// /// фильтр -> пробелы, ведущие нули, ^1 - optional, * между скобками. /// private static string NormalizeExpression( string expr ) { var sb = new StringBuilder(); for( int i = 0; i < expr.Length; i++ ) { char? chPrev = i > 0 ? (char?)expr[ i - 1 ] : null; char ch = expr[ i ]; char? chNext = i < expr.Length - 1 ? (char?)expr[ i + 1 ] : null; if( ch == ' ' ) continue; if( ch == '0' && chPrev != null && !Char.IsDigit( chPrev.Value ) ) continue; // костыль if( ch == '^' && chNext != null && chNext == '1' ) { i += 2; continue; } if( ch == '*' && chPrev != null && chPrev == ')' && chNext != null && chNext == '(' ) { continue; } sb.Append( ch ); } return sb.ToString(); } } } // FormLogin.cs using System; using System.Windows.Forms; namespace DigitalDuality.GraduateWork { public partial class FormLogin: Form { private bool _loginEntered; public FormLogin() { _loginEntered = false; InitializeComponent(); } private void cmdExit_Click( object sender, EventArgs e ) { Application.Exit(); } private void FormLogin_FormClosed( object sender, FormClosedEventArgs e ) { if( !_loginEntered ) Application.Exit(); } private void cmdReset_Click( object sender, EventArgs e ) { inServer.Text = "localhost"; inPort.Value = 5200; } private void cmdLogin_Click( object sender, EventArgs e ) { Settings.User = inLearnMode.Checked ? String.Empty : inLogin.Text; Settings.Password = inPassword.Text; Settings.Server = inServer.Text; Settings.Port = (int)inPort.Value; _loginEntered = true; Close(); } private void inControlMode_CheckedChanged( object sender, EventArgs e ) { var inMode = (RadioButton)sender; viewLogin.Enabled = inMode.Checked; } } } |
Федеральное агентство связи Государственное образовательное учреждение... Программа составлена в соответствии с требованиями Федерального государственного образовательного стандарта начального общего образования... | Федеральное агентство связи Государственное образовательное учреждение... Когда умцик накопил достаточный опыт и достиг наглядных результатов в практической и научной деятельности, Министерство здравоохранения... | ||
Федеральное государственное образовательное бюджетное учреждение... ... | Рабочая программа дисциплины «Информатика» Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Поволжский государственный... | ||
Федеральное агентство по образованию федеральное государственное... Федеральное государственное автономное образовательное учреждение высшего профессионального образования | Федеральное агентство воздушного транспорта федеральное государственное... Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования | ||
Федеральное агентство по образованию федеральное государственное... Изотова Елена Анатольевна – учитель биологии муниципальной средней общеобразовательной школы №1 г. Галича | Федеральное агентство по образованию государственное образовательное... Государственное образовательное учреждение высшего профессионального образования «Ставропольская государственная медицинская академия»... | ||
Федеральное агентство по образованию федеральное государственное... «Теория и практика благотворительной помощи университетам. Зарубежный опыт», выполняемому в рамках «Программы развития сфу на 2007–2010... | Нир научно-исследовательская работа Университет – Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Сибирский государственный... | ||
Федеральное агентство воздушного транспорта московский государственный... Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования | Федеральное агентство связи федеральное государственное образовательное... Университете системы равноправных отношений между студентами, сотрудниками вуза и его администрацией, принимает настоящий Этический... | ||
Федеральное агентство по образованию государственное образовательное... Утверждены: Ученым советом Федеральным государственным бюджетным образовательным учреждением высшего профессионального образования... | Федеральное агентство по образованию государственное образовательное... Утверждены: Ученым советом Федеральным государственным бюджетным образовательным учреждением высшего профессионального образования... | ||
Российской Федерации Федеральное агентство по рыболовству Федеральное... Г. Г., Авдеева Е. В., Шеховцев Л. Н., Шибаев С. В., Орлов Е. К., Уманский С. А. Калининград: Федеральное государственное бюджетное... | Федеральное агентство по образованию и науке РФ федеральное государственное... Форма обучения – очная, заочная, заочная (сокращенная) на базе впо, очно-заочная (вечерняя) на базе спо |