09.12.2019, 02:06 [+3 UTC]
в нашей команде: 4 047 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.78 (18.11.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
29.11.2019, 17:59

Последний вопрос:
08.12.2019, 23:49
Всего: 151207

Последний ответ:
08.12.2019, 18:03
Всего: 259544

Последняя рассылка:
08.12.2019, 17:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.09.2010, 17:15 »
Elektreg
гранд мерси, а я и не подумал через потокосцепление решать [вопрос № 179846, ответ № 262961]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 1486
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 690
Gluck
Статус: 9-й класс
Рейтинг: 476

Перейти к консультации №:
 

Консультация онлайн # 184596
Раздел: • С / С++
Автор вопроса: Maverick (Посетитель)
Отправлена: 28.11.2011, 12:18
Поступило ответов: 0

Здравствуйте! У меня возникли сложности с таким вопросом:Помогите написать программу "Пакетный менеджер", ОС Windows Xp, Borland Builder C++ 6,2006, Visual Studio 2005.Код прокомментировать. Ссылка на файл с заданием:http://rfpro.ru/upload/6783
Условие задачи:
Разработать приложение-пакетный менеджер(базу данных о находящихся на некотором узле пакетах программ).
Разновидности пакетов:
1) Пакет, содержащий основную функциональность пользовательского или системного приложения. Все подобные пакеты должны быть в явном виде доступны пользователю через некоторый интерфейс хранилища. Характеризуется признаком установки пакета, именем файла пакета, номером последней версии, номером установленной версии(если он установлен), именем издателя, ссылками на требуемые для его функционирования другие пакеты.
2) Пакет со вспомогательным ПО(библиотеками). Характеристики те же, но данный пакет должен устанавливаться в системе только при наличии хотя бы одного основного пакета, ссылающегося на него.
3) "Пустой" пакет- связан с конкретным пакетом, но не содержит конкретной версии продукта; с этим пакетом обязательно связан пакет другого типа(основной или вспомогательный) последней версии.
Действия:
Для пакетного менеджера:
инициализация списком пакетов, требуемых для первоначальной установки
установка требуемого пользовательского или "пустого" пакета ( с автоматической установкой всех требуемых пакетов)
установка требуемого пользовательского или "пустого" пакета ( с запросом пользователя на установку каждого требуемого пакета)
удаление указанного пользовательского пакета с автоматическим удалением ненужных пакетов со вспомогательным ПО или без него
очистка системы от неиспользуемых вспомогательных пакетов
глобальное обновление системы с выводом данных о каждом обновленном пакете
Для пакета:
добавление пакета в хранилище(* с контролем ацикличности графа зависимостей)
получение информации о состоянии пакета(тип,установлен или нет, текущая и последняя версии, количество связей с другими пакетами каждого типа)
удаление пакета из хранилища, если это возможно(полное удаление, не снос ПО)
обновление пакета
Для пакета со вспомогательным ПО:
разделение пакета на заданное количество частей с указанием их параметров; считать, что все зависимости наследуются пакетами-наследниками
Для непустого пакета(не связанного с пустым):
объединение пакетов заданного набора с заданием параметров и объединением зависимостей(дуюлирующиеся зависимости устраняются)

Считать, что обновление пакета не влияет на функционал
Порядок выполнения работы:
На основе описания задачи определить состав классов
Разработать иерархию классов и схему их взаимодействия
Для каждого класса определить его состояние и необходимые методы
Разработать и отладить все классы. Приложение для отладки реализовать в виде простой диалоговой программы
Разработать и отладить класс, реализующий работу приложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления
Повторить разработку контейнерного класса(вместе с необходимыми итераторами), используя стандартную библиотеку STL.
Для начала нужно разработать все необходимые классы и нарисовать схему их взаимодействия, поскольку их сначала должен одобрить преподаватель.

Последнее редактирование 03.12.2011, 22:57 [неизвестный]

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 184596
Maverick
Посетитель

ID: 276566

# 1

= общий = | 28.11.2011, 21:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Для начала нужно выполнить первые пять пунктов порядка выполнения работы.

Maverick
Посетитель

ID: 276566

# 2

= общий = | 30.11.2011, 16:22 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Здравствуйте! скажите может быть лучше описать все задание полностью в новом вопросе или оставить так как есть.

Verena

# 3

= общий = | 01.12.2011, 01:34
Maverick:

Если Вы хотите изменить текст вопроса, лучше просто мне пришлите новый вариант, а я поправлю прямо здесь.

Maverick
Посетитель

ID: 276566

# 4

