Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
krmaet
/
Lennubroneerimis_tarkvara
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
5df15104
authored
Apr 24, 2023
by
krmaet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update readdata.c, final
parent
d0154dd1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
114 additions
and
107 deletions
readdata.c
readdata.c
View file @
5df15104
...
...
@@ -9,51 +9,6 @@
#include "readdata.h"
#include "main.h"
int
CheckUser
(
MYSQL
*
con
,
char
*
username
,
char
*
password
)
{
char
query
[
512
];
int
position
;
sprintf
(
query
,
"SELECT password, position FROM profiles WHERE username = '%s';"
,
username
);
if
(
mysql_query
(
con
,
query
))
{
//päring serverile
printf
(
"Error getting data: %s
\n
"
,
mysql_error
(
con
));
exit
(
EXIT_FAILURE
);
}
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
mysql_num_fields
(
result
);
char
tempPassword
[
128
]
=
{
" "
};
char
tempPosition
[
128
]
=
{
" "
};
MYSQL_ROW
row
;
while
((
row
=
mysql_fetch_row
(
result
)))
{
strcpy
(
tempPassword
,
row
[
0
]);
strcpy
(
tempPosition
,
row
[
1
]);
}
position
=
atoi
(
tempPosition
);
if
(
!
strcmp
(
tempPassword
,
password
))
{
if
(
position
==
ADMIN
)
{
return
ADMIN
;
}
else
if
(
position
==
ASSISTANT
)
{
return
ASSISTANT
;
}
else
if
(
position
==
CLIENT
)
{
return
CLIENT
;
}
}
return
-
1
;
}
void
NewTicket
(
int
*
row
,
int
*
col
,
char
*
seat
,
int
flightID
,
MYSQL
*
con
,
int
count
)
{
srand
(
time
(
NULL
));
...
...
@@ -67,7 +22,7 @@ void NewTicket(int *row, int *col, char *seat, int flightID, MYSQL *con, int cou
WINDOW
*
ticket_win
;
ticket_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
ticket_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
wrefresh
(
ticket_win
);
int
flightId
=
flightID
;
...
...
@@ -75,48 +30,59 @@ void NewTicket(int *row, int *col, char *seat, int flightID, MYSQL *con, int cou
strcpy
(
data
[
count
].
seat
,
seat
);
echo
();
//Ask for document number
mvwprintw
(
ticket_win
,
1
,
1
,
"Enter Your document number:"
);
char
docNum
[
DOC_MAX
];
wscanw
(
ticket_win
,
"%s"
,
docNum
);
strcpy
(
data
[
count
].
documentNum
,
docNum
);
mvwprintw
(
ticket_win
,
3
,
1
,
"Enter first name:"
);
//lisada juurde et kui on tühik siis
char
fName
[
NAME_MAX
];
//muudetakse see alakriipsuks.
//Ask for first name
mvwprintw
(
ticket_win
,
3
,
1
,
"Enter first name:"
);
char
fName
[
NAME_MAX
];
wscanw
(
ticket_win
,
"%[^
\n
]%*c"
,
fName
);
//Reads until newline
strcpy
(
data
[
count
].
fName
,
fName
);
mvwprintw
(
ticket_win
,
5
,
1
,
"Enter last name:"
);
//sama kommentaar mis eelmisele
//Ask for last name
mvwprintw
(
ticket_win
,
5
,
1
,
"Enter last name:"
);
char
lName
[
NAME_MAX
];
wscanw
(
ticket_win
,
"%[^
\n
]%*c"
,
lName
);
//Reads until newline
strcpy
(
data
[
count
].
lName
,
lName
);
mvwprintw
(
ticket_win
,
7
,
1
,
"Enter date of birth (Format: 'DD.Month.Year'):"
);
//Ask for date of birth
mvwprintw
(
ticket_win
,
7
,
1
,
"Enter date of birth(DD.Month.Year):"
);
char
dateOB
[
DOB_MAX
];
wscanw
(
ticket_win
,
"%s"
,
dateOB
);
strcpy
(
data
[
count
].
dateOfBirth
,
dateOB
);
//Ask for email
mvwprintw
(
ticket_win
,
9
,
1
,
"Enter email:"
);
char
meil
[
STR_MAX
];
wscanw
(
ticket_win
,
"%s"
,
meil
);
strcpy
(
data
[
count
].
email
,
meil
);
//Ask for residency
mvwprintw
(
ticket_win
,
11
,
1
,
"Enter residency:"
);
char
residency
[
STR_MAX
];
wscanw
(
ticket_win
,
"%s"
,
residency
);
strcpy
(
data
[
count
].
residency
,
residency
);
//Declare checkedIn to false
data
[
count
].
checkedIn
=
false
;
noecho
();
mvwprintw
(
ticket_win
,
13
,
1
,
"Choose luggage type"
);
mvwprintw
(
ticket_win
,
14
,
1
,
"-------------------"
);
char
*
options
[
3
]
=
{
"Small bag + Carry-On(default included in fare)"
,
char
*
options
[
LUGGAGE_COUNT
]
=
{
"Small bag + Carry-On(default included in fare)"
,
"Check-In 20kg suitcase"
,
"Oversized(bikes, 20+kg)"
};
//Create list with options selectable with arrow key
while
(
1
)
{
for
(
i
=
0
;
i
<
3
;
i
++
)
//Print list
for
(
i
=
0
;
i
<
LUGGAGE_COUNT
;
i
++
)
{
//If current option is selected, highlight it
if
(
i
==
highlight
)
{
wattron
(
ticket_win
,
A_REVERSE
);
...
...
@@ -128,21 +94,21 @@ void NewTicket(int *row, int *col, char *seat, int flightID, MYSQL *con, int cou
mvwprintw
(
ticket_win
,
i
+
15
,
1
,
"%s"
,
options
[
i
]);
}
}
//Ask for choice in arrow keys
choice
=
wgetch
(
ticket_win
);
switch
(
choice
){
case
UP_KEY
:
highlight
--
;
if
(
highlight
==
-
1
)
if
(
highlight
==
-
1
)
//List is at the top
{
highlight
=
0
;
}
break
;
case
DOWN_KEY
:
highlight
++
;
if
(
highlight
==
3
)
if
(
highlight
==
LUGGAGE_COUNT
)
//List is at the bottom
{
highlight
=
3
-
1
;
highlight
=
LUGGAGE_COUNT
-
1
;
}
break
;
default:
...
...
@@ -150,12 +116,12 @@ void NewTicket(int *row, int *col, char *seat, int flightID, MYSQL *con, int cou
}
if
(
choice
==
ENTER_KEY
)
{
break
;
}
}
data
[
count
].
luggageClass
=
highlight
;
wrefresh
(
ticket_win
);
delwin
(
ticket_win
);
insertPersonIntoTable
(
con
,
data
[
count
],
row
,
col
);
...
...
@@ -185,7 +151,6 @@ void FillSeatmap(int seats[ROWS][COLUMNS], int rows, int cols, MYSQL *con, int f
{
for
(
int
i
=
0
;
i
<
num_fields
;
i
++
)
{
//printf("%s ", row[i] ? row[i] : "NULL");
strcpy
(
temp
,
row
[
i
]);
strncpy
(
tempRow
,
temp
,
2
);
tempRow
[
2
]
=
'\n'
;
...
...
@@ -210,34 +175,36 @@ void FillSeatmap(int seats[ROWS][COLUMNS], int rows, int cols, MYSQL *con, int f
seats
[
tempRowInt
][
col
]
=
1
;
}
//printf("\n");
}
}
void
PrintSeats
(
int
data
[
ROWS
][
COLUMNS
],
int
rows
,
int
cols
,
int
*
row
,
int
*
col
,
char
*
seat
)
{
int
i
,
j
;
int
count
=
0
;
char
colId
;
char
temp
[
STR_MAX
];
char
seats
[
SEATS
][
STR_MAX
];
//Seat array to check if seat is available and exists
WINDOW
*
menu_win
;
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
col
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
col
/
2
-
WIN_WIDTH
/
2
);
wrefresh
(
menu_win
);
mvwprintw
(
menu_win
,
1
,
1
,
"Choose your seat"
);
mvwprintw
(
menu_win
,
2
,
1
,
"----------------"
);
wmove
(
menu_win
,
3
,
1
);
//Go through all rows
for
(
i
=
0
;
i
<
rows
;
i
++
)
{
//Go through all columns
for
(
j
=
0
;
j
<
cols
;
j
++
)
{
//Change colId accordingly to the seat column
if
(
j
==
0
)
{
colId
=
'A'
;
}
else
if
(
j
==
1
)
{
colId
=
'B'
;
colId
=
'B'
;
}
else
if
(
j
==
2
)
{
...
...
@@ -248,40 +215,68 @@ void PrintSeats(int data[ROWS][COLUMNS], int rows, int cols, int *row, int *col,
colId
=
'D'
;
}
if
(
data
[
i
][
j
]
==
1
)
if
(
data
[
i
][
j
]
==
1
)
//Seat is taken
{
//~ attron(COLOR_RED);
wprintw
(
menu_win
,
" X "
);
//~ attroff(COLOR_RED);
//Print no seat into seat array
sprintf
(
seats
[
count
],
"00A"
);
}
else
if
(
data
[
i
][
j
]
==
0
)
else
if
(
data
[
i
][
j
]
==
0
)
//Seat is free
{
//~ attron(COLOR_GREEN);
if
(
i
<
10
)
{
//Print seat into window
wprintw
(
menu_win
,
"0%d%c"
,
i
,
colId
);
//Print seat into seat array
sprintf
(
seats
[
count
],
"0%d%c"
,
i
,
colId
);
}
else
{
//Print seat into window
wprintw
(
menu_win
,
"%d%c"
,
i
,
colId
);
//~ attroff(COLOR_GREEN);
//Print seat into seat array
sprintf
(
seats
[
count
],
"%d%c"
,
i
,
colId
);
}
}
if
(
j
==
1
)
wprintw
(
menu_win
,
" "
);
else
wprintw
(
menu_win
,
" "
);
wrefresh
(
menu_win
);
count
++
;
}
wmove
(
menu_win
,
i
+
3
,
1
);
}
mvwprintw
(
menu_win
,
23
,
1
,
"Please type your seat
and press enter:
"
);
mvwprintw
(
menu_win
,
23
,
1
,
"Please type your seat"
);
echo
();
wscanw
(
menu_win
,
"%s"
,
temp
);
mvwprintw
(
menu_win
,
24
,
1
,
">"
);
noecho
();
//Check if seat is available and exists
int
check
=
1
;
while
(
check
==
1
)
{
echo
();
mvwscanw
(
menu_win
,
24
,
2
,
"%s"
,
temp
);
noecho
();
//Check if seat is in the created string array
for
(
i
=
0
;
i
<
SEATS
;
i
++
)
{
//If seat is in the string array, make check = 0, to exit loop
if
(
strcmp
(
temp
,
seats
[
i
])
==
0
)
{
check
=
0
;
}
else
{
mvwprintw
(
menu_win
,
23
,
1
,
"Seat not available, try again:"
);
mvwprintw
(
menu_win
,
24
,
2
,
" "
);
}
}
}
strcpy
(
seat
,
temp
);
//~ mvwprintw(menu_win, 25, 1, "%s", seat);
//~ for (i = 0; i < 5; i++)
//~ {
//~ seat[i] = temp[i];
//~ }
wrefresh
(
menu_win
);
delwin
(
menu_win
);
}
...
...
@@ -289,10 +284,10 @@ void PrintSeats(int data[ROWS][COLUMNS], int rows, int cols, int *row, int *col,
void
insertPersonIntoTable
(
MYSQL
*
con
,
users
data
,
int
*
rows
,
int
*
cols
)
{
WINDOW
*
ticket_win
;
ticket_win
=
create_newwin
(
28
,
100
,
1
,
*
cols
/
2
-
100
/
2
);
ticket_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
cols
/
2
-
WIN_WIDTH
/
2
);
wrefresh
(
ticket_win
);
char
query
[
1024
];
//
salvestan mysql päringu stringi
char
query
[
1024
];
//
String to save query into
sprintf
(
query
,
"INSERT INTO users (documentNum, firstName, "
"lastName, dateOfBirth, email, residency, checkedIn, seat,"
...
...
@@ -303,7 +298,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
//~ printf("DEBUG:%s\n\n", query);
if
(
mysql_query
(
con
,
query
))
{
//
päring serveril
e
if
(
mysql_query
(
con
,
query
))
{
//
Query to databas
e
clear
();
printf
(
"Error inserting user into database: %s
\n
"
,
mysql_error
(
con
));
exit
(
EXIT_FAILURE
);
...
...
@@ -312,7 +307,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
char
bookingCode
[
9
];
const
char
letters
[]
=
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
int
i
;
for
(
i
=
0
;
i
<
8
;
i
++
)
//
broneeringunumbri genereerimine
for
(
i
=
0
;
i
<
8
;
i
++
)
//
Generate booking number
{
bookingCode
[
i
]
=
letters
[
GetRand
(
0
,
35
)];
}
...
...
@@ -320,8 +315,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
mvwprintw
(
ticket_win
,
3
,
1
,
"Your booking number: %s"
,
bookingCode
);
mvwprintw
(
ticket_win
,
4
,
1
,
"Write this down to change your booking before the flight"
);
//päring et saada kätte viimane sisestatud väljale loodud ID
//Query to get last id created
if
(
mysql_query
(
con
,
"SELECT last_insert_id();"
))
{
finish_with_error
(
con
);
...
...
@@ -343,7 +337,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
exit
(
EXIT_FAILURE
);
}
char
buffer
[
STR_MAX
];
sprintf
(
buffer
,
"SELECT id,destination,time FROM Flights WHERE Flights.id = %d;"
,
data
.
flight_id
);
if
(
mysql_query
(
con
,
buffer
))
{
...
...
@@ -354,6 +348,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
int
num_fields
=
mysql_num_fields
(
result2
);
MYSQL_ROW
row2
;
//Create file named after the booking code
char
fileName
[
STR_MAX
];
sprintf
(
fileName
,
"Booking_%s.txt"
,
bookingCode
);
FILE
*
fp
=
fopen
(
fileName
,
"w"
);
...
...
@@ -365,6 +360,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
exit
(
EXIT_FAILURE
);
}
//Print info into file
fprintf
(
fp
,
"BOOKING %s
\n
"
,
bookingCode
);
fprintf
(
fp
,
"
\n
Name: %s %s"
,
data
.
fName
,
data
.
lName
);
fprintf
(
fp
,
"
\n
Document number: %s"
,
data
.
documentNum
);
...
...
@@ -376,7 +372,7 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
{
for
(
int
i
=
0
;
i
<
num_fields
;
i
++
)
{
fprintf
(
fp
,
"%s "
,
row
[
i
]
?
row
[
i
]
:
"NULL"
);
fprintf
(
fp
,
"%s "
,
row
2
[
i
]
?
row2
[
i
]
:
"NULL"
);
}
}
...
...
@@ -397,28 +393,33 @@ void insertPersonIntoTable(MYSQL* con, users data, int *rows, int *cols)
}
fclose
(
fp
);
mvwprintw
(
ticket_win
,
4
,
1
,
"File named Booking_%s.txt has been created!"
,
bookingCode
);
mvwprintw
(
ticket_win
,
5
,
1
,
"Press any key to continue"
);
wgetch
(
ticket_win
);
wrefresh
(
ticket_win
);
delwin
(
ticket_win
);
}
int
ShowDestinations
(
MYSQL
*
con
,
int
*
rows
,
int
*
cols
)
{
if
(
mysql_query
(
con
,
"SELECT id,destination,time FROM Flights;"
))
//Query for all destinations
if
(
mysql_query
(
con
,
"SELECT id,destination,time, flightNum FROM Flights;"
))
{
finish_with_error
(
con
);
}
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
int
num_fields
=
mysql_num_fields
(
result
);
char
buffer
[
BUFFER_MAX
];
WINDOW
*
menu_win
;
menu_win
=
create_newwin
(
28
,
100
,
1
,
*
cols
/
2
-
100
/
2
);
menu_win
=
create_newwin
(
WIN_LENGTH
,
WIN_WIDTH
,
1
,
*
cols
/
2
-
WIN_WIDTH
/
2
);
mvwprintw
(
menu_win
,
1
,
1
,
"Available destinations and times"
);
mvwprintw
(
menu_win
,
2
,
1
,
"--------------------------------"
);
MYSQL_ROW
row
;
int
count
=
0
;
//Print out destinations, times and flight numbers
while
((
row
=
mysql_fetch_row
(
result
)))
{
wmove
(
menu_win
,
count
+
4
,
1
);
...
...
@@ -427,32 +428,37 @@ int ShowDestinations(MYSQL *con, int *rows, int *cols)
wprintw
(
menu_win
,
"%s "
,
row
[
i
]
?
row
[
i
]
:
"NULL"
);
}
count
++
;
}
mvwprintw
(
menu_win
,
12
,
1
,
"To select press (1-%d)"
,
count
);
int
selection
;
mvwprintw
(
menu_win
,
count
+
4
,
1
,
"Select flight"
);
//Ask for selection
int
selection
=
0
;
echo
();
do
{
selection
=
wgetch
(
menu_win
)
-
48
;
if
(
selection
>
count
||
selection
<
1
)
mvwprintw
(
menu_win
,
count
+
5
,
1
,
">"
);
wprintw
(
menu_win
,
" "
);
//Clear typing area
mvwscanw
(
menu_win
,
count
+
5
,
2
,
"%d"
,
&
selection
);
//Ask for flight
//Check if flight id exists
sprintf
(
buffer
,
"SELECT flightNum FROM Flights WHERE id = %d"
,
selection
);
if
(
mysql_query
(
con
,
buffer
))
{
mvwprintw
(
menu_win
,
12
,
1
,
"Invalid selection, retry (1-%d)"
,
count
);
finish_with_error
(
con
);
}
}
while
(
selection
>
count
||
selection
<
1
);
char
query
[
512
];
sprintf
(
query
,
"SELECT destination FROM Flights WHERE Flights.id = %d;"
,
selection
);
if
(
mysql_query
(
con
,
query
))
{
finish_with_error
(
con
);
}
result
=
mysql_store_result
(
con
);
//~ PrintRes(result);
MYSQL_RES
*
result
=
mysql_store_result
(
con
);
row
=
mysql_fetch_row
(
result
);
//Check if flight exists
if
(
row
==
NULL
)
{
mvwprintw
(
menu_win
,
count
+
4
,
1
,
"Invalid selection, retry"
);
}
}
while
(
row
==
NULL
);
noecho
();
wrefresh
(
menu_win
);
mysql_free_result
(
result
);
delwin
(
menu_win
);
clear
();
return
selection
;
}
...
...
@@ -498,13 +504,14 @@ void PrintRes(MYSQL_RES *result)
}
int
GetRand
(
int
min
,
int
max
)
{
//Return random number ranging from provided min to max
return
(
rand
()
%
(
max
-
min
+
1
))
+
min
;
}
int
CheckLetters
(
char
word
[
STR_MAX
])
{
int
i
;
//Checks if provided string consists of only letters
for
(
i
=
0
;
i
<
strlen
(
word
);
i
++
)
{
if
((
word
[
i
]
>=
'a'
&&
word
[
i
]
<=
'z'
)
||
(
word
[
i
]
>=
'A'
&&
word
[
i
]
<=
'Z'
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment