Файловый менеджер с поддержкой поиска 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 Кб (Скачать файл)

ПРИЛОЖЕНИЕ  Ж

Листинг программы

Листинг 1 – Модуль frFilePanelU.pas

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

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

{ )

{ Содержит все функции программы } 

unit frFilePanelU;

interface

uses

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

  ComCtrls, StdCtrls, ExtCtrls, FileCtrl, ShellAPI,

  FilesU, Buttons;

Type

  TColumnsSize=Array [0..4] Of Integer;

  TDeactivateProcedure=Procedure Of Object;

  TfrFilePanel = class(TFrame)

pnDrives: TPanel;

pnDriveInfo: TPanel;

lbCurrentPath: TLabel;

lvFiles: TListView;

pnFilesInfo: TPanel;

dcbxDrive: TDriveComboBox;

btDirRoot: TButton;

btDirUp: TButton;

lbDriveInfo: TLabel;

bbRefresh: TBitBtn;

procedure lvFilesColumnClick(Sender: TObject; Column: TListColumn);

procedure dcbxDriveChange(Sender: TObject);

procedure lvFilesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure lvFilesDblClick(Sender: TObject);

procedure btDirUpClick(Sender: TObject);

procedure btDirRootClick(Sender: TObject);

procedure lvFilesColumnRightClick(Sender: TObject; Column: TListColumn;

      Point: TPoint);

procedure lvFilesEditing(Sender: TObject; Item: TListItem;

var AllowEdit: Boolean);

procedure lvFilesInfoTip(Sender: TObject; Item: TListItem;

var InfoTip: String);

procedure lvFilesChange(Sender: TObject; Item: TListItem;

      Change: TItemChange);

procedure lvFilesEnter(Sender: TObject);

procedure lvFilesExit(Sender: TObject);

procedure lbCurrentPathClick(Sender: TObjec);

procedure bbRefreshClick(Sender: TObject);

private

{ Private declarations }

    AllFiles:TFiles;

    SecondEdit:Boolean;

    Inited:Boolean;

    LastCaption, LastExt:String;

public

{ Public declarations }

flbxFiles:TFileListBox;

    CurrentFullPath:String;

    CurrentDrive:Char;

    CurrentPath:String;

    NowRoot:Boolean;

    SortColumn:Byte;

    SortAscending:Boolean;

    NowActive:Boolean;

    UseCopyToDir:String;

    OtherPanelDeactivate:TDeactivateProcedure;

lbPathEx, lbItemEx:TLabel;

    Procedure Init(FilesListBox:TFileListBox; ImageList:TImageList; Deactivation:TDeactivateProcedure; lbPath, lbItem:TLabel);

    Procedure Done;

    Procedure MakeOutLabels;

    Procedure Activate;

    Procedure Deactivate;

    Procedure CheckActive;

    Procedure Refresh;

    Procedure Sort;

    Procedure SetPath(Path:String);

    Procedure ShowItem(Item:TFileRecord);

    Procedure ShowFiles;

    Procedure GetItemByList(ListItem:TListItem; Var Item:TFileRecord);

    Procedure ShowInfo;

    Function ChangeCheck(ListItem:TListItem):Boolean;

    Procedure SetColumnsSize(ColumnsSize:TColumnsSize);

    Procedure GetColumnsSize(Var ColumnsSize:TColumnsSize);

    Procedure SelectLastItem;

    Function TryRename(ListItem:TListItem; NewName:String):Boolean;

    Procedure TryMoveFile;

    Procedure EditFile;

    Procedure CreateFolder;

    Procedure SetDrive(Drive:Char);

    Procedure CheckCurrentPath;

function NameDir:string;

procedure CopyDir(const FromFolder: string; const ToFolder: string);

function FullRemoveDir(Dir: string; DeleteAllFilesAndFolders, StopIfNotAllDeleted, RemoveRoot: boolean): Boolean;

end;

implementation

Uses

  StrConsts, FilesExU, fmErrorDriveU, fmNameQueryU, fmAnyMessageU;

{$R *.DFM}

// Построение

Procedure TfrFilePanel.Init(FilesListBox:TFileListBox; ImageList:TImageList; Deactivation:TDeactivateProcedure; lbPath, lbItem:TLabel);

Begin

  AllFiles.Init;

flbxFiles:=FilesListBox;

  lvFiles.LargeImages:=ImageList;

  lvFiles.SmallImages:=ImageList;

  lvFiles.StateImages:=ImageList;

  SortColumn:=1;

  SortAscending:=True;

  SecondEdit:=False;

  Inited:=True;

  LastCaption:='';

  LastExt:='';

  OtherPanelDeactivate:=Deactivation;

lbPathEx:=lbPath;

lbItemEx:=lbItem;

  Activate;

SetDrive('C');

End;

// Закрытие

Procedure TfrFilePanel.Done;

Begin

  Deactivate;

  AllFiles.Done;

End;

Procedure TfrFilePanel.MakeOutLabels;

Var

  Item:TFileRecord;

Begin

  If lbPathEx<>nil Then

  Begin

    lbPathEx.Caption:=CurrentFullPath;

    lbPathEx.Hint:=CurrentFullPath;

  End;

  If lbItemEx<>nil Then

  Begin

GetItemByList(lvFiles.ItemFocused, Item);

    lbItemEx.Caption:=GetFullName(Item);

  End;

End; 

// Если панель активная

Procedure TfrFilePanel.Activate;

Begin

  If @OtherPanelDeactivate<>nil Then OtherPanelDeactivate;

  NowActive:=True;

  UseCopyToDir:=ConstCopyToDir;

  lbCurrentPath.Color:=ConstLabelActiveColor;

  lvFiles.SetFocus;

  MakeOutLabels;

