Bài 1: Sử dụng LINQ để đưa ra danh sách tên các font

 

 

Bài hôm này chúng ta sẽ tìm hiểu về LINQ, bài toán đặt ra là truy vấn ra danh sách các font trong hệ thống

Bước 1: Thiết kế giao diện như dưới
Snap1

 

Xaml:

Snap5

 

Bước 2: cài đặt chương trình như sau, ta sử dụng thư viện : InstalledFontCollection để gọi tên các font

Snap2

 

Nhấn F5 để chạy chương trình

Snap4

Day 6: Local Database trong Windows phone 7 (Sử dụng LINQ to SQL)

Tại sao tôi lại đăng bài Tìm hiểu về LINQ trước bài này, thực ra bài hôm nay sẽ vận dụng một số kiến thức về LINQ, giúp bạn có thể tạo một cơ sở dữ liệu dưới dạng Local Database và truy xuất dữ liệu nhờ linq, việc sử dụng Local database cũng là một giải pháp giúp bạn bảo toàn và truy cập dữ liệu Offline nhanh nhất. Để hiểu xâu về bài này bạn đòi hỏi phải hiểu sơ qua về cấu trúc và cách làm việc của LINQ, không nói nhiều nữa ta bắt đầu nào:

-Các việc ta cần làm sẽ theo thứ tự sau:

+Tạo cơ sở dữ liệu Database CE 4.0 nếu dùng VS2012, hoặc Database CE3.5 nếu dùng VS2010

+Tạo file Datacontext LINQ to SQL  trích xuất từ file cơ sở dữ liệu mà ta tạo từ bước 1

+Thiết kế giao diện và cài đặt

Bước 1: bạn xem video dưới đây

-Video này giúp bạn có thể hiểu được cách tạo CSDL và trích xuất ra file Datacontext

Bước 2: Add file Datacontext và thư viện linq vào project

Snap6

Bước 3: Thiết kế giao diện

-Ta tạo 3 Page như dưới trong đó trang “Quản lý sinh viên” sẽ là trang khởi chạy

MainPage.xaml

Snap7

Trang PageNhapthongtin.xaml

Snap8

Trang PageXemthongtin.xaml

Trang này chứa 1 button và 1 Listbox

Snap9

Code Xaml:

Snap17

Bước 4: Ta tạo một Class DBHelper.cs mới và cài đặt như hình dưới

Snap13 Snap14

Chú ý: bạn chú ý đến các mũi tên đỏ, nó sẽ liên quan đến tên của bảng và phương thức trong file Datacontext mà ta đã tạo ngay từ Bước 1

bạn có thể xem hình dưới đây để tránh việc nhầm

Snap15

-Và một chú ý cuối cùng là bạn phải đổi lại “[global::System.Data.Linq.Mapping.DatabaseAttribute(Name=”/abcd/egh../database.sdf“)]

thành [global::System.Data.Linq.Mapping.DatabaseAttribute(Name=”Database”)]

Bước 5: Cài đặt Chương trình

-Trang MainPage.xaml ta cài đặt như hình dưới

Snap10

-Trang PageNhapthongtin.xaml

Snap11

-Trang PageXemthongtin.xaml

Snap12

-Và cuối cùng nhấn F5 để chạy chương trình

Snap16

Bài tập:

Wait…

Tìm hiểu về LINQ-Phần 1

