Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal
Tags:
  1. Hoàng Quân Lâm

    Hoàng Quân Lâm New Member

    Đề bài : Mô phỏng một hệ thống quản lý thời khóa biểu của sinh viên và giảng viên trong một trường đại học. Hệ thống cần quản lý các đối tượng gồm Sinh Viên, Giảng Viên, và Môn Học; cụ thể như sau: - Thông tin Sinh Viên gồm: MSSV, họ tên, giới tính, số tín chỉ tích lũy, thời khóa biểu. - Thông tin Giảng Viên gồm: MaGV, họ tên, giới tính, số lớp giảng dạy, thời khóa biểu. - Thông tin Môn Học gồm: Mã môn học, tên môn học, số tín chỉ.
    Mối quan hệ giữa Sinh Viên, Giảng Viên, và Môn Học được mô tả như sau: - Sinh Viên có thể học một hoặc nhiều Môn Học. - Một Giảng Viên có thể dạy nhiều Môn Học. - Một Môn Học được dạy bởi một Giảng Viên.
    a. Đọc tập tin dữ liệu và tạo các đối tượng tương ứng với thiết kế của chương trình.
    b. Tính số tín chỉ tích lũy cho mỗi đối tượng sinh viên.
    c. Tính tổng số lớp mà giảng viên tham gia giảng dạy.
    d. Tìm những môn học mà một sinh viên đang theo học, tham số đầu vào là MSSV.
    e. Trả về danh sách sinh viên của một môn học, tham số đầu vào là MaMH. Trả về danh sách rỗng (size = 0) nếu không có sinh viên theo học.
    f. Trả về danh sách môn học của một giảng viên, tham số đầu vào là MaGV. Trả về danh sách rỗng (size = 0) nếu giảng viên không dạy môn học nào.

    Mọi người làm giúp em câu b,c với ạ.
    Em code câu a vậy ổn chưa ạ
    Em cảm ơn.

    PHP:
    /*
     * 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 btl1;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;

    /**
     *
     * @author asus
     */
    public class NewClass {
        public static 
    void main(String [] argsthrows IOException {
            
    Scanner scn = new Scanner (new File("input.dat"));
            
    String s;
            
    String[] data4 scn.nextLine(),split(",");
            for(
    String data:data4) {
                
    System.out.println(data);
            }
            while(
    scn.hasNext()){
                
    scn.nextLine();
                
    String hashtag s.split("\\t")[1].split(",");
                switch(
    hashtag){
                    case 
    "#MSinhvien":
                        
    System.out.println("Day la thong tin SV: ");
                        break;
                    case 
    "#GiangVien":
                        
    System.out.println("Day la thong tin GV: ");
                        break;
                    case 
    "#svTKB":
                        
    System.out.println("Day la TKB sv: ");
                        break;
                    case 
    "#gvTKB":
                        
    System.out.println("Day la TKB gv: ");
                        break;
                    case 
    "#MonHoc":
                        
    System.out.println("Thong tin Mon Hoc: ");
                        break;
                }
                for(
    String att:attributes){
                    
    System.out.println(att);
                }
            }
        }
    }
        
        

     
  2. D.A.N_3002

    D.A.N_3002 Active Member

    Để làm dc câu b,c thì bạn cần có Class về HocSinh và GiangVien đã
     
  3. JackV

    JackV Administrator Staff Member

    nhưng mà câu a chưa làm xong mà
    trong đi đó bạn đó chỉ làm là đọc dữ liệu lên rồi thông báo dữ liệu của sinh viên hay giảng viên, cái code
    PHP:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;

    /**
     *
     * @author asus
     */
    public class NewClass {
        public static 
    void main(String [] argsthrows IOException {
            
    Scanner scn = new Scanner (new File("input.dat"));
            
    String s;
            
    String[] data4 scn.nextLine(),split(",");
            for(
    String data:data4) {
                
    System.out.println(data);
            }
            while(
    scn.hasNext()){
                
    scn.nextLine();
                
    String hashtag s.split("\\t")[1].split(",");
                switch(
    hashtag){
                    case 
    "#MSinhvien":
                        
    System.out.println("Day la thong tin SV: ");
                        break;
                    case 
    "#GiangVien":
                        
    System.out.println("Day la thong tin GV: ");
                        break;
                    case 
    "#svTKB":
                        
    System.out.println("Day la TKB sv: ");
                        break;
                    case 
    "#gvTKB":
                        
    System.out.println("Day la TKB gv: ");
                        break;
                    case 
    "#MonHoc":
                        
    System.out.println("Thong tin Mon Hoc: ");
                        break;
                }
                for(
    String att:attributes){
                    
    System.out.println(att);
                }
            }
        }
    }
        
    chưa có gì liên quan đến các đối tượng được nhắc đến ở đề bài, theo đề bài thì sau khi đọc lên thì phải tạo ra các đối tượng tương ứng rồi lưu dữ liệu tương ứng cho từng đối tượng mà.
     
    D.A.N_3002 likes this.
  4. D.A.N_3002

    D.A.N_3002 Active Member

    @JackV Mình nghĩ ở đoạn này là nó đã yêu cầu tạo 1 class về Sinh Viên, Giảng Viên, và Môn Học rồi.
    y.PNG
     
  5. kienxx

    kienxx Member

    @JackV + DAN: có sẵn các file class MonHoc, SinhVien, GiangVien, Person rồi.
    Đây là bài tập lớn 1 môn Cấu trúc giải thuật ĐH Tôn Đức Thắng đây mà.
    Câu b, sau khi tách chuỗi dòng có hashtag #MonHoc thì dùng 1 hàm get lấy number ở cuối của dòng ấy
    Câu c, get Mã GV từ các dòng hashtag #GiangVien, rồi so sánh với Mã GV ở dòng đầu tiên, trùng thì +1
     
    Hoàng Quân Lâm and D.A.N_3002 like this.
  6. D.A.N_3002

    D.A.N_3002 Active Member

    @kienxx Ở đây đề bài yêu cầu là số tín chỉ tích lũy cho mỗi đối tượng sinh viên, vậy phải get các môn học mà 1 sinh viên học, sau đó mới tính tổng tín chỉ của các môn học đó.

    Chả phải đề đã cho số lớp giảng dạy sao @@ Get cái đấy ra là xong mà.
     
  7. kienxx

    kienxx Member

    get xong so sánh mssv trong hashtag #SvTKB với mssv dòng đầu input trùng thì cộng.
    @Dan: Project của mình ban ngày làm được rồi, nãy thêm sửa chức năng giờ nó rối tung rối mù lên lun :(
     
  8. D.A.N_3002

    D.A.N_3002 Active Member

    Nó rối có thể là do code của bạn, nên chia thành các void nhỏ để nó đỡ rối hơn :)
     
  9. Hoàng Quân Lâm

    Hoàng Quân Lâm New Member

    Mọi người có thể khái quát cách làm đc ko ạ. Chứ h em hơi rối. Em cảm ơn
     
  10. D.A.N_3002

    D.A.N_3002 Active Member

    Chả phải mình đã khái quát cách làm ở trên rồi sao ?
     
  11. D.A.N_3002

    D.A.N_3002 Active Member

    Ok, giải quyết từng câu một nhé :) :) Mình vừa phải tìm đề này để xem file .dat =_= lần sau bạn nên đưa đầy đủ thông tin hơn @@
    Câu a yêu cầu tạo các đối tượng tương ứng, cho nên sau khi lọc Hashtag xong thì phải tạo một Class mới tương ứng (#SinhVien thì tạo ra 1 SinhVien mới, ....)
    Và nên có 1 ArrayList chứa các SinhVien, GiangVien(1 loại 1 ArrayList riêng) để truy xuất cho dễ.
     
  12. D.A.N_3002

    D.A.N_3002 Active Member

    Câu b ở đây là tính số tín chỉ tích lũy cho mỗi đối tượng sinh viên, tức là ta xét ArrayList SinhVien xem mỗi đối tượng trong đó có học những môn j sau đó tính tổng tín chỉ của các môn đó
     
  13. D.A.N_3002

    D.A.N_3002 Active Member

    Trong đề có nói rõ là Thông tin Giảng Viên có số lớp giảng dạy, nên chỉ cần dùng getter để lấy nó ra thôi :)
     
  14. Hoàng Quân Lâm

    Hoàng Quân Lâm New Member

    ok ạ, em mới hoàn thành code xong, mời a xem qua.
    PHP:
    /**
     * DO NOT ADD PACKAGE TO THIS FILE
     * @author [Your-Student-ID]
     */
     
    import java.util.*;
     
    import java.io.*;
     
    public class 
    Test {
        
        public static 
    void main(String[] args)
        {
            try{
            
    ArrayList<StringgvTKB = new ArrayList<>();
            
    ArrayList<StringsvTKB = new ArrayList<>();
            
    ArrayList<GiangViengiangvienList = new ArrayList<>();
            
    ArrayList<SinhViensinhvienList = new ArrayList<>();
            
    ArrayList<MonHocmonhocList = new ArrayList<>();
            
    String x "input.dat";
            
    File file = new File(x);
            
    FileRead read = new FileRead(file);
            
    Scanner scan = new Scanner(read);
            
    String y[] = null;
            
            while(
    scan.hasNextLine()){
                
    String s scan.nextLine();
                
    String[] hash s.split("\\t");
                
                switch(
    hash[0]){
                    case
    "#SinhVien":
                        
    hash[1].split(",");
                        
    sinhvienList.add(new SinhVien(y[0],y[1],y[2].charAt(0)));
                        break;
                        
                    case
    "#GiangVien":
                        
    hash[1].split(",");
                        
    giangvienList.add(new GiangVien(y[0],y[1],y[2].charAt(0)));
                        break;
                        
                    case
    "#svTKB":
                        
    svTKB.add(s);
                        break;
                        
                    case
    "#gvTKB":
                        
    gvTKB.add(s);
                        break;
                    
                    case
    "#MonHoc":
                        
    hash[1].split(",");
                        
    monhocList.add(new MonHoc(y[0],y[1],Integer.parseInt(y[2])));
                        break;
                    }
                }
            for(
    String svsvTKB)
            {
                
    sv.split(",");
            
                for(
    SinhVien s:sinhvienList)
                    {
                        if(
    s.id.equals(y[0]))
                            for(
    MonHoc m:monhocList)
                                if(
    m.getMaMH().equals(y[1]))
                                    {
                                        
    s.get(s).add(m)(m.get(m));
                                        
    s.get(s).setSoTinChiTichLuy(s.get(s).getSoTinChiTichLuy() + m.get(m).getTinChi());
                                    }
                    }
            }
        
            for(
    String gvgvTKB)
            {
                
    gv.split(",");
            
                for(
    GiangVien g:giangvienList)
                    {
                        if(
    g.id.equals(y[0]))
                            for(
    MonHoc m:monhocList)
                                if(
    m.getMaMH().equals(y[1]))
                                    {
                                         
    g.get(g).add(m)(m.get(m));
                                        
    g.get(g).setSoLopGiangDay(g.get(g).getSoLopGiangDay() + 1);
                                    }
                    }
            }
        
                
    FileWriter writer1 = new FileWriter(new File("teachers.dat"));
                
    FileWriter writer2 = new FileWriter(new File("students.dat"));
        
                for(
    int i=0;i<giangvienList.size();i++)
                    
    writer1.write(giangvienList.get(i).id+","+giangvienList.get(i).name+","+giangvienList.get(i).gender+","+giangvienList.get(i).getSoLopGiangDay()+"\n");
                for(
    int i=0;i<sinhvienList.size();i++)
                    
    writer2.write(sinhvienList.get(i).id+","+sinhvienList.get(i).name+","+sinhvienList.get(i).gender+","+sinhvienList.get(i).getSoTinChiTichLuy()+"\n");
                
    writer1.close();
                
    writer2.close();
            }catch (
    IOException ex){
                
    ex.PrintStackTrace();
            }
    }
    }
     
  15. D.A.N_3002

    D.A.N_3002 Active Member

    @@ Code của bạn rối quá, nên chia thành các void nhỏ để nó gọn hơn nhé :) :)
    Với cả mình có 1 cách để tối ưu hóa code này hơn :) :) Nếu như có thể sửa được cấu trúc file .dat thì tốt :) Mình sẽ sửa để cho "#MonHoc" lên trước
    ẻ.PNG
    Vậy thì khi gặp "#gvTKB" hay "#gvTKB" thì bạn sẽ tìm và add luôn môn học cho đối tượng SinhVien hoặc GiangVien thôi :) Đỡ phải add thêm vào ArrayList riêng :)
    PHP:
                    case "#svTKB":
                    {
                        
    String split[] = cut[1].split(",");
                        
    Sinh_Vien.get(Get_SinhVien_Location(split[0])).addMonHoc(Mon_Hoc.get(Get_Monhoc_Location(split[1])));
                        break;
                    }
                    
                    case 
    "#gvTKB":
                    {
                        
    String split[] = cut[1].split(",");
                        
    Giang_Vien.get(Get_GiangVien_Location(split[0])).addMonHoc(Mon_Hoc.get(Get_Monhoc_Location(split[1])));
                        break;
                    } 
    Với lại bạn cũng nên viết các void để get vị trí của SinhVien, GiangVien, Monhoc trong từng ArrayList của nó, vậy sẽ thuận tiện hơn cho câu d,e,f mà cũng dễ add thêm môn học vào hơn :) :)
    PHP:
        public static Integer Get_SinhVien_Location(String str)
        {
            
    int output = -1;
            for(
    int i 0;Sinh_Vien.size(); i++)
            {
                if(
    Sinh_Vien.get(i).getId().equals(str))
                {
                    
    output i;
                    break;
                }
            }
            return 
    output;
        }
        
        public static 
    Integer Get_GiangVien_Location(String str)
        {
            
    int output = -1;
            for(
    int i 0;Giang_Vien.size(); i++)
            {
                if(
    Giang_Vien.get(i).getId().equals(str))
                {               
                    
    output i;
                    break;
                }
            }
            return 
    output;
        }   
        
        public static 
    Integer Get_Monhoc_Location(String str)
        {
            
    int output = -1;
            for(
    int i 0;Mon_Hoc.size(); i++)
            {
                if(
    Mon_Hoc.get(i).getMaMH().equals(str))
                {
                    
    output i;
                    break;
                }
            }
            return 
    output;
        }
     
    Jio Freed likes this.
  16. D.A.N_3002

    D.A.N_3002 Active Member

    Hình như chỗ này bạn bị sai hay sao ý @@ Tại mk run thử nó báo ko có Class FileRead @@
    bandicam 2018-04-02 22-07-05-585.jpg
     
  17. Anh Hào

    Anh Hào New Member

    mk mới tham gia công đồng Java .Cho mk hỏi cách post bài lên để hỏi với :(
     
  18. D.A.N_3002

    D.A.N_3002 Active Member

    Anh Hào likes this.
  19. tranquoctri

    tranquoctri New Member

     
  20. tranquoctri

    tranquoctri New Member

    cho em hỏi với ạ.. tại sao mình sử dụng câu lệnh s.get(s).add(m)(m.get(m)); nó bắt phải tạo phải tạo một hàm get(sinhvien) với ạ. với em ko hiểu câu lệnh này lắm. mong các anh chị chỉ giúp em với..
     

Chia sẻ trang này

Loading...