package exam;
import java.util.Scanner;
public class AbsQuiz {
public static void main(String[] args) {
// TODO Auto-generated method stub
int select;
int data;
Scanner sc = new Scanner(System.in);
MyQueue myQ = new MyQueue();
MyStack myS = new MyStack()
;
Memory mem = null;
do {
System.out.println("1. Stack\t2.Queue\t3.End");
select = sc.nextInt();
if(select == 1) { mem = myS; }
else if(select ==2) { mem = myQ; }
else break;
do {
System.out.println("1.Push\t2.Pop\t3.stop");
select = sc.nextInt();
if(select == 1) {
System.out.println("숫자를 입력하세요.");
mem.push(sc.nextInt());
}
else if(select == 2) {
data = mem.pop();
if(data!=-1) {
System.out.println(data);
}
else if(data == -1)
{
System.out.println("가 발생했습니다.");
}
}
else {break;}
}while(true);
}while(true);
}
}
package exam;
public class MyStack extends Memory {
@Override
public int pop() {
if(end<=0) {
System.out.print("underflow");
return -1;
}
else {
save=num[--end];
return save;
}
}
}
package exam;
public class MyQueue extends Memory {
private int front;
@Override
public int pop() {
if(front>4) {
System.out.print("overflow");
return -1;
}
else {
save = num[front++];
return save;
}
}
}
package exam;
public abstract class Memory {
protected int[] num ;
protected int end;
protected int save;
public Memory() {
num = new int[5];
end =0;
}
public void push(int i) {
if(end >4) {
System.out.println("overflow가 발생했습니다");
}
else {
num[end++] = i;
}
}
public abstract int pop();
}
정해진 수 이상(위 예시에선 5개) 숫자를 입력하거나 입력한 것 보다 많이 출력을 하게 되면 overflow 혹은 underflow가 발생했음을 알려준다.
package InterManage;
public interface ForInter {
int ask(int numId);
void add(int i);
void correct();
void del();
void searchIndiv(int i);
void searchEvery();
void manage(String grade, int i);
}
package InterManage;
import java.util.Scanner;
public class Function implements ForInter {
private Permanent pm = new Permanent();
private TimeWorker time = new TimeWorker();
private TermWorker term;
private int select;
public Function() {
Permanent pm = new Permanent();
TimeWorker time = new TimeWorker();
TermWorker term = new TermWorker();
}
Scanner sc1 = new Scanner(System.in);
public int getId(int i) {
return pm.getId(i);
}
public int getPw(int i) {
return pm.getPw(i);
}
public String getGrade(int i) {
return pm.getGrade(i);
}
public int ask(int numId) { //로그인
int numChk, numPw = 0;
int i=0;
int chk =0;
int answer = 0;
do {
for(i=0; i<100 ;i++) { //사원번호가 존재하는지 조회
numChk = getId(i);
if(numId == numChk) { //사원번호가 존재하면 그 번호를 저장
chk =i;
break;
}
}
if(chk >0) { //사원번호가 존재할때, 암호를 묻는 단계
System.out.println("암호를 입력하세요");
do {
numPw = sc1.nextInt();
if(numPw != getPw(chk)) {
System.out.println("틀린 비밀번호 입니다. 다시 입력하세요");
System.out.println("멈추시러면 0을 입력하세요");
}
else if(numPw==0) { break;} //0을 눌렀을때 멈춤
}while(numPw !=getPw(chk));
}else {
System.out.println("틀린 사번입니다");
chk++;
} //존재하지 않는 사번을 입력하였을때
}while(chk==0);
if( numPw == getPw(chk)) { answer ++;}
return answer; //비밀번호가 일치하면 1이 일치하지 않으면 0이 반환된다.
}
public void add(int i) {
int num;
System.out.println("추가할 사원 번호를 입력하세요");
num = sc1.nextInt();
pm.setId(num,num);
System.out.println("이름을 입력해 주세요");
pm.setName(num,sc1.next());
System.out.println("직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(num,pm.getTxt((sc1.nextInt())));
System.out.println("비밀번호를 입력하세요");
pm.setPw(num, sc1.nextInt());
} //관리자 클래스가 입력된 값을 수정할 수 있음
public void correct() { //기본 값들 외에 급여, 근무시간 등을 관리자들이 수정할 수 있음.
int numId,select;
System.out.println("수정할 사람의 사번을 입력해주세요");
numId = sc1.nextInt();
if (pm.getGrade(numId)=="비정규직") { //비정규직 관련항목
System.out.println("수정할 사안을 입력해주세요");
System.out.println("1. 이름, 2. 직급, 3. 급여, 4. 근무날짜, 5. 근무시간");
select = sc1.nextInt();
switch(select) {
case 1:
System.out.println("수정할 이름을 입력해 주세요");
pm.setName(numId,sc1.next());
break;
case 2:
System.out.println("수정할 직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(numId,pm.getTxt((sc1.nextInt())));
break;
case 3:
System.out.println("급여를 입력해 주세요.");
pm.setSalary(numId,sc1.nextInt());
case 4:
System.out.println("근무날짜를 선택해주세요");
System.out.println("1. sun, 2.mon, 3.tue, 4. wed, 5.thur, 6.fri, 7.sat");
time.setDay(numId,sc1.nextInt());
case 5:
System.out.println("근무시간을 입력해주세요");
time.setTime(numId, sc1.next());
break;
}
}
else { //정규직 관련항목
System.out.println("수정할 사안을 입력해주세요");
System.out.println("1. 이름, 2. 직급, 3. 급여, 4. 보너스");
select = sc1.nextInt();
switch(select) {
case 1:
System.out.println("수정할 이름을 입력해 주세요");
pm.setName(numId,sc1.next());
break;
case 2:
System.out.println("수정할 직급을 입력해 주세요.");
System.out.println("1.과장, 2.팀장, 3.대리, 4.사원, 5. 비정규직");
pm.setGrade(numId,pm.getTxt((sc1.nextInt())));
break;
case 3:
System.out.println("급여를 입력해 주세요.");
pm.setSalary(numId,sc1.nextInt());
case 4:
System.out.println("보너스를 입력해 주세요.");
pm.setBonus(numId,sc1.nextInt());
break;
}
}
}
public void del() { //삭제를 할때.
int numId;
System.out.println("삭제할 사람의 사번을 입력해주세요");
numId = sc1.nextInt();
pm.setName(numId, null);
pm.setGrade(numId, null);
pm.setId(numId, 0);
}
public void searchIndiv(int i) { //개인의 급여 내역을조회
if(pm.getGrade(i)=="비정규직") {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t"+"직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.print("\t근무날짜 : "+time.getDay(i));
System.out.println("\t근무시간 : "+time.getTime(i));
}else {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.println("\t보너스 : "+pm.getBonus(i));
}
}
public void searchEvery() {
for (int i = 0; i<100;i++) {
if(pm.getName(i) != null) { //비어있는 사번은 출력하지 않음.
if(pm.getGrade(i)=="비정규직") {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t"+"직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.print("\t근무날짜 : "+time.getDay(i));
System.out.println("\t근무시간 : "+time.getTime(i));
System.out.println("----------------------------------------");
}else {
System.out.print("이름 : "+ pm.getName(i));
System.out.print("\t직급 : "+ pm.getGrade(i));
System.out.print("\t기본급 : "+pm.getSalary(i));
System.out.println("\t보너스 : "+pm.getBonus(i));
System.out.println("----------------------------------------");
}
}
}
}
public void manage(String grade,int i) {
if (grade.equals("과장")||grade.equals("팀장")){
System.out.println("작업을 선택해 주세요");
System.out.println("1. 추가, 2. 수정, 3. 삭제, 4. 개별 조회, 5. 전체 조회");
select = sc1.nextInt();
switch (select) {
case 1 : { add(i); }break;
case 2 : { correct(); }break;
case 3 : { del(); }break;
case 4 : {
System.out.println("검색하려는 사람의 사번을 입력하세요");
i = sc1.nextInt();
searchIndiv(i); }break;
case 5 : { searchEvery(); }break;
default : System.out.println("wrong");
}
}else {
searchIndiv(i); //관리자가 아닌 사람이 로그인 하였을때는 본인의 급여 내역이 조회됨.
}
}
}
지난번에 작성한 급여관리 프로그램의 function 부분의 함수들을 interface를 활용해 의무적으로 Override를 하게 하였다.