#include #include #include #include #include struct naglowek { long nr_dok; char rok_ob[5]; char ok_spr[3]; char rodz_dok[3]; char data_ks[9]; char stat_dok[2]; long nr_dok_st; struct pozycja *p_poz; } tablica[20]; struct pozycja { short nr_poz; char konto[7]; char WnMa[3]; char kod_pod[3]; float kwota; struct pozycja *nast; }; char c; FILE *plik; int i=0; //index tablicy void sortuj_tab(int); int podatek(char kod[3]) { if (strcmp(kod,"AA")==0) return 7; else if (strcmp(kod,"BB")==0) return 14; else if (strcmp(kod,"CC")==0) return 22; else return 0; } //koniec podatek float kwota(struct pozycja *p) { if (strcmp(p->WnMa,"Wn")==0) return (-1*(p->kwota)); else return p->kwota; } //koniec kwota void wsk_OK(struct pozycja *ptr) { if (ptr==NULL) {clrscr(); printf("\n\nBlad podczas alokowania pamieci!"); getch();} else ;; } //koniec wsk_OK void wpr_wsk(struct pozycja *wsk) { char tmp1[3]; textbackground(3); textcolor(0); gotoxy(37,6); cprintf(" "); gotoxy(wherex()-2,wherey()); scanf("%2s",tmp1); if ((strcmp(tmp1,"Wn")==0)||(strcmp(tmp1,"Ma")==0)) strcpy(wsk->WnMa,tmp1); else { textcolor(15); printf("\nNieprawidlowy wskaznik! Wcisnij dowolny klawisz..."); getch(); textbackground(BLACK); gotoxy(1,8);clreol(); wpr_wsk(wsk); } //koniec else } //koniec wpr_wsk void wpr_kod(struct pozycja *wsk) { char tmp1[3]; textbackground(3); textcolor(0); gotoxy(45,8); cprintf(" "); gotoxy(wherex()-2,wherey()); scanf("%2s",tmp1); if ((strcmp(tmp1,"AA")==0)||(strcmp(tmp1,"BB")==0)||(strcmp(tmp1,"CC")==0)||(strcmp(tmp1,"DD")==0)) strcpy(wsk->kod_pod,tmp1); else { textcolor(15); printf("\nNieprawidlowy kod podatku! Wcisnij dowolny klawisz..."); getch(); textbackground(BLACK); gotoxy(1,10);clreol(); wpr_kod(wsk); } //koniec else } //koniec wpr_kod void wpr_poz(struct pozycja *wsk) { textcolor(WHITE); textbackground(BLACK); printf("\nKonto: "); textbackground(3); textcolor(0); cprintf(" "); gotoxy(wherex()-6,wherey()); scanf("%6s",wsk->konto); printf("\nWybierz wskaznik: Wn-winien, Ma-ma: "); wpr_wsk(wsk); printf("\nKod podatku (AA-7%, BB-14%, CC-22%, DD-0%): "); wpr_kod(wsk); printf("\nKwota (xx...xx.xx) w zl): "); cprintf(" "); gotoxy(wherex()-9,wherey()); float tmp; scanf("%f",&tmp); wsk->kwota=tmp; } //koniec wpr_poz void wpr_dok(void) { if (i==20) {clrscr(); printf("\nTablica naglowkow jest juz zapelniona.\n\nWcisnij dowolny klawisz..."); getch();} else { clrscr(); long numer=0; textcolor(WHITE); textbackground(BLACK); printf("\nNumer dokumentu: "); textbackground(3); textcolor(0); cprintf(" "); gotoxy(wherex()-6,wherey()); scanf("%6ld",&numer); short x=0; for (int j=0;j?"); c=getch(); textcolor(15); textbackground(0); float ww=0,mm=0; if (toupper(c)=='T') { struct pozycja *wsk, *first=NULL; int j=1; do { textcolor(WHITE); textbackground(BLACK); window(1,1,80,14); clrscr(); window(1,19,80,25); clrscr(); window(1,1,80,25); printf("\n Pozycja nr %d:\n",j); wsk=(struct pozycja*)malloc(sizeof(struct pozycja)); wsk_OK(wsk); wsk->nr_poz=j; wpr_poz(wsk); if (strcmp(wsk->WnMa,"Wn")==0) ww+=wsk->kwota; else if (strcmp(wsk->WnMa,"Ma")==0) mm+=wsk->kwota; tablica[i].p_poz=wsk; wsk->nast=first; first=wsk; gotoxy(1,15); printf("Bilans dokumentu:\nWinien: %.2f \nMa: %.2f \nWinien-Ma: ",ww,mm); if ((ww-mm)!=0.00) {textcolor(RED); textbackground(BLACK); cprintf("%.2f ",ww-mm);} else printf("%.2f ",ww-mm); textcolor(WHITE); printf("\n\n\tNastepna pozycja? "); c=toupper(getch()); if ((c!='T') && (ww-mm)!=0) { printf("\n\n\tBilans dokumentu rozny od zera !!!"); printf("\n\nWcisnij dowolny klawisz..."); getch(); c='T'; } else ;; j++; } while (c=='T'); } //koniec if else ;; i++; } //koniec if-else sortuj_tab(i); } } //koniec wpr_dok void wysw_wsz(void) { textcolor(WHITE); for (int j=0;jnast) { gotoxy(1,12+p->nr_poz);printf("%d",p->nr_poz); gotoxy(16,12+p->nr_poz);printf("%6s",p->konto); gotoxy(32,12+p->nr_poz);printf("%2s",p->WnMa); gotoxy(48,12+p->nr_poz);printf("%2s (%d%)",p->kod_pod,podatek(p->kod_pod)); gotoxy(64,12+p->nr_poz);printf("%6.2f",kwota(p)); } //koniec for } //koniec else gotoxy(40,25); printf("Wcisnij dowolny klawisz...");getch(); } //koniec if } //koniec wysw_poz void storn(void) { if (i==20) {clrscr(); printf("\nTablica naglowkow jest juz zapelniona.\n\nWcisnij dowolny klawisz..."); getch();} else { long nr=0; clrscr(); printf("Podaj numer dokumentu do wystornowania: "); textbackground(3); textcolor(0); cprintf(" "); textbackground(0); textcolor(15); gotoxy(wherex()-6,wherey()); scanf("%6ld",&nr); short znal=0; short poz; for (int j=0;j? "); c=getch(); if (toupper(c)=='T') { clrscr(); printf("Tworzenie dokumentu stornujacego dokument nr #%6ld#.",nr); textbackground(3); textcolor(0); printf("\nNumer dokumentu: ");cprintf(" "); gotoxy(wherex()-6,wherey()); long numer=0; scanf("%6ld",&numer); short x=0; for (int j=0;jnast) { pp=(struct pozycja*)malloc(sizeof(struct pozycja)); wsk_OK(pp); *pp=*p; if (strcmp(pp->WnMa,"Wn")==0) strcpy(pp->WnMa,"Ma"); else strcpy(pp->WnMa,"Wn"); tablica[stor].p_poz=pp; pp->nast=firstpp; firstpp=pp; } //koniec for i++; getch(); } } else ;; };//koniec if-else sortuj_tab(i); } } //koniec storn void wysz_dat(void) { char pocz[9]; char kon[9]; int tab[20]; for (int j=0;j<20;j++) tab[j]=-1; clrscr(); printf("\nPodaj przedziaˆ czasowy."); printf("\n\nOd (rrrrmmdd): "); textbackground(3); textcolor(0); cprintf(" "); gotoxy(wherex()-8,wherey()); scanf("%8s",pocz); printf("\nDo (rrrrmmdd): "); cprintf(" "); gotoxy(wherex()-8,wherey()); scanf("%8s",kon); int l=0; for (int h=0;hnast) fwrite(p,(unsigned)sizeof(struct pozycja),1,plik); } //koniec for fclose(plik); } //koniec zapis void odczyt(void) { char nazwa[50]; char c; clrscr(); printf("\nODCZYT DOKUMENTOW DO PLIKU"); printf("\n\n1. Odczyt z pliku domyslnego ('dane.dat')."); printf("\n2. Odczyt z pliku o podanej nazwie i sciezce dostepu."); printf("\n\nWybierz opcje: "); c=getch(); if (c=='1') { if ((plik=fopen("dane.dat","rb"))==NULL) {printf("\nBlad podczas odczytu pliku!\n\nWcisnij dowolny klawisz...");getch();} else ;;} else if (c=='2') { printf("\n\nSciezka: "); scanf("%s",nazwa); if ((plik=fopen(nazwa,"rb"))==NULL) {printf("\nBlad podczas odczytu pliku!\n\nWcisnij dowolny klawisz...");getch();} else ;; } struct pozycja *p, *wskp, *firstp=NULL; fread(&i,(unsigned)sizeof(i),1,plik); for (int l=0;lnast; tablica[l].p_poz=wskp; wskp->nast=firstp; firstp=wskp; } while (p!=NULL); } else ;; } //koniec for fclose(plik); } //koniec odczyt void sortuj_tab(int j) { struct naglowek pom; do { j--; for (int i=0;itablica[i+1].nr_dok) { pom=tablica[i]; tablica[i]=tablica[i+1]; tablica[i+1]=pom; } //koniec if } //koniec for } while (j>0); } //koniec sortuj_tab void main(void) { for (int e=0;e<20;e++) tablica[e].p_poz=NULL; textcolor(WHITE); textbackground(BLACK); do { textcolor(WHITE); textbackground(BLACK); clrscr(); printf(" PROGRAM DO REJESTRACJI NAGLOWKOW W SYSTEMIE FINANSOWO-KSIEGOWYM"); printf("\n\nOpcje programu:"); printf("\n\nF1 - Wprowadzanie dokumentu."); printf("\nF2 - Wyswietlanie wszystkich dokumentow."); printf("\nF3 - Wyszukiwanie dokumentu o zadanym numerze."); printf("\nF4 - Stornowanie dokumentu o zadanym numerze."); printf("\nF5 - Wyszukiwanie dokumentu zaksiegowanego w podanym przedziale czasu."); printf("\nF6 - Wyswietlenie pozycji dokumentu o zadanym numerze."); printf("\nF7 - Zapis dokumentow do pliku."); printf("\nF8 - Odczyt dokumentow z pliku."); printf("\nEsc - Zakonczenie programu."); printf("\n\nWybierz opcje: "); c=getch(); if (c==0) { c=getch(); switch(c) { case 59: wpr_dok();break; case 60: wysw_wsz();break; case 61: wysz_dok();break; case 62: storn();break; case 63: wysz_dat();break; case 64: wysw_poz();break; case 65: zapis();break; case 66: odczyt();break; default: break; } //koniec switch } else ; } while (c!=27); textcolor(WHITE); textbackground(BLACK); }// KONIEC main