C Helpdesk
Niestety baza działa prawidłowo tylko pod linuxem...Wykorzystuje w niej opcje dostępne tylko pod linuxem...
#include <stdio.h> #include <string.h> #define WYSWIETL 1 #define DODAJ 2 #define EDYTUJ 3 #define USUN 4 #define ZAKONCZ 5 #define X0Y0 printf("\033[0;0f"); #define DOMYSLNY "Wybierz Opcję w Menu" #define czerwony printf("\033[31;48m"); #define czarny printf("\033[30;48m"); #define gotoedycja {\ YX(9,0); \ Rysuj(2,4,8,"Podaj wartość? ___________________",52,0,0); \ YX(9,29);\ } #define pokaz {\ Rysuj(2,8,11,"Imię : _______________",61,0,0);\ Rysuj(2,8,7,"Nazwisko : ____________________",60,0,0);\ Rysuj(2,8,1,"Ulica, nr domu : ______________________________",60,0,0);\ Rysuj(2,8,3,"Kod Pocztowy : _____",60,0,0);\ Rysuj(2,8,9,"Miasto : ____________________",60,0,0);\ Rysuj(2,8,8,"Telefon : ______________",60,0,0);\ Rysuj(2,8,11,"Płeć : _ (k-Kobieta, m-mężczyzna)",64,0,0);\ Rysuj(4,8,0,"",60,0,0);\ } /* Prototypy funkcji */ void Cls(void); void Rysuj (int,int,int,char*,int,int,int); void Ramka (char*,char*,int); void YX (int,int); void wyswietl (int); int dodaj (int); void edytuj (int); int usun (int); /* Koniec prototypów funkcji */ struct dane { char imie[15]; char nazwisko[20]; char ulica[20]; char kod[6]; char miasto[20]; char tel[9]; char plec; }id[100]; int ilosc = -1; char *komunikat = DOMYSLNY; /* Główny kod programu */ main(void) { int wybor; do { printf("\033[34;48m"); Cls(); printf("\n\n"); printf("\t╔══════════════════════════════════════════╗\t╔════════════╗\n"); printf("\t║ KSIĄŻKA ADRESOWA ║\t║ Aktualnych ║\n"); printf("\t╠══════════════════════════════════════════╣\t║ Wpisów: %2d ║\n",ilosc+1); printf("\t║ Wyświetl Wpisy .................. 1 ║\t╚════════════╝\n"); printf("\t║ Dodaj Nowy Wpis ................. 2 ║\n"); printf("\t║ Edytuj Wpis ..................... 3 ║\n"); printf("\t║ Usuń Wpis ....................... 4 ║\n"); printf("\t║ Zakończ Działanie Programu ...... 5 ║\n"); printf("\t╚══════════════════════════════════════════╝\n"); printf("\n\n\n"); printf(" ╔════════ KOMUNIKATY ═════════════════════════════════╦════════╦═╗\n"); printf(" ║\t %35s\t ║ Wybór: ║ ║\n",komunikat); printf(" ╚═════════════════════════════════════════════════════╩════════╩═╝\n"); YX(16,69); wybor = getchar()-48; switch(wybor) { case WYSWIETL : wyswietl(ilosc);break; case DODAJ : ilosc = dodaj(ilosc); break; case EDYTUJ : edytuj(ilosc); break; case USUN : ilosc = usun(ilosc); break; case ZAKONCZ : ; default : { komunikat="Błędny wybór, spróbuj ponownie"; } } }while(wybor != ZAKONCZ); return (0); } // Koniec MAIN /* Funkcje */ void wyswietl (int ilosc) { int i; komunikat = DOMYSLNY; X0Y0; printf("\n\n"); Rysuj(1,5,0,"",70,0,0); Rysuj(2,5,24,"AKTUALNE WPISY W BAZIE:",70,0,0); Rysuj(3,5,0,"",70,0,0); Rysuj(2,5,0," Imię Nazwisko Miasto Płeć",73,0,0); for (i=0 ; i <=ilosc; i++) { printf(" ║%15s %20s %20s %c ║\n",id[i].imie,id[i].nazwisko, id[i].miasto,id[i].plec); } Rysuj(4,5,0,"",70,0,0); getchar(); getchar(); } int dodaj(int ilosc) { ilosc++; komunikat = DOMYSLNY; YX(4,0); Rysuj(6,6,8," DODAWANIE WPISU ",60,0,0); Rysuj(2,6,11,"Imię : _______________",61,0,0); Rysuj(2,6,7,"Nazwisko : ____________________",60,0,0); Rysuj(2,6,1,"Ulica, nr domu : ______________________________",60,0,0); Rysuj(2,6,3,"Kod Pocztowy : _____",60,0,0); Rysuj(2,6,9,"Miasto : ____________________",60,0,0); Rysuj(2,6,8,"Telefon : ______________",60,0,0); Rysuj(2,6,11,"Płeć : _ (k-Kobieta, m-Mężczyzna)",64,0,0); Rysuj(4,6,0,"",60,0,0); do{ YX(5,0); Rysuj(2,6,11,"Imię : _______________",61,0,0); YX(5,26); gets(id[ilosc].imie); }while(((id[ilosc].imie[0] < 'A') || (id[ilosc].imie[0] > 'Z')) && ((id[ilosc].imie[0] < 'a') || (id[ilosc].imie[0] > 'z'))); do{ YX(6,0); Rysuj(2,6,7,"Nazwisko : ____________________",60,0,0); YX(6,26); gets(id[ilosc].nazwisko); }while(((id[ilosc].nazwisko[0] < 'A') || (id[ilosc].nazwisko[0] > 'Z')) && ((id[ilosc].nazwisko[0] < 'a') || (id[ilosc].nazwisko[0] > 'z'))); do{ YX(7,0); Rysuj(2,6,1,"Ulica, nr domu : ______________________________",60,0,0); YX(7,26); gets(id[ilosc].ulica); }while(((id[ilosc].ulica[0] < 'A') || (id[ilosc].ulica[0] > 'Z')) && ((id[ilosc].ulica[0] < 'a') || (id[ilosc].ulica[0] > 'z'))); do{ YX(8,0); Rysuj(2,6,3,"Kod Pocztowy : _____",60,0,0); YX(8,26); gets(id[ilosc].kod); }while((id[ilosc].kod[0] < '0') || (id[ilosc].kod[0] > '9')); do{ YX(9,0); Rysuj(2,6,9,"Miasto : ____________________",60,0,0); YX(9,26); gets(id[ilosc].miasto); }while(((id[ilosc].miasto[0] < 'A') || (id[ilosc].miasto[0] > 'Z')) && ((id[ilosc].miasto[0] < 'a') || (id[ilosc].miasto[0] > 'z'))); do{ YX(10,0); Rysuj(2,6,8,"Telefon : ______________",60,0,0); YX(10,26); gets(id[ilosc].tel); }while((id[ilosc].tel[0] < '0') || (id[ilosc].tel[0] > '9')); do{ YX(11,0); Rysuj(2,6,11,"Płeć : _ (k-Kobieta, m-mężczyzna)",64,0,0); YX(11,26); id[ilosc].plec=getchar(); }while((id[ilosc].plec!= 'k') && (id[ilosc].plec != 'm')); return (ilosc); } void edytuj(int ilosc) { int i,edycja; komunikat = DOMYSLNY; X0Y0; printf("\n\n\n"); Rysuj(6,8,12,"EDYTOWANIE WPISU",60,0,0); Rysuj(2,8,10,"Który wpis edytować?: __",62,0,0); pokaz; getchar(); do { YX(5,0); Rysuj(2,8,10,"Który wpis edytować?: __",62,0,0); YX(5,42); i=getchar()-48; }while(((i<0) || (i>ilosc)) && (i==ilosc)); i--; YX(6,28); printf("%s",id[i].imie); YX(7,28); printf("%s",id[i].nazwisko); YX(8,28); printf("%s",id[i].ulica); YX(9,28); printf("%s",id[i].kod); YX(10,28); printf("%s",id[i].miasto); YX(11,28); printf("%s",id[i].tel); YX(12,28); printf("%c",id[i].plec); getchar();getchar(); YX(6,0); Rysuj(1,4,8,"",50,0,0); Rysuj(2,4,2," 1) Imię 2) Nazwisko 3) Ulica 4) Kod",51,0,0); Rysuj(2,4,2," 5) Miasto 6) Telefon 7)Płeć",52,0,0); Rysuj(2,4,8," Co mam edytować? _",51,0,0); Rysuj(4,4,0,"",50,0,0); do{ YX(9,0); Rysuj(2,4,8," Co mam edytować? _",51,0,0); YX(9,35); edycja=getchar()-48; }while(edycja<1 || edycja>7); switch(edycja) { case 1: { gotoedycja; scanf("%s",id[i].imie); }break; case 2: { gotoedycja; scanf("%s",id[i].nazwisko); }break; case 3: { gotoedycja; scanf("%s",id[i].ulica); }break; case 4: { gotoedycja; scanf("%s",id[i].kod); }break; case 5: { gotoedycja; scanf("%s",id[i].miasto); }break; case 6: { gotoedycja; scanf("%s",id[i].tel); }break; case 7: { gotoedycja; scanf("%c",id[i].plec); }break; } getchar(); } int usun(int ilosc) { int i,del; komunikat = DOMYSLNY; X0Y0; printf("\n\n\n"); Rysuj(6,8,12," USUWANIE WPISU ",60,0,0); Rysuj(2,8,10,"Który wpis usunąć?: __",63,0,0); pokaz; getchar(); do { YX(5,0); Rysuj(2,8,10,"Który wpis usunąć?: __",63,0,0); YX(5,40); i=getchar()-48; }while(((i<0) || (i>ilosc)) && (i==ilosc)); i--; YX(6,28); printf("%s",id[i].imie); YX(7,28); printf("%s",id[i].nazwisko); YX(8,28); printf("%s",id[i].ulica); YX(9,28); printf("%s",id[i].kod); YX(10,28); printf("%s",id[i].miasto); YX(11,28); printf("%s",id[i].tel); YX(12,28); printf("%c",id[i].plec); getchar();getchar(); YX(6,0); Rysuj(1,4,8,"",50,0,0); Rysuj(2,4,8," Usunąć wpis (t/n)? _",52,0,0); Rysuj(4,4,0,"",50,0,0); do { YX(7,37); del=getchar(); }while((del!= 't') && (del != 'n')); if(del=='t') { YX(7,0); Rysuj(2,4,8," Wpis usunieto !",52,0,0); strcpy(id[i].imie, id[ilosc].imie); strcpy(id[i].nazwisko, id[ilosc].nazwisko); strcpy(id[i].ulica, id[ilosc].ulica); strcpy(id[i].kod, id[ilosc].kod); strcpy(id[i].miasto, id[ilosc].miasto); strcpy(id[i].tel, id[ilosc].tel); id[i].plec=id[ilosc].plec; ilosc--; } return (ilosc); } void Rysuj (int kod,int tab,int odstep, char *tekst,int szerokosc,int z1,int z2) { int i,dlugosc; dlugosc = strlen (tekst); for(i=0 ; i < tab ; i++) printf(" "); switch(kod) { case 1: {Ramka ("╔","╗",szerokosc);} break; case 2: {printf("║"); for (i=0 ; i <odstep ; i++) printf(" "); printf("%s",tekst); for (i=0 ; i < szerokosc-dlugosc-odstep-2; i++) printf(" "); printf("║\n"); }break; case 3: {Ramka ("╠","╣",szerokosc);} break; case 4: {Ramka ("╚","╝",szerokosc);} break; case 6: {printf("╔"); for (i=0 ; i <odstep ; i++) printf("═"); printf("%s",tekst); if (z1==0) z1=szerokosc; for (i=0 ; i < z1-(odstep+dlugosc+2); i++) printf("═"); if (z1!=szerokosc) printf("╦"); //printf("╦"); if (z2==0) z2=szerokosc; for (i=0 ; i < z2-1-z1; i++) printf("═"); if (z2!=szerokosc) printf("╦"); for (i=0 ; i < szerokosc-z2-1; i++) printf("═"); printf("╗\n"); }break; } } void Ramka (char *a,char *b,int szerokosc) { int i; printf("%s",a); for (i=2 ; i < szerokosc ; i++) printf("═"); printf("%s\n",b); return; } void Cls(void) { printf("\033[2J"); // Czyci ekran printf("\033[0;0f"); // Ustawia kursor w lewym, górnym rogu }// Koniec Cls void YX (int y,int x) { printf("\033[%d;%df",y,x); }
Offline