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

Phần mềm hỗ trợ ôn thi Toán -8 ppt

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 (710.98 KB, 21 trang )









Chương 6. Tổng kết
- 139 -
Chương 6 Tổng kết
ªChương này tổng kết lại quá trình thực hiện đề tài, gồm:
 Các kết quả đạt được

 Tự đánh giá

 Hướng phát triển










Chương 6. Tổng kết
- 140 -
6.1. Các kết quả đạt được
6.1.1. Các yêu cầu chức năng :


STT Chức năng Tình trạng Ghi chú
1
− Cung cấp lý thuyết cho học sinh:
o Cung cấp lý thuyết trong sách giáo
khoa.
o Cung cấp phương pháp giải quyết
các dạng bài toán.
o Cho phép học sinh sắp xếp các tài
liệu theo ý muốn.


Hoàn thành

Hoàn thành

Hoàn thành

2
− Cung cấp ngân hàng dữ liệu bài tập
mẫu đủ lớn cho học sinh:
o Cung cấp nhiều bài mẫu và đáp án
để học sinh tham khảo.
o Cho phép học sinh biên soạn và bổ
sung bài mẫu vào ngân hàng dữ liệu.



Hoàn thành

Hoàn thành


3
− Làm bài trắc nghiệm:
o Cho phép biên soạn câu hỏi trắc
nghiệm và đề thi trắc nghiệm.
o Cho phép phát sinh câu hỏi trắc
nghiệm.
o Cho phép phát sinh đề thi trắc
nghiệm từ ngân hàng dữ liệu có sẵn.
o Hỗ trợ nhiều dạng trắc nghiệm khác

Hoàn thành

Hoàn thành

Hoàn thành

Hoàn thành









Chương 6. Tổng kết
- 141 -
nhau.

o Cho phép học sinh làm bài trắc
nghiệm.
o Hỗ trợ chấmbài làm cho học sinh.


Hoàn thành

Hoàn thành
4
− Làm bài tự luận:
o Hỗ trợ phát sinh bài tự luận cho
học sinh các dạng toán sau:
 Khảo sát và vẽ đồ thị hàm số.
 Mặt phẳng tọa độ.
 Không gian tọa độ.
 Đạo hàm.
o Cho phép học sinh lưu trữ bài làm
và chuyển cho giáo viên đánh giá.
o Nhận diện đề bài của học sinh
dưới dạng tự nhiên.




Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành


Hoàn thành


5
− Cung cấp phương tiện giao tiếp giữa
giáo viên và học sinh:
o Trao đổi thông tin qua Web.
 Hỗ trợ 1 trang thông tin.
 Hỗ trợ download, upload tài liệu.
 Hỗ trợ 1 forum để giáo viên và học
sinh trao đổi thông tin trực tuyến.
o Trao đổi thông tin qua đĩa mềm.
o Trao đổi thông tin qua email.
o Trao đổi thông tin qua giấy.


Hoàn thành
Hoàn thành
Hoàn thành
Hoàn thành

Hoàn thành
Hoàn thành
Hoàn thành











Chương 6. Tổng kết
- 142 -
6.1.2. Các yêu phi chức năng:
Tính tái sử dụng
:
Chương trình được thiết kế bao gồm các thư viện liên kết (DLL), nên tuy có 2
phân hệ chương trình khác nhau nhưng hầu hết các xử lý, các control đều được thiết kế
chung trên 1 thư viện, chỉ những xử lý hoặc control riêng cho từng phân hệ (Giáo Viên,
Học Sinh) mới được thiết kế riêng. Đặc biệt chương trình còn tạo ra 1 bộ thư viện thể
hiện giao diện của riêng mình, có thể dễ dàng mang sử dụng sang cho các chương trình
khác.
Tính dễ bảo trì:
Chương trình được thiết kế theo mô hình 3 lớp : giao diện, xử lý, dữ liệu Æ bất cứ 1
thay đổi, chỉnh sửa có thể dễ dàng phát hiện và thay đổi.
6.2. Tự đánh giá
6.2.1. Ưu điểm:
− Thể hiện tốt các ký hiệu toán học.
− Nhận diện đề thi tự nhiên, hỗ trợ phát sinh bài giải cho gần 50 dạng toán.
− Lý thuyết cung cấp đầy đủ, chi tiế
t.
− Ngân hàng dữ liệu bài tập mẫu lớn.
− Phần trắc nghiệm hỗ trợ nhiều dạng câu hỏi, có phát sinh câu hỏi và đề thi.
− Lưu trữ và xử lý dữ liệu bằng XML và XSLT nên kích thước dữ liệu nhỏ.
− Phát triển hệ thống trao đổi thông tin trên môi trường Web, để học sinh và
giáo viên có thể trao đổi trực tuyến.
6.2.2. Hạn chế:

