Разработка программы форматирования текстовых файлов
Функциональные характеристики программы форматирования текстовых файлов, требования к ее интерфейсу и данным. Схема взаимодействия компонентов системы, выбор среды исполнения и программная реализация алгоритмов. Тестирование и оценка качества программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.07.2012 |
Размер файла | 61,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
"Разработка программы форматирования текстовых файлов"
Содержание
- Введение
- 1. Исследование предметной области
- 1.1 Описание предметной области
- 1.2 Основные функциональные возможности и требования к программе
- 2. Архитектура ПО
- 2.1 Концептуальная модель программы
- 2.2 Разбиение программы на модули
- 3. Реализация ПС
- 3.1 Выбор технологии разработки
- 3.2 Пользовательский интерфейс приложения
- 4. Анализ качества разработанного ПО
- 4.1 Тестирование программного продукта
- 4.2 Оценка качества программного продукта
- Заключение
- Библиографический список
- Приложение
- Введение
- Потребность в небольшом и удобном средстве форматирования текстовых фалов повседневно возникает у людей работающих с Web-дизайном и подготавливающих материалы к публикации в электронном виде. Кроме того, необходимость в таком средстве возникает при подготовке электронного документа (текстового файла) к чтению его с экрана монитора.
Цель работы
Разработать программное средство на основании программирования с помощью WinAPI, автоматизирующее процесс форматирования текстовых файлов.
В разработке участвовали студенты ХГУ гр. 10
- Казаковцев Н. М.
- Малмыгина О. В.
Структура и объём работы
Постановка задачи. Определяются функциональные характеристики разрабатываемой программы, требования к интерфейсу, входным и выходным данным. Разрабатывается модель жизненного цикла.
Информационная модель. Исследуется предметная область. Определяется схема взаимодействия компонентов системы. Построение диаграмм UseCase.
Программная реализация алгоритмов. Выбор среды исполнения, среды программирования и компонентов, подлежащих использованию. Разрабатывается структура программного средства.
Тестирование и отладка. Разработка плана тестирования. Проведение детерминированного тестирования процедур и общего стохастического тестирования программного средства. Определение качественных характеристик разработанной программы.
1. Исследование предметной области
При разработке программного продукта для обеспечения его максимальной эффективности очень важно учитывать все особенности информационной среды, в которой будет происходить эксплуатация. Именно поэтому на стадии анализа было уделено большое внимание описанию предметной области функционирования продукта.
1.1 Описание предметной области
Предметной областью в рамках данной задачи является процесс форматирования текстового файла. Сам процесс форматирования содержит решение таких задач как:
- определение фала с исходным текстом;
- выбор параметров форматирования текста;
- проверка корректности полученных данных;
- форматирование файла;
- запись результата;
- просмотр результата.
1.2 Основные функциональные возможности и требования к программе
Исходя из вышеописанной предметной области можно выделить функциональные возможности будущего программного средства:
Функциональные возможности:
- предварительный просмотр форматируемого текста;
- визуальное задание параметров форматирования;
- выбор стандарта завершения строк;
- выравнивание строк по ширине;
- оценка результата работы программного средства в окне предварительного просмотра.
Требования:
- при создании пользовательского интерфейса и программировании операции ввода/вывода использование исключительно средств предоставляемых операционной системой;
- использование по возможности меньшего объёма системных ресурсов.
При таком наборе функциональных возможностей и требованиях к созданному программному продукту он будет максимально приближен к поставленным при его создании целям.
Разработанный программный продукт имеет следующую логику работы:
Пользователь после запуска программы, выбирает исходный файл, который он хочет отформатировать. После этого он выбирает файл, в который будут записаны результаты форматирования. Здесь он может визуально оценить содержание форматируемого файла в окне предварительно просмотра. Выбирает параметры форматирования и отдаёт команду начать форматирование. После окончания форматирования результат автоматически выводится в окно предварительного просмотра. После завершения форматирования программа должна быть закрыта.
2. Архитектура ПО
2.1 Концептуальная модель программы
При проектировании программного средства была построена концептуальная модель программы, описывающая основные возможности, предоставляемые программой.
Как было указано выше - это возможность форматирования текстовых фалов.
Концептуальная модель программы представлена в виде диаграммы вариантов использования на рис. 1.
Размещено на http://www.allbest.ru/
Рис. 1
2.2 Разбиение программы на модули
Поскольку операции производимые программным средством достаточно однотипны и предметная область задачи невелика, то разбиения на модули не требуется, поскольку это реально может усложнить задачу кодирования.
Разрабатываемое программное средство не имеет связей с базами данными и не хранит настроек.
3. Реализация ПС
3.1 Выбор технологии разработки
При разработке программного продукта было принято решение использовать среду разработки Microsoft Visual Studio С++ 6.0. Использование языка С++ было вызвано тем, что при разработке было использовано множество функций WinAPI, а поскольку большая часть операционной системы Windows написана именно с использованием этого языка, то его использование является наиболее целесообразным, поскольку это упрощает объявление типов параметров и структур, используемых при вызове функций операционной системы. Следовательно, вопрос с выбором языка программирования в рамках поставленной задачи отпадает, поскольку при использовании других языков программирования, например ObjectPascal, потребуется использовать типы переменных введённые данный язык с целью поддержки работы с WinAPI и как следствие при этом придётся мириться со снижением быстродействия программы, вызванного преобразованием типов переменных. Использование же именно среды разработки фирмы Microsoft объясняется тем, что данная среда поставляется разработчиком операционной системы и, следовательно, она сразу может быть причислена к лучшим решениям подобного рода. Кроме того данная среда программирования имеет справку основанную на одной из лучших справочных систем по WinAPI программированию - MSDN.
Наиболее достойным по функциональным возможностям в сравнении с выбранной средой разработки выглядит Borland C++ Builder, но, однако он имеет существенный недостаток - при использовании его в качестве средства разработки вместе с программным модулем придётся поставлять фирменную библиотеку (в виде.dll), размер которой в 160 раз превышает размер исполняемого модуль. Это является неприемлемым для небольшого проекта и поэтому выбор был сделан в пользу Microsoft Visual Studio С++ 6.0.
3.2 Пользовательский интерфейс приложения
Разработанный продукт имеет следующую логику работы:
1. После запуска исполняемого модуля перед пользователем появляется главное окно программы:
Рис. 2. Главное окно программы
2. После этого пользователю с помощью главного меню программы необходимо выбрать исходный файл. Для выбора файла используется стандартный диалог операционной системы Windows.
3. После выбора исходного текстового файла перед пользователем сразу же появляется диалог сохранения файла результатов. Для его выбора также используется стандартный диалог операционной системы.
4. После выбора имени файла, в который будут сохранены результаты форматирования, перед пользователем появляется диалоговое окно, в котором он может выбрать параметры форматирования текста. Диалог выбора параметров показан на рис. 3. Кроме того исходный текстовый файл отображается в окне предварительного просмотра.
Рис. 3. Диалог выбора параметров форматирования
5. После того как пользователь выберет параметры форматирования текста и нажмёт кнопку "Ок", перед ним появится диалоговое окно из которого можно подать команду начала форматирования текста. В случае, если пользователь закрое диалоговое окно выбора параметров не нажав кнопки "Ок", то при форматировании текста будут применены настройки по умолчанию. Диалоговое окно начала форматирования текста приведено на рис. 4.
Рис. 4. Диалог начала форматирования текста
6. После окончания форматирования текста результаты работы записываются в файл, определённый на этапе 2, и автоматически отображаются в окне предварительного просмотра.
7. Работа с программой завершается её закрытием.
4. Анализ качества разработанного ПО
4.1 Тестирование программного продукта
Для анализа качества разработанного ПО необходимо провести тестирование. В данном случае использовался метод тестирования в реальном масштабе времени.
Наименование объекта испытаний - программное средство «txt Formater».
Цель испытаний - выявление как можно большего числа ошибок;
Для испытания ПС выбран стохастический метод тестирования.
Назначение тестирования - создание полнофункционального и эффективного программного средства.
Тестирование в реальном масштабе времени осуществляется в виде работы с разработанным программным изделием со стороны пользователя.
4.2 Оценка качества программного продукта
форматирование текстовый файл алгоритм
По результатам испытания была проведена оценка качества ПС. Оценка качества приведена в табл. 1.
Как видно из табл. 1, программа показывает хорошее качество, что говорит о законченности реализации программы.
Табл. 1. Результаты стохастического тестирования
№ |
Сценарий |
Результат |
|
1 |
Запуск приложения |
Ошибок не обнаружено |
|
2 |
Открытие исходного файла |
Ошибок не обнаружено |
|
3 |
Выбор целевого файла |
Ошибок не обнаружено |
|
4 |
Выбор параметров форматирования |
Ошибка при интерпретации параметров форматирования. Ошибка исправлена. |
|
5 |
Форматирование |
Обнаружена ошибка зависания программы если не были выбраны рабочие файлы. Ошибка исправлена. |
|
6 |
Предварительный просмотр |
Ошибок не обнаружено. Возможно некорректное отображение результата в окне предварительного просмотра в случае, если текст был отформатирован с использованием в качестве указателя конца строки символа с кодом - 10. Ошибка вызвана реализацией элемента управления операционной системы EDIT. |
|
7 |
Закрытие приложения |
Завершение приложения в единичных случаях сопровождается сообщением о недопустимой операции. Ошибка не локализована, её появление не наносит вреда системе и данным. |
На основании тестирования и общей оценки качества разработанного ПС была составлена следующая таблица оценки качества (табл. 2):
Табл. 2 Оценка качества ПС
№ |
Наименование групп и комплексных показателей качества |
Оценка |
|
1 |
Показатели надежности ПС |
||
1.1. |
Устойчивость функционирования |
+ |
|
1.2. |
Работоспособность |
+ |
|
2 |
Показатели сопровождения |
||
2.1. |
Структурность |
- |
|
2.2. |
Простота конструкции |
+ |
|
2.3. |
Наглядность |
- |
|
2.4. |
Повторяемость |
- |
|
3 |
Показателя удобства применения |
||
3.1. |
Легкость освоения |
+ |
|
3.2. |
Доступность эксплуатационных программных документов |
- |
|
3.3. |
Удобство эксплуатации и обслуживания |
- |
|
4 |
Показатели эффективности |
||
4.1. |
Уровень автоматизации |
+ |
|
4.2. |
Временная эффективность |
+ |
|
4.3. |
Ресурсоемкость |
+ |
|
5 |
Показатели универсальности |
||
5.1. |
Гибкость |
+ |
|
5.2. |
Мобильность |
- |
|
5.3. |
Модифицируемость |
+ |
|
6 |
Показатели корректности |
||
6.1. |
Полнота реализации |
- |
|
6.2. |
Согласованность |
- |
|
6.3. |
Логическая корректность |
+ |
|
6.4. |
Проверенность |
+ |
Существенным недостатком данного средства является недостаточная визуальность процесса выбора параметров форматирования. Так при выборе параметров форматирования текста можно было сделать отображение влияния параметров на вид текста в реальном времени (по выбору пункта) или выбор отступов и границ текста с помощью мыши, однако программирование такого рода интерфейса желательно делать с использованием средств разработки более высокого уровня нежели WinAPI для ускорения процесса программирования.
В дальнейшем в программное средство возможно добавление возможности передачи параметров работы (файлы, параметры форматирования) в виде аргументов командной строки. Созданное программное изделие, как и многие другие, допускает внесение определенных изменений, дополнений с целью дальнейшей модернизации, усовершенствования (например, в плане внешнего интерфейса или функциональности).
Заключение
1. Результатом данной работы является разработанное приложение «txt Formater». Разработанный продукт является полностью функциональным (все необходимые функции в нем реализованы). Несмотря на это, допускается его дальнейшая модернизация как в плане интерфейса, так и в плане функциональных возможностей.
2. При разработке программы были использованы современные методологии и технологии, позволяющие в сжатые сроки получить качественный продукт. Программа реализована с помощью среды программирования Microsoft Visual Studio С++ 6.0.
Библиографический список
1. MSDN.
2. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++: Учебный курс. - Харьков: Фолио; М.: ООО "Издательство АСТ", 2001. - 500 с.
3. Петзолд. Ч. Программирование для Windows 95 в двух томах. «BHV - Санкт-Петербург» С. 242.
4. Шкарина Л.Н. Методические рекомендации по выполнению научно-исследовательских работ для студентов информационных специальностей университета. // Вестник Хакасского государственного университета им. Н.Ф. Катанова. Выпуск 4. Серия 1: Информатика. - Абакан; Издательство Хакасского государственного университета им. Н.Ф. Катанова, 2000. - С. 232-235.
Приложение
main.cpp
#include <windows.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include "resource.h"
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK Dlg1Func (HWND Dlg1, UINT message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK Dlg2Func (HWND Dlg2, UINT message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK DlgAFunc (HWND DlgA, UINT message, WPARAM wParam, LPARAM lParam);
OPENFILENAME ofn;
char buf[260]="";
unsigned long fs=0;
char buf1[260]="";
char ext[]="txt";
char szWinName[] = "Lab4";
HDC hdc;
bool doit=false;
int Turn;
HINSTANCE hInst;
HWND hwnd,Dlg1,Dlg2,DlgA;
char * result;
int number;
DWORD aa;
HANDLE hfile,hfile1,hfile2;
LPVOID mem,mem1;
HWND txtctrl;
int con=75,aftcon,sp,nd=1,alg=1;
char sfile[],rfile[],tfile[];
char cppbs[2048]=" ";
char spase[2]=" ";
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInstance, LPSTR lpszArgs, int nWinMode)
{
MSG msg;
WNDCLASS wcl;
wcl.hInstance=hThisInst;
wcl.lpszClassName=szWinName;
wcl.lpfnWndProc=WindowFunc;
wcl.style=0;
wcl.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wcl.hCursor=LoadCursor(NULL, IDC_ARROW);
wcl.lpszMenuName=(LPCTSTR)IDR_MENU1;
wcl.cbClsExtra=0;
wcl.cbWndExtra=0;
wcl.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
if (!RegisterClass(&wcl)) return 0;
srand((unsigned)time(NULL));
hwnd=CreateWindow(szWinName, "txt Formater",
WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
500,
500,
HWND_DESKTOP,
NULL,
hThisInst,
NULL);
ShowWindow(hwnd, nWinMode);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_MOUSEMOVE:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
//обрабатываем команды от главного меню
case WM_COMMAND:
switch (wParam) {
//отображаем диалоговое окно форматирования
case ID_MENUITEM40002:
{
Dlg1=CreateDialog(NULL,(LPCTSTR) IDD_Format, hwnd, Dlg1Func);
ShowWindow(Dlg1,SW_SHOW);
}
break;
case ID_MENUITEM40004:
{
DlgA=CreateDialog(NULL,(LPCTSTR) IDD_DIALOG1, hwnd, DlgAFunc);
ShowWindow(DlgA,SW_SHOW);
}
break;
case ID_MENUITEM40003:
{
Dlg2=CreateDialog(NULL,(LPCTSTR) IDD_F, hwnd, Dlg2Func);
ShowWindow(Dlg2,SW_SHOW);
}
break;
//обрабатываем закрытие приложение через команду меню
case IDCLOSE:
{
PostQuitMessage(0);
}
break;
//обрабатываем открытие файла пользователем
case IDFILEOPEN:{
//открываем текстовый файл и отображаем его в окне предварительного просмотра
//заполняем поля структуры, описывающей открываемый файл
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hwnd;
ofn.lpstrFile=buf;
ofn.nMaxFile=260;
ofn.Flags=OFN_FILEMUSTEXIST;
ofn.lpstrDefExt=ext;
if (!GetOpenFileName(&ofn)) ExitProcess(76);
//открываем файл
hfile=CreateFile(buf,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
//создаём область памяти для того чтобы в неё можно было считать файл
mem=VirtualAlloc(0,GetFileSize(hfile,0),MEM_COMMIT,PAGE_READWRITE);
//считываем файл в созданную область памяти
ReadFile(hfile,mem,GetFileSize(hfile,0),&aa,0);
((BYTE*)mem)[GetFileSize(hfile,0)]=0;
//закрываем файл
CloseHandle(hfile);
//выводим содержимое файла в EDIT
SetWindowText(txtctrl,(LPCSTR)mem);
//освобождаем область памяти
VirtualFree(mem,0,MEM_RELEASE);
//устанавливаем фокус ввода на окно редактирования
SetFocus(txtctrl);
//открываем диалог сохранения файла
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hwnd;
ofn.lpstrFile=buf1; ofn.nMaxFile=260;
ofn.Flags=OFN_NOREADONLYRETURN;
ofn.lpstrDefExt=ext;
if (!GetSaveFileName(&ofn)) ExitProcess(76);
//выкидываем пользователю окно диалога
SendMessage(hwnd,WM_COMMAND,ID_MENUITEM40002,0); //и в завершении окно диалога начала форматирования
//MessageBox(NULL,"Задайте параметры форматирования текста и оцените результат в окне предварительного просмотра","Error",MB_OK);
}
break;
}
case WM_SIZE:
MoveWindow(txtctrl,0,0,495,456,1);
break;
case WM_SETFOCUS:
SetFocus(txtctrl);
break;
case WM_CREATE:
txtctrl=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD+WS_VISIBLE+WS_VSCROLL+WS_HSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE+ES_WANTRETURN,0,0,0,0,hwnd,0,NULL,0);
if (!txtctrl) PostQuitMessage(0);
break;
case WM_RBUTTONDOWN:
if (doit==0)
{
}
return 0;
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
//функция обрабатывающая сообщения окна диалога
BOOL CALLBACK Dlg1Func (HWND Dlg1, UINT message, WPARAM wParam, LPARAM lParam)
{ HWND Edt;
switch (message)
{
case WM_INITDIALOG:
//устанавливаем параметры диалога "по умолчанию"
SetDlgItemText(Dlg1,IDC_EDIT1,"75");
SetDlgItemText(Dlg1,IDC_EDIT2,"0");
break;
case WM_DESTROY:
case WM_CLOSE:
DestroyWindow(Dlg1);
Dlg1=NULL;
break;
case WM_COMMAND:
if (LOWORD(wParam)==IDOK)
{char te[4];
//получаем указатель на поле ввода диалогового окна
Edt=GetDlgItem(Dlg1,IDC_EDIT1);
//получаем то что введено в поле ввода в виде текста
GetWindowText(Edt,te,3);
//преобразуем текст в число
con=atoi(te);
//получаем число пробелов в начале строки
Edt=GetDlgItem(Dlg1,IDC_EDIT2);
GetWindowText(Edt,te,3);
aftcon=atoi(te);
if (aftcon>0) {
for (int d=1; d<aftcon; d++)
{strcat(cppbs," ");}}
//выравнивать ли текст по ширине
Edt=GetDlgItem(Dlg1,IDC_CHECK1);
if (SendMessage(Edt,BM_GETCHECK,0,0)){alg=1;}else{alg=0;}
//получаем значения элементов управления
Edt=GetDlgItem(Dlg1,IDC_CHECK2);
if (SendMessage(Edt,BM_GETCHECK,0,0)){sp=1;}else{sp=0;}
//слева
//12
Edt=GetDlgItem(Dlg1,IDC_RADIO2);
if (SendMessage(Edt,BM_GETCHECK,0,0)){nd=0;}
//12/13
Edt=GetDlgItem(Dlg1,IDC_RADIO3);
if (SendMessage(Edt,BM_GETCHECK,0,0)){nd=1;}
//закрываем диалоговое окно
Dlg2=CreateDialog(NULL,(LPCTSTR) IDD_F, hwnd, Dlg2Func);
ShowWindow(Dlg2,SW_SHOW);
EndDialog(Dlg1,0);
}
break;
break;
}
return FALSE;
}
//собственно функция выполняющая форматирование
BOOL CALLBACK Dlg2Func (HWND Dlg2, UINT message, WPARAM wParam, LPARAM lParam)
{
char hu[]="";
char s[2048]="",stt[2048]=" ",sttt[2048]=" ",re[2048]="";
char ns=13;
char nsp='/n/r';
char ns1=10;
char caches[2048];
char empc[]="";
char dspase[3]=" ";
char qwe[]="";
bool rf,fe,sf,wf,st,sv;
char t[1];
unsigned long fs=0;
unsigned long fss=0;
unsigned long ti=1,to=1;
int i=0,j=0;
switch (message)
{
case WM_DESTROY:
case WM_CLOSE:
DestroyWindow(Dlg2);
Dlg2=NULL;
break;
case WM_COMMAND:
//отрабатываем нажатие кнопки оК
if (LOWORD(wParam)==IDOK)
{ //открываем исходный файл для чтения
strcpy(s,cppbs);
if (strlen(buf)<2 || strlen(buf1)<2){MessageBox(NULL,"Прежде чем начинать форматировать нужно определиться с тем, что мы будем форматировать.","Error",MB_OK); EndDialog(Dlg2,0);goto w1;}
//открываем файл с исходным текстом
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hwnd;
ofn.lpstrFile=buf;
ofn.nMaxFile=260;
ofn.Flags=OFN_FILEMUSTEXIST;
ofn.lpstrDefExt=ext;
hfile=CreateFile(buf,GENERIC_READ,0,0,OPEN_EXISTING,0,0);//запоминаем указатель на него
//создаём файл в который будем записывать результаты форматирования
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hwnd;
ofn.lpstrFile=buf1; ofn.nMaxFile=260;
ofn.Flags=OFN_NOREADONLYRETURN;
ofn.lpstrDefExt=ext;
/*открываем только для записи (читать из него нам точно ничего не понадобится),
при открытии удаляем все его содержимое) */
hfile1=CreateFile(buf1,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);//запоминаем указатель на него
rf=true;
fs=GetFileSize(hfile,&fss);
sprintf(qwe,"%i",fs);
SetWindowText(txtctrl,qwe);
//в цикле читаем файл и занимеемся форматированием строчек
while(rf)
{
fe=ReadFile(hfile,&t,to,&ti,NULL);
//st=false;
if (ti!=0){i++;}//в случае если, что-то прочитали, то увеличиваем счётчик на единицу
if ((fs)==i) {rf=0;}//проверяем не хватит ли нам читать
if (t[0]==13){strcpy(t,hu);}
if (t[0]!=32 && t[0]!=10){strcat(caches,t);}
if (t[0]==32)//если прочитанный символ - пробел
{strcat(caches,t);
if (strlen(s)+strlen(caches)+strlen(re)<con){
strcat(s,re);
strcpy(re,hu);
strcpy(re,caches);
strcpy(caches,hu);//очищаем кеш
}
else{ l1:
if ((strlen(s)+strlen(re)<con) && (alg))
{
strcat(stt,re);
strcpy(re,stt);
strcpy(stt,sttt);
goto l1;
}
strcat(s,re);
WriteFile(hfile1,&s,strlen(s),&ti,NULL);
if (nd) {WriteFile(hfile1,&ns,1,&ti,NULL);}// записываем символ перевода строки
WriteFile(hfile1,&ns1,1,&ti,NULL);//записываем символ конца строки
strcpy(s,cppbs);
strcpy(re,caches);
strcpy(caches,hu);
}
}
if (t[0]==10) {//если прочитанный символ конец сроки
strcat(s,caches);
strcat(s,re);
strcpy(caches,hu);
strcpy(re,hu);
char kl[2048]=" ";
if (sp) {strcat(s,kl);}//если необходимо добавляем пробел в конце истинного абзаца текста
WriteFile(hfile1,&s,strlen(s),&ti,NULL);
{WriteFile(hfile1,&ns,1,&ti,NULL);}
WriteFile(hfile1,&ns1,1,&ti,NULL);
strcpy(s,cppbs);
}
}
CloseHandle(hfile);
CloseHandle(hfile1);
hfile1=CreateFile(buf1,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
mem1=VirtualAlloc(0,GetFileSize(hfile1,0),MEM_COMMIT,PAGE_READWRITE);
ReadFile(hfile1,mem1,GetFileSize(hfile1,0),&aa,0);
((BYTE*)mem1)[GetFileSize(hfile1,0)]=0;
CloseHandle(hfile1);
//выводим содержимое файла в EDIT
SetWindowText(txtctrl,(LPCSTR)mem1);
VirtualFree(mem1,0,MEM_RELEASE);
EndDialog(Dlg2,0);
SetFocus(txtctrl);
}
w1:{;}
}
return FALSE;
}
BOOL CALLBACK DlgAFunc (HWND DlgA, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
case WM_CLOSE:
DestroyWindow(DlgA);
DlgA=NULL;
break;
}
return FALSE;
}
resource.h
#define DLG1 101
#define DLG2 102
#define IDR_MENU1 103
#define IDD_Format 104
#define IDD_F 105
#define IDD_DIALOG1 106
#define IDB_BITMAP1 107
#define IDC_EDIT1 1002
#define IDC_RADIO2 1005
#define IDC_RADIO3 1006
#define IDC_CHECK2 1007
#define IDC_EDIT2 1008
#define IDC_CHECK1 1018
#define IDFILEOPEN 40001
#define ID_MENUITEM40002 40002
#define ID_MENUITEM40003 40003
#define ID_MENUITEM40004 40004
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 108
#define _APS_NEXT_COMMAND_VALUE 40005
#define _APS_NEXT_CONTROL_VALUE 1019
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Res.rc
IDD_Format DIALOG DISCARDABLE 0, 0, 182, 124
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Параметры форматирования текста"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK",IDOK,118,100,50,14
LTEXT "Количество символов в строке",IDC_STATIC,7,15,107,8
EDITTEXT IDC_EDIT1,117,12,55,14,ES_AUTOHSCROLL | ES_NUMBER
GROUPBOX "Разрыв строки",IDC_STATIC,7,74,161,22
CONTROL "10",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,13,83,24,10
CONTROL "13/10",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,50,84,35,10
CONTROL "Завершать абзац пробелом",IDC_CHECK2,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,7,58,111,10
LTEXT "Добавлять пробелов перед стрококой",IDC_STATIC,7,30,132,8
EDITTEXT IDC_EDIT2,142,28,32,13,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "Выравнивать строки текста по ширине", IDC_CHECK1,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,8,45,149,10
END
IDD_F DIALOG DISCARDABLE 0, 0, 186, 44
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Форматирование"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "Начать форматирование",IDOK,7,23,172,14
LTEXT "Для начала форматирования нажмите кнопку", IDC_STATIC,14,
13,158,8
END
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 235, 52
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "О программе"
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Полностью учебная программа - за любой нанесённый ущерб мы ответственности не несём. Распространение свободное. Казаковцев Н.М. Малмыгина О.В. Хакасский Государственный Университет. Группа 10-1. 2004 г.",
IDC_STATIC,7,7,221,38
END
IDR_MENU1 MENU DISCARDABLE
BEGIN
POPUP "Файл"
BEGIN
MENUITEM "Открыть текстовый файл", IDFILEOPEN
MENUITEM "Закрыть", IDCLOSE
END
POPUP "Форматирование"
BEGIN
MENUITEM "Параметры форматирования", ID_MENUITEM40002
MENUITEM "Начать форматирование", ID_MENUITEM40003
END
POPUP "О программе"
BEGIN
MENUITEM "?", ID_MENUITEM40004
END
END
Размещено на Allbest.ru
Подобные документы
Характеристика форматов файлов wav и mp3. Построение диаграмм прецедентов, разработка графического интерфейса и архитектуры приложения. Разработка алгоритмов работы программы: метод TrimWavFile, TrimMp3, ChangeVolume, speedUpX1_2, speedDownX1_2.
курсовая работа [2,7 M], добавлен 20.12.2013Анализ и математическая постановка задачи. Описание алгоритма действий, структурной организации программы и ее программной реализации. Текст основной программы, модулей вывода текстовых файлов на экран, извлечения ехе-файлов и подсчёта лабораторных работ.
курсовая работа [28,1 K], добавлен 28.02.2011Разработка программы, проверяющей уровень знаний по разделу стереометрии и позволяющей выбор один из нескольких вариантов и ввод ответа. Характеристика библиотеки MFC, тела, классов и файлов приложения, цикла сообщений и текстовых запусков программы.
курсовая работа [1,5 M], добавлен 28.06.2011Алгоритм написания программы для поиска музыкальных файлов по электронному каталогу магазина на языке программирования С++. Проектирование консольного меню для обеспечения взаимодействия пользователя с компьютером. Тестирование программы на компиляторе.
курсовая работа [548,9 K], добавлен 25.11.2015Разработка программы обработки числовых последовательностей с кодом на языке Pascal. Функции ввода пользователем с клавиатуры последовательности целых чисел. Алгоритмы разработанных процедур и функций. Инструкция пользователя, листинг программы.
курсовая работа [677,7 K], добавлен 13.07.2010Роль информационных технологий в быту. Теоретические аспекты формальных грамматик и их преобразование, алфавит нетерминалов. Распознаватель для преобразованной грамматики и реализация его в виде программы для проверки текстовых файлов и вводимых цепочек.
курсовая работа [129,4 K], добавлен 15.06.2009История интегрированной среды разработки, версии Delphi. Организация библиотеки компонентов. Страница Additional, ряд часто используемых компонентов общего назначения. Исполняемый файл программы "Архиватор текстовых файлов", интерфейс приложения.
курсовая работа [1019,0 K], добавлен 16.05.2017Написание программы, формирующей текстовый файл и выводящую на экран таблицу согласно заданному условию. Реализация принципа формирования текстовых файлов, разработка отдельных модулей (процедур) выбора информации из файла. Листинг полученной программы.
курсовая работа [769,1 K], добавлен 29.12.2011Разработка программы для редактирования в оперативной памяти текстовых ASCII-файлов размером не более 40 килобайт, на языке программирования Pascal в среде разработки Turbo Pascal 6.0. Инструкция для пользователя. Листинг разработанной программы.
курсовая работа [21,3 K], добавлен 26.11.2011Изучение основных этапов программирования на ассемблере, который является символическим представлением машинного языка, то есть каждой машинной команде соответствует команда ассемблера. Реализация алгоритма выполнения программы для просмотра bmp файлов.
курсовая работа [248,0 K], добавлен 25.12.2012