Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам

Автор работы: Пользователь скрыл имя, 21 Ноября 2011 в 09:41, дипломная работа

Описание работы

Целью дипломной работы является упростить работу с файлами и каталогами, а также операции над ними. Другими словами, необходимо создать файловый менеджер с поддержкой обзора каталогов, перемещения по ним, копирования, удаления, переименования файлов и каталогов, запуск, правка, поиск файлов по маске и пути, а также mp3-файлов по ID3-параметрам.
Актуальность исследования определяется тем, что сейчас, когда компьютер стал незаменимым атрибутом современной жизни, появилась необходимость в инструменте для работы с файловой структурой, в том числе mp3-файлами.

Содержание работы

ВВЕДЕНИЕ
1. АНАЛИЗ ИСХОДНЫХ ДАННЫХ И ПОСТАНОВКА ЗАДАЧИ
1.1 Анализ предметной области
1.2 Анализ аналогов и прототипов
1.3 Перечень задач, подлежащих решению в процессе разработки
1.4 Входная, постоянная, выходная информации
2 ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Выбор и обоснование средств и методов решения для реализации проекта
2.2 Функциональные назначения программного обеспечения
3 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ
4 ЭКОНОМИЧЕСКАЯ ЧАСТЬ
4.1 Правовые аспекты использования программного обеспечения
4.2 Расчет себестоимости разработанного программного продукта
4.2.1 Общие сведения
4.2.2 Расчет себестоимости программного продукта
5 ОХРАНА ТРУДА
5.1 Охрана жизнедеятельности на производстве
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А Техническое задание
ПРИЛОЖЕНИЕ Б Описание программы
ПРИЛОЖЕНИЕ В Программа и методика испытания
ПРИЛОЖЕНИЕ Г Руководство оператора
ПРИЛОЖЕНИЕ Г Руководство программиста
ПРИЛОЖЕНИЕ Д Содержание электронного носителя
ПРИЛОЖЕНИЕ Л Листинг программных модулей

Файлы: 20 файлов

0. Титульник(г).docx

— 14.89 Кб (Просмотреть файл, Скачать файл)

1. Содержание.docx

— 37.02 Кб (Просмотреть файл, Скачать файл)

2. Введение(г).docx

— 19.66 Кб (Просмотреть файл, Скачать файл)

3. Глава 1. Анализ предметной области(г).docx

— 40.31 Кб (Просмотреть файл, Скачать файл)

4. Глава 2. Проектирование программного обеспечения.docx

— 50.35 Кб (Просмотреть файл, Скачать файл)

5. Глава 3. Реализация и тестирование(г).docx

— 27.09 Кб (Просмотреть файл, Скачать файл)

6. Глава 4. Экономическая часть(г).docx

— 51.33 Кб (Просмотреть файл, Скачать файл)

7. Глава 5. Охрана труда(г).docx

— 53.86 Кб (Просмотреть файл, Скачать файл)

8. Заключение(г).docx

— 25.06 Кб (Просмотреть файл, Скачать файл)

9. Список используемых источников (г).docx

— 16.99 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Ж - листинг.docx

— 83.75 Кб (Скачать файл)

    'Death Metal','Pranks','Soundtrack','Euro-Techno','Ambient',

    'Trip-Hop','Vocal','Jazz+Funk','Fusion','Trance','Classical',

    'Instrumental','Acid','House','Game','Sound Clip','Gospel','Noise',

    'Alternative Rock','Bass','Punk','Space','Meditative','Instrumental Pop',

    'Instrumental Rock','Ethnic','Gothic','Darkwave','Techno-Industrial','Electronic',

    'Pop-Folk','Eurodance','Dream','Southern Rock','Comedy','Cult','Gangsta',

    'Top 40','Christian Rap','Pop/Funk','Jungle','Native US','Cabaret','New Wave',

    'Psychadelic','Rave','Showtunes','Trailer','Lo-Fi','Tribal','Acid Punk',

    'Acid Jazz','Polka','Retro','Musical','Rock & Roll','Hard Rock','Folk',

    'Folk-Rock','National Folk','Swing','Fast Fusion','Bebob','Latin','Revival',

    'Celtic','Bluegrass','Avantgarde','Gothic Rock','Progressive Rock',

    'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus',

    'Easy Listening','Acoustic','Humour','Speech','Chanson','Opera',

    'Chamber Music','Sonata','Symphony','Booty Bass','Primus','Porn Groove',

    'Satire','Slow Jam','Club','Tango','Samba','Folklore','Ballad',

    'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo',

    'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House',

    'Hardcore','Terror','Indie','BritPop','Negerpunk','Polsk Punk','Beat',

    'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C',

    'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop');

