Đề tài Nhập danh sách n học sinh viết dưới dạng các thuộc tính: họ tên, năm sinh và tổng điểm.. In ra danh sách học sinh đã sắp xếp sao cho tất cả các chữ cái đầu của họ tên chuyển thành
Trang 1Chuyên nghành: Công nghệ thông tin
Trang 2Giảng viên hướng dẫn:Mai Thúy Hà Nhóm 12:
Lớp:
MÔN HỌC: LÂP TRÌNH HƯỚNG ĐỐI TƯỢNG
Hà Nội, ngày 20/4/2014
Trang 3Đề tài Nhập danh sách n học sinh viết dưới dạng các thuộc tính: họ tên, năm sinh
và tổng điểm Sắp xếp theo thứ tự giảm dần của tổng điểm Khi tổng điểm như nhau thì học sinh có năm sinh nhỏ hơn được đứng trước In ra danh sách học sinh đã sắp xếp sao cho tất cả các chữ cái đầu của họ tên chuyển thành chữ hoa
Trang 4I- Yêu cầu bài toán
- Nhập danh sách gồm n học sinh với các thuộc tính: họ tên, năm sinh và tổng điểm
- Sắp xếp danh sách giảm dần theo tổng điểm, nếu tổng điểm bằng nhau thì học sinh nào
có năm sinh nhỏ hơn sẽ đứng trước
- In ra danh sách học sinh đã được sắp xếp với các chữ cái đầu của học tên được viết hoa
II- Các chức năng của chương trình
- Nhập thông tin học sinh
- Hiển thị danh sách học sinh
- Sắp xếp danh sách học sinh theo điểm trung bình
- Tìm kiếm thông tin học sinh theo mã học sinh
Trang 5III- Lưu đồ và giải thuật
Trang 6IV- Cài đặt và sử dụng chương trình
1 Cài đặt chương trình
a Các thư viện
• Class java: hocsinh
java.io.BufferedReader;
java.io.FileOutputStream;
java.io.FileReader;
java.io.IOException;
java.io.PrintWriter;
java.util.ArrayList;
javax.swing.JOptionPane;
• jFrame java: QLHS
java.io.IOException;
java.util.ArrayList;
java.util.logging.Level;
java.util.logging.Logger;
javax.swing.JOptionPane;
javax.swing.table.DefaultTableModel;
b Các biến khai báo
Tên biến Kiểu dữ liệu Ý nghĩa
c Các chương trình chính
• Tím kiếm theo mã học sinh
Hocsinh timkiemID(ArrayList<Hocsinh> list,String mahs){ for(Hocsinh i:list){
if(mahs.equalsIgnoreCase(i.getMahs())) {
return i; }}
return null;
}
• Chuẩn hóa tên
Trang 7public String chuanhoa(String input){
String result = "";
input = input.toLowerCase(); //chuyen chuoi nhap vao ve chu thuong
String[] arr = input.split(" "); //cat chuoi nhap vao boi cac dau cach
for(String s : arr) { //duyet mang
if(!s.equals("") && !s.equals(null)){
result += String.valueOf(s.charAt(0)).toUpperCase() +s.substring(1) + " ";} }
if (!result.equals("") && result.equals(null)) {
result = result.substring(0,result.length()-1); // xoa ky tu trang sau cung } return result;
}
• Nhập mới
private void nhapmoiActionPerformed(java.awt.event.ActionEvent evt) { mhs.setText(null);
firstname1.setText("");
lastname1.setText("");
ngay.setName(String.valueOf(1));
thang.setName(String.valueOf(1));
nam.setName(String.valueOf(1986));
dtb1.setText("");
}
• Hiển thị
private void hienthidsActionPerformed(java.awt.event.ActionEvent evt) { DefaultTableModel m = (DefaultTableModel) bangds.getModel();
m.getDataVector().removeAllElements();
m.fireTableDataChanged();
for(Hocsinh i:listhocsinh){ m.addRow(new}
Object[]{i.getMahs(),i.getFirstname(),i.getLastname(),i.getDate(),i.getDtb()});} }
• Nhập học sinh
Trang 8private void okActionPerformed(java.awt.event.ActionEvent evt) { if(temp.timkiemID(listhocsinh, mhs.getText())== null){
Hocsinh a;
boolean flag = true;
Hocsinh[] c = new Hocsinh[200];
try{ if(mhs.getText().equals("")||firstname1.getText().equals("")||
lastname1.getText().equals("")||
dtb1.getText().equals("")){
JOptionPane.showMessageDialog(null, "Hãy nhập đủ thông tin");
flag=true;
}else{
a = new Hocsinh();
a.setMahs(mhs.getText());
a.setFirstname(firstname1.getText());
a.setLastname(lastname1.getText());
a.setDate(ngay.getSelectedItem()+"/"+thang.getSelectedItem()
+"/"+nam.getSelectedItem());
a.setDtb(Float.parseFloat(dtb1.getText()));
a.ghiFile();
listhocsinh.add(a);
hienthi();
JOptionPane.showMessageDialog(null, "Nhập thành công");}
}catch(IOException e){
JOptionPane.showMessageDialog(null, ""+e.getMessage());}
}else{
JOptionPane.showMessageDialog(null, "Ma sinh viên nay da ton tai.Moi nhap lai ");} }
Trang 9• Sắp xếp theo đtb
private void sapxepdtbActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel m= (DefaultTableModel) bangds.getModel();
m.getDataVector().removeAllElements();
m.fireTableDataChanged();
int length = listhocsinh.size();
Hocsinh[] b = new Hocsinh[length];
for(int j=0;j<length;j++){
b[j]= listhocsinh.get(j); }
for(int i=0;i<length-1;i++){
for(int j=i+1;j<length;j++){
if(b[j].getDtb()>b[i].getDtb()){
Hocsinh tmp = new Hocsinh();
tmp= b[i];
b[i] = b[j];
b[j]= tmp; }
else if( b[j].getDtb().equals(b[i].getDtb()) ){
int xs= Integer.parseInt(b[i].getDate().split("/")[2]);
int ys= Integer.parseInt(b[j].getDate().split("/")[2]);
int xs1= Integer.parseInt(b[i].getDate().split("/")[1]);
int ys1= Integer.parseInt(b[j].getDate().split("/")[1]);
int xs2= Integer.parseInt(b[i].getDate().split("/")[0]);
int ys2= Integer.parseInt(b[j].getDate().split("/")[0]);
if(xs>ys){
Hocsinh tmp = new Hocsinh();
tmp= b[i];
b[i] = b[j];
b[j]= tmp; }
else if(xs==ys) {
if(xs1>ys1) {
Hocsinh tmp = new Hocsinh();
tmp= b[i];
b[i] = b[j];
b[j]= tmp; }
else if(xs1==ys1) {
if(xs2>ys2) {
Hocsinh tmp = new Hocsinh();
tmp= b[i];
b[i] = b[j];
b[j]= tmp; }}}}}}
for(int k=0;k<b.length;k++){
Trang 10m.addRow(new Object[]
{b[k].getMahs(),b[k].getFirstname(),b[k].getLastname(),b[k].getDate(),b[k].getDtb() });
}
}
a Các chương trình phụ
• Ghi file
void ghiFile() throws IOException {
FileOutputStream file = new FileOutputStream("HocSinh.txt",true); try (PrintWriter pw = new PrintWriter(file)) {
pw.println("***");
pw.println(String.valueOf(getMahs()));
pw.println(String.valueOf(getFirstname()));
pw.println(String.valueOf(getLastname()));
pw.println(String.valueOf(getDate()));
pw.println(String.valueOf(getDtb()));
pw.close();}
}
• Đọc file
void docfile(ArrayList<Hocsinh> list){
try {
FileReader fr = new FileReader("HocSinh.txt");
input = new BufferedReader(fr);
while(input.readLine()!= null){
Hocsinh a = new Hocsinh();
a.setMahs(input.readLine());
a.setFirstname(input.readLine());
a.setLastname(input.readLine());
a.setDate(input.readLine());
a.setDtb(Float.parseFloat(input.readLine()));
list.add(a); }
}
catch(IOException | NumberFormatException e){}
}
Trang 112 Sử dụng chương trình
a Giao diện chương trình: Gồm 2 khu vực cho phép nhập các thông tin của học
sinhbên trái và khu vực chức năng cho phép quản lý học sinh bên phải
b Nhập thông tin của một học sinh:
Bước 1: Điền đầy đủ các thông tin của học sinh
Bước 2: Nhân nút OK để kết thúc quá trình nhập
Trang 12Nếu thực đúng các bước nhập trên sẽ có một thông báo hiện lên bạn đã nhập thành công
Nhấn vào nút Nhập mới để nhập thêm học sinh mới
c Hiển thị và Sắp xếp danh sách học sinh:
Bạn nhấn vào nút Hiển thị danh sách của trương trình toàn bộ thông tin Học sinh sẽ được hiện thị lên màn hình Nhấn vào nút Sắp xếp theo ĐTB để thực hiện sắp
xếp
Trang 13Mục Lục