p align="left">3) совершен выход из программы 4) программа была вновь открыта : добавленные данные присутствовали. Вывод : данные были успешно сохранены в файле(при просмотре директории файл присутствовал). 5) испытание было повторено В) 1) После запуска программы были открыты данные для корректировки и изменены некоторые из них. 2) Потом некоторые записи были удалены. 3) Во время просмотра удалённые записи отсутствовали, а корректировавшиеся были изменены. 4) Был совершен выход из программы и повторный запуск. 5) Все ранее внесённые изменения присутствовали. Вывод : программа успешно корректирует и удаляет данные, а потом сохраняет изменения в файле. С) 1) Программа была загружена. 2) В структуру данных внесены изменения. 3) Совершён нестандартный выход. 4) Программа вновь загружена. При просмотре сделан вывод: нестандартный выход имеющийся файл данных не повредил, однако новые изменения внесены небыли. Вывод по всем испытаниям: С возложенной задачей программа успешно справляется, не требуя при этом большого количества ресурсов системы. 6. Описание применения Написанная мною программа является СУБД и предназначена для хранения данных об поступивших на склад объектах. Она может найти применение на различного рода хранилищах и складах или в процессах использующих те же принципы хранения и обработки информации. Программа сконфигурирована под MS DOS и установка Windows ей не требуется. Минимальные требования: CPU--Pentium 100 m, и ОЗУ--8Мв, наличие стандартных устройств ввода-вывода. Данный программный продукт обладает дружелюбным интерфейсом, и легкость управления работой. Для упрощения доступа к данным реализован поиск, сходный по применению с поиском в справочной системе компилятора BorlandC++3.0. Программа проста в использовании и не требует никаких дополнительных программных и технических средств от ЭВМ, и специальной квалификации от пользователя. Её системные требования довольно низкие, поэтому программу можно использовать даже на старых моделях компьютеров. Заключение Поставленная задача выполнена на уровне моих представлений о потребностях склада, поэтому возможен некоторый отрыв от реальности (но, так как программа может быть модифицирована, это легко исправить). В связи с тем, что программа не получит коммерческого распространения и новые её версии разрабатываться не будут, я не использовал многие возможности предлагаемые объектно-ориентированным подходом в программировании, чтобы не увеличивать время разработки программы и не ухудшать её читабельность. Литература Гилберт Шилдт "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(<); 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; }; Приложение В Блок-схема
Страницы: 1, 2
|