C++. Exchange project
1.質問
アップルを販売する「業者」とアップルを購入する「顧客」との取引プロセスを実施する
2.目的
3.コード
#pragma once
/*Seller class - 상인 클래스*/
class Seller
{
private: //정보 은닉
// 멤버변수
int Price; // 사과 판매가(1개)
int Remain; // 보유 사과 개수
int Money; // 보유 금액
int Sel; // 판매 개수
int Paid; // 지불받은 금액
public: // 외부 참조 가능
void Init(int price, int remain, int money); // 생성자 **함수**
int Getprice() const; // 판매금액 반환 함수, 하루 간 가격은 미변동 -> const선언
int Getpaid(); // 지불받은 금액 반환 함수
// 거래를 통해 발생하는 멤버변수의 변동(재초기화) 과정을 수행하는 **거래함수**
bool Procedure(int pay);
int Getsel(); // 판매 사과개수 반환함수
void Showinform(); // 상인정보 조회함수
};
/*Buyer class - 구매자 클래스*/
class Buyer
{
private:
int Money; // 보유 금액
int Gain; // 보유 사과 개수
public:
void Init(int money); // 생성자 함수
// 거래함수 : 거래과정 멤버변수의 재초기화를 수행하는 함수(변동 저장)
void Procedure(Seller & merchant);
// 구매자 정보 조회함수
void Showinform();
};
#include "apple.h"
#include<iostream>
using namespace std;
/*Seller class*/
/*생성자 함수*/
void Seller::Init(int price, int remain, int money)
{
// 입력받은 인자값으로 멤버변수 초기화1
Price = price;
Remain = remain;
Money = money;
}
/*지급받은 금액 반환함수*/
int Seller::Getprice() const
{
return Price;
}
/*거래함수 - boolean type*/
bool Seller::Procedure(int paid)
{
if (paid <= Getprice()) // 최소 지불 금액 설정 - 사과 하나의값보다 지불받은 금액이 적을 시
{
// 경고문구
cout << Getprice() << "원 이상의 금액을 지불하십시오." << endl;
// 반환 1, 거래중지
return false;
}
// 입력받은 인자값으로 멤버변수 초기화2
Paid = paid;
Sel = paid / Getprice();
// 일부 멤버변수 **재**초기화
Remain -= Sel;
Money += paid;
// 반환 2, 거래완료
return true;
}
/*지급받은 금액 반환함수*/
int Seller::Getpaid()
{
return Paid;
}
/*판매한 사과개수 반환함수*/
int Seller::Getsel()
{
return Sel;
}
/*판매자 정보조회 함수*/
void Seller::Showinform()
{
cout << "보유 사과 개수 : " << Remain << endl;
cout << "보유 금액 : " << Money << endl;
}
/*Buyer class*/
/*생성자 함수*/
void Buyer::Init(int money)
{
// 입력받은 인자로 멤버변수 초기화
Money = money;
Gain = 0; // 최초 보유 사과개수 0개
}
/*거래함수*/
void Buyer::Procedure(Seller & merchant) // Seller 클래스 함수에 접근하기 위해 객체 참조
{
if (merchant.Procedure()) // **"거래완료" 시에만** 고객 보유금액의 재초기화
{
Money -= merchant.Getpaid(); // 구매자 보유액 재초기화
}
Gain = merchant.Getsel(); // 구매자 보유 사과개수 재초기화
}
/*구매자 정보조회 함수*/
void Buyer::Showinform()
{
cout << "고객 잔여 금액 : " << Money << endl;
cout << "고객 보유 사과 수 : " << Gain << endl;
}
#include "Exchange.h"
#include <iostream>
using namespace std;
int main()
{
// 차례로 지불금액 / 사과 가격 / 팔리고 남은 사과개수 / 상인보유금 / 구매자보유금 변수
int PayMoney, appleprice, appleremain, Mpropert, Cpropert;
Seller merchant; // Seller클래스 객체 생성 - 상인
Buyer customer; // Buyer클래스 객체 생성 - 고객
// 변수 초기화
cout << "<상인 정보 입력>" << endl << "오늘의 사과 금액 : ";
cin >> appleprice;
cout << "상인 보유 사과 개수 : ";
cin >> appleremain;
cout << "상인 초기 자산 금액(원) : ";
cin >> Mpropert;
cout << "\n\n<구매자 정보 입력>" << endl;
// 입력된 변수값을 인자로 하여 Seller생성자 함수를 호출, 객체 멤버변수를 초기화한다.
merchant.Init(appleprice, appleremain, Mpropert);
// 구매자 정보 입력
cout << "구매자 보유 금액(원) : ";
cin >> Cpropert; \
// 입력된 변수값을 인자로 하여 Buyer생성자 함수 호출, 객체 멤버변수 초기화
customer.Init(Cpropert);
// 고객 지불금액 입력
cout << "고객이 지불할 금액을 입력하시오 : ";
cin >> PayMoney;
// Seller클래스의 거래함수 호출
merchant.Procedure(PayMoney);
// Buyer클래스의 거래함수 호출
customer.Procedure(merchant);
// 거래 후 상인-고객 각각의 정보조회 함수 호출
cout << "\n<거래 후 상인 정보>\n" ;
merchant.Showinform();
cout << "\n<거래 후 구매자 정보>\n" ;
customer.Showinform();
return 0;
}
4.結果
5.難しいところ/感じ
難点
Cからファイルを分離する方法を完全に把握していないので、この部分は少し苦労しました.また,新たに学習したクラス概念を実際に用いた場合にも,試行錯誤を数回経験した.
に感銘を与える
オブジェクトを生成できる「クラス」の全体的な構造と各構文の役割を全面的に理解しました.
Reference
この問題について(C++. Exchange project), 我々は、より多くの情報をここで見つけました https://velog.io/@croco/Exchange-projectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol