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
2 years ago
by
krmaet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update readdata.c, final
parent
d0154dd1
programm
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'
))
...
...
This diff is collapsed.
Click to expand it.
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