Ім'я файлу: Практична_робота_11.docx
Розширення: docx
Розмір: 353кб.
Дата: 03.04.2023
скачати

Міністерство освіти і науки України

Коледж інженерії та управління

Національного авіаційного університету

Практична робота №11

з дисципліни

«Алгоритми та структури даних»

студента групи 405– ІПЗ

Дмитренка Іллі Сергійовича

Перевірив викладач:

Роман Юрійович Волик

м. Київ 2023 рік

Хід роботи

  1. Опишіть принцип роботи словнику в обраній вами мові програмування.

Словник Typescript - це тип даних, який дозволяє зберігати значення ключа, пов'язаного з певним типом даних. Зазвичай словник складається з пар "ключ-значення", де ключ - це унікальне ім'я, а значення - це тип даних, пов'язаний з цим ключем.

У Typescript словники можуть бути визначені за допомогою типу "Record". Наприклад, наступний код створить словник з ключем типу string і значенням типу number:

let dictionary: Record = { "one": 1, "two": 2, "three": 3 };

  1. Зробіть CRUD операції зі словником.



Рисунок 1 – Лістинг коду



Рисунок 2 – Результат виконання

  1. Створити словник, де ключами будуть дні тижня, а значеннями – список зустрічей, запланованих на цей день. Дозволити користувачеві додавати, редагувати та видаляти зустрічі, а також переглядати всі заплановані зустрічі на певний день.



Рисунок 3 – Результат виконання

Лістинг коду:

// 2
let week: Record> = {
"Monday": ["Прибрати кімнату","Приготувати обід"],
"Tuesday": ["Прочитати книгу", "Подивитися фільм"],
"Wednesday": ["Написати листа другові", "Посадити квіти"],
"Thursday": ["Зробити зарядку", "Поспілкуватися з бабусею"],
"Friday": ["Піти на прогулянку"],
"Saturday": ["Почати вчитися нову мову"],
"Sunday": [],
};


class MeetingScheduler{
private schedule: Record> = {};

constructor(week) {
this.schedule = week;
}
addMeeting(dayOfWeek: string, meeting: string):void{
if (!this.schedule[dayOfWeek]) {
this.schedule[dayOfWeek] = [];
}
this.schedule[dayOfWeek].push(meeting);
}
editMeeting(dayOfWeek: string, index: number, updatedMeeting: string):void{
if (this.schedule[dayOfWeek]){
this.schedule[dayOfWeek][index] = updatedMeeting;
}
}
deleteMeeting(dayOfWeek:string, index: number):void{
if (this.schedule[dayOfWeek]) {
this.schedule[dayOfWeek].splice(index, 1);
}
}
viewMeetings(dayOfWeek:string){
return this.schedule[dayOfWeek] || [];
}
}


// Приклад використання

const scheduler = new MeetingScheduler(week);

scheduler.addMeeting('Monday', 'Weekly team status meeting');

scheduler.addMeeting('Monday', 'Discuss project updates with client');

scheduler.editMeeting('Monday', 0, 'Editing info');


const mondayMeetings = scheduler.viewMeetings('Monday');
console.log(`Monday: `);
console.log(mondayMeetings);

scheduler.deleteMeeting('Monday', 1);

const mondayAfterDeleting = scheduler.viewMeetings('Monday');
console.log(`Monday after deleting: `);
console.log(mondayAfterDeleting);

  1. Необхідно створити менеджер завдань для зберігання інформації про завдання, які має виконувати менеджер. Кожне завдання буде мати унікальний ідентифікатор (id), назву, опис, статус виконання та дату закінчення.



Рисунок 4 – Результат виконання

Лістинг коду:

type TaskStatus = "Виконано" | "Не виконано" | "В процесі";
type Task = {
id: number,
title: string,
description: string,
status: TaskStatus,
dateOfEnd: Date
}

class TaskManager {
private manager: Task[] = [];
addTask(title: string, description: string, dateOfEnd: Date):void{
const id: number = this.manager.length + 1;
const task: Task = {id, title, description, status: "Не виконано", dateOfEnd};
this.manager.push(task);
}
getTaskById(id):Task{
return this.manager.find((task) => task.id === id);
}

editTask(id, title: string, description: string, status: TaskStatus, dateOfEnd: Date):void{
const task: Task = this.getTaskById(id);
if(task){
task.title = title;
task.description = description;
task.status = status;
task.dateOfEnd = dateOfEnd;
}
}
deleteTask(id: number):void{
if(this.getTaskById(id)){
this.manager = this.manager.filter((value) => value.id != id);
}
}
viewTask(id:number){
const task: Task = this.getTaskById(id);
if(task) {
console.log(`ID: ${task.id}`);
console.log(`Title: ${task.title}`);
console.log(`Description: ${task.description}`);
console.log(`Status: ${task.status}`);
console.log(`Date of end: ${task.dateOfEnd}`);
}
}
}


// Приклад використання

const taskManager = new TaskManager();
taskManager.addTask('Перегляд і підготовка презентації проекту', 'Необхідно переглянути та оновити презентацію проекту перед зустріччю з клієнтом.', new Date('2023-04-10'));
taskManager.addTask('Організація внутрішньої конференції', 'Підготувати та організувати внутрішню конференцію для співробітників компанії.', new Date('2023-05-01'));
taskManager.addTask('Розробка нового функціоналу для додатку', 'Розробити та випустити новий функціонал для мобільного додатку.', new Date('2023-04-30'));
taskManager.addTask('Підготовка пропозиції проекту для клієнта', 'Підготувати детальну пропозицію для нового проекту, включаючи обсяг робіт та вартість проекту.', new Date('2023-04-15'));
taskManager.addTask('Організація командного засідання', 'Організувати та провести засідання з командою для обговорення поточних проектів та планів на майбутнє.', new Date('2023-04-20'));

console.log(`Задача під індексом 1: `);
taskManager.viewTask(1);

taskManager.editTask(1, 'Підготовка звіту проекту', 'Підготувати та надіслати звіт проекту клієнту з описом виконаних робіт та результатів.', 'В процесі', new Date('2023-05-07'));


console.log(`Задача під індексом 1(змінена): `);
taskManager.viewTask(1);

taskManager.deleteTask(1);

console.log(`Задача під індексом 1(видалена): `);
taskManager.viewTask(1);
скачати

© Усі права захищені
написати до нас