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번 문제는 리스트만 작성한다면 쉽게 구현할 수 있습니다
'C++ > C++로 쉽게 풀어쓴 자료구조' 카테고리의 다른 글
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 13 (0) | 2017.11.25 |
---|---|
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 12 (0) | 2017.11.24 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 12장 Dijkstra & Floyd 알고리즘 예제 (0) | 2017.11.23 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 12장 Kruskal & Prim 알고리즘 예제 (1) | 2017.11.21 |
C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 11 (2) (0) | 2017.11.16 |