[Java] Chương trình quản lý điểm và đoạn thẳng

Xây dựng chương trình quản lý điểm và đoạn thẳng trong không gian. Chương trình sẽ cho phép người dùng nhập danh sách các đoạn thẳng, sau đó hiển thị danh sách đó ra màn hình. Ngoài ra, chương trình cũng sẽ xác định đoạn thẳng có độ dài lớn nhất và tính tổng độ dài của tất cả các đoạn thẳng đã nhập.

Xem thêm:

1. Bài toán

Bài 7: Cho lớp DIEM(điểm) để mô tả một điểm trong không gian gồm:

  • Thuộc tính: x,y (toạ độ không gian)
  • Phương thức: Khởi tạo (không có tham số – có tham số), nhập, xuất,…

Xây dựng lớp DOANTHANG (đoạn thẳng) gồm:

  • Thuộc tính: A (Điểm đầu), B(điểm cuối).
  • Phương thức: Khởi tạo (không có tham số – có tham số), nhập, xuất, tính chiều dài,…

Áp dụng:

  • Nhập vào danh sách các DOANTHANG.
  • In lại danh sách các DOANTHANG vừa nhập.
  • Cho biết thông tin DOANTHANG có độ dài lớn nhất.
  • Tính đổng độ dài tất cả các đoạn thẳng đã nhập.

Xem thêm:

2. Code

2.1 Lớp DIEM

package bai7;

import java.util.Scanner;

public class DIEM {
    int x,y;

    DIEM() {
        x=0; 
        y=0;
    }
    
    DIEM(int xx, int yy){
        x=xx;
        y=yy;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
    
    public void nhap(){
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhap X: ");
        x= sc.nextInt();
        System.out.print("Nhap Y: ");
        y= sc.nextInt();
    }
    
    public void xuat(){
        System.out.println("X: "+x+" "+ "Y: "+y);
    }
}

2.2 Lớp DOANTHANG

package bai7;

import java.util.Scanner;

public class DOANTHANG {
    DIEM A,B;
    DOANTHANG(){
        this.A= new DIEM();
        this.B= new DIEM();
    }

    public DOANTHANG(int x1, int y1, int x2, int y2) {
        this.A = new DIEM(x1,y1);
        this.B = new DIEM(x2,y2);
    }
    
    public void nhapDT(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhap diem A: ");
        A.nhap();
        System.out.println("Nhap diem B: ");
        B.nhap();
    }
    
    public float ChieuDai(){
        //Math.pow(): tinh binh phuong
        //Math.sqrt(): tính can bac hai
        return (float) (Math.sqrt(Math.pow(B.getX()-A.getX(), 2)+(Math.pow(B.getY()-A.getY(), 2))));
    }
    
    public void xuatDT(){
        System.out.println("A:");
        A.xuat();
        System.out.println("B:");
        B.xuat();
        System.out.println("Chieu dai: "+ChieuDai());
    }
}

2.3 Lớp DSDT

package bai7;

import java.util.Scanner;

public class DSDT {
    DOANTHANG ds[];
    int i,n;
    
    public void nhapDSDT(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhap so luong doan thang:");
        n=sc.nextInt();
        
        ds= new DOANTHANG[n];
        for(i=0;i<n;i++){
            ds[i]= new DOANTHANG();
            System.out.println("Nhap duong thang thu: "+(i+1));
            ds[i].nhapDT();
        }
    }
    
    public void xuatDSDT(){
        System.out.println("Danh sach duong thang: ");
        for(i=0;i<n;i++){
            System.out.println("\n Doan thang thu: "+(i+1));
            ds[i].xuatDT();
        }
    }
    
    public void maxDT(){
        float max=ds[0].ChieuDai();
        for(int i=1;i<n;i++){
            if(max<ds[i].ChieuDai()){
                max=ds[i].ChieuDai();
            }
        }
        
        System.out.println("Thong tin doan thang co do dai lon nhat là: ");
        for(int i=0;i<n;i++){
            if(max==ds[i].ChieuDai()){
                ds[i].xuatDT();
            }
        }
    }
    
    public void sumDT(){
        float sum=0;
        for(int i=0;i<n;i++){
            sum= sum+ ds[i].ChieuDai();
        }
        System.out.println("Tong do dai tat ca cac doan thang da nhap la: "+sum);
    }
}

2.4 Lớp main

package bai7;

import com.sun.swing.internal.plaf.metal.resources.metal;
import java.util.Scanner;

public class Bai7 {

    static void menu(){
        System.out.println("1. Nhap danh sach doan thang");
        System.out.println("2. Xuat danh sach doan thang");
        System.out.println("3. Thong tin doan thang co do dai lon nhat");
        System.out.println("4. Tong do dai tat ca doan thang");
        System.out.println("0. Thoat");
    }
    public static void main(String[] args) {
        int chon;
        DSDT dsdt= new DSDT();
        Scanner sc = new Scanner(System.in);
        do {          
            menu();
            System.out.println("Lua chon:");
            chon= sc.nextInt();
            switch(chon){
                case 1: dsdt.nhapDSDT(); break;
                case 2: dsdt.xuatDSDT(); break;
                case 3: dsdt.maxDT(); break;
                case 4: dsdt.sumDT(); break;
                case 0: System.exit(0); break;
                default: break;
            }
        } while (chon!=0); 
    }
}

4. Kết quả

Nhập vào danh sách các đoạn thẳng java

Trên đây là chương trình quản lý điểm và đường thẳng viết bằng ngôn ngữ lập trình java. Cảm ơn các bạn đã tham khảo trên ttnguyen.net.

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em