Creative Commons License Foxbond's Repo

//(c) 2016 Michał (Foxbond) Chraniuk
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

typedef struct elem {
	char nazwisko[30];
	char imie[20];
	char nrPJ[10];
	char nrRS[10];
	struct elem* next;
}elem;
elem* db = NULL;

void cls() {
	system("cls");
}

char l2u(char letter) {
	if (letter > 96 || letter < 123) {
		return (char)letter - 32;
	}
	return letter;
}

void addDriver(char* nazwisko, char* imie, char* nrPJ, char* nrRS) {
	elem* newDriver = (elem*)malloc(sizeof(elem));
	strcpy(newDriver->imie, imie);
	strcpy(newDriver->nazwisko, nazwisko);
	strcpy(newDriver->nrPJ, nrPJ);
	strcpy(newDriver->nrRS, nrRS);
	newDriver->next = NULL;
	if (db == NULL) {
		db = newDriver;
		return;
	}
	elem *p = db;
	for (;;) {
		if (p->next == NULL) {
			p->next = newDriver;
			break;
		}
		p = p->next;
	}
}

void delDriver(int id) {
	int i;
	if (db == NULL) {
		printf("Pusta lista!\n");
		getch();
		return;
	}

	if (id == 1) {
		if (db->next == NULL) {
			db = NULL;
		}
		else {
			db = db->next;
		}
		return;
	}

	elem *p = db->next;
	elem *prev = db;
	for (i = 2;i < id; i++) {
		prev = p;
		p = p->next;
	}

	prev->next = p->next;

}

void sortDrivers(char field, char method) {
	cls();
	printf("Funkcja sortowania wylaczona!");
	getch();
	return;
	/************************************/


	int i;

	if (db == NULL) {
		return;
	}

	if (db->next == NULL) {
		return;
	}
	
	/*
	elem *n = db;
	elem *t;

	delDriver(1);

	for (;;) {
		if (field == '1') {//imie
			if (method == 'a') {
				for (i = 0;i < 20;i++) {
					if (db->imie[i] < n->imie[i]) {
						t = db;
						delDriver(1);
						t->next = n;
						n = t;
						break;
					}
					else if ((db->imie[i] == '\0' || n->imie[i] == '\0') || (db->imie[i] < n->imie[i])) {

						break;
					}
					//else if (db->imie[i] == n->imie[i]) {
					//	continue;
					//}
				}
			}
			else {

			}
		}
		else {

		}
	}


	/*
	elem *n = NULL;
	memcpy(&n, &db, sizeof(elem));
	n->next = NULL;

	elem *p = db->next;

	for (;;) {
		if (p->imie[0] < n->imie[0]) {
			p->next = n;
			n = p;
		}
	}

	/*
	elem *p = db;
	
	for (;;) {
		elem *p2 = p->next;
		for (;;) {
			if (method == 'a') {
				if (field == '1') {//imie
					for (i = 0;i < 20;i++) {
						if (p->imie[i] == p2->imie[i]) {
							continue;
						}

						if (p->imie[i] > p2->imie[i]) {

							break;
						}
					}
				}
				else if (field == '2') {//nazwisko

				}
			}
			else {//desc

			}

			if ()
		}

		

	}*/

}

void displayDrivers() {
	if (db == NULL) {
		printf("Pusta lista!\n");
	}
	else {
		elem* p = db;
		int i = 1;
		printf("ID\tImie\tNazwisko\tNr PJ\tNr RS\n");
		for (;;) {
			printf("%2d\t%s\t%s\t\t%s\t%s\n", i++, p->imie, p->nazwisko, p->nrPJ, p->nrRS);
			if (p->next == NULL) {
				break;
			}
			p = p->next;
		}
	}

	
	printf("--------------------------------------------\n");
}

void optAdd() {
	char nazwisko[30];
	char imie[20];
	char nrPJ[10];
	char nrRS[10];
	cls();
	printf("Dodaj nowego kierowce: \nImie: ");
	fflush(stdin);
	scanf("%s", &imie);
	printf("Nazwisko: ");
	scanf("%s", &nazwisko);
	printf("Nr prawa jazdy: ");
	scanf("%s", &nrPJ);
	printf("Nr rejestracyjny pojazdu: ");
	scanf("%s", &nrRS);
	addDriver(nazwisko, imie, nrPJ, nrRS);
	printf("Dodano kierowce %s %s\n", imie, nazwisko);
	getch();
}

void optDelete() {
	int id;

	if (db == NULL) {
		printf("\nLista kierowcow jest pusta!\n");
		getch();
		return;
	}

	printf("\nPodaj nr kierowcy: ");
	fflush(stdin);
	scanf(" %d", &id);

	int c = 1;
	elem *p = db;
	for (;;) {
		if (p->next == NULL) {
			break;
		}
		p = p->next;
		++c;
	}

	if (id > c || id<1) {
		printf("\nPodaj poprawne id kierowcy!\n");
		getch();
		return;
	}

	delDriver(id);
}

void optSort() {
	char f,m;
	cls();
	displayDrivers();
	printf("Wybierz pole:\n1. Imie\n2. Nazwisko\n3. Nr PJ\n4. Nr RS\n0. Anuluj\n");
	do {
		f = getch();
	} while (f<48 || f>52);
	if (f == '0') {
		return;
	}
	cls();
	displayDrivers();
	printf("Kierunek sortowania (A)SC/(D)ESC: ");
	do {
		m = getch();
		if (m == 65 || m == 68) {
			m += 32;
		}
	} while (m != 97 && m != 100);
	
	sortDrivers(f, m);
}


int main() {
	char opt;


	do {
		cls();
		displayDrivers();
		printf("1. Dodaj | 2. Usun | 3. Sortuj | 0. Wyjscie\n");
		opt = getch();

		if (opt == '1') {
			optAdd();
		}
		else if (opt == '2') {
			optDelete();
		}
		else if (opt == '3') {
			optSort();
		}
	} while (opt != '0');

	//getch();
	return 0;
}

> Back