Videonoma


Automātikas un skaitļošanas tehnikas fakultāte
II kurss, L-11

 

 

 

 

 



Videonoma.

                                                                                                                                                                            
                                                                                                                                                                            
                                                                                                                                                                            

                                                                                                                                                                         












                                                                                                                                                                         






                                                                                                                                                              Izsrādāja: H. Saltons
                                                                                                                                                              Pieņēma:








1998/99. Māc.g.

1.Anotācija.


            Studiju darba uzdevums ir izveidot programmu, kas nodrošinātu darbu ar datiem. videonoma Videonoma veic šādas funkcijas :
1.      Jaunas datubāzes izveide.
2.      Visas datu bāzes caurskatīšana.
3.      Jaunu klientu pievienoðana.
4.      Kasetes izdoðanu klientam.
5.      Kasetes saņemðanu no klienta.
            Videonoma datu ievadei un izvadei izmanto struktūru. Šīs struktūra ietver sevī šādus strukturiālos tipus: vārds, uzvārds, adrese, kasetes numurs. Programma svas darbības laikā izveido divus datu failus, tos novietojot tekošajā direktorijā. Šie faili ir “video.dat”, “video1.dat”
            Studiju darbs ir ietverts vienā atsevišķā disketē ar direktoriju Darbs. Šajā direktorijā atrodas visi nepieciešamie faili ar programmatūru, kas risina izvirzītos jautājumus un uzdotās problēmas. Programmēšanas valodā C++ 3.11 Dos vidē. Starp programmas failiem esošais programmas exe faila apjoms 50 kB.
              Studiju darba apraksta tālākajās nodaļās detalizēti tiek aplūkota uzdevuma nostādne, teorētiskais pamatojums, instrukcijas programmas lietotājam, kontrolpiemērs, secinājumi, literatūras saraksts un pielikums ar programmas tekstu.


































2.Saturs.



1.Anotācija..................................................................................................................................... 2
2.Sautrs........................................................................................................................................... 3
3. Uzdevuma nostādne.................................................................................................................. 4
4.Darba teorētiskais pamatojums................................................................................................. 5
5.Instrukcijas programmas lietotājam......................................................................................... 6
6.Kontrolpiemērs........................................................................................................................... 9
7.Secinājumi................................................................................................................................. 10
8.Izmantotā literatūra.................................................................................................................. 11
9.Pielikums.Programmas pirmteksts.......................................................................................... 12






































3. Uzdevuma nostādne.

              Izveidot programmu “Videonoma”. Programmā ievadītie dati tiek saglbāti failos.
Programmai “Videonoma” ir jābūt mazas datubāzes prototipam, kurā var veikt dažādas darbības ar šo datu uzskaitīšanas veidu. Jābūt nodrošinātām šādām operācijām, kā datu ievade, izvade, papildināšana, meklēšana, dzēšana, rediģēt.

              Programmā “Videonoma” izpildāmās operācijas:
a)      Jaunu datu ievade(jaunas datubāzes izveide).
b)      Jau esošās datubāzes paildināšana ar jauniem ierakstiem.
c)      Esošo datu nolasīšana.
d)     Datu meklēšana.



































4.Darba teorētiskais pamatojums.


            Programmas darbības rezultātā iegūto datu izvietojums ir datubāžu vadības sistēmas interpretācija, kur ar programmas palīdzību tiek apkopoti dati, kuri savukārt atrodas uz atsevišķiem failiem. Starp šiem failiem veidojas saites. Gadījumā, ja tiek pārrauts kāds no šiem posmiem, tad programma nespēj simprocentīgi precīzi tālāk funkcionēt.
            Visa informācija, kuru izmanto programma atrodas uz diviem failiem “video.dat”, “video1.dat”. Tādi datu lauki kā vārds, uzvārds, adrese, kasetes numurs tiek uzglabāti failā “video.dat”.
·         Gadījumā, ja tiek izveidota jauna datu bāze, visi iepriekš ievadītie dati tiek dzēsti (faila  “video.dat” saturs tiek pilnīgi likvidēts) un tad tikai jaunie dati tiek ievadīti šajā failā.
·         Gadījumā, ja jaunie dati tiek papildināti vecajiem, visi iepriekš ievadītie dati tiek saglabāti un jaunie tiek vienkārši pievienoti (faila “video.dat” saturs tiek palielināts).
·         Gadījumā, ja ieraksti tiek nolasīti vai meklēti, vai  izdota un pieņemta kasete , tiek izmantoti abi faili, kuri dod vēlamo rezultātu un informāciju.

Programmas plusi galabājot informāciju divos failos:
Ievadītos datus lietotājs var arī koriģēt bez programmas “videonoma”.

Dod iespēju paplašināt programmas operācijas, funkcijas bez būtiskas programmas pirmteksta pārveidošanas.

Mazāka iespēja notikt kļūdai, kuras rezultātā programma vairs nespētu tālāk sekmīgi darboties.
Programmas mīnusi galabājot informāciju divos failos:
Lai veiktu dažādas operācijas ar ievadītajiem datiem, vairumā gadījumu ir jāveic šo daudzo failu apstrādes. Šī programma būtu kompaktāka, ja būtu izmantots tikai viens fails ievadīto datu ievadei un apstrādei.
Nevar izmantot garumzīmes un mīkstinājumzīmes.











           

5.Instrukcijas programmas lietotājam.

                Ar programmu var sākt strādāt palaižot exe failu. Tūlīt pēc programmas palaišanas lietotājs varēs iegū sīkāku informāciju par šīs programmas autoru. Nospiežot jebkuru taustiņu, tiek dota iespēja uzsākt darbu ar “Telefongrāmatu”(1.att.).





1.att.


Kā redzams 1. attēlā, tad lietotājam ir pieejamas šādas darbības : “Sākt jaunu uzskaiti”-izveidot jaunus ierakstus, “Nolasīt datus” – apskatīt jau esošos ierakstus, “Papildināt datus” – pievienot jaunus ierakstus, “Meklēt pēc uzvārda” – meklēt kādu atsevišķu ierakstu visā sarakstā, “Atdot kaseti”- Atdot kaseti videonoma, “Paņemt kaseti”- Paņemt kaseti no videonomas “Beigt” – beigt darbu ar programmu.

Šīs visas darbības var aktivizēt nospiežot attiecīgo taustiņu. Piemēram, lai sāktu jaunu datu bāzi (videonomu) ir jānospiež taustiņš “j”.
·         Nospieţot taustiņu “j” lietotājam sekoo piedāvājums vienu pēc otra ievadīt visus datus.




                                                                                    3.att.

Kad visi jaunie dati ir ievadīti, tiek ielādēta izvēlne skat. 1.att.
·         Nospiežot taustiņu “n” lietotājam tiek dota iespēja aplūkot visus ierakstus (4.att.).



                                                                                4.att.

Līdzko visi ieraksti ir aplūkoti programma atkal nonāk pie 1.att.

Nospiežot taustiņu “p” viens pēc otra tiks parādīti visi ieraksti(6.att.).




                                                                                6.att

Kad ir parādīti visi ieraksti, tiek ielādēts 1.att.
·         Nospiežot taustiņu “m” programmas lietotājam tiek prasīts ievadīt meklējamo vārdu. Ieraksti tiek meklēti pēc vārdiem(7.att.).




                                                                                7.att.

Ja šāds vārds jau ir tad tāds ieraksts tiek atrasts, un parādīts(8.att.).




                                                                                8.att.

Nospieţot “A” programa piedava ievadīt uzvārdu un parāda ka ir atradusi tādu uzvārdu un atzīmējusi ka kasete ir atdota (9. Att.).














                                                                                9.att.


·         Nospiežot taustiņu “b” programma beigs savu darbu.















 


6.Kontrolpiemērs.


            Kontrolpiemērā tiks ievadīti ieraksts ar operācijas “Sākt jaunu uzskaiti” palīdzību.eraksts:  Ivars

    Priednieks

    Jānis

    Azenes 22a, Riga

    234

               

Parādoties galvenajai izvēlnei izvēlējās “Meklēt”:

Parādās jautājums Ievadiet meklējamo vārdu.

                            Priednieks

Tiek izvadīts:

                            Priednieks

                            Janis
                            Azenes 22a, Riga
                            234


Izpildot šo kontroliemēru tika iegūts vēlamais rezultāts, kas apstiprināja , ka progamma darbojas korekti.




                           

7.Secinājumi.


Pēc programmas “Videonoma” vairākkārtīgas testēšanas var secināt, ka tā risina studiju darbā izvirzītos uzdevumu, kā arī redzams, ka tā ir izveidota korekti un reizē arī pielietojama praktiski. Programmēšanas un pastāvīgas testēšanas gaitā tika slīpēta un vienkāršota algoritmu darbība, lai programma efektīvāk un precīzāk drītu tieši to, kas tika izvirzīts uzdevuma nostādnē.
            Programmēšanas gaitā tika atrasti jauni līdz šim personīgajā praksē nepielietoti paņēmieni, kas ļāva padziļināt zināšanas tieši šajā programmēšanas valodā.
            Izstrādāto studiju darba programmu, protams, ir iespējams papildināt ar dažādiem uzlabojumiem, bet tad ir vajadzīga jaunu prasību un nosacījumu izvirzīšana, kas varētu būt jau jauna studiju darba uzdevums ar krietni vien specifiskākiem un sarežģītākiem nosacījumiem.
Veicot  programmas “Videonoma” testēšanas var redzēt, ka ir  iegūts vēlamais rezultāts. Kuras rezultātā tika ievadīti dati, kuri tika veiksmīgi saglabāti, kā arī visas veiktās operācijas ar “Videonomu” bija korektas un dev vēlamo rezultātu.
Visā kopumā – studiju darba uzdevums ir izpildīts. Veicot dažādas operācijas ar datiem tika iegūts mazas datubāzes prototips.


































8.Izmantotā literatūra.



Lekciju konspekts priekšmetā “Programmēšanas valodas”.

Объектно – ориентированное программирование с исполъзованием С++ Ирэ Пол, Киев – 1995.

















































9.Pielikums.Programmas pirmteksts.


#include
#include
#include
#include
#include
#include
#include
#include

/****************Kasetes panemshana ****************/
void panemt(void)
{register char meklejamais[40],*cw1,atr[10];
                  int cikls,midx,midy,eks,i,i1,i2,i3,i4;
                  char cw;
                  FILE *jauns;

clrscr();
cleardevice();
printf("Ievadiet meklejamo uzvardu: ");
gets(meklejamais);
printf("\nIevadiet kasetes numuru: ");
gets(atr);
clrscr();
cleardevice();
i1=0;
eks = open("video.dat", S_IREAD | S_IWRITE);
if ((jauns=fopen("video1.dat","w+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video1.dat\n");
exit(1);
}
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   fprintf(jauns,"%c",cw);
   if(cw=='#')
   goto reste;
   if(cw=='@')
   {cikls=0;
   i=1;}
   else
   {if(cw==meklejamais[cikls-1] && i==1)
   i=1;
   else
   i=i2;}
reste:
   if(cw=='#' && i==1)
   {i1=1;
   goto ir;}
   cikls=cikls+1;
   i2=i2+1;
} while (!eof(eks));
goto kkk;

//nodrukaashana
ir:
lseek(eks, i2-1, SEEK_SET);
printf("\nUzvards: ");
puts(meklejamais);
i1=0;
i3=0;
i4=0;
do
{
   read(eks, &cw, 1);
   if(cw=='^')
   i4=0;
   if(i3==1)
{  if(i4==0)
   fprintf(jauns,"%c",cw);}
   if(i4==1)
{  fprintf(jauns,"%s",atr);
   i4=2;}
   if(cw=='%')
   i4=1;
   i3=1;
   i2=i2+1;
   switch(cw)
{ case '@':goto l;break;
  case '#':goto l;break;
  case '$':goto l;break;
  case '%':goto l;break;
  case '^':goto l;break;
}
printf("%c",cw);
l:
   if(cw=='@')
   printf("\nUzvards: ");
   if(cw=='#')
   printf("\nVards: ");
   if(cw=='$')
   printf("\nAdrese: ");
   if(cw=='%')
   printf("\nPanemtas kasetes numurs: ");
   if(cw=='^')
{  getche();
goto viss;
   clrscr();
   cleardevice();
}
} while (!eof(eks));
viss:
lseek(eks, i2-1, SEEK_SET);
do
{
   read(eks, &cw, 1);
   if(i3==1)
   fprintf(jauns,"%c",cw);
   i3=1;
} while (!eof(eks));
close(eks);
fclose(jauns);
eks = open("video1.dat", S_IREAD | S_IWRITE);
if ((jauns=fopen("video.dat","w+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video1.dat\n");
exit(1);
}
kkk:
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   fprintf(jauns,"%c",cw);
} while (!eof(eks));
close(eks);
fclose(jauns);
}

/*************** Kasetes atdoshana ****************/
void atdot(void)
{register char meklejamais[40],*atr,*cw1;
                  int cikls,midx,midy,eks,i,i1,i2,i3,i4;
                  char cw;
                  FILE *jauns;

clrscr();
cleardevice();
printf("Ievadiet meklejamo uzvardu: ");
gets(meklejamais);
clrscr();
cleardevice();
i1=0;
eks = open("video.dat", S_IREAD | S_IWRITE);
if ((jauns=fopen("video1.dat","w+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video1.dat\n");
exit(1);
}
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   fprintf(jauns,"%c",cw);
   if(cw=='#')
   goto reste;
   if(cw=='@')
   {cikls=0;
   i=1;}
   else
   {if(cw==meklejamais[cikls-1] && i==1)
   i=1;
   else
   i=i2;}
reste:
   if(cw=='#' && i==1)
   {i1=1;
   goto ir;}
   cikls=cikls+1;
   i2=i2+1;
} while (!eof(eks));
goto kkk;

//nodrukaashana
ir:
lseek(eks, i2-1, SEEK_SET);
printf("\nUzvards: ");
puts(meklejamais);
i1=0;
i3=0;
i4=0;
do
{
   read(eks, &cw, 1);
   if(cw=='^')
   i4=0;
   if(i3==1)
{  if(i4==0)
   fprintf(jauns,"%c",cw);}
   if(i4==1)
{  fprintf(jauns,"%c",'0');
   i4=2;}
   if(cw=='%')
   i4=1;
   i3=1;
   i2=i2+1;
   switch(cw)
{ case '@':goto l;break;
  case '#':goto l;break;
  case '$':goto l;break;
  case '%':goto l;break;
  case '^':goto l;break;
}
printf("%c",cw);
l:
   if(cw=='@')
   printf("\nUzvards: ");
   if(cw=='#')
   printf("\nVards: ");
   if(cw=='$')
   printf("\nAdrese: ");
   if(cw=='%')
   printf("\nPanemtas kasetes numurs: ");
   if(cw=='^')
{  getche();
goto viss;
   clrscr();
   cleardevice();
}
} while (!eof(eks));
viss:
lseek(eks, i2-1, SEEK_SET);
do
{
   read(eks, &cw, 1);
   if(i3==1)
   fprintf(jauns,"%c",cw);
   i3=1;
} while (!eof(eks));
close(eks);
fclose(jauns);
eks = open("video1.dat", S_IREAD | S_IWRITE);
if ((jauns=fopen("video.dat","w+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video1.dat\n");
exit(1);
}
kkk:
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   fprintf(jauns,"%c",cw);
} while (!eof(eks));
close(eks);
fclose(jauns);
}

/******************* Mekleeshana ******************/
void meklet(void)
{register char meklejamais[40],*atr,*cw1;
                  int cikls,midx,midy,eks,i,i1,i2;
                  char cw;

clrscr();
cleardevice();
printf("Ievadiet meklejamo uzvardu: ");
gets(meklejamais);
clrscr();
cleardevice();
i1=0;
eks = open("video.dat", S_IREAD | S_IWRITE);
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   if(cw=='#')
   goto reste;
   if(cw=='@')
   {cikls=0;
   i=1;}
   else
   {if(cw==meklejamais[cikls-1] && i==1)
   i=1;
   else
   i=i2;}
reste:
   if(cw=='#' && i==1)
   {i1=1;
   goto ir;}
   cikls=cikls+1;
   i2=i2+1;
} while (!eof(eks));

//nodrukaashana
ir:
lseek(eks, i2-1, SEEK_SET);
printf("\nUzvards: ");
puts(meklejamais);
i1=0;
do
{
   read(eks, &cw, 1);
   switch(cw)
{ case '@':goto l;break;
  case '#':goto l;break;
  case '$':goto l;break;
  case '%':goto l;break;
  case '^':goto l;break;
}
printf("%c",cw);
l:
   if(cw=='@')
   printf("\nUzvards: ");
   if(cw=='#')
   printf("\nVards: ");
   if(cw=='$')
   printf("\nAdrese: ");
   if(cw=='%')
   printf("\nPanemtas kasetes numurs: ");
   if(cw=='^')
{  getche();
goto viss;
   clrscr();
   cleardevice();
}
} while (!eof(eks));
viss:
close(eks);
}

/******************** Papildinaashana ***************/
void papild(void)
{ register char dati[40];
                   int cikls,midx,midy;
                   unsigned int i,garums,mainig;
                   FILE *upe;
clrscr();
cleardevice();
midx=getmaxx()/2;
midy=getmaxy()/2;
midx-=300;
midy-=200;

//atver failu prieksh jauna izveides
if ((upe=fopen("video.dat","a+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video.dat\n");
exit(1);
}
fprintf(upe,"%s","@");
outtextxy(midx,midy,"Ievadiet uzvardu:");
gotoxy(27,3);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","#");

midy=midy+15;
outtextxy(midx,midy,"Ievadiet vardu:");
gotoxy(27,4);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","$");

midy=midy+15;
outtextxy(midx,midy,"Ievadiet adresi:");
gotoxy(27,5);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","%");

midy=midy+15;
outtextxy(midx,midy,"Panemtas kasetes numurs(i):");
gotoxy(33,6);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","^");

//aiztaisam failu
fclose(upe);
}



/***************** nolasa ***********************/
void nolasa(void)
{register int midx,midy,garums,eks;
                  unsigned int i;
                  FILE *upe;
                  char *nol;
                  char cw;

clrscr();
cleardevice();
eks = open("video.dat", S_IREAD | S_IWRITE);
lseek(eks, 0L, SEEK_SET);
do
{
   read(eks, &cw, 1);
   switch(cw)
{ case '@':goto labs;break;
  case '#':goto labs;break;
  case '$':goto labs;break;
  case '%':goto labs;break;
  case '^':goto labs;break;
}
printf("%c",cw);
labs:
   if(cw=='@')
   printf("\nUzvards: ");
   if(cw=='#')
   printf("\nVards: ");
   if(cw=='$')
   printf("\nAdrese: ");
   if(cw=='%')
   printf("\nPanemtas kasetes numurs: ");
   if(cw=='^')
{  getche();
   clrscr();
   cleardevice();
}
} while (!eof(eks));
close(eks);
}

/******************* Jauns *************************/
void jauns(void)
{ register char dati[40];
                   int cikls,midx,midy;
                   unsigned int i,garums,mainig;
                   FILE *upe;
clrscr();
cleardevice();
midx=getmaxx()/2;
midy=getmaxy()/2;
midx-=300;
midy-=200;

//atver failu prieksh jauna izveides
if ((upe=fopen("video.dat","w+"))==NULL)
{restorecrtmode();
printf("Nevar atvert failu video.dat\n");
exit(1);
}
fprintf(upe,"%s","@");
outtextxy(midx,midy,"Ievadiet uzvardu:");
gotoxy(27,3);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","#");

midy=midy+15;
outtextxy(midx,midy,"Ievadiet vardu:");
gotoxy(27,4);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","$");

midy=midy+15;
outtextxy(midx,midy,"Ievadiet adresi:");
gotoxy(27,5);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","%");

midy=midy+15;
outtextxy(midx,midy,"Panemtas kasetes numurs(i):");
gotoxy(33,6);
gets(dati);
fprintf(upe,"%s",dati);
fprintf(upe,"%s","^");

//aiztaisam failu
fclose(upe);
}
main()
{
 void jauns(void);
 void nolas(void);
 void papild(void);
 void meklet(void);
 void dzest(void);
 void atdot(void);
 void panemt(void);
 int korekts(char);
 unsigned int radit_neradit(unsigned int garums);

 char ch;
 int g_driver,g_mode,errorcode,x,y;
 int midx,midy;
 int kopejais;
 clrscr();


 detectgraph(&g_driver,&g_mode);
 initgraph(&g_driver,&g_mode,"C:\\borlandc\\bgi");

 errorcode = graphresult();
 if (errorcode != grOk)  /* an error occurred */
   {
      printf("Kluda pie grafikas atversanas: %s\n", grapherrormsg(errorcode));
      printf("Nospiediet jebkuru taustinu lai beigtu:");
      getch();
      exit(1); /* terminate with an error code */
   }

lapa:

 midx = getmaxx() / 2;
 midy = getmaxy() / 2;
 cleardevice();
 outtextxy(midx-100, midy-110, "V I D E O N O M A");
 outtextxy(midx-130, midy-90, "J -Sakt jaunu uzskaiti");
 outtextxy(midx-130, midy-80, "N -Nolasit datus");
 outtextxy(midx-130, midy-70, "P -Papildinat datus");
 outtextxy(midx-130, midy-60, "M -Meklet pec uzvarda");
 outtextxy(midx-130, midy-50, "A -Atdot kaseti");
 outtextxy(midx-130, midy-40, "K -Panemt kaseti");
 outtextxy(midx-130, midy-20, "B -Beigt darbu ar programmu");


 gotoxy(1,20);
 ch=getche();

 switch (ch)
   {
   case 'J','j':jauns();break;
   case 'N','n':nolasa();break;
   case 'P','p':papild();break;
   case 'M','m':meklet();break;
   case 'A','a':atdot();break;
   case 'K','k':panemt();break;
   };

 if (ch=='b' || ch=='B') return(0);
 cleardevice();
 goto lapa;}

Nav komentāru:

Ierakstīt komentāru