var

  frSearchmp3: TfrSearchmp3;

implementation 

{$R *.dfm}

{$R WindowsXP.res}

var

   FileName: string;  // имя или маскафайла

cDir: string;

   n: integer;       // количество файлов, удовлетворяющих  запросу

function ReadID3Tag(FileName: string): TID3Tag;

var

  FS: TFileStream;

  Buffer: array [1..128] of Char;

begin 

FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

try

FS.Seek(-128, soFromEnd);

FS.Read(Buffer, 128); 

with Result do

begin

ID := Copy(Buffer, 1, 3);

Titel := Copy(Buffer, 4, 30);

Artist := Copy(Buffer, 34, 30);

Album := Copy(Buffer, 64, 30);

Year := Copy(Buffer, 94, 4);

Comment := Copy(Buffer, 98, 30);

Genre := Ord(Buffer[128]);

end; 

finally

    FS.Free;

end; 

end; 

// поиск файлов

procedure TfrSearchmp3.Find;

var

   SearchRec: TSearchRec; // информация о файле или каталоге

i,j: Integer; 

begin 

i:=0; j:=0;

if edt1.Text<>'' then inc(i);

if edt2.Text<>'' then inc(i);

if edt3.Text<>'' then inc(i);

if edt4.Text<>'' then inc(i);

if edt5.Text<>'' then inc(i);

if edt6.Text<>'' then inc(i); 

GetDir(0,cDir); // получить  имя текущего каталога 

if cDir[length(cDir)] <> '\' then cDir := cDir+'\'; 

if FindFirst(FileName, faAnyFile,SearchRec) = 0 then 

repeat

if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then

begin

      With ReadID3Tag(SearchRec.Name) Do

       Begin

         edt7.Text:=ID;

         edt8.Text:=Titel;

if ((edt1.Text=edt8.Text) and (edt8.Text<>'')) then inc(j);

         edt9.Text:=Artist;

if ((edt2.Text=edt9.Text) and (edt9.Text<>'')) then inc(j);

         edt10.Text:=Album;

if ((edt3.Text=edt10.Text) and (edt10.Text<>'')) then inc(j);

         edt11.Text:=Year;

if ((edt4.Text=edt11.Text) and (edt11.Text<>'')) then inc(j);

         edt12.Text:=Comment;

if ((edt5.Text=edt12.Text) and (edt12.Text<>'')) then inc(j);

         If (Genre>=0) and (Genre<=146) Then

          edt13.Text:=Genres[Genre]

         Else

          edt13.Text:='N/A';

if ((edt6.Text=edt13.Text) and (edt13.Text<>'')) then inc(j);

       End;

if ((i=j) and (i<>0)) then

begin

lst1.Items.Add(cDir +  SearchRec.Name);

n := n + 1;

end;

end;

until FindNext(SearchRec) <> 0;

  // обработкаподкаталога

if FindFirst('*', faAnyFile, SearchRec) = 0 then

repeat

if (SearchRec.Attr and faDirectory) = faDirectory then

if SearchRec.Name[1] <> '.' then

begin

ChDir(SearchRec.Name);// войтивкаталог

Find; // выполнить  поиск в подкаталоге

        ChDir('..');// выйти из каталога

end;

until FindNext(SearchRec) <> 0;

end;

// Кнопка "Поиск"

procedure TfrSearchmp3.btn2Click(Sender: TObject);

begin

if not DirectoryExists(edt15.Text) then

begin

            ShowMessage('Каталог указан не верно!');

edt15.SetFocus;

exit;

end;

btn2.Enabled := False;

lbl7.Caption := '';

        lbl7.Repaint;

        lst1.Clear;             // очистить ListBox 

lbl7.Caption := ''; 

FileName := edt14.Text;  // что искать

        cDir := edt15.Text;      // где искать

        n:=0;                    // кол-во найденных файлов

        ChDir(cDir);             // войти в каталог начала поиска 

        Find;                    // выполнить поиск

        if n = 0 then 

           ShowMessage('Файлов, удовлетворяющих критерию  поиска нет.')

else lbl7.Caption := 'Найденофайлов:' + IntToStr(n);

btn2.Enabled := True;

end;

// Выбратькаталог

function TfrSearchmp3.GetPath(mes: string):string;

var

  Root: string;      // корневой каталог

pwRoot : PWideChar;

  Dir: string; 

begin

Root := '';

GetMem(pwRoot, (Length(Root)+1) * 2);

pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);

if SelectDirectory(mes, pwRoot, Dir)

then

if length(Dir) = 2

then GetPath := Dir+'\'

else GetPath := Dir

else

GetPath := '';

end;

// Кнопка "Обзор"

procedure TfrSearchmp3.btn1Click(Sender: TObject);

