【文章內(nèi)容簡(jiǎn)介】
表SaleTask的結(jié)構(gòu)編號(hào)字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō) 明1Id自動(dòng)編號(hào)記錄編號(hào)2SaleId文本,長(zhǎng)度50商業(yè)機(jī)會(huì)編號(hào)3EmpId數(shù)字/長(zhǎng)整型銷售人員編號(hào)4TaskDate文本/長(zhǎng)度50任務(wù)日期5Purpose文本/長(zhǎng)度50拜訪目的6CtId數(shù)字/長(zhǎng)整型拜訪人員編號(hào)7Place文本,長(zhǎng)度100拜訪地點(diǎn)8StartTime數(shù)字/長(zhǎng)整型開始時(shí)間9EndTime文本,長(zhǎng)度50目前進(jìn)度10EndTimeDetail結(jié)束時(shí)間11Detail備注詳細(xì)介紹12Result備注任務(wù)結(jié)果、進(jìn)展總結(jié) 用戶信息表Users表Users用來(lái)保存系統(tǒng)用戶信息,結(jié)構(gòu)如表8所示。 表Users的結(jié)構(gòu)編號(hào)字段名稱數(shù)據(jù)結(jié)構(gòu)說(shuō)明1UserName文本,長(zhǎng)度50用戶名,主鍵2UserPwd文本,長(zhǎng)度50密碼第六章 系統(tǒng)詳細(xì)設(shè)計(jì)當(dāng)系統(tǒng)運(yùn)行時(shí),首先打開登錄窗體,只有有權(quán)限的用戶才能進(jìn)行系統(tǒng)。登錄成功后,將顯示系統(tǒng)主界面。 設(shè)計(jì)登錄窗體登錄窗體的名稱為FrmLogin,它的界面布局如圖4所示。圖4 登錄窗體的界面布局登錄窗體的屬性表如表9所示?! ? 表9 設(shè)計(jì)登錄窗體的屬性窗體屬性設(shè)置值具體說(shuō)明名稱FrmLogin設(shè)置窗體名稱BorderStyle1Fixed Single設(shè)置窗體的邊框?qū)傩訡aption身份驗(yàn)證窗體的標(biāo)題條文本ControlBoxFalse取消控制按鈕,防止用戶通過(guò)控制按鈕關(guān)閉對(duì)話框StartUpPosition2屏幕中心設(shè)置窗體彈出時(shí),位置在屏幕中心登錄窗體中控件的屬性如表10所示。表10 登錄窗體包含的控件及其屬性 對(duì)象名屬性屬性值Label1Caption用戶名Label2Caption密碼txtUserText空txtPwdText空PasswordChar*Cmd_OkCaption確定Cmd_CancelCaption取消下面介紹登錄窗體的部分代碼(1) 變量聲明登錄窗體的變量聲明如下:Public PasswordKey As StringPublic Try_times As IntegerPublic NameKey As String(2)Cmd_Click過(guò)程當(dāng)用戶單擊“確定”按鈕時(shí)觸發(fā)Cmd_Click事件,進(jìn)行身份驗(yàn)證,代碼如下:Private Sub Cmd_OK_Click() Dim j As Single39。數(shù)據(jù)有效性檢查 If txtUser = Then MsgBox 請(qǐng)輸入用戶名 Exit Sub End If If txtPwd = Then MsgBox 請(qǐng)輸入密碼 Exit Sub End If NameKey = MakeStr(txtUser) PasswordKey = MakeStr(txtPwd) 39。判斷用戶是否存在 If (NameKey) = False Then MsgBox 用戶名不存在 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已經(jīng)三次嘗試進(jìn)入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉 DBapi_Disconnect End Else Exit Sub End If End If 39。判斷密碼是否正確 (NameKey) If PasswordKey Then MsgBox 密碼錯(cuò)誤 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已經(jīng)三次嘗試進(jìn)入本系統(tǒng),均不成功,系統(tǒng)將關(guān)閉 DBapi_Disconnect End Else Exit Sub End If End If 39。登錄成功,將當(dāng)前用戶的信息保存在CurUser中 ()39。關(guān)閉自己 Unload MeEnd Sub程序的運(yùn)行過(guò)程如下:l 判斷是否輸入了用戶名和密碼,如果沒(méi)有輸入,則返回,要求用戶輸入。l 將輸入的用戶名和密碼賦值到變量NameKey和Passwordkey中,便于處理。l ()函數(shù),判斷當(dāng)臆用戶名是否存在。如果不存在,則返回,要求用戶重新輸入,同時(shí)將計(jì)數(shù)變量Try_times加1。l 如果用戶名存在,()函數(shù),讀取此用戶的數(shù)據(jù),并將用戶密碼與輸入的密碼進(jìn)行比較。如果密碼不同,要求用戶重新輸入,同時(shí)將計(jì)數(shù)變量Try_times加1。l 如果Try_times大于或等于3,則退出系統(tǒng)。l 如果通過(guò)密碼驗(yàn)證,則將當(dāng)前用戶的信息保存到curUser對(duì)象中,以便以后使用。l 關(guān)閉登錄窗體。設(shè)計(jì)主界面主窗體是工程的啟動(dòng)對(duì)象,可以在系統(tǒng)菜單中選擇“工程”/“屬性”,打開屬性窗口設(shè)置啟動(dòng)對(duì)象。本系統(tǒng)中主窗體名為FrmMain。打開窗體的設(shè)計(jì)窗口,選擇“工具”菜單項(xiàng)中的“菜單編輯器”,對(duì)菜單內(nèi)容進(jìn)行編輯,菜單編輯器如圖5所示。 圖5 菜單編輯器本系統(tǒng)的主界面如圖6所示。圖6 系統(tǒng)主界面在主窗體FrmMain中添加如下代碼:Private Sub Form_Load() 1End Sub當(dāng)主窗體啟動(dòng)時(shí),將打開“登錄”對(duì)話框。如果不能通過(guò)身份驗(yàn)證,則不能進(jìn)行系統(tǒng)。當(dāng)選擇“退出系統(tǒng)”菜單項(xiàng)時(shí)觸發(fā)mn_Click事件,代碼如下:Private Sub mn_Exit_Click() DBapi_Disconnect EndEnd Sub基本信息管理模塊包括地域信息管理、客戶類別管理、行業(yè)分類管理、職務(wù)名稱管理、項(xiàng)目類型管理和銷售人員管理。 編輯地域信息的窗體可以用來(lái)添加和修改地域信息,窗體名稱設(shè)置為FrmAreaEdit,窗體布局如圖7所示。圖7 窗體FrmAreaEdit布局Cmd_Ok_Click過(guò)程當(dāng)用戶單擊“確定”按鈕時(shí)觸發(fā)Cmd_Ok_Click事件,對(duì)應(yīng)的程序代碼如下:Private Sub Cmd_OK_Click() Dim TmpId As Integer If Trim(txtArea) = Then MsgBox 請(qǐng)輸入地域名稱 Exit Sub End If 39。將用戶輸入的輸入賦值到MyArea對(duì)象中 With MyArea .AreaName = Trim(txtArea) .AreaType = + 1 .UpperId = If Modify = False Then 39。插入 If .In_DB(Trim(txtArea), .UpperId) = True Then MsgBox Trim(txtArea) + 已經(jīng)存在 Exit Sub End If TmpId = .Insert 39。生成TreeView控件中新結(jié)點(diǎn)的關(guān)鍵字 Tmp_Key = Chr(Asc(a) + .AreaType) Tmp_Key = Tmp_Key + Trim(Str(TmpId)) = 1 = 2 = 3 Set TmpNode = (, _ tvwChild, Tmp_Key, .AreaName, 4, 5) = True Else 39。修改 If Trim(txtArea) Then If .In_DB(Trim(txtArea), .UpperId) = True Then MsgBox Trim(txtArea) + 已經(jīng)存在 Exit Sub End If End If Call .Update() If Trim(txtArea) Then = Trim(txtArea) End If = Trim(txtArea) End If End With Unload MeEnd Sub地域信息管理窗體的名稱設(shè)置為FrmAreaMan。在窗體中添加一個(gè)ImageList控件。右擊此控件,選擇菜單中的“屬性”命令,打開“屬性頁(yè)”對(duì)話框。單擊“圖像”選項(xiàng)卡,通過(guò)單擊“插入圖像”和“刪除圖像”來(lái)編輯圖像列表,如圖8所示。下面分析窗體FrmClassMan中部分過(guò)程的代碼。 Form_Load過(guò)程Private Sub Form_Load() FocusAreaName = 中國(guó) 39。添加根結(jié)點(diǎn) Set TmpNode = (, , a0, 全球地域, 1, 3) = True = 2 Call Add_AreaToTree(TreeView1) TreeView1_ClickEnd Sub Cmd_Add_Click過(guò)程Private Sub Cmd_Add_Click() If = 4 Then MsgBox 此地域已不能再細(xì)分 Exit Sub End If 39。打開編輯窗體 = = = False 1 TreeView1_ClickEnd Sub Cmd_Modi_Click過(guò)程當(dāng)單擊“修改”按鈕時(shí)觸發(fā)Cmd_Modi_Click事件,對(duì)應(yīng)的代碼如下:Private Sub Cmd_Modi_Click() If = a0 Then MsgBox 此項(xiàng)不能修改 Exit Sub End If = () = = True 1 TreeView1_ClickEnd Sub Cmd_Del_Click過(guò)程當(dāng)單擊“刪除”按鈕時(shí)觸發(fā)Cmd_Del_Click事件,對(duì)應(yīng)的代碼如下:Private Sub Cmd_Del_Click() Dim TmpOrg As String If = 0 Then MsgBox 此項(xiàng)不能刪除 Exit Sub End If If () = True Then MsgBox + 包含下級(jí)地域,不能刪除 Exit Sub End If TmpOrg = (TmpAreaId) If TmpOrg Then MsgBox 地域中包含客戶信息 + TmpOrg + ,不允許刪除 Exit Sub End If 39。確認(rèn)刪除 If MsgBox(是否確定要?jiǎng)h除 + Trim(), vbYesNo, 請(qǐng)確認(rèn)) = vbNo Then Exit Sub End If () TreeView1_ClickEnd Sub TreeView1_Click過(guò)程當(dāng)單擊TreeView列表時(shí)觸發(fā)TreeView1_Click事件,對(duì)應(yīng)的代碼如下:Private Sub TreeView1_Click() Dim TmpType As Integer 39。根據(jù)關(guān)鍵字獲取地域信息 FocusKey = = TmpType = Asc(Left(, 1)) = TmpType Asc(a) = Val(Right(, Len() 1)) 39。如果是根結(jié)點(diǎn),則不需要再處理 If = 0 Then Exit Sub End If 39。決定結(jié)點(diǎn)顯示的圖像 If () = False Then = 4 = 4 = 5 End If 39。將地域信息讀取到CurArea對(duì)象中 ()End Sub為了方便用戶在其他模塊中選擇地域信息,設(shè)計(jì)一個(gè)選擇地域信息的窗體,窗體名為FrmAreaSel。它的布局如圖9所示。窗體的屬性如表11所示。 表11 設(shè)置窗體的屬性窗體屬性設(shè)置值具體說(shuō)明名稱FrmAreaSel設(shè)置窗體名稱BorderStyle1Fixed Singlw設(shè)置窗體的邊框?qū)傩訡aption窗體的標(biāo)