intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tài liệu Hướng dẫn thực hành Công nghệ lập trình tiên tiến - ĐH Công nghệ Đồng Nai

Chia sẻ: Na Na | Ngày: | Loại File: PDF | Số trang:66

200
lượt xem
49
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu Hướng dẫn thực hành Công nghệ lập trình tiên tiến dành cho khối đại học và cao đẳng gồm các bài tập thực hành và hướng dẫn thực hành được chia theo module như thiết kế giao diện với Custom Component, truy xuất dữ liệu với LINQ và các nội dung khác.

Chủ đề:
Lưu

Nội dung Text: Tài liệu Hướng dẫn thực hành Công nghệ lập trình tiên tiến - ĐH Công nghệ Đồng Nai

  1. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Khối: Đại Học và Cao Đẳng Năm 2013 Hướng dẫn:  Bài tập thực hành được chia theo Module  Mỗi Module được thiết kế cho thời lượng là 36 tiết thực hành tại lớp với sự hướng dẫn của giảng viên.  Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.  Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng. Những sinh viên chưa hòan tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà.  Các bài có dấu (*) là các bài tập nâng cao dành cho sinh viên khá giỏi.
  2. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin MỤC LỤC Module 1: Thiết kế giao diện với Custom Component ................................................. 1 Module 2: Truy suất dữ liệu với LINQ......................................................................... 15 Module 3: Truy suất dữ liệu với CodeSmith ................................................................ 33 Module 4: Thiết kế giao diện với WPF ......................................................................... 39 Module 5: .Net Remoting ............................................................................................... 54 Module 6: Danh sách đề tài............................................................................................ 62
  3. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Module 1: Thiết kế giao diện với Custom Component Nội dung kiến thức thực hành: - Thực hành Custom Control - Thực hành User Control (Composite Control) - Thực hành các control trong DotNetBar Bài tập 1: Mục đích: - Tạo được Custom Control cho TextBox và xử lý sự kiện Yêu cầu: - Hãy tạo một MyTextBox kế thừa từ TextBox, MyTextBox này có đặc điểm sau:  Chỉ cho phép nhập số nguyên dương  Có Background mặc định là “whitesmoke”  Có kích thước mặc định: Width=150 Hướng dẫn: - Background và kích thước tự thiết lập - Để MyTextBox chỉ cho phép nhập số nguyên dương ta override lại phương thức KeyPress: private void MyTextBox_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar); } - Sau khi biên dịch, MyTextBox sẽ xuất hiện ở trong ToolBox, ta kéo thả vào Form - Để làm lẹ thì ta nên cho kế thừa từ User Control, sau đó sửa lại TextBox, chi tiết: - Bấm chuột phải vào Project/ Add New / chọn User Control … -1-
  4. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin public partial class MyTextBox : UserControl { } Ta sửa thành: public partial class MyTextBox : TextBox { } - Sau đó tiến hành xóa một dòng lệnh mà Visual sẽ tự động báo lỗi (bạn thực hành đi rồi sẽ thấy dòng báo lỗi này, chỉ việc xóa nó đi): this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - Để thiết lập sự kiện cho MyTextBox thì tương tự như các control khác của Visual, ta làm như sau: Chọn MyTextBox ở chế độ Design, click vào biểu tượng tia chớp có khoanh tròn màu đỏ, sau đó chọn các kiểu sự kiện mà ta mong muốn. -2-
  5. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 2: Mục đích: - Tạo được Custom Control và xử lý sự kiện cho Custom Control Yêu cầu: - Hãy tạo một MyTextBox kế thừa từ TextBox, MyTextBox này có đặc điểm sau:  Chỉ cho phép nhập số (số nguyên âm, số nguyên dương, số thực …)  Có Background mặc định là “pink”  Có kích thước mặc định: Width=150 Hướng dẫn: - Background và kích thước tự thiết lập - Để kiểm tra một dãy số có phải hợp lệ hay không: bool ret = System.Text.RegularExpressions.Regex.IsMatch(dayso, @"^[+-]?\d+(\.\d+)?$"); Với dayso hợp lệ thì ret=true, dayso có thể là: dayso= 1234.113; dayso= 0 ; dayso= 113 ; dayso= 12.13; dayso= -114; dayso= -113.1114 Bài tập 3: Mục đích: - Tạo được Custom Control cho ListBox và xử lý sự kiện Yêu cầu: - Hãy tạo một MyListBox kế thừa từ ListBox, MyListBox này có đặc điểm sau:  Cho phép tô màu các phần tử tùy ý  Ứng dụng MyListBox để làm chương trình như dưới đây: - Nhập Text và chọn màu từ ColorDialog ListBox sẽ tô màu phần tử theo đúng yêu cầu. -3-
  6. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Hướng dẫn: public class MyListBoxItem { public MyListBoxItem(Color c, string text) { ItemColor = c; Text = text; } public Color ItemColor { get; set; } public string Text { get; set; } public override string ToString() { return this.Text; } } public partial class MyListBox : ListBox { public MyListBox() { InitializeComponent(); this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; } private void MyListBox_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index < 0) return; e.DrawBackground(); MyListBoxItem item = this.Items[e.Index] as MyListBoxItem; if (item != null) { e.Graphics.DrawString( // Draw the appropriate text in the ListBox item.Text, // The message linked to the item this.Font, // Take the font from the listbox new SolidBrush(item.ItemColor), // Set the color 0, // X pixel coordinate e.Index * this.ItemHeight // Y pixel coordinate. Multiply the index by the ItemHeight defined in the listbox. ); } else { // The item isn't a MyListBoxItem, do something about it } } } Trong Form: MyListBoxItem item = new MyListBoxItem(Color.Red, "Hello teo"); myListBox1.Items.Add(item); -4-
  7. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 4: Mục đích: - Tạo được Custom Control cho ListBox và xử lý sự kiện Yêu cầu: - Hãy tạo một MyListBox kế thừa từ ListBox, MyListBox này có đặc điểm sau:  Tự động tô màu đỏ cho những phần tử là số nguyên tố (số nguyên tố là số chỉ chia hết cho 1 và chính nó. số 0 và số 1 không phải là số nguyên tố).  Tự động tô màu xanh cho các số hoàn thiện (số hoàn thiện là số mà tổng các ước số không kể nó thì bằng chính nó, ví dụ: 6=3+2+1 , 28 =14+7+4+2+1)  Các phần tử khác (kể cả số hay là chuỗi) thì không tô màu. Hướng dẫn: private bool isPrime(int x) //kiểm tra số nguyên tố { if (x < 2) return false; for (int i = 2; i
  8. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 5: Mục đích: - Tạo được Custom Control cho Button và xử lý sự kiện Yêu cầu: - Vẽ lại các Button như hình bên dưới: Hướng dẫn: - Trong MyButton kế thừa từ Button, ta override OnPaint giống như bên đưới (ví dụ vẽ Button giống hình eclipse, tương tự cho các hình khác): protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); SizeF textSize = e.Graphics.MeasureString(this.Text, base.Font); int textX = (int)(base.Size.Width / 2) - (int)(textSize.Width / 2); int textY = (int)(base.Size.Height / 2) - (int)(textSize.Height / 2); Rectangle newRect = new Rectangle(ClientRectangle.X + 1, ClientRectangle.Y + 1, ClientRectangle.Width - 3, ClientRectangle.Height - 3); LinearGradientBrush brush=new LinearGradientBrush (new Point(0,0),new Point(1,1),Color.Red,Color.Blue); e.Graphics.DrawString(this.Text, base.Font, brush, textX, textY); e.Graphics.DrawEllipse(new Pen(brush, 1), newRect); } -6-
  9. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 6: Mục đích: - Tạo được Custom Control cho Button và xử lý sự kiện Yêu cầu: - Thiết kế lại Button như thể hiển trong Form1 dưới đây: - Chạy thử ứng dụng (double click vào biểu tượng dưới đây): - Soure code ở đây (demo của codeproject.com): Hướng dẫn: - Chi tiết xem trên trang: http://www.codeproject.com/Articles/9734/Custom-Bitmap- Button-Using-C -7-
  10. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 7: Mục đích: - Tạo được User Control và xử lý sự kiện Yêu cầu: - Thiết kế User Control để sử dụng như hình dưới đây: - User Control trên là tổng hợp 7 control: 3 Label, 3 TextBox và 1 Panel - Khi người sử dụng nhập giá trị vào TextBox bất kỳ thì User Control phải tự động đổi màu nền cho Panel theo đúng thông số Hướng dẫn: - Tạo một MyUserControl kế thừa UserControl, kéo thả một số control vào UserControl này: - Viết sự kiện TextChanged cho 3 TextBox ở trên: txtBlue.TextChanged+=txt_TextChanged; txtGreen.TextChanged += txt_TextChanged; txtRed.TextChanged += txt_TextChanged; private void txt_TextChanged(object sender, EventArgs e) { // Theo thứ tự : red , green, blue lấy từ 3 TextBox, ở đây là ví dụ red=190, green=50, // blue=120 pnColor.BackColor= Color.FromArgb(190, 50, 120); } -8-
  11. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 8: Mục đích: - Tạo được User Control và xử lý sự kiện Yêu cầu: - Thiết kế User Control để đọc tiền từ dạng số ra dạng chữ: - User Control trên là tổng hợp 4 control: 2 Label, 2 TextBox - Khi người sử dụng nhập giá trị vào mục Tiền bằng số thì lập tức mục Tiền bằng chữ sẽ đọc ra giống như hình trên. Hướng dẫn: - Tạo một MyUserControl kế thừa UserControl, kéo thả một số control vào UserControl này. - Viết hàm xử lý chuyển số thành chữ. - Trong sự kiện TextChanged của TextBox ta gọi hàm chuyển số thành chữ. - Ta nên gán mỗi ký số riêng lẻ với một chữ số cụ thể: int[] kyso = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; string[] kytu1 = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" }; string[] kytu2 = { "", "mốt", "hai", "ba", "bốn", "lăm", "sáu", "bảy", "tám", "chín" }; - Ta để ý rằng: - Chỉ cần ghép các ký tự 1 và 2 lại với nhau, nhưng chú ý:  10 đọc là Mười  11 đọc là Mười Một (không phải Mười Mốt)  1 đọc là một  20 đọc là Hai Mươi  21 đọc là Hai Mươi Mốt (không phải là Mười Một)  5 đọc là năm  15 đọc là Mười Lăm (không phải Mười Năm)  Hàng Triệu, hàng hàng trăm triệu, hàng tỉ, hàng trăm tỉ, hàng nghìn tỉ… ta phải xử lý thật khéo. -9-
  12. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 9: Mục đích: - Thực hành và hiểu được các control trong DotNetBar - Thao tác với Metro Form - Thao tác với các control cơ bản của DotnetBar Yêu cầu: - Viết chương trình quản lý sinh viên, dùng Metro Form và các control cở bản của DotnetBar: - Chương trình cho phép nhập vào danh sách sinh viên - Mỗi lần bấm “Lưu”, thì sinh viên đó sẽ được hiển thị vào ListViewEx , hình ảnh của mỗi sinh viên sẽ được hiển thị tương ứng với giới tính. Chú ý nếu mã sinh viên chưa tồn tại thì tạo mới, nếu mã sinh viên đã tồn tại thì tiến hành cập nhật. - Viết sự kiện cho ListViewEx, mỗi lần click vào sinh viên nào thì hiển thị thông tin chi tiết của sinh viên đó ở màn hình bên phải. - Bấm “Xóa” để xóa sinh viên đang chọn ra khỏi ListViewEx - Bấm “Thoát” chương trình sẽ hiển thị MessageBox hỏi người sử dụng có chắc chắn muốn thoát chương trình hay không. Hướng dẫn: - Sử dụng Metro Form, GroupPanel, ListViewEx, MaskedTextBoxAdv, ButtonX, TextBoxX, CheckBoxX - ImageList để hiển thị hình ảnh tương ứng với giới tính - 10 -
  13. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 10: Mục đích: - Thực hành và hiểu được các control trong DotNetBar - Thao tác với Metro Form - Thao tác với ComboBoxX - Thao tác với ContextMenuBar - Thao tác với ListViewEx - Thao tác với Adv Tree Yêu cầu: - Viết chương trình quản lý sinh viên, giao diện như hình bên dưới: - Thực hiện các chức năng trong ContextMenuBar cho Adv Tree: - 11 -
  14. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin - Nút “Tạo Lớp Mới” cho phép tạo lớp mới và đưa vào Adv Tree - ListViewEx cho phép gom nhóm sinh viên theo lớp, mỗi lần click vào từng phần tử trong ListViewEx thì sẽ hiển thị thông tin chi tiết của sinh viên vào mục bên dưới - Nút Lưu cho phép lưu thông tin sinh viên theo đúng như tên lớp đã chọn trong ComboBoxX: Cập nhật đồng thời lên ListViewEx và AdvTree - Sinh viên tự tạo ImageList để gán hình ảnh tương ứng với giới tính. - Mỗi lần click chuột vào từng phần tử trong Adv Tree :  Nếu chọn vào Node gốc là “Khoa CNTT” thì liệt kê toàn bộ lớp và sinh viên gom nhóm theo lớp vào ListViewEx  Nếu chọn vào Node là Lớp nào đó thì liệt kê toàn bộ sinh viên của lớp đó vào ListViewEx mà thôi  Nếu chọn vào Node là sinh viên thì chỉ hiển thị thông tin của sinh viên đó vào ListViewEx mà thôi - Nút “Xóa” cho phép xóa sinh viên hiện tại, cập nhật lại ListViewEx và Adv Tree Hướng dẫn: - Viết theo hướng đối tượng: - Class Sinh Viên : Mã , tên, số điện thoại, giới tính - Class Lớp : Mã lớp, tên lớp - Dùng Dictionary hoặc ArrayList để lưu trữ danh sách - Để lấy màu vừa chọn trong ContextMenuBar: - colorPickerDropDown1.SelectedColor - 12 -
  15. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 11: Mục đích: - Thực hành và hiểu được các control trong DotNetBar - Thao tác với Ribbon control, MDI Form - Và các control khác trong DotNetBar Yêu cầu: - Thiết kế giao diện như hình bên dưới: - Trong MDI Tab tạo 2 nút lệnh cho phép mở các Form con ở bên trong - Tương ứng với mỗi form con, hãy tạo lệnh như hình bên dưới: - 13 -
  16. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 12: Mục đích: - Thực hành và hiểu được các control trong DotNetBar - Thao tác Với BubbleBar Yêu cầu: - Thiết kế giao diện như hình dưới đây, sử dụng BubbleBar trong DotNetBar: - Mỗi lần di chuyển chuột tới phần tử nào thì sẽ có Animation ở phần tử đó và các phần tử lân cận. Bài tập 13: Mục đích: - Thực hành và hiểu được các control trong DotNetBar - Thao tác Với các control khác trong Dotnetbar Yêu cầu: - Sinh viên tự thực hành và làm toàn bộ các control khác của Dotnetbar, đây là bài tập về nhà. Sinh viên làm 18 bài trong link sau bằng C#: http://www.devcomponents.com/dotnetbar/movies.aspx# - 14 -
  17. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Module 2: Truy suất dữ liệu với LINQ Nội dung kiến thức thực hành: - Thực hành LINQ: - Hiểu được Generic - Hiểu được Implicitly Typed Variables - Hiểu được Anonymous Types - Hiểu được Extension Methods - Hiểu được Lambda Expressions - Hiểu được LinQ to Object - Hiểu được LinQ to SQL - Sinh viên có thể tải toàn bộ ví dụ liên quan tới LINQ từ trang chính thống của Microsoft để tham khảo: http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b Bài tập 1: Mục đích: - Hiểu được Generic - Trong System.Collections.Generic; cung cấp rất nhiều class: List, Dictionary, SortedList, SortedDictionary, LinkedList, HashSet…. - Nhưng ở đây chúng ta chỉ quan tâm tới List và Dictionary, các class khác sinh viên phải có trách nhiệm tự nghiên cứu. Yêu cầu: - Sử dụng List để viết chương trình như bên dưới: - Mỗi lần click “Nhập số”: Sẽ đưa số trong TextBox vào Listbox bên trái. - Click “>>” sẽ chuyển tất cả các phần tử đang được chọn trong ListBox bên trái sang Listbox bên phải - Click “
  18. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Hướng dẫn: - Thiết lập các ListBox có chế độ cho phép chọn nhiều phần tử: SelectionMode là MultiSimple hoặc MultiExtended. - Để List có thể chứa bất kỳ kiểu dữ liệu nào thì ta dùng List. Mọi class sinh ra đều kế thừa từ object, nên khi ta để object thì nó sẽ có thể lưu bất kỳ kiểu dữ liệu nào. Bài tập 2: Mục đích: - Hiểu được Generic - Trong System.Collections.Generic; cung cấp rất nhiều class: List, Dictionary, SortedList, SortedDictionary, LinkedList, HashSet…. - Nhưng ở đây chúng ta chỉ quan tâm tới List và Dictionary, các class khác sinh viên phải có trách nhiệm tự nghiên cứu. Yêu cầu: - Sử dụng Dictionary để viết chương trình như bên dưới: - Mỗi lần bấm Lưu: Đưa thông tin sinh viên vào Dictionary rồi cập nhật lên ListView. Nếu mã đã tồn tại thì tự động cập nhật, nếu mã chưa tồn tại thì thêm mới. - Mỗi lần click vào từng phần tử trong ListView thì hiển thị thông tin chi tiết của sinh viên vào phần Thông tin chi tiết - Nút Xóa: cho phép xóa sinh viên hiện tại - Chú ý là tất cả các thao tác phải sử dụng Dictionary. - Khi thao tác với CSDL thì Dictionary là một class rất hữu hiệu, cải tiến tốc độ xử lý. - 16 -
  19. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Hướng dẫn: - Tạo một class tên là Sinhvien - Khai báo Dictionary như sau: Dictionary dic = new Dictionary(); Với đối số thứ nhất là key, đối số thứ 2 là value - Ta có thể đưa dữ liệu vào bằng phương thức dic.Add(“010203”,sinhvien nào đó) - Để duyệt toàn bộ các phần tử trong Dictionary có nhiều cách, ở đây ta thường dùng: foreach (KeyValuePair item in dic) { sinhvien sv = item.Value; } - Để lấy sinh viên theo đúng mã ta chỉ cần: dic[“010203”] - Để xóa sinh viên ta làm như sau: dic.Remove(“010203”); Bài tập 3: Mục đích: - Thực hành và hiểu được Implicitly Typed Variables Yêu cầu: - Hãy khai báo và gán giá trị bất kỳ cho một biến có kiểu var var x = 113; var y = "1/1/2012"; var z = 1.7; var k = new DateTime(2012, 1, 1); string msg = "x type="+x.GetType() + "\n"+ "y type = "+y.GetType() + "\n" + "z type ="+z.GetType() + "\n" + "k type = " + k.GetType(); MessageBox.Show(msg); - Hãy thử trường hợp không gán giá trị mặc định cho biến có kiểu var, cho nhận xét - Hãy thử gán giá trị có kiểu dữ liệu khác cho biến đã khai báo kiểu var, cho nhận xét - Hãy cho biết var thường được ứng dụng trong trường hợp nào? - Trong trường hợp đã biết chính xác kiểu dữ liệu thì có nên khai báo kiểu var hay không? Hướng dẫn: - var được .net framework hỗ trợ cơ chế nội suy kiểu dữ liệu - do đó nó sẽ tự động lấy đúng kiểu dữ liệu khi ta gán vào cho nó. - Bất kỳ kiểu dữ liệu nào, kể cả kiểu object, var cũng tự động nội suy ra đúng kiểu dữ liệu của nó: - var s=new sinhvien(); thì s cũng được nội suy ra là đối tượng sinh viên, do đó ta có thể sử được các Properties, method .. của sinhvien một Cách bình thường. - 17 -
  20. Đại Học Công Nghệ Đồng Nai Khoa Công Nghệ Thông Tin Bài tập 4: Mục đích: - Thực hành và hiểu được Anonymous Types Yêu cầu: - Hãy kiểm tra một số đoạn lệnh sau: var teo = new { ID=1234, Name="Tèo Hả Tèo"}; MessageBox.Show(teo.ID +"-"+teo.Name); - Sinh viên tự tạo thêm nhiều Anonymous Types để hiểu thêm về nó. - Anonymous Types được sử dụng trong nhiều tình huống khác nhau. Hướng dẫn: - Anonymouse Types được sử dụng khi:  Ta cần một đối tượng tạm thời để lưu trữ dữ liệu  Khi ta không cần định nghĩa phương thức  Khi chúng ta muốn tạo thêm các Properties khác ngoài class đã định nghĩa  Khi ta muốn thay đổi thứ tự các properties… Bài tập 5: Mục đích: - Thực hành và hiểu được Extension Methods:  Quy tắc tạo extension methods như thế nào?  Cách sử dụng chúng ra sao? Yêu cầu: - Hãy cài một hàm tính tổng các số từ 1 tới N vào kiểu số nguyên - Hãy cài một hàm kiểm tra số nguyên tố vào kiểu số nguyên - Hãy cài một hàm xuất danh sách các số nguyên tố vào kiểu số nguyên - Hãy cài một hàm xuất danh sách dãy số Fibonacci vào kiểu số nguyên - Hãy cài một hàm cho phép nối 2 chuỗi vào kiểu chuỗi - Hãy cài một hàm cho phép tô màu đỏ vào Button - Hãy cài một hàm cho phép tô đen các số chẵn vào ListBox - Hãy cài một hàm cho phép tô đen các số lẻ vào ListBox - Hãy cài một hàm cho phép tô đen các số nguyên tố vào ListBox - Dùng delegate làm mặt nạ để thực hiện tô số chẵn, tô số lẻ, tô số nguyên tố cho ListBox Hướng dẫn: - 18 -
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2