5. Программа и методика испытаний

Над завершённым программным продуктом был проведён ряд испытаний:

А)

1)         запущена программа

2)         введены новые данные

3)         совершен выход из программы

4)         программа была вновь открыта : добавленные данные присутствовали.

Вывод : данные были успешно сохранены в файле(при просмотре директории файл присутствовал).

5)         испытание было повторено

В)

1)         После запуска программы были открыты данные для корректировки и изменены некоторые из них.

2)         Потом некоторые записи были удалены.

3)         Во время просмотра удалённые записи отсутствовали, а корректировавшиеся были изменены.

4)         Был совершен выход из программы и повторный запуск.

5)         Все ранее внесённые изменения присутствовали.

Вывод : программа успешно корректирует и удаляет данные, а потом сохраняет изменения в файле.

С)

1)         Программа была загружена.

2)         В структуру данных внесены изменения.

3)         Совершён нестандартный выход.

4)         Программа вновь загружена.

При просмотре сделан вывод: нестандартный выход имеющийся файл данных не повредил, однако новые изменения внесены небыли.

Вывод по всем испытаниям:

С возложенной задачей программа успешно справляется, не требуя при этом большого количества ресурсов системы.


6. Описание применения

Написанная мною программа является СУБД и предназначена для хранения данных об поступивших на склад объектах. Она может найти применение на различного рода хранилищах и складах или в процессах использующих те же принципы хранения и обработки информации.

Программа сконфигурирована под MS DOS и установка Windows ей не требуется.

Минимальные требования: CPU—Pentium 100 m, и ОЗУ—8Мв, наличие стандартных устройств ввода-вывода.

Данный программный продукт обладает дружелюбным интерфейсом, и легкость управления работой.

Для упрощения доступа к данным реализован поиск, сходный по применению с поиском в справочной системе компилятора BorlandC++3.0.

Программа проста в использовании и не требует никаких дополнительных программных и технических средств от ЭВМ, и специальной квалификации от пользователя.

Её системные требования довольно низкие, поэтому программу можно использовать даже на старых моделях компьютеров.


Заключение

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

В связи с тем, что программа не получит коммерческого распространения и новые её версии разрабатываться не будут, я не использовал многие возможности предлагаемые объектно-ориентированным подходом в программировании, чтобы не увеличивать время разработки программы и не ухудшать её читабельность.


Литература

1.   Гилберт Шилдт "Borland C++"

2. Гради Буч "Объектно-ориентированный анализ и проектирование".


Приложение А

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

#include <conio.h>

#include <stdio.h>

#include <graphics.h>

#include <iostream.h>

#include <dir.h>

#include <PROCESS.H>

#include <IO.h>

#include <dos.h>

#include <time.h>

#include <FSTREAM.H>

void append();

void Mousebut(int *cbb,int *xx,int *yy);

void HideMouse();

void ShowMouse();

char Conv(int);

void Correct(void);

int Find();

void DrawMain(int);

void Timeout();

int nzap=0,regim;

int exitp;

char userprg[15]=" ";

time_t lt;

char *mch;

