//(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