var

  Path: string;

begin

Path := GetPath('Выберите папку');

if Path <> ''

then edt15.Text := Path;

end;

end. 

Листинг6 – Модуль Main.pas

{ Модуль Main.pas } { гр. П-1 }

{ Разработчик:  Герасимчук, А.В.} { Модифицирован: 10 июня 2011 }

{ )

{ Главный модуль программы } 

unit Main;

interface

uses 
 

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  FileCtrl, StdCtrls, ShellApi, ComCtrls, frFilePanelU, ImgList, ExtCtrls, Menus,

  XPMan, sSkinManager;

type

  TfmDarkickCommander = class(TForm)

frFilePanelLeft: TfrFilePanel;

pnTop: TPanel;

    FileListBox1: TFileListBox;

    ImageList1: TImageList;

splPanelsSplitter: TSplitter;

frFilePanelRight: TfrFilePanel;

mmMenu: TMainMenu;

miFile: TMenuItem;

miHelp: TMenuItem;

miExit: TMenuItem;

pnBottom: TPanel;

cmbxCommand: TComboBox;

lbPath: TLabel;

lbItem: TLabel;

miAbout: TMenuItem;

btEdit: TButton;

btCopy: TButton;

btMove: TButton;

btFolder: TButton;

btDelete: TButton;

    Button1: TButton;

    btn1: TButton;

    xpmnfst1: TXPManifest;

    N1: TMenuItem;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormActivate(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure miExitClick(Sender: TObject);

procedure cmbxCommandKeyDown(Sender: TObject; var Key: Word;

      Shift: TShiftState);

procedure cmbxCommandEnter(Sender: TObject);

procedure miAboutClick(Sender: TObject);

procedure btEditClick(Sender: TObject);

procedure btCopyClick(Sender: TObject);

procedure btMoveClick(Sender: TObject);

procedure btFolderClick(Sender: TObject);

procedure btDeleteClick(Sender: TObject);

procedure frFilePanelLeftbtDirRootClick(Sender: TObject);

procedure frFilePanelLeftdcbxDriveChange(Sender: TObject);

procedure frFilePanelLeftpnFilesInfoClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure frFilePanelLeftbbRefreshClick(Sender: TObject);

procedure frFilePanelLeftlvFilesKeyDown(Sender: TObject; var Key: Word;

      Shift: TShiftState);

procedure frFilePanelRightlvFilesKeyDown(Sender: TObject;

var Key: Word; Shift: TShiftState);

procedure btn1Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end; 

var

fmDarkickCommander: TfmDarkickCommander;

implementation 

uses FilesExU, About, fmAnyMessageU, fmSearch; 

Var

  FirstRun:Boolean; 

{$R *.DFM} 

procedure TfmDarkickCommander.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  frFilePanelLeft.Done;

  frFilePanelRight.Done;

end; 

procedure TfmDarkickCommander.FormActivate(Sender: TObject);

begin

  If FirstRun Then

  Begin

frFilePanelRight.Init(FileListBox1, ImageList1, frFilePanelLeft.Deactivate, lbPath, lbItem);

frFilePanelLeft.Init(FileListBox1, ImageList1, frFilePanelRight.Deactivate, lbPath, lbItem);

    FirstRun:=False;

  End;

  frFilePanelLeft.Refresh;

  frFilePanelRight.Refresh;

end; 

procedure TfmDarkickCommander.FormCreate(Sender: TObject);

begin

  FirstRun:=True;

  //frFilePanelLeft.Refresh;

//  Refresh;

  //------------------------------------------------------- 

  //--------------------------------------------------------- 

  //frFilePanelLeft.dcbxDriveChange(Sender);

  //frFilePanelRight.dcbxDriveChange(Sender);

  //frFilePanelLeft.btDirRootClick(Sender);

  //frFilePanelRight.btDirRootClick(Sender);

ПРИЛОЖЕНИЕ А - техническое задание(г).docx

— 21.43 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Б - описание программы(г).docx

— 37.43 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ В - программа и методика испытаний(г).docx

— 36.94 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Г - руководство оператора.docx

— 558.55 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Д - руководство программиста.docx

— 63.10 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ Е - диаграмма вариантов использования(г).docx

— 41.52 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ З - содержание электронного носителя(г).docx

— 16.18 Кб (Просмотреть файл, Скачать файл)

ПРИЛОЖЕНИЕ И - диаграмма компонентов.docx

— 158.12 Кб (Просмотреть файл, Скачать файл)

РЕФЕРАТ.docx

— 13.87 Кб (Просмотреть файл, Скачать файл)

Информация о работе Файловый менеджер с поддержкой поиска mp3-файлов по ID3-параметрам