Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int chooseStock();
- void newStock();
- void item_menu(char fileName[20], FILE *fp);
- struct item newItem(char fileName[20], FILE *fp);
- void searchItem(FILE *fp);
- void updateItem(char fileName[20], FILE *fp);
- struct item {
- int number; //item.number
- char name[20]; //item.name
- float price; //item.price
- int amount; //item.amount
- };
- int main()
- {
- int answer;
- //Main Menu
- while(1) {
- system("cls");
- printf("Main Menu:\n\n"); //Utveckla. Skriv text.
- printf("(1) New Stock.\n");
- printf("(2) Choose Stock\n");
- printf("(3) Exit\n");
- fflush(stdin);
- scanf("%d", &answer);
- switch(answer) {
- case 1: newStock(); break;
- case 2: chooseStock(); break;
- case 3: return 0;
- default: printf("Please select a valid option");
- }
- }
- return 0;
- }
- void newStock() {
- int i;
- char fileName[20];
- FILE *fp;
- printf("What do you want to name your new stock?\n");
- fflush(stdin);
- gets(fileName);
- strcat(fileName, ".txt");
- if(fileName[0] == ' ')
- printf("Invalid File Name\n");
- for(i=0; i<20; i++)
- if(fileName[i] == ' ');
- fileName[i] = '\0';
- if((fp = fopen(fileName, "w")) == NULL)
- printf("Could not create file.");
- else {
- fclose(fp);
- rewind(fp);
- item_menu(fileName, fp);
- }
- }
- int chooseStock() {
- char fileName[20];
- FILE *fp;
- printf("Name the file you want to open.\n");
- fflush(stdin);
- gets(fileName);
- strcat(fileName, ".txt");
- //Checks if first letter in filename is spacebar.
- if(fileName[0] == ' ')
- printf("Invalid File Name\n");
- //Checks if file exists.
- if((fp = fopen(fileName, "r")) == NULL) {
- printf("File does not exist.\n");
- printf("Press any key to get back to Main Menu.\n");
- getch();
- return 0;
- }
- fclose(fp);
- rewind(fp);
- item_menu(fileName, fp);
- return 0;
- }
- void item_menu(char fileName[20], FILE *fp) {
- int answer;
- int menu = 1;
- int i = 0;
- struct item itemsInStock[100];
- //Menu 1
- while(1) {
- if((fp = fopen(fileName, "r")) == NULL) {
- printf("Could not open file.");
- }
- system("cls");
- printf("(1) Add Item\n");
- printf("(2) Update Item\n");
- printf("(3) Remove Item\n");
- printf("(4) Search For An Item\n");
- printf("(5) Statistics\n");
- printf("(6) Main Menu\n");
- fflush(stdin);
- scanf("%d", &answer);
- switch(answer) {
- case 1: fclose(fp); itemsInStock[i] = newItem(fileName, fp); break;
- case 2: updateItem(fileName, fp); break;
- case 3: removeItem(fileName, fp); break;
- case 4: searchItem(fp); break;
- default: ("Please select a valid option.\n");
- }
- rewind(fp);
- i++;
- }
- }
- struct item newItem(char fileName[20], FILE *fp) {
- struct item tempItem;
- if((fp = fopen(fileName, "a")) == NULL) {
- printf("Could not open file.");
- }
- printf("Insert name: ");
- fflush(stdin);
- gets(tempItem.name);
- printf("Insert price: ");
- while(1) {
- fflush(stdin);
- if(scanf("%f", &tempItem.price) == 0)
- printf("Please enter a number.\n");
- else
- break;
- }
- printf("Insert amount: ");
- while(1) {
- fflush(stdin);
- if(scanf("%d", &tempItem.amount) == 0)
- printf("Please enter a number.\n");
- else
- break;
- }
- // fprintf(fp, "Item %d:\n", idCounter+1);
- fprintf(fp, "%s\n", tempItem.name);
- fprintf(fp, "%.2f$\n", tempItem.price);
- fprintf(fp, "%d#\n\n", tempItem.amount);
- // fprintf(fp, "Item ID: %d\n\n", idCounter+1);
- fclose(fp);
- return tempItem;
- }
- void searchItem(FILE *fp) {
- char temp[20];
- char search[20];
- char tempChar;
- int i = 0;
- int lineCount[20];
- printf("Search: ");
- fflush(stdin);
- gets(search);
- lineCount[0] = 0;
- do
- {
- tempChar = fgetc(fp);
- if(tempChar == '\n')
- {
- temp[i] = '\0';
- if(strcmp(temp,search) == 0)
- {
- lineCount[0] = 1;
- i = 0;
- do
- {
- tempChar = fgetc(fp);
- temp[i] = tempChar;
- i++;
- } while(tempChar != '$');
- temp[i] = '\0';
- printf("Price: %s\n", temp);
- i = 0;
- fgetc(fp);
- do
- {
- tempChar = fgetc(fp);
- temp[i] = tempChar;
- i++;
- } while(tempChar != '#');
- i--;
- temp[i] = '\0';
- printf("Amount: %s\n", temp);
- getch();
- break;
- }
- i = 0;
- }
- else
- {
- temp[i] = tempChar;
- i++;
- }
- } while(tempChar != EOF);
- }
- void updateItem(char fileName[20], FILE *fp) {
- char item[20];
- char tempWord[50];
- char tempChar;
- char name[20];
- int answer;
- int i = 0;
- int tempLine = 1;
- int deleteLine = 0;
- int amount;
- float price;
- FILE *fp2;
- printf("What item do you want to change?");
- fflush(stdin);
- gets(item);
- rewind(fp);
- do
- {
- tempChar = fgetc(fp);
- if(tempChar == '\n')
- {
- tempLine++;
- tempWord[i] = '\0';
- if(strcmp(tempWord,item) == 0)
- {
- tempLine--;
- printf("Do you want to change the name, price or amount?\n");
- printf("(1) Name.\n");
- printf("(2) Price.\n");
- printf("(3) Amount.\n");
- scanf("%d", &answer);
- switch(answer) {
- case 1: deleteLine = tempLine;
- printf("New name: ");
- fflush(stdin);
- scanf("%s", name);
- break;
- case 2: deleteLine = tempLine + 1;
- printf("New price: ");
- fflush(stdin);
- scanf("%f", &price);
- break;
- case 3: deleteLine = tempLine + 2;
- printf("New amount: ");
- fflush(stdin);
- scanf("%d", &amount);
- break;
- default: ("Please select a valid option.\n");
- }
- printf("Delete Line: %d", deleteLine);
- getch();
- rewind(fp);
- fp2 = fopen("tempfile.c", "w");
- tempLine = 1;
- i = 0;
- switch(answer){
- case 1: do
- {
- tempChar = fgetc(fp);
- if(tempChar == EOF)
- break;
- if(tempChar == '\n')
- tempLine++;
- if(tempLine == deleteLine && i == 0){
- fprintf(fp2, "\n");
- fprintf(fp2, "%s", name);
- i = 1;
- }
- else if(tempLine == deleteLine)
- ;
- else
- putc(tempChar, fp2);
- } while(tempChar != EOF);
- case 2: do
- {
- tempChar = fgetc(fp);
- if(tempChar == EOF)
- break;
- if(tempChar == '\n')
- tempLine++;
- if(tempLine == deleteLine && i == 0){
- fprintf(fp2, "\n");
- fprintf(fp2, "%.2f$", price);
- i = 1;
- }
- else if(tempLine == deleteLine)
- ;
- else
- putc(tempChar, fp2);
- } while(tempChar != EOF);
- case 3: do
- {
- tempChar = fgetc(fp);
- if(tempChar == EOF)
- break;
- if(tempChar == '\n')
- tempLine++;
- if(tempLine == deleteLine && i == 0){
- fprintf(fp2, "\n");
- fprintf(fp2, "%d#", amount);
- i = 1;
- }
- else if(tempLine == deleteLine)
- ;
- else
- putc(tempChar, fp2);
- } while(tempChar != EOF);
- }
- rewind(fp);
- rewind(fp2);
- fclose(fp);
- fclose(fp2);
- remove(fileName);
- rename("tempfile.c", fileName);
- }
- i = 0;
- }
- else
- {
- tempWord[i] = tempChar;
- i++;
- }
- } while(tempChar != EOF);
- if(deleteLine == 0)
- printf("Sorry! There is no item named %c%s%c in this stock.\n", 34, item, 34);
- fclose(fp);
- }
- void removeItem(char fileName[20], FILE *fp) {
- char item[20];
- char tempWord[50];
- char tempChar;
- char name[20];
- int answer;
- int i = 0;
- int tempLine = 1;
- int deleteLine = 0;
- int amount;
- float price;
- FILE *fp2;
- printf("What item do you want to remove?");
- fflush(stdin);
- gets(item);
- rewind(fp);
- do
- {
- tempChar = fgetc(fp);
- if(tempChar == '\n')
- {
- tempLine++;
- tempWord[i] = '\0';
- if(strcmp(tempWord,item) == 0)
- {
- deleteLine = tempLine;
- printf("Delete Line: %d", deleteLine);
- getch();
- rewind(fp);
- fp2 = fopen("tempfile.c", "w");
- tempLine = 1;
- i = 0;
- do
- {
- tempChar = fgetc(fp);
- if(tempChar == EOF)
- break;
- if(tempChar == '\n')
- tempLine++;
- if(tempLine != deleteLine && tempLine != (deleteLine + 1) && tempLine != (deleteLine - 1) && tempLine != (deleteLine + 2))
- putc(tempChar, fp2);
- } while(tempChar != EOF);
- rewind(fp);
- rewind(fp2);
- fclose(fp);
- fclose(fp2);
- remove(fileName);
- rename("tempfile.c", fileName);
- }
- i = 0;
- }
- else
- {
- tempWord[i] = tempChar;
- i++;
- }
- } while(tempChar != EOF);
- if(deleteLine == 0)
- printf("Sorry! There is no item named %c%s%c in this stock.\n", 34, item, 34);
- fclose(fp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement