【文章內(nèi)容簡介】
serPower文本使用權(quán)限Not Null2. 學(xué)生信息表(StuInfo):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字SID文本學(xué)號Not NullPrimary KeySName文本姓名Not NullSGender文本性別Not NullSPlace文本籍貫Not NullSBirthday日期/時間出生日期Not NullSMinzu文本民族Not NullSZhengzhi文本政治面貌Not NullSDormitory文本寢室號碼Not NullSAddress文本家庭住址Not NullSCode文本郵政編碼Not NullSTel文本聯(lián)系電話Not NullSRemark備注備注Not Null3. 班級信息表(Class):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字ID文本班級代碼Not NullPrimary Key4. 專業(yè)信息表(Major):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字ID文本專業(yè)代號Not NullPrimary KeyName文本專業(yè)名稱Not Null5. 學(xué)院信息表(Depart):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字ID文本學(xué)院代號Not NullPrimary KeyName文本學(xué)院名稱Not Null6.課程信息表(Lesson):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字ID文本課程代號Not NullPrimary KeyName文本課程名稱Not NullTime文本課時Not NullMark 文本學(xué)分Not Null7.學(xué)生成績表(Result):字段名數(shù)據(jù)類型說明是否為空是否為關(guān)鍵字ID文本學(xué)生學(xué)號Not NullPrimary KeyName文本課程名稱Not NullPrimary KeyScore文本分?jǐn)?shù)Not NullRemark文本備注Not Null2.2系統(tǒng)流程圖登陸表單(管理員或者普通用戶身份登陸)Splash表單MDI主窗口(系統(tǒng)主窗口)管理學(xué)生學(xué)籍信息(學(xué)生基本信息管理,課程管理,專業(yè)/學(xué)院管理和考試成績管理管理系統(tǒng)用戶(添加,刪除)對學(xué)生信息進(jìn)行查找(按學(xué)號或姓名)返回查詢信息管理員登陸重新登陸 系統(tǒng)流程圖2.3 系統(tǒng)功能分析系統(tǒng)開發(fā)的目標(biāo)是實現(xiàn)學(xué)生學(xué)籍管理的系統(tǒng)化、規(guī)范化和自動化,這是在用戶要求的基礎(chǔ)上提出來的,功能要求如下: (一)學(xué)生信息管理:能對學(xué)生信息進(jìn)行添加、修改、刪除。(二)課程管理:對課程進(jìn)行添加、修改、刪除操作。(三)專業(yè)/學(xué)院設(shè)置:(三)考試成績管理:(四)查詢學(xué)生信息:根據(jù)學(xué)號或姓名對學(xué)生信息進(jìn)行精確/模糊查詢(五)用戶管理:定義使用本系統(tǒng)的用戶名稱及密碼 第三章 系統(tǒng)具體實現(xiàn)經(jīng)過需求分析、功能模塊設(shè)計之后要進(jìn)入詳細(xì)設(shè)計階段,本階段將按系統(tǒng)的主要模塊進(jìn)行論述,重在闡述具體的某項功能的實現(xiàn)方法或運(yùn)用到的相關(guān)技術(shù)。3.1 準(zhǔn)備工作1. 添加引用:單擊工程菜單中的引用選項,添加Microsoft ActiveX Data Objects Library和Microsoft Excel Object Library兩個引用。2. 添加部件:單擊工程菜單中的部件選項,添加Microsoft ADO Data Control (OLEDB)、Microsoft Common Dialog Control (SP3) 、Microsoft FlexGrid Control 、Microsoft Windows Common Controls (SP4)和Microsoft Windows Common Controls2 。3.2 模塊設(shè)計添加兩個模塊module1和module2,在module1中添加如下代碼Option ExplicitGlobal con As New Global rs As New Global classid As String, stuid As StringGlobal LoginUser As String, LoginPower As String LoginUser記錄當(dāng)前登陸用戶的用戶名,LoginPower記錄當(dāng)前登陸用戶的權(quán)限D(zhuǎn)im Userid As String, Userpwd As String, Username As String, Userpower As StringDim sqlstr As StringSub Main()If = True Then MsgBox 注意程序已經(jīng)運(yùn)行,不能再次裝載!, vbOKOnly Exit SubElse Provider=。Data Source=amp。+\ End IfEnd Sub 在module2中添加代碼(MD5算法) 3.3 用戶界面實現(xiàn)3.3.1 登陸界面(frmlogin)因為本系統(tǒng)是按學(xué)籍管理的思想設(shè)計的,故而登陸部分主要完成密碼校驗、確定管理員等功能,對于密碼本系統(tǒng)采用的是MD5算法。這里附上本程序的登陸界面。 用戶登陸界面在代碼窗口的“通用”部分,定義一個模塊級的公共變量loginno用來記錄當(dāng)前密碼輸入錯誤的次數(shù)Dim loginno As Integer在Form的Load事件中,將txtuser設(shè)置為焦點(diǎn),初始化loginno。Private Sub Form_Load() loginno = 0 End Sub這里將“確定”和“取消”兩個按鈕作為一個按鈕數(shù)組cmdOkCancel:確定按鈕的index屬性為0,取消按鈕的index屬性為1。利用SQL語句,在數(shù)據(jù)庫中查詢,如果查到相應(yīng)的記錄,則調(diào)用Case 0事件,用戶的登陸獲得通過,此時可以退出登陸窗口,并進(jìn)入MDI主窗口,同時將用戶類型和用戶名分別傳遞到MDI主窗口和frmmanage中;如果沒有相應(yīng)的記錄,則給出提示錯誤信息,同時將用戶輸入錯誤密碼次數(shù)增加1,如果錯誤超過3次,則退出整個系統(tǒng);若次數(shù)還沒有超過3次,則提示用戶重新輸入。根據(jù)以上的設(shè)計,cmdOkCancel的Click事件的代碼如下:Private Sub cmdOkCancel_Click(Index As Integer) Select Case Index Case 0 …… Userid = Trim() Userpwd = MD5(Trim()) sqlstr = select * from UserInfo where UserID=39。 amp。 Userid amp。 39。 sqlstr, con, 1, 1 If Not Then If rs(UserPWD) Userpwd Then 39。密碼錯誤時 MsgBox 您輸入的密碼不正確!, vbQuestion = 請輸入用戶名和密碼: loginno = loginno + 1 39。當(dāng)錯誤的密碼次數(shù)達(dá)到3次時,不能登陸,退出! If loginno = 3 Then MsgBox 對不起,您不能使用該系統(tǒng)!請與管理員聯(lián)系。, vbInformation Unload Me Exit Sub End If …… Else LoginUser = Userid 39。保存當(dāng)前登陸用戶名 LoginPower = (3) 39。將當(dāng)前登陸用戶的權(quán)限保存到LoginPower中 Unload Me End If Else MsgBox 沒有您輸入的用戶名!, 32 …… End If : Set rs = Nothing Case 1 ‘退出整個程序 Unload Me End SelectEnd Sub3.3.2 MDI主窗口(frmmain)本系統(tǒng)采取多文檔界面(MultiDocument Interface)。多文檔界面是一種Windows用戶界面標(biāo)準(zhǔn)。它有一個父窗口,在典型情況下,父窗口用來顯示程序菜單以及包含子窗口。在工程中添加一個MDI窗口,取名為“”,并為MDI窗體進(jìn)行菜單和代碼的設(shè)計,: 主界面3.3.2.1 菜單設(shè)計MDI主窗體是整個系統(tǒng)的容器,為了方便用戶的使用,應(yīng)設(shè)計相應(yīng)的菜單和代碼。3.3.2.2 窗體代碼設(shè)計1.在代碼窗口的通用部分,聲明一個API函數(shù)用于打開幫助文件和調(diào)用Outlook發(fā)送郵件。Private Declare Function ShellExecuteamp。 Lib Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long)2.判斷用戶權(quán)限如果登陸的為普通用戶類型的用戶,則用戶不能使用“用戶管理”這一功能,而對于管理員類型的用戶,則沒有此限制。所以在MDIForm的Load事件中需要判斷用戶類型。Private Sub MDIForm_Load() (2).Text = 當(dāng)前操作員: amp。 LoginUser amp。 amp。 LoginPower amp。 If LoginPower = 普通用戶 Then = False (5).Enabled = False End IfEnd Sub3.Form的QueryUnload事件當(dāng)用戶要退出MDI窗體時,需要在QueryUnload事件中詢問用戶是否真的要退出本系統(tǒng);如果用戶不要退出,則將Cancel置為1,取消整個退出過程。Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) If MsgBox(確定要退出學(xué)生檔案管理系統(tǒng)嗎?是/否,vbYesNo+vbQuestion+ vbDefaultButton1) = vbNo Then Cancel = 1 End IfEnd SubQueryUnload和Unload事件當(dāng)一個子窗體或一個Form對象關(guān)閉時,在那個窗體中的QueryUnload事件先于該窗體的Unload事件發(fā)生,Unload事件在Terminate事件之前發(fā)生。當(dāng)一個應(yīng)用程序關(guān)閉時,可使用QueryUnload或Unload事件過程將Cancel屬性設(shè)置為True來阻止關(guān)閉過程。但是,QueryUnload事件是在任一個卸載之前在所有窗體中發(fā)生,而Unload是在每個窗體卸載時發(fā)生。在這兩個事件中,均可將Cancel設(shè)置為任何非零的值來防止窗體被刪除。但Unload不能阻止其他事件,諸如從Microsoft Windows操作環(huán)境中退出等;而QueryUnload事件則可以阻止從Windows中的退出。有介于此,通常來說都是在QueryUnload中詢問用戶是否要退出當(dāng)前窗體。4.“重新登陸”子菜單的代碼當(dāng)單擊了“重新登陸”或者按下了“F2”鍵時,將會給出提示,如果用戶在提示框中按下了“確定”按鈕,則退出整個MDI主窗體,并顯示登陸窗體。Private Sub filemenu15_Click()If MsgBox(若重新登陸,所有窗體都將關(guān)閉!是否重新登陸?, vbYesNo + vbQuestion, 重新登陸) = vbYes Then Unload Me End IfEnd Sub5.“幫助主題”子菜單的代碼調(diào)用Windows API函數(shù)。Private Sub filemenu21_Click() ShellExecute 0, open, amp。 \, , , 1End Sub6.“給我發(fā)郵件”子菜單的代碼如果用戶單擊了“給我發(fā)郵件”子菜單,則會調(diào)用API函數(shù),調(diào)用Outlook。Private Sub filemenu22_Click() S