Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #define NAMEMAX 30
- #define STOCKMAX 100
- typedef struct {
- int stockNmr;
- char name[NAMEMAX+1];
- int quantity;
- } Goods;
- //PRINTS MENU!!!//
- void printMenu() {
- clrscr();
- printf("****************************************************************\n");
- printf("************ THE AMAZING STOCK MANAGER (TASM) 0.1 ************\n");
- printf("****************************************************************\n");
- printf("******** Press 'a' to add goods to TASM! ****\n");
- printf("******** Press 'p' to show TASM! ****\n");
- printf("******** Press 's' to search TASM! ****\n");
- printf("******** Press 'n' to change the quantity of a good in TASM!****\n");
- printf("******** Press 'o' to sort TASM! ****\n");
- printf("******** Press 'r' to remove goods from TASM! ****\n");
- printf("******** Press 'q' to EXIT TASM! ****\n");
- printf("****************************************************************\n");
- printf("****************************************************************\n");
- }
- void printHeader() {
- printf("StockNumber Name Quantity\n");
- printf("****************************************************************\n");
- }
- void printLine() {
- printf("****************************************************************\n");
- }
- //CLEARS COMMAND
- void clrscr() {
- system("@cls||clear");
- }
- void printGoods(Goods *pGoods){
- printf("%03d", pGoods->stockNmr);
- printf(" %10s", pGoods->name);
- printf(" %d\n", pGoods->quantity);
- }
- Goods initGoods(int itsStockNmr, char itsName[], int itsQuantity) {
- Goods newGoods;
- newGoods.stockNmr = itsStockNmr;
- strcpy (newGoods.name, itsName);
- newGoods.quantity = itsQuantity;
- return newGoods;
- }
- //ADD FUNKTIONEN SOM SEDAN ANVÄNDS I SWITCHEN
- void addGoodtoStock(Goods aStock[], int *pAt) {
- Goods newGoods;
- int tmp;
- int test=0;
- do {
- printf("Stock Number? \n");
- scanf("%d", &tmp);
- // printf("%d", *pAt);
- test = testStockNmr(aStock, *pAt, tmp);
- if(test>0)
- printf("Stocknumber is already in use. \n");
- } while(test>0);
- newGoods.stockNmr=tmp;
- printf("Quantity? \n");
- scanf("%d",&newGoods.quantity);
- printf("Name of Good? \n");
- gets(newGoods.name);
- gets(newGoods.name);
- aStock[(*pAt)++]=newGoods;
- }
- ///THIS FUNCTION IS IN USE BY ADDSTOCK FUNCTION ABOVE!
- int testStockNmr(Goods aStock[], int size, int a) {
- int num=0;
- for (int i=0; i<size; i++)
- if (aStock[i].stockNmr==a) {
- num++;
- }
- return num;
- }
- //PRINT FUKTIONEN SOM SEDAN ANVÄNDS I SWITCHEN
- void printStock(Goods aStock[], int size) {
- printHeader();
- for (int i=0; i<size; i++)
- printGoods(&aStock[i]);
- printLine();
- }
- //SEARCH FUNKTION I SWITCHEN
- void printSearchMenu() {
- clrscr();
- printf("**************************************************************\n");
- printf("*********** THE AMAZING STOCK MANAGER (TASM) 0.1 ***********\n");
- printf("**************************************************************\n");
- printf("******** Press 'a' to search the goods names! ****\n");
- printf("******** Press 'b' to search for stocknumber! ****\n");
- printf("******** Press 'c' to search based on quantity of goods! ****\n");
- printf("******** Press 'q' to EXIT search! ****\n");
- printf("**************************************************************\n");
- printf("**************************************************************\n\n");
- }
- void printSortMenu() {
- clrscr();
- printf("**************************************************************\n");
- printf("*********** THE AMAZING STOCK MANAGER (TASM) 0.1 ***********\n");
- printf("**************************************************************\n");
- printf("******** Press 'a' to sort by goods names! ****\n");
- printf("******** Press 'b' to sort based on stocknumber! ****\n");
- printf("******** Press 'c' to sort based on the quantity of goods!****\n");
- printf("******** Press 'q' to EXIT sort! ****\n");
- printf("**************************************************************\n");
- printf("**************************************************************\n\n");
- }
- void searchGoods(Goods aStock[], int size) {
- char ans;
- printSearchMenu();
- do
- {
- scanf("%c", &ans);
- switch(ans)
- {
- case 'a': printSearchMenu(); searchName(aStock, size); break;
- case 'b': printSearchMenu(); searchStockNmr(aStock, size); break;
- case 'c': printSearchMenu(); searchQuantity(aStock, size); break;
- }
- } while (ans!='q' && ans!='Q');
- }
- void searchStockNmr(Goods aStock[], int size) {
- printf("Type your desired stocknumber! \n");
- int num;
- int a;
- scanf("%d", &a);
- printSearchMenu();
- printHeader();
- for (int i=0; i<size; i++)
- if (aStock[i].stockNmr==a) {
- printGoods(&aStock[i]);
- num++;
- }
- if (num==0) {
- printf("No Goods found! \n");
- }
- printLine();
- }
- void searchQuantity(Goods aStock[], int size) {
- printf("Type your desired Quantity! \n");
- int num;
- int a;
- scanf("%d", &a);
- printSearchMenu();
- printHeader();
- for (int i=0; i<size; i++)
- if (aStock[i].quantity==a) {
- printGoods(&aStock[i]);
- num++;
- }
- if (num==0) {
- printf("No Goods found! \n");
- }
- printLine();
- }
- void searchName(Goods aStock[], int size) {
- printf("Type your desired name! \n");
- int num;
- char name[NAMEMAX+1];
- gets(name);
- gets(name);
- printSearchMenu();
- printHeader();
- for (int i=0; i<size; i++)
- if (strstr(aStock[i].name, name)!=NULL) {
- printGoods(&aStock[i]);
- num++;
- }
- if (num==0) {
- printf("No Goods found! \n");
- }
- printLine();
- }
- //CHANGE QUANTITY OF A GOOD FUNKTION I SWITCHEN
- void quantityGoods(Goods aStock[], int size) {
- int num;
- int a;
- int b;
- char ans;
- do {
- printf("Type your desired stocknumber that u want to change quantity of!\n");
- scanf("%d", &a);
- printHeader();
- for (int i=0; i<size; i++)
- if (aStock[i].stockNmr==a) {
- printGoods(&aStock[i]);
- num++;
- printLine();
- printf("How much quantity of the good do you want to change?\n");
- printLine();
- scanf("%d", &b);
- printMenu();
- printHeader();
- //printf("Your chosen value is:%d\n", b);
- if(aStock[i].quantity+b<0)
- printf("Not enough quantity\n");
- else {
- aStock[i].quantity+=b;
- printGoods(&aStock[i]);
- }
- }
- if (num==0) {
- printf("No Goods found! \n");
- }
- printLine();
- printf("If u want to stop changing quantity of goods press 'q'\n");
- scanf("%s", &ans);
- } while (ans!='q' && ans!='Q');
- }
- //SORT FUNKTION I SWICHEN
- void sortGoods(Goods aStock[], int size) {
- char ans;
- printSortMenu();
- do
- {
- scanf("%c", &ans);
- switch(ans)
- {
- case 'a': printSortMenu(); sortName(aStock, size); break;
- case 'b': printSortMenu(); sortStockNmr(aStock, size); break;
- case 'c': printSortMenu(); sortQuantity(aStock, size); break;
- }
- } while (ans!='q' && ans!='Q');
- }
- void sortName(Goods aStock[], int size) {
- Goods tmp;
- for(int i=0; i<=size-1; i++)
- for (int j=i+1; j<=size-1; j++)
- if (strcmp(aStock[i].name,aStock[j].name)>0) {
- tmp=aStock[i];
- aStock[i]=aStock[j];
- aStock[j]=tmp;
- }
- }
- void sortStockNmr(Goods aStock[], int size) {
- //Bubble Sort (If next nmr is bigger change order of number and so on...
- Goods tmp;
- for(int i=0; i<size-1; i++)
- for (int j=0; j<size-1-i; j++)
- if (aStock[j].stockNmr>aStock[j+1].stockNmr) {
- tmp=aStock[j];
- aStock[j]=aStock[j+1];
- aStock[j+1]=tmp;
- }
- }
- void sortQuantity(Goods aStock[], int size) {
- //Bubble Sort (If next nmr is bigger change order of number and so on...
- Goods tmp;
- for(int i=0; i<size-1; i++)
- for (int j=0; j<size-1-i; j++)
- if (aStock[j].quantity>aStock[j+1].quantity) {
- tmp=aStock[j];
- aStock[j]=aStock[j+1];
- aStock[j+1]=tmp;
- }
- }
- //REMOVE FUNKTION I SWITCHEN
- void removeGoods(Goods aStock[], int *pSize) {
- int a;
- int b=0;
- //char ans;
- printf("Type your desired stocknumber that u want to remove from stock!\n");
- scanf("%d", &a);
- printHeader();
- for (int i=0; i<(*pSize); i++) {
- if(b==1) {
- aStock[i-1]=aStock[i];
- }
- if(aStock[i].stockNmr==a) {
- b=1;
- }
- }
- if(b==1){
- (*pSize)--;
- }
- }
- void backupStock(Goods aStock[], int size) {
- FILE *dataPtr;
- printf("Backing up the stock... ");
- if ((dataPtr=fopen("stock.txt","w"))) {
- for (int i=0; i<size; i++)
- fprintf(dataPtr,
- "%d %s %d\n",
- aStock[i].stockNmr,
- aStock[i].name,
- aStock[i].quantity);
- } else {
- printf("\nERROR: Open file!\n");
- }
- fclose(dataPtr);
- printf("...Backing up Stock, done!\n");
- }
- void restoreStock(Goods aStock[], int *pSize) {
- FILE *dataPtr;
- printf("(Restoring the stock... ");
- if ((dataPtr=fopen("stock.txt","r"))) {
- while (fscanf(dataPtr,
- "%d %s %d",
- &aStock[*pSize].stockNmr,
- aStock[*pSize].name,
- &aStock[*pSize].quantity)==3) {
- (*pSize)++;
- printf("*");
- }
- } else {
- printf("\nERROR: Open file!\n");
- }
- fclose(dataPtr);
- printf("...Restoring the stock, done!\n");
- }
- int main(int argc, char **argv)
- {
- //******* Variables and Constants ********
- Goods myGoods[STOCKMAX];
- int goods=0;
- char ans;
- char answ[NAMEMAX];
- printf("Do you want to restore stock from last session?\n");
- printf("then write the filename otherwise press any buttom.\n");
- gets(answ);
- if(!strcmp(answ,"stock.txt")) {
- restoreStock(myGoods, &goods);
- }
- printMenu();
- do
- {
- scanf("%c", &ans);
- switch(ans)
- {
- case 'a':
- do {
- printMenu();
- addGoodtoStock(myGoods,&goods);
- printMenu();
- if(goods==STOCKMAX) {
- printf("The Amazing stock manager is full! \n");
- ans='n';
- } else {
- printf("Add more stock? [y]/n:");
- scanf("%c", &ans);
- }
- } while (ans!='n' && ans!='N'); break;
- case 'p': printMenu(); printStock(myGoods, goods); break;
- case 's': printMenu(); searchGoods(myGoods, goods); printMenu(); break;
- case 'n': printMenu(); quantityGoods(myGoods, goods); break;
- case 'o': printMenu(); sortGoods(myGoods, goods); printMenu(); break;
- case 'r': removeGoods; removeGoods(myGoods, &goods); printMenu(); break;
- }
- } while (ans!='q' && ans!='Q'); printMenu();
- backupStock(myGoods, goods);
- printf("****************************************************************\n");
- printf("************ (TASM) - CLOSED ************\n");
- printf("****************************************************************\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement