C++/C++로 쉽게 풀어쓴 자료구조

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 14 3번 문제

꾸준함. 2017. 12. 27. 16:45

mapRecord.h

/*

간단한 재고 관리 프로그램을 STL의 맵 클래스를 이용하여 만들어보자.

다음과 같은 필드가 레코드 안에 존재하여야 한다.

5자리의 부품 번호(키필드), 10자 이내의 부품 설명, 재주문 여부(yes or no), 현재 재고량

이 재고 관리 프로그램을 사용하는 사용자는 다음과 같은 연산들을 수행할 수 있어야한다.

재고 목록에 새로운 부품을 추가, 재고 목록에서 부품 검색, 키 필드를 제외한 부품의 임의의 필드 변경

*/

#include <iostream>

#include <string>

#include <map>

using namespace std;

 

class Record

{

private:

        string instruction;

        string reorder;

        int stock;

public:

        Record(string i="", string r="", int s=0) :instruction(i), reorder(r), stock(s)

        {

        }

        void changeRecord(string i, string r, int s)

        {

               instruction = i;

               reorder = r;

               stock = s;

        }

        void display()

        {

               cout << "제품 설명: " << instruction << endl;

               cout << "재주문 여부: " << reorder << endl;

               cout << "재고량: " << stock << endl << endl;

        }

};

 

class stockManagement

{

private:

        map<string, Record> myMap;

        map<string, Record>::iterator sp;

public:

        stockManagement()

        {

        }

        void addRecord(string key, Record r)

        {

               myMap[key] = r;

        }

        void search(string key)

        {

               for (sp = myMap.begin(); sp != myMap.end(); ++sp)

               {

                       if (key == sp->first.c_str())

                       {

                              cout << "해당 부품[" << key << "]를 찾았습니다" << endl;

                              sp->second.display();

                              return;

                       }

               }

               cout << "해당 부품을 못 찾았습니다" << endl;

        }

        void changeRecord(string key, string i, string r, int s)

        {

               for (sp = myMap.begin(); sp != myMap.end(); ++sp)

               {

                       if (key == sp->first.c_str())

                       {

                              cout << "해당 부품[" << key << "]의 정보를 변경합니다" << endl;

                              sp->second.changeRecord(i, r, s);

                              sp->second.display();

                              return;

                       }

               }

               cout << "해당 부품을 못 찾았기 때문에 정보를 변경하지 못했습니다" << endl;

        }

        void display(void)

        {

               for (sp = myMap.begin(); sp != myMap.end(); ++sp)

               {

                       cout << sp->first.c_str() << "설명" << endl;

                       sp->second.display();

                       cout << endl;

               }

        }

};


main.cpp

#include "mapRecord.h"

using namespace std;

 

int main(void)

{

        stockManagement s;

        s.addRecord("42055", Record("버킷 휠", "yes", 5));

        s.addRecord("42036", Record("바이크", "no", 10));

        s.addRecord("42035", Record("광산트럭", "yes", 2));

        s.display();

        s.search("42055");

        s.changeRecord("42036", "오토바이", "yes", 9);

        s.display();

        return 0;

}



개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] C++로 쉽게 풀어쓴 자료구조


*1번, 2번 문제는 리스트만 작성한다면 쉽게 구현할 수 있습니다

반응형