- 相關推薦
用VB實現班主任工作的電子化
摘要:本文探討了如何利用VB,讀取數據庫中的數據,通過Microsoft MAPI Controls 6.0控件,利用Outlook Express,從而實現成績通知單以E-mail的形式自動寄發。
關鍵字:VB,E-mail, MAPI,自動寄發
一、問題提出
每期期未,寄發學生成績通知單都是班主任的例行工作,然而,現在大多數人仍然還采用原始的平信寄發方式,并且由于平信很容易丟失而導致以前所做的工作(如抄錄學生期末成績、寫出學生的學期鑒定,填寫學生成績通知單和寫、寫信封、寄發通知書等)前功盡棄,同時由于許多學生放假后并沒有回家,如外去打工或因種種原因沒有回家而無法收到信件。隨著INTERNET技術的不斷普及,電子郵件已經開始進入尋常百姓家,它以快速、方便、可以異地查閱而逐漸代替普通的信件,如果你的學生(或家長)都有E-mail,我們以E-mail來寄發學生的成績通知單了,這樣就可以減少上述弊端。但一個個填寫每個學生的收件人地址和相關的數據(如各門功課的成績、評語),既枯燥又煩鎖,下面我們將探討如何利用VB來讀取學生成績數據庫中的數據,通過E-mail實現學生成績通知單的自動寄發。
二、工作原理
學生成績通知單各學校雖然有所不同,但大都大同小異,通常包括:學生各學科的成績,操行分,班主任評語等內容(如上圖)。如果這些內容都在數據庫中,我們可以通過VB訪問數據庫來讀取數據庫中用戶的E-mail地址、成績及評語,再通過VB的Microsoft MAPI Controls 6.0控件中的MAPI Session和MAPI Messages兩個控件進行電子郵件的管理,利用OutlookExpress。就能實現同時給班上所有學生用E-mail的自動發送通知書了。但由于各個學校成績科目及多少不同,因此數據庫中字段數就會不同,為使程序具有通用性,因此,在設計時我們使用了自動讀取數據表中的字段個數和字段名,并自動在窗體上自動生成相對應的文本框和標簽。
三、程序設計
1、 啟動VB后,新建一個標準的EXE工程
2、 在“工具”菜單中選“部件”,在“控件”選項卡中選“Microsoft MAPI Controls 6.0”,在控件工具箱中將郵件控件MAPIMessages和MAPISession兩個控件添加到窗體中。
2、添加兩個命令按鈕,將其CAPTION屬性設計為“全部發送”和“退出”。
3、添加一個數據控件(Data1),并設置“Connect”、“DataBaseName”和“RecordSource”對應的屬性。
上述三個控件最好放在窗體的下方。
4.編寫源程序代碼:將下面的代碼添加到代碼窗口中
Dim txtobject(20), lblObject(20)
Dim SendToText As String
Const M_Subject = "成績通知單"
Private Sub Command2_Click()
Unload Me
End Sub
'定義一個用來回復(發送郵件)的函數
Public Function StarSend(T1, T2, T3)
MAPIMessages1.MsgIndex = -1
MAPIMessages1.RecipDisplayName = T1
MAPIMessages1.MsgSubject = T2
MAPIMessages1.MsgNoteText = T3
MAPIMessages1.SessionID = MAPISession1.SessionID
'MAPIMessages1.AttachmentPathName = "e:\My Documents\注意事項.htm" ' 確定要發送的電子郵件的附件
MAPIMessages1.Send
End Function
Private Sub Command1_Click()
Data1.Recordset.MoveFirst
MAPISession1.SignOn
Do While Data1.Recordset.EOF = False
Sum = Sum 1
' SendToText指的是發送郵件的內容(郵件正文)
SendToText = txtobject(1).Text "同學" Chr(13) Chr(10) "你好!" Chr(13) Chr(10)
SendToText = SendToText "現將你的成績通知你,希望你在假期注意復習功課!" Chr(13) Chr(10)
'下面將自動獲得各學科的名稱和成績
For i = 3 To Data1.Recordset.RecordCount
SendToText = SendToText lblObject(i).Caption ":" txtobject(i).Text "分" Chr(13) Chr(10)
Next
SendToText = SendToText " 班主任: 劉友生 " Chr(13) Chr(10)
SendToText = SendToText "湖南省衡陽經濟貿易學校" Chr(13) Chr(10)
SendToText = SendToText "發信日期:" Data$ " 發信時間:" Time$
GetTxtName ’調用函數
Call StarSend(txtobject(2).Text, M_Subject, SendToText)
Data1.Recordset.MoveNext
If Data1.Recordset.EOF = True Then
MsgBox Str(Sum) "個人員的成績通知單已經發送完畢!", , " 發 送 郵 件"
End
End If
Loop
End Sub
Private Sub GetFieldNum()
Data1.Recordset.MoveFirst
'自動獲得數據表中字段數并在窗體中自動生成相應文本
【用VB實現班主任工作的電子化】相關文章:
家庭理財系統的設計與實現VB+SQL03-08
用VB構鍵Internet的應用03-18
用VB構鍵Internet的應用-03-18
利用VB實現PC機與多單片機通訊03-18
VB5.0中數據庫查詢模塊的實現03-03
匯編語言考試系統設計與實現VB+SQL03-08
通用試題庫系統的設計與實現VB+SQL03-08