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

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

Обсуждение

давно
Посетитель
276566
297
28.11.2011, 21:46
общий
Для начала нужно выполнить первые пять пунктов порядка выполнения работы.
давно
Посетитель
276566
297
30.11.2011, 16:22
общий
Здравствуйте! скажите может быть лучше описать все задание полностью в новом вопросе или оставить так как есть.
Неизвестный
01.12.2011, 01:34
общий
Адресаты:
Если Вы хотите изменить текст вопроса, лучше просто мне пришлите новый вариант, а я поправлю прямо здесь.
давно
Посетитель
276566
297
03.12.2011, 22:53
общий
Условие задачи:
Разработать приложение-пакетный менеджер(базу данных о находящихся на некотором узле пакетах программ).
Разновидности пакетов:
1) Пакет, содержащий основную функциональность пользовательского или системного приложения. Все подобные пакеты должны быть в явном виде доступны пользователю через некоторый интерфейс хранилища. Характеризуется признаком установки пакета, именем файла пакета, номером последней версии, номером установленной версии(если он установлен), именем издателя, ссылками на требуемые для его функционирования другие пакеты.
2) Пакет со вспомогательным ПО(библиотеками). Характеристики те же, но данный пакет должен устанавливаться в системе только при наличии хотя бы одного основного пакета, ссылающегося на него.
3) "Пустой" пакет- связан с конкретным пакетом, но не содержит конкретной версии продукта; с этим пакетом обязательно связан пакет другого типа(основной или вспомогательный) последней версии.
Действия:
Для пакетного менеджера:
инициализация списком пакетов, требуемых для первоначальной установки
установка требуемого пользовательского или "пустого" пакета ( с автоматической установкой всех требуемых пакетов)
установка требуемого пользовательского или "пустого" пакета ( с запросом пользователя на установку каждого требуемого пакета)
удаление указанного пользовательского пакета с автоматическим удалением ненужных пакетов со вспомогательным ПО или без него
очистка системы от неиспользуемых вспомогательных пакетов
глобальное обновление системы с выводом данных о каждом обновленном пакете
Для пакета:
добавление пакета в хранилище(* с контролем ацикличности графа зависимостей)
получение информации о состоянии пакета(тип,установлен или нет, текущая и последняя версии, количество связей с другими пакетами каждого типа)
удаление пакета из хранилища, если это возможно(полное удаление, не снос ПО)
обновление пакета
Для пакета со вспомогательным ПО:
разделение пакета на заданное количество частей с указанием их параметров; считать, что все зависимости наследуются пакетами-наследниками
Для непустого пакета(не связанного с пустым):
объединение пакетов заданного набора с заданием параметров и объединением зависимостей(дуюлирующиеся зависимости устраняются)

Считать, что обновление пакета не влияет на функционал
Порядок выполнения работы:
На основе описания задачи определить состав классов
Разработать иерархию классов и схему их взаимодействия
Для каждого класса определить его состояние и необходимые методы
Разработать и отладить все классы. Приложение для отладки реализовать в виде простой диалоговой программы
Разработать и отладить класс, реализующий работу приложения. Предусмотреть в классе возможность сохранения таблицы в файле и ее восстановления
Повторить разработку контейнерного класса(вместе с необходимыми итераторами), используя стандартную библиотеку STL.
давно
Посетитель
276566
297
03.12.2011, 22:54
общий
Здравствуйте! Для начала нужно разработать все необходимые классы и нарисовать схему их взаимодействия, поскольку их сначала должен одобрить преподаватель.
Неизвестный
06.12.2011, 17:57
общий
Адресаты:
Мм, ну, можно что-то типа такого сделать:
[code h=200]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);
};[/code]
Но больно уж замороченная программа, долго писать...
давно
Посетитель
276566
297
06.12.2011, 20:35
общий
Здравствуйте! можете прокомментировать класс.
Неизвестный
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);
};
давно
Посетитель
276566
297
07.12.2011, 09:06
общий
Здравствуйте!В этой программе должно быть примерно 5-6 классов:
Класс "Пакет, содержащий основную функциональность"
Класс "Пакет со вспомогательным ПО(библиотеками)"
Класс ""Пустой" пакет"
Класс "Пакетный менеджер"
Класс "Пакет"
Класс "Таблица"// в которой хранится вся информация о пакетах
Форма ответа