= общий = | 03.12.2011, 22:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Условие задачи:
Разработать приложение-пакетный менеджер(базу данных о находящихся на некотором узле пакетах программ).
Разновидности пакетов:
1) Пакет, содержащий основную функциональность пользовательского или системного приложения. Все подобные пакеты должны быть в явном виде доступны пользователю через некоторый интерфейс хранилища. Характеризуется признаком установки пакета, именем файла пакета, номером последней версии, номером установленной версии(если он установлен), именем издателя, ссылками на требуемые для его функционирования другие пакеты.
2) Пакет со вспомогательным ПО(библиотеками). Характеристики те же, но данный пакет должен устанавливаться в системе только при наличии хотя бы одного основного пакета, ссылающегося на него.
3) "Пустой" пакет- связан с конкретным пакетом, но не содержит конкретной версии продукта; с этим пакетом обязательно связан пакет другого типа(основной или вспомогательный) последней версии.
Действия:
Для пакетного менеджера:
инициализация списком пакетов, требуемых для первоначальной установки
установка требуемого пользовательского или "пустого" пакета ( с автоматической установкой всех требуемых пакетов)
установка требуемого пользовательского или "пустого" пакета ( с запросом пользователя на установку каждого требуемого пакета)
удаление указанного пользовательского пакета с автоматическим удалением ненужных пакетов со вспомогательным ПО или без него
очистка системы от неиспользуемых вспомогательных пакетов
глобальное обновление системы с выводом данных о каждом обновленном пакете
Для пакета:
добавление пакета в хранилище(* с контролем ацикличности графа зависимостей)
получение информации о состоянии пакета(тип,установлен или нет, текущая и последняя версии, количество связей с другими пакетами каждого типа)
удаление пакета из хранилища, если это возможно(полное удаление, не снос ПО)
обновление пакета
Для пакета со вспомогательным ПО:
разделение пакета на заданное количество частей с указанием их параметров; считать, что все зависимости наследуются пакетами-наследниками
Для непустого пакета(не связанного с пустым):
объединение пакетов заданного набора с заданием параметров и объединением зависимостей(дуюлирующиеся зависимости устраняются)

Считать, что обновление пакета не влияет на функционал
Порядок выполнения работы:
На основе описания задачи определить состав классов
Разработать иерархию классов и схему их взаимодействия
Для каждого класса определить его состояние и необходимые методы
Разработать и отладить все классы. Приложение для отладки реализовать в виде простой диалоговой программы
Разработать и отладить класс, реализующий работу приложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления
Повторить разработку контейнерного класса(вместе с необходимыми итераторами), используя стандартную библиотеку STL.

Maverick
Посетитель

ID: 276566

# 5

= общий = | 03.12.2011, 22:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Здравствуйте! Для начала нужно разработать все необходимые классы и нарисовать схему их взаимодействия, поскольку их сначала должен одобрить преподаватель.

Verena

# 6

= общий = | 06.12.2011, 17:57
Maverick:

Мм, ну, можно что-то типа такого сделать:

class Packet {
	string name;
	bool installed;
	int last_version;
	int installed_version;
	vector<Packet*> dependency;
	Packet* parent;
public:
	Packet ();
	Packet (const Packet& p);
	~Packet ();
	void Load (string n, int lv, vector<Packet*> &d);
	void Merge (Packet* p);
	void Divide (int count);
	void Uninstall ();
	void Install ();
	void GetInfo (string &n, int &lv, int &iv, bool &inst, int& depcount);
};
	
class Manager {
	vector<Packet*> all;
	Packet* system;
public:
	Manager ();
	Manager (vector<Packet*> &def);
	~Manager ();
	int Install (string packet, int ver, bool dependency = true);
	int Uninstall (string packet, int ver, bool dependency = true);
	void ClearSystem ();
	void UpdateSystem ();
	void AddPacket (Packet* p);
	void AddPacket (string n, int lv, vector<Packet*> &d);
	void AddPacket (string n, int lv, vector<string> &d);
};

Но больно уж замороченная программа, долго писать...

Maverick
Посетитель

ID: 276566

# 7

= общий = | 06.12.2011, 20:35 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Здравствуйте! можете прокомментировать класс.

Verena

# 8

= общий = | 07.12.2011, 01:30

class Packet {
	string name; //название
	bool installed; //признак установки
	int last_version; //последняя версия
	int installed_version; //установленная версия
	vector<Packet*> dependency; //список зависимых пакетов
	Packet* parent; //родительский пакет (ОС для основных)
public:
	Packet ();
	Packet (const Packet& p);
	~Packet ();
	void Load (string n, int lv, vector<Packet*> &d); //загрузка пакета
	void Merge (Packet* p); //объединение с другим пакетом
	void Divide (int count); //деление на несколько пакетов
	void Uninstall (); //удаление
	void Install (); //установка
	void GetInfo (string &n, int &lv, int &iv, bool &inst, int& depcount); //получение информации
};
	
class Manager {
	vector<Packet*> all; //все пакеты в системе
	Packet* system; //корневой пакет - ОС
public:
	Manager ();
	Manager (vector<Packet*> &def); //инициализация списком пакетов
	~Manager ();
	int Install (string packet, int ver, bool dependency = true); //установка пакета по имени и версии с или без автоустановки зависимых
	int Uninstall (string packet, int ver, bool dependency = true); //удаление -||-
	void ClearSystem (); //чистка системы
	void UpdateSystem (); //обновление системы
	void AddPacket (Packet* p); //добавление пакета в разных вариантах
	void AddPacket (string n, int lv, vector<Packet*> &d);
	void AddPacket (string n, int lv, vector<string> &d);
};

Maverick
Посетитель

ID: 276566

# 9

= общий = | 07.12.2011, 09:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Здравствуйте!В этой программе должно быть примерно 5-6 классов:
Класс "Пакет, содержащий основную функциональность"
Класс "Пакет со вспомогательным ПО(библиотеками)"
Класс ""Пустой" пакет"
Класс "Пакетный менеджер"
Класс "Пакет"
Класс "Таблица"// в которой хранится вся информация о пакетах

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13755 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.78 от 18.11.2019
Версия JS: 1.34 | Версия CSS: 3.35