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

CHƯƠNG TRÌNH QUẢN LÝ HỌC SINH

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 (403.17 KB, 13 trang )

Chuyên nghành: Công nghệ thông tin
Giả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
2
Đề 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.
3
I- 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
4
III- Lưu đồ và giải thuật
5
IV- 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
mahs String Mã học sinh
firstname String Họ và đệm
lastname String Tên
date String Ngày sinh
dtb Float Điểm trung bình
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
6
public 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
7
private 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 ");} }
8
• 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++){
9
m.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){}
}
10
2. 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
11
Nế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
12
Mục Lục
13

×