class DataF {

public:

char datep[10];

char name[20];

char col_vo[10];

char ed_ism[5];

char inform[200];

char user[15];

char GetPole(char *str,int nb,int rzc)

{

int i;

if(rzc==0)

for(i=0;i<nb;i++)

{

str[i]=' ';

};

int ic;

char chr;

int nb1=nb,nb2=nb;

if(rzc!=0){if(nb>100)nb2=30; for(i=0;i<nb2-2;i++)cout<<str[i];nb1=nb1-2; cout<<"_"; };

for(i=((rzc!=0)?nb1:0);i<nb-1;i++)

{

ic=getch();

if(ic==13)break;

if(ic==27){nzap--;i=nb;};

if(ic==8){str[i-1]=' ';i=i-2;gotoxy(wherex()-2, wherey()); cout<<"_"; cout<<" "; gotoxy(wherex()-1,wherey());}

else{

chr=Conv(ic);

str[i]=chr;

gotoxy(wherex()-1,wherey());

cout<<chr;

cout<<"_"; };

};

gotoxy(wherex()-1,wherey());

cout<<" ";

str[nb-1]='\0';

};

void NewZap(int rzc) //rzc: 0-new 1-correct

{

HideMouse();

cleardevice();

if(rzc!=0){gotoxy(20,9); cout<<"корректировка :";};

gotoxy(20,10);

cout<<"наименование : ";

GetPole(&name[0],20,rzc);

gotoxy(20,11);

cout<<"единицы измерений : ";

GetPole(&ed_ism[0],5,rzc);

gotoxy(20,12);

cout<<"количество : ";

GetPole(&col_vo[0],10,rzc);

gotoxy(20,13);

cout<<"дата поступления : ";

GetPole(&datep[0],10,rzc);

gotoxy(20,14);

cout<<"дополнительные данные: ";

GetPole(&inform[0],200,rzc);

for(int i=0; i<15; i++) user[i]=userprg[i];

};

};

DataF Zap[125];

void LoadZap()

{

clrscr();

gotoxy(10,10);

cout<<" введите своё имя: ";

cin>>userprg;

FILE *f;

f=fopen("ttt.cfg","r");

nzap=1;

while (!feof(f))

{

fread(&Zap[nzap],sizeof(DataF),1,f);

nzap++;

};

nzap--;

fclose(f);

};

void SaveZap()

{

FILE *f;

f=fopen("ttt.cfg","w");

for (int i=1;i<nzap;i++) fwrite(&Zap[i],sizeof(DataF),1,f);

fclose(f);

};

void append()

{

FILE *f;

f=fopen("ttt.cfg","a");

fwrite(&Zap[nzap],sizeof(DataF),1,f);

fclose(f);

};

void MouseStatus(int *x,int *y,int *button)

{

int bb,xx,yy;

asm {

mov ax,03;

int 33h;

mov bb,bx;

mov xx,cx;

mov yy,dx;

};

*button=bb;

*x=xx;

*y=yy;

};

void Information()

{

HideMouse();

char ch;

int exitInf=0;

cleardevice();

gotoxy(18,9);

cout<<"разработано Можайко А.С.";

ch=getch();

DrawMain(regim);

ShowMouse();

};

void DrawMain(int regim)

{

cleardevice();

const char MenuItem[6][16]={" ",

" „добавить ",

" просмотр ",

" корректировка ",

" удалить ",

" выход "};

setcolor(1);

setbkcolor(1);

for (int i=1;i<=5;i++)

{

setfillstyle(1,i==regim?9:10);

fillellipse(300,55+i*60,90,20);

outtextxy(238,50+i*60,MenuItem[i]);

}; Timeout(); ShowMouse();

};

void ShowMouse(void)

{

asm { mov ax,01h

int 33h

}

};

void HideMouse(void)

{

asm{

mov ax,02

int 33h

}

};

void Nadpis(int n1,int coln)

{

setbkcolor(3);

struct viewporttype SaveWin;

getviewsettings(&SaveWin);

setviewport(9,9,631,260,SaveWin.clip);

clearviewport();

setviewport(9,279,598,434,SaveWin.clip);

clearviewport();

setviewport(SaveWin.left,SaveWin.top,SaveWin.right,SaveWin.bottom,SaveWin.clip);

char *st,*st1,*st2,*st3,*st4,*st5,stm[100],stm2[100];

int i;

if((n1)<125)

for (i=1;i<9;i++)

{

if(i==coln) setcolor(1);

else setcolor(4);

gotoxy(3,2*i);

cout<<n1+i-1;

st=Zap[n1+i-1].datep;

outtextxy(40,i*32-12,st);

st1=Zap[n1+i-1].name;

outtextxy(150,i*32-12,st1);

st2=Zap[n1+i-1].col_vo;

outtextxy(380,i*32-12,st2);

st3=Zap[n1+i-1].ed_ism;

outtextxy(500,i*32-12,st3);

setcolor(4);

if(i!=8)line(8,i*32+5,632,i*32+5);

};

st4=Zap[n1+coln-1].inform;

outtextxy(50,320,st4);

st5=Zap[n1+coln-1].user;

outtextxy(550,420,st5);

};

int Find()

{

char ch,rf,*zapm,word[20];

int mflag[125];

for(int f=1;f<nzap;f++)

mflag[f]=1;

setbkcolor(5);

bar(100,100,500,250);

rf=getch();

int k=-1,ret,fpk;

ch=getch();

while(3)

{

k++;

fpk=0;

for(int i=1;i<nzap-1;i++)

{

if(mflag[i]!=0){

if(rf==50){

if(ch==Zap[i].name[k]){ mflag[i]=1;fpk=1;};

if(ch!=Zap[i].name[k]) mflag[i]=0;

};

if(rf==49){

if(ch!=Zap[i].datep[k]) mflag[i]=0;

if(ch==Zap[i].datep[k]){ mflag[i]=1;fpk=1;};

};

};

};

if(fpk==0){ ch=getch(); fpk=7; };

do {

for(i=1;i<nzap-1;i++)

if(mflag[i]==1)

{

Nadpis(i,1);

ret=i;

ch=getch();

if((ch!=9)) i=nzap;

};

if(ch==9)ch=getch();}

while(ch==9);

if(ch==13)break;

};

return ret;

};//*/

int View(int corr)

{

HideMouse();

setfillstyle(1,1);

bar(0,0,getmaxx(),getmaxy());

setcolor(4);

line(0,270,640,270);

line(0,0,7,7);

line(633,7,640,0);

line(0,270,7,263);

line(633,263,640,270);

line(0,270,7,277);

line(633,277,640,270);

line(0,480,7,473);

line(633,473,640,480);

rectangle(7,7,633,263);

rectangle(7,277,633,473);

setfillstyle(1,2);

bar(601,279,631,471);

settextstyle(0,0,3);

outtextxy(608,290,"F");

outtextxy(608,335,"I");

outtextxy(608,380,"N");

outtextxy(608,425,"D");

settextstyle(0,0,0);

rectangle(600,278,632,472);

rectangle(601,277,633,473);

setfillstyle(1,3);

bar(8,8,632,261);

bar(8,278,599,472);

bar(8,435,599,472);

setcolor(4);

int exitPrg=0,ret=0;

char cr;

int i=1,newi=1,botton, x, y;

Nadpis(1,1);

ShowMouse();

line(8,450,599,450);

while(exitPrg==0){

while(!kbhit()){Mousebut(&botton, &x, &y);

if(botton>0)

if((x>601)&&(x<631))

if((y>279)&&(y<471)){

i=Find();newi=i;i=1;};

};

cr=getch(); HideMouse();

switch(cr){

case 72:{i--;

if(i<1) {

i=1;

if(newi>1){newi--;};

};

Nadpis(newi,i);

break;};

case 80:{i++;if(i>8){i=8;newi++;};

Nadpis(newi,i);

break; };

case 62:i=Find();newi=i;i=1;break;

case 27:exitPrg=1;ret=-1;break;

case 13:{delay(300);ret=(newi+i-1);exitPrg=1;

break;};

};

textbackground(2); setfillstyle(1,10); ShowMouse();

};

HideMouse();

settextstyle(0,0,0);

return ret;

};

void deleteZap(void)

{

int exitdel=0;

char ch;

while (exitdel==0)

{

int t=View(2);

if(t==-1)break;

setbkcolor(1);

bar(100,100,500,200);

ch=getch();

if(ch==13){

for(int i=t; i<=nzap; i++){ Zap[i]=Zap[i+1];exitdel=1;};

};

};

}; //*/

void Correct(void)

{

int t=View(1);

setbkcolor(1);

if((t!=0)&&(t!=-1))

Zap[t].NewZap(1,t);

};

void EnterHandle(int regim)

