BÀI TẬP LỚN LẬP TRÌNH JAVA

46 2.1K 2
BÀI TẬP LỚN LẬP TRÌNH JAVA

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN & BÀI TẬP LỚN LẬP TRÌNH JAVA Đề tài: “Tìm hiểu về vào/ra tệp (Text và Binary) trong Java. Viết chương trình nhập vào một danh sách sinh viên với các thông tin là mã sinh viên, họ tên, ngày sinh. Ghi danh sách sinh viên ra tệp. Đọc lại danh sách sinh viên từ tệp, tách họ tên thành họ đệm và tên, sắp xếp danh sách theo tên vần ABC, nếu trùng tên sắp xếp theo họ đệm. Chương trình có khả năng nhập dữ liệu từ tệp Excel và ghi dữ liệu ra tệp Excel.” Giảng viên hướng dẫn: Ngô Công Thắng Nhóm sinh viên thực hiện: Nguyễn Thị Linh Chi Vũ Thị Mai Hoa Phạm Văn Hưởng Lê Thị Hồng Nhung Nguyễn Thị Sen HÀ NỘI – 2010 MỤC LỤC I. Vào ra tệp trong Java 15 1. Luồng (Streams) 15 1.1. Khái niệm luồng 15 1.2. Luồng byte (Byte Streams) 16 1.3. Luồng ký tự (Character Streams) 16 1.4. Những luồng được định nghĩa trước (The Predefined Streams) 16 2. Vào ra tệp 17 2.1. Vào ra tệp dùng luồng byte 17 2.1.1 Vào ra tệp văn bản 17 2.1.2 Vào ra tệp nhị phân 22 2.2. Vào ra tệp dùng luồng ký tự 27 II. Chương trình 31 /** 31 *- Lop: THC - K52 31 - Bai tap lon: Lap trinh JaVa 31 - Giang vien huong dan: Thay Ngo Cong Thang 31 - Sinh vien thuc hien: 31 Nguyen Thi Linh Chi 31 Vu Thi Mai Hoa 31 Pham Van Huong 31 Le Thi Hong Nhung 32 Nguyen Thi Sen 32 *- De tai: 32 + Tim hieu vao/ra tep (text/binary) trong JaVa 32 + Viet chuong trinh nhap vao mot danh sach sinh vien voi cac thong tin la Ma sinh vien, ho ten, ngay sinh 32 2 Ghi danh sach sinh vien ra tep. Doc lai danh sach sinh vien tu tep,tach ho ten thanh ho dem va ten, 32 sap xep danh sach theo ten van ABC, neu trung ten sap xep theo ho dem. Chuong trinh co kha nang nhap du lieu 32 tu tep Excel va ghi du lieu ra tep Excel 32 **/ 32 import java.io.*; 32 import java.util.*; 32 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 32 import org.apache.poi.hssf.usermodel.HSSFSheet; 32 import org.apache.poi.hssf.usermodel.HSSFRow; 32 import org.apache.poi.hssf.usermodel.HSSFCell; 32 import fita.ncthang.console.cin; 32 32 public class JavaPro 32 { 32 public static void main(String[] args) throws IOException 32 { 32 Student[] stdList = null; 32 int choice; 33 String filename = ""; 33 end_while: 33 while (true) 33 { 33 System.out.println(); 33 System.out.println("1. Nhap danh sach sinh vien tu ban phim."); 33 System.out.println("2. Hien danh sach sinh vien ra man hinh."); 33 System.out.println("3. Sap xep danh sach sinh vien theo ho ten."); 33 System.out.println("4. Ghi danh sach sinh vien tu tep van ban."); 33 System.out.println("5. Doc danh sach sinh vien ra tep van ban."); 33 System.out.println("6. Ghi danh sach sinh vien tu tep Excel."); 33 3 System.out.println("7. Doc danh sach sinh vien tu tep Excel."); 33 System.out.println("8. Thoat chuong trinh."); 33 System.out.print("Nhap lua chon: "); 33 choice = cin.getInt(); 33 switch (choice) 33 { 33 case 1: 33 stdList = inputStudentList(); 33 break; 33 case 2: 33 if (stdList != null) showStudentList(stdList); 33 else System.out.println("Khong co sinh vien trong danh sach."); 33 break; 33 case 3: 34 stdList = sortingStudentList(stdList); 34 34 break; 34 case 4: 34 System.out.print("Nhap ten tep de ghi danh sach sinh vien: "); 34 filename = cin.getString(); 34 if (stdList != null) 34 { fileOutput(stdList, filename); 34 System.out.print("\nDANH SACH SINH VIEN DA DUOC LUU VAO TEP "+filename); 34 System.out.println(); 34 } 34 else 34 System.out.println("Khong co sinh vien trong danh sach."); 34 break; 34 case 5: 34 System.out.print("Nhap ten tep de doc danh sach sinh vien: "); 34 filename = cin.getString(); 34 4 stdList = fileInput(filename); 34 break; 34 case 6: 34 System.out.print("Nhap ten tep Excel de ghi danh sach sinh vien (*.xls): "); 34 filename = cin.getString(); 35 if (stdList != null) 35 { 35 excelOutput(stdList, filename); 35 System.out.print("\nDANH SACH SINH VIEN DA DUOC LUU VAO TEP "+filename);. .35 System.out.println(); 35 } 35 else 35 System.out.println("Khong co sinh vien trong danh sach."); 35 break; 35 case 7: 35 System.out.print("Nhap ten tep Excel de doc danh sach sinh vien (*.xls): "); 35 filename = cin.getString(); 35 stdList = excelInput(filename); 35 break; 35 35 case 8: 35 break end_while; 35 default: 35 System.out.println("Chon sai, hay chon lai."); 35 } 35 } 35 } 35 35 public static Student[] inputStudentList() 36 { 36 Student[] std = null; 36 5 int std_num; 36 String id = "", name = "", birth = ""; 36 do 36 { 36 System.out.print("Nhap so sinh vien: "); 36 std_num = cin.getInt(); 36 } while (std_num <= 0); 36 std = new Student[std_num]; 36 System.out.println("Nhap danh sach sinh vien:"); 36 for (int i = 0; i < std_num; i++) 36 { 36 System.out.printf("Nhap sinh vien thu %d:\n", i + 1); 36 System.out.print("Nhap ma sinh vien: "); 36 id = cin.getString(); 36 System.out.print("Nhap ho ten: "); 36 name = cin.getString(); 36 System.out.print("Nhap ngay sinh (xx/yy/zzzz): "); 36 birth = cin.getString(); 36 std[i] = new Student(id, name, birth); 36 36 } 36 return std; 36 } 36 36 public static void showStudentList(Student[] std) 37 { 37 int std_num = std.length; 37 System.out.println(); 37 System.out.println(); 37 System.out.println("Danh sach sinh vien:"); 37 System.out.printf("%-15s %-20s %-15s\n", "Ma sinh vien", "Ho ten", "Ngay sinh");. .37 6 for (int i = 0; i < std_num; i++) 37 System.out.printf("%-15s %-20s %-15s\n", std[i].getStudentID(), std[i].getFullName(), std[i].getDayOfBirth()); 37 } 37 37 public static Student[] fileInput(String filename) throws IOException 37 { 37 Student[] std = null; 37 int std_num; 37 String id = "", name = "", birth = ""; 37 String std_info = ""; 37 try { 37 FileReader freader = new FileReader(filename); 37 BufferedReader buffered = new BufferedReader(freader); 37 std_num = Integer.parseInt(buffered.readLine()); 37 std = new Student[std_num]; 37 for (int i = 0; i < std_num; i++) 37 { 37 std_info = buffered.readLine().trim(); 37 int index = std_info.indexOf(" "); 38 int l_index = std_info.lastIndexOf(" "); 38 id = std_info.substring(0, index).trim(); 38 name = std_info.substring(index + 1, l_index).trim(); 38 birth = std_info.substring(l_index + 1).trim(); 38 std[i] = new Student(id, name, birth); 38 38 } 38 System.out.print("Noi dung co trong tep van ban la:\n"); 38 showStudentList(std); 38 buffered.close(); 38 } 38 7 catch (IOException exc) { 38 System.out.println("Khong the mo tep"); 38 } 38 return std; 38 } 38 38 public static void fileOutput(Student[] std, String filename) throws IOException 38 { 38 String std_info; 38 int std_num = std.length; 38 try { 38 FileWriter fwriter = new FileWriter(filename); 38 BufferedWriter buffered = new BufferedWriter(fwriter); 38 buffered.write("" + std_num); 38 buffered.newLine(); 39 for (int i = 0; i < std_num; i++) 39 { 39 std_info = "" + std[i].getStudentID() + " " + std[i].getFullName() + " " + std[i].getDayOfBirth(); 39 buffered.write(std_info); 39 buffered.newLine(); 39 } 39 buffered.flush(); 39 buffered.close(); 39 } 39 catch (IOException exc) { 39 System.out.println("Khong the tao tep"); 39 } 39 } 39 39 public static Student[] sortingStudentList(Student[] std) 39 8 { 39 Student tmp = null; 39 int std_num = std.length; 39 for (int i = 0; i < std_num - 1; i++) 39 for (int j = i + 1; j < std_num; j++) 39 if (std[i].getName().compareToIgnoreCase(std[j].getName()) == 0) 39 { 39 if (std[i].getFullName().compareToIgnoreCase(std[j].getFullName()) > 0) 39 { 40 tmp = std[i]; 40 std[i] = std[j]; 40 std[j] = tmp; 40 showStudentList(std); 40 } 40 } 40 else 40 if (std[i].getName().compareToIgnoreCase(std[j].getName()) > 0) 40 { 40 tmp = std[i]; 40 std[i] = std[j]; 40 std[j] = tmp; 40 showStudentList(std); 40 } 40 else 40 showStudentList(std); 40 40 return std; 40 } 40 40 public static Student[] excelInput(String filename) 40 { 40 9 Student[] std = null; 40 int std_num = 0; 40 String id = "", name = "", birth = ""; 40 try 41 { 41 FileInputStream fIn = new FileInputStream(filename); 41 HSSFWorkbook workbook = new HSSFWorkbook(fIn); 41 HSSFSheet sheet = workbook.getSheet("Sheet0"); 41 HSSFRow row = null; 41 HSSFCell cell = null; 41 row = sheet.getRow(0); 41 cell = row.getCell(0); 41 std_num = Integer.parseInt(cell.getStringCellValue()); 41 std = new Student[std_num]; 41 for (int i = 1; i <= std_num; i++) 41 { 41 row = sheet.getRow(i); 41 for (int j = 0; j < 3; j++) 41 { 41 cell = row.getCell(j); 41 switch (j) 41 { 41 case 0: 41 id = cell.getStringCellValue(); 41 break; 41 case 1: 41 name = cell.getStringCellValue(); 41 break; 41 case 2: 41 birth = cell.getStringCellValue(); 41 break; 42 10 [...]... 46 14 I Vào ra tệp trong Java Các dữ liệu mà một chương trình ngôn ngữ Java sử dụng phải lấy từ rất nhiều loại nguồn dữ liệu khác nhau, bao gồm cả cơ sở dữ liệu, chuyển giao byte trực tiếp qua một ổ cắm (socket) và các tệp tin Ngôn ngữ Java sẽ mang lại cho bạn rất nhiều công cụ để bạn có thể nhận được các thông tin từ các nguồn bên ngoài Các công cụ này phần lớn nằm trong gói java. io Trong tất cả các... ngôn ngữ Java để tương tác với các tệp tin là một kỹ năng cơ bản của lập trình viên Nhìn chung, ngôn ngữ Java cung cấp cho bạn một lớp bao gói (File) cho kiểu tệp tin trong hệ điều hành của bạn Để đọc tệp tin đó, bạn phải sử dụng các luồng (streams) phân tích cú pháp các byte đầu vào thành các kiểu của ngôn ngữ Java Xử lý files là một phần của công việc xử lý các luồng, giúp cho một chương trình có... Luồng thường được hệ thống xuất nhập trong Java gắn kết với một thiết bị vật lý Tất cả các luồng đều có chung một nguyên tắc hoạt động ngay cả khi chúng được gắn kết với các thiết bị vật lý khác nhau Vì vậy cùng một lớp, phương thức xuất nhập có thể dùng chung cho các thiết bị vật lý khác nhau Java hiện thực luồng bằng tập hợp các lớp phân cấp trong gói java. io 15 Java định nghĩa 2 kiểu luồng: Byte (hỗ... xuất dữ liệu của luồng Những lớp dẫn xuất từ Reader và Writer thao tác trên các luồng ký tự Unicode 1.4 Những luồng được định nghĩa trước (The Predefined Streams) Tất cả các chương trình viết bằng java luôn tự động import gói java. lang Gói này có định nghĩa lớp System, bao gồm một số đặc điểm của môi trường runtime, nó có ba biến luồng được định nghĩa trước là in, out và err, các biến này là các fields... System.out 2 Vào ra tệp 2.1 Vào ra tệp dùng luồng byte Java cung cấp hai lớp InputStream và OutputStream là siêu lớp đối với tất các các lớp luồng xuất nhập kiểu byte Những phương thức trong hai siêu lớp này đưa ra các lỗi kiểu IOException Những phương thức định nghĩa trong hai siêu lớp này có thể dùng trong các lớp con của chúng Vì vậy tập các phương thức đó là tập tối tiểu các chức năng nhập xuất mà những... của file “test.txt” lên màn hình import java. io.*; class DtoS { public static void main(String args[]) throws Exception { FileReader fr = new FileReader("D:\\test.txt"); BufferedReader br = new BufferedReader(fr); String s; while((s = br.readLine()) != null) { System.out.println(s); } fr.close(); } } II Chương trình /** *- Lop: THC - K52 - Bai tap lon: Lap trinh JaVa - Giang vien huong dan: Thay Ngo... trong JaVa + Viet chuong trinh nhap vao mot danh sach sinh vien voi cac thong tin la Ma sinh vien, ho ten, ngay sinh Ghi danh sach sinh vien ra tep Doc lai danh sach sinh vien tu tep,tach ho ten thanh ho dem va ten, sap xep danh sach theo ten van ABC, neu trung ten sap xep theo ho dem Chuong trinh co kha nang nhap du lieu tu tep Excel va ghi du lieu ra tep Excel **/ import java. io.*; import java. util.*;... fin.close(); fout.close(); } } 2.1.2 Vào ra tệp nhị phân Để đọc và ghi giá trị nhị phân của các kiểu dữ liệu trong java, chúng ta sử dụng DataInputStream và DataOutputStream DataInputStream: thực hiện interface DataInput Interface DataInput có các phương thức cho phép đọc tất cả những kiểu dữ liệu cơ sở của Java (theo định dạng nhị phân) Phương thức boolean readBoolean( ) Byte readByte( ) char readChar( ) double... thức đó là tập tối tiểu các chức năng nhập xuất mà những luồng nhập xuất kiểu byte có thể sử dụng 2.1.1 Vào ra tệp văn bản Đối với các file text, có các byte dữ liệu là các ký tự trong bảng mã ASCII, Java sử dụng FileInputStream và FileOutputStream • Đọc dữ liệu từ tệp - Mở một tệp để đọc dữ liệu: tạo đối tượng lớp FileInputStream gắn với tệp cần mở, tên tệp cần mở là đối số truyền vào cho hàm tạo... Đọc một giá trị Int Đọc một giá trị Long Đọc một giá trị Short DataOutputStream: thực hiện interface DataOuput Interface DataOutput có các phương thức cho phép ghi tất cả những kiểu dữ liệu cơ sở của java đến luồng (theo định dạng nhị phân) Phương thức void writeBoolean (boolean val) void writeByte (int val) 22 Nghĩa Ghi xuống boolean được xác định bởi val Ghi xuống luồng một byte được luồng một giá . NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN & BÀI TẬP LỚN LẬP TRÌNH JAVA Đề tài: “Tìm hiểu về vào/ra tệp (Text và Binary) trong Java. Viết chương trình nhập vào một danh sách sinh viên với các. biết cách sử dụng các API có sẵn của ngôn ngữ Java để tương tác với các tệp tin là một kỹ năng cơ bản của lập trình viên. Nhìn chung, ngôn ngữ Java cung cấp cho bạn một lớp bao gói (File) cho. nhập có thể dùng chung cho các thiết bị vật lý khác nhau. Java hiện thực luồng bằng tập hợp các lớp phân cấp trong gói java. io. 15 Java định nghĩa 2 kiểu luồng: Byte (hỗ trợ việc nhập/xuất dữ

Ngày đăng: 14/04/2015, 09:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan