Tải bản đầy đủ (.docx) (28 trang)

Lập trình java (quản lý bệnh nhân)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (200.73 KB, 28 trang )

VIỆN ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN :
MÔN: JAVA
ĐỀ TÀI: QUẢN LÝ BỆNH NHÂN

hà nội: 12/08/2014
GIỚI THIỆU:
 Ngày nay đối với sự phát triển vượt bậc của khoa học công nghệ thì khoa
học công nghệ thông tin là một trong những lĩnh vực có nhiều đóng góp tích
cực nhất ,thiết thực nhất. Công nghệ thông tin có mặt trong hầu hết lĩnh vực
của cuộc sống đặc biệt công nghệ thông tin là mộ công cụ đắc lực trong
công tắc quản lý. Chúng ta dễ dàng thấy được việc đưa tin học vào trong
1
công tác quản lý kinh doanh là một trong những ứng dụng quan trong nhất
trong rất nhiều ứng dung cơ sở dữ liệu , nhờ vào công tác tin học hóa mà
việc quản lý và điều hành doanh nghiệp tỏ ra rất nhanh chóng và hiệu quả.
 Cũng giống như các cơ sở kinh doanh thì quản lý bệnh nhân là một nơi có
nhu cầu cao trong việc ứng dung cơ sở dữ liệu. Thực vậy ứng dụng cơ sở dữ
liệu trong việc quản lý bệnh nhân là một việc hết sức thiết thực.
I. . Giới thiệu các thành phần chính của chương trình:
• Cấu trúc các lớp: Bài làm gồm 4 lớp
• count : dùng để lưu số lượng bệnh nhân
• Bệnh nhân: Nhập dữ liệu bệnh nhân
• Thao tác: Các thao tác chèn, xóa, sửa, tiềm kiếm
• Bệnh nhân test: hiển thị menu
II. . Giới thiệu các chức năng chính trong chương trình:
1) Nhập một bệnh nhân mới:
2
gồm :
• nhập mã bệnh nhân :


System.out.print("\nbạn nhập vào mã bệnh nhân (mã không
được trùng, nhỏ hơn hoặc bằng 10 ký tự và không chứa các
ký tự đặc biệt): ");
setMaBN(inputBuffer.readLine());
• nhập họ tên bệnh nhân:
System.out.print("Bạn nhập vào họ tên bệnh nhân (Lớn hơn
hoặn bằng 5 ký tự): ");
setHoTen(inputBuffer.readLine());
• nhập giới tính bệnh nhân:
System.out.print("bạn nhập vào giới tính bênh nhân (không
được trùng, giới tính chỉ có thê là nam hoăc nữ): ");
setGioiTinh(inputBuffer.readLine());
• tiền phòng :
System.out.print("Bạn nhập vào tiền phòng cho benh nhan :
");
settienphong(input.nextDouble());
• tiền thuốc:
System.out.print("Bạn nhập vào tiền thuốc cho benh nhan:
");
settienthuoc(input.nextDouble());
• tiền dịch vụ:
System.out.print("Bạn nhập vào tiền dịch vụ cho benh nhan
");
settienDV(input.nextDouble());
2) Xem danh sách bệnh nhân:
• System.out.printf(" %-10s / %-35s / %-9s / %-10,2f / %-
10,2f ",maBN, hoten, gioitinh, tienphong, tienthuoc, tienDV);
3) Tìm kiếm theo tổng tiền:
• System.out.print("\nBạn nhập vào tổng tiê`n cần tìm kiếm: ");
sumPoint = input.nextDouble();

count = checkSumPoint(benhnhan, a, sumPoint, n);//lấy số lượng
tiền trong danh sách bằng với tiền nhập vào.
4) Sửa tên bệnh nhân có mã nhập vào từ bàn phím:
• System.out.println("\nBạn nhập vào mã bệnh nhân cần sửa
thông tin để kiểm tra : ");
ID = input.nextLine();
removeSpace(ID, true);
location = checkIDExists(benhnhan, ID, n);//lấy vi trí của
bệnh nhân có ID bằng ID nhập vào
5) Xóa bệnh nhân có mã nhập từ bàn phím:
3
• System.out.println("\nBạn nhập vào mã bệnh nhân cần xóa:
");
ID = input.nextLine();
removeSpace(ID, true);
location = checkIDExists(benhnhan, ID, n.getN());//lấy vị trí
của bệnh nhân trong danh sách có ID bằng ID nhập vào
6) Sắp xếp theo thứ tự tăng dần theo tổng tiền:
• System.out.println("\n danh sách đươc sắp xếp tăng dần theo
tổng tiền.");
7) Chèn thêm 1 danh sach sắp xếp:
• System.out.println("\nBạn nhập mã bệnh nhân cần chèn(mã
không được trùng, nhỏ hơn hoặc bằng 10 ký tự và không
chứa các ký tự đặc biệt): ");
ID = input.nextLine();
removeSpace(ID, true);

III. Chương trình:
 count:
 package baitaplon;


 public class count {

 private int n;

 public int getN()
 {
 return n;
 }

 public void setN(int n)
 {
 this.n = n;
 }
4

 public count()
 {
 this(0);
 }

 public count(int n)
 {
 this.n = n;
 }
 }

 benhnhan:
package baitaplon;
import java.util.Scanner;

import java.io.*;
public class benhnhan
{
//Field
private String maBN;
private String gioiTinh;
private String hoTen;
private double tienphong;
private double tienthuoc;
private double tienDV;
//Property
public String getMaBN()
{
return maBN;
}
public void setMaBN(String maBN)
{
this.maBN = maBN;
}
public String getHoTen()
{
return hoTen;
}
public void setHoTen(String hoTen)
{
this.hoTen = hoTen;
}
public String getGioiTinh()
{
5

return gioiTinh;
}
public void setGioiTinh(String gioiTinh)
{
this.gioiTinh = gioiTinh;
}
public double gettienphong()
{
return tienphong;
}
public void settienphong(double tienphong)
{
this.tienphong = tienphong;
}
public double gettienthuoc()
{
return tienthuoc;
}
public void settienthuoc(double tienthuoc)
{
this.tienthuoc = tienthuoc;
}
public double gettienDV()
{
return tienDV;
}
public void settienDV(double tienDV)
{
this.tienDV = tienDV;
}

//Paramater
public benhnhan()
{
this("", "", "", 0, 0, 0);
}
public benhnhan(String maBN, String hoTen, String gioiTinh, double tienphong, double
tienthuoc, double tienDV)
{
this.maBN = maBN;
this.hoTen = hoTen;
this.gioiTinh = gioiTinh;
this.tienphong = tienphong;
this.tienthuoc = tienthuoc;
6
this.tienDV = tienDV;
}
//Method
//Check Error
// public static void printError(Exception ex)
// {
// System.out.println("Dữ liệu nhập vào bị lỗi.lỗi " + ex.getMessage());
// }
//Input data
public void inputbenhnhan()throws Exception
{
Scanner input = new Scanner(System.in);
BufferedReader inputBuffer = new BufferedReader(new
InputStreamReader(System.in));
try
{

do
{
System.out.print("\nbạn nhập vào mã bệnh nhân (mã không được trùng, nhỏ hơn
hoặc bằng 10 ký tự và không chứa các ký tự đặc biệt): ");
setMaBN(inputBuffer.readLine());
}
while(!ThaoTac.checkID(maBN));
do
{
System.out.print("Bạn nhập vào họ tên bệnh nhân (Lớn hơn hoặn bằng 5 ký tự):
");
setHoTen(inputBuffer.readLine());
}
while(!ThaoTac.checkFullName(hoTen));
do
{
System.out.print("bạn nhập vào giới tính bênh nhân (không được trùng, giới tính
chỉ có thê là nam hoăc nữ): ");
setGioiTinh(inputBuffer.readLine());
}
while(!ThaoTac.checkSex(gioiTinh));
do
{
System.out.print("Bạn nhập vào tiền phòng cho benh nhan : ");
settienphong(input.nextDouble());
}
while(!ThaoTac.checkPoint(tienphong));
do
7
{

System.out.print("Bạn nhập vào tiền thuốc cho benh nhan: ");
settienthuoc(input.nextDouble());
}
while(!ThaoTac.checkPoint(tienthuoc));
do
{
System.out.print("Bạn nhập vào tiền dịch vụ cho benh nhan ");
settienDV(input.nextDouble());
}
while(!ThaoTac.checkPoint(tienDV));

System.out.flush();
}
catch(Exception ex)
{
throw ex;
}
}
public void displaybenhnhan() throws Exception
{
try
{
System.out.printf(" %-10s | %-35s | %-9s | %-10.2f | %-10.2f | %-10.2f ", maBN,
hoTen, gioiTinh, tienphong, tienthuoc, tienDV);
}
catch(Exception ex)
{
throw ex;
}
}

}
 benhnhantest:
package baitaplon;
import java.util.Scanner;
public class benhnhantest
{
//Function print line
public static void printLine()
{
System.out.println();

for(int i = 1; i <= 100; i++)
8
{
if(i == 1 || i == 100)
{
System.out.print("+");
}
else
{
System.out.print("-");
}
}
}

//Function print menu
public static void printMenu()
{
printLine();
System.out.printf("\n| %-90s %7s", "Menu: ","|");

System.out.printf("\n| %-90s %7s", "1. Nhập một bệnh nhân mới.", "|");
System.out.printf("\n| %-90s %7s", "2. Xem danh sách bệnh nhân.", "|");
System.out.printf("\n| %-90s %7s", "3. Tìm kiếm theo tổng tiền.", "|");
System.out.printf("\n| %-90s %7s", "4. Sửa tên bệnh nhân có mã nhập từ bàn phím.", "|");
System.out.printf("\n| %-90s %7s", "5. Xóa bênh nhân có mã nhập từ bàn phim bàn phím.",
"|");
System.out.printf("\n| %-90s %7s", "6. Sap xep danh sách theo thứ tự tăng dần theo tổng
tiê`n.", "|");
System.out.printf("\n| %-90s %7s", "7. Chèn một bênh nhân vào danh sách đã sắp xếp mà tính
sắp xếp vẫn được bảo tồn . ", "|");
System.out.printf("\n| %-90s %7s", "0. Kết thúc.","|");
printLine();
}

//Function main
public static void main(String[] args)
{
try
{
final int max = 100;
benhnhan[] benhnhan = new benhnhan[max];
Scanner input = new Scanner(System.in);
count n = new count();
int selected;

ThaoTac.addbenhnhan(benhnhan, n);

do
{
printMenu();

System.out.print("\nBan nhập vào chức nang: ");
selected = input.nextInt();
System.out.flush();
switch(selected)
9
{
case 1:
{
System.out.print("\n1. Nhập một bênh nhan moi.");
ThaoTac.selectInput(benhnhan, n);
break;
}
case 2:
{
if(n.getN() == 0 )
{
System.out.println("Chua có benh nhan nào trong danh sách ban hãy chon menu 1
de nhap các thông tin cho sinh viên.");
}
else
{
System.out.print("\n2. Xem danh sách benh nhan.");
ThaoTac.outputbenhnhan(benhnhan, n.getN());
}
break;
}
case 6:
{
if(n.getN() == 0 )
{

System.out.println("Chua có benh nhan nào trong danh sách ban hãy chon menu 1
de nhap các thông tin cho sinh viên.");
}
else
{
System.out.print("\n6. Sap xep danh sách theo thứ tự tăng dần theo tổng tiê`n.");
ThaoTac.sortbenhnhan(benhnhan, n.getN());
System.out.println("\nDanh sách dã được sắp xếp theo tổng tiê`n.");
}
break;
}
case 8:
{
if(n.getN() == 0 )
{
System.out.println("Chua có benh nhan nào trong danh sách bạn hãy chọn menu 1
de nhap các thông tin cho sinh viên.");
}
else
{
System.out.print("\n8. Kiêm tra xem danh sách dã sap xếp theo tổng tiê`n hay
chua.");
ThaoTac.checkSort(benhnhan, n.getN());
}
10
break;
}
case 3:
{
if(n.getN() == 0 )

{
System.out.println("Chua có benh nhan nào trong danh sách ban hãy chon menu 1
de nhap các thông tin cho sinh viên.");
}
else
{
System.out.println("\n3. Tìm kiem tuyến tính theo tổng tiê`n.");
ThaoTac.findPoint(benhnhan, n.getN());
}
break;
}
case 4:
{
if(n.getN() == 0 )
{
System.out.println("Chua có benh nhan nào trong danh sách bạn hãy chon menu 1
để nhập các thông tin cho sinh viên.");
}
else
{
System.out.print("\n4. Sửa tên benh nhan có mã được nhập từ bàn phím.");
ThaoTac.editbenhnhan(benhnhan, n.getN());
}
break;
}
case 5:
{
if(n.getN() == 0 )
{
System.out.println("Chua có benh nhan nào trong danh sách b?n hãy ch?n menu 1

d? nh?p các thông tin cho sinh viên.");
}
else
{
System.out.print("\n5. Xóa benh nhan có mã benh nhan được nhập từ bàn phím.");
ThaoTac.removeAt(benhnhan, n);
}
break;
}
case 7:
{
if(n.getN() == 0 )
{
11
System.out.println("Chua có benh nhan nào trong danh sách bạn hãy chon menu 1
de nhap các thông tin cho sinh viên.");
}
else
{
System.out.print("\n7. Chèn một benh nhan vào danh sách dã sắp xếp mà tính sắp
xếp vẫn duoc bao tồn. ");
ThaoTac.insertbenhnhan(benhnhan, n);
}
break;
}
case 0:
{
System.out.println("Kết thúc.");
break;
}

default:
{
System.out.println("Chuong trình không có chức năng này.");
break;
}
}
}
while(selected != 0);
}
catch(Exception ex)
{
//ex.printStackTrace();
System.err.print("Bạn nhập sai chuong trình tự động kết thúc.");
System.exit(0);
}
}
}
 ThaoTac:
 package baitaplon;


 import java.util.Scanner;

 public class ThaoTac
 {
 //Function print with format
 public static void printFormat()
 {
 System.out.println();


 for (int i = 1; i <= 129; i++)
 {
12
 if (i == 1 || i == 14 || i == 27 || i == 65 || i == 77 || i == 90 || i == 103 || i == 116 || i ==
129)
 {
 System.out.print("+");
 }
 else
 {
 System.out.print("-");
 }
 }
 }

 //Function print tile
 public static void printTile()
 {
 printFormat();
 System.out.printf("\n| %-10s | %-10s | %-35s | %-9s | %-10s | %-10s | %-10s | %-10s |",
"STT", "Ma SV", "Ho Va Ten", "Gioi Tinh", "tiền phòng", "tiền thuốc", "tiền dịch vụ",
"Tổng tiền");
 printFormat();
 }

 //Function remove symbol space
 public static String removeSpace(String s, boolean check) throws Exception
 {
 try
 {

 //xóa tất cả dấu cách đầu và cuối của xâu.
 s = s.trim();

 // hàm xóa 2 dấu cách liền nhau trong xâu.
 while(s.lastIndexOf(" ") != -1)
 {
 s = s.replaceAll(" ", " ");
 }

 //xóa tất cả các dấu cách còn lại trong xâu chỉ dùng với mã benh nhan và giới tính.
 if(check)
 {
 while(s.lastIndexOf(" ") != -1)
 {
 s = s.replaceAll(" ", "");
 }
 }

 return s;
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }
13

 //Function standardized data
 public static void standardized(benhnhan temp) throws Exception
 {

 try
 {
 temp.setMaBN(removeSpace(temp.getMaBN(), true));
 temp.setHoTen(removeSpace(temp.getHoTen(), false));
 temp.setGioiTinh(removeSpace(temp.getGioiTinh(), true));
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check ID exists
 public static int checkIDExists(benhnhan[] benhnhan, String ID, int n) throws
Exception
 {
 try
 {
 int result = -1;

 if(n > 0)
 {
 for(int i = 0; i < n; i++)
 {
 if(ID.equalsIgnoreCase(benhnhan[i].getMaBN()))
 {
 result = i;
 break;
 }
 }

 }

 return result;
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check maBN
 public static boolean checkID(String s) throws Exception
 {
 try
 {
 //kiểm tra xem ID có đúng định dạng không? ID chỉ chứa các ký tự từ a -> z, A -> Z
và 0 -> 9 độ dài = 10
 if(s.matches("^[a-zA-Z](\\w{0,9})$"))
14
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 catch(Exception ex)
 {
 throw ex;

 }
 }

 //Function check hoTen
 public static boolean checkFullName(String s) throws Exception
 {
 try
 {
 //kiểm tra họ tên, họ tên chỉ chứa các ký tự từ a -> z và A -> Z
 if(s.matches("[a-z A-Z]{5,40}"))
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check sex
 public static boolean checkSex(String s) throws Exception
 {
 try
 {
 //Kiểm tra giới tính, giới tính chỉ có thể là nam hoặc nu không phân biệt hoa thường.

 if(s.equalsIgnoreCase("nam") || s.equalsIgnoreCase("nu"))
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 catch(Exception ex)
 {
15
 throw ex;
 }
 }

 //Function check point
 public static boolean checkPoint(double point) throws Exception
 {
 try
 {
 //Kiểm tra tiền, tiền chỉ được lơn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10
 if(point >= 0 && point <= 10)
 {
 return true;
 }
 else
 {
 return false;
 }

 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 public static boolean checkContinue(String s) throws Exception
 {
 try
 {
 //Kiểm tra tiền, tiền chỉ được lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10
 if(s.equalsIgnoreCase("continue") || s.equalsIgnoreCase("new") ||
s.equalsIgnoreCase("cancel"))
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check all
 public static boolean checkAll(benhnhan temp) throws Exception

 {
 try
 {
 //Gọi các hàm kiểm tra tất cả dữ liệu nhập vào.
16
 if(checkID(temp.getMaBN()) && checkFullName(temp.getHoTen()) &&
checkSex(temp.getGioiTinh()) && checkPoint(temp.gettienphong()) &&
checkPoint(temp.gettienthuoc()) && checkPoint(temp.gettienDV()))
 {
 return true;
 }
 else
 {
 return false;
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function input benhnhan
 public static void inputbenhnhan(benhnhan[] benhnhan, count n) throws Exception
 {
 benhnhan temp = null;
 Scanner input = new Scanner(System.in);

 try
 {

 //Nhập số lượng benh nhan số lượng bệnh nhân chỉ duoc lon hon 0 và nho hon 100
 do
 {
 System.out.print("\n Bạn nhập vào số lượng bệnh nhân(0 < n < 100 ): ");
 n.setN(input.nextInt());
 }
 while(n.getN() <= 0 || n.getN() >= 100);

 for(int i = 0; i < n.getN(); i++)
 {
 System.out.printf("Ban nhap vao thong tin cho benh nhan thứ %d: ", i + 1);
 temp = new benhnhan();

 do
 {
 temp.inputbenhnhan();//1 đối tượng để chứa dữ liệu
 standardized(temp);//chuẩn hóa dữ liệu.
 if(checkIDExists(benhnhan, temp.getMaBN(), i) != -1)
 {
 System.out.printf("\nThong bao: ID \"%s\" da co trong danh sach. Moi ban
nhap lai:", temp.getMaBN());
 }
 }
 while(!checkAll(temp) || checkIDExists(benhnhan, temp.getMaBN(), i) != -1);

 benhnhan[i] = temp;//khi được chuẩn hóa và dữ liệu đúng điều kiện thì gán cho
benh nhan thứ i
17
 }
 }

 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function add data
 public static void addbenhnhan(benhnhan[] benhnhan, count n) throws Exception
 {
 Scanner input = new Scanner(System.in);
 benhnhan temp = null;
 int count, m = n.getN();

 try
 {
 do
 {
 System.out.printf("Bạn nhập vào số lượng bệnh nhân muốn thêm (Số lượng <=
%d): ", 99 - n.getN());
 count = input.nextInt();
 }
 while(!(count < 99 - n.getN()) || count <= 0);

 n.setN(n.getN() + count);

 for(int i = m; i < n.getN(); i++)
 {
 System.out.printf("Bạn nhập vào thông tin cho bệnh nhân thứ %d: ", i + 1);
 temp = new benhnhan();


 do
 {
 temp.inputbenhnhan();//1 đối tượng để chứa dữ liệu
 standardized(temp);// chuẩn hóa dữ liệu.

 if(checkIDExists(benhnhan, temp.getMaBN(), i) != -1)
 {
 System.out.printf("\nThông báo: ID \"%s\" đã có trong danh sách . Mời bạn
nhập lại:", temp.getMaBN());
 }
 }
 while(!checkAll(temp) || checkIDExists(benhnhan, temp.getMaBN(), i) != -1);

 benhnhan[i] = temp;//
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
18
 }

 //Function ouput benhnhan
 public static void outputbenhnhan(benhnhan[] benhnhan, int n) throws Exception
 {
 try
 {
 printTile();//in ra tiêu đề


 for(int i = 0; i < n; i++)
 {
 System.out.printf("\n| %-10d |", i + 1);
 benhnhan[i].displaybenhnhan();//in thông tin của các bệnh nhân
 System.out.printf("| %-10.2f |", sum(benhnhan[i]));
 printFormat();//in ra các line
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function Sum
 public static double sum(benhnhan temp) throws Exception
 {
 try
 {
 return temp.gettienphong() + temp.gettienthuoc() + temp.gettienDV();//tính tổng
tiền
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function sort by sum point
 public static void sortbenhnhan(benhnhan[] benhnhan, int n) throws Exception

 {
 benhnhan temp = null;

 try
 {
 //sắp xếp các bệnh nhân theo tông tiền.
 for(int i = 0; i < n - 1; i++)
 {
 for(int j = i + 1; j < n; j++)
 {
 if(sum(benhnhan[i]) < sum(benhnhan[j]))
 {
 temp = benhnhan[i];
19
 benhnhan[i] = benhnhan[j];
 benhnhan[j] = temp;
 }
 }
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check sort by sum point
 public static void checkSort(benhnhan[] benhnhan, int n) throws Exception
 {
 try

 {
 int i;

 for(i = 0; i < n - 1; i++)
 {
 if(sum(benhnhan[i]) < sum(benhnhan[i + 1]))
 {
 break;
 }
 }

 if(i == n - 1)
 {
 System.out.println("\nDanh sách đã được sắp xếp tăng dần theo tông tiền.");
 }
 else
 {
 System.out.println("\nDanh sách chưa được sắp xếp theo tông tiền.");
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function check exists sum point
 public static int checkSumPoint(benhnhan[] benhnhan, int[]a, double sumPoint, int n)
throws Exception
 {

 try
 {
 int count = 0;

 //kiểm tra nếu tổng tiền của bệnh nhân bằng với tiền nhập vào thì thêm vị trí của
bệnh nhân đó vào mảng a.
20
 for(int i = 0; i < n; i++)
 {
 if(sumPoint == sum(benhnhan[i]))
 {
 a[count] = i;
 count++;
 }
 }

 return count;
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function find by sum point
 public static void findPoint(benhnhan[] benhnhan, int n) throws Exception
 {
 Scanner input = new Scanner(System.in);
 int[]a = new int[n];
 double sumPoint;

 int count;

 try
 {
 System.out.print("\nBạn nhập vào tổng tiê`n cần tìm kiếm: ");
 sumPoint = input.nextDouble();

 count = checkSumPoint(benhnhan, a, sumPoint, n);//lấy số lượng tiền trong danh
sách bằng với tiền nhập vào.

 if(count > 0)
 {
 printTile();

 //in ra tất cả các bệnh nhân có tổng tiền bằng với tiền nhập vào.
 for(int i = 0; i < count; i++)
 {
 System.out.printf("\n| %-10d |", i + 1);
 benhnhan[a[i]].displaybenhnhan();//in thông tin của các bệnh nhân.
 System.out.printf("| %-10.2f |", sum(benhnhan[a[i]]));
 printFormat();//in ra các line
 }
 }
 else
 {
 System.out.printf("Không có bệnh nhân nào có tông tiền bằng = \"%-4.2f\"",
sumPoint);
 }
 }
21

 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function edit information
 public static void editbenhnhan(benhnhan[] benhnhan, int n) throws Exception
 {
 benhnhan temp = new benhnhan();
 Scanner input = new Scanner(System.in);
 String ID;
 int location;

 try
 {
 System.out.println("\nBạn nhập vào mã bệnh nhân cần sửa thông tin để kiểm tra : ");
 ID = input.nextLine();
 removeSpace(ID, true);
 location = checkIDExists(benhnhan, ID, n);//lấy vi trí của bệnh nhân có ID bằng ID
nhập vào

 if(location >= 0)
 {
 do
 {
 System.out.printf("\nbạn nhập vào thông tin bệnh nhân(mã bệnh nhân phải
là \"%s\"): ", ID);
 temp.inputbenhnhan();//đối tương gán tạm dữ liệu
 standardized(temp);//chuẩn hóa thông tin được nhập vào

 }
 while(!checkAll(temp) || !ID.equalsIgnoreCase(temp.getMaBN()));

 benhnhan[location] = temp;//nếu đúng thì gán thông tin cho bệnh nhân ở vị trí
trùng với vị trí đã lấy ở trên

 }
 else
 {
 System.out.printf("Không có bệnh nhân nào có mã\"%s\".", ID);
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function remove student
 public static void removeAt(benhnhan[] benhnhan, count n) throws Exception
 {
 Scanner input = new Scanner(System.in);
22
 String ID;
 int location;

 try
 {
 System.out.println("\nBạn nhập vào mã bệnh nhân cần xóa: ");
 ID = input.nextLine();

 removeSpace(ID, true);
 location = checkIDExists(benhnhan, ID, n.getN());//lấy vị trí của bệnh nhân trong
danh sách có ID bằng ID nhập vào

 if(location >= 0)
 {
 n.setN(n.getN() - 1);//giảm số lương học sinh đi 1 đơn vị.

 // bắt đầu gán lại thông tin cho các bệnh nhân từ vị trí thứ i tới n - 1.
 for(int i = location; i < n.getN(); i++)
 {
 benhnhan[i] = benhnhan[i + 1];
 }

 System.out.printf("benh nhan có mã\"%s\" đã được xóa khỏi danh sách.", ID);
 }
 else
 {
 System.out.printf("Không có bẹnh nhân nào có mã \"%s\".", ID);
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function insert
 public static void insertbenhnhan(benhnhan[] benhnhan, count n) throws Exception
 {

 Scanner input = new Scanner(System.in);
 benhnhan temp = new benhnhan();
 String ID;
 int location;

 try
 {
 do
 {
 System.out.println("\nBạn nhập mã bệnh nhân cần chèn(mã không được trùng,
nhỏ hơn hoặc bằng 10 ký tự và không chứa các ký tự đặc biệt): ");
 ID = input.nextLine();
 removeSpace(ID, true);
 }
 while(!checkID(ID));
23

 sortbenhnhan(benhnhan, n.getN());
 location = checkIDExists(benhnhan, ID, n.getN());

 if(location == -1)
 {
 do
 {
 System.out.printf("\nBạn nhập vào thông tin bệnh nhân (mã bệnh nhân phải
là\"%s\"): ", ID);
 temp.inputbenhnhan();
 standardized(temp);
 }
 while(!checkAll(temp) || !ID.equalsIgnoreCase(temp.getMaBN()));


 if(sum(temp) <= sum(benhnhan[n.getN() - 1]))
 {
 benhnhan[n.getN()] = temp;
 }
 else if(sum(temp) >= sum(benhnhan[0]))
 {
 for(int i = n.getN() - 1; i >= 0; i )
 {
 benhnhan[i + 1] = benhnhan[i];
 }

 benhnhan[0] = temp;
 }
 else
 {
 for(int i = n.getN() - 1; i >= 0; i )
 {
 benhnhan[i + 1] = benhnhan[i];

 if(sum(temp) >= sum(benhnhan[i]) && sum(temp) <= sum(benhnhan[i - 1]))
 {
 benhnhan[i] = temp;
 break;
 }
 }
 }

 n.setN(n.getN() + 1);
 }

 else
 {
 System.out.printf("đã có bệnh nhân có mã \"%s\".", ID);
 }
 }
 catch(Exception ex)
 {
 throw ex;
24
 }
 }

 public static void selectInput(benhnhan[] benhnhan, count n) throws Exception
 {
 Scanner input = new Scanner(System.in);
 String Continue;

 try
 {
 if(n.getN() > 0)
 {
 do
 {
 System.out.print("\nTrong danh sách đã có bệnh nhân bạn muốn nhập lại hay
tiếp tục thêm? (nhập lại: new, tiếp tục: continue, thoát: cancel): ");
 Continue = input.next();
 }
 while(!checkContinue(Continue));

 if(Continue.equalsIgnoreCase("Continue"))

 {
 addbenhnhan(benhnhan, n);
 }
 else if(Continue.equalsIgnoreCase("new"))
 {
 inputbenhnhan(benhnhan, n);
 }
 }
 else
 {
 inputbenhnhan(benhnhan, n);
 }
 }
 catch(Exception ex)
 {
 throw ex;
 }
 }

 //Function create benhnhan
 public static void createbenhnhan(benhnhan[] benhnhan, count n)
 {
 n.setN(10);

 for (int i = 0; i < n.getN(); i++)
 {
 benhnhan[i] = new benhnhan("C0042" + i, "Trâ`n Văn Duẩn " + i,
"Nam", i, i, i);
 }


 benhnhan[5] = new benhnhan("C0042" + 5, "Trâ`n Văn Duẩn" + 5, "Nam", 10,
0, 4);
 benhnhan[9] = new benhnhan("C0042" + 9, "Trâ`n Văn Duẩn " + 9, "Nam", 0,
0, 0);
25

×