【文章內(nèi)容簡(jiǎn)介】
學(xué)生學(xué)籍管理的系統(tǒng)化、規(guī)范化和自動(dòng)化,這是在用戶要求的基礎(chǔ)上提出來(lái)的,功能要求如下: (一)學(xué)生信息管理:能對(duì)學(xué)生信息進(jìn)行添加、修改、刪除。(二)課程管理:對(duì)課程進(jìn)行添加、修改、刪除操作。(三)專(zhuān)業(yè)/學(xué)院設(shè)置:(三)考試成績(jī)管理:(四)查詢學(xué)生信息:根據(jù)學(xué)號(hào)或姓名對(duì)學(xué)生信息進(jìn)行精確/模糊查詢(五)用戶管理:定義使用本系統(tǒng)的用戶名稱及密碼 學(xué)習(xí)好幫手第3章系統(tǒng)功能實(shí)現(xiàn)經(jīng)過(guò)需求分析、功能模塊設(shè)計(jì)之后要進(jìn)入詳細(xì)設(shè)計(jì)階段,本階段將按系統(tǒng)的主要模塊進(jìn)行論述,重在闡述具體的某項(xiàng)功能的實(shí)現(xiàn)方法或運(yùn)用到的相關(guān)技術(shù)。1. 添加引用:?jiǎn)螕艄こ滩藛沃械囊眠x項(xiàng),添加Microsoft ActiveX Data Objects Library和Microsoft Excel Object Library兩個(gè)引用。2. 添加部件:?jiǎn)螕艄こ滩藛沃械牟考x項(xiàng),添加Microsoft ADO Data Control (OLEDB)、Microsoft Common Dialog Control (SP3) 、Microsoft FlexGrid Control 、Microsoft Windows Common Controls (SP4)和Microsoft Windows Common Controls2 。添加兩個(gè)模塊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 String ……在module2中添加代碼(MD5算法) 因?yàn)楸鞠到y(tǒng)是按學(xué)籍管理的思想設(shè)計(jì)的,故而登陸部分主要完成密碼校驗(yàn)、確定管理員等功能,對(duì)于密碼本系統(tǒng)采用的是MD5算法。這里附上本程序的登陸界面。 用戶登陸界面在代碼窗口的“通用”部分,定義一個(gè)模塊級(jí)的公共變量loginno用來(lái)記錄當(dāng)前密碼輸入錯(cuò)誤的次數(shù)Dim loginno As Integer在Form的Load事件中,將txtuser設(shè)置為焦點(diǎn),初始化loginno。Private Sub Form_Load() loginno = 0 End Sub這里將“確定”和“取消”兩個(gè)按鈕作為一個(gè)按鈕數(shù)組cmdOkCancel:確定按鈕的index屬性為0,取消按鈕的index屬性為1。利用SQL語(yǔ)句,在數(shù)據(jù)庫(kù)中查詢,如果查到相應(yīng)的記錄,則調(diào)用Case 0事件,用戶的登陸獲得通過(guò),此時(shí)可以退出登陸窗口,并進(jìn)入MDI主窗口,同時(shí)將用戶類(lèi)型和用戶名分別傳遞到MDI主窗口和frmmanage中;如果沒(méi)有相應(yīng)的記錄,則給出提示錯(cuò)誤信息,同時(shí)將用戶輸入錯(cuò)誤密碼次數(shù)增加1,如果錯(cuò)誤超過(guò)3次,則退出整個(gè)系統(tǒng);若次數(shù)還沒(méi)有超過(guò)3次,則提示用戶重新輸入。 MDI主窗口本系統(tǒng)采取多文檔界面(MultiDocument Interface)。多文檔界面是一種Windows用戶界面標(biāo)準(zhǔn)。它有一個(gè)父窗口,在典型情況下,父窗口用來(lái)顯示程序菜單以及包含子窗口。在工程中添加一個(gè)MDI窗口,取名為“”,并為MDI窗體進(jìn)行菜單和代碼的設(shè)計(jì),: 主界面菜單設(shè)計(jì)MDI主窗體是整個(gè)系統(tǒng)的容器,為了方便用戶的使用,應(yīng)設(shè)計(jì)相應(yīng)的菜單和代碼。窗體代碼設(shè)計(jì)1.在代碼窗口的通用部分,聲明一個(gè)API函數(shù)用于打開(kāi)幫助文件和調(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)限如果登陸的為普通用戶類(lèi)型的用戶,則用戶不能使用“用戶管理”這一功能,而對(duì)于管理員類(lèi)型的用戶,則沒(méi)有此限制。所以在MDIForm的Load事件中需要判斷用戶類(lèi)型。3.Form的QueryUnload事件當(dāng)用戶要退出MDI窗體時(shí),需要在QueryUnload事件中詢問(wèn)用戶是否真的要退出本系統(tǒng);如果用戶不要退出,則將Cancel置為1,取消整個(gè)退出過(guò)程。4.“重新登陸”子菜單的代碼當(dāng)單擊了“重新登陸”或者按下了“F2”鍵時(shí),將會(huì)給出提示,如果用戶在提示框中按下了“確定”按鈕,則退出整個(gè)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ā)郵件”子菜單,則會(huì)調(diào)用API函數(shù),調(diào)用Outlook。Private Sub filemenu22_Click() ShellExecute , open, zhangkai861@, , , 1End Sub7.當(dāng)用戶單擊查詢學(xué)生資料菜單項(xiàng)或者按下F3鍵時(shí),將會(huì)出現(xiàn)“查找學(xué)生”窗體,供用戶查找滿足特定要求的學(xué)生信息。Private Sub filemenu45_Click() 39。查找學(xué)生 1End Sub 向項(xiàng)目中添加窗體。 用戶管理界面如果登陸的用戶類(lèi)型是管理員,用戶管理一項(xiàng)是可用的,當(dāng)單擊該子菜單時(shí),將會(huì)出現(xiàn)用戶管理窗口,管理員可以對(duì)系統(tǒng)用戶進(jìn)行添加和刪除操作。窗體代碼設(shè)計(jì)1.定義一個(gè)整型變量DelNO用來(lái)存儲(chǔ)當(dāng)前系統(tǒng)用戶的數(shù)目,當(dāng)DelNO=1時(shí)提示用戶不能再刪除用戶。2.窗體加載時(shí),初始化Listview用以顯示系統(tǒng)用戶列表,代碼如下Private Sub Form_Load()39。初始化ListViewDim clmX As ColumnHeaderSet clmX = (, , 用戶名, / 3)……其中調(diào)用了LoadOperator函數(shù),該函數(shù)用來(lái)顯示和刷新Listview中的數(shù)據(jù)。Private Sub LoadOperator()On Error Resume NextDim Listit As ListItem = lvwAuto = 3Dim ef As New sqlstr = select * from UserInfo sqlstr, con, 1, 1DelNO = Do While Not Set Listit = (, , (UserID)) (1) = *** 隱藏用戶的密碼,用***來(lái)替代。 (2) = ef(UserName) (3) = ef(UserPower) LoopSet ef = NothingEnd Sub3.添加用戶在Textbox中輸入了相應(yīng)的數(shù)據(jù)以后,按添加按鈕則調(diào)用該按鈕的Click事件,當(dāng)單擊“添加”按鈕時(shí),首先檢查輸入的用戶名和密碼是否為空,如果不為空,則檢查用戶名是否有重復(fù),需要打開(kāi)系統(tǒng)信息表,Private Sub Command4_Click()…… sqlstr = select * from UserInfo where UserID=39。 amp。 amp。 39。 sqlstr, con, 1, 1 End Sub如果當(dāng)前記錄不為空,則逐條記錄檢查是否有重復(fù)Private Sub Command4_Click()……Userid = Trim()Userpwd = MD5(Trim())Username = Trim()Userpower = Trim() DelNO = Do While Not …… Loop ……End Sub如果有重復(fù),則提示已存在這個(gè)用戶,然后將焦點(diǎn)設(shè)置給Text1,并將所有的文本框清空。Private Sub Command4_Click()…… Do While Not If = (UserID) Then MsgBox 已經(jīng)存在用戶名為 amp。 Userid amp。 的用戶帳號(hào), vbInformation Exit Sub End If Loop: Set rs = NothingEnd Sub如果沒(méi)有重復(fù),再檢查兩次輸入的密碼是否一致,如果不一致,則提示“兩次密碼不一致”。Private Sub Command4_Click()……If Trim() Trim() Then MsgBox 兩次密碼不相同,請(qǐng)重輸入!, vbOKOnly + 48, 提示: = = Exit SubEnd IfEnd Sub如果以上全部正確無(wú)誤的設(shè)置好了,則將新用戶的信息添加到數(shù)據(jù)表中,并提示“添加新用戶成功”。4.刪除系統(tǒng)用戶當(dāng)用戶雙擊ListView中的數(shù)據(jù)時(shí),則會(huì)調(diào)用DeleteRecord()函數(shù),如果系統(tǒng)用戶只剩一個(gè),則提示用戶不能再刪除;反之要求輸入您想要?jiǎng)h除的用戶的密碼,密碼正確時(shí)才可以將該用戶刪除,密碼錯(cuò)誤時(shí)則不采取任何措施;最后調(diào)用LoadOperator顯示并刷新Listview中的數(shù)據(jù)。根據(jù)以上的設(shè)計(jì),DeleteRecord()的代碼如下:Private Sub DeleteRecord()39。刪除用戶操作On Error Resume NextIf Then If DelNO = 1 Then MsgBox 只剩下一個(gè)用戶帳號(hào),不允許再刪除!, vbInformation ElseIf MsgBox(確定要?jiǎng)h除用戶名為amp。 amp。 的用戶帳號(hào)嗎?, vbYesNo + 32 + vbDefaultButton2) = vbYes Then sqlstr = select * from UserInfo where UserID=39。 amp。 amp。 39。 sqlstr, con, 1, 1 If MD5(InputBox(請(qǐng)輸入該用戶的密碼:)) = (UserPWD) Then sqlstr = delete from UserInfo where UserID=39。 amp。 amp。 39。 sqlstr Else MsgBox 對(duì)不起!您輸入的密碼不正確,刪除該用戶失??!, vbInformation End If LoadOperator