숙제는 self. 질문은 상세하고 부분적으로. 학습이 과다하게 필요할땐 학원이나 다른 강좌 사이트를 참조 바랍니다.
ㄴㅂㄴㅂ 님이 쓰신 글 :
: 1. 사원에 관한 기본 자료는 다음과 같으며, employee.dat 파일에 저장되어 있다.
: id , name , ssn , hire_date
:
: 2. 사원에 대한 봉급은 다음의 레코드 구조를 갖는 급여대장(payroll.2012.09) 파일에 저장한다.
: id , salary_class(호봉) , pay(봉급)
:
: 3. 사원의 호봉은 아래의 산식에 따라 산정하고, 봉급은 호봉별로 급급표에 의해 계산하며, 지급 기준일은 25일이다.
:
: 1) 호봉 계산 : 입사와 동시에 1호봉을 부여하고, 1년에 1호봉씩 올라간다.
: 예 ) 입사일 : 2001 .3 . 15 , 급여계산일: 2007 . 12. 25인 경우에 호봉은 7호봉이 된다.
: 2) 봉급표 (단위: 만원)
: 호봉 기본급
: 1 120
: 2 130
: 3 140
: 4 150
: 5 160
: 6 170
: 7 180
: 8 190
: 9 200
: 10 210
: 11 220
: 12 230
: 13 240
: 14 250
: 15 260
: 16 270
: 17 280
: 18 290
: 19 300
: 20이상 300
:
: 4. 자료 출력 형식은 다음과 같다.
:
: xxxx년 xx월 급여대장
: 사번 성명 주민번호 입사일 호봉 봉급 비고
: xxx xxx xxxx x
<
<
xxx.xx.xx xx xxx,xxx
:
: [제한 조건]
: 1. 자료 입출력을 담당하는 클래스와 봉급 계산을 담당하는 클래스는 별도로 독립시킬 것
: 2. 그 외의 클래스는 필요한 만큼 만들 것.
:
: [참고 사항]
: 1. main() 함수는 다음의 골격을 참고하라.
:
: int main(void)
: {
: //get year & month
: // read data for payroll from employee.dat
: // compute payment
: // save payroll
:
: 이게 문제입니다.
: =============================================================================================================
:
: 지금까지 코딩한 자료입니다.
: 그런데 class step과 class list에 있는 변수들을 서로 참조를 하려고 하는데 어떻게 해야하나요??
: 전방선언을 하면된다는데 어떻게 해야되는지 잘 모르겠습니다.....
:
:
: #include <iostream>
: #include <fstream>
: #include <string>
:
: using namespace std;
:
: int i; // employee.dat파일의 라인수 저장하기위한 전역변수 //
:
: void head()
: {
: cout<<" 2012년9월 급여대장 "<<endl;
: cout<<"사번"<<" 성명"<<" 주민번호 "<<" 입사일 "<<" 호봉 "<<" 봉급 "<<" 비고 "<<endl;
: }
: //id, 이름, 주민번호, 입사일, 호봉, 급여를 선언하기 위한 구조체//
: typedef struct information
: {
: int id; //id
: string name; //이름
: string ssn; //주민번호
: string hire_date; //입사일
: int step; //호봉
: int pay[100]; //봉급
: int year;
: int month;
: int day;
: }info;
:
:
: class step; //step 클래스를 전방선언
:
: // 파일 입출력 클래스//
: class list //파일 출력
: {
: private:
: info info[100];
: step getstep;
: int i;
: int num;
: int carrer;
: step don;
:
: public:
: int getyear[100]; //입사년도
: int getmonth[100]; //입사월
: int getday[100]; //입사일
:
: void open();
:
: void save();
:
: friend class step;
: };
:
:
: //봉급 계산을 위한 클래스//
: class step //봉급계산
: {
: private:
: int pay[100];
: int carrer;
: int n;
: int grade_year[20];
: int grade_month[20];
: int grade_day[20];
: list people;
: info info;
:
:
: public:
: int computestep()
: {
: // 입사년도별 호봉을 계산하기 위한 for문//
: for(n=0 ; n
20)
: carrer=19;
:
: // step.salaryclass(carrer); //봉급 계산
: }
: return carrer;
: }
: void salaryclass(int carrer)
: {
: int i=0;
: int money=120;
: int paycheck;
: for(i=0 ; i<19 ; i++) //호봉별 월급 계산
: {
: pay[i]=money;
: money+=10;
: }
: for(i=19 ; i<50 ; i++)
: pay[i]=300;
: if(pay[carrer]<1)
: {
: cout<<"잘못된 입력"<>info[num].id >> info[num].name >> info[num].ssn >> info[num].hire_date;
: const char* p2 = info[num].hire_date.c_str();
: sscanf(p2,"%d.%d.%d", &getyear[num],&getmonth[num],&getday[num]); // string함수인 hire_date를 int형으로 변환시킨 후 년도, 월, 일로 나눔
:
: num++;
: if(fileopen.eof())
: break;
: }
:
: for(i=0 ; i>info.year;
: cout<>info.month;
:
: head(); //자료출력 형식
:
: list people;
: step step;
:
: people.open(); //read data for payroll from employee.dat
:
:
:
:
:
: people.save();
:
: return 0;
: }