− Chương trình có kích thước khá lớn.

Chương trình chưa hỗ trợ giải và phát sinh hết các dạng toán.
− Chưa nhận diện được những đề toán quá phức tạp.
− Chưa hỗ trợ chấm bài tự luận được cho học sinh.








Chương 6. Tổng kết
- 143 -

6.3. Hướng phát triển
− Nhận diện được những đề toán phức tạp.
− Hỗ trợ giải và phát sinh hết các dạng toán.
− Hỗ trợ chấm bài tự luận cho học sinh.









- 144 -

PHỤ LỤC
A. Giới thiệu MathMLControl:


MathML Control là công cụ cho phép ta nhập một cách trực quan các biểu thức
toán học (tương tự như chương trình Equation và MathType) và trả về chuỗi dưới
dạng MathML.
MathML Control là một trình soạn thảo các biểu thức toán học được thiết kế
dưới dạng một control dành cho lập trình .Net. Có thể nói đây là công cụ dành cho mọi
loại người dùng từ sinh viên, giáo viên tới những người làm chuyên môn khoa học.
MathML Control cho phép tao nhật biểu thức toán học một cách trự
c quan và
rất dễ dàng. Mọi biểu thức toán có thể được lưu dưới dạng ảnh Jpeg hoặc được xuất
sang các dạng bitmap khác (Giff, Bmp, Tiff, ) hoặc dưới dạng MathML theo chuẩn
của W3C.









- 145 -
Một số hàm thông dụng trong MathML Control

Hàm MC_Load : dùng để load một tài liệu MathML từ tập tin
public bool MC_load(string fileName);
fileName là đường dẫn của tập tin cần load.


Hàm MC_loadFromJPEG : mở một tập tin JPEG được tạo ra từ hàm
MC_saveASJPEG().
public bool MC_loadFromJPEG(
string fileName
);
fileName là đường dẫn tập tin cần load.
Hàm MC_loadXML : load biểu thức MathML từ chuỗi XML.
public bool MC_loadXML( string sXML);
sXML : biểu thức MathML cần load.
Ví dụ :
string sMathML="";
sMathML+="<math xmlns=\"
sMathML+="<msqrt>";
sMathML+="<mi select='true\"><mi>X</mi>";
sMathML+="</msqrt>";
sMathML+="</math>",false);
MathMLControl.MC_loadXML(sMathML);

Hàm MC_save : lưu tài liệu MathML xuống tập tin
public bool MC_save(
string fileName
);
fileName : đường dẫn tập tin cần lưu.











- 146 -
Hàm MC_saveAsJPEG : lưu biểu thức toán học thành một tập tin ảnh JPEG.
Dạng 1
:
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
enum_ImageResolution imageResolution
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh (96dpi, 300 dpi, 600 dpi, )
Ví dụ :
float fontSize =18F;
MathMLControl.enum_ImageResolution imgResolution
=MathMLControl.enum_ImageResolution._300dpi;
string fileName ='C:\\test.jpg';

MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution);
Dạng 2
public bool MC_saveAsJPEG(
string fileName,
float fontSize,
enum_ImageResolution imageResolution,
ref int imageBaseline
);

fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh (96dpi, 300 dpi, 600 dpi, )
imageBaseline : vị trí “đường gốc” của biểu thức trong ảnh.









- 147 -

Ví dụ :

float fontSize =18F;
int imgBaseline =0;
MathMLControl.enum_ImageResolution imgResolution
=MathMLControl.enum_ImageResolution._300dpi;
string fileName ='C:\\test.jpg';

MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution,ref
imgBaseline);

Dạng 3

public bool MC_saveAsJPEG(
string fileName,

float fontSize,
int imageResolution
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh theo kiểu integer.
Ví dụ :
float fontSize =18F;
int imgResolution =300;
string fileName ='C:\\test.jpg';

MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution);










- 148 -
Dạng 4:


public bool MC_saveAsJPEG(
string fileName,
float fontSize,
int imageResolution,

ref int imageBaseline
);
fileName : đường dẫn tập tin JPEG.
fontSize : Kích thước của chữ (theo đơn vị point).
imageResolution : độ phân giải của ảnh theo kiểu integer.
imageBaseline : vị trí “đường gốc” của biểu thức trong ảnh.



Ví dụ :


float fontSize =18F;
int imgBaseline =0;
int imgResolution =300;
string fileName ='C:\\test.jpg';

