Category Archives: Homework

연습문제 – Ex5

 1150641784.hwp

연습문제 (5)







□ 단원 : 파일 입출력 & 표준 컨트롤 & 대화상자 & 다양한 뷰 클래스

□ 목표 : MFC 프로그램 내에 사용자 클래스를 추가하는 방법 연습 & 대화상자 디자인

□ 주요 연습 내용 : CFile, FormView, CButton, CEdit, CStatic, CListCtrl, CDialog

□ 준비자료 : PersonData.zip – 데이터파일 (사우스파크.dat, 사우스파크.txt) & 이미지 (스탠 마쉬.bmp, 에릭 카트맨.bmp, 웬디 데스타버거.bmp, 카일 브로프로프스키.bmp, 케니 맥코믹.bmp)




[연습문제] (Due by 12/5 수 22시까지)


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex5.zip으로 묶어서 낼 것. 보고서 (30%)




0. 생성한 프로그램의 메인 프레임의 Title을 “HCI2_Ex5_이름_학번”으로 바꾼다. (힌트: Resource View에서 String Table의 IDR_MAINFRAME에 Caption을 “HCI2_Ex5_<이름>_<학번>”으로 하면 됨)




1. SimplePersonRecord라는 도큐먼트/뷰 구조, Single Document, FormView로 프로젝트를 생성한다 (즉, 마지막 단계에서 뷰클래스 SimplePersonRecordView의 베이스클래스를 CFormView로 선택한다.)




2. Resource View의 Dialog에서 출력화면을 위한 (SimplePersonRecordView 클래스를 위한) FormView Dialog (IDD_SIMPLEPERSONRECORD_FORM)를 만든다.


-Toolbox에서 (리스트 출력을 위한) List Control, (이름, 나이, 외모, 성격 입력을 위한) Edit Control, (편집컨트롤 그룹) Group Box, (등록, 수정, 삭제, 열람을 위한 푸쉬버튼) Button Control, (비트맵 그림을 보여주는) Picture Control


-List Control의 속성 (Properties) 창에서 View를 Report로 바꾼다.




사용자 삽입 이미지 


3. CObject 의 파생클래스로 CPerson 클래스를 생성하여 프로젝트에 추가한다. (10%)


-멤버 변수: 이름 (CString m_strName), 나이 (int m_nAge), 외모 (CString m_strAppearance), 성격 (CString m_strPersonality)


-멤버 함수: 생성자, 소멸자, operator=, Serialize, SetName, SetAge, SetAppearance, SetPersonality, GetName, GetAge, GetAppearance, GetPersonality, 등등, …




4. FormView Dialog (IDD_SIMPLEPERSONRECORD_FORM)에 등록, 수정, 삭제  버튼을 이용하여 멤버정보를 리스트 (CListCtrl 클래스)에 새로 추가, 선택항목 수정 및 삭제할 수 있다. (20%)


-뷰 클래스 CSimplePersonRecordView에


void OnUpdate(CView* pSender, LPARAM lHint, CObject *pHint) // OnInitialUpdate을 사용하지 말고, OnUpdate을 사용할 것. OnUpdate 함수에는 m_ctrlList의 틀을 그리고 난 후 (즉, InsertColumn), 도큐먼트에 m_PersonArray를 읽어들여서 m_ctrlList의 항목 추가 (즉, InsertItem & SetItemText)를 한다.


-afx_msg void OnLvnItemchangedList(NMHDR *pNMHDR, LRESULT *pResult)


-afx_msg void OnBnClickedButtonAdd() // 새로운 person 생성 후 도큐먼트클래스의 m_PersonArray에 person 추가, 폼뷰의 m_ctrlList에 person 추가한다. (즉, InsertItem & SetItemText)


-afx_msg void OnBnClickedButtonModify() // m_ctrlList.GetSelectionMark() 함수를 이용하여 현재 리스트에서 선택된 항목 index를 찾고, m_PersonArray와 m_ctrlList에 그 항목(person)을 수정한다.


-afx_msg void OnBnClickedButtonDel() // m_ctrlList.GetSelectionMark() 함수를 이용하여 현재 리스트에서 선택된 항목 index를 찾고, m_PersonArray와 m_ctrlList에서 그 항목(person)을 삭제한다.




-출력화면 예시


사용자 삽입 이미지 


5. FormView Dialog (IDD_SIMPLEPERSONRECORD_FORM)에 열람  버튼을 누르면 새로운 대화상자 (IDD_DIALOG_VIEW)에서 그 멤버의 사진과 정보를 볼 수 있다. (20%)


-BMP포멧 비트맵 이미지파일 (예시: 스탠 마쉬.bmp, 에릭 카트맨.bmp, 웬디 데스타버거.bmp, 카일 브로프로프스키.bmp, 케니 맥코믹.bmp)를 사용하여 테스트해 볼 것. 비트맵 이미지의 가로, 세로 크기는 150을 넘지 않는다.


-뷰 클래스 CSimplePersonRecordView에


-afx_msg void OnBnClickedButtonView() // m_ctrlList.GetSelectionMark() 함수를 이용하여 현재 리스트에서 선택된 항목 index를 찾고, 그 항목 (person)의 값을 대화상자 (IDD_DIALOG_VIEW)의 값으로 연결시키고, DoModal()을 부른다.


-대화상자 클래스 ViewDlg에


-BOOL ViewDlg::OnInitDialog() // 이 함수에서 이미지파일을 로딩한다.




-출력화면 예시


사용자 삽입 이미지 





6. 메뉴에서 텍스트파일 또는 데이터 파일에 멤버정보 리스트를 읽어 들이고, 텍스트 파일 또는 데이터 파일로 멤버정보 리스트를 저장하는 기능을 추가한다. (20%)


-텍스트파일 (예시: 사우스파크.txt)과 데이터 파일(예시: 사우스파크.dat)를 사용하여 테스트해 볼 것


-도큐먼트 클래스 CSimplePersonRecordDoc에 CTypedPtrArray<CObArray,CPerson*> m_PersonArray;를 선언하여 리스트를 관리한다


void CSimplePersonRecordDoc::OnFileImport()   // 텍스트파일 읽기


void CSimplePersonRecordDoc::OnFileExport()   // 텍스트파일 저장


-void CSimplePersonRecordDoc::Serialize(..)    // 데이터파일 읽기/저장


-void CSimplePersonRecordDoc::DeleteContents() // 리스트 데이터 clean up


 



사용자 삽입 이미지




– 텍스트파일은 CSV 포맷 (예시: 사우스파크.txt를 사용하여 테스트해 볼 것)


에릭 카트맨, 9, 뚱뚱함, 독설적이며 버릇없음


스탠 마쉬, 9, 귀여움, 평범하고 정상적


카일 브로프로프스키, 9, 초록색모자, 지적이며 때론 쉽게 흥분


케니 맥코믹, 9, 모자로 둘러싸임, 미스테리






7. 본인이 좋아하는 10개 이상의 캐릭터들(예: 둘리, 짱구, 체리, 루피, 등등)의 리스트를 작성하여, 위에서 언급한 모든 기능을 구현 데모한다. (보고서점수에 포함)





연습문제 – Ex4

1267210734.hwp
 

연습문제 (4)







□ 단원 : 마우스 & 사용자 인터페이스 & 파일입출력

□ 목표 : 메뉴 아이템 및 툴바 추가 연습 & 직렬화 및 파일 입출력

□ 주요 연습 내용 : Menu, Toolbar, ContextMenu, Serialize, FileIO

□ 준비자료 : SimpleStroke.zip (SimpleUI 와 SimplePointSerialize를 참고할 것)




[연습문제] Ex4 (Due by 11/14 수 22시까지)


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex1.zip으로 묶어서 낼 것. 보고서 (30%)




0. 생성한 프로그램의 메인 프레임의 Title을 “HCI2_Ex4_이름_학번”으로 바꾼다. (힌트: Resource View에서 String Table의 IDR_MAINFRAME에 Caption을 “HCI2_Ex4_<이름>_<학번>”으로 하면 됨)




1. CSimpleStrokeView에 펜의 두께(1,2,3,4,5,6,7), 색깔(Red, Green, Blue, Black, Purple, Yellow)을 바꿀 수 있는 메뉴 아이템을 메뉴바에 추가한다. 그리고, 색깔을 바꿀 수 있는 툴바를 추가한다 (리소스 편집기에서 메뉴와 툴바의 IDR_MAINFRAME을 편집한다). 또한, 오른쪽 마우스를 누르면 컨텍스트 메뉴가 뜨면서 펜의 두께를 지정할 수 있게 한다 (ON_WM_CONTEXTMENU를 추가한다). (20%)




사용자 삽입 이미지




2. CStroke에 직렬화를 추가한다. (20%)


    -멤버 변수: 펜두께(Thickness), 펜색깔 (Color)


    -멤버 함수:  


Serialize(CArchive& ar) 안에 CArchive를 이용하여 loading/storing할 때 멤버 변수 값을 입출력하게 해주는 루틴을 추가한다.




Draw(CDC* pDC) 안에 이 Stroke의 펜두께와 펜색깔을 받아서 새로운 펜을 생성하는 루틴을 추가한다. – 이 함수는 CSimpleStrokeView::OnDraw에서 내부적으로 불리는 것으로, CArchive나 CFile로 읽어들인 Stroke 데이타를 제대로 (각 Stroke별로 지정된 펜두께와 펜색깔로) 그려줄 수 있게 된다.




이 Serialize와 Draw 함수를 만든 후 그림판에 “본인의 이름”을 그리고, 메뉴 Save로 저장해보고, Open을 통해서 다시 열어본다.




3. CSimpleStrokeDoc 클래스에 텍스트파일로 된 Stroke 자료를 저장 (OnFileExport)하고 읽어들이기 (OnFileImport) 기능을 추가한다. (30%)




-OnFileImport 구현


// 한 line씩 읽어들여서,


// 먼저line에”Thickness”가 있는지 찾고, 있으면 new Stroke를 하고


// 이걸 m_StrokeList에 추가한다. (CSimpleStrokeView::OnLButtonDown를 참고)


// 만약 아니면, 새로운Stroke가 아니니까 그냥 이전에 생성한 Stroke의 m_ptArray에


// CPoint 점을 추가한다. (CSimpleStrokeView::OnMouseMove를 참고)




-OnFileExport 구현


// m_StrokeList안에 있는 모든 Stroke 별로,


// 먼저, 이 Stroke의 펜 두께와 색 “Thickness: %d Color: RGB(%d, %d, %d)”를


// 출력한다. 그리고, 이 Stroke의 모든 점들을 (%d, %d)로 출력한다.




– 텍스트파일 (첨부된 Test.txt를 사용하여 테스트해 볼 것)의 포멧


Thickness: 7 Color: RGB(255, 255, 0)


(182, 49)


(179, 53)


(176, 60)


(172, 70)


(166, 79)


(159, 90)


(153, 100)


(147, 111)




Thickness: 2 Color: RGB(0, 0, 255)


(479, 175)


(479, 185)


(479, 195)


(479, 211)


(476, 223)


(464, 244)


(452, 258)


(423, 287)


(399, 311)

연습문제 – Ex3

 

1142518796.hwp
연습문제 (3)







□ 단원 : MFC 구조 & 화면 출력

□ 목표 : MFC CObject 기반 클래스 생성 & 화면 출력

□ 주요 연습 내용 : CObject, CBitmap, CPen, Rectangle, Line, DrawText

□ 준비자료 : SimpleCObject.zip (Account.cpp, Account.h, ChildView.cpp,

                    ChildView.h, MainFrm.cpp, MainFrm.h, Simple.cpp, Simple.h,

                    stdafx.cpp, stdafx.h)




[연습문제]


연습문제 Ex3 (Due by 10/31 수 22시까지)


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex3.zip으로 묶어서 낼 것. 보고서 (30%)


-일단 6개~10개 정도의 데이터를 넣어서 출력을 하고, 추가로 데이터를 더 입력하거나 삭제하면 자동적으로 테이블 새로 변형되게 만들어지도록 할 것.
-추가로 CPen, CBrush, CFont의 속성을 바꾸어서 추가 (extra 10%)


0. 생성한 프로그램의 메인 프레임의 Title을 “HCI2_Ex3_이름_학번”으로 바꾼다. (예: Resource View에서 String Table의 IDR_MAINFRAME에 Caption을 “HCI2_Ex3_<이름>_<학번>”으로 하면 됨)




1. CPerson 클래스를 새로 생성한다. (10%)


-모든 변수명 지정 시 헝가리언 표기법을 사용한다 (예: CString m_strName).


-멤버 변수: ID, 성명 (FirstName & LastName), 전화번호, 주소


-멤버 함수:


디폴트 생성자, 파라메터로 입력받는 생성자,


GetID(), GetFirstName(), GetLastName(), GetPhone(), GetAddress(),


SetID(int), SetFirstName(CString), SetLastName(CString), SetPhone(CString), SetAddress(CString),


operator=(const CPerson& other), operator==(const CPerson& other)




2. 첨부된 CAccount 클래스에 다음을 추가한다.  (10%)


– 모든 변수명 지정 시 헝가리언 표기법을 사용한다.


– CAccount 클래스에 예금주이름을 (즉, CString m_strUserName) 없애고 대신 CPerson 형으로 (즉, CPerson m_User) 바꾼다. 그에 따른 Set, operator== 함수도 바꾼다.


– CAccount 클래스 Show 함수에 cout으로 출력하는 것을 TRACE로 바꾼다.


– CAccount 클래스에 이름(LastName + FirstName), 예금종류, 계좌번호, 잔고를 화면에 출력하는 void DrawText(CPaintDC& dc, int x, int y, int width, int height) 함수를 추가한다. dc는 dc.DrawText(HDC, LPCTSTR, int, LPRECT, UINT) 함수를 사용하는데 쓰일 것이고, x, y는 화면에 출력할 지점, width는 이름,예금종류, 계좌번호, 잔고를 출력할 사이 간격, height는 출력할 텍스트의 높이. DrawText는 http://msdn2.microsoft.com/en-us/library/ms533909.aspx 참고할 것.


– CAccount 클래스에 이름(LastName + FirstName), 예금종류, 계좌번호, 잔고를 CString의 배열(CString m_strAccountString[4])로 만들어서 넘겨주는 CString* GetAccountStringList() 함수를 추가한다.




3. Ex2의 AccountManager 클래스를 CAccountManager로 바꾼다. (10%)


– 모든 변수명 지정 시 헝가리언 표기법을 사용한다.


– 모든 함수에 Account 클래스 대신 CAccount 클래스로 바꿔준다.


– 모든 CAccount의 DrawText를 불러서 화면에 출력해 주는 void DrawText(CPaintDC& dc, int x, int y, int width, int height) 함수를 추가한다.




4. CChildView::OnPaint()에서 10개 정도의 CAccount의 상태를 리스트 모양으로 화면에 출력한다. (Line, Rectangle, DrawText를 이용할 것) (30%)




void CChildView::OnPaint()         // 예시


{


        CPaintDC dc(this);




        // 중간 생략 …




        CPerson dog, cat;


        dog.Set(1, “아지, “강, “041-550-4469”, “제과학관);


        cat.Set(2, “양이, “고, “041-550-4470”, “제과학관);


        CAccount account[10];


        account[0].Set(dog, “닷컴통장, “27394-27-46517”, 50000);


        account[1].Set(dog, “저축통장, “12394-47-46517”, 10000);


        account[2].Set(cat, “보통통장, “17394-72-46517”, 1000);


        account[3].Set(cat, “투자신탁, “67941-11-46517”, 2000);


        account[4].Set(dog, “보통통장, “12341-78-46517”, 2000);


        account[5].Set(cat, “닷컴통장, “98765-12-46517”, 2000);




        CAccountManager manager;


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


                manager.Add(account[i]);


        manager.Show();




        int width = 90;


        int height = 30;


        int numElement = manager.GetSize();




        // 회색배경 굵은선


        dc.SelectStockObject(LTGRAY_BRUSH);


        CPen penThick(PS_SOLID, 2, RGB(0, 0, 0));


        dc.SelectObject(&penThick);


        dc.Rectangle(CRect(10, 10, 10 + 4*width, 10 + height));


        // 굵은선으로 테이블 모양을 추가할 것


        // …




        // 보통선으로 가로선 더 추가할 것


        // …




        // 보통선으로 세로선 더 추가할것


        // …




        // 보통글자로 Title 출력


        CString strTitle[] = {


                “이름, “계좌종류, “계좌번호, “잔액


        };


        dc.SelectStockObject(SYSTEM_FONT);


        dc.SetBkMode(TRANSPARENT);


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


        {


                dc.DrawText(strTitle[i], strTitle[i].GetLength(),


                        CRect(10 + i*width, 10, 10 + (i + 1)*width, 10 + height),


                        DT_CENTER|DT_VCENTER|DT_SINGLELINE);


        }




        // Account 화면출력


        manager.DrawText(dc, 10, 40, width, height);


}




5. CChildView::OnPaint()에 Bitmap 그림을 화면에 출력한다. (10%)




[참고] 출력화면 예시


 사용자 삽입 이미지



연습문제 – Ex2

 연습문제 Ex2 (Due by 10/5 금 22시까지) – CString, CArray 연습
1079360745.zip

연습문제 Ex2 (Due by 10/5 금 22시까지)


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex2.zip으로 묶어서 낼 것. 보고서 (30%)




[연습문제]


1. 은행 계좌를 나타내는 Account 클래스에 CString 관련 내용을 추가한다. (25%)


예금주이름 (accountUser)을 CString 형으로 바꿈


– 계좌명 (accountName)를 CString 형으로 매개변수를 추가함 (계좌명의 예시: 닷컴통장, 저축예금, 보통예금, 투자신탁 등을 넣을 수 있음)


– Account의 생성자에 예금주 계좌명 처리 추가함


– Account에 계좌명을 반환하는 CString GetAccountName() const 함수를 추가함


– Account의 상태출력 멤버함수 void Show()에 계좌명 처리 추가함. cout 할 때 CString 형에 맞게 (LPCSTR) 연산자를 명시적으로 적용함.


– Account의 윈도우나 메시지 박스에 문자를 바로 출력할 수 있는 상태출력 멤버함수 CString GetAccount() const 함수를 추가함.  (출력 문자열 예시: “예금주: 박아무개 계좌명: 닷컴통장 계좌번호: 12345-72-34567 잔액: 5000”)




2. Account 목록을 CArray로 구성하고, Account를 입력, 출력을 관리하는 AccountManager 클래스를 작성한다. (25%)


– private 멤버로 CArray<Account, Account&> aList를 가짐


– 소멸자는 모든 Account를 리스트에서 제거함


– Add() 함수는 Account를 리스트에 추가함


– Remove(int i) 함수는 i번째 Account를 리스트에서 제거함


– RemoveAll() 함수는 모든 Account를 리스트에서 제거함


– GetSize() const 함수는 Account가 리스트에 몇 개 있는지를 알려줌


– Show() 함수는 모든 Account의 Show()를 사용하여 예금 내용을 출력함




3. main.cpp에서 AccountManager 목록에 10개의  Account를 추가하고 난 후, 다음을 수행한다. (20%)


– 먼저, 리스트에 몇 개의 Account가 있는지 출력. GetSize() 함수 사용


– 그리고, 리스트에 있는 모든 예금 내용(즉, 예금주 이름, 예금 계좌명, 계좌 번호, 잔액)을 출력. Show() 함수 사용


– 3번째 Account를 리스트에서 지우고 리스트에 있는 모든 예금 내용 (예금주 이름, 예금 계좌명, 계좌 번호, 잔고)을 출력. Remove(index)와 Show() 함수를 사용


– cin으로 예금주이름, 계좌명, 계좌번호, 잔액을 입력받고 새로운 Account를 생성 후, Account 클래스의 GetAccount() 멤버함수를 이용하여 새로 만든 은행계좌의 내용을 MessageBox(NULL, (LPCSTR)str, “CString 연습“, MB_OK)를 이용하여 출력.



연습문제 – Ex0 답안예시

Account.h


[#M_ more.. | less.. |#ifndef __ACCOUNT_H__
#define __ACCOUNT_H__

class Account
{
public:
 Account(char*, char*, int);
 Account();
 ~Account();
 void Show();
 void Deposit(int);
 void Withdraw(int);

private:
 char* accountUser;  // 예금주 이름
 char* accountNumber; // 계좌 번호
 int accountBalance;  // 잔액
};

#endif
_M#]

Account.cpp


[#M_ more.. | less.. | 
#include “Account.h”
#include <iostream>
using namespace std;

//생성자.
Account::Account()
{
 accountUser = new char[20];
 accountNumber = new char[20];
 accountBalance = 0;
 
 strcpy(accountUser,”수애”);
 strcpy(accountNumber, “27459-47-372671”);
 accountBalance = 2000;
}

//파라메터로 전달된 값으로 초기화.
Account::Account(char* user, char* number, int money)
{
 accountUser = new char[20];
 accountNumber = new char[20];
 accountBalance = 0;

 strcpy(accountUser, user);
 strcpy(accountNumber, number);
 accountBalance = money;
}

Account::~Account()
{
 delete [] accountUser;
 delete [] accountNumber;
}

//예금주의 이름, 계좌 번호, 잔액을 출력
void Account::Show()
{
 cout<<“이    름: “<< accountUser << endl;
 cout<<“계좌번호: “<< accountNumber << endl;
 cout<<“잔    액: “<< accountBalance <<endl << endl;
}


//전달인자로 전달된 금액을 입금
void Account::Deposit(int money)
{
 cout << money << “원을 입금하셨네요.” << endl;
 accountBalance +=  money;
 cout<<“잔    액: ” << accountBalance << endl << endl;
}

//전달인자로 전달된 금액을 출금
void Account::Withdraw(int money)
{
 cout << money <<“원을 출금하셨네요.”<< endl;
 accountBalance = accountBalance – money;
 cout<<“잔    액: “<< accountBalance << endl << endl;
}
_M#]

main.cpp


[#M_ more.. | less.. | 
#include <iostream>
#include “Account.h”

using namespace std;

int main(void)
{
 Account a;  // Default 객체를 생성
 a.Show();
 a.Deposit(1000);
 a.Withdraw(500);
 a.Show();

 Account b(“Park”, “27394-27-46517”, 50000); //인자로 전달해 준 값으로 객체를 생성
 b.Show();
 b.Deposit(1000);
 b.Withdraw(500);
 b.Show();

 // account c – 키보드로 입력받아서 객체 생성하고 입금, 출금, 출력할 것
 Account *c;
 // 키보드로 부터 입력받은 은행 계좌 예금주 이름, 계좌번호, 잔액을 넣어서 c를 새로 생성할 것
 char user[20], number[20];
 int balance;
 cout << “Enter account user name: “;
 cin >> user;
 cout << “Enter account account number: “;
 cin >> number;
 cout << “Enter account balance: “;
 cin >> balance;
 c = new Account(user, number, balance);
 // 키보드로 입력받은 은행계좌에 10000을 입금할 것
 c->Deposit(10000);
 // 키보드로 입력받은 은행계좌에 5000을 출금할 것
 c->Withdraw(5000);
 // 키보드로 입력받은 은행계좌 값을 출력할 것
 c->Show();

 // account d – 원하는 내용을 더 추가하거나 해서 테스트해볼 것
 Account *d;

 return 0;
}
_M#]

연습문제 – Ex1

연습문제 (Due by 9/28 금 22시까지)
– HelloSDK와 HelloMFC 예제 연습.
1289309192.zip

 

연습문제 Ex1 (Due by 9/28 금 22시까지)


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex1.zip으로 묶어서 낼 것. 보고서 (30%)






[연습문제]


1. 은행 계좌를 나타내는 클래스 Account의 멤버함수를 추가 정의하라. 멤버 함수는 다음과 같은 기능을 해야 한다. (20%)


– ~Account() 소멸자 함수


int GetBalance() const 함수는 예금 잔액 (accountBalance)을 돌려줌


– char* GetUser() const 함수는 예금주의 이름 (accountUser)을 돌려줌


– char* GetNumber() const 함수는 예금 계좌 번호 (accountNumber)을 돌려줌




2. AccountSDK.cpp 와 AccountMFC.cpp 에 “Hello” 출력 부분을 고쳐서 자신의 이름, 학번, 학부 (전공), 간략하게 자신을 소개하는 내용을 화면에 출력하는 프로그램을 작성하시오. (AccountSDK와 AccountMFC 프로젝트를 따로 만든다) (10%)








3. AccountSDK.cpp 와 AccountMFC.cpp 에 “연습문제 0의 main.cpp”에 있었던 Account a, b 객체를 생성하고 그 내용을 화면에 출력하는 프로그램을 작성하시오. (힌트: Account의 Show 함수를 사용할 수 없으므로, GetBalance, GetUser, GetNumber 함수를 통하여 값을 받은 후, sprintf를 사용해서 문자열로 만들어 준 후 그것을 TextOut 함수에 넘겨준다) (20%)










4.  키보드에서 ESC를 눌렀을 때 윈도우 프로그램이 종료될 수 있도록 AccountSDK.cpp 와 AccountMFC.cpp를 고쳐라. (힌트: DestroyWindow 함수를 활용한다) (20%)



연습문제 – Ex0

Optional 연습문제 (Due by 9/19 수 22시까지) Extra credit 5%

1172522253.zip

 

Optional 연습문제 Ex0 (Due by 9/19 수 22시까지) Extra credit 5%


-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC++ 2005 file, 보고서를 학번_이름_Ex0.zip으로 묶어서 낼 것. 보고서 (30%)




[연습문제]


1. 은행 계좌를 나타내는 클래스 Account를 정의하라. 예금주 이름, 계좌 번호 (문자열 사용), 잔액이 데이터 멤버로 포함되어야 한다. 멤버 함수는 다음과 같은 기능을 해야 한다. (30%)


– 객체를 생성하고 초기화


– Show() 함수는 예금주의 이름 (accountUser), 계좌 번호 (accountNumber), 잔액 (accountBalance)을 출력


– Deposit(int money) 함수는 전달인자로 전달된 금액을 입금


– Withdraw(int money) 함수는 전달인자로 전달된 금액을 출금






2. main.cpp 에 키보드로 입력받아 Account c 객체를 생성하고 입금, 출금, 잔금 출력하는 routine을 추가하라. (20%)








3. main.cpp 에 Account d 객체를 생성하고 본인이 더 테스트 해보고 싶은 내용을 넣는 routine을 추가하라. (20%)