Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.68 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. #define NAMEMAX 30
  7. #define STOCKMAX 100
  8.  
  9. typedef struct {
  10. int stockNmr;
  11. char name[NAMEMAX+1];
  12. int quantity;
  13. } Goods;
  14.  
  15. //PRINTS MENU!!!//
  16. void printMenu() {
  17. clrscr();
  18. printf("****************************************************************\n");
  19. printf("************ THE AMAZING STOCK MANAGER (TASM) 0.1 ************\n");
  20. printf("****************************************************************\n");
  21. printf("******** Press 'a' to add goods to TASM! ****\n");
  22. printf("******** Press 'p' to show TASM! ****\n");
  23. printf("******** Press 's' to search TASM! ****\n");
  24. printf("******** Press 'n' to change the quantity of a good in TASM!****\n");
  25. printf("******** Press 'o' to sort TASM! ****\n");
  26. printf("******** Press 'r' to remove goods from TASM! ****\n");
  27. printf("******** Press 'q' to EXIT TASM! ****\n");
  28. printf("****************************************************************\n");
  29. printf("****************************************************************\n");
  30. }
  31.  
  32. void printHeader() {
  33. printf("StockNumber Name Quantity\n");
  34. printf("****************************************************************\n");
  35. }
  36.  
  37. void printLine() {
  38. printf("****************************************************************\n");
  39. }
  40.  
  41. //CLEARS COMMAND
  42. void clrscr() {
  43. system("@cls||clear");
  44. }
  45.  
  46. void printGoods(Goods *pGoods){
  47. printf("%03d", pGoods->stockNmr);
  48. printf(" %10s", pGoods->name);
  49. printf(" %d\n", pGoods->quantity);
  50. }
  51.  
  52. Goods initGoods(int itsStockNmr, char itsName[], int itsQuantity) {
  53. Goods newGoods;
  54. newGoods.stockNmr = itsStockNmr;
  55. strcpy (newGoods.name, itsName);
  56. newGoods.quantity = itsQuantity;
  57. return newGoods;
  58. }
  59.  
  60. //ADD FUNKTIONEN SOM SEDAN ANVÄNDS I SWITCHEN
  61. void addGoodtoStock(Goods aStock[], int *pAt) {
  62. Goods newGoods;
  63. int tmp;
  64. int test=0;
  65. do {
  66. printf("Stock Number? \n");
  67. scanf("%d", &tmp);
  68. // printf("%d", *pAt);
  69. test = testStockNmr(aStock, *pAt, tmp);
  70. if(test>0)
  71. printf("Stocknumber is already in use. \n");
  72. } while(test>0);
  73. newGoods.stockNmr=tmp;
  74. printf("Quantity? \n");
  75. scanf("%d",&newGoods.quantity);
  76. printf("Name of Good? \n");
  77. gets(newGoods.name);
  78. gets(newGoods.name);
  79. aStock[(*pAt)++]=newGoods;
  80.  
  81.  
  82. }
  83. ///THIS FUNCTION IS IN USE BY ADDSTOCK FUNCTION ABOVE!
  84. int testStockNmr(Goods aStock[], int size, int a) {
  85. int num=0;
  86. for (int i=0; i<size; i++)
  87. if (aStock[i].stockNmr==a) {
  88. num++;
  89. }
  90. return num;
  91. }
  92.  
  93. //PRINT FUKTIONEN SOM SEDAN ANVÄNDS I SWITCHEN
  94. void printStock(Goods aStock[], int size) {
  95. printHeader();
  96. for (int i=0; i<size; i++)
  97. printGoods(&aStock[i]);
  98. printLine();
  99. }
  100.  
  101. //SEARCH FUNKTION I SWITCHEN
  102. void printSearchMenu() {
  103. clrscr();
  104. printf("**************************************************************\n");
  105. printf("*********** THE AMAZING STOCK MANAGER (TASM) 0.1 ***********\n");
  106. printf("**************************************************************\n");
  107. printf("******** Press 'a' to search the goods names! ****\n");
  108. printf("******** Press 'b' to search for stocknumber! ****\n");
  109. printf("******** Press 'c' to search based on quantity of goods! ****\n");
  110. printf("******** Press 'q' to EXIT search! ****\n");
  111. printf("**************************************************************\n");
  112. printf("**************************************************************\n\n");
  113. }
  114.  
  115. void printSortMenu() {
  116. clrscr();
  117. printf("**************************************************************\n");
  118. printf("*********** THE AMAZING STOCK MANAGER (TASM) 0.1 ***********\n");
  119. printf("**************************************************************\n");
  120. printf("******** Press 'a' to sort by goods names! ****\n");
  121. printf("******** Press 'b' to sort based on stocknumber! ****\n");
  122. printf("******** Press 'c' to sort based on the quantity of goods!****\n");
  123. printf("******** Press 'q' to EXIT sort! ****\n");
  124. printf("**************************************************************\n");
  125. printf("**************************************************************\n\n");
  126. }
  127.  
  128. void searchGoods(Goods aStock[], int size) {
  129. char ans;
  130. printSearchMenu();
  131. do
  132. {
  133. scanf("%c", &ans);
  134. switch(ans)
  135. {
  136. case 'a': printSearchMenu(); searchName(aStock, size); break;
  137. case 'b': printSearchMenu(); searchStockNmr(aStock, size); break;
  138. case 'c': printSearchMenu(); searchQuantity(aStock, size); break;
  139. }
  140.  
  141. } while (ans!='q' && ans!='Q');
  142.  
  143. }
  144.  
  145. void searchStockNmr(Goods aStock[], int size) {
  146. printf("Type your desired stocknumber! \n");
  147. int num;
  148. int a;
  149. scanf("%d", &a);
  150. printSearchMenu();
  151. printHeader();
  152. for (int i=0; i<size; i++)
  153. if (aStock[i].stockNmr==a) {
  154. printGoods(&aStock[i]);
  155. num++;
  156. }
  157. if (num==0) {
  158. printf("No Goods found! \n");
  159. }
  160. printLine();
  161. }
  162.  
  163. void searchQuantity(Goods aStock[], int size) {
  164. printf("Type your desired Quantity! \n");
  165. int num;
  166. int a;
  167. scanf("%d", &a);
  168. printSearchMenu();
  169. printHeader();
  170. for (int i=0; i<size; i++)
  171. if (aStock[i].quantity==a) {
  172. printGoods(&aStock[i]);
  173. num++;
  174. }
  175. if (num==0) {
  176. printf("No Goods found! \n");
  177. }
  178. printLine();
  179. }
  180.  
  181. void searchName(Goods aStock[], int size) {
  182. printf("Type your desired name! \n");
  183. int num;
  184. char name[NAMEMAX+1];
  185. gets(name);
  186. gets(name);
  187. printSearchMenu();
  188. printHeader();
  189. for (int i=0; i<size; i++)
  190. if (strstr(aStock[i].name, name)!=NULL) {
  191. printGoods(&aStock[i]);
  192. num++;
  193. }
  194. if (num==0) {
  195. printf("No Goods found! \n");
  196. }
  197. printLine();
  198. }
  199.  
  200.  
  201. //CHANGE QUANTITY OF A GOOD FUNKTION I SWITCHEN
  202. void quantityGoods(Goods aStock[], int size) {
  203. int num;
  204. int a;
  205. int b;
  206. char ans;
  207. do {
  208. printf("Type your desired stocknumber that u want to change quantity of!\n");
  209. scanf("%d", &a);
  210. printHeader();
  211. for (int i=0; i<size; i++)
  212. if (aStock[i].stockNmr==a) {
  213. printGoods(&aStock[i]);
  214. num++;
  215. printLine();
  216. printf("How much quantity of the good do you want to change?\n");
  217. printLine();
  218. scanf("%d", &b);
  219. printMenu();
  220. printHeader();
  221. //printf("Your chosen value is:%d\n", b);
  222. if(aStock[i].quantity+b<0)
  223. printf("Not enough quantity\n");
  224. else {
  225. aStock[i].quantity+=b;
  226. printGoods(&aStock[i]);
  227. }
  228. }
  229. if (num==0) {
  230. printf("No Goods found! \n");
  231. }
  232. printLine();
  233.  
  234. printf("If u want to stop changing quantity of goods press 'q'\n");
  235. scanf("%s", &ans);
  236.  
  237. } while (ans!='q' && ans!='Q');
  238. }
  239.  
  240.  
  241. //SORT FUNKTION I SWICHEN
  242.  
  243. void sortGoods(Goods aStock[], int size) {
  244. char ans;
  245. printSortMenu();
  246. do
  247. {
  248. scanf("%c", &ans);
  249. switch(ans)
  250. {
  251. case 'a': printSortMenu(); sortName(aStock, size); break;
  252. case 'b': printSortMenu(); sortStockNmr(aStock, size); break;
  253. case 'c': printSortMenu(); sortQuantity(aStock, size); break;
  254. }
  255.  
  256. } while (ans!='q' && ans!='Q');
  257. }
  258.  
  259. void sortName(Goods aStock[], int size) {
  260. Goods tmp;
  261. for(int i=0; i<=size-1; i++)
  262. for (int j=i+1; j<=size-1; j++)
  263. if (strcmp(aStock[i].name,aStock[j].name)>0) {
  264. tmp=aStock[i];
  265. aStock[i]=aStock[j];
  266. aStock[j]=tmp;
  267. }
  268. }
  269.  
  270. void sortStockNmr(Goods aStock[], int size) {
  271. //Bubble Sort (If next nmr is bigger change order of number and so on...
  272. Goods tmp;
  273.  
  274. for(int i=0; i<size-1; i++)
  275. for (int j=0; j<size-1-i; j++)
  276. if (aStock[j].stockNmr>aStock[j+1].stockNmr) {
  277. tmp=aStock[j];
  278. aStock[j]=aStock[j+1];
  279. aStock[j+1]=tmp;
  280. }
  281.  
  282. }
  283.  
  284. void sortQuantity(Goods aStock[], int size) {
  285. //Bubble Sort (If next nmr is bigger change order of number and so on...
  286. Goods tmp;
  287.  
  288. for(int i=0; i<size-1; i++)
  289. for (int j=0; j<size-1-i; j++)
  290. if (aStock[j].quantity>aStock[j+1].quantity) {
  291. tmp=aStock[j];
  292. aStock[j]=aStock[j+1];
  293. aStock[j+1]=tmp;
  294. }
  295.  
  296. }
  297.  
  298. //REMOVE FUNKTION I SWITCHEN
  299. void removeGoods(Goods aStock[], int *pSize) {
  300. int a;
  301. int b=0;
  302. //char ans;
  303. printf("Type your desired stocknumber that u want to remove from stock!\n");
  304. scanf("%d", &a);
  305. printHeader();
  306. for (int i=0; i<(*pSize); i++) {
  307. if(b==1) {
  308. aStock[i-1]=aStock[i];
  309. }
  310. if(aStock[i].stockNmr==a) {
  311. b=1;
  312. }
  313. }
  314. if(b==1){
  315. (*pSize)--;
  316. }
  317.  
  318. }
  319.  
  320. void backupStock(Goods aStock[], int size) {
  321. FILE *dataPtr;
  322.  
  323. printf("Backing up the stock... ");
  324. if ((dataPtr=fopen("stock.txt","w"))) {
  325. for (int i=0; i<size; i++)
  326. fprintf(dataPtr,
  327. "%d %s %d\n",
  328. aStock[i].stockNmr,
  329. aStock[i].name,
  330. aStock[i].quantity);
  331. } else {
  332. printf("\nERROR: Open file!\n");
  333. }
  334. fclose(dataPtr);
  335. printf("...Backing up Stock, done!\n");
  336. }
  337.  
  338. void restoreStock(Goods aStock[], int *pSize) {
  339. FILE *dataPtr;
  340.  
  341. printf("(Restoring the stock... ");
  342. if ((dataPtr=fopen("stock.txt","r"))) {
  343. while (fscanf(dataPtr,
  344. "%d %s %d",
  345. &aStock[*pSize].stockNmr,
  346. aStock[*pSize].name,
  347. &aStock[*pSize].quantity)==3) {
  348. (*pSize)++;
  349. printf("*");
  350. }
  351. } else {
  352. printf("\nERROR: Open file!\n");
  353. }
  354. fclose(dataPtr);
  355. printf("...Restoring the stock, done!\n");
  356. }
  357.  
  358. int main(int argc, char **argv)
  359. {
  360. //******* Variables and Constants ********
  361. Goods myGoods[STOCKMAX];
  362. int goods=0;
  363. char ans;
  364. char answ[NAMEMAX];
  365.  
  366. printf("Do you want to restore stock from last session?\n");
  367. printf("then write the filename otherwise press any buttom.\n");
  368. gets(answ);
  369. if(!strcmp(answ,"stock.txt")) {
  370. restoreStock(myGoods, &goods);
  371. }
  372.  
  373. printMenu();
  374.  
  375. do
  376. {
  377. scanf("%c", &ans);
  378. switch(ans)
  379. {
  380. case 'a':
  381. do {
  382. printMenu();
  383. addGoodtoStock(myGoods,&goods);
  384. printMenu();
  385. if(goods==STOCKMAX) {
  386. printf("The Amazing stock manager is full! \n");
  387. ans='n';
  388. } else {
  389. printf("Add more stock? [y]/n:");
  390. scanf("%c", &ans);
  391. }
  392. } while (ans!='n' && ans!='N'); break;
  393. case 'p': printMenu(); printStock(myGoods, goods); break;
  394. case 's': printMenu(); searchGoods(myGoods, goods); printMenu(); break;
  395. case 'n': printMenu(); quantityGoods(myGoods, goods); break;
  396. case 'o': printMenu(); sortGoods(myGoods, goods); printMenu(); break;
  397. case 'r': removeGoods; removeGoods(myGoods, &goods); printMenu(); break;
  398. }
  399.  
  400. } while (ans!='q' && ans!='Q'); printMenu();
  401. backupStock(myGoods, goods);
  402.  
  403. printf("****************************************************************\n");
  404. printf("************ (TASM) - CLOSED ************\n");
  405. printf("****************************************************************\n");
  406. return 0;
  407. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement