Thực hiện viết code

Một phần của tài liệu thiết kế website hỗ trợ tự học môn hóa lớp 1o ban nâng cao ở trường trung học phổ thông (Trang 83)

8. Những đóng góp mới của đề tài

2.7. Thực hiện viết code

Chúng tôi chỉ trích một vài đoạn code hay trong quá trình viết code.

a) Sử dụng RegularExpressions để viết hàm kiểm tra tính hợp lý của số điện thoại

Khi người dùng muốn trở thành thành viên của website, người dùng phải thực hiện thao tác đăng ký thành viên. Một trong nhưng thông tin khi đăng ký là số điện thoại. Tất nhiên thông tin này là không bắt buộc, nhưng nếu người dùng điền thông tin này thì website phải kiểm tra tính hợp lệ của thông tin.

Có rất nhiều cách xử lý cho trường hợp này, và theo chúng tôi cách dùng RegularExpressions của thư viện lập trình .Net là một cách hay, ít tốn công sức và có hiệu quả cao.

1 using System.Text.RegularExpressions; 2 protectedbool checkphone(string str) 3 {

4 if (str == "") 5 returntrue;

6 string pattern = @"^0[0-9]{9,10}$"; 7 Regex check = new Regex(pattern, RegexOptions.IgnorePatternWhitespace); 8 return check.IsMatch(str); 9 }

- Dòng số 4 và số 5 cho thấy nếu số điện thoại có giá trị rỗng, hay nói cách khác người dùng không điền thông tin này, thì hàm xử lý trên sẽ cho biết thông tin số điện thoại là hợp lệ mà không cần kiểm tra gì nữa.

- Sức mạnh của hàm xử lý này nằm ở dòng số 6 và số 7. Hai dòng này tạo ra một mẫu so trùng có dạng chuỗi chỉ có các ký tự số, độ dài chuỗi tối thiểu là 10 và tối đa là 11, chuỗi bắt đầu ký tự 0. Điều này xuất phát từ quy định của website, ở Việt Nam hiện nay, số điện thoại có độ dài tối thiểu là 10 và tối đa là 11, bắt đầu bằng số 0. Công việc còn lại là so trùng mẫu được tạo ra với thông tin số điện thoại, nếu thông tin khớp với mẫu thì đây là một thông tin hợp lệ, ngược lại là không hợp lệ.

Cách sử dụng này còn được dùng để kiểm tra tính hợp lệ của thông tin tên đăng nhập, và ngay cả thông tin mật khẩu đăng nhập.

b) Hàm xử lý lấy ngẫu nhiên bài tập từ cơ sở dữ liệu để ra đề bài tập cho thành viên

Như yêu cầu chức năng của website, mỗi vòng làm bài đòi hỏi về mức độ tư duy có 3 bài biết, 9 bài hiểu, 8 bài vận dụng của cùng 1 chương. Các bài này phải được lấy ngẫu nhiên trong tập bài cùng phân loại trong CSDL. Chúng tôi xin trích hàm xử lý lấy ngẫu nhiên 3 bài thuộc loại bài tập biết. Đối với hai loại bài tập còn lại thì tương tự.

1 using System.Data.SqlClient; 2 using System.Collections.Generic;

3 protected Queue<int> exercise = new Queue<int>(20); 4 protectedvoid getKnowExer()

5 {

6 string chuoiketnoi =

ConfigurationManager.ConnectionStrings["khanhConnect"].ConnectionS tring;

7 SqlConnection ketnoi = new SqlConnection(chuoiketnoi); 8 ketnoi.Open();

9 string chuoitruyvan = "select Id from Exercise where Part=" + Request.Cookies["ExerPart"].Value + " and Type=1 and Status=1"; 10 SqlCommand truyvan = new SqlCommand(chuoitruyvan, ketnoi); 11 SqlDataReader reader = truyvan.ExecuteReader();

12 Queue<int> temp = new Queue<int>(exerCount); 13 if (reader.HasRows)

14 while (reader.Read()) 15 {

16 temp.Enqueue(int.Parse(reader["Id"].ToString())); 17 }

18 reader.Close(); 19 ketnoi.Close();

20 Random rand = new Random(); 21 int flag = 0;

22 while (flag < 3) 23 {

24 int number = rand.Next(1, exerCount);

25 if (temp.Contains(number) && !exercise.Contains(number)) 26 { 27 szExer += number.ToString() + ","; 28 exercise.Enqueue(number); 29 flag++; 30 } 31 } 32 }

Hàm xử lý trên chia làm hai phần, phần đầu tiên từ dòng 5 đến dòng 18 làm nhiệm vụ lấy các Id bài tập theo đúng loại cất vào vùng nhớ tạm temp, và phần sau từ dòng 20 đến dòng 32 làm nhiệm vụ chọn ngẫu nhiên 3 trong số Id bài tập lưu

trong temp. Ở đây, chúng tôi sử dụng lớp Random của thư viện .Net, và đây thực sự là một lớp hữu ích, khả năng trùng lắp bài tập ở các lần chạy là rất thấp.

c) Hàm xử lý upload bài tập vào cơ sở dữ liệu từ file excel

Hàm cuối cùng chúng tôi muốn trích dẫn ra trong cuốn luận văn này là hàm xử lý upload bài tập vào CSDL từ file excel. Bài tập sẽ phải có cách nào đó upload vào CSDL, để website có cơ sở bài tập mà ra đề bài cho thành viên làm bài. Vậy thì bằng cách nào các quản trị viên upload bài tập vào CSDL?

Chúng tôi chọn cách upload bài tập từ một file excel được soạn sẵn theo đúng định dạng mà chúng tôi quy định. File excel đó phải là một file excel có định dạng của excel 2003, nghĩa là file xls. Sheet dữ liệu upload phải có tên là Data và dữ liệu của sheet Data phải có tổ chức giống như bảng Exercise mà chúng tôi đã trình bày ở phần “Thiết kế CSDL”. Phải nói thêm là các quản trị viên sẽ soạn thảo một lần một số lượng bài tập nhất định nào đó vào file excel rồi upload lên một lần, tránh tốn sức upload từng bài tập một. Như vậy có thể thấy lượng bài tập trong CSDL là tăng lên theo thời gian, và thành viên sẽ có cơ hội làm nhiều bài tập khác nhau.

1 using System.Data.SqlClient; 2 using System.Data.OleDb;

3 protectedvoid uploadExercise(string filename) 4 {

5 string excelConnectionString =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties=\"Excel 8.0;HDR=YES\"";

6 OleDbConnection connection = new

OleDbConnection(excelConnectionString); 7 connection.Open();

8 string queryCommand = "select * from [Data$] where [Id] is not null"; 9 OleDbCommand command = new OleDbCommand(queryCommand, connection);

11 if (dr.HasRows) 12 {

13 string sqlConnectionString =

ConfigurationManager.ConnectionStrings["khanhConnect"].Connection String;

14 SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString); 15 bulkCopy.DestinationTableName = "Exercise"; 16 try 17 { 18 bulkCopy.WriteToServer(dr); 19 } 20 catch 21 { 22 bulkCopy.Close(); 23 dr.Close(); 24 connection.Close(); 25 return; 26 } 27 bulkCopy.Close(); 28 } 29 dr.Close(); 30 connection.Close(); 31 }

Hàm xử lý trên cũng chia làm hai phần, phần đầu tiên từ dòng 5 đến dòng 10 làm nhiệm lấy dữ liệu từ file excel, và phần thứ hai từ dòng 11 đến dòng 30 sẽ upload dữ liệu bài tập vào CSDL thông qua lớp SqlBulkCopy. SqlBulkCopy thật sự là một hỗ trợ tiện lợi cho các lập trình viên của thư viện lập trình .Net, bằng lớp này có thể upload dữ liệu vào CSDL một cách nhanh chóng từ file excel, mà chúng ta không phải ngồi nhập bằng tay qua các tool quản trị CSDL.

Một phần của tài liệu thiết kế website hỗ trợ tự học môn hóa lớp 1o ban nâng cao ở trường trung học phổ thông (Trang 83)

Tải bản đầy đủ (PDF)

(158 trang)