By GokiSoft.com| 19:20 17/04/2020|
Java Basic

Phần mềm quản lý trường học - giảng dạy

OOP
- Hướng dẫn cách phân tích dự án
- Class Object
- Tính chất trong lập trình OOP
=> Tính chất bao đóng là gì?
=> Tính kế thừa là gì?
=> Tính đa hình là gì?
=> Tính trừu tượng

Giải thuật trong lập trình
- Ví dụ căn bản.
===========================================
Yêu cầu: Xây dựng phần mềm quản lý trường học.

Chúng ta cần phải làm gì?
- Làm rõ yêu cầu.
=> Quản lý giảng viên
=> quản lý lớp học
=> Quản lý sinh viên
=> Quản lý môn học
=> Quản lý chấm công
=> Quản lý lương
=> Quản lý dụng cụ
=> Quản lý phong học
=> Quản lý lập lịch dạy
=> ...
- Pick 1 nhóm để triển khai trong dự
- Nhóm chức năng cần phát triển
=> Quản lý giảng viên
=> Quản lý sinh viên
=> Môn học
=> Lớp học
=> Lịch học
=> Điểm danh

- Học cách break chức năng trong chương trình
1. Basic functions => input data
2. Report
3. Phần quyên chức năng.
=> Giải pháp trước
=> Kiến trúc phần mềm rõ ràng.

============================================
========== Yêu cầu phần mềm ================
============================================
- Thực hiện các basic functions
Basic functions
=> Thêm, sửa, xoá
1. Thêm giản viên
2. Thêm sinh viên
3. Thêm môn học
4. Thêm lớp học
5. Lịch học
6. Điểm danh
7. Hiển thị thông tin điểm danh của học viên theo 1 ngày cụ thể
8. Thoát chương trình

- Phân tích class digram (Class Object)
- Student
- rollNo => OK
- fullname, birthday, gender, address => OK
- Subject
- tên môn học => OK
- mã lớp => OK
- Teacher
- Tên, birthday, address, gender => OK
- Schedule
- schedule_id
- Môn dạy
- Lớp dạy
- Ngày bắt đầu
- Ngày kết thúc
- id teacher => Trần Văn Điệp
- Khung giờ dạy (tối 2, 4, 6)
- thời gian dạy (18h - 22h)
- Attendence
- rollNo
- schedule_id
- status (PRESENT, ABSENT, PA)
- created_at (thời gian điểm danh)
- updated_at ()
- ClassRoom
- Mã lớp
- Tên lớp
- ClassGroup
- Mã lớp
- Mã sinh viên (rollNo)
- Thành phần thêm trong chương trình
- Main class
- DataMgr => quản lý tất cả các đối tượng trong chương trinh (design pattern => singleton)
- MenuController
=> functions vào đây

Yêu cầu
- Thiết kế các class object theo phân tích trên
- Tạo hàm tạo, getter/setter, nhập, hiển thị cho từng class object
- Triển khai các chức năng cho menu chương trình trên

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

trung [C1907L]
trung

