Bài tập lớn xây dựng trình quản lý hệ thống file mini

16 376 0
Bài tập lớn  xây dựng trình quản lý hệ thống file mini

Đ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

Trang 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 quát 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 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) : Trang   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 :  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 hoàn toà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 : Trang 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  Để thực chức năng, ta định nghĩa class CrecursiveBrowseDlg cần override hàm primitive nh 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 Trang 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 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 t ừng đố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 lập t ức 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 c 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 n ăng “Set Image” để hi ển thị cửa sổ “Set Resource”, đánh dấu chọn vào checkbox “Local resource”, click button Trang 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 Trong 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 : Trang 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 đối v ới phầ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 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 m ới 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 : Trang 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 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 m ới 17 Form tạo 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 t ừng đố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 24 Duyệt tìm phần tử Label (trong nhóm Common Controls), chọn nó, d ời chuột vị trí TextBox txtStartDir vẽ với kích thước mong muốn Hiệu chỉnh thuộc tính (Name) = lblOutput, Modifiers = protected 25 Duyệt tìm phần tử ListBox (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) = lbOutput, Modifiers = protected Sau thiết kế form xong, Form có dạng theo yêu cầu VI.6 Định nghĩa hàm xử lý kiện cần thiết đối tượng giao diện : 26 Dời chuột button btnBrowse, ấn kép chuột vào để tạo hàm x lý s ự kiện Click chuột cho button, cửa sổ mã nguồn hiển thị để ta bắt đầu viết code cho hàm Cách tổng quát để tạo hàm xử lý kiện chọn đối t ượng btnBrowse, c ửa sổ thuộc tính hiển thị, click icon để hiển thị danh sách kiện đối tượng, duyệt tìm kiện quan tâm (Click), ấn kép chuột vào comboBox bên phải s ự kiện Click để máy tạo tự động hàm xử lý cho kiện Cửa sổ mã nguồn hiển thị khung s ườn hàm vừa tạo với thân rỗng, nhiệm vụ ng ười lập trình viết code miêu tả thu ật giải thực chức mong muốn : //hàm lý kiện Click button btnBrowse private void btnBrowse_Click(object sender, EventArgs e) { //tạo form duyệt chọn thư mục FolderBrowserDialog dlg = new FolderBrowserDialog(); //hiển thị form duyệt chọn thư mục để người dùng duyệt chọn thư mục làm việc dlg.ShowDialog(); Trang //hiển thị đừơng dẫn thư mục vào textbox txtStartDir txtStartDir.Text = dlg.SelectedPath; } 27 Lặp lại bước 24 để tạo hàm xử lý kiện Click chuột button btnStart, khung sườ n hàm vừa tạo với thân rỗng, viết code cho hàm sau : //hàm lý kiện Click button btnStart //hàm template method điển hình, //nó chứa bước trừu tượng để giải chức private void btnStart_Click(object sender, EventArgs e) { //1 thiết lập giá trị đầu để thực chức Prolog(); //2 duyệt thực chức phần tử tìm DuyetCay(txtStartDir.Text, txtPattern.Text); //3 thực công việc kết thúc chức Epilog(); } 28 Hiện th ực tối thiểu hàm primitive (có thân rỗng) để máy không báo lỗi (vì hàm đượ c dùng hàm template class hành) Ý t ưởng class override hàm theo yêu cầu riêng : //thiết lập chuỗi caption cho đối t ượng giao diện virtual public void InitForm() { } //thiết lập giá trị đầu để thực chức virtual public void Prolog() { } //thực chức phần tử tìm đượ c virtual public void Action(String fname, byte fop) { } //thực công việc kết thúc ch ức virtual public void Epilog() { } 29 Hiện thực hàm template quan trọng class hành, hàm duyệt phân cấp t thư mục xác định để tìm tất phần t thỏa mãn tiêu chuẩn xác định chuỗi pattern : //duyệt thực chức phần t tìm public void DuyetCay(String sdir, String spattern) { // tìm file thỏa mãn pattern xử lý string[] flist = Directory.GetFiles(sdir, spattern); foreach (string fname in flist) Action(fname,0); //xác định tất thư mục string[] sdlistw = Directory.GetDirectories(sdir); //xác định tất thư mục thỏa pattern string[] sdlist = Directory.GetDirectories(sdir,spattern); //duyệt xử lý thư mục foreach (string subdir in sdlistw) if (thuocve(subdir,sdlist)) { //thư mục thỏa pattern DuyetCay(subdir, "*"); Action(subdir,1); } else //thư mục không thỏa pattern DuyetCay(subdir, spattern); } //kiểm tra chuỗi s có nằm danh sách chuỗi sl private bool thuocve(String s, String[] sl) { int max = sl.Length-1; for (int i = 0; i DeepLength) { //nếu độ sâu thành phần hành lớn DeepLength = parts.Length; path = fname; } Trang 13 } //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 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); } } } //override hàm Epilog public override void Epilog() { } Trang 14 } //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 : //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 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(); } Trang 15 //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 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 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 Trang 16 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); } 49 Chọn menu Debug.Start Debugging để dịch chạy th ứng dụng, máy báo lỗi tìm hiểu sửa lỗi hết lỗi Khi c ửa sổ ch ương trình hiển thị, th lệnh MenuBar Toolbar để kiểm tra kết VI.13 Xem xét code cho class rút kết luận hữu ích :  Tính thừa kế hướng đối tượ ng cho phép ta tập trung viết code dùng chung cho nhiều chức class (cha), không cần lập lại t ừng class (con) miêu tả chức  Để miêu tả chức năng, ta cần định nghĩa class th ừa kế class cha có override hàm primitive, cụ thể ta cần override hàm sau :  Hàm InitForm để thiết lập chuỗi caption cho đối tượ ng giao diện  Hàm Prolog (nếu cần) để thiết lập giá trị đầu cho thuộc tính liệu  Hàm Action để miêu tả công việc xử ly phần tử tìm  Hàm Epilog (nếu cần) để thực số việc kết thúc chức  Mặc dù hàm template viết class cha gọi hàm primitive định nghĩa class cha (lúc class ch ưa có), nh ưng chạy đối tượ ng thuộc class nào, kích hoạt hàm primitive override class (nhờ tính đa xạ)  Mặc dù class chức có nhiều thành phần có tầm v ực public, protected,… chươ ng trình (Client) dùng đối tượng thông qua interface ICommand, interface có hàm chức Show() nên ch ương trình gọi hàm Show truy xuất dịch vụ khác đối tượ ng mà tham khảo tới Điều thể hiển rõ nét tính bao đóng lợi ích  Dùng macro [DllImport] thư viện System.Runtime.InteropServices để chuyển hàm API có sẵn thư viện lập trình cổ điển thành tác vụ class VC#, nh ứng dụng hướng đối tượng VC# gọi hàm API dễ dàng (nh ưng theo chế gởi thông điệp hướng đối tượ ng) [...]... xử lý MenuItem có chức năng tương ứng mnuFilesCount_Click(sender, e); } //hàm xóa các 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 năng 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 năng tương ứng mnuFileDeepLen_Click(sender,... hàm : //hàm xóa file theo pattern private void tbFilesDelete_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức năng tương ứng mnuFilesDelete_Click(sender, e); } 48 Lập lại các bước 40 và 41 nhiều lần để tạo và viết các hàm xử lý sự kiện Click chuột cho các Button chức năng còn lại trong Toolbar Code của các hàm như sau : //hàm đếm số file theo pattern private void tbFilesCount_Click(object... c ửa sổ chính của chương trình, ấn kép chuột vào nó để hiển thị lại cửa sổ chính của chương trình 44 Click chuột vào menu File để hiển thị các MenuItem của nó D ời chuột về MenuItem “Xóa file đệ quy” rồi ấn kép chuột trên nó để tạo hàm xử lý sự kiện Click chuột trên nó Khi cửa sổ code hiển thị, viết code đơn giản sau đây cho hàm : //hàm xóa file theo pattern private void mnuFilesDelete_Click(object... public override void Prolog() { lbOutput.Items.Clear(); } //override hàm Action để thực hiện 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); } } } //override hàm Epilog public... e) { //tạo Form xóa file theo pattern và hiển thị nó để ng ười dùng làm việc dlg = new CFilesDeleteDlg(); dlg.Show(); } 45 Lập lại các bước 40 và 41 nhiều lần để tạo và viết các hàm xử lý sự kiện Click chuột cho các MenuItem chức năng còn lại Code của các hàm như sau : //hàm đếm số file theo pattern private void mnuFilesCount_Click(object sender, EventArgs e) { //tạo Form đếm số file theo pattern và... tổng kích thước các file private void tbFilesSize_Click(object sender, EventArgs e) { //gọi hàm xử lý MenuItem có chức năng 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 năng tương ứng Trang 16 mnuHelpHelp_Click(sender, e); } //hàm hiển thị thông tin về chương trình private void... chương trình private void mnuHelpAbout_Click(object sender, EventArgs e) { MessageBox.Show("Xin lỗi, chức năng này chưa được hiện thực!" ); } 46 Duyệt tìm mục Form1.cs trong c ửa sổ “Solution Explorer” miêu tả c ửa sổ chính của chương trình, ấn kép chuột vào nó để hiển thị lại cửa sổ chính của chương trình 47 Dời chuột về Button “Xóa file đệ quy” trong Toolbar rồi ấn kép chuột trên nó để tạo hàm xử lý. .. người dùng làm việc dlg = new CFilesCountDlg(); dlg.Show(); } //hàm xóa các file bị nhiễm virus exe.exe private void mnuFileVirusDel_Click(object sender, EventArgs e) { //tạo Form xóa virus và hiển thị nó để 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 và hiển thị... = new DirectoryInfo(fname); } else { / /file FileInfo fi = new FileInfo(fname); SumSize += (ulong) fi.Length; Trang 12 SumWaste += (ClusterSize - (ulong)fi.Length % ClusterSize); } } //override hàm Epilog public override void Epilog() { lbOutput.Items.Clear(); lbOutput.Items.Add("Kich thuoc cluster disk : " + ClusterSize); lbOutput.Items.Add("Tong kich thuoc cac file la : " + SumSize); lbOutput.Items.Add("Tong... pattern và hiển thị nó để người dùng làm việc dlg = new CDeepLengthDlg(); dlg.Show(); } //hàm tính tổng kích thước các file private void mnuFilesSize_Click(object sender, EventArgs e) { //tạo Form tính tổng kích thước các file theo pattern //và hiển thị nó để người dùng làm việc dlg = new CFilesSizeDlg(); dlg.Show(); } Trang 15 //hàm hiển thị thông tin trợ giúp private void mnuHelpHelp_Click(object sender, ... xử lý hệ thống file  Để thực chức năng, ta định nghĩa class CrecursiveBrowseDlg cần override hàm primitive nh InitForm, Prolog, Action, Epilog VI Qui trình xây dựng chương trình VI.1 Qui trình. .. ả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... 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

Ngày đăng: 31/12/2016, 10:03

Từ khóa liên quan

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

Tài liệu liên quan