Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Оценка качества программного продукта




форматирование текстовый файл алгоритм

По результатам испытания была проведена оценка качества ПС. Оценка качества приведена в табл. 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 для ускорения процесса программирования.

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


Заключение

 

. Результатом данной работы является разработанное приложение «txt Formater». Разработанный продукт является полностью функциональным (все необходимые функции в нем реализованы). Несмотря на это, допускается его дальнейшая модернизация как в плане интерфейса, так и в плане функциональных возможностей.

. При разработке программы были использованы современные методологии и технологии, позволяющие в сжатые сроки получить качественный продукт. Программа реализована с помощью среды программирования Microsoft Visual Studio С++ 6.0.


Библиографический список

1. MSDN.

2. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования С++: Учебный курс. - Харьков: Фолио; М.: ООО "Издательство АСТ", 2001. - 500 с.

.   Петзолд. Ч. Программирование для Windows 95 в двух томах. «BHV - Санкт-Петербург» С. 242.

.   Шкарина Л.Н. Методические рекомендации по выполнению научно-исследовательских работ для студентов информационных специальностей университета. // Вестник Хакасского государственного университета им. Н.Ф. Катанова. Выпуск 4. Серия 1: Информатика. - Абакан; Издательство Хакасского государственного университета им. Н.Ф. Катанова, 2000. - С. 232-235.

 


Приложение

Main.cpp

#include <windows.h>

#include <stdio.h>

#include <time.h>

#include <string.h>

#include "resource.h"CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);CALLBACK Dlg1Func (HWND Dlg1, UINT message, WPARAM wParam, LPARAM lParam);CALLBACK Dlg2Func (HWND Dlg2, UINT message, WPARAM wParam, LPARAM lParam);CALLBACK DlgAFunc (HWND DlgA, UINT message, WPARAM wParam, LPARAM lParam);ofn;buf[260]="";long fs=0;buf1[260]="";ext[]="txt";

char szWinName[] = "Lab4";hdc;

bool doit=false;Turn;hInst;hwnd,Dlg1,Dlg2,DlgA;* result;number;aa;hfile,hfile1,hfile2;mem,mem1;txtctrl;con=75,aftcon,sp,nd=1,alg=1;sfile[],rfile[],tfile[];cppbs[2048]=" ";spase[2]=" ";WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInstance, LPSTR lpszArgs, int nWinMode)

{msg;wcl;.hInstance=hThisInst;.lpszClassName=szWinName;.lpfnWndProc=WindowFunc;.style=0;.hIcon=LoadIcon(NULL, IDI_APPLICATION);.hCursor=LoadCursor(NULL, IDC_ARROW);.lpszMenuName=(LPCTSTR)IDR_MENU1;.cbClsExtra=0;.cbWndExtra=0;.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);(!RegisterClass(&wcl)) return 0;((unsigned)time(NULL));=CreateWindow(szWinName, "txt Formater",_SYSMENU,_USEDEFAULT,_USEDEFAULT,

,

,_DESKTOP,,,);(hwnd, nWinMode);(hwnd);(GetMessage(&msg, NULL, 0, 0))

{(&msg);(&msg);

}msg.wParam;

}CALLBACK WindowFunc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{(message)

{WM_MOUSEMOVE:;WM_DESTROY:(0);

break;

//обрабатываем команды от главного меню

case WM_COMMAND:(wParam) {

//отображаем диалоговое окно форматированияID_MENUITEM40002:

{=CreateDialog(NULL,(LPCTSTR) IDD_Format, hwnd, Dlg1Func);(Dlg1,SW_SHOW);

};ID_MENUITEM40004:

{=CreateDialog(NULL,(LPCTSTR) IDD_DIALOG1, hwnd, DlgAFunc);(DlgA,SW_SHOW);

};ID_MENUITEM40003:

{=CreateDialog(NULL,(LPCTSTR) IDD_F, hwnd, Dlg2Func);(Dlg2,SW_SHOW);

};

//обрабатываем закрытие приложение через команду менюIDCLOSE:

{(0);

};

//обрабатываем открытие файла пользователемIDFILEOPEN:{

//открываем текстовый файл и отображаем его в окне предварительного просмотра

//заполняем поля структуры, описывающей открываемый файл

ofn.lStructSize=sizeof(OPENFILENAME);.hwndOwner=hwnd;.lpstrFile=buf;.nMaxFile=260;.Flags=OFN_FILEMUSTEXIST;.lpstrDefExt=ext;(!GetOpenFileName(&ofn)) ExitProcess(76);

//открываем файл=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(txtctrl,(LPCSTR)mem);

//освобождаем область памяти(mem,0,MEM_RELEASE);

//устанавливаем фокус ввода на окно редактирования(txtctrl);

//открываем диалог сохранения файла

ofn.lStructSize=sizeof(OPENFILENAME);.hwndOwner=hwnd;.lpstrFile=buf1; ofn.nMaxFile=260;.Flags=OFN_NOREADONLYRETURN;.lpstrDefExt=ext;(!GetSaveFileName(&ofn)) ExitProcess(76);

//выкидываем пользователю окно диалога(hwnd,WM_COMMAND,ID_MENUITEM40002,0); //и в завершении окно диалога начала форматирования

//MessageBox(NULL,"Задайте параметры форматирования текста и оцените результат в окне предварительного просмотра","Error",MB_OK);

};

}WM_SIZE:(txtctrl,0,0,495,456,1);;WM_SETFOCUS:(txtctrl);;WM_CREATE:=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);(!txtctrl) PostQuitMessage(0);;WM_RBUTTONDOWN:(doit==0)

