Tải bản đầy đủ (.pdf) (43 trang)

Báo cáo nghiên cứu 1 hệ thống chấm điểm tự động môn tin học văn phòng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.36 MB, 43 trang )

LỜI CẢM ƠN
Chúng em xin gửi lời cảm ơn tới ThS Nguyễn Thị Hương Lan và thầy Trịnh Bá
Quý – những thầy cô đã tận tình hướng dẫn, giúp đỡ chúng em thực hiện đề tài này
trong suốt hơn 6 tháng qua.
Mặc dù đã rất cố gắng nghiên cứu và hoàn thiện, song đề tài vẫn còn nhiều
thiết sót, nhóm thành viên thực hiện đề tài rất mong được nhận được những ý kiến của
các thầy cô để đề tài được hoàn thiện hơn nữa và được ứng dụng thực tê như mong
mỏi.
Chúng em xin chân thành cảm ơn !


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................


Giáo viên hướng dẫn


MỤC LỤC
PHẦN MỞ ĐẦU .............................................................................................................4
I. Lý do chọn đề tài: ................................................................................................. 4
II.

Mục đích chọn đề tài: ........................................................................................ 4

III.

Nhiệm vụ nghiên cứu: ....................................................................................... 5

IV.

Phương pháp nghiên cứu: ................................................................................. 5

V.

Bố cục bài báo cáo ............................................................................................ 5

NỘI DUNG CHÍNH ........................................................................................................6
I. Tổng quan hệ thống .............................................................................................. 6
1.

Mô tả hệ thống ............................................................................................... 6

II. XML – DOM/SAX - Phương pháp trích rút các thông tin từ văn bản dựa vào
phân tích file XML của văn bản. ................................................................................ 8

1.

Cơ bản về XML ............................................................................................. 8

2.

DOM và SAX .............................................................................................. 11

3. Phương pháp trích rút các thông tin từ văn bản dựa vào phân tích file XML
của văn bản. .......................................................................................................... 12
4.

Ứng dụng xây dựng hàm chấm điểm cho Table .......................................... 15

III.

Ứng dụng AIP : VSTO ................................................................................... 17

IV.

Xây dựng phương thức chấm điểm ................................................................. 31

1.

Mô hình tổng thể của quá trình chấm điểm ................................................. 31

2.

Mô tả chi tiết quá trình chấm điểm tại máy chủ .......................................... 31
Ứng dụng mạng Socket ................................................................................... 33


V.
1.

Giới thiệu chung. ......................................................................................... 33

2.

Mô hình client/server ................................................................................... 33

3.

Giới thiệu về NameSpace System.Net và .................................................... 34

VI.

Giới thiệu giao diện chương trình. .................................................................. 38

1.

Form Thầy giáo: .......................................................................................... 38

2.

Form : Cán bộ chuyên môn ......................................................................... 40

3.

Giao diện máy chủ: ...................................................................................... 41


4.

Giao diện máy khách ................................................................................... 42

TÀI LIỆU THAM KHẢO .............................................................................................43


PHẦN MỞ ĐẦU
I.

Lý do chọn đề tài:

Các chương trình chấm điểm tự động từ lâu đã là một trong những đề tài nghiên cứu
vô cùng hấp dẫn, có nhiều ứng dụng thực tiễn. Ví dụ như: Chương trình chấm điểm
trắc nghiệm, trang web luyện thi Olimpic, phần mềm chấm điểm lập trình… Phần
mềm chấm điểm tự động môn tin văn phòng ra đời là một trong những ứng dụng thực
tiễn mà nhóm hi vọng, nếu thành công nó sẽ đóng góp 1 phần không nhỏ trong hỗ sợ
việc giảng dạy, ôn luyện cũng như áp dụng cho các trường THPT, trung tâm dạy nghề,
các trường đại học cao đẳng có giảng dạy môn Tin học văn phòn, đồng thời hỗ trợ đắc
lực trong các kì sát hạch chứng chỉ Tin học A, B trong toàn quốc.
Hiện tại trên thế giới, có 1 phần mềm mà MS cung cấp để cấp chứng chỉ thi MOS, cho
phép người dùng thực hiện các thao tác và chấm điểm các thao tác trên bộ office ( bao
gồm Word , Excel…) tuy nhiên khảo sát việc thiết lập đề thi cũng như cách thực chấm
điểm 1 đề thi tin văn phòng ở Việt Nam, nhóm đã quyết định xây dựng 1 phần mềm
chấm điểm riêng, với mục tiêu: hiệu quả, mềm dẻo và phù hợp. Ở một số các trường
Đại học như kinh tế quốc dân, hay bách khoa mà nhóm tìm hiểu, đã có những nhóm
sinh viên nghiên cứu về đề tài này, tuy nhiên tới giờ vẫn chưa có 1 chương trình thực
sự ứng dụng hiệu quả.
Được sự giúp đỡ của cô giáo : Nguyễn Thị Hương Lan và thầy Trịnh Bá Quý, suốt hơn
6 tháng qua, nhóm đã cố gắng xây dựng 1 hệ thống chấm điểm, mặc dù vẫn còn rất

