Изучение интерфейса прикладного программирования Win32, разработка приложения, демонстрирующего возможности ОС по работе с файлами

Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 18:55, курсовая работа

Описание

В данной пояснительной записке приведено описание алгоритма и исходного кода программы, демонстрирующей возможности ОС по работе с файлами. Разработаны схемы алгоритмов решения задачи. В среде Microsoft Visual Studio 2005 (C++) разработана и отлажена программа, реализующая представленные алгоритмы. Также представлены результаты решения контрольных примеров, выполненные с помощью разработанной программы.
В приложении приведён текст программы.

Содержание

Описание программы
1.1. Общие сведения о файлах
1.2. Общие сведения о программе
1.3. Функциональное назначение
1.4. Описание логической структуры
1.5. Структурная схема основной программы
1.6. Описание элементов программы
2. Программа в процессе работы
2.1. Создание и редактирование файлов
2.2. Копирование, переименование и удаление файлов
2.3. Поиск файлов
2.4. Просмотр и изменение атрибутов файлов
2.5. Создание ссылок на файлы
2.6. Получение информации о файле
3. Заключение
4. Список используемой литературы
5. Приложение

Работа состоит из  1 файл

ПЗ по ОС.doc

— 652.00 Кб (Скачать документ)

 

 

- 20 -

 



1.5.                     Структурная схема основной программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 20 -

 



1.6.                     Описание элементов программы

 

             

                                         

                                                                                   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Элемент

Тип

Исполняемая функция

1

Ресурс (Menu)

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

2

Кнопка (Button)

Позволяет создавать новый файл (CreateFile(buf,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,NULL,NULL))

3

Кнопка (Button)

Позволяет редактировать открытый файл (ReadFile(hF,&b,sizeof(b),&dwBytesRead,NULL))

4

Кнопка (Button)

Позволяет копировать открытый файл (CopyFile(buf,buffer,FALSE))

5

Кнопка (Button)

Позволяет переименовывать открытый файл (MoveFile(buf,buffer))

6

Кнопка (Button)

Удаляет открытый файл (DeleteFile(buf))

7

Кнопка (Button)

Позволяет открыть существующий файл (GetOpenFileName(&of))

8

Текстовое поле (Edit Control)

Позволяют выводить различные данные о файле (адрес на диске, атрибуты, информацию и т.д.) и служит полем для редактирования файла

9

Кнопка (Button)

Позволяет выполнять поиск файлов (FindFirstFile(szDir, &ffd); FindNextFile(hFind,&ffd))

10

Кнопка (Button)

Позволяет создавать ссылки на открытый файл (CreateHardLink (bufff, buf, NULL ))

11

Кнопка (Button)

Выводит атрибуты открытого файла (GetFileAttributes(buf))

12

Переключатель (Radio Button)

Позволяют изменять атрибуты открытого файла (SetFileAttributes(buf,FILE_ATTRIBUTE_READONLY);

SetFileAttributes(buf,FILE_ATTRIBUTE_SYSTEM);

SetFileAttributes(buf,FILE_ATTRIBUTE_HIDDEN);

SetFileAttributes(buf,FILE_ATTRIBUTE_ARCHIVE))

13

Кнопка (Button)

Отменяет всё установленные атрибуты у открытого файла (SetFileAttributes(buf,FILE_ATTRIBUTE_NORMAL))

14

Кнопка (Button)

Выводит информацию об открытом файле (GetFileInformationByHandle(hF,&bhfi))

15

Кнопка (Button)

Позволяет сохранить отредактированный файл (WriteFile(hFile,buffer,sizeof(buffer),&dwByte,NULL))

16

Кнопка (Button)

Очищает текстовое поле (SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),0))

17

Кнопка (Button)

Осуществляет выход из программы

2.     Программа в процессе работы

2.1.                     Создание и редактирование файлов

 

2.2.                     Копирование, переименование и удаление файлов

 

 

 

 

2.3.                     Поиск файлов

2.4.                     Просмотр и изменение атрибутов файлов

 

2.5.                     Создание ссылок на файлы

 

2.6.                     Получение информации о файле

 

 

3.     Заключение

Осуществлена разработка приложения «FileMen»

В данной пояснительной записке выполнены анализ требований, проектирование и реализация программных средств, которые являются необходимыми этапами разработки программного обеспечения.

В итоге разработано приложение, предназначенное для работы с файлами.

Приведенные выше скриншоты показали, что программа корректно выполняет заданные функции.

 

 

4.     Список используемой литературы

 

1)П.В.Румянцев

РАБОТА С ФАЙЛАМИ В WIN 32 API

 

2)Ч. Петзолд

Программирование

для Windows® 95

 

3)Александр Побегайло

СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ в

WINDOWS

 

4)К.Г. ФИНОГЕНОВ

WIN 32

ОСНОВЫ ПРОГРАММИРОВАНИЯ

 

5)Р. М. Ганеев

Проектирование интерфейса пользователя средствами Win32 api

 

6)Юрий Щупак

ДЛЯ ПРОФЕССИОНАЛОВ

Win32 API

Эффективная разработка

приложений

 

 

- 20 -

 



5.     Приложение

#define _WIN32_WINNT 0x500

#include <windows.h>

#include "resource.h"

#include <direct.h>

#include <crtdbg.h>

#include <stdio.h>

 

char buffer[512],buf[512];

char filename[MAX_PATH+1],file_name[MAX_PATH+1],customfilter[100];

WIN32_FIND_DATA ffd;

HANDLE hFile,hF,hFi;

HANDLE hFind = INVALID_HANDLE_VALUE;

DWORD dwByte,dwBytesRead,dwFileSize;

BY_HANDLE_FILE_INFORMATION bhfi;

LARGE_INTEGER filesize;

TCHAR szDir[MAX_PATH];

SYSTEMTIME st;

 

int CALLBACK MyDlgProc(HWND hwnd,UINT msg,WPARAM wp,LPARAM lp)                                  

{

              switch(msg)

              {              

                            case WM_COMMAND:

                                          switch(LOWORD(wp))

                                          {

                                          case IDCANCEL:

                                                        return EndDialog(hwnd,IDCANCEL);

                                          case ID_NEW:

                                                        {                                                                      DialogBox(0,MAKEINTRESOURCE(IDD_DIALOG1),hwnd,MyDlgProc);

                                                                      break;

                                                        }

                                          case ID_NEW_1:

                                                        {

                                                                      for(int i=0;i<sizeof(buf);*(buf+i)=0,i++);                                                                      if(GetWindowText(GetDlgItem(hwnd,IDC_EDIT1_1),buf,512)==NULL)

                                                                                    MessageBox(hwnd,"Введите имя файла!","Ошибка",MB_OK);

                                                                      else

                                                                      {                            if(INVALID_HANDLE_VALUE!=(hFile=CreateFile(buf,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,NULL,NULL)))

                                                                                    {

                                                                                                  MessageBox(hwnd,"Файл успешно создан!","Готово",MB_OK);

                                                                                                  CloseHandle(hFile);

                                                                                                  EndDialog(hwnd,0);

                                                                                    }

                                                                                    else break;

                                                                      }

                                                                      break;

                                                        }

                                          case ID_OTKR:

                                                        {

                                                                      OPENFILENAME of;

                                                                      char initialdir[MAX_PATH+1];

                                                                      getcwd(initialdir,MAX_PATH+1);

                                                                      memset(&of,0,sizeof(of));

                                                                      of.lStructSize=sizeof(of);

                                                                      of.lpstrFilter=              "Текстовые файлы (*.txt)\0*.txt\0"

                                                                                    "Все файлы (*.*)\0*.*\0";

                                                                      of.nFilterIndex=2;

                                                                      of.nMaxCustFilter=100;

                                                                      buf[0]='\0';

                                                                      of.lpstrFile=buf;

                                                                      of.nMaxFile=MAX_PATH+1;

                                                                      of.lpstrInitialDir=initialdir;

                                                                      of.lpstrTitle="Диалог открытия файла";

                                                                      if(GetOpenFileName(&of)!=0)

                                                                      {

                                                                                    InvalidateRect(hwnd,NULL,TRUE);

                                                                                    SetDlgItemText(HWND (hwnd),IDC_EDIT2,0);

                                                                                    SetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf);

                                                                                    EnableWindow(GetDlgItem(hwnd,IDC_EDIT1),true);

                                                                      }

                                                                      break;

                                                        }

                                          case ID_SSILKI:

                                                        {

                                                                      if(GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,512))                                                                      DialogBox(0,MAKEINTRESOURCE(IDD_DIALOG5),hwnd,MyDlgProc);

                                                                      else

                                                                                    MessageBox(hwnd,"Не загружен исходный файл!","Ошибка",MB_OK);

                                                                      break;

                                                        }

                                          case ID_SSILKI_1:

                                                        {

                                                                      char bufff[512];

                                                                      if(GetWindowText(GetDlgItem(hwnd,IDC_EDIT1_5),bufff,512))

                                                                      {

                                                                                    CreateHardLink (bufff, buf, NULL );

                                                                                    MessageBox(hwnd,"Ссылка успешно создана!","Готово",MB_OK);

                                                                                    EndDialog(hwnd,0);

                                                                      }

                                                                      else

                                                                                    MessageBox(hwnd,"Введите имя файла!","Ошибка",MB_OK);

                                                                      break;

                                                        }

                                          case ID_DELET:                         

                                          {

                                                        EnableWindow(GetDlgItem(hwnd,IDC_EDIT2),false);

                                                        GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,512);

                                                        if(DeleteFile(buf))

                                                        {

                                                                      MessageBox(hwnd,"Файл успешно удален!","Готово",MB_OK);

                                                                      SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),0);

                                                            SetWindowText(GetDlgItem(hwnd,IDC_EDIT1),0);

                                                        }

                                                        else

                                                                      MessageBox(hwnd,"Невозможно удалить файл!","Ошибка",MB_OK); break;

                                          }

                                          case ID_REDAKT:                         

                                          {

                                                        char b[4096];

                                                        SetFocus(GetDlgItem(hwnd,IDC_EDIT2));

                                                        EnableWindow(GetDlgItem(hwnd,IDC_EDIT2),true);

                                                        for(int i=0;i<sizeof(b);*(b+i)=0,i++);

                                                        if(GetWindowText(GetDlgItem(hwnd,IDC_EDIT1),buf,512)==NULL)

                                                                                    MessageBox(hwnd,"Не загружен файл!","Ошибка",MB_OK);

                                                        else

                                                        {

                                                                SetWindowText(GetDlgItem(hwnd,IDC_EDIT2),0);

                                                                hF = CreateFile(buf,GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

                                                                                    if(ReadFile(hF,&b,sizeof(b),&dwBytesRead,NULL))

                                                                                    {

Информация о работе Изучение интерфейса прикладного программирования Win32, разработка приложения, демонстрирующего возможности ОС по работе с файлами