MathMLControl.MC_saveAsJPEG(fileName,fontSize,imgResolution,ref
imgBaseline);









- 149 -
Hàm RE_CreateBitmap : chuyển một chuỗi MathML sang dạng

System.Drawing.Bitmap. Sau đó bitmap có thể được lưu dưới dạng JPEG, GIF hay các
dạng ảnh khác.
public Bitmap RE_CreateBitmap(
string MathML,
float FontSize,
bool Bold,
bool Italic,
Color ForeColor,
Color BackColor,
int ImgResolution,
ref int ImgBaseline
);
MathML : chuỗi MathML.
FontSize : cỡ chữ trong ảnh.
Bold : in đậm.
Italic : in nghiêng.
ForeColor : màu của chữ.
BackColor : màu nền.
ImgResolution : độ phân giải của ảnh.
ImgBaseLine : vị trí “đường gốc” của biểu thức trong ảnh theo đơn vị pixel.













- 150 -
Chú ý
:
Hàm này sẽ đưa ra System.Exception trong trường hợp bị lỗi.
Có thể sử dụng hàm này trong trường hợp không có MathML Control trên màn
hình.
Hàm này hoạt động độc lập với nội dung MathML của MathML Control.
Ví dụ :

int ImgBaseLine=0;
string sMathML="";


[ ]

System.Drawing.Bitmap bitmap;

bitmap=this.m_MathMLControl.RE_CreateBitmap(sMathML,
18F,
false,
false,
System.Drawing.Color.Black,
System.Drawing.Color.White,
96,
ref ImgBaseline);

[ ]














- 151 -
B. Ngôn ngữ XSLT:
Khái niệm :
XSLT, viết tắt của eXtensible StyleSheet Language Transformation, là
ngôn ngữ đặc tả cho phép biến đổi hệ thống đối tượng (được biểu diễn qua XML)
thánh một hệ thống đối tượng (được biểu diễn qua ngôn ngữ bất kỳ).

Ví dụ :

Ta có tài liệu planets.xml lưu giữ thông tin về các hành tinh trong hệ mặt trời.
Nội dung tài liệu planets.xml thể hiện như sau :
<?xml version=”1.0”?>
<?xml-stylesheet type=”text/xsl” href=”planets.xsl”?>
<PLANETS>
<PLANET>
<NAME>Mecury</NAME>
<MASS UNITS=”(Earth=1)”>.0553</MASS>
<DAY UNITS=”days”>58.65</DAY>

<RADIUS UNITS=”miles”>1516</RADIUS>
<DENSITY UNITS=”(Earth=1)”>.983</DENSITY>









- 152 -
<DISTANCE UNITS=”million miles”>43.4</DISTANCE>
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<MASS UNITS=”(Earth=1)”>.815</MASS>
<DAY UNITS=”days”>116.75</DAY>
<RADIUS UNITS=”miles”>3716</RADIUS>
<DENSITY UNITS=”(Earth=1)”>.943</DENSITY>
<DISTANCE UNITS=”million miles”>66.8</DISTANCE>
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS=”(Earth=1)”>1</MASS>
<DAY UNITS=”days”>1</DAY>
<RADIUS UNITS=”miles”>2107</RADIUS>
<DENSITY UNITS=”(Earth=1)”>1</DENSITY>
<DISTANCE UNITS=”million miles”>128.4</DISTANCE>
</PLANET>

</PLANETS>
Ta thấy tài liệu planets.xml ngoài khai báo thông thường là
<?xml version=”1.0”?>
Còn khai báo thêm
<?xml-stylesheet type=”text/xsl” href=”planets.xsl”?>
Với khai báo trên trình xử lý và phân tích sẽ biết nội dung dữ liệu trong planets.xml
cần được kết hợp với tài liệu planets.xsl để thực hiện chuyển dữ liệu từ XML thành tài
liệu hiển thị và đọc được bởi người dùng.
Nội dung tài liệu planets.xsl như sau :
<?xml version=”1.0”?>
<xsl:stylesheet xmlns:xsl=
<xsl:template match=”/”>
<HTML>









- 153 -
<xsl:apply-templates/>
</HTML>
</xsl:template>
<xsl:template match=”PLANETS”>
<xsl:apply-templates>
</xsl:template>
<xsl:template match=”PLANET”>

<P>
<xsl:value-of select=”NAME”>
</P>
</xsl:template>
</xsl:stylesheet>
Sau quá trình diễn dịch tài liệu kết xuất cuối cùng có dạng :
<HTML>
<P>Mercury</P>
<P>Vernus</P>
<P>Earth</P>
</HTML>

Cấu trúc tài liệu XSLT