nhiều những cái cần bổ sung, tuy nhiên nhóm đã, đang và sẽ cố gắng đầu tư và hoàn
thiện để có 1 chương trình thực sự hiệu quả và hữu ích.

II.

Mục đích chọn đề tài:

Mục đích của đề tài là xây dựng thành công 1 hệ thống chấm điểm tự động môn tin
học văn phòng để có thể áp dụng thực tiễn trên các phòng máy của khoa CNTT, đồng
thời từ đó phát triển 1 trang web hỗ trợ luyện thi và thi môn Tin Học Văn Phòng thực
sự hiệu quả.

4-43


III. Nhiệm vụ nghiên cứu:
 Nghiên cứu những khái niệm, những vấn đề gặp phải và đưa ra giải pháp
của quá trình khai khác, chọn lựa các thuộc tính chấm điểm trong word và
trong excel.
 Nghiên cứu những vấn đề xoay quanh một phương thức chấm điểm và xây
dựng mạng socket tương tác
 Thực hiện cài đặt chương trình và kiểm thử.

IV.

Phương pháp nghiên cứu:

 Phương pháp nghiên cứu chủ yếu là tham khảo tài liệu, bài viết liên quan tới
nhận dạng ký tự quang học.
 Tìm nguồn tài liệu trên Internet, sách báo liên quan.

 Nghiên cứu ngôn ngữ Office Open XML, AIP : VSTO, C#, Socket để tiến
hành cài đặt chương trình .
V.

Bố cục bài báo cáo
Báo cáo được chia thành 6 chương:
Chương 1: Tổng quan hệ thống.
Chương 2: XML – DOM/SAX - Phương pháp trích rút các thông tin từ văn

bản dựa vào phân tích file XML của văn bản.
Chương 3: Ứng dụng AIP : VSTO.
Chương 4: Xây dựng phương thức chấm điểm.
Chương 5 : Ứng dụng mạng Socket.
Chương 6: Giới thiệu giao diện chương trình.

5-43


NỘI DUNG CHÍNH
I.

Tổng quan hệ thống

1. Mô tả hệ thống
Hiện nay có rất nhiều hệ thống chấm điểm tự động ra đời nhằm tiết kiệm thời
gian cũng như đem lại hiệu quả chấm điểm cao cho các môn học. Phần mềm chấm
điểm tự động áp dụng trong môn Tin Học Văn phòng không dừng ở việc chấm điểm.
Phần mềm là cả 1 hệ thống được phân quyền sử dụng, phục vụ đầy đủ và chi tiết các
khâu : Làm đề, quản lí, xếp lịch thi, tổ chức cấu trúc buổi thi, và tất nhiên phần quan
trong nhất chính là đưa ra được tính năng chấm điểm tự động của 1 bài kiểm tra tin

văn phòng. Hệ thống đươc mô tả cụ thể như sau:
Hệ thống được xây dựng để phục vụ cho đối tượng Giáo viên, người cán bộ
chuyên môn, giám thị và sinh viên.
Trước tiên giáo viên import đề của mình sau khi đã đươc duyệt lên hệ thống, bao
gồm 1 file đề và file ảnh đề. Sau đó lại thiết lập đề trên hệ thống thông qua bộ lọc
được xây dựng trong giao diện dành cho giáo viên.
Sau khi giáo viên import đề, ta có 1 thư viện đề thi. Người cán hộ chuyên môn sẽ
xếp lịch thi theo lớp và môn thi của họ, đồng thời chọn tập hợp các đề trong thư viên
đề cho buổi thi hôm đó. Người cán bộ chuyên môn còn có thể quản lí điểm thi của lớp
thi thông qua lịch thi. Các thông tin điểm, lớp, lịch thi sẽ được tham chiếu và tim kiếm
một cách dễ dàng.
Giám thị sau khi được cung cấp ID của buổi thi và pass của buổi thi đăng nhập
hệ thống và có 1 nhiệm vụ duy nhất là kích hoạt máy chủ để các máy khách có thể truy
cập và gửi bài.
Sinh viên được cung cấp 1 tài khoản duy nhất để đăng nhập vào hệ thống. Sau
khi đăng nhập sẽ có 1 hộp thông báo thông tin sinh viên tài khoản và thời gian làm bài
còn lại. Công việc của sinh viên là đánh mã đề của mình vào và import bài làm của
mình. Hệ thống cho phép sinh viên nôp bài nhiều nhất là 3 lần, Trong trường hợp sinh
viên hết giờ làm bài thì hệ thống sẽ tự động lưu bài nộp của sinh viên trong lần import
gần nhất. Nếu sinh viên ko nộp bài hoăc đánh sai mã đề thì coi như bài thi 0 điểm.
Dựa vào mô tả trên, áp dụng những kiến thức của phân tích thiết kế hướng đối

