лаб6: виконана
|
@ -108,3 +108,8 @@ utils/table-generator/tables/
|
||||||
utils/table-generator/tables.md
|
utils/table-generator/tables.md
|
||||||
utils/table-generator/activities/
|
utils/table-generator/activities/
|
||||||
utils/table-generator/activities.md
|
utils/table-generator/activities.md
|
||||||
|
|
||||||
|
# Package files
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
|
@ -6,25 +6,12 @@ actionLink: /intro/
|
||||||
footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]"
|
footer: "ECL 2.0 Licensed | Copyright © 2024 [Your Name]"
|
||||||
---
|
---
|
||||||
|
|
||||||
**Виконали:**
|
**Виконав:**
|
||||||
|
|
||||||
*студенти 2-го курсу, групи ІО-23:*
|
*студент 2-го курсу, групи ІО-23:*
|
||||||
|
|
||||||
*Олег ШМУЛЯР [shmuliar1@ukr.net, [@dmytrofiot23](https://t.me/dmytrofiot23)]*
|
|
||||||
|
|
||||||
*Андрій БОДНАР [bodnarandrew123@gmail.com, [@andrux4](https://t.me/andrux4)]*
|
*Андрій БОДНАР [bodnarandrew123@gmail.com, [@andrux4](https://t.me/andrux4)]*
|
||||||
|
|
||||||
*Андрій ШВЕД [andreyfrog26@gmail.com, [@Rhinemann](https://t.me/Rhinemann)]*
|
|
||||||
|
|
||||||
*Євгеній ГОЛОВАТЕНКО [ievgeniigol@gmail.com, [@yevholova](https://t.me/yevholova)]*
|
|
||||||
|
|
||||||
*Вікторія ВОДЯНА [vodyanayaviktoria@gmail.com, [@victoriavodyana](https://t.me/victoriavodyana)]*
|
|
||||||
|
|
||||||
*Михайло КОРБУТ [korbutmykhailo@gmail.com, [@misha1tigr](https://t.me/misha1tigr)]*
|
|
||||||
|
|
||||||
*Олександр ГУРАНЕЦЬ [bacant150@gmail.com, [@Bacant150](https://t.me/Bacant150)]*
|
|
||||||
|
|
||||||
|
|
||||||
**Керівник**
|
**Керівник**
|
||||||
|
|
||||||
*доцент кафедри ОТ ФІОТ, к.т.н., доцент*<span padding-right:5em></span> **Андрій БОЛДАК**
|
*доцент кафедри ОТ ФІОТ, к.т.н., доцент*<span padding-right:5em></span> **Андрій БОЛДАК**
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
# Висновки
|
# Висновки
|
||||||
|
|
||||||
У висновках наводять оцінку отриманих результатів, можливі галузі його використання. Висновки повинні містити в собі коротку узагальнену оцінку результатів розробки, у
|
В результаті проведеної роботи ми розробили модель бази даних, яку можна використовувати для реалізації систем проведення експертних опитувань. В рамках цього проєкту я розробив серверну частину, що надає RESTFUL-інтерфейс для доступу до бази даних. Вона може використовуватися для взаємодії з таблицею питань (question). Для створення RESTful сервісу було використано мови програмування Python та веб-фреймворк Flask.
|
||||||
тому числі і з погляду на їх технічно-економічну ефективність. Необхідно порівняти
|
|
||||||
отримані результати усіх характеристик об’єкта проєктування із завданням і з основними показниками сучасних аналогічних об’єктів.
|
|
||||||
|
|
||||||
Необхідно вказати яке нове технічне рішення покладене в основу проєкту і у чому її
|
Таким чином, створена система забезпечує ефективний та гнучкий інструмент для проведення експертних опитувань. Вона дозволяє автоматизувати процес збору та аналізу відповідей, що значно знижує час та ресурси, необхідні для проведення таких опитувань. Завдяки використанню сучасних технологій, таких як Flask, система має високу продуктивність та може легко масштабуватися відповідно до потреб користувачів.
|
||||||
переваги, що нового було запропоновано самим студентом.
|
|
||||||
|
|
||||||
На базі отриманих висновків можуть надаватися рекомендації по використанню розробки. Вони повинні
|
|
||||||
мати конкретний характер і бути цілком підтверджені проєктом.
|
|
||||||
|
|
||||||
|
Загалом, реалізована модель та серверна частина створюють міцний фундамент для подальшого розвитку та вдосконалення системи експертних опитувань, відкриваючи нові можливості для досліджень та аналізу даних.
|
|
@ -110,4 +110,67 @@ ENGINE = InnoDB;
|
||||||
SET SQL_MODE=@OLD_SQL_MODE;
|
SET SQL_MODE=@OLD_SQL_MODE;
|
||||||
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
|
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
|
||||||
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
|
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
|
||||||
|
```
|
||||||
|
|
||||||
|
## RESTfull-сервіс для керування опитуваннями
|
||||||
|
|
||||||
|
Код серверу (Python, Flask) для таблиці "question":
|
||||||
|
```python
|
||||||
|
from flask import Flask, request
|
||||||
|
import mariadb as mdb
|
||||||
|
import json
|
||||||
|
|
||||||
|
def init_db():
|
||||||
|
try:
|
||||||
|
return mdb.connect(
|
||||||
|
host="10.1.1.36",
|
||||||
|
port=3306,
|
||||||
|
user="andruxa",
|
||||||
|
password="password1",
|
||||||
|
database="odb"
|
||||||
|
)
|
||||||
|
except mdb.Error as e:
|
||||||
|
print(f"Error connecting to MariaDB Platform: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/api/question", methods=["GET", "POST", "PUT", "DELETE"])
|
||||||
|
def api_question():
|
||||||
|
db = init_db()
|
||||||
|
if not db:
|
||||||
|
return '{"error": "Failed to connect to database"}\n', 500
|
||||||
|
|
||||||
|
cur = db.cursor()
|
||||||
|
|
||||||
|
match request.method:
|
||||||
|
case "GET":
|
||||||
|
cur.execute("SELECT id, text, survey_id FROM question;")
|
||||||
|
result = [{"id": row[0], "text": row[1], "survey_id": row[2]} for row in cur]
|
||||||
|
db.close()
|
||||||
|
return json.dumps(result)
|
||||||
|
|
||||||
|
case "POST":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("INSERT INTO question (text, survey_id) VALUES (?, ?);", (data['text'], data['survey_id']))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return '{"success": true}\n'
|
||||||
|
|
||||||
|
case "PUT":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("UPDATE question SET text = ?, survey_id = ? WHERE id = ?;", (data['text'], data['survey_id'], data['id']))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return '{"success": true}\n'
|
||||||
|
|
||||||
|
case "DELETE":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("SELECT id, text, survey_id FROM question WHERE id = ?;", (data['id'],))
|
||||||
|
result = [{"id": row[0], "text": row[1], "survey_id": row[2]} for row in cur]
|
||||||
|
cur.execute("DELETE FROM question WHERE id = ?;", (data['id'],))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return json.dumps(result)
|
||||||
|
|
||||||
```
|
```
|
|
@ -1,4 +1,33 @@
|
||||||
# Тестування працездатності системи
|
# Тестування працездатності системи
|
||||||
|
Для тестування системи використовувся додаток Postman
|
||||||
|
## Запуск сервера
|
||||||
|
![](./startFlask.png)
|
||||||
|
|
||||||
*В цьому розділі необхідно вказати засоби тестування, навести вихідні коди тестів та результати тестування.*
|
## Метод POST
|
||||||
|
|
||||||
|
### POST QUESTION
|
||||||
|
#### Запит та відповідь
|
||||||
|
![](./post.png)
|
||||||
|
|
||||||
|
#### Перевірка за допомогою GET
|
||||||
|
![](./get.png)
|
||||||
|
|
||||||
|
## Метод PUT
|
||||||
|
|
||||||
|
### PUT QUESTION
|
||||||
|
#### Запит та відповідь
|
||||||
|
![](./put.png)
|
||||||
|
|
||||||
|
#### Перевірка за допомогою GET
|
||||||
|
![](./get2.png)
|
||||||
|
|
||||||
|
## Метод DELETE
|
||||||
|
|
||||||
|
### DELETE QUESTION
|
||||||
|
#### Запит та відповідь
|
||||||
|
![](./delete.png)
|
||||||
|
|
||||||
|
#### Перевірка за допомогою GET
|
||||||
|
![](./get3.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 24 KiB |
|
@ -0,0 +1,56 @@
|
||||||
|
from flask import Flask, request
|
||||||
|
import mariadb as mdb
|
||||||
|
import json
|
||||||
|
|
||||||
|
def init_db():
|
||||||
|
try:
|
||||||
|
return mdb.connect(
|
||||||
|
host="10.1.1.36",
|
||||||
|
port=3306,
|
||||||
|
user="andruxa",
|
||||||
|
password="password1",
|
||||||
|
database="odb"
|
||||||
|
)
|
||||||
|
except mdb.Error as e:
|
||||||
|
print(f"Error connecting to MariaDB Platform: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/api/question", methods=["GET", "POST", "PUT", "DELETE"])
|
||||||
|
def api_question():
|
||||||
|
db = init_db()
|
||||||
|
if not db:
|
||||||
|
return '{"error": "Failed to connect to database"}\n', 500
|
||||||
|
|
||||||
|
cur = db.cursor()
|
||||||
|
|
||||||
|
match request.method:
|
||||||
|
case "GET":
|
||||||
|
cur.execute("SELECT id, text, survey_id FROM question;")
|
||||||
|
result = [{"id": row[0], "text": row[1], "survey_id": row[2]} for row in cur]
|
||||||
|
db.close()
|
||||||
|
return json.dumps(result)
|
||||||
|
|
||||||
|
case "POST":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("INSERT INTO question (text, survey_id) VALUES (?, ?);", (data['text'], data['survey_id']))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return '{"success": true}\n'
|
||||||
|
|
||||||
|
case "PUT":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("UPDATE question SET text = ?, survey_id = ? WHERE id = ?;", (data['text'], data['survey_id'], data['id']))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return '{"success": true}\n'
|
||||||
|
|
||||||
|
case "DELETE":
|
||||||
|
data = request.get_json()
|
||||||
|
cur.execute("SELECT id, text, survey_id FROM question WHERE id = ?;", (data['id'],))
|
||||||
|
result = [{"id": row[0], "text": row[1], "survey_id": row[2]} for row in cur]
|
||||||
|
cur.execute("DELETE FROM question WHERE id = ?;", (data['id'],))
|
||||||
|
db.commit()
|
||||||
|
db.close()
|
||||||
|
return json.dumps(result)
|