wyszukiwanie osób - C

TereFere
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 30 kwie 2009, o 11:42
Płeć: Kobieta

wyszukiwanie osób - C

Post autor: TereFere »

Proszę o pomoc chce napisać część projektu w którym będzie w wyszukiwanie dane osoby na podstawie podanego imienia, nazwiska, tel domowego i komórkowego. Poniżej podałam część projektu który ma wyszukiwać daną osobę jeżeli użytkownik nie zna nazwiska szukanej osoby.

Kod: Zaznacz cały

void wysz(void)
{	int ilosob, j, tym, p;
	char tymnazwisko[30], tymimie1[30], tymnrTD[30], tymnrTK[30];
	FILE*f;
	struct osoba*td;

	f = fopen("ilosob.txt", "rt");//otwarcie do odcyzt(musi istniec plik)
	fscanf( f, "%d" , &ilosob);
	fclose( f );
	if (ilosob==0) 
	{
		printf("
 Baza danych jest pusta 
 ");
		getch();
	}
	else 
	{
		f = fopen("baza.txt", "rt");//otwarcie do odcyzt(musi istniec plik)
		td=(struct osoba*)malloc(ilosob*sizeof(struct osoba));
		for (j=0; j<ilosob; j++)
		{
			fscanf(f, "%s" , td[j].imie1);
			fscanf(f, "%s" , td[j].imie2);
			fscanf(f, "%s" , td[j].nazwisko);
			fscanf(f, "%s" , td[j].nazwiskoR);
			fscanf(f, "%s" , td[j].miejsM);
			fscanf(f, "%s" , td[j].ulica);
			fscanf(f, "%s" , td[j].nrD);
			fscanf(f, "%s" , td[j].nrM);
			fscanf(f, "%s" , td[j].nrTD);
			fscanf(f, "%s" , td[j].nrTK);
			fscanf(f, "%s" , td[j].miejsU);
			fscanf(f, "%s" , td[j].dataU);
		}
	}

	fclose( f );
	
	printf("Uzupelnij poniższe dane lub wpisz ich część, jesli nie znasz to wpisz znak "-" 
");

	printf("
podaj nazwisko: ");
	scanf("%s",tymnazwisko);

	printf("podaj imie: ");
	scanf("%s",tymimie1);

	printf("podaj nr telefonu domowego: ");
	scanf("%s",tymnrTD);

	printf("podaj nr telefonu komurkowego: ");
	scanf("%s",tymnrTK);

	if (tymnazwisko!= "-")
	{
		for (j=0; j<ilosob; j++)
		{
			if((strstr(td[j].nazwisko,tymnazwisko))!=NULL)
			{
				if(tymimie1!= "-")
				{
					if((strstr(td[j].imie1,tymimie1))!=NULL)
					{
						if(tymnrTD!= "-")
						{
							if((strstr(td[j].nrTD,tymnrTD))!=NULL)
							{
								if(tymnrTK!= "-")
								{
									if((strstr(td[j].nrTK,tymnrTK))!=NULL)
									{
										printf("Osoby spełniające powyższe kryteria to:");
										printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
										getch();
									
									}

									else 
									{
										printf("Brak osób w bazie spełniających powyższe kryrteria");
										getch();
										break;
									};
								
								}
								else 
								{
									printf("Osoby spełniające powyższe kryteria to:");
									printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
									getch();
									
								};
							}
							else
							{
								printf("Brak osób w bazie spełniających powyższe kryrteria");
								getch();
								break;							
							};
						}
						else
						{
							if(tymnrTK!= "-")
							{
								if((strstr(td[j].nrTK,tymnrTK))!=NULL)
								{
									printf("Osoby spełniające powyższe kryteria to:");
									printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
									getch();
									
								}
								else
								{
									printf("Brak osób w bazie spełniających powyższe kryrteria");
									getch();
									break;
								};
							}
							else
							{
								printf("Osoby spełniające powyższe kryteria to:");
								printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
								getch();
								
							};
						};
					}
					else
					{
						printf("Brak osób w bazie spełniających powyższe kryrteria");
						getch();
						break;
					};
				}
				else 
				{
					if(tymnrTD!= "-")
					{
						if((strstr(td[j].nrTD,tymnrTD))!=NULL)
						{
							if(tymnrTK!= "-")
							{
								if((strstr(td[j].nrTK,tymnrTK))!=NULL)
								{
									printf("Osoby spełniające powyższe kryteria to:");
									printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
									getch();
									break;
								}
								else
								{
									printf("Brak osób w bazie spełniających powyższe kryrteria");
									getch();
									break;
								};
							}
							else
							{
								printf("Osoby spełniające powyższe kryteria to:");
								printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
								getch();
								break;
							};
						}
						else
						{
							printf("Brak osób w bazie spełniających powyższe kryrteria");
							getch();
							break;
						};
					}
					else 
					{
						if(tymnrTK!= "-")
						{
							if((strstr(td[j].nrTK,tymnrTK))!=NULL)
							{
								printf("Osoby spełniające powyższe kryteria to:");
								printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
								getch();
							
							}
							else
							{
								printf("Brak osób w bazie spełniających powyższe kryrteria");
								getch();
								//break;
							};
						}
						else
						{
							printf("Osoby spełniające powyższe kryteria to:");
							printf("
 %s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 	%s 
 
" , td[j].imie1, td[j].nazwisko, td[j].imie2, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
							getch();
							
						};
					};

				};//brak 

				}
				else
				{
					printf("Brak osób w bazie spełniających powyższe kryrteria");
					getch();
					//break;
				};
			}
		};
	getch();
	}
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

wyszukiwanie osób - C

Post autor: kadiii »

Proponuję jakoś sensowniej rozplanować ten program szczególnie jeśli jest to projekt. Stwórz najlepiej funkcję compare(porównaj), która porównywałaby 2 obiekty(tu struktury) czy są równe - aby móc umożliwić nie wpisanie jakiegoś parametru przyjmij, że obiekty są równe jeśli mają równe wartości danych parametrów lub parametr zadany jest równy jakiemuś znakowi specjalnemu(jak u ciebie '-') lub NULL. Następnie stwórz funkcje find(szukaj), która za parametr pobierałaby strukturę osoba(poszukiwana osoba) oraz tablice struktur osób(nasza baza osób) i która wywoływałaby funkcję compare dla kolejnych osób w tablicy. Stwórz również funkcję wypisanie danych danej osoby. W takiej wersji program po pierwsze będzie czytelniejszy, po drugie będzie wykonywał w sposób naturalny rzeczywiste operacje. Tak jak jest teraz to jest zrobione na hura i wszystko w jednym - pełen mix. W programowaniu szczególnie strukturalnym chodzi o to żeby oddzielić elementy, które są rozłączne w rzeczywistości i połączyć te, które są związane zaleznosciami.
Tak więc powinieneś mieć deklarację struktury osoba( co pewnie już masz)

Kod: Zaznacz cały

struct osoba{ ...}
funkcje porównującą(zwraca 0 jak są różne 1 jak są równe)

Kod: Zaznacz cały

int compare(struct osoba x, struct osoba y)
funkcja wyszukująca(moze zwracać np. id znalezionej osoby)

Kod: Zaznacz cały

int find(struct osoba poszukiwana, struct osoba *BazaOsob)
funkcja wypisująca

Kod: Zaznacz cały

void show(int id, struct osoba *BazaOsob)
Myślę, że z wypełnieniem tych funkcji kodem nie będzie trudnością a porządny układ sprawi , że zupełnie proste będzie dodanie kolejnych funkcjonalności będzie proste i intuicyjne.
P.S Proponuję sprawdzić ortografię bo robić byki w projekcie to chyba trochę głupio.
ODPOWIEDZ