Автор работы: Пользователь скрыл имя, 01 Декабря 2013 в 19:31, курсовая работа
Розробка ефективних систем генерації завдань для тестування знань, незважаючи на наявність відомих розробок, залишається актуальною, що обумовлено наступними факторами: досить високою вартістю представлених розробок для споживача; неможливістю створення високоефективних тестів та баз завдань для контролю якості знань за певним фахом; невирішеністю проблеми перевірки якості запропонованих тестів; представлені системи не надають засобів інтеграції в єдину комплексну систему.
Об’єктом даного дослідження є процес розробки бази вимог щодо організації перевірки якості знань, що дозволить спростити та автоматизувати процес формування питань у білеті для визначення рівня знань студента.
ВСТУП 7
1 АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ ТА ПОСТАНОВКА ЗАДАЧІ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 9
2 РОЗРОБКА УНІВЕРСАЛЬНОГО ВІДНОШЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 12
3 РОЗРОБКА КОНЦЕПТУАЛЬНОЇ СХЕМИ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» ЗА ER-ПРИНЦИПОМ 14
4 ОБҐРУНТУВАННЯ ВИБОРУ МОДЕЛІ ДАНИХ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 17
4.1 Ієрархічна модель даних 17
4.2 Мережева модель даних 19
4.3 Реляційна модель даних 20
4.4 Об’єктно-орієнтована модель даних 22
5 ПРОЕКТУВАННЯ НОРМАЛІЗОВАНИХ ВІДНОШЕНЬ ПРЕДМЕТНОЇ ОБЛАСТІ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 23
6 ОЦІНКА СПРОЕКТОВАНИХ ВІДНОШЕНЬ БАЗИ ДАНИХ 30
«БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 30
7 РОЗРОБКА ВИХІДНИХ ФОРМ БАЗИ ДАНИХ 33
«БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 33
8 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ ОРГАНІЗАЦІЇ ТА УПРАВЛІННЯ ДАНИМИ БАЗИ «БАЗА ВИМОГ ЩОДО ОРГАНІЗАЦІЇ ПЕРЕВІРКИ ЯКОСТІ ЗНАНЬ» 37
8.1 Розробка схеми-алгоритму реалізації запитів 37
8.2 Обґрунтування використання мови програмування для управління організованою базою даних 44
8.3 Основні команди та оператори мови програмування 46
8.4 Розробка схеми-алгоритму реалізації програмного забезпечення для бази даних 48
ВИСНОВКИ 51
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 52
Оператор IS NULL використовується в тому випадку коли потрібно розрізнити неправильне та невідоме значення.
При реалізації запитів команда GROUP BY дає можливість визначити підмножину значень в полі в терміналах другого поля, і застосовує функцію аргументу до такої підмножини.
HAVING – визначає критерії,
які використовуються для
Для інтерактивного використання створеної бази даних реалізовано програмне забезпечення. Його використання надає можливість користування базою даних особам, що не мають розуміння про структуру бази даних чи фізичне розміщення даних.
База даних «База завдань для перевірки якості знань за певним фахом» працює за наступним алгоритмом (Додаток Г):
Крок 1. Завантажується головна сторінка.
Крок 2. Проводиться вибір дії над базою даних.
Крок 3. Якщо вибрано винонання запиту, то переходимо до Кроку 4, якщо вибрано редагування даних - до Кроку 9.
Крок4. Виконується вибір потрібного і-го запиту.
Крок 5. Введення критеріїв для виконання запиту.
Крок 6. Виконання операцій реляційної алгебри над відношеннями у відповідності до введених критеріїв.
Крок 7. Виведення результатів виконання запиту.
Крок 8. Повернення до Кроку 2.
Крок 9. Редагування і додавання даних.
Крок 10. Вихід.
Схема алгоритму реалізації програмного забезпечення для бази даних «База вимог щодо організації перевірки якості знань» зображено на рисунку 8.4.1 Лістинг запитів наведено в додатку А. Приклад виконання запиту наведено в додатку В. Інструкція користувача програми наведена в додатку Б.
Рисунок 8.4.1 - Схема алгоритму програмного забезпечення для бази даних “ База вимог щодо організації перевірки якості знань ”
В курсовій роботі була розроблена «База вимог щодо організації перевірки якості знань». Враховуючи запити, які необхідно реалізувати, було проведено детальний аналіз предметної області та виявлено всі сутності та їх атрибути.
При цьому отримані результати відповідають технічному завданню:
- Кількість критеріїв пошуку, не менше 2;
- Потужність універсального відношення, дорівнює 30;
- Кількість сутностей, рівне 12;
- Форма нормалізації відношень, рівна 3 НФ;
- Кількість вихідних форм, дорівнює 10-ми;
- Кількість запитів, що реалізуються, рівне 10;
- Мова програмування – MS SQL.
Нормалізація схеми бази даних предметної області "Вимоги щодо організації перевірки якості знань" допомогла виключити надлишковість інформації, виділила кращі властивості при зміні і вилученні даних.
В процесі проектування було розроблено «Базу вимог щодо організації перевірки якості знань» створено групу запитів, що аналізують спроектовану предметну область та відображають потрібну користувачеві інформацію.
ДОДАТКИ
Лістинг запитів
package com.sasha.kursach.dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import
com.sasha.kursach.dbconnector.
import
com.sasha.kursach.query.
import
com.sasha.kursach.query.
public class CommonQueryDao {
private Connection connection = Connector.getInstance().
private QueryResponse commonQuery(String query, List<String> columnsNames) {
Statement statement = null;
ResultSet resultSet = null;
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
}
if (resultSet != null) {
try {
ResultSetMetaData metaData = resultSet.getMetaData();
QueryResponse queryResponse = new QueryResponse();
queryResponse.setColumnsName(
int columnAmount = metaData.getColumnCount();
while (resultSet.next()) {
Cortege cortege = new Cortege();
for (int i = 1; i <= columnAmount; i++) {
cortege.addValue(resultSet.
}
queryResponse.addCortege(
}
return queryResponse;
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
private <T> List<T> createList(T... items) {
List<T> list = new ArrayList<T>();
for (T i : items) {
list.add(i);
}
return list;
}
public QueryResponse getAlltasks(String qualificationName) {
String query = "SELECT * FROM TASK";
List<String> list = createList("Код теми", "Номер в темі", "Текст", "Тип");
return commonQuery(query, list);
}
public QueryResponse firstQuery(String qualificationName) {
String query = "SELECT NAME, CODE, TYPE FROM OPPP WHERE QUALIFICATION_CODE IN (SELECT Q_CODE FROM QUALIFICATION WHERE Q_NAME = '"
+ qualificationName + "');";
List<String> list = createList("Назва", "Код", "Тип");
return commonQuery(query, list);
}
public QueryResponse secondQuery_1(String oPppName) {
String query = "select * from SKILL where SKILL.CODE in ( select
DISTINCT SKILL.CODE from (SKILL inner join COMPETENCE_SKILL on
SKILL.CODE = COMPETENCE_SKILL.SKILL_CODE inner join COMPETENCE on COMPETENCE_SKILL.COMPETENCE_
+ oPppName + "'));";
List<String> list = createList("Код", "Зміст");
return commonQuery(query, list);
}
public QueryResponse secondQuery_2(String oPppName) {
String query = "select * from PRACTICE where PRACTICE.NAME in(
select DISTINCT PRACTICE.NAME from (PRACTICE inner join COMPETENCE_PRACTICE
on PRACTICE.NAME = COMPETENCE_PRACTICE.PRACTICE_
+ oPppName + "'));";
List<String> list = createList("Назва", "Зміст");
return commonQuery(query, list);
}
public QueryResponse thirdQuery(String knowledgeBranchName) {
String query = "SELECT CODE FROM OPPP WHERE KNOWLEDGE_BRANCH_CODE IN (SELECT CODE FROM KNOWLEDGE_BRANCH WHERE NAME = '"
+ knowledgeBranchName + "');";
List<String> list = createList("Код");
return commonQuery(query, list);
}
public QueryResponse fourthQuery_1(String knowledgeBranchName,
String oPppName, String competenceCode) {
String query = "select * from SKILL where SKILL.CODE in ( select
DISTINCT SKILL.CODE from (SKILL inner join COMPETENCE_SKILL on SKILL.CODE
= COMPETENCE_SKILL.SKILL_CODE inner join COMPETENCE on COMPETENCE_SKILL.COMPETENCE_
+ oPppName
+ "') AND KNOWLEDGE_BRANCH_CODE in (select kb.CODE from KNOWLEDGE_BRANCH as kb where kb.NAME like '"
+ knowledgeBranchName
+ "') and COMPETENCE.CODE = '"
+ competenceCode + "'))";
List<String> list = createList("Код", "Зміст");
return commonQuery(query, list);
}
public QueryResponse fourthQuery_2(String knowledgeBranchName,
String oPppName, String competenceCode) {
String query = "select * from PRACTICE where PRACTICE.NAME in(
select DISTINCT PRACTICE.NAME from (PRACTICE inner join COMPETENCE_PRACTICE
on PRACTICE.NAME = COMPETENCE_PRACTICE.PRACTICE_
+ oPppName
+ "') AND KNOWLEDGE_BRANCH_CODE in (select kb.CODE from KNOWLEDGE_BRANCH as kb where kb.NAME like '"
+ knowledgeBranchName
+ "') and COMPETENCE.CODE = '"
+ competenceCode + "'));";
List<String> list = createList("Назва", "Зміст");
return commonQuery(query, list);
}
public QueryResponse fifthQuery(String oPppName, String skillCode) {
String query = "SELECT sm.NAME AS SEMANTIC_MODULE_NAME, SM.CODE AS SEMANTIC_MODULE_CODE, d.D_NAME AS DISCIPLINE_NAME "
+ "FROM DISCIPLINE AS d INNER JOIN SEMANTIC_MODULE AS sm ON d.D_NAME = SM.DISCIPLINE_NAME WHERE d.D_NAME IN ( SELECT op.DISCIPLINE_NAME FROM OPPP_DISCIPLINE AS op INNER JOIN OPPP ON op.OPPP_CODE = OPPP.CODE WHERE OPPP.NAME LIKE '"
+ oPppName
+ "') AND d.D_NAME IN( SELECT ds.DISCIPLINE_NAME FROM DISCIPLINE_SKILL AS ds INNER JOIN SKILL ON ds.SKILL_CODE = SKILL.CODE WHERE SKILL.CODE = '"
+ skillCode + "');";
List<String> list = createList("Назва змістовного модуля",
"Код змістовного модуля", "Назва дисципліни");
return commonQuery(query, list);
}
public QueryResponse sixthQuery(String oPppName) {
String query = "SELECT * FROM DISCIPLINE WHERE DISCIPLINE.D_NAME IN
(SELECT OPPP_DISCIPLINE.DISCIPLINE_
+ oPppName + "'));";
List<String> list = createList("Назва", "Кількість академічних годин",
"Кількість національних кредитів", "Кількість кредитів ECTS",
"Вид контролю", "Назва циклу");
return commonQuery(query, list);
}
public QueryResponse seventhQuery(String qualificationName,
String productionFunctionName) {
String query = "SELECT TYPICAL_TASK.TT_CODE, TYPICAL_TASK.CONTENT
FROM TYPICAL_TASK, PRODUCTION_FUNCTION, QUALIFICATION WHERE PRODUCTION_FUNCTION.PF_NAME
= TYPICAL_TASK.PRODUCTION_
+ productionFunctionName
+ "' AND PRODUCTION_FUNCTION.
+ qualificationName + "';";
List<String> list = createList("Код", "Зміст");
return commonQuery(query, list);
}
public QueryResponse eighthQuery_1(String qualificationName,
String productionFunctionName, String typicalTaskCode) {
String query = "select * from SKILL where SKILL.CODE in ( select
DISTINCT SKILL.CODE from (SKILL inner join TYPICAL_TASK_SKILL
on SKILL.CODE = TYPICAL_TASK_SKILL.SKILL_CODE inner join TYPICAL_TASK
on TYPICAL_TASK_SKILL.TYPICAL_
+ qualificationName
+ "') and PRODUCTION_FUNCTION.PF_NAME like '"
+ productionFunctionName
+ "' and TYPICAL_TASK.TT_CODE = '"
+ typicalTaskCode + "'))";
List<String> list = createList("Код", "Зміст");
return commonQuery(query, list);
}
public QueryResponse eighthQuery_2(String qualificationName,
String productionFunctionName, String typicalTaskCode) {
String query = "select * from PRACTICE where PRACTICE.NAME in( "
+ "select DISTINCT PRACTICE.NAME from (PRACTICE inner join TYPICAL_TASK_PRACTICE
on PRACTICE.NAME = TYPICAL_TASK_PRACTICE.
+ qualificationName
+ "') and PRODUCTION_FUNCTION.PF_NAME like '"
+ productionFunctionName + "' and TYPICAL_TASK.TT_CODE = '"
+ typicalTaskCode + "'))";
List<String> list = createList("Назва", "Зміст");
return commonQuery(query, list);
}
public QueryResponse ninthQuery(String oPppName, String disciplineName,
String semanticModuleName) {
String query = "select TOPIC.CODE, TOPIC.NAME from TOPIC inner
join SEMANTIC_MODULE on TOPIC.SEMANTIC_MODULE_CODE = SEMANTIC_MODULE.CODE
inner join DISCIPLINE on SEMANTIC_MODULE.DISCIPLINE_
+ oPppName
+ "' and DISCIPLINE.D_NAME like '"
+ disciplineName
+ "' and SEMANTIC_MODULE.NAME like '"
+ semanticModuleName
+ "'";
List<String> list = createList("Код", "Назва");
return commonQuery(query, list);
}
public QueryResponse tenthQuery(String oPppName, String disciplineName,
String semanticModuleName, String topicName) {
String query = "select TASK.NUMBER_IN_TOPIC, TASK.TEXT, TASK.TYPE
from TASK inner join TOPIC on TASK.TOPIC_CODE = TOPIC.CODE inner join
SEMANTIC_MODULE on TOPIC.SEMANTIC_MODULE_CODE = SEMANTIC_MODULE.CODE
inner join DISCIPLINE on SEMANTIC_MODULE.DISCIPLINE_
+ oPppName
+ "' and DISCIPLINE.D_NAME like '"
+ disciplineName
+ "' and SEMANTIC_MODULE.NAME like '"
+ semanticModuleName
+ "' and TOPIC.NAME like '" + topicName + "'";
List<String> list = createList("Номер", "Текст", "Тип");
return commonQuery(query, list);
}
}
<%@ include file="/WEB-INF/pages/include.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/
<html>
<head>
<title>Kursach</title>
<meta http-equiv="Content-type" content="text/html" charset="UTF-8">
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="stylesheet"
href="${pageContext.request.
</head>
<body>
<div id="all">
<div id="header">
<h1>${title}</h1>
</div>
<!--end header-->
<div id="sidebar">
<ul id="menu">
<li><a href="${pageContext.request.
<li><a href="${pageContext.request.
<li><a href="${pageContext.request.
</ul>
</div>
<!--end sidebar-->
<div id="content">
<h4><span class="query" >Визначити освітньо-професійні програми підготовки (назва, шифр, тип), навчання за якими забезпечить можливість отримання певної кваліфікації.</span></h4>
<form action="${pageContext.request.
method="post">
<p>
<span>Кваліфікація: </span> <input type="text" name="qualification"
size="50" /> <input type="submit" value="Виконати запит" />
</p>
</form>
<c:if test="${not empty responseQuery}">
<h4><span class="zagl">Кваліфікація:
</span>${qualificationValue}</
<center>
<h3>
<span>Освітньо-професійні програми підготовки </span>
</h3>
</center>
Информация о работе База требований к организации проверки знаний