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