Generowanie hasła PHP
<?php
function generujHaslo() {
$dlugosc = 8;
$znaki = "abcdefghijklmnopqrstuwxyz0123456789";
$zakres = strlen($znaki);
$haslo = "";
for ($a=0;$a<$dlugosc;$a++) {
--$zakres;
$haslo .= $znaki[$wylosowano=(rand(0,$zakres))];
$tmp = $znaki[$wylosowano];
@$znaki[$wylosowano] = $znaki[$zakres];
@$znaki[$zakres] = $tmp;
}
echo $haslo;
}
Programowanie, kody źródłowe, c++, pascal, borland C++ builder, visual studio 2008 2010 2012
piątek, 31 maja 2013
Wysyłanie TCP
Wysyłanie TCP
if (nw.CanRead)
{
byte[] bMessageLength = new byte[4];
nw.Read(bMessageLength, 0, bMessageLength.Length);
int msgLength = BitConverter.ToInt32(bMessageLength, 0);
while (msgLength>0)
{
DataReceive = nw.Read(data, 0, data.Length);
ms.Write(data, 0, DataReceive);
msgLength -= DataReceive;
}
}
God Mode w Windows 7
God Mode w Windows 7 / Vista
Należy utworzyć folder i jako nazwę ustawiamy poniższy ciąg znaków.
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}.
Należy utworzyć folder i jako nazwę ustawiamy poniższy ciąg znaków.
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}.
Sklejanie plików VCL, Borland C++ Builder
Sklejanie plików VCL, Borland C++ Builder
Program napisany w środowisku Borland C++ Builder, mający za zadanie skleić ze sobą pliki wskazane przez użytkownika. Uproszczony interfejs pozwala na łatwiejsze dodawanie/usuwanie plików które mają zostać ze sobą połączone.
Poniżej przykładowe screeny podczas działania programu.
Do pobrania wszystkie pliki projektu, kody źródłowe
Program napisany w środowisku Borland C++ Builder, mający za zadanie skleić ze sobą pliki wskazane przez użytkownika. Uproszczony interfejs pozwala na łatwiejsze dodawanie/usuwanie plików które mają zostać ze sobą połączone.
Poniżej przykładowe screeny podczas działania programu.
Do pobrania wszystkie pliki projektu, kody źródłowe
Histogram znaków, konsola, C++
Program napisany w środowisku Borland C++ Builder, mający za
zadanie wyświetlić histogram znaków ASCII we wskazanym przez parametr pliku.
Program uruchamiany z parametrami
Poniżej przykładowe screeny podczas działania programu.
Program należy uruchomić z parametrami - podając jako parametr ścieżkę do pliku.
Biblioteka VCL, C++ Builder projekt
Biblioteka VCL, C++ Builder projekt
Rozszerzona wersja programu konsolowego który napisałem wcześniej, wykorzystałem klasę z poprzedniej wersji programu. Aplikacja wzbogacona o przyjazny interfejs użytkownika i w dodatkowe funkcje.
Do pobrania kody źródłowe - dysk google.
Rozszerzona wersja programu konsolowego który napisałem wcześniej, wykorzystałem klasę z poprzedniej wersji programu. Aplikacja wzbogacona o przyjazny interfejs użytkownika i w dodatkowe funkcje.
Do pobrania kody źródłowe - dysk google.
Baza dłużników, konsola, język programowania C
Baza dłużników w C
Kompilator: Dev C++/C
Środowisko C++/C
Program obsługujący bazę
danych zawierających dane adresowe, kontaktowe jak i
informacje o długach. Był to program zlecony jako jeden z
projektów laboratorium programowania
komputerów. Wymagane było napisanie go w języku C.
Poniżej przykładowe
screeny podczas działania programu. W załączniku również
specyfikacja programu z dokładnym opisem każdej funkcji,
oraz dodatkowo przykładowe dane. (wykorzystane zostały fikcyjne dane,
możliwa jest zbieżność z faktycznie istniejącymi)
Szerszy opis programu - z dokładną specyfikacją
1.Temat
„Baza
danych przechowująca listę dłużników”
2.Analiza,
projektowanie
Baza
danych powinna przechowywać dane różnego typu zdefiniowane na
strukturze. Każdy rekord w bazie danych powinien przechowywać
własne specyficzne dane. Całość powinna być zapisywana na liście
i do pliku, najlepiej do jednego. Przy każdym uruchomieniu aplikacji
– jeśli istnieje zdefiniowany plik o podanej nazwie w kodzie, to
są z niego czytane dane. Jeżeli plik nie istnieje – a podczas
działania programu dodaliśmy jakieś rekordy do bazy danych – to
tworzony jest nowy plik i dane są do niego zapisywane. Jeżeli
usuniemy wszystkie elementy z listy, to plik z którego wcześniej
były wczytywane dane, zostanie usunięty. Pod koniec działania
programu powinna być zwalniana przydzielona pamięć. Program
powinien być prosty w obsłudze i czytelny, powinien pokazywać
dostępne opcje, jakie użytkownik może wybrać. Dobrym rozwiązaniem
jest wprowadzanie menu, w którym użytkownik będzie się poruszał
za pomocą klawiszy 1 – 7. Po wybraniu odpowiedniej opcji –
pokazuje się podmenu lub wykonywana jest żądana funkcja. Takie
rozwiązanie ma w niektórych przypadkach wadę a w innych zaletę-
otóż gdy zamiast jednego znaku wprowadzimy kilka – wszystkie
polecenia dostępne przez te znaki będą się wykonywały. W
przypadku przeglądania długiej listy danych wpis po wpisie –
wystarczy wpisać ciąg samych „2” aby np. dostać się na koniec
listy, co jest bardzo fajnym rozwiązaniem. Aby uniknąć
wielokrotnego i może irytującego przepisywania dostępnych opcji w
menu – przy każdej modyfikacji lub rozbudowie programu – można
użyć funkcji która służyłaby do wyświetlania możliwych opcji
menu z dostępnych danych. Zwiększyłoby to czytelność programu,
jak i również program byłby bardziej podatny na modyfikacje. W
programie powinno być możliwe dodawanie rekordów do bazy danych,
jak i edycja i usuwanie wpisów. Program powinien też posiadać
kilka funkcji wyświetlających dane.
3.Specyfikacja
zewnętrzna
3.1
Obsługa programu i format danych wejściowych:
Użytkownik
przy dodawaniu nowego wpisu do bazy danych wpisuje ciąg znaków
Przy
wpisywaniu długu – użytkownik podaje również ciąg znaków –
nawet jeśli popełni błąd podczas wpisywania kwoty – obsługa
wyjątku została przewidziana.
Przy
poruszaniu się po menu użytkownik wprowadza dane typu znakowego.
Zwykle
są to:
1-wywołaj
akcje 1,
2-wywołaj
akcje 2,
...
6-wywołaj
akcje 6,
itd.
Przy
dodawaniu danych do bazy użytkownik wypełnia dane ciągiem znaków.
Znaki/ciągi znaków po spacji będą traktowane jako kolejna dana w
strukturze.
Dodatkowo
przy dodawaniu danych do bazy użytkownik może zostać poproszony o
wybranie jakiejś opcji, wtedy warto pamiętać, że wybranie innego
znaku niż opisany w komunikacie powoduje powtórzenie się pytania
o tą opcję.
3.2
Komunikaty
Struktura
menu:
+"Pokaz
wpisy";
-"Pokaz
kontakty";
-"Pokaz
dluznikow";
-"Cofnij";
+"Przegladaj
wpisy";
-"Poprzedni";
-"Nastepny";
+"Edytuj";
-"Imie";
-"Nazwisko";
-"Kontakt";
-"Miasto";
-”Dlug”;
-”Cofnij”;
-"Dodaj
dlug";
-"Anuluj
dlug";
-"Usun
kontakt";
-"Cofnij";
-"Dodaj
wpis";
-"Szukaj";
-"Imie";
-"Nazwisko";
-"Kontakt";
-"Miasto";
-"Cofnij";
-"Pomoc";
-"Wyjscie";
Dodawanie
danych:
"Imie:
";
"Nazwisko:
";
"Kontakt:
";
"Miasto:
";
"Dlug:
";
Dodatkowe
komunikaty:
"ERROR
0: Lista jest pusta"; -pokazuje ten komunikat jeśli nie ma w
pamięci żadnych danych
"Aby
zobaczyc wiecej nacisnij [ENTER]\n";
"Nic
nie znaleziono\n"; -pokazuje ten komunikat jeśli nie znaleziono
szukanego wpisu w bazie
"Zakonczono
wyszukiwanie\n"; -pojawia się pod koniec wyszukiwania jeśli
zostaną już wyświetlone wszystkie szukane wpisy.
„Obecny
dlug wynosi: %.2f "; -pojawia się przy edycji długu.
"Zakonczono
wyswietlanie"; -pojawia się pod koniec wyświetlania danych.
"Baza
dluznikow\nWersja 1-0\n"; -pojawia się w pomocy i pod koniec
działania programu
"\nAutor:
Michal Prokopiuk\n";-pojawia się w pomocy i pod koniec
działania programu
"Kontakt:
Prokopiuk.M@gmail.com\n";-pojawia się w pomocy i pod koniec
działania programu
"\nAby
zakonczyc dzialanie programu nacisnij [ENTER]";
"tekst
pomocy"; -tekst pomocy
"Obecne
dane: \n"; - wyświetla obecne dane wpisu przy edycji.
"Czy
dodac dlug? [t/n]\n"; -komunikat się pojawia gdy chcemy dodać
lub edytować dług
"\nBrak
dlugow"; -pojawia się gdy w bazie nie będzie żadnych
dłużników
"Dlugi:
%.2f"; -pokazuje informacje o łącznej sumie długów
"\nIlosc
dlugow: %i"; -pokazuje informacje o ilości długów w danych
"\nSrednia
: %.2f\n"; -informuje o średniej z wypisanych długów
4.Specyfikacja
wewnętrzna
4.1
Typy zdefiniowane
- NazwaZmienneKontaktychar imie[18];char nazwisko[18];char komunikator[18];char adres[18];char czy_dlug;float kasa;Kontakty *nast, *poprz;Kontakty*poczatek_listykoniec_listy
4.2
Zmienne i stałe
Stałe:
- NazwaTypDaneIMIEconst char*"Imie: "NAZWISKOconst char*"Nazwisko: "KOMUNIKATORconst char*"Kontakt: "ADRESconst char*"Miasto: "DLUGconst char*"Dlug: "NIEconst char'n'TAKconst char't'SEPARATORconst char*"\n--------------------------------------------------------------------------------"MAX_WYSWIETLANEint3NAZWA_PLIKUconst char*"dane.database"CLSconst char*"cls"PAUSEconst char*"PAUSE"NOWA_LINIAconst char*"\n"
Zmienne
globalne:
- ZmiennaTypOpispoczatek_listyKontakty*Zmienna wskazująca początek listykoniec_listyKontakty*Zmienna wskazująca koniec listy
4.3
Funkcje
- int main(void)Na początku jest wywoływana funkcja wczytania danych z pliku, następnie funkcja menu(); Po zakończeniu działania funkcji sprawdzana jest zmienna poczatek_listy i w zależności od wyniku przeprowadzane są odpowiednie czynności. Jeżeli lista istnieje to dane są zapisywane do pliku – a pamięć jest zwalniana. W przeciwnym wypadku usuwany jest plik – o nazwie określonej przez stałą NAZWA_PLIKU. Następnie pokazywane są informacje i program jest zakańczany.
- void menu(void);Funkcja włączająca menu główne, trwa dopóki użytkownik nie wybierze opcji „Wyjście”. Za pomocą odpowiednich przełączników aktywuje żądane przez użytkownika funkcje.
- void kreator_podmenu(int,int,int);Funkcja wyświetlająca dostępne opcje w menu. Funkcja odwołuje się do zdefiniowanej wewnątrz tablicy. W funkcji zdefiniowane są odpowiednie dane zapisane w tablicy które służą do generowania menu. Pierwsze dwa argumenty służą do pobrania zakresu z którego będą wyświetlane opcje, a ostania zmienna – odpowiada za dodatkową opcję. Wyświetlane są napisy, przed każdy napis – zgodnie z kolejnością dodawana jest cyfra – która informuje użytkownika jaką opcje może wybrać – gdy widzi takie wygenerowane menu. Jeżeli chcemy wyświetlić tylko jedną opcję, należy podać jako dwa pierwsze argumenty tą samą liczbę, a gdy nie chcemy dodatkowej opcji to wpisujemy jako trzeci argument 0.
- char* pokaz_error(int);Jest to funkcja odpowiadająca za przekazanie żądanego przez nas komunikatu, zwraca napis z tablicy, którego indeks jest określony przez argument funkcji.
- float sprawdz_liczby(char*);Funkcja pobiera jako argument ciąg znaków, następnie sprawdza które z tych znaków są cyframi. Tworzy ciąg cyfr, następnie przypisuje zmiennej float liczba = konwertuj(ciag2) i zwraca przekonwertowany przez funkcję konwertuj ciąg znaków jako liczbę.
- float konwertuj(const string&);Konwertuje ciąg na liczbę, zwraca liczbę.
- void rysuj_tabelke(char*);Rysuje górną część tabelki, jako argument pobierany jest znak który będzie separatorem pomiędzy napisami. Na dole i u góry wstawia jeszcze ciągi znaków dla estetycznego wyglądu.
- Kontakty* dodaj_kontakt(void);Tworzy nowy wpis do bazy danych, alokuje miejsce w pamięci, pobiera odpowiednie dane i dodaje całą strukturę do listy dwukierunkowej. Zwraca wskaźnik na nowo dodany element do listy.
- Kontakty* usun_kontakt(Kontakty*);Usuwa wpis z bazy danych, usuwa go również z listy dwukierunkowej, zwalnia przydzieloną pamięc. Zwraca wskaźnik na poprzedni element co jest wykorzystywane w funkcji przegladaj_kolejno.
- void wyswietl_kontakt(Kontakty*);Wyświetla kontakt o podanym adresie jako argument. Wewnątrz wywoływana jest funkcja dlug.
- void wyswietl_tabelke(Kontakty*);Funkcja wyświetlająca wszystkie elementy listy za pomocą tabelki. W tabelce są wyświetlane wszystkie dane wpisu w bazie za wyjątkiem długu. Funkcja na początku wywołuje funkcję rysowania tabelki, następnie w każdej nowej linii wyświetla wpis z bazy danych. Każda komórka tabeli posiada po 18 znaków. Reszta znaków to zapełnienie. Najpierw wyświetlane są dane – a liczba znaków pozostałych – jest zapełniana „.”, liczbę pozostałych znaków do zapełnienia uzyskuje się poprzez 18-strlen(dane). W funkcji działa ograniczenie na ilość wyświetlonych wierszy – jeżeli liczba wierszy ==17 to program się zatrzymuje i wyświetlany jest odpowiedni komunikat. Po naciśnięciu ENTER wywoływana jest kolejna funkcja rysowania tabelki i wyświetlane są kolejne dane – jeśli istnieją, w przeciwnym wypadku działanie funkcji zostaje zakończone.
- void edytuj_kontakty(Kontakty*);Wyświetlane jest podmenu z dostępnymi opcjami do edycji oraz obecne dane edytowanego wpisu w bazie. Po wybraniu odpowiedniej opcji – edytujemy odpowiednie dane.
- void przegladaj_kolejno(Kontakty*);Wyświetlane jest podmenu z dostępnymi opcjami oraz wpis w liście którego wskaźnik został przekazany w argumencie. Użytkownik wywołuje odpowiednie funkcje, poprzez wybranie odpowiednich opcji.
- void zapisz_do_pliku(Kontakty*);Jeżeli lista nie jest pusta – dane są zapisywane do pliku którego nazwa jest zdefiniowana w stałej NAZWA_PLIKU
- void wczytaj_z_pliku(void);Jeżeli plik istnieje zostaną wczytane z niego odpowiednie dane i zostaną zaalokowane w pamięci, w liście dwukierunkowej.
- void dlug(Kontakty*,int)Funkcja mająca dwa działania które wybiera się poprzez drugi argument. Dla argumentu ==0 funkcja sprawdza czy w określonym przez pierwszy argument wpisie znajduje się dana kasa, poprzez porównanie danej czy_dlug. Dla argumentu ==1 funkcja odpowiada za dodanie długu do struktury danych określonej przez wskaźnik podany w pierwszym argumencie.
- void zwolnij_pamiec(Kontakty*);Funkcja zwalnia pamięć zarezerwowaną wcześniej dla elementów listy
- void szukaj(char*, int);Funkcja wyszukująca odpowiedni ciąg znaków wpisany przez użytkownika, wcześniej użytkownik określa jaki typ danych ma być przeszukiwany. Rozróżniane są duże znaki i małe. Za pomocą strncmp porównywane są odpowiednie dane. Następnie wyświetlane są wszystkie pasujące wpisy. Ograniczenie wpisów wyświetlonych na ekranie określone jest przez stałą MAX_WYSWIETLANE. Pod koniec wyświetlania pokazywany jest odpowiedni komunikat.
- void sortuj(Kontakty*);Sortuje wpisy w bazie danych.
Pliki do pobrania:
Kod źródłowy + Specyfikacja w doc
Cały projekt
Sorki za brak komentarzy w niektórych miejscach albo wszędzie ;)
Wstęp - o projektach i zawartości strony
Witam na moim blogu, postanowiłem się podzielić z Wami starymi projektami, które sobie leżą bezużytecznie na dysku.
Możecie je dowolnie wykorzystywać, większość programów powinna działać.
Swoją przygodę z programowaniem zacząłem jakoś pod koniec gimnazjum, zafascynowanie trwa dalej.
Opublikowane projekty były pisane w środowiskach, językach i technologiach:
-Visual Studio C++ 2008
-Visual Studio C++ 2010
-Visual Studio C# 2010
-Borland C++ Builder 6
-C++, C, C#, Assembler, PHP
Opublikowane tutaj projekty tworzone są w różnych językach i środowiskach.
Można też zauważyć ze nie wszystkie są idealnie i można było je napisać wydajniej - więc jeśli ktoś chce krytykować stary kod proszę bardzo - powiem szczerze że jak patrzę na to po latach - mając obecne doświadczenie - bym to napisał lepiej :)
W większości są to małe programiki bazodanowe albo proste programy na zaliczenia na studiach.
Liczę na to że komuś się to może przydać w zrozumieniu niektórych kwestii, lub pomoże to komuś w nauce programowania.
Możecie je dowolnie wykorzystywać, większość programów powinna działać.
Swoją przygodę z programowaniem zacząłem jakoś pod koniec gimnazjum, zafascynowanie trwa dalej.
Opublikowane projekty były pisane w środowiskach, językach i technologiach:
-Visual Studio C++ 2008
-Visual Studio C++ 2010
-Visual Studio C# 2010
-Borland C++ Builder 6
-C++, C, C#, Assembler, PHP
Opublikowane tutaj projekty tworzone są w różnych językach i środowiskach.
Można też zauważyć ze nie wszystkie są idealnie i można było je napisać wydajniej - więc jeśli ktoś chce krytykować stary kod proszę bardzo - powiem szczerze że jak patrzę na to po latach - mając obecne doświadczenie - bym to napisał lepiej :)
W większości są to małe programiki bazodanowe albo proste programy na zaliczenia na studiach.
Liczę na to że komuś się to może przydać w zrozumieniu niektórych kwestii, lub pomoże to komuś w nauce programowania.
środa, 1 maja 2013
Baza pająków, konsola, C++
Baza pająków, konsola C++
Zwykły program konsolowy z obsługą listy dwukierunkowej, baza danych przechowująca specyficzne dane tekstowe. Poniżej przykładowe screeny podczas działania programu.
Dane i pliki do pobrania w Google Drive
Zwykły program konsolowy z obsługą listy dwukierunkowej, baza danych przechowująca specyficzne dane tekstowe. Poniżej przykładowe screeny podczas działania programu.
Dane i pliki do pobrania w Google Drive
Subskrybuj:
Komentarze (Atom)