На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Тесты ПДД - система обучения правилам дорожного движения

КУРСОВАЯ РАБОТА, ТЕСТЫ, ПДД, ПРАВИЛА ДОРОЖНОГО ДВИЖЕНИЯ, INTELLIJ IDEA, JAVA, THYMELEAF, БАЗА ДАННЫХ, SQL .Данный проект идеально подходит для курсовой работы. В нём используется база данных MySql, она находится в самом проекте. Интерфейс приложения понятный для всех.

Задание

Разработать приложение на Java с использованием базы данных для управления тестами, вопросами, ответами, выполнения тестов и просмотра результатов тестов правил дорожного движения. Программа должна позволять добавлять и изменять тесты ПДД, вопросы и ответы к ним, просматривать их, выполнять тесты, просмратривать результаты тестирования, а также управлять личными данными пользователя и просматривать отчеты о ранее выполненных тестах. 

Функционал программы

    В приложении есть 2 вида пользователей:

а)  Администратор;

б)  Пользователь;

   Администратор имеет доступ ко всему функционалу, может добавлять и изменять любые данные.

   Пользователь имеет возможность выполнения тестов, просмотра результата, а также доступ к просмотру личных данных и изменении их. Может просматривать результаты ранее выполненных тестов.

   Функции программы:

а) Авторизация и регистрация;

б) Добавление тестов и вопросов с ответами к ним;

в) Изменение тестов и вопросов с ответами к ним;

г) Просмотр информации о пользователях, тестах и вопросов с ответами к ним;

д) Просмотр результатов тестирования с обозначениями правильных и неправильных ответов;

е) Просмотр результатов ранее выполненных тестов;

ё) Просмотр и изменение личных данных.

Фрагмент программного кода (форма авторизации)

@Controller
@RequestMapping("/admin/tests/{testId}/questions")
@RequiredArgsConstructor
public class AdminQuestionController {

    @Autowired
    private final TestRepository testRepository;

    private final QuestionRepository questionRepository;

    @GetMapping("/manage")
    public String manageQuestions(@PathVariable Long testId, Model model) {
        TestEntity test = testRepository.findById(testId).orElse(null);
        if (test == null) {
            return "redirect:/admin/dashboard";
        }
        model.addAttribute("test", test);
        return "admin_manage_questions";
    }
@PostMapping("/save")
    public String saveQuestion(
            @PathVariable Long testId,
            @RequestParam String questionText,
            @RequestParam String answer1,
            @RequestParam String answer2,
            @RequestParam(required = false) String answer3,
            @RequestParam(required = false) String answer4,
            @RequestParam Integer correctAnswer,
            HttpSession session,
            RedirectAttributes redirectAttributes) {


        session.removeAttribute("errors");
        session.removeAttribute("formData");

        Map<String, String> errors = new HashMap<>();
        Map<String, String> formData = new HashMap<>();


        formData.put("questionText", questionText);
        formData.put("answer1", answer1);
        formData.put("answer2", answer2);
        formData.put("answer3", answer3 != null ? answer3 : "");
        formData.put("answer4", answer4 != null ? answer4 : "");
        session.setAttribute("formData", formData);


        if (questionText == null || questionText.trim().isEmpty()) {
            errors.put("questionText", "Текст вопроса обязателен");
        }
        if (answer1 == null || answer1.trim().isEmpty()) {
            errors.put("answer1", "Ответ 1 обязателен");
        }
        if (answer2 == null || answer2.trim().isEmpty()) {
            errors.put("answer2", "Ответ 2 обязателен");
        }
        if (correctAnswer == null) {
            errors.put("correctAnswer", "Укажите правильный ответ");
        }


        List<Integer> existingAnswers = new ArrayList<>();
        if (answer1 != null && !answer1.trim().isEmpty()) existingAnswers.add(1);
        if (answer2 != null && !answer2.trim().isEmpty()) existingAnswers.add(2);
        if (answer3 != null && !answer3.trim().isEmpty()) existingAnswers.add(3);
        if (answer4 != null && !answer4.trim().isEmpty()) existingAnswers.add(4);

        if (correctAnswer != null && !existingAnswers.contains(correctAnswer)) {
            errors.put("correctAnswer", "Выберите существующий ответ");
        }

        if (!errors.isEmpty()) {
            session.setAttribute("errors", errors);
            return "redirect:/admin/tests/" + testId + "/questions/add";
        }


        TestEntity test = testRepository.findById(testId).orElse(null);
        if (test == null) {
            return "redirect:/admin/dashboard";
        }

        Question question = Question.builder()
                .text(questionText.trim())
                .test(test)
                .build();

        List<Answer> answers = new ArrayList<>();
        addAnswerIfNotEmpty(answer1, 1, correctAnswer, question, answers);
        addAnswerIfNotEmpty(answer2, 2, correctAnswer, question, answers);
        addAnswerIfNotEmpty(answer3, 3, correctAnswer, question, answers);
        addAnswerIfNotEmpty(answer4, 4, correctAnswer, question, answers);

        question.setAnswers(answers);
        questionRepository.save(question);


        session.removeAttribute("formData");
        redirectAttributes.addFlashAttribute("success", "Вопрос успешно добавлен");
        return "redirect:/admin/tests/" + testId + "/questions/manage";
    }

    private void addAnswerIfNotEmpty(String text, int number, int correctAnswer, Question question, List<Answer> answers) {
        if (text != null && !text.trim().isEmpty()) {
            answers.add(Answer.builder()
                    .text(text.trim())
                    .correct(number == correctAnswer)
                    .question(question)
                    .build());
        }
    }

Пояснения по запуску программы

Для запуска программы необходимо иметь postgreSQL или другую  и выполнить файл pdd_test_db.sql из корня проекта для создания базы даннных, далее в файле application.properties изменить значения в случае другого пути и использования другой базы данных:

Данные для входа администратора создаются вручную в базе данных

Содержание архива

  •    Исходник программы для InyellijIDEA на языке Java, база данных, пояснительная записка к курсовой работе, диаграммы
Купить 3500,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)
Тесты ПДД - система обучения правилам дорожного движения

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

3500,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Тесты ПДД.zip
7458393
Оцени работу

рейтинг

Тесты ПДД - система обучения правилам дорожного движения
Веб-приложение на Java с использованием базы данных для обучения правилам дорожного движения, посредством решения тестов
Категория: Образование
Стоимость: 3500,00