본문 바로가기
안드로이드 스튜디오

수강신청 어플 만들기 - Android Studio with JAVA(2)

by s2jinny 2022. 12. 16.

(2편)시간표 삭제->강의 경쟁률, 학점 제한

 

1편은 전 블로그 자료 참조 https://s2jinny.tistory.com/17

 

수강신청 어플 만들기 - Android Studio with JAVA(1)

(1편)회원가입->로그인(중복체크)->공지사항->강의 목록->시간표 추가 및 중복체크->시간표 조회 (2편)시간표 삭제->강의 경쟁률, 학점 제한->강의 인기 순위 리스트->스플래시화면->어플 개발 오늘

s2jinny.tistory.com

 

모든 코드를 여기에 적기보다 일부 코드만 골라서 기록할 예정이고, 최대한 간단하게 설명할 예정.

완벽한 코드는 깃허브에 ~

 

1. 경쟁률

    coursePersonnel.setText("신청인원: "+courseList.get(i).getCourseRival()+"/"
            +courseList.get(i).getCoursePersonnel());

    int rate=((int) (((double)courseList.get(i).getCourseRival()*100/courseList.get(i).getCoursePersonnel())+0.5));
  
    courseRate.setText("경쟁률: "+rate+"%");
    if(rate<20){
        courseRate.setTextColor(parent.getResources().getColor(R.color.colorSafe));
    }
    else if(rate<=50){
        courseRate.setTextColor(parent.getResources().getColor(com.google.android.material.R.color.design_default_color_primary));
    }
    else if(rate<=100){
        courseRate.setTextColor(parent.getResources().getColor(R.color.colorDanger));
    }
    else if(rate<=150){
        courseRate.setTextColor(parent.getResources().getColor(R.color.colorWarning));

    }
    else{
        courseRate.setTextColor(parent.getResources().getColor(R.color.colorRed));
    }

}

rate를 만들어서 경쟁률을 나타낸다. 현재 강의를 등록한 사람들 / 전체 인원의수로  0.5 더해서 소수점 반올림 됨 rate에 경쟁률이 들어간다. 20보다 작으면 안전한 색(초록)을, 50보다 작거나 같으면 보라색을, 100보다 작으면 핑크색을, 150보다 크다면 빨간색이 들어가도록 함.

 

다음은 StatisticsCourseListAdapter 의 한 부분이다. (삭제 버튼 클릭시 )

  Button deleteButton=(Button)v.findViewById(R.id.deleteButton);
    deleteButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if (success) {
                            AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
                            AlertDialog dialog = builder.setMessage("강의가 삭제되었습니다.")
                                    .setPositiveButton("확인", null)
                                    .create();
                            dialog.show();
                            StatisticsFragment.totalCredit -= courseList.get(i).getCourseCredit();
                            StatisticsFragment.credit.setText(StatisticsFragment.totalCredit+"학점");
                            courseList.remove(i);
                            notifyDataSetChanged();

                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
                            AlertDialog dialog = builder.setMessage("강의 삭제 실패했습니다.")
                                    .setNegativeButton("다시시도", null)
                                    .create();
                            dialog.show();

                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            };
            DeleteRequest deleteRequest = new DeleteRequest(userID, courseList.get(i).getCourseID() + "", responseListener);
            RequestQueue queue = Volley.newRequestQueue(parent.getActivity());
            queue.add(deleteRequest);
        }
    });
    return v;
}

2. 시간표 강의 삭제

삭제 버튼 클릭 시  이 부분으로 삭제해줌.

StatisticsFragment.totalCredit -= courseList.get(i).getCourseCredit();
StatisticsFragment.credit.setText(StatisticsFragment.totalCredit+"학점");
courseList.remove(i);
notifyDataSetChanged();

requestQueue로 서버와 연결 ! (DeleteRequest.java 만듦)

DeleteRequest deleteRequest = new DeleteRequest(userID, courseList.get(i).getCourseID() + "", responseListener);
RequestQueue queue = Volley.newRequestQueue(parent.getActivity());
queue.add(deleteRequest);

 

 

3. 학점 제한 

Button addButton=(Button)v.findViewById(R.id.addButton);
addButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {

        boolean validate =false; //현재 강의를 추가할수잇는지없는지
        validate=schedule.validate(courseList.get(i).getCourseTime());
        //현재 추가하려는 강의에 시간표를 넣음으로서 타당성을 검증함.

        //String userID = MainActivity.userID; //회원아이디 가져옴
        if(!alreadyln(courseIDList,courseList.get(i).getCourseID())){
            //내가 신청했던 강의 아이디속에서 현재 신청하려는 강의 아이디가 포함되어있다면?
            AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
            AlertDialog dialog=builder.setMessage("이미 추가한 강의입니다.")
                    .setPositiveButton("다시시도",null)
                    .create();
            dialog.show();
        }
        //학점 제한
        else if(totalCredit+courseList.get(i).getCourseCredit()>24){
            //학점이 24학점 이상이라면
            AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
            AlertDialog dialog=builder.setMessage("24학점을 초과할 수 없습니다.")
                    .setNegativeButton("다시시도",null)
                    .create();
            dialog.show();

        }

        else if(validate==false){
            AlertDialog.Builder builder=new AlertDialog.Builder(parent.getActivity());
            AlertDialog dialog=builder.setMessage("시간표가 중복됩니다.")
                    .setNegativeButton("다시시도",null)
                    .create();
            dialog.show();
        }
        else{
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if (success) {
                            AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
                            AlertDialog dialog = builder.setMessage("강의가 추가되었습니다.")
                                    .setPositiveButton("확인", null)
                                    .create();
                            dialog.show();
                            //강의 직접 추가하기 해당 강의 번호 등록.
                            courseIDList.add(courseList.get(i).getCourseID());
                            schedule.addSchedule(courseList.get(i).getCourseTime());

                            totalCredit+=courseList.get(i).getCourseCredit();
                            //토탈 크리딕에 현재 추가한 학점을 추가한다.

                        }
                        else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(parent.getActivity());
                            AlertDialog dialog = builder.setMessage("강의추가에 실패했습니다.")
                                    .setNegativeButton("확인", null)
                                    .create();
                            dialog.show();

                        }

기존의 courseListAdapter 에 추가버튼 부분에 24 학점 이상이면 강의 추가 할 수 없게 만듦.

 

24학점이하이면 현재 강의 학점을 totalCredit(학점)에 추가하는 코드

totalCredit+=courseList.get(i).getCourseCredit();

 

!!다음 계속3편...(강의 인기 순위 리스트->스플래시화면)!!