성우 1장 OOP 단계별 프로젝트

♪C++/소스 2017. 10. 9. 15:48

/* 

 * 윤성우 1장 OOP 단계별 프로젝트

 */


#include <iostream>

#include <cstring>


using namespace std;

const int NAME_LEN=20;


void ShowMenu(void);       // 메뉴출력

void MakeAccount(void);    // 계좌개설을 위한 함수

void DepositMoney(void);       // 입    금

void WithdrawMoney(void);      // 출    금

void ShowAllAccInfo(void);     // 잔액조회


enum {MAKE=1, DEPOSIT, WITHDRAW, INQUIRE, EXIT};


typedef struct 

{

int accID;      // 계좌번호

int balance;    // 잔    액

char cusName[NAME_LEN];   // 고객이름

} Account;


Account accArr[100];   // Account 저장을 위한 배열

int accNum=0;        // 저장된 Account 수


int main(void)

{

int choice;

while(1)

{

ShowMenu();

cout<<"선택: "; 

cin>>choice;

cout<<endl;

switch(choice)

{

case MAKE:

MakeAccount(); 

break;

case DEPOSIT:

DepositMoney(); 

break;

case WITHDRAW: 

WithdrawMoney(); 

break;

case INQUIRE:

ShowAllAccInfo(); 

break;

case EXIT:

return 0;

default:

cout<<"Illegal selection.."<<endl;

}

}

return 0;

}


void ShowMenu(void)

{

cout<<"-----Menu------"<<endl;

cout<<"1. 계좌개설"<<endl;

cout<<"2. 입    금"<<endl;

cout<<"3. 출    금"<<endl;

cout<<"4. 계좌정보 전체 출력"<<endl;

cout<<"5. 프로그램 종료"<<endl;

}


void MakeAccount(void) 

{

int id;

char name[NAME_LEN];

int balance;

cout<<"[계좌개설]"<<endl;

cout<<"계좌ID: "; cin>>id;

cout<<"이  름: "; cin>>name;

cout<<"입금액: "; cin>>balance;

cout<<endl;

accArr[accNum].accID=id;

accArr[accNum].balance=balance;

strcpy(accArr[accNum].cusName, name);

accNum++;

}


void DepositMoney(void)

{

int money;

int id;

cout<<"[입    금]"<<endl;

cout<<"계좌ID: "; cin>>id;

cout<<"입금액: "; cin>>money;

for(int i=0; i<accNum; i++)

{

if(accArr[i].accID==id)

{

accArr[i].balance+=money;

cout<<"입금완료"<<endl<<endl;

return;

}

}

cout<<"유효하지 않은 ID 입니다."<<endl<<endl;

}


void WithdrawMoney(void)

{

int money;

int id;

cout<<"[출    금]"<<endl;

cout<<"계좌ID: "; cin>>id;

cout<<"출금액: "; cin>>money;

for(int i=0; i<accNum; i++)

{

if(accArr[i].accID==id)

{

if(accArr[i].balance<money)

{

cout<<"잔액부족"<<endl<<endl;

return;

}


accArr[i].balance-=money;

cout<<"출금완료"<<endl<<endl;

return;

}

}

cout<<"유효하지 않은 ID 입니다."<<endl<<endl;

}


void ShowAllAccInfo(void)

{

for(int i=0; i<accNum; i++)

{

cout<<"계좌ID: "<<accArr[i].accID<<endl;

cout<<"이  름: "<<accArr[i].cusName<<endl;

cout<<"잔  액: "<<accArr[i].balance<<endl<<endl;

}

}

'♪C++ > 소스' 카테고리의 다른 글

c++ stack  (0) 2018.09.19
c++ oop프로젝트 8장  (0) 2018.09.18
열혈강의 3장 연습문제 3-1 3-2  (0) 2017.11.10

'iostream.h': No such file or directory

♪C++/버그 2017. 10. 8. 18:38

#include <iostream> // **iostream.h  <- 구버전

using namespace std; // std라는 이름공간에 선언되어 있는 모든 표준 C++라이브러리를 사용 (cin, cout, ... )

void main(void)

