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