- MAIN.C
- #include "Header.h"
- int main(void) {
- int inputOption;
- char* membersFileName = "Clanovi.txt";
- char* moviesFileName = "posudbe.txt";
- do {
- printMenu();
- scanf("%d", &inputOption); getchar();
- switch (inputOption) {
- case 1:
- createFile(membersFileName);
- break;
- case 2:
- readFile(membersFileName);
- break;
- case 3:
- saveMember(membersFileName);
- break;
- case 4:
- rentMovie(membersFileName, moviesFileName);
- break;
- case 5:
- exit(EXIT_SUCCESS);
- default:
- puts("Ta operacija ne postoji!\n");
- break;
- }
- } while (inputOption != 5);
- return 0;
- }
- HEADER.H
- #ifndef Header_h
- #define Header_h
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct memberInfo
- {
- char lName[20];
- char fName[20];
- int id;
- char address[100];
- int phoneNumber;
- }MEMBER;
- typedef struct movie {
- char name[128];
- int date, memberId;
- }MOVIE;
- void printMenu(void);
- void createFile(char* fileName);
- void readFile(char* fileName);
- void saveMember(char* fileName);
- void rentMovie(char* membersFileName, char* moviesFileName);
- void getMovieNumber(int* movieNumber);
- void getMovieToRent(MOVIE* movie);
- int checkForMember(char* memberFileName, MOVIE* movie);
- int checkMemberRentStatus(char* moviesFileName, MOVIE* movie);
- void registerRentedMovie(char* moviesFileName, MOVIE* movie);
- #endif /* Header_h */
- FUNCTIONS.C
- #include "Header.h"
- void printMenu(void) {
- printf("Pick your options: \n");
- printf("1- Kreiranje datoteke Clanovi.txt\n");
- printf("2- Citanje iz datoteke Clanovi.txt\n");
- printf("3- Dodavanje novih clanova u Clanovi.txt\n");
- printf("4- Posudba filma.\n");
- printf("5- Zavrsetak programa.\n");
- }
- void createFile(char* fileName) {
- FILE* file = fopen(fileName, "ab");
- puts("\nFile created.\n");
- fclose(file);
- }
- void readFile(char* fileName) {
- FILE* inFile = fopen(fileName, "rb");
- MEMBER member;
- if (inFile != NULL) {
- while (fread(&member, sizeof(MEMBER), 1, inFile) == 1) {
- printf("\nName: %s %s\n", member.fName, member.lName);
- printf("ID: %d\nPhone num: %d\n", member.id, member.phoneNumber);
- printf("Address: %s\n", member.address);
- }
- fclose(inFile);
- }
- puts("\n---- END OF FILE ----\n");
- }
- void saveMember(char* fileName) {
- FILE* file = fopen(fileName, "ab");
- MEMBER member;
- printf("Enter member first name: ");
- scanf(" %[^\n]", member.fName);
- printf("Enter member last name: ");
- scanf(" %[^\n]", member.lName);
- printf("Enter member code: ");
- scanf("%d", &member.id);
- getchar();
- printf("Enter memeber address: ");
- scanf(" %[^\n]", member.address);
- printf("Enter member phone number: ");
- scanf("%d", &member.phoneNumber); getchar();
- fwrite(&member, sizeof(MEMBER), 1, file);
- puts("\nMember added.\n");
- fclose(file);
- }
- void rentMovie(char* membersFileName, char* moviesFileName) {
- int movieNumber;
- getMovieNumber(&movieNumber);
- int i; MOVIE movie;
- for (i = 0; i < movieNumber; i++) {
- getMovieToRent(&movie);
- int memberExists, canRent;
- memberExists = checkForMember(membersFileName, &movie);
- canRent = checkMemberRentStatus(moviesFileName, &movie);
- if (memberExists && canRent) {
- registerRentedMovie(moviesFileName, &movie);
- printf("Movie no: %d, with the name: %s rented.\n", i + 1, movie.name);
- }
- else {
- printf("\nRenting failed.\nMember exists status: %d\n", memberExists);
- printf("Member can rent status: %d\n\n", canRent);
- }
- }
- }
- void getMovieNumber(int* movieNumber) {
- do {
- puts("How many movies do you what to checkout? (1 - 4)");
- scanf("%d", movieNumber);
- } while (*movieNumber <= 0 || *movieNumber > 4);
- }
- void getMovieToRent(MOVIE* movie) {
- printf("Enter movie name: ");
- scanf(" %[^\n]s", movie->name);
- do {
- printf("Enter date in range (0 - 365): ");
- scanf("%d", &movie->date); getchar();
- } while (movie->date < 0 || movie->date > 365);
- printf("Enter member code: ");
- scanf("%d", &movie->memberId); getchar();
- }
- int checkForMember(char* memberFileName, MOVIE* movie) {
- FILE* members = fopen(memberFileName, "rb");
- if(members == NULL) return 0;
- MEMBER member;
- while (fread(&member, sizeof(MEMBER), 1, members) == 1) {
- if (member.id == movie->memberId) {
- fclose(members);
- return 1;
- }
- }
- fclose(members);
- return 0;
- }
- int checkMemberRentStatus(char* moviesFileName, MOVIE* movie) {
- FILE* movies = fopen(moviesFileName, "rb");
- if (movies == NULL) {
- movies = fopen(moviesFileName, "ab");
- }
- MOVIE tempMovie;
- int counter = 0;
- while (fread(&tempMovie, sizeof(MOVIE), 1, movies) == 1) {
- if (tempMovie.memberId == movie->memberId) counter++;
- if (counter >= 4) {
- fclose(movies);
- return 0;
- }
- }
- fclose(movies);
- return 1;
- }
- void registerRentedMovie(char* moviesFileName, MOVIE* movie) {
- FILE* movies = fopen(moviesFileName, "ab");
- fwrite(movie, sizeof(MOVIE), 1, movies);
- fclose(movies);
- }