{

 cout << "Hello World!\n";

 return;

}




'♪C++ > 버그' 카테고리의 다른 글

사소한 버그 .exe을 쓰기용으로 열 수 없습니다.  (0) 2011.01.21

사소한 버그 .exe을 쓰기용으로 열 수 없습니다.

♪C++/버그 2011. 1. 21. 23:48



이유는 현재 실행중인 cmd창이 있기 때문이다

'♪C++ > 버그' 카테고리의 다른 글

'iostream.h': No such file or directory  (0) 2017.10.08

c++ 연습 8-1

♪C++ 2010. 11. 14. 23:45


//Circle 클레스를 정의해보자 Circle 클래스는 원의 중심과 반지름 정보를 지니고 있어야한다.
//또한 원에 대한 정보(원의 중심 위치, 반지름, 넓이)를 출력하는 기능도 지니고 있어야한다.
//단 원의 중심을 나타내는 Point클래스를 정의하고 Circle 클레스가 이를 상속하는 형태로
//구현 해야한다. 다음에 제시하고 있는 main 함수와 예외 실행 결과를 참조해서 정의하기 바란다.

#include<iostream>
using std::cout;
using std::endl;
class Point
{
public:
 int x,y;
 void point_showdata()
 {
   cout<<"중심 좌표 : ["<<x<<","<<y<<"]"<<endl;
 }

};
class Circle : public Point
{

 double Radius;

public:
 Circle(int _x,int _y,double _Radius)
 {
  x=_x;
  y=_y;
  Radius=_Radius;
 }
 void showdata()
 {
  point_showdata();
  cout<<"반지름 : "<<Radius<<endl;
  cout<<"원의 넓이 : "<<3.14*(Radius*Radius)<<endl;
 }

};

int main()
{
 //원 x,y는 3,5
 //반지름 2.2
 Circle cir(3,5,2.2);
 cir.showdata();
}


정답보니 너무 허접하게 만들엇다 ㅡㅡ....

'♪C++' 카테고리의 다른 글

C++ 생성자  (0) 2018.09.03
4996 에러  (0) 2018.08.14
OOP프로젝트 5단계  (0) 2010.11.02
C++ 열혈강의 7-2 연습문제  (3) 2010.11.01
열혈강의 c++ 연습문제 7-1  (1) 2010.10.31

OOP프로젝트 5단계

♪C++ 2010. 11. 2. 01:07

답좀 본게 아쉽지만 생각보다 별문제 없이 쉽게 끝낸거 같다....

#include<iostream>
using std::cout;
using std::endl;
using std::cin;

class account
{
 int id;
 int money;
 char *name;

public:
 account()
 {};

 account(const account & a)    //깊은 복사생성자
 {  
  this->id=a.id;
  this->money=a.money;
  this->name=new char[strlen(a.name)+1];
  strcpy(this->name,a.name);
 }
 
 account(int id,int money,char *name)
 {
  this->id=id;
  this->money=money;
  this->name=new char[strlen(name)+1];
  strcpy(this->name,name);
 }
 ~account()
 {
  delete []name;
 }
 void showdata(int i) const;
 void target(int _id);     //입금
 void target2(int _id);     //출금
 
};
void account::target2(int _id)
{
 int _money;
 if(id==_id)
 {
  cout<<"출금하실 금액 입력 : ";
  cin>>_money;
  if(money<_money)
   cout<<"잔액이 부족합니다"<<endl;
  else
   money=money-_money;
 }
 
}
void account::target(int _id)
{
 int _money;
 if(id==_id)
 {
  cout<<"입금하실 금액 입력 : ";
  cin>>_money;
  money=money+_money;
 }
 
}
void account::showdata(int i) const
{

  cout<<"------------------------"<<endl;
  cout<<i<<"번째 고객"<<endl;
  cout<<"ID : "<<id<<endl;
  cout<<"금액 : "<<money<<endl;
  cout<<"이름 : "<<name<<endl;
  cout<<"------------------------"<<endl;
 
}
class accmanager : public account
{
 int humen;        //1명부터 들어감
 account *arr[100];
public:
 accmanager()
 {
  humen=0;
 }
 void account_inquiry();      //계좌 조회
 void bank_account();      //계좌 계설
 void deposit();        //입금 디포지트
 void windrawal();       //출금
};
void accmanager::account_inquiry()      //계좌 조회
{
 
 for(int i=1;i<=humen;i++)
 {
  if(arr[i]==NULL)
  {
   cout<<"계좌가 더 이상 없습니다"<<endl;
   break;
  }
  arr[i]->showdata(i);
 }
}
void accmanager::deposit()        //입금 디포지트
{
 int ID;
 int money;
 cout<<"입금시킬 계좌번호를 입력해주세요"<<endl;
 cin>>ID;
 for(int i=1;i<=humen;i++)
 {
  arr[i]->target(ID);
 
 }
 
}
void  accmanager::windrawal()
{
 int ID;
 int money;
 cout<<"출금시킬 계좌번호를 입력해 주세요"<<endl;
 cin>>ID;
 for(int i=1;i<=humen;i++)
 {
  arr[i]->target2(ID);
 }
}

 


