package edu.school;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;
	/**
	 * Информатика, 8 клас, издателство Просвета, 2017 Автори: Светла Бойчева,
	 * Николина Николова, Елиза Стефанова, Антон Денев Урок 3.3.3. Вложени
	 * условни оператори Задача: RxC001 трябва да направи алгоритъм за
	 * определяне на оценка от тест по шестобалната система. За всеки верен
	 * отговор се дава по 1 точка. Дадена е следната скала за оценяване: 
	 * • 90-100% - Отличен (6) 
	 * • 80-89% - Много добър (5) 
	 * • 70-79% - Добър (4) 
	 * • 60-69% - Среден (3) 
	 * • 0-59% - Слаб (2) 
	 * Помогнете му като направите приложение Quiz, което по зададени брой 
	 * въпроси от тест и брой грешни отговори, определя оценката на теста по 
	 * шестобалната система.
	 * 
	 * Вариант 1.Последователност от единични условни оператори с проверка на
	 * двете гранични условия.
	 */
public class QuizFrame extends JFrame {


	private JPanel contentPane;
	private JTextField txtQuestions;
	private JTextField txtErrors;
	private JLabel lblGrade;
	private JButton btnGrade;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					QuizFrame frame = new QuizFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public QuizFrame() {
		setTitle("\u0422\u0435\u0441\u0442");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 332, 226);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblT1 = new JLabel("T");
		lblT1.setForeground(Color.BLUE);
		lblT1.setFont(new Font("Tahoma", Font.PLAIN, 50));
		lblT1.setBounds(10, 11, 38, 61);
		contentPane.add(lblT1);

		JLabel lblS = new JLabel("\u0421");
		lblS.setForeground(new Color(100, 149, 237));
		lblS.setFont(new Font("Tahoma", Font.PLAIN, 50));
		lblS.setBounds(10, 61, 38, 61);
		contentPane.add(lblS);

		JLabel lblE = new JLabel("E");
		lblE.setForeground(new Color(30, 144, 255));
		lblE.setFont(new Font("Tahoma", Font.PLAIN, 50));
		lblE.setBounds(47, 11, 38, 61);
		contentPane.add(lblE);

		JLabel lblT2 = new JLabel("T");
		lblT2.setForeground(new Color(0, 0, 139));
		lblT2.setFont(new Font("Tahoma", Font.PLAIN, 50));
		lblT2.setBounds(47, 61, 38, 61);
		contentPane.add(lblT2);

		JLabel lblQuestions = new JLabel("\u0411\u0440\u043E\u0439 \u0432\u044A\u043F\u0440\u043E\u0441\u0438");
		lblQuestions.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblQuestions.setBounds(95, 36, 115, 22);
		contentPane.add(lblQuestions);

		txtQuestions = new JTextField();
		txtQuestions.setHorizontalAlignment(SwingConstants.RIGHT);
		txtQuestions.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtQuestions.setBounds(220, 29, 86, 29);
		contentPane.add(txtQuestions);
		txtQuestions.setColumns(10);

		JLabel lblErrors = new JLabel(
				"\u0413\u0440\u0435\u0448\u043D\u0438 \u043E\u0442\u0433\u043E\u0432\u043E\u0440\u0438");
		lblErrors.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblErrors.setBounds(95, 81, 115, 22);
		contentPane.add(lblErrors);

		txtErrors = new JTextField();
		txtErrors.setHorizontalAlignment(SwingConstants.RIGHT);
		txtErrors.setFont(new Font("Tahoma", Font.PLAIN, 14));
		txtErrors.setColumns(10);
		txtErrors.setBounds(220, 74, 86, 29);
		contentPane.add(txtErrors);

		btnGrade = new JButton("\u041E\u0446\u0435\u043D\u043A\u0430");
		btnGrade.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				// Проверка за коректност на входните данни
				int questions;
				int errors;
				try {
					questions = Integer.parseInt(txtQuestions.getText());
					errors = Integer.parseInt(txtErrors.getText());
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					JOptionPane.showMessageDialog(null, "Въведете цели положителни числа!");
					return;
				}

				if (errors > questions) {
					JOptionPane.showMessageDialog(null, "Броят грешки не трябва да\n надвишава броя въпроси!");
					return;
				}

				String grade = "";

				// Пресмятане на процент верни отговори (0-100%)
				double score = 100.0 * (questions - errors) / questions;

				// Последователност от единични условни оператори с проверка на
				// двете гранични условия.
				if (0 <= score && score < 60)
					grade = "Слаб 2";
				if (60 <= score && score < 70)
					grade = "Среден 3";
				if (70 <= score && score < 80)
					grade = "Добър 4";
				if (80 <= score && score < 90)
					grade = "Много добър 5";
				if (90 <= score && score <= 100)
					grade = "Отличен 6";

				// Извеждане на оценката по шестобалната система в етикет.
				lblGrade.setText(grade);
			}
		});
		btnGrade.setFont(new Font("Tahoma", Font.PLAIN, 14));
		btnGrade.setBounds(10, 139, 96, 29);
		contentPane.add(btnGrade);

		lblGrade = new JLabel("");
		lblGrade.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblGrade.setBounds(116, 139, 195, 29);
		contentPane.add(lblGrade);
	}
}
