Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
671,84 KB
Nội dung
Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] MƠN : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài tập lớn : Xây dựng trình quản lý hệ thống file mini I Mục tiêu : Giúp SV thực hành để hiểu biết hầu hết tính chất khả lập trình hướng đối tượng VC# để xây dựng ứng dụng thực tế II Nội dung : Thiết kế trực quan cửa sổ ứng dụng FileManager theo đặc tả chi tiết Viết code cho hàm xử lý kiện thực chức quản lý hệ thống file chương trình III Chuẩn đầu : Sinh viên nắm vững dùng thành thạo qui trình kỹ thuật để thiết kế trực quan cửa sổ giao diện chương trình, thiết lập giá trị thuộc tính cho phần tử giao diện, khai báo hàm xử lý kiện cho kiện quan tâm đối tượng giao diện Sinh viên nắm vững sử dụng thành thạo tính chất lập trình hướng đối tượng tính thừa kế, bao đóng, đa xạ để xây dựng đoạn code tổng qt hóa IV Đặc tả chương trình FileManager : Chương trình phải cung cấp chức quản lý hệ thống file sau : duyệt tìm xóa file thỏa mãn pattern qui định từ thư mục bắt đầu người dùng qui định duyệt tìm xóa file *.exe virus exe.exe tạo từ thư mục bắt đầu người dùng qui định duyệt tìm phần tử có độ sâu sâu thư mục người dùng qui định Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] duyệt tìm tính số lượng file thư mục thỏa mãn pattern qui định từ thư mục bắt đầu người dùng qui định duyệt tìm tính tổng kích thước file thỏa mãn pattern qui định từ thư mục bắt đầu người dùng qui định V Phân tích : Để giúp người dùng thực chức trên, chương trình nên có menubar sau : Để giúp người dùng thực chức dễ dàng nhanh chóng hơn, chương trình nên có toolbar sau (mỗi icon toolbar giúp thực nhanh chức tương ứng chương trình) : Phân tích chức cần thực chương trình, ta thấy qui trình thực chức có cơng việc giống sau : cần form giao diện để người dùng xác định thư mục bắt đầu xử lý, chuỗi pattern nhận dạng phần tử cần xử lý, hiển thị thông tin xử lý theo thời gian Thí dụ form có dạng sau : Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] cần đoạn code thực thuật giải duyệt phân cấp từ thư mục xác định người dùng để tìm tất phần tử thỏa mãn pattern qui định để xử lý Lưu ý chức qui định việc xử lý phần tử tìm hồn tồn khác : chức xóa file xóa file, chức đếm số lượng tăng count đếm, … Sau phân tích chức chương trình nắm vững kiến thức thiết kế phần mềm hướng đối tượng, ta thấy để giải tốt chức chương trình dùng mẫu thiết kế phổ dụng có tên “Template method” với lược đồ class sau : Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Form Client Show() CRecursiveBrowseDlg //các thuộc tính giao diện //các template method Duyetcay() btnBrowse_Click() btnStart_Click() //các primitive method InitForm() Prolog() Action() Epilog() CFilesDeleteDlg //override primitive method InitForm() Prolog() Action() Epilog() CDeepLengthDlg //override primitive method InitForm() Prolog() Action() Epilog() thiết kế trực quan lần để tạo giao diện cho form giao diện tổng quát để người dùng xác định thư mục bắt đầu xử lý, chuỗi pattern nhận dạng phần tử cần xử lý, hiển thị thông tin xử lý theo thời gian Đặt tên class cho form CRecursiveBrowseDlg, thuộc tính dùng chung, hàm xử lý button Browse, button Start viết lần class CRecursiveBrowseDlg, ta gọi hàm template function, thí dụ hàm DuyetCay() miêu tả thuật giải duyệt phân cấp dùng chung cho chức xử lý hệ thống file Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Để thực chức năng, ta định nghĩa class CrecursiveBrowseDlg cần override hàm primitive InitForm, Prolog, Action, Epilog VI Qui trình xây dựng chương trình VI.1 Qui trình điển hình để tạo icon đồ họa toolbar thể chức : Toolbar cửa sổ chứa nhiều button (icon), button cho phép thực chức ứng dụng Các button có kích thước nhau, nên kết hợp ảnh bitmap với button, nội dung ảnh gợi ý cho người dùng chức tương ứng (thí dụ ảnh dạng kéo gợi ý chức Cut, ) Công việc cần thực dùng trình soạn thảo đồ họa (Paint, CorelDraw, ) để thiết kế (vẽ) ảnh bitmap gợi ý cho chức button Toolbar Bạn vẽ hình bitmap hay dùng trình "Screen Capture" cắt icon có sẵn ứng dụng đo chạy dán vào vùng soạn thảo ảnh trình soạn thảo đồ họa Sau soạn xong ảnh, ta cất ảnh lên file dạng *.bmp Lưu ý ảnh phải có kích thước (thí dụ ta chọn 20*20) : - file FilesDelete.bmp chứa ảnh button (xóa file) - file FilesCount.bmp chứa ảnh button (đếm số lượng) - file FilesSize.bmp chứa ảnh button (tính tổng kích thước) - file DeepLen.bmp chứa ảnh button (tính độ sâu max) - file ExeVirusDel.bmp chứa ảnh button - file Help.bmp chứa ảnh button (trợ giúp chương trình) - file About.bmp chứa ảnh button (giới thiệu thơng tin chương trình) (tìm diệt virus exe.exe) VI.2 Qui trình điển hình để xây dựng MenuBar cho cửa sổ chương trình : Chạy VS Net, chọn menu File.New.Project để hiển thị cửa sổ New Project Mở rộng mục Visual C# TreeView "Project Types", chọn mục Window, chọn icon "Windows Application" listbox "Templates" bên phải, thiết lập thư mục Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] chứa Project listbox "Location", nhập tên Project vào textbox "Name:" (td FileManager), click button OK để tạo Project theo thông số khai báo Form ứng dụng hiển thị cửa sổ thiết kế, việc thiết kế form trình lặp thao tác tạo mới/xóa/hiệu chỉnh thuộc tính/tạo hàm xử lý kiện cho đối tượng cần dùng form Nếu cửa sổ ToolBox chưa hiển thị chi tiết, chọn menu View.Toolbox để hiển thị (thường nằm bên trái hình) Click chuột vào button (Auto Hide) nằm góc phải cửa sổ ToolBox để chuyển chế độ hiển thị thường trực Duyệt tìm phần tử MenuStrip (trong nhóm Menu & Toolbars), chọn nó, drag vị trí form để tạo menubar cho cửa sổ chương trình Menubar tạo cửa sổ Menubar có menu trống có caption “Type Here” Click chuột vào chuỗi “Type Here” để thiết lập cursor nhập vào caption menu chương trình “File” Sau nhập xong caption cho menu, click chuột để chọn nó, cửa sổ thuộc tính menu hiển thị cửa sổ thuộc tính (thường nằm phải hình) Duyệt tìm hiệu chỉnh nội dung thuộc tính (Name) = mnuFile Chọn lại menu File, chứa MenuItem trống có caption “Type Here” : Click chuột vào chuỗi “Type Here” menu pop-up “File” để thiết lập cursor nhập vào caption MenuItem “Xóa file đệ quy” Sau nhập xong caption cho MenuItem, click chuột để chọn nó, máy hiển thị cửa sổ thuộc tính Ấn phải chuột MenuItem để hiển thị menu lệnh, chọn chức Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] “Set Image” để hiển thị cửa sổ “Set Resource”, đánh dấu chọn vào checkbox “Local resource”, click button Import, duyệt tìm xác định file bitmap dùng làm icon cho MenuItem Xem cửa sổ thuộc tính MenuItem “Xóa file đệ quy” vừa tạo, duyệt tìm hiệu chỉnh nội dung thuộc tính (Name) = mnuFilesDelete Lặp lại bước để tạo MenuItem chức lại : - “Tính số lượng file đệ quy” có (Name) = mnuFilesCount - “Tính tổng kích thước file đệ quy” có (Name) = mnuFilesSize - “Tính độ sâu maximum thư mục” có (Name) = mnuFileDeepLen - “Diệt virus exe.exe” có (Name) = mnuFileVirusDel - “-“ có (Name) = tên mặc định Phần từ tự biến thành phân cách (để tạo nhóm chức menu pop-up) - “Exit” có (Name) = mnuFileExit 10 Lặp lại bước & để tạo menu Help với (Name) = mnuHelp gồm MenuItem chức sau : - “Trợ giúp” có (Name) = mnuHelpHelp - “Về chương trình…” có (Name) = mnuHelpAbout Sau thiết kế xong, cửa sổ có dạng y hình vẽ mục V VI.3 Qui trình điển hình để xây dựng ToolBar : 11 Duyệt tìm phần tử ToolStrip (trong nhóm Menu & Toolbars), chọn nó, drag vị trí form để tạo Toolbar cho cửa sổ chương trình Toolbar tạo cửa sổ Toolbar có Button trống hình : 12 Click chuột vào mũi tên xuống Button trống để hiển thị menu lệnh, chọn lệnh Button để tạo Button Button có hình đồ họa mặc định Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Trong Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] cửa sổ thuộc tính button mới, duyệt tìm thuộc tính Image, click chuột vào button bên phải thuộc tính để hiển thị cửa sổ “Select Resource”, đánh dấu chọn vào checkbox “Local resource”, click chuột vào button “Import”, duyệt tìm xác định file bitmap dùng làm icon cho Button ( ) Xem cửa sổ thuộc tính Button vừa tạo, duyệt tìm hiệu chỉnh thuộc tính (Name) = tbFileDelete 13 Lặp lại bước 12 nhiều lần để tạo button lại : - Button có (Name) = tbFilesCount - Button có (Name) = tbFilesSize - Button có (Name) = tbFileDeepLen - Button có (Name) = tbFileVirusDel - Button có (Name) = tbHelpHelp - Button có (Name) = tbHelpAbout Sau thiết kế xong Toolbar, ta thấy Toolbar có dạng sau : VI.4 Qui trình điển hình để định nghĩa interface sử dụng : Trong chương trình, ta có class miêu tả chức mà chương trình cung cấp Chi tiết thực class chức cần che dấu phần cịn lại chương trình Để giải vấn đề tốt nhất, ta định nghĩa interface sử dụng chung cho class chức năng, interface có tên Icommand chứa hàm dịch vụ : void Show(); //hiển thị form chức đề người dùng làm việc 14 Để định nghĩa interface, ta dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Add.New Item để hiển thị cửa sổ “Add New Item”, chọn mục “Interface”, hiệu chỉnh tên interface ICommand.cs, chọn button Add để máy tạo interface 15 Cửa sổ soạn code cho interface ICommand hiển thị, ta định nghĩa interface đơn giản sau : namespace FileManager { interface ICommand { void Show(); //hiển thị form chức để người dùng làm việc với } } VI.5 Qui trình điển hình để xây dựng trực quan Dialog Box : Giả sử ta cần form tổng quát chứa đối tượng giao diện sau để phục vụ chung cho tất chức chương trình FileManager : Qui trình điển hình để xây dựng trực quan Form (Dialog Box) gồm bước thao tác sau : 16 Dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Add.Windows Form để hiển Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] thị cửa sổ “Add New Item”, chọn mục “Windows Form”, hiệu chỉnh tên Form CRecursiveBrowseDlg.cs, chọn button Add để máy tạo form 17 Form tạo hiển thị cửa sổ thiết kế, việc thiết kế form q trình lặp thao tác tạo mới/xóa/hiệu chỉnh thuộc tính/tạo hàm xử lý kiện cho đối tượng cần dùng form 18 Thay đổi chừng kích thước form cho đủ lớn hầu chứa đủ đối tượng giao diện form hình vẽ 19 Nếu cửa sổ ToolBox chưa hiển thị chi tiết, chọn menu View.Toolbox để hiển thị (thường nằm bên trái hình) Click chuột vào button (Auto Hide) nằm góc phải cửa sổ ToolBox để chuyển chế độ hiển thị thường trực 20 Duyệt tìm phần tử Label (trong nhóm Common Controls), chọn nó, dời chuột vị trí trái form vẽ với kích thước mong muốn Vì phần tử tổng quát để class override nên ta không cần thiết lập nội dung cụ thể cho thuộc tính Text nó, nhiên để class truy xuất dễ dàng, ta cần hiệu chỉnh thuộc tính (Name) = lblStartDir, Modifiers = protected 21 Duyệt tìm phần tử TextBox (trong nhóm Common Controls), chọn nó, dời chuột vị trí Label vừa vẽ vẽ với kích thước mong muốn Hiệu chỉnh thuộc tính (Name) = txtStartDir, Modifiers = protected 22 Duyệt tìm phần tử Button (trong nhóm Common Controls), chọn nó, dời chuột vị trí bên phải TextBox vừa vẽ vẽ với kích thước mong muốn Hiệu chỉnh thuộc tính (Name) = btnBrowse, Modifiers = protected 23 Lặp lại bước 20, 21, 22 để vẽ Label có (Name) = lblPattern, Modifiers = protected, TextBox có (Name) = txtPattern, Modifiers = protected, button có (Name) = btnStart, Modifiers = protected Bạn dùng phương pháp nhân vơ tính để tạo phần tử giống phần tử có, thí dụ bạn chọn đối tượng vẽ (Label, TextBox, Button), copy chúng paste vào vị trí mới, dời vị trí thay đổi kích thước phần tử theo yêu cầu Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Directory.Delete(fname); lbOutput.Items.Add("Remove " + fname); } else { //file File.Delete(fname); lbOutput.Items.Add("Delete " + fname); } } //override hàm Epilog public override void Epilog() { } } //hết class } //hết namespace VI.8 Định nghĩa class phục vụ đếm số lượng file đệ quy : 34 Dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Add.Class để hiển thị cửa sổ “Add New Item”, chọn mục “Class”, hiệu chỉnh tên class CFilesCountDlg.cs, chọn button Add để máy tạo class 35 Khi cửa sổ soạn code cho class CFilesCountDlg hiển thị, hiệu chỉnh nội dung class sau : using System; using System.Collections.Generic; using System.Text; namespace FileManager { class CFilesCountDlg : CRecursiveBrowseDlg { //định nghĩa thuộc tính liệu cần dùng Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] private int dcount; private int fcount; //override hàm InitForm public override void InitForm() { //hiệu chỉnh chuỗi caption cho phần tử giao diện this.Text = "Chức đếm file & thư mục đệ quy"; this.lblStartDir.Text = "Thư mục bắt đầu đếm :"; this.lblPattern.Text = "Nhập pattern :"; this.lblOutput.Text = "Kết đếm :"; this.btnBrowse.Text = "Browse"; this.btnStart.Text = "Start"; } //override hàm Prolog public override void Prolog() { fcount = dcount = 0; } //override hàm Action để thực đếm số thư mục số file public override void Action(String fname, byte fop) { if (fop == 1) { //thư mục dcount++; } else { //file fcount++; Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] } } //override hàm Epilog public override void Epilog() { lbOutput.Items.Clear(); lbOutput.Items.Add("So file la : " + fcount); lbOutput.Items.Add("So thu muc la : " + dcount); } } //hết class } //hết namespace VI.9 Định nghĩa class phục vụ tính tổng kích thước file đệ quy : 36 Dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Add.Class để hiển thị cửa sổ “Add New Item”, chọn mục “Class”, hiệu chỉnh tên class CFilesSizeDlg.cs, chọn button Add để máy tạo class 37 Khi cửa sổ soạn code cho class CFilesSizeDlg hiển thị, hiệu chỉnh nội dung class sau : using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.InteropServices; namespace FileManager { class CFilesSizeDlg : CrecursiveBrowseDlg { //định nghĩa thuộc tính liệu cần dùng Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] ulong ClusterSize; ulong SumSize; ulong SumWaste; //khai báo hàm API Windows cần dùng [DllImport("kernel32")] public static extern int GetDiskFreeSpace( string lpRootPathName, out int lpSectorsPerCluster, out int lpBytesPerSector, out int lpNumberOfFreeClusters, out int lpTotalNumberOfClusters ); //override hàm InitForm public override void InitForm() { //hiệu chỉnh chuỗi caption cho phần tử giao diện this.Text = "Chức tính tổng kích thước file đệ quy"; this.lblStartDir.Text = "Thư mục bắt đầu tính :"; this.lblPattern.Text = "Nhập pattern :"; this.lblOutput.Text = "Kết tính :"; this.btnBrowse.Text = "Browse"; this.btnStart.Text = "Start"; } Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] //override hàm Prolog public override void Prolog() { SumSize = SumWaste = ClusterSize = 0; } //override hàm Action để thực tổng kích thước file public override void Action(String fname, byte fop) { if (ClusterSize == 0) { //nếu chưa có kích thước cluster đĩa Int32 cs, ss, fs, ts; string[] parts = fname.Split('\\'); GetDiskFreeSpace(parts[0] + "\\", out cs, out ss, out fs, out ts); ClusterSize = (ulong)cs * (ulong)ss; } if (fop == 1) { //thư mục DirectoryInfo fi = new DirectoryInfo(fname); } else { //file FileInfo fi = new FileInfo(fname); SumSize += (ulong) fi.Length; SumWaste += (ClusterSize - (ulong)fi.Length % ClusterSize); } } //override hàm Epilog public override void Epilog() { lbOutput.Items.Clear(); Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] lbOutput.Items.Add("Kich thuoc cluster disk : " + ClusterSize); lbOutput.Items.Add("Tong kich thuoc cac file la : " + SumSize); lbOutput.Items.Add("Tong kich thuoc lang phi : " + SumWaste); lbOutput.Items.Add("Khong gian chiem tren disk : " + (SumSize + SumWaste)); } } //hết class } //hết namespace VI.10 Định nghĩa class phục vụ tính tổng độ sâu max thư mục : 38 Dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Add.Class để hiển thị cửa sổ “Add New Item”, chọn mục “Class”, hiệu chỉnh tên class CDeepLengthDlg.cs, chọn button Add để máy tạo class 39 Khi cửa sổ soạn code cho class CDeepLengthDlg hiển thị, hiệu chỉnh nội dung class sau : using System; using System.Collections.Generic; using System.Text; namespace FileManager { class CDeepLengthDlg : CRecursiveBrowseDlg { //định nghĩa thuộc tính liệu cần dùng int DeepLength; String path; //override hàm InitForm Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] public override void InitForm() { //hiệu chỉnh chuỗi caption cho phần tử giao diện this.Text = "Chức tính độ sâu sâu nhánh thư mục"; this.lblStartDir.Text = "Thư mục bắt đầu tính :"; this.lblPattern.Text = "Nhập pattern :"; this.lblOutput.Text = "Kết tính :"; this.btnBrowse.Text = "Browse"; this.btnStart.Text = "Start"; } //override hàm Prolog public override void Prolog() { DeepLength = 0; } //override hàm Action để thực tính độ sâu max căy thư mực public override void Action(String fname, byte fop) { //tách đường dẫn phần tử thành thành phần rời rạc string[] parts = fname.Split('\\'); if (parts.Length > DeepLength) { //nếu độ sâu thành phần hành lớn DeepLength = parts.Length; path = fname; } } Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] //override hàm Epilog public override void Epilog() { lbOutput.Items.Clear(); lbOutput.Items.Add("Do sau max la : " + DeepLength); lbOutput.Items.Add("Phan tu co sau max la : "); lbOutput.Items.Add(path); } } //hết class } //hết namespace VI.11 Định nghĩa class phục vụ xóa file bị nhiễm virus exe.exe : 40 Dời chuột phần tử gốc Project cửa sổ “Solution Explorer”, ấn phải chuột vào để hiển thị menu lệnh, chọn chức Add.Class để hiển thị cửa sổ “Add New Item”, chọn mục “Class”, hiệu chỉnh tên class CExeVirusDelDlg.cs, chọn button Add để máy tạo class 41 Khi cửa sổ soạn code cho class CExeVirusDelDlg hiển thị, hiệu chỉnh nội dung class sau : using System; using System.Collections.Generic; using System.Text; using System.IO; namespace FileManager { class CExeVirusDelDlg : CrecursiveBrowseDlg { //override hàm InitForm Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] public override void InitForm() { //hiệu chỉnh chuỗi caption cho phần tử giao diện this.Text = "Chức xóa file nhiễm exe.exe virus"; this.lblStartDir.Text = "Thư mục bắt đầu diệt :"; this.lblPattern.Text = "Nhập pattern :"; this.lblOutput.Text = "Các file & thư mục bị xóa :"; this.btnBrowse.Text = "Browse"; this.btnStart.Text = "Start"; } //override hàm Prolog public override void Prolog() { lbOutput.Items.Clear(); } //override hàm Action để thực xóa file bị nhiễm virus exe.exe public override void Action(String fname, byte fop) { if (fop == 1) { //thư mục } else { //file FileInfo fi = new FileInfo(fname); if (fi.Length == 61440) { //nếu kích thước file = 61440 File.Delete(fname); lbOutput.Items.Add("Delete " + fname); } } Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] } //override hàm Epilog public override void Epilog() { } } //hết class } //hết namespace VI.12 Viết code cho chương trình 42 Duyệt tìm mục Form1.cs cửa sổ “Solution Explorer” miêu tả cửa sổ chương trình, ấn phải chuột vào để hiển thị menu lệnh, chọn lệnh “View Code” để hiển thị cửa sổ soạn mã nguồn class Form tương ứng Thêm lệnh định nghĩa thuộc tính liệu sau vào đầu class Form1 : ICommand dlg; //tham khảo đến form chức mà người dùng muốn dùng 43 Duyệt tìm mục Form1.cs cửa sổ “Solution Explorer” miêu tả cửa sổ chương trình, ấn kép chuột vào để hiển thị lại cửa sổ chương trình 44 Click chuột vào menu File để hiển thị MenuItem Dời chuột MenuItem “Xóa file đệ quy” ấn kép chuột để tạo hàm xử lý kiện Click chuột Khi cửa sổ code hiển thị, viết code đơn giản sau cho hàm : //hàm xóa file theo pattern private void mnuFilesDelete_Click(object sender, EventArgs e) { //tạo Form xóa file theo pattern hiển thị để người dùng làm việc dlg = new CFilesDeleteDlg(); dlg.Show(); } 45 Lập lại bước 40 41 nhiều lần để tạo viết hàm xử lý kiện Click chuột cho MenuItem chức lại Code hàm sau : Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] //hàm đếm số file theo pattern private void mnuFilesCount_Click(object sender, EventArgs e) { //tạo Form đếm số file theo pattern hiển thị để người dùng làm việc dlg = new CFilesCountDlg(); dlg.Show(); } //hàm xóa file bị nhiễm virus exe.exe private void mnuFileVirusDel_Click(object sender, EventArgs e) { //tạo Form xóa virus hiển thị để người dùng làm việc dlg = new CExeVirusDelDlg(); dlg.Show(); } //hàm tính độ sâu max private void mnuFileDeepLen_Click(object sender, EventArgs e) { //tạo Form đếm số file theo pattern hiển thị để người dùng làm việc dlg = new CDeepLengthDlg(); dlg.Show(); } //hàm tính tổng kích thước file Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] private void mnuFilesSize_Click(object sender, EventArgs e) { //tạo Form tính tổng kích thước file theo pattern //và hiển thị để người dùng làm việc dlg = new CFilesSizeDlg(); dlg.Show(); } //hàm hiển thị thông tin trợ giúp private void mnuHelpHelp_Click(object sender, EventArgs e) { MessageBox.Show("Xin lỗi, chức chưa thực!"); } //hàm hiển thị thơng tin chương trình private void mnuHelpAbout_Click(object sender, EventArgs e) { MessageBox.Show("Xin lỗi, chức chưa thực!"); } 46 Duyệt tìm mục Form1.cs cửa sổ “Solution Explorer” miêu tả cửa sổ chương trình, ấn kép chuột vào để hiển thị lại cửa sổ chương trình 47 Dời chuột Button “Xóa file đệ quy” Toolbar ấn kép chuột để tạo hàm xử lý kiện Click chuột Khi cửa sổ code hiển thị, viết code đơn giản sau cho hàm : //hàm xóa file theo pattern Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] private void tbFilesDelete_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuFilesDelete_Click(sender, e); } 48 Lập lại bước 40 41 nhiều lần để tạo viết hàm xử lý kiện Click chuột cho Button chức lại Toolbar Code hàm sau : //hàm đếm số file theo pattern private void tbFilesCount_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuFilesCount_Click(sender, e); } //hàm xóa file bị nhiễm virus exe.exe private void tbFileVirusDel_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuFileVirusDel_Click(sender, e); } //hàm tính độ sâu max private void tbFileDeepLen_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] mnuFileDeepLen_Click(sender, e); } //hàm tính tổng kích thước file private void tbFilesSize_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuFilesSize_Click(sender, e); } //hàm hiển thị thông tin trợ giúp private void tbHelpHelp_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuHelpHelp_Click(sender, e); } //hàm hiển thị thơng tin chương trình private void tbHelpAbout_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức tương ứng mnuHelpAbout_Click(sender, e); } Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn