Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdbool.h>
- #include "funktioner.h"
- #define NAMESIZE 20
- #define LAGERSIZE 10
- Item aItem(int myNr, char myNamn[], int myAntal);
- Item newItem(void);
- void addItem(Item *pLager, int *counter, Item itamz);
- void openLager(Item pLager[],int *pitems, char aFile[]);
- void backupLager(Item pLager[],int fitems, char aFile[]);
- void printItem(Item *pItem);
- void printLager(Item *pLager, int fitems);
- void setAntal(Item *pLager, int Antalet);
- void printAntal(Item *pLager, int fitems, int theNr);
- void delItem(Item *pLager, int *counter, int theNr);
- void changeItemSaldo(Item *pLager, int fitems, int theNr, int saldot);
- void findNr(Item *pLager, int fitems, int theNr);
- void writeNr(Item *pLager, int fitems, int theNr, char aFile[]);
- void writeNamn(Item *pLager, int fitems, char *theNamn, char aFile[]);
- void writeSaldo(Item *pLager, int fitems, int theNr, char aFile[]);
- void findAntal(Item *pLager, int fitems, int theNr);
- void findNamn(Item *pLager, int fitems, char *theNamn);
- void nrSort(Item *pLager, int theNr);
- void antalSort(Item *pLager, int theNr);
- void namnSort(Item *pLager, int theNr);
- void printMenu(void);
- bool checkNr(Item *pLager, int theNr);
- int main(int argc, char **argv) {
- Item Lager[LAGERSIZE+1];
- char ch1[3];
- char ch2[2];
- char ch3[3];
- char ch4[3];
- int items = 0;
- int aTal = 0;
- char aaTal[4];
- int aSaldo = 0;
- char aNamn[NAMESIZE+1];
- char filen[NAMESIZE+1];
- printf("V\x84lkommen till lagret!\n");
- printf("Tyv\x84rr \x84r detta programmet endast optimerat f\x94r anv\x84ndning av gemener.\n");
- printf("Versaler anv\x84nds p\x86 egen risk\n");
- printf("Skriv in filnamnet p\x86 den fil inneh\x86llande ditt lager: ");
- gets(filen);
- openLager(Lager, &items, filen);
- printMenu();
- do {
- printf("Ditt val: ");
- gets(ch1);
- switch (ch1[0]) {
- case 'r' : printf("Registrera varor?\n");
- do {
- if (items != LAGERSIZE) {
- addItem(Lager, &items, newItem()); // Registrera ny vara
- printf("y f\x94r att forts\x84tta");
- gets(aaTal);
- } else {
- printf("Lagret \x84r fullt! [%d/%d]\n", items, LAGERSIZE);
- break;
- }
- } while (aaTal[0] == 'y');
- break;
- case 'w' : printLager(Lager, items); break; // Visa alla varor
- case 's' : do {
- printf("S\x94k efter varor p\x86 [i] - varunummer, [n] - varunamn, [s] - saldo. q f\x94r att avsluta\n\n");
- gets(ch2);
- switch (ch2[0]) {
- case 'i' : gets(aaTal);
- aTal = atoi(aaTal);
- findNr(Lager, items, aTal);
- break;
- case 'n' : gets(aNamn);
- findNamn(Lager, items, aNamn);
- break;
- case 's' : gets(aaTal);
- aTal = atoi(aaTal);
- findAntal(Lager, items, aTal);
- break;
- }
- } while (ch2[0] != 'q');
- break;
- case 'c' : printf("Type in the itemnumber for the item you want to change saldo: ");
- gets(aaTal);
- aTal = atoi(aaTal);
- printf("Nytt saldo:");
- gets(aaTal);
- aSaldo= atoi(aaTal);
- changeItemSaldo(Lager, items, aTal, aSaldo);
- break;// Ändra lagersaldot för varor
- case 'o' : printf("Sortera varor. [i] efter varunummer. [n] efter namn och [s] efter saldo: ");
- gets(ch3);
- switch (ch3[0]) {
- case 's' : antalSort(Lager, items);
- printf("Sorterat efter saldo\n");
- break;
- case 'i' : nrSort(Lager, items);
- printf("Sorterat efter varunummer\n");
- break;
- case 'n' : namnSort(Lager, items);
- printf("Sorterat i bokstavsordning\n");
- break;
- }
- break;
- case 'd' : printf("Ange varunummer f\x94r den vara du vill ta bort: ");
- gets(aaTal);
- aTal = atoi(aaTal);
- delItem(Lager, &items, aTal);
- break; // Avregistrera varor
- case 'v' : gets(aaTal);
- aTal = atoi(aaTal);
- printAntal(Lager, items, aTal);
- break; // Varning för lågt saldo
- case 'k' : printf("S\x94k och skriva ut varor till fil. [i] efter varunummer. [n] efter namn och [s] efter saldo: ");
- gets(ch4);
- switch(ch4[0]) {
- case 'i' : printf("Skriv in varunumret: ");
- gets(aaTal);
- aTal = atoi(aaTal);
- printf("Skriv in filnamnet p\x86 den filen du vill spara i: ");
- gets(filen);
- writeNr(Lager, items, aTal, filen);
- break;
- case 'n' : printf("S\x94k p\x86 namn: ");
- gets(aaTal);
- printf("Skriv in filnamnet p\x86 den filen du vill spara i: ");
- gets(filen);
- writeNamn(Lager, items, aaTal, filen);
- break;
- case 's' : printf("S\x94k p\x86 saldo: ");
- gets(aaTal);
- aTal = atoi(aaTal);
- printf("Skriv in filnamnet p\x86 den filen du vill spara i: ");
- gets(filen);
- writeSaldo(Lager, items, aTal, filen);
- break;
- } break;
- case 'p' : printf("[%d] / %d\n", items, LAGERSIZE); break;
- case 'm' : printMenu(); break;
- case 'q' : printf("Du har tryckt f\x94r att avsluta. Ange filnamnet du vill spara lagret till: ");
- gets(filen);
- backupLager(Lager, items, filen);
- break;
- }
- } while (ch1[0] != 'q');
- printf("P\x86 \x86terseende");
- return 0;
- }
- void openLager(Item pLager[],int *pitems, char aFile[]) { // Läser in ett lager från en fil
- FILE *pFile;
- printf("-[L\x84ser in filen]-\n");
- if ((pFile=fopen(aFile,"r"))) {
- while (fscanf(pFile, "%d %s %d",
- &pLager[*pitems].nr,
- pLager[*pitems].namn,
- &pLager[*pitems].antal)==3 && *pitems < LAGERSIZE) {
- (*pitems)++;
- }
- } else {
- printf("Ingen fil med det namnet hittade\n");
- }
- fclose(pFile);
- printf("Lagret laddat med [ %d ] varor\n", *pitems);
- }
- void backupLager(Item pLager[],int fitems, char aFile[]) { // Skriver lagret till en fil
- FILE *pFile;
- printf("L\x84ser in filen\n");
- if ((pFile=fopen(aFile,"w"))) {
- for (int i=0; i<fitems; i++)
- fprintf(pFile, "%d %s %d\n",
- pLager[i].nr,
- pLager[i].namn,
- pLager[i].antal);
- } else {
- printf("Something went wrong!\n");
- }
- fclose(pFile);
- printf("Lagret skriven till filen: %s\n", aFile);
- }
- void printItem(Item *pItem){ // Skriver ut en vara
- printf("%03d\t\t", pItem->nr);
- printf("%-20s\t", pItem->namn);
- printf("%5d\n", pItem->antal);
- }
- void printLager(Item *pLager, int fitems) { // Skriver ut hela lagret
- printf("Nr\t\tNamn\t\t\tSaldo\n");
- printf("---------------------------------------------\n");
- for (int i=0;i<fitems;i++){
- printItem(&pLager[i]);
- }
- }
- Item aItem(int myNr, char myNamn[], int myAntal) { // Skapar en ny vara
- Item aItem;
- aItem.nr = myNr;
- strcpy(aItem.namn, myNamn);
- aItem.antal = myAntal;
- return aItem;
- }
- void addItem(Item *pLager, int *counter, Item itamz){ // Läger till en vara i lagret
- bool check;
- check = checkNr(pLager, itamz.nr);
- if (check == false){
- pLager[(*counter)++] = itamz;
- } else {
- printf("Varunummer m\x86ste vara unikt!\n");
- return;
- }
- }
- void setAntal(Item *pLager, int Antalet){ // Mutator för saldo
- pLager->antal = Antalet;
- }
- void printAntal(Item *pLager, int fitems, int theNr) { // Skriver ut varor på skärmen med saldo X eller lägre
- printf("Visar varor med antal %d eller mindre\n", theNr);
- printf("---------------------\n");
- for (int i=0;i<fitems;i++){
- if (pLager[i].antal <= theNr){
- printItem(&pLager[i]);
- }
- }
- }
- void delItem(Item *pLager, int *counter, int theNr) { // Tar bort en vara
- int i; bool check;
- check = checkNr(pLager, theNr);
- if (check == true) {
- printf("Tar bort varan med varunummer %d\n", theNr);
- printf("---------------------\n");
- for (i=0;i<LAGERSIZE;i++){
- if (pLager[i].nr == theNr){
- pLager[i].nr = 0;
- (*counter)--;
- for (i=0;i<LAGERSIZE;i++){
- if(pLager[i].nr == 0){
- pLager[i].nr = pLager[i+1].nr;
- pLager[i+1].nr = 0;
- }
- }
- }
- }
- } else {
- printf("Ogilitigt varunummer!\n");
- return;
- }
- }
- void changeItemSaldo(Item *pLager, int fitems, int theNr, int saldot) { // Ändrar saldo på en vara
- int i; bool check;
- check = checkNr(pLager, theNr);
- if(check == true) {
- printf("\x8Endrar varanummer %d's saldo till %d\n", theNr, saldot);
- printf("---------------------\n");
- for (i=0;i<fitems;i++){
- if (pLager[i].nr == theNr) {
- setAntal(pLager, saldot);
- }
- }
- } else {
- printf("Ogiltigt varunummer!");
- return;
- }
- }
- void findNr(Item *pLager, int fitems, int theNr) { // Söker efter en varu med ett vist varunummer
- printf("Visar varor med varunummer %d\n", theNr);
- printf("---------------------\n");
- for (int i=0;i<fitems;i++){
- if (pLager[i].nr == theNr){
- printItem(&pLager[i]);
- }
- }
- }
- void writeNr(Item *pLager, int fitems, int theNr, char aFile[]) { // Skriver ut en vara med ett visst varunummer
- printf("---------------------\n");
- int i; bool check; FILE *pFile;
- check = checkNr(pLager, theNr);
- if (check == true) {
- printf("[-L\x84ser in filen]-\n");
- if ((pFile=fopen(aFile,"w"))) {
- for (i=0; i<fitems; i++){
- if (pLager[i].nr == theNr){
- fprintf(pFile, "%d %s %d\n",
- pLager[i].nr,
- pLager[i].namn,
- pLager[i].antal);
- printf("Skriver ut vara med varunummer %d till %s\n", theNr, aFile);
- }
- }
- } else {
- printf("Something went wrong!\n");
- }
- } else {
- printf("Ogiltigt varunummer!");
- return;
- }
- fclose(pFile);
- }
- void writeNamn(Item *pLager, int fitems, char *theNamn, char aFile[]) { // Skriver ut varor efter namn
- printf("---------------------\n");
- FILE *pFile;
- printf("-[L\x84ser in filen]-\n");
- if ((pFile=fopen(aFile,"w"))) {
- for (int i=0; i<fitems; i++){
- if (strstr(pLager[i].namn, theNamn) != NULL){
- fprintf(pFile, "%d %s %d\n",
- pLager[i].nr,
- pLager[i].namn,
- pLager[i].antal);
- }
- printf("Skriver ut varor med varunamn matchande %s till %s\n", theNamn, aFile);
- }
- } else {
- printf("Something went wrong!\n");
- }
- fclose(pFile);
- }
- void writeSaldo(Item *pLager, int fitems, int theNr, char aFile[]) { // Skriver ut varor med ett visst saldo
- printf("---------------------\n");
- FILE *pFile;
- printf("-[L\x84ser in filen]-\n");
- if ((pFile=fopen(aFile,"w"))) {
- for (int i=0; i<fitems; i++) {
- if (pLager[i].antal == theNr){
- fprintf(pFile, "%d %s %d\n",
- pLager[i].nr,
- pLager[i].namn,
- pLager[i].antal);
- }
- }
- printf("Skriver ut alla varor med saldo %d till filen %s\n", theNr, aFile);
- } else {
- printf("Something went wrong!\n");
- }
- fclose(pFile);
- }
- void findAntal(Item *pLager, int fitems, int theNr) { // Sök på saldo
- printf("Visar varor med antal %d\n", theNr);
- printf("---------------------\n");
- for (int i=0;i<fitems;i++){
- if (pLager[i].antal == theNr){
- printItem(&pLager[i]);
- }
- }
- }
- void findNamn(Item *pLager, int fitems, char *theNamn) { // Sök på varunamn
- printf("Visar varor som inneh\x86ller s\x94kordet %s\n", theNamn);
- printf("---------------------\n");
- for (int i=0;i<fitems;i++){
- if (strstr(pLager[i].namn, theNamn) != NULL){
- printItem(&pLager[i]);
- }
- }
- }
- void nrSort(Item *pLager, int theNr) { // Sorterar lagret efter varunummer
- int tmp; int tmp2;
- char tmp3[NAMESIZE+1];
- for (int i=0; i<theNr-1; i++)
- for (int j=0; j<theNr-1-i; j++)
- if (pLager[j].nr>pLager[j+1].nr) {
- tmp=pLager[j].nr;
- tmp2 =pLager[j].antal;
- strcpy(tmp3,pLager[j].namn);
- pLager[j].nr=pLager[j+1].nr;
- pLager[j].antal=pLager[j+1].antal;
- strcpy(pLager[j].namn,pLager[j+1].namn);
- pLager[j+1].nr=tmp;
- pLager[j+1].antal=tmp2;
- strcpy(pLager[j+1].namn,tmp3);
- }
- }
- void antalSort(Item *pLager, int theNr) { // Sorterar lagret efter saldo
- int tmp; int tmp2;
- char tmp3[NAMESIZE+1];
- for (int i=0; i<theNr-1; i++)
- for (int j=0; j<theNr-1-i; j++)
- if (pLager[j].antal>pLager[j+1].antal) {
- tmp=pLager[j].nr;
- tmp2 =pLager[j].antal;
- strcpy(tmp3,pLager[j].namn);
- pLager[j].nr=pLager[j+1].nr;
- pLager[j].antal=pLager[j+1].antal;
- strcpy(pLager[j].namn,pLager[j+1].namn);
- pLager[j+1].nr=tmp;
- pLager[j+1].antal=tmp2;
- strcpy(pLager[j+1].namn,tmp3);
- }
- }
- void namnSort(Item *pLager, int theNr) { // Sorterar lagret i bokstavsordning
- int tmp; int tmp2;
- char tmp3[NAMESIZE+1];
- for (int i=0; i<theNr-1; i++)
- for (int j=0; j<theNr-1-i; j++)
- if (strcmp(pLager[j].namn,pLager[j+1].namn) > 0){
- tmp=pLager[j].nr;
- tmp2 =pLager[j].antal;
- strcpy(tmp3,pLager[j].namn);
- pLager[j].nr=pLager[j+1].nr;
- pLager[j].antal=pLager[j+1].antal;
- strcpy(pLager[j].namn,pLager[j+1].namn);
- pLager[j+1].nr=tmp;
- pLager[j+1].antal=tmp2;
- strcpy(pLager[j+1].namn,tmp3);
- }
- }
- bool checkNr(Item *pLager, int theNr) { // Kollar om ett varunummer redan finns i lagret
- int i; bool alrdyExist = false;
- for (i=0;i<LAGERSIZE; i++) {
- if (pLager[i].nr == theNr) {
- alrdyExist = true;
- }
- }
- return alrdyExist;
- }
Advertisement
Add Comment
Please, Sign In to add comment