int main()
{
 accmanager person;
 int humen=1;
 while(1)
 {
 int choice;
 cout<<"1.계좌 계설"<<endl;
 cout<<"2.입  금"<<endl;
 cout<<"3.출  금"<<endl;
 cout<<"4.전체 고객 잔액 조회"<<endl;
 cout<<"5.종료"<<endl;

 cout<<"1~5사이의 숫자를 입력해주세요"<<endl;
 cin>>choice;

  switch(choice)
  {
  case 1 :
//   cout<<person.humen<<"번째 고객"<<endl;
   cout<<humen<<"번째 고객"<<endl;
   cout<<"계좌개설을 선택하셨습니다"<<endl;
   person.bank_account(); 
   humen++;
   break;
  case 2 :
   cout<<"입금을 선택하셨습니다"<<endl;
   person.deposit();
 
   break;
  case 3 :
   cout<<"출금을 선택하셨습니다"<<endl;
   person.windrawal();
 
   break;
  case 4 :
   cout<<"전체 고객 잔액 조회 선택하셨습니다."<<endl;
   person.account_inquiry();
  
   break;
  case 5 :
   cout<<"프로그램이 종료됩니다"<<endl;
   break;
  default :  
   cout<<"잘못 입력하셧습니다. 1~5사이의 숫자를 입력해주세요"<<endl;
 
   break;
  }
 }
}
void accmanager::bank_account()        ///계좌 계설

 int id;
 int money;
 char name[20];
 cout<<"계좌번호 :";
 cin>>id;
 cout<<"입금액 : ";
 cin>>money;
 cout<<"이름 : ";
 cin>>name;
 humen++;
 arr[humen]=new account(id,money,name);

}

'♪C++' 카테고리의 다른 글

4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14
C++ 열혈강의 7-2 연습문제  (3) 2010.11.01
열혈강의 c++ 연습문제 7-1  (1) 2010.10.31
C++ BasicInheri1  (1) 2010.10.31

C++ 열혈강의 7-2 연습문제

♪C++ 2010. 11. 1. 00:13

#include<iostream>
using std::endl;
using std::cout;

class person
{
protected:
 int age;
 char *name;
public:
 int getage() const
 {
  return age;
 }
 const char * getname() const{
  return name;
 }
 person(int _age=1,char * _name="noname")
 {
  age=_age;
  name=new char [strlen(_name)+1];
  strcpy(name,_name);
 }
 ~person()
 {
 delete []name;
 }
};
class student: public person
{
 char *major;
public:
 student(char* _major,int _age,char* _name) : person(_age,_name)   //이니셜라이져
 {
//  age=_age;
//  strcpy(name,_name);
  major=new char [strlen(_major)+1];
  strcpy(major,_major);
 }
 const char* getmajor() const{
  return major;
 }
 ~student()
 {
 delete []major;
 }
 void showdata() const{
  cout<<"이름 : "<<getname()<<endl;
  cout<<"나이 : "<<getage()<<endl;
  cout<<"전공 : "<<getmajor()<<endl;
 }
};
int main()
{
 student jun("컴퓨터공학과",20,"김준현");
 jun.showdata();

 return 0;
}


 

'♪C++' 카테고리의 다른 글

4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14
OOP프로젝트 5단계  (0) 2010.11.02
열혈강의 c++ 연습문제 7-1  (1) 2010.10.31
C++ BasicInheri1  (1) 2010.10.31

열혈강의 c++ 연습문제 7-1

♪C++ 2010. 10. 31. 23:38

#include<iostream>
using std::endl;
using std::cout;
using std::cin;
class account
{
private:
 char acc_num[10];//계좌번호
 int balance; //계좌 잔액
public :
 account(char* num="1234",int bal=1)
 {
  strcpy(acc_num,num);
  balance=bal;
 }
 const char* money() const
 {
  return acc_num;
 }
 const int bal() const
 {
  return balance;
 }

};
class kbaccount : public account
{
 private:
 int transfer;
public:
 kbaccount(char* acc_num,int balance,int _transfer) : account(acc_num,balance)
 {
  transfer=_transfer;
 }
 const int tran() const
 {
  return transfer;
 }
 void showdata() const
 {
  cout<<"계좌 번호 : "<<money()<<endl;
  cout<<"계좌 잔액 : "<<bal()<<"원"<<endl;
  cout<<"이체 한도 : "<<tran()<<"원"<<endl;
 }
};
int main()
{
 //계좌 번호 : 1234-5678
 //초기 입금액: 5000원
 // 이체 한도 : 100000원

 kbaccount acc("1234-5678",5000,100000);
 acc.showdata();
 return 0;
}

'♪C++' 카테고리의 다른 글

4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14
OOP프로젝트 5단계  (0) 2010.11.02
C++ 열혈강의 7-2 연습문제  (3) 2010.11.01
C++ BasicInheri1  (1) 2010.10.31

C++ BasicInheri1

♪C++ 2010. 10. 31. 17:26


#include<iostream>
using std::endl;
using std::cout;

class person
{
 int age;
 char name[20];
 char jangong[20];
public:
 int getage() const
 {
  return age;
 }
 const char * getname() const{
  return name;
 }
 person(int _age=1,char * _name="noname")
 {
  age=_age;
  strcpy(name,_name);
 }
};
class student: public person
{
 char major[20];
public:
 student(char* _major,int _age,char _jangong)
 {
  age=_age;
  strcpy(jangong,_jangong);
  strcpy(major,_major);
 }
 const char* getmajor() const{
  return major;
 }
 void showdata() const{
  cout<<"이름 : "<<getname()<<endl;
  cout<<"나이 : "<<getage()<<endl;
  cout<<"전공 : "<<getmajor()<<endl;
 }
};
int main()
{
 student jun("김준현",20,"컴퓨터공학과");
 jun.showdata();

 return 0;
}

흠..... 이니셜라이저 써야하는데 답답하넹...



#include<iostream>
using std::endl;
using std::cout;

class person
{

 int age;
 char name[20];
public: 
 int getage() const
 {
  return age;
 }
 const char * getname() const{
  return name;
 }
 person(int _age=1,char * _name="noname")
 {
  age=_age;
  strcpy(name,_name);
 }
};
class student: public person
{
 char major[20];
public:
 student(char* _major,int _age,char* _name) : person(_age,_name)   //이니셜라이져
 {
//  age=_age;
//  strcpy(name,_name);
  strcpy(major,_major);
 }
 const char* getmajor() const{
  return major;
 }
 void showdata() const{
  cout<<"이름 : "<<getname()<<endl;
  cout<<"나이 : "<<getage()<<endl;
  cout<<"전공 : "<<getmajor()<<endl;
 }
};
int main()
{
 student jun("컴퓨터공학과",20,"김준현");
 jun.showdata();

 return 0;
}

'♪C++' 카테고리의 다른 글

4996 에러  (0) 2018.08.14
c++ 연습 8-1  (0) 2010.11.14
OOP프로젝트 5단계  (0) 2010.11.02
C++ 열혈강의 7-2 연습문제  (3) 2010.11.01
열혈강의 c++ 연습문제 7-1  (1) 2010.10.31