Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать дерево файлов и папок каталога, помогите с курсовым 
:(
    Опции темы
dogpaul
Дата 2.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Вообщем задание курсовой сделать на Visual C++ что-то типа эмуляции файловой системы...
Т.е. консольку и при вводе команд что-то выполняется...
Вроде консольку с грехом попалам сделал, вот там при вводе команды mount с атрибутами в виде путя на винте должно создаться дерево с файлами и вложенными папками... и т.д.
Может у кого есть какие-нить материалы по этому поводу?
В C++ мало что понимаю, т.к. преподы ужас какие... =(
Помогите... А... =(
PM MAIL   Вверх
Кнером
Дата 2.12.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Цитата
Создать дерево файлов и папок каталога, помогите с курсовым

Цитата(dogpaul @  2.12.2006,  12:50 Найти цитируемый пост)
сделать на Visual C++ что-то типа эмуляции файловой системы...

Одно дело дело пробежать и составить дерево, другое придумать и сделать свою файловую систему.
Считаю, что это две разные вещи. Если я ошибаюсь, поправьте меня.

Добавлено @ 12:27 
dogpaul, уточни, что тебе именно нужно и что поисковики выдают?
PM MAIL WWW ICQ   Вверх
dogpaul
Дата 2.12.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Ну вот какое задание:
Целью данной курсовой работы является изучение организации современных файловых систем и разработка собственной виртуальной файловой системы.
В ходе выполнения работы предполагается реализовать интерфейс командной строки (CLI), через который будет осуществляться работа с виртуальной файловой системой, с следующим набором команд:
•    CD [path] - сделать path текущим каталогом. Если path начинается с "/", то путь - абсолютный, иначе - относительный по отношению к текущему каталогу. Если path не задано - вывести полное имя текущего каталога;
•    DIR - вывести содержимое текущего каталога на экран;
•    HELP [имя команды] – вывести справку по команде. Если имя команды не задано - вывести список всех доступных команд;
•    MOUNT [source] [target] - создание полной копии реальной файловой системы, заданной путем source, в виртуальной системе - target; source - абсолютный путь в реальной файловой системе; target - имя папки в текущем каталоге, куда будет примонтирована реальная файловая система;
•    UMOUNT [path] - удаление каталога из виртуальной файловой системы;
•    EXIT - завершение работы программы.
•    COMPARE file1 file2 - сравнение содержимого файлов (равны или нет);
•    DUPLICATES - поиск всех дубликатов файлов в текущей папке и подкаталогах; выводит список полных путей групп одинаковых файлов.

Что я сделал:

Код

#include <iostream>
#include <stdio.h>

using namespace std;

void InputCommand (string* param){
    char str[256];
    char word[256];
    int j = 0;
    int n_param = 0;
    cin.getline(str, 256);
    for (int i = 0; i < 256 ; i++) {
        if ((str[i] == ' ' || i == '\0' || i == 255) && i != 0) {
            for (int g = 0; g < j; g++) {
                param[n_param] += word[g];
            }
            param[n_param] += '\0';
            n_param++;
            j = 0;
        }else{
            word[j] = str[i];
            j++;
        }
    }   
}
void MountFunction (string source, string data) {
}
void UmountFunction (string path) {
}
void CdFunction (string path) {
}
void DirFunction () {
}
void CompareFunction (string file1, string file2) {

}
void DuplicatesFunction () {
}
void HelpFunction (string command) {
}
bool ProcessCommand (string* param){
    if (strcmp(param[0].c_str(),"mount")==0) {
            MountFunction (param[1], param[2]);
        } else if (strcmp(param[0].c_str(),"umount")==0) {
            UmountFunction (param[1]);
        } else if (strcmp(param[0].c_str(),"cd")==0) {
            CdFunction (param[1]);
        } else if (strcmp(param[0].c_str(),"dir")==0) {
            DirFunction ();
        } else if (strcmp(param[0].c_str(),"compare")==0) {
            CompareFunction (param[1], param[2]);
        } else if (strcmp(param[0].c_str(),"duplicates")==0) {
            DuplicatesFunction ();
        } else if (strcmp(param[0].c_str(),"help")==0) {
            HelpFunction (param[1]);
        } else if (strcmp(param[0].c_str(),"exit")==0) {
            return false;
        } else {
            cout << "Unknown command" << endl;
        }
        return true;
}
int main() {
    while (true) {
        string param[256];
        InputCommand (param);
        if (!ProcessCommand(param)) {
            break;
        }
        cout << endl;
    }
    return 0;
}


З.Ы. ПОнимаю что вопрос не по этой теме, но как не пытался найти так и не нашёл: как сделать ассоциативный массив. Я хочу для команды хэлп это сделать... Что--то вроде array["mount"] = "Описание"...
PM MAIL   Вверх
JackYF
Дата 4.12.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(dogpaul @  2.12.2006,  13:52 Найти цитируемый пост)
как сделать ассоциативный массив. Я хочу для команды хэлп это сделать... Что--то вроде array["mount"] = "Описание"... 


std::map< std::string, std::string > тебе поможет.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Anikmar
Дата 4.12.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Меня настораживает этот пункт задания:
Цитата

MOUNT [source] [target] - создание полной копии реальной файловой системы, заданной путем source, в виртуальной системе - target; source - абсолютный путь в реальной файловой системе; target - имя папки в текущем каталоге, куда будет примонтирована реальная файловая система;


Т.е. из реальной файловой системы должны переноситься в виртуальную как дерево каталогов так и сами файлы... Вопрос: где будет находится данная виртуальная система? Целиком в памяти? - Тогда запросто ее может нехватить....
А вот если в файле (файлах) - то тут уже попахивает неким здоровенным файлом собственной структуры, в котором реализовано что-то вроде FAT и хранятся сами файлы. У меня ощущение, что препод именно этого хочет от данного курсовика.
PM MAIL ICQ   Вверх
likehood
Дата 4.12.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



А по-моему, под монтированием понимается создание символической ссылки на каталог.
PM MAIL   Вверх
Anikmar
Дата 4.12.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата

создание полной копии реальной файловой системы


Не знаю, тогда что это значит...
Но даже если ссылки - то вопрос: это все должно сохраняться между сеансами работы? Еси да - то плясать надо от струткуры хранения, а перенос дерева - это уж не такая сложная задача, на мой взгляд.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.