{

cleardevice();

switch (regim)

{

case 1: Zap[nzap].NewZap(0,nzap);nzap++; break;

case 2: View(0); break;

case 3: Correct();break;

case 4: deleteZap();nzap--; break;

case 5: exitp=1; break;

};

cleardevice();

DrawMain(regim);

};

void Timeout()

{

setcolor(1);

lt=time(NULL);

outtextxy(445,460,mch);

mch=ctime(&lt);

setcolor(11);

outtextxy(445,460,mch);

setcolor(1);

};

int main()

{

int driver,mode,r;

int regim=1;

driver=DETECT;

mode=0;

LoadZap();

initgraph(&driver,&mode,"c:\\borlandc\\bgi");

setbkcolor(8);

DrawMain(regim);

ShowMouse();

exitp=0;

int x,y,button,timeR=0;

Mousebut(&button,&x,&y);

while (exitp==0)

{

timeR++;

if(timeR==-10) { Timeout();timeR=0; };

if (kbhit()) switch (getch())

{

case 27: exitp=1;

break;

case 80:regim=regim % 5 +1; DrawMain(regim);

break;

case 72:regim=regim==1?5:regim-1; DrawMain(regim);

break;

case 13:EnterHandle(regim);

};

Mousebut(&button,&x,&y);

if (button>0)

if ((x>555)&&(x<630))

if ((y>0)&&(y<80)) Information();

if (button>0)

{

if((x>255)&&(x<340))

{

if((y>100)&&(y<125))regim=1;

if((y>165)&&(y<185))regim=2;

if((y>225)&&(y<245))regim=3;

if((y>285)&&(y<305))regim=4;

if((y>345)&&(y<365))regim=5;

EnterHandle(regim);

};

};

};

SaveZap();

HideMouse();

restorecrtmode();

return 0;

};

void Mousebut(int *cbb,int *xx,int *yy)

{

int cb,x,y;

asm{

mov ax,05h

mov bx,0

int 33h

mov cb,bx

mov x,cx

mov y,dx

};

*xx=x;*yy=y;*cbb=cb;

};


Приложение В

Блок-схема





Информация о работе «Конструирование программ и языки программирования»
Раздел: Информатика, программирование
Количество знаков с пробелами: 23348
Количество таблиц: 0
Количество изображений: 6

Похожие работы

Скачать
231244
5
6

... По теореме 9.3 в силу результатов шагов 3 и 8. (Шаг 10). Имеет место свойство (9.4) по теореме 9.5 в силу результатов шагов 1 и 9. Литература к лекции 9. 9.1. С.А. Абрамов. Элементы программирования. - М.: Наука, 1982. С. 85-94. 9.2. М. Зелковец, А. Шоу, Дж. Гэннон. Принципы разработки программного обеспечения. - М.: Мир, 1982. С. 98-105. Лекция 10. ТЕСТИРОВАНИЕ И ОТЛАДКА ПРОГРАММНОГО ...

Скачать
10866
0
0

... повышают уровень требований к массовой алгоритмической культуре. Практически все диалоговые системы являются программируемыми. Методика конструирования программ легко переносится на другие процедурные языки программирования, в том числе и объектно-ориентированные.[2] В соответствии с технологией конструирования программ построена программа тестового редактора. Я разделил ее на этапы: Создание ...

Скачать
44688
14
5

... . И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB; пользоваться этими трюками гораздо сложнее, чем, например, на Delphi. 4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ПРОГРАММИРОВАНИЯ DELPHI   4.1 Задача 1. Примитивный калькулятор   1. Войдите в среду Delphi, дважды щелкнув мышью на пиктограмму Delphi или через меню “ ...

Скачать
32434
0
8

... последовать разработка ПС по установленным требованиям в рамках какого-либо другого подхода (например, водопадного). ·  Формальные преобразования. Этот подход включает разработку формальных спецификаций ПС и превращение их в программы путем корректных преобразований. На этом подходе базируется компьютерная технология (CASE-технология) разработки ПС. ·  Сборочное программирование. Этот подход ...

0 комментариев


Наверх