End;

// Если панель неактивная

Procedure TfrFilePanel.Deactivate;

Begin

  NowActive:=False;

  ConstCopyToDir:=CurrentFullPath;

  lbCurrentPath.Color:=ConstLabelNonActiveColor;

End;

// Обновление панели

Procedure TfrFilePanel.Refresh;

Var

i:Integer;

  Item:TFileRecord;

Begin

  CheckCurrentPath;

  AllFiles.Clear;

  flbxFiles.Directory:=CurrentFullPath;

  flbxFiles.Update;

  flbxFiles.FileType:=[ftReadOnly, ftHidden, ftSystem, ftArchive, ftDirectory, ftNormal];

  If flbxFiles.Items.Count<=0 Then Exit;

  CurrentFullPath:=IncludeTrailingBackslash(flbxFiles.Directory);

  CurrentDrive:=ExtractFileDrive(CurrentFullPath)[1];

  NowRoot:=IsRoot(CurrentFullPath);

  For i:=0 To flbxFiles.Items.Count-1 Do

  Begin

GetItemByFileName(flbxFiles.Items[i], Item);

    If IsDirectory(Item) Then

    Begin

      If ((Item.Name<>'.') And (Item.Name<>'..') And (Item.Name<>'')) Then

AllFiles.Add(Item);

    End

    Else Begin

AllFiles.Add(Item);

    End;

  End;

  Sort;

  ShowFiles;

  SelectLastItem;

  ShowInfo;

{$I-}

  If IOResult<>0 Then MessageBeep(48);

{$I+}

End;

// Сортировка файлов

Procedure TfrFilePanel.Sort;

Var

i:Integer;

  ColCapt:String;

Begin

  For i:=0 To lvFiles.Columns.Count-1 Do

  Begin

    ColCapt:=lvFiles.Column[i].Caption;

Delete(ColCapt, Length(ColCapt), 1);

    lvFiles.Column[i].Caption:=ColCapt+ConstNoSort;

  End;

  ColCapt:=lvFiles.Column[SortColumn].Caption;

Delete(ColCapt, Length(ColCapt), 1);

  If SortAscending Then

lvFiles.Column[SortColumn].Caption:=ColCapt+ConstSortAscending

  Else

lvFiles.Column[SortColumn].Caption:=ColCapt+ConstSortDescending;

  Case SortColumn Of

    0: AllFiles.SortByName(SortAscending);

    1: AllFiles.SortByExt(SortAscending);

    2: AllFiles.SortBySize(SortAscending);

    3: AllFiles.SortByDateTime(SortAscending);

    4: AllFiles.SortByAttr(SortAscending);

  Else

AllFiles.SortByName(SortAscending);

  End;

End;

// Действие при  нажатии на колонку (сортировка)

procedure TfrFilePanel.lvFilesColumnClick(Sender: TObject;

  Column: TListColumn);

begin

  If lvFiles.ItemFocused<>nil Then

  Begin

    LastCaption:=lvFiles.ItemFocused.Caption;

    LastExt:=lvFiles.ItemFocused.SubItems[0];

  End

  Else Begin

    LastCaption:='';

    LastExt:='';

  End;

  If Column.Index=SortColumn Then

    SortAscending:=Not(SortAscending)

  Else

    SortAscending:=True;

  SortColumn:=Column.Index;

  Sort;

  ShowFiles;

  SelectLastItem;

end; 

// Получение пути

Procedure TfrFilePanel.SetPath(Path:String);

Var

  TmpStr:String;

Begin

  TmpStr:=ExcludeTrailingBackslash(Path);

  TmpStr:=ExtractFileName(TmpStr);

  If TmpStr='..' Then

  Begin

    LastCaption:=ExcludeTrailingBackslash(CurrentFullPath);

    LastCaption:=ConstDirLeftBracket+ExtractFileName(LastCaption)+ConstDirRightBracket;

    LastExt:='';

  End;

  CurrentFullPath:=Path;

Refresh;

End;

// Построение списка  файлов (их названий и атрибутов)

Procedure TfrFilePanel.ShowItem(Item:TFileRecord);

Var

  FormattedItem:TFileFormattedRecord;

  ListItem:TListItem;

Begin

GetFormattedItem(Item, FormattedItem);

    ListItem:=lvFiles.Items.Add;

    With ListItem Do

    Begin

      ImageIndex:=GetItemImageIndex(Item);

      If Item.Checked Then

        StateIndex:=0

      Else

        StateIndex:=-1;

      If IsDirectory(Item) Then

        Caption:=ConstDirLeftBracket+FormattedItem.Name+ConstDirRightBracket

      Else

        Caption:=FormattedItem.Name;

SubItems.Add(FormattedItem.Ext);

SubItems.Add(FormattedItem.Size);

SubItems.Add(FormattedItem.DateTime);

SubItems.Add(FormattedItem.Attr);

    End;

End;

// Вывод списка  файлов на экран

Procedure TfrFilePanel.ShowFiles;

Var

i:Integer;

  Item:TFileRecord;

Begin

  lvFiles.Items.Clear;

  If NowRoot Then

    lvFiles.AllocBy:=AllFiles.ItemsCount

  Else

    lvFiles.AllocBy:=AllFiles.ItemsCount+1;

  If Not(NowRoot) Then ShowItem(DirUpItem);

  For i:=0 To AllFiles.ItemsCount-1 Do

  Begin

AllFiles.GetItem(i, Item);

ShowItem(Item);

End;

End;

ПРИЛОЖЕНИЕ А - техническое задание(г).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-параметрам