clip_image001[1]LinQ (Language Intergrated Query) là một công nghệ trên nền tảng .NET, cung cấp một giải pháp hợp nhất cho việc truy vấn dữ liệu, tích hợp cách truy vấn theo cú pháp SQL vào ngôn ngữ lập trình (cụ thể như C# hay VB.NET), áp dụng cho tất cả các dạng dữ liệu từ đối tượng cho đến CSDL quan hệ và cả XML …

clip_image001[1] Việc xử lý thông tin và các thao tác trên dữ liệu là 1 nhiệm vụ hết sức quan trọng, bởi lẽ CSDL có thể nói là Core của tất cả các ứng dụng, và một một trong những trở ngại chính mà các Developer luôn đối mặt đó là sự khác biệc giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, càng phức tạp hơn nếu CSDL là XML ….

clip_image001[2] Hiện nay có thể có một số công nghệ hổ trợ việc truy vấn dữ liệu nhưng việc sử dụng hết sức rờm rà, phải qua nhiều thao tác để trả về một kết quả, và bản chất là phải truyền vào những câu lệnh SQL, điều này làm cho thời gian phát triển ứng dụng kéo dài bởi lẽ người lập trình phải tốn thêm khá nhiều thời gian để tiếp cận cách sử dụng, hơn nữa việc xử lý nếu không hay sẽ dể gây chết ứng dụng. Mặc khác, khi các công nghệ này trả về một kết quả sẽ là một DataTable hay DataSet mà không phải là một đối tượng hay một danh sách đối tượng, điều đó sẽ gây khó khăn trong việc quản lý.

clip_image001[3] Nhìn thấy được không chỉ là những vấn đề trên mà còn nhiều vấn đề khác, Microsoft đã cho ra đời công nghệ LINQ, nhằm giải quyết những vấn đề khó khăn trên dữ liệu mà chúng ta đã và đang gặp phải.

I. Những tính năng của LINQ

1. Tổng quan LINQ

1.1 Kiến trúc LINQ

– Như chúng ta đã biết, LINQ là giải pháp tích hợp việc truy vấn dữ liệu vào ngôn ngữ lập trình, trong LINQ kết quả trả tùy vào trường hợp sẽ do lập trình viên xác định, là một : “tập hợp”, “đối tượng” hay những trường dữ liệu của đối tượng.

– Kiến trúc LINQ gói gọn trong sơ đồ sau :

clip_image003

Hình 1. Kiến trúc LINQ

– Từ sơ đồ trên chúng ta thấy rõ rằng ứng dụng VB.NET hay C# dùng LINQ để gọi xuống CSDL và chuyển thành SQL sau đó trả kết quả về là tập hợp, hay đối.

1.2 Sơ đồ tính năng của LINQ

– Ngoài việc tích hợp câu truy vấn vào ngôn ngữ lập trình, LINQ còn có nhiều tính năng rất hay khác như :

o Extension Methods

o Lambda expression

o Object Initializers

o ………….

– Sau đây là minh họa sơ đồ tính năng của LINQ trên 2 ngôn ngữ lập trình VB.NET và C# :

clip_image005

– Để hiểu rõ hơn về sơ đồ tính năng trên, chúng ta hãy xét 1 ví dụ sau :

Query Expression Lambda Expression
var contacts =from c in Customerswhere  c.Country == “Italy”select new {c.Name,c.Phone}; var contacts =Customers .Where(c=>c.Country==”Italy”).Select(c=> new{c.Name,c.Phone})

– Ở cả 2 dạng truy vấn trên đề trả về một tập hợp gồm Name và Phone cũng những Customer ở “Italy”.

– Về mặt ngữ nghĩa, câu truy vấn LINQ hết sức là gần gũi với những cách nói thông thường trong cuộc sống, câu truy vấn ở ví dụ trên chúng ta có thể phát biểu như sau :”từ một phần tử Customer ở Italy hãy lấy thông tin Name, Phone của phần tử đó”.

2. Các khái niệm cơ bản :

2 .1.Automatic Properties

– Tính năng này giúp phát sinh biến cục bộ, do đó lập trình viên không cần phải định nghĩa trong set;get; mà vẫn sử dụng bình thường.

– Ví dụ:

clip_image008

2.2 Anonymous Types:

– Đây là kiểu dữ liệu ngầm định dùng trong LINQ, hay còn gọi là “kiểu dữ liệu nặc danh”.

– Kiểu dữ liệu này không tường minh như Int, String … mà tùy vào câu lệnh LINQ trả về giá trị là một “tập hợp”, hay một “đối tượng” hoặc những trường dữ liệu do lập trình viên định nghĩa v.v

– Xét ví dụ sau :

Snap1

Kết quả:Snap2

– Rõ ràng là ở ví dụ trên đối tượng Sinhvien được sử dụng như là một “đối tượng của một lớp đã được định nghĩa”

2.3 Object Initialization

– Tính năng này giúp chúng ta gán giá trị cho thuộc tính ngay lúc khởi tạo đối tượng .

– Ví dụ :

Snap3

Kết quả:

Snap2

2.4. Query Expression

– Đây là một tính năng rất thường sử dụng trong LINQ, giúp tích hơp câu lệnh SQL vào ngôn ngữ lập trình hướng đối tượng, điều đáng nói là dữ liệu không đơn thuần là chỉ dùng cho dữ liệu SQL Server và còn sử dùng đước với nhiều loại dữ liệu khác vd : một danh sách hay một mảng … một tập dữ liệu.

Snap4 Snap5

Kết quả:

Snap2

– Xét ví dụ trên ở câu lệnh LINQ, chúng ta thấy rất rõ là cú pháp ngược lại với lệnh SQL, theo thứ tự from -> where -> select, thông thường kết quả của lệnh LINQ sẽ trả về một tập hợp, chúng ta phải dùng vòng lập foreach để truy suất từng phần tử trong đó, ở ví dụ trên hàm First() là dùng để trả về một đối tượng đầu tiên tiên

của tập hợp.

– Một số ví dụ khác :

clip_image011
clip_image013
clip_image015

2.5 Lambda Expression

– Đây tính năng khá hay của LINQ, nếu Query Expression là tích hợp lệnh SQL vào ngôn ngữ, thì Lambda là giải pháp thao tác trên dữ liệu thông qua đối tượng.

– Ví dụ :

clip_image017

– Thông qua ví dụ trên chúng ta thấy rõ một điều rằng tương ứng với những lệnh SQL là những phương thức Lampda Expression, cũng như SQL thì những phương thức như Where(); Select() cũng được sử rất dể dàng.

– Có một điểm rất lạ đó là dấu “=>”, tác dụng của dấu này giúp xác định điều kiện cho đối tượng, chúng ta dể dàng hiểu rõ ở những minh họa trên.

Nguồn: Phamnguyenit

Day 5: Bài tập ôn tập

Bài 1: Thiết kế như hình dưới

Snap1

Yêu cầu:
1 – Viết code cứ sau mỗi giây, số n trong Textblock tự động tăng thêm 1 đơn vị
2 – Click nút Stop thì dừng lại không đếm nữa
3 – Click nút Start thì bắt đầu đếm tiếp.
4 – Viết code lấy Ngày + Giờ hiện hành của máy khách hàng và hiển thị trong Textblock như 1 đồng điện tử. Yêu cầu đồng hồ tự động cập nhật thời gian liên tục

Bài 2: Thiết kế như hình dưới:

Snap2

Yêu cầu:
1 – Khi khởi động ứng dụng, các slider có giá trị từ 0 đến 100
2 – Click nút Chạy thì 4 slider tự động chạy với tốc độ khác nhau:
(Nhanh: 0.1, Trung bình:0.5, Chậm: 1.0)
3 – Riêng Slider TumLum chạy với tốc độ lúc nhanh lúc chậm (Tốc độ random)

Bài 3: Thiết kế như hình dưới

Snap1Snap3

Yêu cầu:
– Ứng dụng bao gồm 1 button và 2 Textbox và 1 trang gọi là Page2.xaml trang này chứa 1 textblock
– Click button thì chuyển sang trang 2
– Nếu khách login đúng (Tuananh1234) thì Textblock hiển thị câu: Chào bạn Tuananh
Ngược lại là thông báo cho khách biết Đăng nhập thất bại

Bài 4: thiết kế như hình dưới

Snap4

 

Yêu cầu:

1- Thực hiện show ảnh ra cho khách thấy, có nút next và nút prev để chuyển ảnh

2- Hiển thị vị trí của từng ảnh

3- Thiết kế 1 textbox và 1 button, khi khách chọn vị trí ảnh nào thì xóa ảnh đó

4-Yêu cầu xử lý các ngoại lệ xảy ra trong các quá trình

Day 4: Ramdom images trong windows phone

Ở các bài trước tôi đã giới thiệu cho bạn làm sao để random một số giới hạn từ Min->Max và trong bài này bạn sẽ được biết làm sao để random nhiều bức ảnh khác nhau, đồng thời làm thế nào để biết được chỉ số của từng bức ảnh được Random.

Bước 1: Tạo project mới

Snap23

Bước 2: Thiết kế như hình dưới

-Thiết kế với 1 button, 1 Imageview và 1 Textblock

Snap11

Code XAML:

Snap24

Bước 3: Bắt sự kiện cho nút thay đổi ảnh

Snap25Snap26

Hoàn thành nhấn F5 để xem kết quả!

Snap27

Bài tập 1: Thiết kế giao diện như hình dưới

Snap1

Yêu cầu:

1-Thiết kế nút đổ xúc xắc, viết code xử lý khi khách quay thì ảnh thay đổi và in ra thông báo kết quả cho khách biết

2-Khi quay thì thực hiện thay đổi con xúc xắc liên tục với điều kiện quay trong 5s, sau khi quay xong thì báo kết quả cho khách biết

3-Nếu vốn nhỏ hơn 10 thì ngừng quay và thông báo không được quay nữa

4-Số vốn sẽ +10 nếu chọn đúng, sai thì vốn sẽ -10

Chữa bài tập tổng hợp tất cả kiến thức trong 3 ngày

Trong bài này tôi sẽ chữa một bài tập tổng hợp tất cả các kiến thức liên quan đến 3 bài học của 3 ngày trước:Day1, Day2, Day3 Thiết kế như hình dưới: Snap11 Yêu cầu:

1-Tạo một Switch cho khách lựa chọn chức năng khó hoặc dễ

2-Tạo một Slider random từ 0->10 nếu khách chọn chức năng dễ và từ 0->100 nếu khách chọn chức năng khó

3-Tạo một textbox cho khách nhập kết quả vào

4-Tạo nút kết quả và nút làm lại cho khách, viết code cho 2 nút này

5-tạo 1 textblock và một ViewImages hiển thị kết quả và hình ảnh tương ứng với kết quả

6-Tạo một Slider cho khách thay đổi màu nền của ứng dụng tùy thích

Bài làm:

Bước 1: tạo project mới

Snap13

Bước 2: Thiết kế như hình dưới

Snap11

Code XAML:

Snap14Snap16

Bước 3: Tiến hành sử lý các xự kiện

Snap17Snap18Snap19Snap20Snap21

Tất cả các câu lệnh tôi đã giải thích trong các dòng chú thích, nếu bạn muốn xem hình rõ hơn thì có thể click vào hình để xem với chất lượng rõ hơn.

Hoàn thành thì bạn nhấn F5 để xem kết quả!

Snap12

 

Day 3: Slider trong Windows phone

Chắc hẳn bạn không khỏi thắc mắc những ứng dụng nghe nhạc có các thanh tăng giảm âm lượng, hoặc nếu bạn đã có dùng qua các công cụ chỉnh sửa ảnh trên windows phone thì cũng không thể hình dung ra cơ chế hoạt động của các nút đó đúng không? và bài hôm nay tôi xin giới thiệu với bạn về Slider, một công cụ không thể thiếu trong việc phát triển phần mềm của bạn.

Snap6

Bước 1: Tạo project mới

Snap7

Bước 2:

Design:

Snap6

Code XAML:

Snap1

Snap2 Snap3

<Nếu bạn xem trên trình duyệt web thì có thể click vào hình để xem rõ hơn>

Bước 3: Viết code xử lý sự hiện khi người dùng thay đổi Slider

Khai báo vị trí hiện tại của từng màu.

Snap4

Bắt xự kiện thi thay đổi Slider, giá trị các Textblock sẽ thay đổi theo

Snap5

Hoàn thành nhấn F5 để xem kết quả.

Snap6

Dưới đây là bài tập buổi thứ 3.

Bài 1: Thiết kế như hình dưới

Snap8

Yêu cầu:
1 – Viết code phát sinh 2 số random bất kì, gán cho 2 textbox so1 và so2
2 – Viết code khi click button Kiểm tra. Nếu bé nhập kết quả đúng, hiện thông báo  “Bé làm đúng rồi”. Ngược lại hiện “Bé làm sai rồi” và in ra kết quả đúng cho bé biết, ngoài ra khi click vào button Kiểm tra thì các Textbox se đóng lại không cho nhập nữa.
3 – Viết code khi click button Làm lại thì các textbox được mở lại. Phát sinh số mới để cho bé chơi lại.

4 Hiện thông báo khi bé chưa nhập kết quả vào ô Kết quả

Bài 2: Thiết kế giao diện như dưới đây

Snap9

Yêu cầu:
1 – Thiết kế ứng dụng với 1 ImageView và 1 Slider
2 – Add 5 file hình vào project
3 – Slider có giá trị từ 1 đến 5. Viết code khi khách hàng change giá trị của slider thi hình tương ứng sẽ hiển thị trong ImageView

Bài 3: Thiết kế như hình dưới

Snap10

Yêu cầu:
1 – Ứng dụng bao gồm: 1 textbox, 1 button, 1 ImageView
2 – Khách hàng nhập địa chỉ của 1 file hình trên internet, click LOAD. Viết code tải hình từ URL đó về và hiển thị trong ImageView

3 – Xử lý ngoại lệ khi người dùng nhập sai địa chỉ ảnh hoặc bỏ trống ô text link

Day 2: Switch toolkit trong Windows phone

Trong bài này chúng ta sẽ lướt qua cách sử dụng Switch toolkit của Windows phone, bạn có thể bắt gặp nó ở một số ứng dụng như: Bật/ Tắt Wifi, Bật/ Tắt xoay cảm biến…vv, để hiểu về cách sử dụng và hoạt động của chương trình tôi sẽ làm một bài nho nhỏ trong ngày thứ 2 của chuyên đề về lập trình Windows phone.

Snap12

Bước 1: Tạo Project mới

Snap3

Bước 2: Thêm thư viện toolkits cho project của bạn.

Snap4

Snap5

Link tới file theo đường dẫn sau:

Windows 64 bit: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Toolkit\Oct11\Bin

Windows 32 bit: C:\Program Files \Microsoft SDKs\Windows Phone\v7.1\Toolkit\Oct11\Bin

Snap6

Snap7

Nhấn Ok để hoàn thành thêm thư viện.

Bước 3: Thêm đoạn code sau để sử dụng thư viện trong giao diện thiết kế

Snap8

Bước 4: Hoàn thành thêm Switch toolkit vào trong giao diện bằng đoạn code sau:

Snap9

Checked và Unchecked là hai sự kiện mà chúng ta tạo ra để sử lý khi người dùng chọn tắt hoặc mở

Bước 5: Hoàn thành xử lý hai sự kiện CheckedUnchecked bằng đoạn code trong file: MainPage.xaml.cs

Snap11

Hoàn thành nhấn F5 để chạy chương trình xem kết quả!

Snap12

Snap13

Và dưới đây là bài tập của ngày thứ hai.

Bài 1: Thiết kế giao diện như hình dưới

Snap1

 

+ Yêu cầu:

1 – Hiện danh sách 4 môn học ở dạng Label, mỗi môn học có 1 đối tượng Switch
2 – Click nút Xem kết quả, viết code hiện kiểm tra khách hàng đã chọn môn học nào
3 – Xuất các môn học khách đã chọn vào Textbox

Bài 2: Thiết kế giao diện như dưới

Snap2

+ Yêu cầu:

1 – Tạo 3 Textbox cho khách nhập vào
2 – Click nút Kết quả, viết code hiện kiểm tra xem số nào lớn nhất
3 – Yêu cầu xử lý ngoại lệ khi người dùng nhập sai dữ liệu

Bài 3: Yêu cầu thiết kế như hình dưới

Snap14

+ Yêu cầu:

1 – Hiện danh sách 4 câu hỏi, mỗi câu hỏi có 1 đối tượng Switch
2 – Click nút Kết quả, viết code hiển thị ra kết quả đúng và đếm số câu trả lời đúng mà khách đã chọn

Publish bài thi Java cuối kỳ năm 3

Java Self Test

Cũng khá lâu mình không viết Blog rồi nhỉ, vì lý do bận lịch thi và phải hoàn thành các bải tập nên hôm nay mới có thời gian vô blog, hôm nay mình sẽ share file nguồn của bài thi java mà mình vừa hoàn thành cách đây vài tiếng, kết quả thì bạn biết đấy, :), qua bài thi mình nhận được những chú thích của giáo viên rất nhiều và tất nhiên mình vẫn yếu lý thuyết như những năm cấp 3, chỉ một câu hỏi rất đơn giản trong file class điểm thì đâu là đối tượng :D, mình không trả lời được và tất nhiên là điểm không cao rồi, câu trả lời chính là câu hỏi nản thật, mình nhận ra mình đôi khi cứ ngộ nhận một cái gì đó, ngay cả khi viết ra cái gì đó nhưng vẫn không thể hiểu được nó là cái gì. haizzz… thôi khỏi nói về bài thi hôm nay, dưới đây là phần source code của 6 bài java mình đã làm, mỗi bài chia làm 2 ý tổng cộng có 12 ý, sau khi thi xong mình đã sử lý những ngoại lệ mà giáo viên yêu cầu rồi, có 1 số phần mình vẫn chưa tối ưu được do vậy nếu bạn cảm thấy có hứng thì có thể tải về đọc và sửa giúp mình, và có thể nhắn tin cho mình để giúp mình hoàn thiện hơn về kỹ năng lập trình về sau này, cám ơn các bạn!

Link:

http://www.mediafire.com/?q6u8c24g7bf8nbx