6-43


tượng, chúng em đã thực hiện các bước để có tạo lập 1 cơ sở dữ liệu chuẩn. Sau đây,
chúng em xin được tóm tắt qua chức năng của hệ thống cũng như giới thiệu sơ lước về
cơ sở dữ liệu của hệ thống:
Xác định được các ca sử dụng như sau:










Đăng nhập hệ thống
Quản lí lịch thi
Quản lí điểm
Quản lí thư viện đề
Kích hoạt buổi thi
Nộp bài
Nhận kết quả thi
Quản lí buổi thi

Các tác nhân
Sinh viên

Các ca sử dụng
Đăng nhập hệ thống
Nộp bài
Nhận kết quả thi

Giảng viên

Đăng nhập hệ thống
Quản lí đề ( Thêm, sửa, tìm kiếm và
xem đề)


CB chuyên môn

Đăng nhập hệ thống
Quản lí lịch thi
Quản lí điểm

Giám thị

Đăng nhập hệ thống
Kích hoạt buổi thi
Quản lí buổi thi

7-43


Thực hiện các bước đặc tả ca sử dụng, vẽ biểu đồ khung cảnh, ca sử dụng… Vì các
bước thực hiện phân tích hệ thống tương đối dài nên chúng em xin phép được lược
bớt không trình bày trong báo cáo.Sau đây là bảng tổng quan mô tả liên kết các
bảng dữ liệu sử dụng:

II.

XML – DOM/SAX - Phương pháp trích rút các thông tin từ
văn bản dựa vào phân tích file XML của văn bản.

1. Cơ bản về XML
XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh dấu Mở
rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn
ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều

loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu
giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet. Các
ngôn ngữ dựa trên XML (thí dụ: RDF, RSS, MathML, XHTML, SVG, GML và
cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đổi
8-43


và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình
thức của chúng.
XML cung cấp một phương tiện dùng văn bản (text) để mô tả thông tin và áp dụng
một cấu trúc kiểu cây cho thông tin đó. Tại mức căn bản, mọi thông tin đều thể hiện
dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm vụ ký hiệu sự phân
chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu ký tự, các phần tử dùng để
chứa dữ liệu, và các thuộc tính của các phần tử đó.
Đơn vị cơ sở của XML là các ký tự theo định nghĩa của Universal Character Set (Bộ ký
tự toàn cầu). Các ký tự được kết hợp theo các tổ hợp chuỗi hợp lệ để tạo thành một tài
liệu XML. Tài liệu này gồm một hoặc nhiều thực thể, mỗi thực thể thường là một phần
nào đó của các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lưu
trữ trong một tệp văn bản (text file).
Các tệp XML có thể dùng cho nhiều loại dữ liệu đa phương tiện. RFC3023 định nghĩa
các loại "application/xml" và "text/xml", với ý rằng dữ liệu được biểu diễn bằng XML
mà không nói gì đến ngữ nghĩa của dữ liệu.
Sự phổ biến của các phần mềm soạn thảo văn bản (word processor) đã hỗ trợ việc
soạn thảo và bảo trì tài liệu XML một cách nhanh chóng. Trước XML, có rất ít ngôn
ngữ mô tả dữ liệu với các đặc điểm đa năng, thân thiện với giao thức Internet, dễ học
và dễ tạo. Thực tế, đa số các định dạng trao đổi dữ liệu thời đó đều chuyện dụng, có
tính độc quyền, và có định dạng nhị phân (chuỗi bit thay vì chuỗi ký tự) khó dùng
chung giữa các ứng dụng phần mềm khác nhau hay giữa các hệ nền (platform) khác
nhau. Việc tạo và bảo trì trên các trình soạn thảo thông dụng lại càng khó khăn.
Bằng cách cho phép các tên dữ liệu, cấu trúc thứ bậc được phép, và ý nghĩa của các

phần tử và thuộc tính có tính chất mở và có thể được định nghĩa bởi một giản đồ tùy
biến được, XML cung cấp một cơ sở cú pháp cho việc tạo lập các ngôn ngữ đánh dấu
dựa XML theo yêu cầu. Cú pháp chung của các ngôn ngữ đó là cố định — các tài liệu
phải tuân theo các quy tắc chung của XML, bảo đảm rằng tất cả các phần mềm hiểu
XML ít ra cũng phải có khả năng đọc (phân tích cú pháp - parse) và hiểu bố cục tương
đối của thông tin trong các tài liệu đó. Giản đồ chỉ bổ sung một tập các ràng buộc cho
các quy tắc cú pháp. Các giản đồ thường hạn chế tên của phần tử và thuộc tính và các
cấu trúc thứ bậc được phép, ví dụ, chỉ cho phép một phần tử tên 'ngày sinh' chứa một
phần tử tên 'ngày' và một phần tử có tên 'tháng', mỗi phần tử phải chứa đúng một ký

9-43


tự. Đây là điểm khác biệt giữa XML và HTML. HTML có một bộ các phần tử và
thuộc tính không mềm dẻo, chỉ có một tác dụng và nói chung là không thể dùng cho
mục đích khác.
XML không hạn chế về việc nó được sử dụng như thế nào. Mặc dù XML về cơ bản là
dạng text, các phần mềm với chức năng trừu tượng hóa nó thành các định dạng khác
giàu thông tin hơn đã nhanh chóng xuất hiện, quá trình trừu tượng hóa này được thực
hiện chủ yếu qua việc sử dụng các giản đồ định hướng kiểu dữ liệu (datatype-oriented
schema) và khuôn mẫu lập trình hướng đối tượng (mà trong đó, mỗi tài liệu XML
được thao tác như là một đối tượng). Những phần mềm như vậy có thể coi XML như
là dạng text đã được tuần tự hóa chỉ khi nó cần truyền dữ liệu qua mạng.
Ví dụ đơn giản về xml:
<?xml version="1.0" encoding="utf-8" ?>
<!-- This is list of employees -->
<employees>
<employee employeeid="1">
<firstname>Nancy</firstname>
<lastname>Davolio</lastname>

<homephone>(206) 555-9857</homephone>
</employee>
<employee employeeid="2">
<firstname>Andrew</firstname>
<lastname>Fuller</lastname>
<homephone>(206) 555-9482</homephone>
</employee>
<employee employeeid="3">
<firstname>Janet</firstname>
<lastname>Leverling</lastname>
<homephone>(206) 555-3412</homephone>
</employee>
</employees>

10-43


2.

DOM và SAX

Mô hình Đối tượng Tài liệu (viết tắt là DOM) thậm chí xuất hiện trước cả XML. DOM
cho phép một người phát triển tham chiếu, truy lục, và thay đổi các mục trong một cấu
trúc XML, và nó cũng đóng một vai trò quan trọng đối với XML. DOM là một API
độc lập về ngôn ngữ và nền được thiết kế để làm việc với dữ liệu XML. Nó là một API
dựa trên biểu đồ hình cây nạp tất cả dữ liệu vào trong bộ nhớ như một hệ đẳng cấp
cha-con của các nút, nó có thể là các phần tử, văn bản, thuộc tính, hay các kiểu nút
khác.
DOM API cho phép một người phát triển đọc, tạo ra, và sửa dữ liệu XML. Hướng dẫn
này đã đưa ra các khái niệm phía sau DOM và minh họa chúng bằng các ví dụ trong

mã trình Java. Những thực thi của DOM cũng được sử dụng trong C++, Perl, và các
ngôn ngữ khác.
Toàn bộ tài liêu xml sẽ được nạp vào cùng với cấu trúc phân cấp của nó, giống như
một cây phân cấp.

Hầu hết các bộ phân tích XML (XML parsers) (ví dụ: Xerces) và bộ xử lí XSL (ví dụ:
Xalan) đã được phát triển để sử dụng cấu trúc cây này. Những hiện thực như vậy đòi
hỏi toàn bộ nội dụng của một văn bản phải được phân tích và lưu trong bộ nhớ. Vì thế,
DOM được sử dụng tốt nhất trong các ứng dụng mà trong đó các thành phần của tài
liệu có thể được truy xuất và thao tác một cách ngẫu nhiên. Với các ứng dụng dựa trên
XML, bao gồm yêu cầu đọc/ghi có chọn lọc cho mỗi lần phân tích (one-time selective

11-43


read/write per parse), DOM cho thấy được sự tối ưu về mặt bộ nhớ. Trong các trường
hợp đó thì giao diện lập trình ứng dụng SAX trở nên rất tiện lợi về cả mặt tốc độ và bộ
nhớ.
SAX là các API phân tách truy xuất tuần tự đến tài liệu XML. Sax cung cấp một cơ
chế cho việc đọc dữ liệu từ một tài liệu XML. Nó là một thay thế tốt và hay dùng thay
cho DOM. Tên của nó là viết tắt của "Simple API for XML" (tiếng Anh, tức là "API
đơn giản cho XML").
Bộ phân tách mà hiện thực SAX (ví dụ, bộ phân tách SAX Parser) xử lí thông tin
XML dưới dạng một dòng dữ liệu (single stream of data). Dòng dữ liệu này là đơn
hướng, nghĩa là dữ liệu đã đọc rồi thì không thể đọc lại ngoại trừ phân tách lại từ đầu.
Hầu hết những ai sử dụng XML tin rằng kết quả của mẫu hình SAX là xử lí nhanh hơn
DOM. Điều này là vì SAX stream dùng ít bộ nhớ hơn thay vì phải lưu tất cả trong bộ
nhớ như với cây DOM.
Bộ phân tách SAX được hiện thực theo mô hình hướng sự kiện (event-driven) mà
trong đó nhà lập trình cung cấp các phương thức callback được triệu gọi bởi bộ phân

tách như là một phần của quá trình duyệt qua tài liệu XML.

3. Phương pháp trích rút các thông tin từ văn bản dựa vào phân tích
file XML của văn bản.
Văn bản dưới định dạng .doc hoặc docx có thể dễ dàng chuyển đổi và lưu trữ
dưới dạng file xml. Tất cả những định dạng của văn bản về font chữ, căn lề, dãn
dòng…v.v cũng như nội dung của văn bản đều có thể được thể hiện trong cấu trúc của
file xml đó.
Những quy định về việc định dạng và nội dung của văn bản được lưu trữ như thế nào
trong file xml được quy định theo một chuẩn chung được những hãng lớn như Apple,
Microsolf, Intel..v.v chung tay góp sức tạo nên, và tài liệu chính thức về chuẩn chung
này là ECMA-376:2011 . dựa vào tài liệu này ,chúng ta có thể biết chính xác cách mà
file xml biểu diễn một file văn bản. ví dụ như nội dung văn bản sẽ được lưu trong cặp
thẻ w:body,đoạn văn sẽ được lưu trong w:p ..v.v. những quy định và những thẻ đánh
dấu xây dựng sẵn được ECMA(European Computer Manufacturers Association) định
nghĩa như một ngôn ngữ dựa trên xml , là WordprocessingML với văn bản ,

12-43


SpreadsheetML với bảng tính Exel và PresentationML với các file trình chiếu
Powerpoint.

Minh họa một văn bản đơn giản .

Một phần Trong file xml lưu trữ thông tin của file văn bản trên.
Cách thức thực hiện:
Khi đã nắm được cấu trúc của file xml biểu diễn văn bản , ta có thể dễ dàng lấy được
các thông tin về nội dung cũng như định dạng của văn bản ấy thông qua các thao tác
xử lí với XML như mô hình DOM hoặc SAX.


13-43


Sơ đồ mô tả cách tạo ra bộ chuẩn
Mỗi đối tượng cần được chấm điểm trong văn bản sẽ được tạo một lớp chứa những
đặc trưng của đối tượng ấy. Ví dụ như định dạng trang(PageSetup) sẽ đặc trưng bởi
kiểu giấy , cỡ giấy, căn lề trái, căn lề phải..v.v.
Những thông tin ấy sẽ được lấy ra từ file xml trong những cặp thẻ quy định theo
chuẩn.
Sau đó , tập hợp các đối tượng của các lớp được tạo ra chính là sự phân tích mô tả
chính xác văn bản đầu vào, tạo ra một lớp đối tượng Document đại diện cho toàn bộ
văn bản.
Và nhiệm vụ chỉ còn là so sánh giữa đối tượng document được tạo ra từ file của trò với
đối tượng document được tạo ra từ file của thầy cung cấp, và xây dựng phương thức
tính điểm hợp lí.
Dựa vào những nội dung, cũng như áp dụng đầy đủ những phương pháp trên,
nhóm chúng em đã tự xây dựng ra 1 bộ API: trích rút những thuộc tính cần chấm,
tuy nhiên trong quá trình khai thác, nhóm nhận ra một số những cái hạn chế, cũng
như thiếu sót trong AIP tự xây dựng. Điều này làm cho việc chấm điểm trở nên hết
cứng nhắc, khó khăn và chưa thực sự tối ưu. Tình cờ trong quá trình nghiên cứu về
mảng thuộc tính table, chúng ra em tìm ra 1 bộ AIP : VSTO ( Về bản chất VSTO là
một Add-in của Visual Studio (VS)- hỗ trợ lập trình mạnh mẽ trên các ứng dụng
của Office 2003 và 2007).Riêng bô AIP này , chúng em xin được trình cụ thế ở

14-43


chương 3. Tuy vậy, riêng mảng khai thác các thuộc tính về table thì sử dụng AIP
này chưa thể mềm mẻo và tối ưu. Vì thế, bên cạnh khai thác AIP : VSTO chúng em

vẫn áp dụng và sử dụng những kiến thức của DOM/ SAX để khai thác file xml phục
vụ việc xây dựng hàm chấm điểm cho Table. Sau đây chúng em xin được trình bày
cụ thể về mảng này:

4. Ứng dụng xây dựng hàm chấm điểm cho Table
4.1 Xây dựng lớp lấy các đặc trưng cần chấm của một table
a. Các đặc trưng cần lấy bao gồm:
 Lấy số dòng
 Lấy số cột
 Lấy kiểu đường viền( có đường viền, ko có đường viền, single, double,..)
 Lấy vị trí hòa ô dọc, vị trí hòa ô ngang
 Lấy tiêu đề của từng ô(nếu có)
b. Phương pháp để lấy các đặc trưng của table
Sử dụng thuộc tính WordOpenXML của Microsoft.Office.Interop.Word.Document,
thuộc tính này sẽ cho chúng ta một chuỗi XML chứa các nội dung của tài liệu trong
định dạng Word Open XML.
Sat đó đưa chuỗi XML vừa lấy được ở trên vào lớp XmlDocument để sử lý bằng
cách sử dụng phương thức LoadXml.
Các đặc trưng của Table được quy định trong tài liệu XML bằng các thẻ tương ứng,
do đó ta muốn lấy các đặc trưng đó, thì chúng ta phải lấy được các thẻ biểu diễn cho
đặc trưng tương ứng. Có nhiều cách để có thể lấy được các thẻ thông qua tên của nó,
nhưng ở đây chúng ta sẽ sử dụng phương thức GetElementsByTagName(String).
Phương thức này sẽ trả về cho chúng ta một tập hợp các thẻ có trong file XML mà
tên của nó trùng với tên thẻ mà ta muốn lấy.
Dưới đây là một số thẻ tương ứng với từng đặc trưng của Table:
Tên đặc trưng

Tên thẻ tương ứng

Bảng


w:tbl

15-43


Dòng

w:tr

Cột

w:tblGrid

Hòa ô ngang

w:gridSpan

Hòa ô dọc

w:vMerge

Đường viền

w:tblBorders

c. Xây dựng hàm chấm cho một Table
Ta sẽ đối chiếu các đặc trưng của Table đáp án(bản word đáp án của thầy) với các
đặc trưng của Table cần chấm( bản word của trò), đặc trưng nào trùng khớp ta sẽ chấm
điểm cho đặc trưng ấy, điểm của một Table là tổng điểm chấm các đặc trưng.


4.2 Xây dựng hàm chấm cho các Table trong một bài word
Tư tưởng chấm : chúng ta sẽ lấy hết các đặc trưng của từng Table cho vào một danh
sách(trong đó bài đáp án của thầy ta có các danh sách đặc trưng của từng table của
thầy, bài của trò ta cũng làm tương tự). Duyệt từng Table trong danh sách Table của
thầy ta sẽ đem so sánh độ trùng khớp của nó với các Table trong danh sách Table của
trò. Cái nào có độ trùng khớp lớn nhất ta chấm Table đó. Ở đây độ trùng khớp được đo
bởi hai thuộc tính:
 Độ trùng khớp của chuỗi tiêu đề trên mỗi ô của Table
 Số dòng Table của thầy bằng với số dòng Table của trò
 Số cột Table của thầy bằng với số cột Table của trò

16-43


III.

Ứng dụng AIP : VSTO

AIP : Visual studio tools for office (VSTO)
Về bản chất VSTO là một Add-in của Visual Studio (VS). VSTO xuất hiện từ khoảng
đầu năm 2004 dựa trên VS 2003, với mục đích thay thế VBA trong Excel, Word.
Nhưng phải đến phiên bản VS 2008 thì VSTO mới thực sự hoàn chỉnh với sự hỗ trợ
lập trình mạnh mẽ trên các ứng dụng của Office 2003 và 2007.
Tổng quan về VBA và VSTO
VBA (Visual Basic for Application) từ lâu đã được biết đến như một công cụ lập trình
quen thuộc và dễ dùng cho việc phát triển ứng dụng trên nền Office cũng như mở rộng
tính năng cho Office (sau đây xin gọi chung là ứng dụng nền). Tuy nhiên, vì đã ra đời
khá lâu (năm 1993) và ít có sự cải tiến nên hiện tại cũng bộc lộ một số hạn chế như:
Không hỗ trợ font chữ Unicode.

Chỉ sử dụng ngôn ngữ Visual Basic (VB).
Môi trường lập trình (IDE) và các Controls đi kèm lạc hậu so với các công cụ mới như
Visual Studio (VS) 2008.
Bảo vệ mã chương trình không triệt để.
Chưa bắt kịp sự phát triển các tính năng của các phiên bản Office mới như Office
2007.
Vì lý do trên, Microsoft đã phát triển công cụ lập trình VSTO (môi trường .NET, là
một phần trong bộ Visual Studio 2008) nhằm hỗ trợ tốt hơn việc lập trình trên Office
(như Word, Excel, Outlook, PowerPoint...).
Về bản chất VSTO là một Add-in của Visual Studio (VS). VSTO xuất hiện từ khoảng
đầu năm 2004 dựa trên VS 2003, với mục đích thay thế VBA trong Excel, Word.
Nhưng phải đến phiên bản VS 2008 thì VSTO mới thực sự hoàn chỉnh với sự hỗ trợ
lập trình mạnh mẽ trên các ứng dụng của Office 2003 và 2007.
Giống VBA, VSTO cũng tác động trực tiếp với các ứng dụng nền, như vậy sẽ khá
thuận lợi khi người dùng chuyển từ VBA sang VSTO.
Những đặc điểm nổi bật của VSTO 3.0 (hay còn gọi là VSTO 2008):

17-43


Hỗ trợ các ngôn ngữ mà VS hỗ trợ: VB .NET, C++, C#...
Tận dụng giao diện đồ họa Windows Form của VS.
Cải thiện khả năng truy cập cơ sở dữ liệu với server (SQL và ADO)
Bảo vệ mã chương trình bằng cách che dấu và ngăn cản sự thay đổi từ bên ngoài.
VSTO 3.0 cho phép tạo ứng dụng ở dạng nhúng hoặc độc lập.
Dạng nhúng: các ứng dụng được lưu theo các file dữ liệu của office như docx, xlsx...
và chỉ sử dụng được cho file đó.
Dạng độc lập: mã chương trình được xuất thành dạng file *.dll, từ đó tham chiếu vào
các ứng dụng tương ứng. Việc cài đặt các ứng dụng VSTO 3.0 rất đơn giản nhờ công
nghệ ClickOnce.

Một số ứng dụng của VSTO:
Tùy biến giao diện Ribbon
Thay thế VBA dạng add-ins
Tạo TaskPane cho ứng dụng Office
Cá nhân hóa Outlook.
Về cơ bản, giống như VBA, VSTO được xây dựng dựa trên kiến trúc COM, cho nên
người dùng có thể sử dụng các thành phần sẵn có của ứng dụng nền trong việc xây
dựng chương trình của mình, giúp thời gian phát triển được rút ngắn.
Một dự án được xây dựng bằng VSTO dựa trên ứng dụng nền nào thì nó phụ thuộc
chặt chẽ vào ứng dụng nền đó, bởi theo mặc định, dự án VSTO sẽ hoạt động và sử
dụng các thành phần trong chính ứng dụng nền đó.
Sự khác biệt cơ bản nhất của VSTO trong các ứng dụng nền (ví dụ giữa Word và
Excel) là cách thức sử dụng các thành phần (đối tượng) của ứng dụng nền. Cho nên
khi xây dựng ứng dụng bằng VSTO, cũng như VBA, thì việc hiểu rõ mô hình đối
tượng của ứng dụng nền là yêu cầu bắt buộc.
Nói tóm lại, để lập trình với VSTO, cách tốt nhất là làm chủ từng phần. Đầu tiên cần
nắm vững một ngôn ngữ lập trình mà Visual Studio hỗ trợ (VB, C# hoặc C++) và cách
sử dụng VSIDE để viết mã lệnh cũng như thiết kế giao diện. Sau đó nghiên cứu mô

18-43


hình đối tượng của các ứng dụng nền (là những thành phần của ứng dụng mà người
dùng có thể sử dụng) cũng như cách sử dụng chúng.
Mô hình đối tượng của một bản tài liệu

Ứng dụng của VSTO trong đề tài :
Dựa vào VSTO ta có thể thực hiện lọc ra các thuộc tính cần thiết của một tài liệu dạng
.doc hoặc .docx. Dưới đây là bảng các đối tượng và thuộc tính của bản doc và docx:


19-43


STT Tên đối
tượng

Thuộc tính

1

top
left

PageSetup.TopMargin

right
bottom
gutter
gutterStyle

PageSetup.BottomMargin

orientation
papersize

PageSetup.PageWidth

Page
Setup


Ghi chú

Thuộc tính trong VSTO

PageSetup.LeftMargin
PageSetup.RightMargin
PageSetup.Gutter
PageSetup.GutterPos
PageSetup.Orientation
PageSetup.PaperSize
PageSetup.PageHeight

paperWidth
paperHeight

20-43


2

TableOfC
ontent
showPageN
umber
rightPageNu
mberAlign

3

TableOfContent.IncludePageNumb

ers;
TableOfContent.RightAlignPageN
umbers;
TableOfContent.UseHyperlinks;
TableOfContentTabLeader;
TableOfContent.UpperHeadingLev

useHyperLi
nks
tabLeader;
startLevel
endLevel

el;

Footnote

viTri

Footnote.Location;

Endnote

numbering
numberStyle
startNumber

TableOfContent.LowerHeadingLev
el;


Footnote.NumberingRule;
Footnote.NumberStyle;
Footnote.StartingNumber;

text

4

HeaderFo text

Header.Range.Shapes

oter

Header.Range.Paragraph

Shape[]
paraGraph

21-43


5

6

Page
Number

danhSoTran

gDau
soBatDau
canLe;

PageNumber.ShowFirstPageNumber

Shape gồm
picture,w

type;
left = 0;
top = 0;

Shape.Height

ordArt,sh

width = 0;

Shape.Rotation

ape,textb
ox,Chart


height = 0;
rotation = 0;

7


Table[]

8

Numberin soPara = 0;
g[]

listLevelNu
mber
lisPictureBu
ulet;
listString

PageNumber.StartingNumber;
PageNumber.Alignment

Shape.Width
Shape.Top
Shape.Left
Shape.AutoShapeType

Numbering.ListParagraphs.Count
Numbering.Range.ListFormat.Lis
tPictureBullet
Numbering.Range.ListFormat.Lis
tString
Numbering.Range.ListFormat.Lis
tType
Numbering.Range.ListFormat.Lis


22-43


listType;
val = 0;
9

TextColu

lineBetween

mn[]

;
evenlySpace
;
flowDirectio
n;
spacing;
soCot = 0;

10

DropCaps loaiDrop =
0;
khoangCach

tValue

TextColumns.LineBetween;

TextColumns.EvenlySpaced;
TextColumns.FlowDirection;
TextColumns.Spacing / 28.35f;
TextColumns.Count;

DropCap.Position
DropCap.LinesToDrop
DropCap.DistanceFromText
DropCap.FontName

= 0;
loaiFont

23-43


11

12

Tabstop

Font

align;
leader;
vitri = 0;

TabStop.Alignment


color="";
acsii="";

Font.Size

sz = 0;
khoangCach
Chu=0;

Font.Bold

TabStop.Position
TabStop.Leader

Font.NameAscii
Font.Spacing
Font.Italic
Font.Underline

bold =0;
italic =0;
underLine =
"";
13

Hyperlink

14

Border


15

3D

24-43


16

Paragraph.Alignment;

Paragraph
alignment;
outlineLevel
;
leftIdent=0;
rightIndent=
0;
firtLineInde
nt = 0;
mirror = 0;
spacingBefo

Paragraph.LeftIndent;
Paragraph.RightIndent;
Paragraph.OutlineLevel;
Paragraph.FirstLineIndent;
Paragraph.SpaceAfter;
Paragraph.SpaceBefore;

Paragraph.LineSpacing;
Paragraph.SpaceBeforeAuto;
Paragraph.SpaceAfterAuto;

re = 0;
spacingAffte
r = 0;
lineSpacing
= 0;
autoBeforeS
pace = 0;
autoAfterSp
ace = 0;

25-43


×