2020-04-16 17:07:59



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Teacher {
    String name,birthday,address;
    int gender,id;

    public Teacher() {
    }

    public Teacher(int id, String name, String birthday, String address, int gender) {
        this.id = id;
        this.name = name;
        this.birthday = birthday;
        this.address = address;
        this.gender = gender;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getBirthday() {
        return birthday;
    }

    public String getAddress() {
        return address;
    }

    public int getGender() {
        return gender;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }
    
    public void input() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input id");
        id = Integer.parseInt(inp.nextLine());
        System.out.println("Input name");
        name = inp.nextLine();
        System.out.println("Input birthday");
        birthday = inp.nextLine();
        System.out.println("Input address");
        address = inp.nextLine();
        System.out.println("Input gender");
        gender = Integer.parseInt(inp.nextLine());        
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Subject {
    String subjectName;
    int subjectId;

    public Subject() {
    }
    
    public Subject(int subjectId, String subjectName) {
        this.subjectId = subjectId;
        this.subjectName = subjectName;
    }

    public int getSubjectId() {
        return subjectId;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectId(int subjectId) {
        this.subjectId = subjectId;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }
    
    public void input() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input subject");
        System.out.println("subject name");
        subjectName = inp.nextLine();
        System.out.println("subject id");
        subjectId = Integer.parseInt(inp.nextLine());
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Student {
    String rollNo,fullName,Address;
    int gender;

    public Student() {
    }

    public Student(String rollNo, String fullName, String Address, int gender) {
        this.rollNo = rollNo;
        this.fullName = fullName;
        this.Address = Address;
        this.gender = gender;
    }

    public String getRollNo() {
        return rollNo;
    }

    public String getFullName() {
        return fullName;
    }

    public String getAddress() {
        return Address;
    }

    public int getGender() {
        return gender;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public void setAddress(String Address) {
        this.Address = Address;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }
    
    public void input() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input student");
        System.out.println("Roll no");
        rollNo = inp.nextLine();
        System.out.println("full name");
        fullName = inp.nextLine();
        System.out.println("address");
        Address = inp.nextLine();
        System.out.println("gender");
        gender = Integer.parseInt(inp.nextLine());
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Course {
    int id;
    String name;

    public Course() {
    }

    public Course(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    public void input() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input course");
        System.out.println("couse name");
        name = inp.nextLine();
        System.out.println("course id");
        id = Integer.parseInt(inp.nextLine());
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.List;
import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Schedule {
    static List<Teacher> lstTeachers;
    static List<Subject> lstSubjects;
    static List<Course> lstCourses;

    
    
    int scheduleId;
    int teacherId;
    int subjectID;
    int courseId;
    int timeFrame;
    int timeSched;
    String startDate;
    String endDate;
    
//    // 0 -> sáng
//    // 1 -> chiều
//    // 2 -> tối
//    int timeFrame;
//    
//    // 0 -> 2,4,6
//    // 1 -> 3,5,7
//    int timeSched;
//    

    public Schedule() {
    }

    public Schedule(int scheduleId, int teacherId, int subjectID, int courseId, int timeFrame, int timeSched, String startDate, String endDate) {
        this.scheduleId = scheduleId;
        this.teacherId = teacherId;
        this.subjectID = subjectID;
        this.courseId = courseId;
        this.timeFrame = timeFrame;
        this.timeSched = timeSched;
        this.startDate = startDate;
        this.endDate = endDate;
    }

    public int getScheduleId() {
        return scheduleId;
    }

    public int getTeacherId() {
        return teacherId;
    }

    public int getSubjectID() {
        return subjectID;
    }

    public int getCourseId() {
        return courseId;
    }

    public int getTimeFrame() {
        return timeFrame;
    }

    public int getTimeSched() {
        return timeSched;
    }

    public String getStartDate() {
        return startDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setScheduleId(int scheduleId) {
        this.scheduleId = scheduleId;
    }

    public void setTeacherId(int teacherId) {
        this.teacherId = teacherId;
    }

    public void setSubjectID(int subjectID) {
        this.subjectID = subjectID;
    }

    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }

    public void setTimeFrame(int timeFrame) {
        this.timeFrame = timeFrame;
    }

    public void setTimeSched(int timeSched) {
        this.timeSched = timeSched;
    }

    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }
    
    static void setDependency(List<Teacher> _lstTeachers,
        List<Subject> _lstSubjects,List<Course> _lstCourses) {
        lstTeachers = _lstTeachers;
        lstSubjects = _lstSubjects;
        lstCourses = _lstCourses;
    }
    
    public boolean input() {
        if (lstSubjects.isEmpty() || lstSubjects.isEmpty() ||
                lstCourses.isEmpty()) {
            System.out.println("Please input more information");
            return false;
        }
        System.out.println("Input schedule info");
        Scanner inp = new Scanner(System.in);
        
        System.out.println("Please input teacher_id");
        int input = Integer.parseInt(inp.nextLine());        
        //validate
        int i = 0;
        for (; i < lstTeachers.size(); i++) {
            if (input == (lstTeachers.get(i).getId())) break;
        }
        if (i == lstTeachers.size()) {
            System.out.println("Not a valid teacher Id");
            return false;
        }
        teacherId = input;
        //end validate
        
        System.out.println("Please input subject_id");
        input = Integer.parseInt(inp.nextLine());
        //validate
        i = 0;
        for (; i < lstSubjects.size(); i++) {
            if (input == (lstSubjects.get(i).getSubjectId())) break;
        }
        if (i == lstSubjects.size()) {
            System.out.println("Not a valid subject Id");
            return false;
        }
        subjectID = input;
        //end validate
        
        System.out.println("Please input course Id");
        input = Integer.parseInt(inp.nextLine());
        //validate
        i = 0;
        for (; i < lstCourses.size(); i++) {
            if (input == (lstCourses.get(i).getId())) break;
        }
        if (i == lstCourses.size()) {
            System.out.println("Not a valid course Id");
            return false;
        }
        courseId = input;
        //end validate
        
        System.out.println("Input time frame");
        System.out.println("0 -> morning");
        System.out.println("1 -> afternoon");
        System.out.println("2 -> evening");
        timeFrame = Integer.parseInt(inp.nextLine());
        
        System.out.println("Input time schedule");
        System.out.println("0 -> 2 4 6");
        System.out.println("1 -> 3 5 7");
        timeSched = Integer.parseInt(inp.nextLine());
        
        System.out.println("Input start Date");
        startDate = inp.nextLine();
        
        System.out.println("Input end Date");
        endDate = inp.nextLine();
        return true;
    }
    
    
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.List;
import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Attendance {
    static List<Student> lstStudents;
    String rollNo;
    String schedule_id;
    STATUS status;
    static enum STATUS {
        PRESENT,
        ABSENT,
        PA
    }
    String created_at, updated_at;

    public Attendance() {
    }

    public Attendance(String rollNo, String schedule_id, STATUS status, String created_at, String updated_at) {
        this.rollNo = rollNo;
        this.schedule_id = schedule_id;
        this.status = status;
        this.created_at = created_at;
        this.updated_at = updated_at;
    }

    public STATUS getStatus() {
        return status;
    }

    public void setStatus(STATUS status) {
        this.status = status;
    }

    public String getRollNo() {
        return rollNo;
    }

    public String getSchedule_id() {
        return schedule_id;
    }

    public String getCreated_at() {
        return created_at;
    }

    public String getUpdated_at() {
        return updated_at;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public void setSchedule_id(String schedule_id) {
        this.schedule_id = schedule_id;
    }

    public void setCreated_at(String created_at) {
        this.created_at = created_at;
    }

    public void setUpdated_at(String updated_at) {
        this.updated_at = updated_at;
    }
    
    static void setDependency(List<Student> _lstStudents) {
        lstStudents = _lstStudents;
    }
    
    public boolean input() {
        if (lstStudents == null) {
            System.out.println("Please enter more information");
            return false;
        }
        Scanner inp = new Scanner(System.in);
        System.out.println("Input student roll number");
        String input = inp.nextLine();
        if (validateStudent(input)) rollNo = input;
        else {
            System.out.println("Not a valid roll number");
            return false;
        }
        
        System.out.println("Input status");
        System.out.println("1. present");
        System.out.println("2. absent");
        System.out.println("3. pa");
        System.out.println("Choose: ");
        int choose = inp.nextInt();
        
        switch(choose) {
            case 1:
                status = STATUS.PRESENT;
                break;
            case 2:
                status = STATUS.ABSENT;
                break;
            default:
                status = STATUS.PA;
                break;
        }
        
        System.out.println("Input created at");
        created_at = inp.nextLine();
        System.out.println("Input updated at");
        updated_at = inp.nextLine();
        return true;
    }
    
    private boolean validateStudent(String _rollNo) {
        if (lstStudents == null) return false;
        return lstStudents.stream().anyMatch((student) -> (student.getRollNo().equals(_rollNo)));
    }

    @Override
    public String toString() {
        return "Attendance{" + "rollNo=" + rollNo + ", schedule_id=" + schedule_id + ", status=" + status + ", created_at=" + created_at + ", updated_at=" + updated_at + '}';
    }
    
    public void output() {
        System.out.println(toString());
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author prdox
 */
public class DataMgr {
    List<Teacher> lstTeachers;
    List<Student> lstStudents;
    List<Subject> lstSubjects;
    List<Course> lstCourses;
    List<Schedule> lstSchedules;
    List<Attendance> lstAttendances;
    
    private static DataMgr instance = null;
    
    private DataMgr() {
        lstTeachers = new ArrayList<>();
        lstStudents = new ArrayList<>();
        lstSubjects = new ArrayList<>();
        lstCourses = new ArrayList<>();
        lstSchedules = new ArrayList<>();
        lstAttendances = new ArrayList<>();
    }
    
    public synchronized static DataMgr getInstance() {
        if (instance ==  null) {
            instance = new DataMgr();
        }
        return instance;
    }
    
    public void setDependency() {
        Schedule.setDependency(lstTeachers, lstSubjects, lstCourses);
        Attendance.setDependency(lstStudents);
    }
    
    //instance.getListSchedule.add(new Schedule()->input)

    public List<Teacher> getLstTeachers() {
        return lstTeachers;
    }

    public List<Student> getLstStudents() {
        return lstStudents;
    }

    public List<Subject> getLstSubjects() {
        return lstSubjects;
    }

    public List<Course> getLstCourses() {
        return lstCourses;
    }

    public List<Schedule> getLstSchedules() {
        return lstSchedules;
    }

    public List<Attendance> getLstAttendances() {
        return lstAttendances;
    }
    

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package qlTruongHoc;

import java.util.Scanner;

/**
 *
 * @author prdox
 */
public class Main {
    public static void main(String[] args) {
        Scanner inp = new Scanner(System.in);
        DataMgr.getInstance().setDependency();
        int choice;
        do {
            showMenu();
            choice = Integer.parseInt(inp.nextLine());            
            switch(choice) {
                case 1:
                    addTeacher();
                    break;
                case 2:
                    addStudent();
                    break;
                case 3:
                    addSubject();
                    break;
                case 4:
                    addCourse();
                    break;
                case 5:
                    addSchedule();
                    break;
                case 6:
                    addAttendance();
                    break;
                case 7:
                    showAttending();
                    break;                
            }
        } while (choice != 8); 
    }
    
    static void showMenu() {
        System.out.println("1. Thêm giảng viên");
        System.out.println("2. Thêm sinh viên");
        System.out.println("3. Thêm môn học");
        System.out.println("4. Thêm lớp học");
        System.out.println("5. Lịch học");
        System.out.println("6. Điểm danh");
        System.out.println("7. Hiển thị thông tin điểm danh của học viên theo 1 ngày cụ thể");
        System.out.println("8. Thoát chương trình");
        System.out.println("Choose:");
    }
    
    static void addTeacher() {
        Teacher newTeacher = new Teacher();
        newTeacher.input();
        DataMgr.getInstance().getLstTeachers().add(newTeacher);
    }
    
    static void addStudent() {
        Student newStudent = new Student();
        newStudent.input();
        DataMgr.getInstance().getLstStudents().add(newStudent);
    }
    
    static void addSubject() {
        Subject newSubject = new Subject();
        newSubject.input();
        DataMgr.getInstance().getLstSubjects().add(newSubject);
    }
    
    static void addCourse() {
        Course newCourse = new Course();
        newCourse.input();
        DataMgr.getInstance().getLstCourses().add(newCourse);
    }
    
    static void addSchedule() {
        Schedule newSchedule = new Schedule();
        if (newSchedule.input()) DataMgr.getInstance().getLstSchedules().add(newSchedule);
    }
    
    static void addAttendance() {
        Attendance newAttendance = new Attendance();
        if (newAttendance.input()) DataMgr.getInstance().getLstAttendances().add(newAttendance);
    }
    
    static void showAttending() {
        Scanner inp = new Scanner(System.in);
        System.out.println("Input date");
        String date = inp.nextLine();
        boolean found = false;
        for (Attendance item : DataMgr.getInstance().getLstAttendances()) {
            if (item.getCreated_at().equalsIgnoreCase(date)){
                item.output();
                found = true;
                break;
            }
        }
        if (! found) System.out.println("Not found");
    }
    
}



Nguyễn Hoàng Anh [C1907L]
Nguyễn Hoàng Anh

2020-04-16 14:03:32



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Attendence implements IInputOutput {

    String rollNo, ScheduleID, CreateAt;

    enum STATUS {
        PRESENT, ABSENT, PA
    }
    STATUS status;

    public String getRollNo() {
        return rollNo;
    }

    public Attendence() {
    }

    public Attendence(String rollNo, String ScheduleID, String CreateAt, STATUS status) {
        this.rollNo = rollNo;
        this.ScheduleID = ScheduleID;
        this.CreateAt = CreateAt;
        this.status = status;
    }

    public String getScheduleID() {
        return ScheduleID;
    }

    public String getCreateAt() {
        return CreateAt;
    }

    public STATUS getStatus() {
        return status;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public void setScheduleID(String ScheduleID) {
        this.ScheduleID = ScheduleID;
    }

    public void setCreateAt(String CreateAt) {
        this.CreateAt = CreateAt;
    }

    public void setStatus(STATUS status) {
        this.status = status;
    }

    @Override
    public void input() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter attendence information");
        System.out.println("Student rollNo : ");
        rollNo = input.nextLine();

        Boolean flag1 = false;
        for (int i = 0; i < DataMgr.getInstance().getStudentList().size(); i++) {
            if (DataMgr.getInstance().getStudentList().get(i).rollNo.equals(rollNo)) {
                flag1 = true;
            }
        }
        if (flag1 == false) {
            System.out.println("Student rollNo is not exists");
            return;
        }
        Boolean flag2 = false;
        System.out.println("Schedule ID : ");
        ScheduleID = input.nextLine();
        for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
            if (DataMgr.getInstance().getScheduleList().get(i).getScheduleID().equals(ScheduleID)) {
                flag2 = true;
            }
        }
        if (flag2 == false) {
            System.out.println("Schedule is not exists");
            return;
        }
        System.out.println("Create At : ");
        CreateAt = input.nextLine();
        System.out.println("Status : ");
        System.out.println("1. PRESENT  ");
        System.out.println("2 .ABSENT ");
        System.out.println("Else .PA  ");
        int choice = Integer.parseInt(input.nextLine());
        switch (choice) {
            case 1:
                status = status.PRESENT;
                break;
            case 2:
                status = status.ABSENT;
                break;
            case 3:
                status = status.PA;
                break;
            default:
                status = status.PA;
                return;

        }
        Attendence attendence = new Attendence(rollNo,ScheduleID,CreateAt,status);
         DataMgr.getInstance().getAttendence().add(attendence);
    }

    @Override
    public void display() {
        System.out.println(toString());
    }

    @Override
    public String toString() {
        return "Attendence{" + "rollNo=" + rollNo + ", ScheduleID=" + ScheduleID + ", CreateAt=" + CreateAt + ", status=" + status + '}';
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class ClassGroup implements IInputOutput{
    String ClassID,StudentID;
    @Override
    public void input(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter class group infomation ");
        System.out.println("Class ID :");
        ClassID = input.nextLine();
        System.out.println("Student ID :");
        StudentID= input.nextLine();
    }
     @Override
     public void display(){
         System.out.println(toString());
     }

    @Override
    public String toString() {
        return "ClassGroup{" + "ClassID=" + ClassID + ", StudentID=" + StudentID + '}';
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class ClassRoom implements IInputOutput{
    String ClassID,ClassName;
     @Override
    public void input(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter classroom infomation ");
        System.out.println("Class ID :");
        ClassID = input.nextLine();
        System.out.println("ClassName :");
        ClassName= input.nextLine();
    }
     @Override
     public void display(){
         System.out.println(toString());
     }

    @Override
    public String toString() {
        return "ClassRoom{" + "ClassID=" + ClassID + ", ClassName=" + ClassName + '}';
    }
     
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Redmibook 14
 */
public class DataMgr {

    List<Student> StudentList;
    List<Teacher> TeacherList;
    List<Subject> SubjectList;
    List<Attendence> Attendence;
    List<Schedule> ScheduleList;
    List<ClassRoom> ClassroomList;
    List<ClassGroup> ClassgroupList;

    public static DataMgr instance = null;

    public DataMgr() {
        StudentList = new ArrayList();
        TeacherList = new ArrayList();
        SubjectList = new ArrayList();
        Attendence = new ArrayList();
        ScheduleList = new ArrayList();
        ClassroomList = new ArrayList();
        ClassgroupList = new ArrayList();
    }

    public static DataMgr getInstance() {
        if (instance == null) {
            instance = new DataMgr();
        }
        return instance;
    }

    public List<Student> getStudentList() {
        return StudentList;
    }

    public List<Teacher> getTeacherList() {
        return TeacherList;
    }

    public List<Subject> getSubjectList() {
        return SubjectList;
    }

    public List<Attendence> getAttendence() {
        return Attendence;
    }

    public List<Schedule> getScheduleList() {
        return ScheduleList;
    }

    public List<ClassRoom> getClassroomList() {
        return ClassroomList;
    }

    public List<ClassGroup> getClassgroupList() {
        return ClassgroupList;
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

/**
 *
 * @author Redmibook 14
 */
 interface IInputOutput {
    public void input();
    public void display();
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

/**
 *
 * @author Redmibook 14
 */
public class Person {
    String fullname, birthday, gender, address;
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Schedule implements IInputOutput {

    String scheduleID, SubjectName, ClassID, StartDate, EndDate, TeacherID;
    String onClassDate;
    float duration;

    public Schedule() {
    }

    public Schedule(String scheduleID, String SubjectName, String ClassID, String StartDate, String EndDate, String TeacherID, String onClassDate, float duration) {
        this.scheduleID = scheduleID;
        this.SubjectName = SubjectName;
        this.ClassID = ClassID;
        this.StartDate = StartDate;
        this.EndDate = EndDate;
        this.TeacherID = TeacherID;
        this.onClassDate = onClassDate;
        this.duration = duration;
    }

    public String getScheduleID() {
        return scheduleID;
    }

    public String getSubjectName() {
        return SubjectName;
    }

    public String getClassID() {
        return ClassID;
    }

    public String getStartDate() {
        return StartDate;
    }

    public String getEndDate() {
        return EndDate;
    }

    public String getTeacherID() {
        return TeacherID;
    }

    public String getOnClassDate() {
        return onClassDate;
    }

    public float getDuration() {
        return duration;
    }

    public void setScheduleID(String scheduleID) {
        this.scheduleID = scheduleID;
    }

    public void setSubjectName(String SubjectName) {
        this.SubjectName = SubjectName;
    }

    public void setClassID(String ClassID) {
        this.ClassID = ClassID;
    }

    public void setStartDate(String StartDate) {
        this.StartDate = StartDate;
    }

    public void setEndDate(String EndDate) {
        this.EndDate = EndDate;
    }

    public void setTeacherID(String TeacherID) {
        this.TeacherID = TeacherID;
    }

    public void setOnClassDate(String onClassDate) {
        this.onClassDate = onClassDate;
    }

    public void setDuration(float duration) {
        this.duration = duration;
    }

    @Override
    public void input() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter schedule infomation ");
        System.out.println("Schedule ID :");
        scheduleID = input.nextLine();
        System.out.println("SubjectName :");
        SubjectName = input.nextLine();
        System.out.println("Class ID :");
        ClassID = input.nextLine();
        Boolean flag2 = false;
        for (int i = 0; i < DataMgr.getInstance().getClassroomList().size(); i++) {
            if (DataMgr.getInstance().getClassroomList().get(i).ClassID.equals(ClassID)) {
                flag2 = true;
            }
        }
        if (flag2 == false) {
            System.out.println("Class ID is not exists");
            return;
        }
        System.out.println("Start Date:");
        StartDate = input.nextLine();
        System.out.println("End Date :");
        EndDate = input.nextLine();
        System.out.println("Teacher ID :");
        TeacherID = input.nextLine();
        Boolean flag1 = false;
        for (int i = 0; i < DataMgr.getInstance().getTeacherList().size(); i++) {
            if (DataMgr.getInstance().getTeacherList().get(i).TeacherID.equals(TeacherID)) {
                flag1 = true;
            }
        }
        if (flag1 == false) {
            System.out.println("Teacher ID is not exists");
            return;
        }
        System.out.println("On Class Date :");
        onClassDate = input.nextLine();
        System.out.println("Duration :");
        duration = Float.parseFloat(input.nextLine());
        Schedule schedule = new Schedule(scheduleID,SubjectName,ClassID,StartDate,EndDate,TeacherID,onClassDate,duration);
        DataMgr.getInstance().getScheduleList().add(schedule);
    }

    @Override
    public void display() {
        System.out.println(toString());
    }

    @Override
    public String toString() {
        return "Schedule{" + "scheduleID=" + scheduleID + ", SubjectName=" + SubjectName + ", ClassID=" + ClassID + ", StartDate=" + StartDate + ", EndDate=" + EndDate + ", TeacherID=" + TeacherID + ", onClassDate=" + onClassDate + ", duration=" + duration + '}';
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Student extends Person implements IInputOutput{

    String rollNo;

    public Student() {
    }

    public Student(String rollNo, String fullname, String birthday, String gender, String address) {
        this.rollNo = rollNo;
        this.fullname = fullname;
        this.birthday = birthday;
        this.gender = gender;
        this.address = address;
    }

    public String getRollNo() {
        return rollNo;
    }

    public String getFullname() {
        return fullname;
    }

    public String getBirthday() {
        return birthday;
    }

    public String getGender() {
        return gender;
    }

    public String getAddress() {
        return address;
    }

    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public void input() {
        Scanner input =  new Scanner(System.in);
        System.out.println("Enter student infomation");
        System.out.println("Student rollNo : ");
        rollNo = input.nextLine();
        System.out.println("Student full name : ");
        fullname = input.nextLine();
        System.out.println("Student birthday : ");
        birthday = input.nextLine();
        System.out.println("Student gender : ");
        gender = input.nextLine();
        System.out.println("Student address : ");
        address = input.nextLine();
    }
    @Override
    public void display(){
        System.out.println( toString());
    }      

    @Override
    public String toString() {
        return "Student{" + "rollNo=" + rollNo + ", fullname=" + fullname + ", birthday=" + birthday + ", gender=" + gender + ", address=" + address + '}';
    }
    
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Subject implements IInputOutput {

    String subjectName, classID;

    public Subject(String subjectName, String classID) {
        this.subjectName = subjectName;
        this.classID = classID;
    }

    public Subject() {
    }

    public String getSubjectName() {
        return subjectName;
    }

    public String getClassID() {
        return classID;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public void setClassID(String classID) {
        this.classID = classID;
    }

    @Override
    public void input() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter subject infomation");
        System.out.println("Subject name : ");
        subjectName = input.nextLine();
        System.out.println("Class ID : ");
        classID = input.nextLine();
        Boolean flag = true;
        for (int i = 0; i < DataMgr.getInstance().getClassroomList().size(); i++) {
            if (DataMgr.getInstance().getClassroomList().get(i).ClassID.equals(classID)) {
                flag = false;
            }
        }
        if (flag == true) {
            System.out.println("Class ID is not correct ");
            return;
        }
        Subject subjecttmp = new Subject(subjectName,classID);
        DataMgr.getInstance().getSubjectList().add(subjecttmp);
    }

    @Override
    public void display() {
        System.out.println(toString());
    }

    @Override
    public String toString() {
        return "Subject{" + "subjectName=" + subjectName + ", classID=" + classID + '}';
    }
}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Teacher extends Person implements IInputOutput {

    String TeacherID;

    @Override
    public void input() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter teacher infomation");
        System.out.println("Teacher ID : ");
        TeacherID = input.nextLine();
        System.out.println("Teacher full name : ");
        fullname = input.nextLine();
        System.out.println("Teacher birthday : ");
        birthday = input.nextLine();
        System.out.println("Teacher gender : ");
        gender = input.nextLine();
        System.out.println("Teacher address : ");
        address = input.nextLine();
    }

    @Override
    public void display() {
        System.out.println(toString());
    }

    public String getTeacherID() {
        return TeacherID;
    }

    public String getFullname() {
        return fullname;
    }

    public String getBirthday() {
        return birthday;
    }

    public String getGender() {
        return gender;
    }

    public String getAddress() {
        return address;
    }

    public void setTeacherID(String TeacherID) {
        this.TeacherID = TeacherID;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Student{" + "TeacherID=" + TeacherID + ", fullname=" + fullname + ", birthday=" + birthday + ", gender=" + gender + ", address=" + address + '}';
    }

}



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package schoolmanager;

import java.util.Scanner;

/**
 *
 * @author Redmibook 14
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void menu() {
        System.out.println("1.Enter teacher");
        System.out.println("2.Enter student");
        System.out.println("3.Enter subject");
        System.out.println("4.Enter classroom");
        System.out.println("5.Enter attendence");
        System.out.println("6.Enter schedule");
        System.out.println("7.Show students attendence");
        System.out.println("8.Show teacher chedules");
        System.out.println("9.Delete Attendence");
        System.out.println("10.Delete Schedule");
        System.out.println("11.Delete teacher");
        System.out.println("12.Delete student");
        System.out.println("13.Find anything by ID(subjectname,rollNo,...)");

        System.out.println("14.Exit");
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // TODO code application logic here
        while (true) {

            menu();
            int choice = Integer.parseInt(input.nextLine());
            switch (choice) {
                case 1:
                    Teacher teacher = new Teacher();
                    teacher.input();
                    DataMgr.getInstance().getTeacherList().add(teacher);
                    break;
                case 2:
                    Student student = new Student();
                    student.input();
                    DataMgr.getInstance().getStudentList().add(student);
                    break;
                case 3:
                    Subject subject = new Subject();
                    subject.input();

                    break;
                case 4:
                    ClassRoom classroom = new ClassRoom();
                    classroom.input();
                    DataMgr.getInstance().getClassroomList().add(classroom);
                    break;

                case 5:
                    if (DataMgr.getInstance().getStudentList().size() > 0) {
                        Attendence attendence = new Attendence();
                        attendence.input();

                    } else {
                        System.out.println("Student list is empty");
                    }

                    break;

                case 6:
                    if (DataMgr.getInstance().getTeacherList().size() > 0) {
                        Schedule schedule = new Schedule();
                        schedule.input();

                    } else {
                        System.out.println("No teacher to schedule");
                    }
                    break;
                case 7:
                    for (int i = 0; i < DataMgr.getInstance().getAttendence().size(); i++) {
                        DataMgr.getInstance().getAttendence().get(i).display();
                    }

                    break;
                case 8:
                    for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
                        DataMgr.getInstance().getScheduleList().get(i).display();
                    }
                    break;

                case 9:
                    System.out.println("Student list :");
                    for (int i = 0; i < DataMgr.getInstance().getStudentList().size(); i++) {
                        DataMgr.getInstance().getStudentList().get(i).display();
                    }
                    System.out.println("Enter rollNo :");
                    Boolean flag = true;
                    String roll = input.nextLine();
                    for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
                        if (DataMgr.getInstance().getAttendence().get(i).rollNo.equals(roll)) {
                            DataMgr.getInstance().getAttendence().remove(i);
                            flag = false;
                        }
                    }
                    if (flag == false) {
                        System.out.println("This student doesn't have attendence");
                    }
                    break;
                case 10:
                    System.out.println("Schedule list :");
                    for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
                        DataMgr.getInstance().getScheduleList().get(i).display();
                    }
                    System.out.println("Enter Schedule ID :");
                    String ScheduleID = input.nextLine();
                    for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
                        if (DataMgr.getInstance().getScheduleList().get(i).scheduleID.equals(ScheduleID)) {
                            DataMgr.getInstance().getScheduleList().remove(i);
                        }
                    }
                    break;
                case 11:
                    System.out.println("Teacher list :");
                    for (int i = 0; i < DataMgr.getInstance().getTeacherList().size(); i++) {
                        DataMgr.getInstance().getTeacherList().get(i).display();
                    }
                    System.out.println("Enter teacher ID :");

                    String teacherid = input.nextLine();
                    for (int i = 0; i < DataMgr.getInstance().getTeacherList().size(); i++) {
                        if (DataMgr.getInstance().getTeacherList().get(i).TeacherID.equals(teacherid)) {
                            DataMgr.getInstance().getTeacherList().remove(i);
                        }
                    }
                    break;
                case 12:
                    System.out.println("Student list :");
                    for (int i = 0; i < DataMgr.getInstance().getStudentList().size(); i++) {
                        DataMgr.getInstance().getTeacherList().get(i).display();
                    }
                    System.out.println("Enter student rollNo :");
                    String stuID = input.nextLine();
                    for (int i = 0; i < DataMgr.getInstance().getStudentList().size(); i++) {
                        if (DataMgr.getInstance().getStudentList().get(i).rollNo.equals(stuID)) {
                            DataMgr.getInstance().getStudentList().remove(i);
                        }
                    }
                    break;
                case 13:
                    System.out.println("Enter any ID :");
                    String ID = input.nextLine();
                    for (int i = 0; i < DataMgr.getInstance().getAttendence().size(); i++) {
                        if (DataMgr.getInstance().getAttendence().get(i).rollNo.equals(ID)) {
                            DataMgr.getInstance().getAttendence().get(i).display();
                        }
                    }
                    for (int i = 0; i < DataMgr.getInstance().getClassgroupList().size(); i++) {
                        if (DataMgr.getInstance().getClassgroupList().get(i).ClassID.equals(ID)) {
                            DataMgr.getInstance().getClassgroupList().get(i).display();
                        }
                    }
                    for (int i = 0; i < DataMgr.getInstance().getClassroomList().size(); i++) {
                        if (DataMgr.getInstance().getClassroomList().get(i).ClassID.equals(ID)) {
                            DataMgr.getInstance().getClassroomList().get(i).display();
                        }
                    }
                    for (int i = 0; i < DataMgr.getInstance().getScheduleList().size(); i++) {
                        if (DataMgr.getInstance().getScheduleList().get(i).ClassID.equals(ID)) {
                            DataMgr.getInstance().getScheduleList().get(i).display();
                        }
                    }
                    for (int i = 0; i < DataMgr.getInstance().getStudentList().size(); i++) {
                        if (DataMgr.getInstance().getStudentList().get(i).rollNo.equals(ID)) {
                            DataMgr.getInstance().getStudentList().get(i).display();
                        }
                    }

                    for (int i = 0; i < DataMgr.getInstance().getSubjectList().size(); i++) {
                        if (DataMgr.getInstance().getSubjectList().get(i).subjectName.equals(ID)) {
                            DataMgr.getInstance().getSubjectList().get(i).display();
                        }
                    }

                    for (int i = 0; i < DataMgr.getInstance().getTeacherList().size(); i++) {
                        if (DataMgr.getInstance().getTeacherList().get(i).TeacherID.equals(ID)) {
                            DataMgr.getInstance().getTeacherList().get(i).display();
                        }
                    }
                    break;
                case 14:
                    return;
            }
        }
    }

}