Chương trình Thông báo kết quả học tập qua điện thoại - pdf 16

Download miễn phí Khóa luận Chương trình Thông báo kết quả học tập qua điện thoại



MỤC LỤC
 
LỜI NÓI ĐẦU 1
PHẦN 1 GIỚI THIỆU ĐỀ TÀI 2
I. Đặt vấn đề : 3
II. Môi trường lập trình : 4
III. Giới thiệu về hoạt động của chương trình : 4
PHẦN 2 CƠ SỞ LÝ THUYẾT 6
Chương 1 GIAO TIẾP GIỮA ĐIỆN THOẠI VÀ MÁY TÍNH 7
I. Sự cần thiết của modem : 7
II. Giao tiếp lập trình ứng dụng cho hệ thống điện thoại - TAPI (Telephony Application Programming Interface) : 8
II.1. Một số khái niệm trong mô hình TAPI : 8
II.1.1. TAPI là gì ? 8
II.1.2. Chương trình ứng dụng TAPI : 9
II.1.3. TAPI DLL (Dynamic link library - Thư viện liên kết động) : 9
II.1.4. MSP (Media Service Provider ) : 10
II.1.5. MSPI (Media Service Provider Interface) : 11
II.1.6. TAPI Server : 11
II.1.7. TSP (Telephony Service Provider ) : 11
II.1.8. TSPI (Telephony Service Provider Interface) : 11
II.1.9. Service Providers : 12
II.2. Mô hình lập trình cho hệ thống điện thoại : 13
II.3. Mô hình ứng dụng TAPI : 14
II.4. Các phiên bản TAPI : 16
III. DTMF trong hệ thống điện thoại : 18
Chương 2 TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU 19
I. Cơ sở dữ liệu trong thế giới hiện đại : 19
II. Sơ lược về ODBC (Open DataBase Connectivity) : 20
III. Các cách truy xuất cơ sở dữ liệu : 20
III.1. DAO (Data Access Objects): 20
III.2. RDO (Remote Data Object) : 20
III.3. ADO (ActiveX Data Objects) : 21
IV. Sơ lược về SQL (Structured Query Language) : 21
Chương 3 SƠ LƯỢC VỀ TIẾNG NÓI VÀ CÁC PHƯƠNG PHÁP TỔNG HỢP TIẾNG NÓI 23
I. Sơ lược về tiếng nói : 23
I.1. Đặc tính chung của tiếng nói : 23
I.2. Công nghệ Text–to–speech dùng để tổng hợp tiếng nói : 25
I.3. Sự cần thiết của công nghệ Text–to–speech (TTS) : 25
II. Các phương pháp tổng hợp tiếng nói trong hệ thống tiếng Việt : 26
II.1. Sự cần thiết của việc tổng hợp tiếng nói : 26
II.2. Các tiêu chuẩn cần thỏa mãn khi tổng hợp tiếng nói : 26
II.3. Các phương pháp tổng hợp tiếng nói cho tiếng Việt : 27
III. Giới thiệu về file Wave (*.wav) : 30
III.1. Khái niệm về file Wave và file RIFF : 30
III.2. Cấu trúc file Wave : 32
III.2.1. Chunk Format : 32
III.2.2. Chunk Data : 33
IV. Các phương pháp phát một file Wave : 36
IV.1. Dùng hàm sndPlaySound hay PlaySound : 36
IV.2. Dùng MCI (Media Control Interface) : 36
IV.3. Dùng các hàm cấp thấp của Windows : 36
V. Cách đọc file Wave vào bộ nhớ : 38
VI. Phương pháp thu âm : 39
PHẦN 3 THIẾT KẾ HỆ THỐNG 41
Chương 1 SƠ ĐỒ HOẠT ĐỘNG CỦA HỆ THỐNG 42
I. Lưu đồ giải thuật : 42
II. Sơ đồ luồng hoạt động của hệ thống : 43
Chương 2 HOẠT ĐỘNG GIAO TIẾP GIỮA ĐIỆN THOẠI VÀ MÁY TÍNH 46
I. Khởi tạo đường truyền (line) : 46
II. Kiểm tra đường truyền (line) hợp lệ : 47
III. Mở line : 47
IV. Đăng ký các sự kiện cho TAPI : 47
V. Kết nối với cuộc gọi đến : 47
VI. Thu nhận các mã DTMF : 48
VII. Kết thúc cuộc gọi : 48
VIII. Đóng line hiện tại : 49
IX. Kết thúc TAPI : 49
Chương 3 THIẾT KẾ VÀ TRUY XUẤT CƠ SỞ DỮ LIỆU 50
I. Sơ lược về cơ sở dữ liệu : 50
II. Mô hình quan niệm dữ liệu : 51
III. Hoạt động truy xuất cơ sở dữ liệu : 52
IV. Chương trình cập nhật dữ liệu : 52
Chương 4 TỔ CHỨC, TRUY XUẤT VÀ PHÁT FILE TIẾNG NÓI 55
I. Chọn phương pháp tổng hợp tiếng nói : 55
II. Chọn định dạng (format) cho file tiếng nói : 55
III. Cách tổ chức file tiếng nói : 56
IV. Chọn phương pháp phát và thu tiếng nói : 58
V. Đọc dữ liệu tiếng nói vào bộ nhớ : 58
VI. Phát dữ liệu tiếng nói từ vùng đệm : 59
VII. Chương trình thu âm : 59
PHẦN 4 VẬN HÀNH VÀ ĐÁNH GIÁ HỆ THỐNG 63
I. Vận hành : 64
I.1. Chưong trình chính : 64
I.2. Chưong trình cập nhật dữ liệu : 66
I.3. Chưong trình thu tiếng nói : 68
II. Đánh giá hệ thống : 69
PHẦN 5 KẾT LUẬN 71
PHỤ LỤC MÃ NGUỒN THỰC HIỆN MỘT SỐ CÔNG VIỆC CHÍNH 73
1. CHƯƠNG TRÌNH CHÍNH 74
2. CHƯƠNG TRÌNH CẬP NHẬT DỮ LIỆU 97
3. CHƯƠNG TRÌNH THU TIẾNG NÓI 103
TÀI LIỆU THAM KHẢO 113
MỤC LỤC 114
 
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