{

}0;;:DefWindowProc(hwnd, message, wParam, lParam);

}0;

}

//функция обрабатывающая сообщения окна диалога

BOOL CALLBACK Dlg1Func (HWND Dlg1, UINT message, WPARAM wParam, LPARAM lParam)

{ HWND Edt;(message)

{WM_INITDIALOG:

//устанавливаем параметры диалога "по умолчанию"(Dlg1,IDC_EDIT1,"75");(Dlg1,IDC_EDIT2,"0");;WM_DESTROY:WM_CLOSE:(Dlg1);=NULL;;WM_COMMAND:(LOWORD(wParam)==IDOK)

{char te[4];

//получаем указатель на поле ввода диалогового окна

Edt=GetDlgItem(Dlg1,IDC_EDIT1);

//получаем то что введено в поле ввода в виде текста(Edt,te,3);

//преобразуем текст в число=atoi(te);

//получаем число пробелов в начале строки

Edt=GetDlgItem(Dlg1,IDC_EDIT2);

GetWindowText(Edt,te,3);=atoi(te);

if (aftcon>0) {(int d=1; d<aftcon; d++)

{strcat(cppbs," ");}}

//выравнивать ли текст по ширине

Edt=GetDlgItem(Dlg1,IDC_CHECK1);(SendMessage(Edt,BM_GETCHECK,0,0)){alg=1;}else{alg=0;}

//получаем значения элементов управления=GetDlgItem(Dlg1,IDC_CHECK2);

if (SendMessage(Edt,BM_GETCHECK,0,0)){sp=1;}else{sp=0;}

//слева

//12=GetDlgItem(Dlg1,IDC_RADIO2);(SendMessage(Edt,BM_GETCHECK,0,0)){nd=0;}

//12/13=GetDlgItem(Dlg1,IDC_RADIO3);(SendMessage(Edt,BM_GETCHECK,0,0)){nd=1;}

//закрываем диалоговое окно=CreateDialog(NULL,(LPCTSTR) IDD_F, hwnd, Dlg2Func);(Dlg2,SW_SHOW);(Dlg1,0);

};;

}FALSE;

}

//собственно функция выполняющая форматирование

BOOL CALLBACK Dlg2Func (HWND Dlg2, UINT message, WPARAM wParam, LPARAM lParam)

{hu[]="";s[2048]="",stt[2048]=" ",sttt[2048]=" ",re[2048]="";

char ns=13;nsp='/n/r';ns1=10;

char caches[2048];empc[]="";dspase[3]=" ";qwe[]="";rf,fe,sf,wf,st,sv;t[1];long fs=0;long fss=0;long ti=1,to=1;i=0,j=0;(message)

{WM_DESTROY:WM_CLOSE:(Dlg2);=NULL;;

case WM_COMMAND:

//отрабатываем нажатие кнопки оК(LOWORD(wParam)==IDOK)

{ //открываем исходный файл для чтения(s,cppbs);(strlen(buf)<2 || strlen(buf1)<2){MessageBox(NULL,"Прежде чем начинать форматировать нужно определиться с тем, что мы будем форматировать.","Error",MB_OK); EndDialog(Dlg2,0);goto w1;}

//открываем файл с исходным текстом.lStructSize=sizeof(OPENFILENAME);

ofn.hwndOwner=hwnd;.lpstrFile=buf;.nMaxFile=260;.Flags=OFN_FILEMUSTEXIST;.lpstrDefExt=ext;=CreateFile(buf,GENERIC_READ,0,0,OPEN_EXISTING,0,0);//запоминаем указатель на него

//создаём файл в который будем записывать результаты форматирования

ofn.lStructSize=sizeof(OPENFILENAME);.hwndOwner=hwnd;.lpstrFile=buf1; ofn.nMaxFile=260;.Flags=OFN_NOREADONLYRETURN;.lpstrDefExt=ext;

/*открываем только для записи (читать из него нам точно ничего не понадобится),

при открытии удаляем все его содержимое) */

hfile1=CreateFile(buf1,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);//запоминаем указатель на него=true;=GetFileSize(hfile,&fss);(qwe,"%i",fs);(txtctrl,qwe);

//в цикле читаем файл и занимеемся форматированием строчек

while(rf)

{=ReadFile(hfile,&t,to,&ti,NULL);

//st=false;(ti!=0){i++;}//в случае если, что-то прочитали, то увеличиваем счётчик на единицу((fs)==i) {rf=0;}//проверяем не хватит ли нам читать

if (t[0]==13){strcpy(t,hu);}(t[0]!=32 && t[0]!=10){strcat(caches,t);}

if (t[0]==32)//если прочитанный символ - пробел

{strcat(caches,t);(strlen(s)+strlen(caches)+strlen(re)<con){(s,re);(re,hu);(re,caches);(caches,hu);//очищаем кеш

}{ l1:((strlen(s)+strlen(re)<con) && (alg))

{(stt,re);(re,stt);(stt,sttt);l1;

}(s,re);(hfile1,&s,strlen(s),&ti,NULL);(nd) {WriteFile(hfile1,&ns,1,&ti,NULL);}// записываем символ перевода строки

WriteFile(hfile1,&ns1,1,&ti,NULL);//записываем символ конца строки

strcpy(s,cppbs);(re,caches);

strcpy(caches,hu);

}

}(t[0]==10) {//если прочитанный символ конец сроки

strcat(s,caches);(s,re);(caches,hu);(re,hu);

char kl[2048]=" ";(sp) {strcat(s,kl);}//если необходимо добавляем пробел в конце истинного абзаца текста

WriteFile(hfile1,&s,strlen(s),&ti,NULL);

{WriteFile(hfile1,&ns,1,&ti,NULL);}(hfile1,&ns1,1,&ti,NULL);(s,cppbs);

}

}(hfile);(hfile1);=CreateFile(buf1,GENERIC_READ,0,0,OPEN_EXISTING,0,0);=VirtualAlloc(0,GetFileSize(hfile1,0),MEM_COMMIT,PAGE_READWRITE);(hfile1,mem1,GetFileSize(hfile1,0),&aa,0);

((BYTE*)mem1)[GetFileSize(hfile1,0)]=0;(hfile1);

//выводим содержимое файла в EDIT(txtctrl,(LPCSTR)mem1);(mem1,0,MEM_RELEASE);(Dlg2,0);(txtctrl);

}:{;}

}FALSE;

}CALLBACK DlgAFunc (HWND DlgA, UINT message, WPARAM wParam, LPARAM lParam)

{(message)

{WM_DESTROY:WM_CLOSE:(DlgA);=NULL;;

}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, 124DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU "Параметры форматирования текста"

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"Разрыв строки",IDC_STATIC,7,74,161,22"10",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,13,83,24,10"13/10",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,50,84,35,10"Завершать абзац пробелом",IDC_CHECK2,"Button",_AUTOCHECKBOX | WS_TABSTOP,7,58,111,10 "Добавлять пробелов перед стрококой",IDC_STATIC,7,30,132,8

EDITTEXT IDC_EDIT2,142,28,32,13,ES_AUTOHSCROLL | ES_NUMBER "Выравнивать строки текста по ширине", IDC_CHECK1,"Button",

BS_AUTOCHECKBOX | WS_TABSTOP,8,45,149,10_F DIALOG DISCARDABLE 0, 0, 186, 44DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU"Форматирование"8, "MS Sans Serif" "Начать форматирование",IDOK,7,23,172,14

LTEXT "Для начала форматирования нажмите кнопку", IDC_STATIC,14,

13,158,8_DIALOG1 DIALOG DISCARDABLE 0, 0, 235, 52DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU"О программе"8, "MS Sans Serif" "Полностью учебная программа - за любой нанесённый ущерб мы ответственности не несём. Распространение свободное. Казаковцев Н.М. Малмыгина О.В. Хакасский Государственный Университет. Группа 10-1. 2004 г.",_STATIC,7,7,221,38_MENU1 MENU DISCARDABLE"Файл""Открыть текстовый файл", IDFILEOPEN"Закрыть", IDCLOSE"Форматирование""Параметры форматирования", ID_MENUITEM40002"Начать форматирование", ID_MENUITEM40003"О программе""?", ID_MENUITEM40004

END

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...