Tài liệu XSLT yêu cầu tiếp nhận dữ liệu XML theo cấu trúc hình cây, thực hiện
biến đổi và cho ra một tài liệu định dạng cũng theo cấu trúc hình cây khác. Ở góc độ tài
liệu XSLT, dữ liệu đầu vào là một tập hợp các nút (node). Có 7 loại nút mà bộ xử lý
XSLT có thể nhận dạng và chuyển dịch:
STT Nút (node) Mô tả
1 Document Root (gốc tài liệu) Nơi khởi đầu của tài liệu cần diễn dịch.
2 Attribute (thuộc tính) Nắm giữ thuộc tính của phần tử thẻ. Giá trị
thuộc tính đã loại bỏ dấu bao chuỗi.
3 Element (phần tử) Bao gồm thẻ tên của phần tử (thẻ đóng, thẻ










- 154 -
mở) và tập các phần tử con giữa thẻ đóng và
thẻ mở (nếu có).
4 Comment (chú thích) Nằm giữ dữ liệu của chuỗi văn bản chú
thích (dã loại bỏ ký hiệu <!—và >
5 Namespace (không gian tên) Nắm giữ chuỗi định dạng URI của không
gian tên.
6 Processing Instruction (chỉ thị
xử lý)
Nắm giữ nội dung chuỗi chỉ thị xử lý đã
loại bỏ hai ký tự định dạng là <? và ?>.
7 Text (văn bản) Dữ liệu thuần text nằm giữa hai thẻ đóng và
thẻ mở.

Trước hết tài liệu XSLT phải được đặt trong cặp thẻ <stylesheet>. Chúng ta sử
dụng bí danh cho không gian tên là xsl (đây cũng là quy ước chuẩn của W3C) cho biết
các thẻ sử dụng trong tài liệu phân biệt với không gian tên thông thường khác (chẳng
hạn như HTML).
<?xml version=”1.0”?>
<xsl:stylesheet xmlns:xsl=
.
.
.
</xsl:stylesheet>

Khi bộ chuyển dịch XSLT được gọi nó sẽ thực hiện hai thao tác, đọc các chỉ thị
so khớp trong tài liệu XSLT và truy tìm dữ liệu trong tài liệu XML đặt vào tương ứng.
Quá trình truy tìm dữ liệu trong tài liệu XML (cụ thể ở đây là planets.xml) sẽ được

duyệt bắt đầu từ phần tử gốc. Chẳng hạn nếu muốn khi gặp phần tử gốc của tài liệu
XML thì trình diễn dịch XSLT phả
i kết xuất chuỗi mang nội dung “This is XML Root”
để thực hiện điều này trong tài liệu XSLT, ta phải so khớp như sau :









- 155 -
<?xml version=”1.0”?>
<xsl:stylesheet xmlns:xsl=
<xsl:template match=”/”>
<HTML>
This is XML Root
</HTML>
</xsl:template>
</ xsl:stylesheet>
Tài liệu kết xuất cuối cùng là :
<HTML>
This is XML Root
</HTML>
Chỉ định mẫu so khớp với thuộc tích match
Thuộc tính so khớp dùng để yêu cầu một thẻ lệnh thực hiện theo một điều kiện
dữ liệu thỏa mãn nào đó. Ta có thể dùng thuộc tính so khớp trong các phần tử điều
khiển XSL như <xsl:apply-templates>, <xsl:value-of>, <xsl:for-each>, <xsl:copy-of>

hay <xsl:sort>. Các trường hợp sử dụng của thuộc tính match.
So khớp phần tử gốc của dữ liệu XML (matching root)
Phần tử gốc của tài liệu XML được so khớp bằ
ng ký tự “/” khi ta nhận được ký
tự “/” cũng có nghĩa là trình duyệt bắt đầu phân tích gốc của cây tài liệu đầu vào. Ví
dụ:
<xsl:template match=”/”>
<HTML>
<xsl:apply-templates/>
</HTML>
</xsl:template>

So khớp các phần tử (matching element)

So khớp một phần tử đơn giản bằng cách chỉ định tên của phần tử.









- 156 -
Ví dụ :

<xsl:template match=”PLANETS”>
<HTML>
<xsl:apply-templates/>

</HTML>
</xsl:template>

So khớp các phần tử con

Ký tự “/” không chỉ dùng so khớp phần tử gốc mà còn được dùng làm dấu phân
cách biểu diễn đường dẫn từ nút cha đến nút con sang dữ liệu XML. Ví dụ để so khớp
phần tử NAME là con của phần tử PLANET ta có thể viết như sau trong XSLT.
<xsl:template match=”PLANET/NAME”>
<H3>
<xsl:value-of select=”.”/>
</H3>
</xsl:template>
Ký tự “.” trong thuộc tính select yêu cầu thẻ <xsl:value-of > chọn dữ liệu của
nút hiện hành trong cây tài liệu đang được xử lý.
Ta có thể dùng ký tự “*” trong thuộc tính select để yêu cầu thẻ <xsl:value-of>
chọn tất cả các phần tử. Ví dụ :
<xsl:template match=”PLANET/*/NAME”>
<H3>
<xsl:value-of select=”.”/>
</H3>
</xsl:template>
Sẽ lấy tất cả phần tử bên dưới PLANET có phần tử con tên là NAME.


So khớp các phần tử cấp dưới (descendant)











- 157 -
Để so khớp và chọn ra tất cả các phần tử cấp dưới của PLANET mà không phân
biệt mức độ lồng nhau của các phần tử ta dùng PLANET//NAME. PLANET//NAME
tương đương với PLANET/NAME, PLANET/*/NAME, PLANET/*/*/NAME Ví dụ:
<xsl:template match=”PLANET//NAME”>
<H3>
<xsl:value-of select=”.”/>
</H3>
</xsl:template>

So khớp bằng biểu thức ngoặc vuông []

Ta có thể dùng biểu thức ngoặc vuông để kiểm tra xem một điều kiện nào đó là
true hay false.
Ví dụ như kiểm tra :
Giá trị thuộc tính trong một chuỗi.
Giá trị của một phần tử.
Kiểm tra xem một phần tử có chứa thuộc tính hay phần tử con khác
không.
Ví trí của một nút dữ liệu.
Ví dụ :

Để so khớp và chọn ra phần tử PLANET có chứa phần tử con NAME ta dùng :
<xsl:template match=”PLANET[NAME]”>

Để so khớp và chọn ra mọi phần tử có chứa thuộc tính con NAME
<xsl:template match=”*[NAME]”>
Để so khớp và chọn ra phần tử PLANET có chứa phần tử con là NAME hay
MASS
<xsl:template match=”PLANET[NAME | MASS]”>
Để so khớp và chọn ra phần tử PLANET có chứa thuộc tính UNITS mang giá trị
“days” :









- 158 -
<xsl:template match=”PLANET[@UNITS=’days’]”

Chỉ định mẫu và chọn dữ liệu bằng thuộc tính select

Phần tử <xsl:value-of> được dùng để lấy ra nội dung của một mục dữ liệu trong
tài liệu XML. Bạn có thể sử dụng thuốc tính select của <xsl:value-of> để chọn chính
xác một mục dữ liệu. Thuộc tính select yêu cầu một đường dẫn XPath đến phần tử hay
thuộc tính được chọn.
Ví dụ :

<?xml version=”1.0”?>
<xsl:stylesheet xmlns:xsl=
<xsl:template match=”PLANETS”>

<HTML>
<HEAD>
<TITLE>
The Planets
</TITLE>
</HEAD>
<BODY>
<xsl:apply-templates select=”PLANET” />
</BODY>
</HTML>
</xsl:template>
<xsl:template match=”PLANET”>
<P>
<xsl:value-of select=”NAME” />
</P>
</xsl:template>
</xsl:stylesheet>

Kết quả xuất :









- 159 -
<HTML>

<HEAD>
<TITLE>
The Planets
</TITLE>
</HEAD>
<BODY>
<P>Mercury</P>
<P>Venus</P>
<P>Earth</P>
</BODY>
</HTML>

Thay đổi cấu trúc tài liệu đầu vào:

Tạo một phần tử mới

Sử dụng phần tử <xsl:element> để tạo mới một phần tử khác cho dữ liệu
đầu vào.
Ví dụ
: giả sử ta có tài liệu xml sau:
<PLANET NAME=”Mecury” >
<MASS UNITS=”(Earth=1)”>.0553</MASS>
<DAY UNITS=”days”>58.65</DAY>
<RADIUS UNITS=”miles”>1516</RADIUS>
<DENSITY UNITS=”(Earth=1)”>.983</DENSITY>
<DISTANCE UNITS=”million miles”>43.4</DISTANCE>
</PLANET>
<PLANET NAME=”Venus” >
<MASS UNITS=”(Earth=1)”>.815</MASS>
<DAY UNITS=”days”>116.75</DAY>

<RADIUS UNITS=”miles”>3716</RADIUS>
<DENSITY UNITS=”(Earth=1)”>.943</DENSITY>
<DISTANCE UNITS=”million miles”>66.8</DISTANCE>
</PLANET>

×