ọn phiên bản đầu tiên là TAPI 1.4 . Phiên bản này được thiết kế theo kiến trúc ngôn ngữ C++ nên khi lập trình trong Visual Basic sẽ khó khăn hơn. Tuy nhiên, ứng dụng TAPI 1.4 sẽ có thể chạy trên mọi phiên bản Windows 32-bit và không đòi hỏi cấu hình cao, trong khi ứng dụng TAPI 3 chỉ chạy trên Windows 2000/XP.
Để sử dụng các hàm của TAPI, các hàm này phải được khai báo trước trong một module giống như các hàm API khác của Windows. Sau đây là các bước để tạo một kết nối với cuộc gọi tới :
Khởi tạo đường truyền (line) :
Mọi hoạt động giao tiếp giữa điện thoại và máy tính muốn diễn ra thì trước hết cần khởi tạo đường truyền giữa máy tính và điện thoại. Ở đây, modem sẽ là thiết bị trung gian giữa máy tính và điện thoại. Vì thế, đường truyền mà ta cần quan tâm chính là modem. Một máy tính có thể có gắn nhiều hơn một modem. Vì vậy, trước hết ta cần sử dụng hàm lineInitialize() để lấy về tổng số đường truyền (line) mà nó phát hiện có trong máy.
Cũng từ đây, ta sẽ chỉ định hàm nào sẽ tiếp nhận các sự kiện được sinh ra bởi các hoạt động của TAPI (ví dụ như khi chuông reo, khi có mã DTMF được gửi tới, vv...). Hàm này được gọi là lineCallBack() , do ta tự định nghĩa. Sau đó, ta sẽ lấy địa chỉ của hàm này và đưa vào hàm lineInitialize() như là một tham số của hàm lineInitialize()
Sau khi đã khởi tạo thành công, lineInitialize() sẽ trả về một handle của TAPI đã nạp vào bộ nhớ. Handle này sẽ được sử dụng trong suốt quá trình hoạt động của hệ thống.
Kiểm tra đường truyền (line) hợp lệ :
Vì mục đích của ta là lấy được các modem hiện có nên ta cần kiểm tra những line nào thích hợp. Sau khi có được tổng số các line, ta duyệt qua từng line để tìm line thích hợp bằng cách kết hợp gọi 2 hàm lineNegotiateAPIVersion() và lineGetDevCaps().
Ứng với mỗi line, hàm lineNegotiateAPIVersion() sẽ trả về con số phiên bản (version) API mà tương thích với phiên bản của TAPI hiện đang sử dụng. Với con số phiên bản lấy được, hàm lineGetDevCaps() sẽ kiểm tra và trả về những chức năng được hỗ trợ trên line này. Từ đây, ta sẽ chọn được các line thích hợp chính là các modem hiện có.
Mở line :
Để bắt đầu cho sự bắt tay làm việc giữa máy tính và điện thoại, sau khi đã chọn được line thích hợp, ta mở line đó bằng hàm lineOpen(). Nếu mở thành công. nó sẽ trả về một handle của line được mở. Với handle này, ta sẽ điều khiển mọi hoạt động diễn ra trên line này.
Đăng ký các sự kiện cho TAPI :
Mọi sự kiện liên quan đến TAPI (ví dụ chuông reo, phát/nhận các mã DTMF, ... ) được gửi đến hàm lineCallBack() đều phải được đăng ký sau khi mở line. Để đăng ký, ta gọi hàm lineSetStatusMessages() và đưa vào giá trị mô tả các sự kiện mà ta cần. Giá trị này thực chất là một dãy các 32 bit liên tiếp, mỗi bit tương ứng với một sự kiện của TAPI.
Kết nối với cuộc gọi đến :
Khi có tín hiệu gọi tới (chuông reo), thông điệp LINEDEVSTATE_RINGING sẽ được gửi tới trong hàm lineCallBack() cùng với một handle của cuộc gọi đó. Nếu số tiếng chuông reo bằng với một con số mà ta quy định trước đó thì ta sẽ gọi hàm lineAnswer() với handle vừa nhận được để kết nối với cuộc gọi đến. Công việc này tương đương với việc nhấc máy điện thoại lên để trả lời người gọi tới. Vì vậy, kể từ lúc này, ta có thể gửi và nhận các mã DTMF hay gửi đi một chuỗi âm thanh nào đó và người gọi có thể nghe được.
Thu nhận các mã DTMF :
Một khi đã kết nối thành công với cuộc gọi đến, ta gọi hàm lineMonitorDigits() để giám sát và thu nhận các mã DTMF được gửi tới. Có thể nói đây là phần trung tâm của hệ thống, vì hệ thống sẽ tiếp nhận yêu cầu của người gọi thông qua các mã DTMF này.
Khi người gọi nhấn các phím trên điện thoại thì thông điệp LINE_MONITORDIGITS sẽ được gửi tới hàm lineCallBack() cùng với các mã DTMF tương ứng như sau :
Phím
Mã DTMF (Hex)
0
30
1
31
2
32
3
33
4
34
5
35
6
36
7
37
8
38
9
39
*
2A
#
23
Kết thúc cuộc gọi :
Khi người gọi chọn yêu cầu “kết cầu thúc cuộc gọi” từ menu hay người gọi gác máy bất kỳ lúc nào, ta phải gọi hàm lineDrop() để hủy cuộc gọi hiện tại đang kết nối và hàm lineDeallocateCall() để giải phóng cuộc gọi khỏi bộ nhớ. Bây giờ hệ thống sẽ trở về trạng thái chờ đợi cuộc gọi khác đến.
Đóng line hiện tại :
Nếu muốn chọn modem khác để hoạt động, hay kết thúc hoạt động của hệ thống, ta cần gọi hàm lineClose() để đóng line hiện tại đang được mở. Đây là điều nên làm vì nó sẽ hoàn trả tài nguyên về cho máy.
Kết thúc TAPI :
Sau khi khởi tạo các line bằng hàm lineInitialize(), một số tài nguyên hệ thống sẽ bị chiếm dụng suốt phiên làm việc của TAPI. Khi thoát chương trình, ta gọi hàm lineShutdown() để kết thúc phiên làm việc đó, đồng thời giải phóng các tài nguyên hệ thống.
Chương 3 THIẾT KẾ VÀ TRUY XUẤT CƠ SỞ DỮ LIỆU
Sơ lược về cơ sở dữ liệu :
Một số đặc điểm của cơ sở dữ liệu dùng trong chương trình này :
Mô hình cơ sở dữ liệu được chọn là mô hình cơ sở dữ liệu quan hệ
Được cài đặt trong hệ quản trị cơ sở dữ liệu Microsoft Access 97.
Phông chữ được sử dụng trong cơ sở dữ liệu này thuộc bảng mã VNI Windows (2 byte). Mặc dù bảng mã này sử dụng 2 byte để mã hóa một ký tự tiếng Việt , nhưng toàn bộ các ký tự hoa và ký tự thường đều cùng nằm trong một phông chữ. Còn bảng mã TCVN3 (ABC) chỉ sử dụng 1 byte cho mỗi ký tự tiếng Việt nhưng lại phân ra thành 2 phông khác nhau : một phông cho chữ hoa và một phông cho chữ thường. Điều này sẽ gây khó khăn cho cả việc thiết kế và việc nhập dữ liệu từ người dùng. Bảng mã Unicode cũng sử dụng 2 byte cho mỗi ký tự tiếng Việt nhưng giá trị chênh lệch mã ASCII giữa ký tự hoa và ký tự thường không đồng đều. Còn bảng mã VNI thì giá trị chênh lệch này luôn là 20h. Ví dụ : chữ “A” có mã ASCII là 41h, chữ “a” có mã ASCII là 61h ; chữ “B” có mã ASCII là 42h, chữ “b” có mã ASCII là 62h . Sự chênh lệch đồng đều này sẽ thuận lợi cho việc chuyển đổi giữa chữ hoa và chữ thường.
Mô hình quan niệm dữ liệu :
Hoạt động truy xuất cơ sở dữ liệu :
Đối tượng truy xuất dữ liệu được sử dụng trong chương trình này là Microsoft DAO 3.6. Khi hệ thống bắt đầu hoạt động, cơ sở dữ liệu sẽ được mở bằng cách OpenDatabase() để sẵn sàng phục vụ cho các hoạt động truy xuất dữ liệu. Và khi hệ thống ngừng hoạt động, cơ sở dữ liệu cũng sẽ được đóng lại bằng cách Close.
Mỗi khi có người gọi tới muốn nghe một kết quả nào đó thì hệ thống sẽ yêu cầu người gọi cung cấp một số thông số cần thiết như : mã số học sinh, tên tháng hay tên học kỳ muốn biết, vv.... Từ những thông số này, hệ thống sẽ tạo ra một câu truy vấn SQL để tìm kết quả trong cơ sở dữ liệu và lấy về thông qua cách OpenRecordset(). Nếu không tìm thấy kết quả nào, thuộc tính EOF của biến đối tượng Recordset sẽ mang giá trị TRUE và ngược lại sẽ mang giá trị FALSE.
Vì mỗi lần truy vấn, hệ thống chỉ truy vấn trên một học sinh và được giới hạn bởi một tháng hay một học kỳ nào đó nên t...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status