КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Описание алгоритмаСтруктуры: QLabel: Для хранения или вывода сообщений. QPlainTextEdit: Для расширенного ввода данных. QPushButton: Для выполнения определенных операций при нажатии. QTextBrowser: Для хранения или вывода данных. QTextEdit: Для ввода данных. QProgressBar: Для вывода прогресса выполнения заданий Основные переменные: ● Num – номер выполняемого задания. ● Z1p,…,z10p – вводимые пользователем решения. ● Z1,…z10 – встроенные решения матриц. ● S – ответы. ● Pin – ПИН-код для режима Администратора. Функции: Рис. 5 Функции программы
Описание: 1) Считывание номера из plainTextEdit_2; проверка на проходимость задания; Проверка на правильность ввода задания;
void MainWindow::on_pushButton_2_clicked() { int num = ui->plainTextEdit_2->toPlainText().toInt(); if(num==1) { if(ui->pz1->toPlainText()=="+") ui->textBrowser->setText("3 15\n2 1\n You've' already done this."); else ui->textBrowser->setText("3 15\n2 1"); } ... if(num>10) ui->textBrowser->setText("No such nomber"); if(!(ui->plainTextEdit_2->toPlainText().toInt())||num<1) ui->textBrowser->setText("Something wrong"); } 2)Считывание решения пользователя из plainTextEdit; Сравнение соответствующих решений; Вывод сообщений; Изменение параметра progressBar; Запись о проходимости и количества пройденных заданий. void MainWindow::on_pushButton_clicked(){ QString z1p,z3p,z2p,z4p,z5p,z6p,z7p,z8p,z9p,z10p; int i=0,s; bool f=true; int prog=ui->textBrowser_2->toPlainText().toInt(); int num = ui->plainTextEdit_2->toPlainText().toInt(); ui->textBrowser_3->hide(); ui->label_2->setText(" "); ui->label_3->setText(" "); ui->label_4->setText(" "); ui->label_5->setText(" "); ui->label_6->setText(" "); if (num==1) { z1p=ui->plainTextEdit->toPlainText(); QString z1="3*1-15*2"; s=3*1-15*2; for (i=0;i<=z1p.size()&&f==true;i++) if(z1p[i]!=z1[i]) { ui->label_2->setText("Mistake after"); ui->label_4->setText(QString::number(i)); ui->label_5->setText("element!"); f=false; } if (s!=ui->textEdit_2->toPlainText().toInt()) { ui->label_6->setText("Wrong answer. Check again"); f=false; } if (z1p.size()<z1.size()) { ui->label_6->setText("You missed something or didn't finish term"); f=false; } if (z1p.size()>z1.size()) { ui->label_6->setText("You wrote more then need. Check your derivation"); f=false; } if (z1p.size()==0) { ui->label_6->setText("You didn't write anything."); f=false; } if(f==true) { ui->label_2->setText("Good job!"); if(ui->pz1->toPlainText()!="+") { prog++; ui->textBrowser_2->setText(QString::number(prog)); ui->progressBar->setValue(prog*10); ui->pz1->setText("+"); } }} … if(prog==10) ui->label_10->setText("Congratulations! You know how to find the determinant of matrix. Good luck!");}
3) Проверка ПИН-кода void MainWindow::on_pushButton_pin_clicked(){ int i; bool prpin=true; QString pin="2036", pinp; pinp=ui->textEdit_pin->toPlainText(); for(i=0;i<4;i++) if(pin[i]!=pinp[i]) { ui->label_pin->setText("Wrong PIN! Try again."); prpin=false; } if(prpin==true) { ui->pushButton_ans->show(); ui->pushButton_user->show(); ui->label_pin->setText(" "); ui->pushButton_admin->hide(); ui->pushButton_pin->hide(); ui->label_11->hide(); ui->textEdit_pin->hide(); ui->textEdit_pin->setText(""); }}
4)Вход под администратора.(Доступ к кнопкам) void MainWindow::on_pushButton_admin_clicked(){ui->pushButton_pin->show();ui->textEdit_pin->show();ui->label_11->show();}
5)Вход под пользователя.(Лишение доступа к кнопкам) void MainWindow::on_pushButton_user_clicked(){ ui->pushButton_ans->hide(); ui->pushButton_user->hide(); ui->plainTextEdit->clear(); ui->pushButton_admin->show();} 6)Вывод решения на plainTextEdit_2; Показывает ответ. Доступно только администратору. void MainWindow::on_pushButton_ans_clicked(){ int s; int num = ui->plainTextEdit_2->toPlainText().toInt(); if (num==1) { ui->plainTextEdit->setPlainText("3*1-15*2"); s=3*1-15*2; ui->label_3->setText(QString::number(s));} … }
|