

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 中國礦業(yè)大學(xué)環(huán)境與測繪學(xué)院</p><p> 數(shù)據(jù)庫技術(shù)與應(yīng)用課程實踐</p><p><b> 目錄</b></p><p> 第一章 系統(tǒng)分析與設(shè)計………………………………………………………………… 3</p><p> 1.1系統(tǒng)功能分析……………………………………………………………
2、………. 3</p><p> 1.2數(shù)據(jù)庫設(shè)計……………………………………………………………………….. 3</p><p> 第二章 系統(tǒng)實施……………………………………………………………………………. 5</p><p> 2.1 主界面設(shè)置…………………………………………………………………….. 6</p><p> 2.
3、2 全局變量設(shè)置…………………………………………………………………. 9</p><p> 2.3 用戶登錄窗口………………………………………………………………… 11</p><p> 2.4 密碼修改窗口………………………………………………………………… 12</p><p> 2.5 用戶注冊窗口…………………………………………………………………
4、 16</p><p> 第三章 信息維護(hù)…………………………………………………………………………… 16</p><p> 3.1 添加學(xué)生記錄………………………………………………………………… 16</p><p> 3.2 查詢學(xué)生記錄………………………………………………………………… 20</p><p> 3.3 生
5、成報表窗口………………………………………………………………… 28</p><p> 3.4 關(guān)于系統(tǒng)窗口………………………………………………………………… 29</p><p> 第四章 實驗總結(jié)…………………………………………………………………………. 31</p><p> 4.1 實驗過程…………………………………………………………………………
6、 31</p><p> 4.2 問題解決…………………………………………………………………………. 31</p><p> 4.3 經(jīng)驗總結(jié)…………………………………………………………………………. 33</p><p> 第五章 參考資料………………………………………………………………………….. 33</p><p>&l
7、t;b> 系統(tǒng)分析與設(shè)計</b></p><p><b> 1.1系統(tǒng)功能分析</b></p><p> 隨著學(xué)校的規(guī)模不斷擴(kuò)大,學(xué)生數(shù)量急劇增加,有關(guān)學(xué)生的各種信息量也成倍增長。面對龐大的信息量就需要有一個學(xué)生信息管理系統(tǒng)來提高學(xué)生管理工作的效率。通過這樣的系統(tǒng)可以做到信息的規(guī)范管理、快速查詢、修改、增加、刪除等,從而減少管理方面的工作量。設(shè)
8、計內(nèi)容為管理員登錄該系統(tǒng)進(jìn)行七個模塊操作:</p><p> 1)、學(xué)生基本情況維護(hù):增加、修改、刪除、報表、查詢(按學(xué)號、姓名、性別、班級、家庭住址、生日)</p><p> 2)、教師基本情況維護(hù):增加、修改、刪除、報表、查詢(按教師編號、教師姓名、部門編號、學(xué)歷、職稱、家庭住址、性別)</p><p> 3)、學(xué)生成績維護(hù):增加、修改、刪除、報表、查詢(
9、按學(xué)號、專業(yè))</p><p> 4)、部門信息維護(hù):增加、修改、刪除、報表、查詢(按部門編號、部門名稱)</p><p> 5)、課程信息維護(hù):增加、修改、刪除、報表、查詢(按課程編號、課程名稱、學(xué)時、類型)</p><p> 6)、課程類型維護(hù):增加、修改、刪除、報表、查詢(按編號、名稱)</p><p> 7)、用戶信息維護(hù):重
10、新登錄、修改密碼、用戶注冊</p><p><b> 1.2 數(shù)據(jù)庫設(shè)計</b></p><p> 在系統(tǒng)設(shè)計過程中,首先要建立的就是數(shù)據(jù)庫。本數(shù)據(jù)庫采用SQL Server</p><p> 2000來構(gòu)造,數(shù)據(jù)庫名稱為School,共使用了8個表,它們分別是用戶信息表(Operator)、學(xué)生信息表(Student)、學(xué)生成績表(SC
11、)、教師信息表(Teacher)、課程信息表(Course)、課程類型表(Type)、部門信息表(Sdept)、班級信息表(Class)。</p><p> 1)、用戶信息表(Operator):表結(jié)構(gòu)如下表所示:</p><p> 2)學(xué)生信息表(Student):表結(jié)構(gòu)如下表所示:</p><p> 3)學(xué)生成績表(SC):表結(jié)構(gòu)如下表所示:</p&
12、gt;<p> 4)教師信息表(Teacher):表結(jié)構(gòu)如下表所示:</p><p> 5) 課程信息表(Course): 表結(jié)構(gòu)如下表所示:</p><p> 6)課程類型表(Type):表結(jié)構(gòu)如下表所示:</p><p> 7)部門信息表(Sdept):表結(jié)構(gòu)如下表所示:</p><p> 8)班級信息表(Clas
13、s):表結(jié)構(gòu)如下表所示:</p><p><b> 系統(tǒng)實施</b></p><p><b> 2.1 主界面設(shè)置</b></p><p> 在SQL Server2000 中新建一個名為School的數(shù)據(jù)庫,并在該數(shù)據(jù)庫中按照上面的設(shè)置建立八個基本表。然后再Visiual Basic 6.0 簡體中文企業(yè)版中建立主
14、窗體frm_main.主界面如下圖所示:</p><p> 因為程序在運行的時候我才能抓取到當(dāng)前窗體,程序運行的時候Imagelist 控件隱藏了,所以我們只能看到ToolBar控件。使用ToolBar 程序的美觀性和直觀性都有了一些提高,下面是ToolBar控件的代碼。</p><p> 這一過程使用 select case …… end select 語句,比使用 if …… en
15、d if</p><p> 語句,程序簡化很多。下面試這一部分的代碼:</p><p> Option Explicit</p><p> Private Sub Classmanagement_Click() '班級管理</p><p> frmclass.Show</p><p><b>
16、 End Sub</b></p><p> Private Sub coursemanage_Click() '課程設(shè)置</p><p> frm_course.Show</p><p><b> End Sub</b></p><p> Private Sub coursequery
17、_Click() '課程查詢</p><p> frm_course.Show</p><p><b> End Sub</b></p><p> Private Sub Coursetype_Click() '課程類型</p><p> frmtype.Show</p&g
18、t;<p><b> End Sub</b></p><p> Private Sub exit_Click() '退出</p><p><b> Unload Me</b></p><p><b> End Sub</b></p>&
19、lt;p> Private Sub gradeadd_Click() '錄入成績信息</p><p> frm_grade.Show</p><p><b> End Sub</b></p><p> Private Sub gradequery_Click() ‘成績查詢</p>&l
20、t;p> frm_grade.Show</p><p><b> End Sub</b></p><p> Private Sub help_Click() ‘幫助文檔</p><p> frmhelp.Show</p><p><b> End Sub</b>
21、</p><p> Private Sub loginagain_Click() '重新登錄</p><p> frm_login.Show</p><p><b> End Sub</b></p><p> Private Sub passwordmodify_Click() '密碼
22、修改</p><p> frm_psdmodify.Show</p><p><b> End Sub</b></p><p> Private Sub querybycourse_Click() '通過課程查詢成績</p><p> frm_course.Show</p><p&
23、gt;<b> End Sub</b></p><p> Private Sub querybystudent_Click() '通過學(xué)生查詢成績</p><p> frm_student.Show</p><p><b> End Sub</b></p><p> Privat
24、e Sub readme_Click() ‘使用須知</p><p> frmreadme.Show</p><p><b> End Sub</b></p><p> Private Sub register_Click() ‘用戶注冊</p><p> frm_register
25、.Show</p><p><b> End Sub</b></p><p> Private Sub sdeptset_Click() ‘部門管理</p><p> frmsdept.Show</p><p><b> End Sub</b></p><
26、p> Private Sub studentadd_Click() '錄入學(xué)生信息</p><p> frm_studentadd.Show</p><p><b> End Sub</b></p><p> Private Sub studentmodify_Click() '學(xué)生信息修改</p
27、><p> frm_student.Show</p><p><b> End Sub</b></p><p> Private Sub studentquery_Click() '學(xué)生信息查詢</p><p> frm_student.Show</p><p><b>
28、 End Sub</b></p><p> Private Sub teacheradd_Click() '添加教師信息</p><p> frmteacheradd.Show</p><p><b> End Sub</b></p><p> Private Sub teacher
29、modify_Click() '修改教師信息</p><p> frmteacher.Show</p><p><b> End Sub</b></p><p> Private Sub teacherquery_Click() '查詢教師信息</p><p> frmteacher.Sho
30、w</p><p><b> End Sub</b></p><p> ‘選擇ToolBar上每個按鈕的關(guān)鍵字</p><p> Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)</p><p> Select Case Bu
31、tton.Key</p><p> Case "password"</p><p> frm_psdmodify.Show</p><p> Case "student"</p><p> frm_student.Show</p><p> Case "gra
32、de"</p><p> frm_grade.Show</p><p> Case "teacher"</p><p> frmteacher.Show</p><p> Case "class"</p><p> frmclass.Show</p>
33、;<p> Case "course"</p><p> frm_course.Show</p><p> Case "sdept"</p><p> frmsdept.Show</p><p> Case "help"</p><p>
34、; frmhelp.Show</p><p> Case "exit"</p><p><b> Unload Me</b></p><p> End Select</p><p><b> End Sub</b></p><p> 2.2 全
35、局變量設(shè)置</p><p> 程序編寫過程中需要用到一些全局變量,并且軟件的啟動從Sub Main 過程開始,這一過程包含了軟件的初始化,School 數(shù)據(jù)庫的恢復(fù)。</p><p> 這一部分的運行過程人們看不到,主要代碼為:</p><p> Option Explicit</p><p> Public conn As New
36、ADODB.Connection </p><p> Public reco As New ADODB.Recordset </p><p> Public reco2 As New ADODB.Recordset</p><p> Public conn_str1 As String</p><p> Pu
37、blic conn_str2 As String</p><p> Public constring As String</p><p> Public cnn As ADODB.Connection</p><p> Public rst_student As ADODB.Recordset</p><p> Public rst_
38、course As ADODB.Recordset</p><p> Public rst_grade As ADODB.Recordset</p><p> Public rst_operator As ADODB.Recordset</p><p> Public rst_class As ADODB.Recordset</p><p&
39、gt; Public rst_teacher As ADODB.Recordset</p><p> Public rst_sdept As ADODB.Recordset</p><p> Public rst_type As ADODB.Recordset</p><p> Public i As Integer</p><p>
40、 Public Sub Main()</p><p> reco.CursorLocation = adUseClient</p><p> reco2.CursorLocation = adUseClient</p><p> conn_str1 = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Pe
41、rsist Security Info=False;Initial Catalog=School;Data Source=" </p><p> conn_str2 = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=&qu
42、ot;</p><p> DB_ADD conn.Open conn_str1 '連接到數(shù)據(jù)庫"</p><p> frm_login.Show</p><p><b> End Sub</b></p>&
43、lt;p> '====關(guān)閉記錄集====</p><p> Public Sub Close_Reco()</p><p> If reco.State = 1 Then</p><p> reco.Close</p><p><b> End If</b></p><p>
44、;<b> End Sub</b></p><p> Public Sub DB_ADD()</p><p> Dim s As String</p><p> On Error GoTo ErrorCheck</p><p> a: conn.Open conn_str2</p><p&
45、gt; reco.Open "select * from sysdatabases where name='School'", conn, 1, 3 </p><p> If reco.RecordCount <> 1 Then </p><p> m
46、kdir_kill</p><p> conn.Execute "restore database School from disk='" & App.Path & "\backup\School'"</p><p><b> Else</b></p><p> re
47、co.Close</p><p> conn.Close</p><p><b> Exit Sub</b></p><p><b> End If</b></p><p> reco.Close</p><p> conn.Close</p><
48、;p><b> Exit Sub</b></p><p> ErrorCheck:</p><p> MsgBox "您可能沒有啟動SQL Server服務(wù)", , "提示"</p><p> Shell "net start MSSQLServer"</p>
49、<p> MsgBox "啟動成功!", , "提示"</p><p><b> GoTo a</b></p><p><b> End Sub</b></p><p> Public Sub mkdir_kill()</p><p>
50、 On Error Resume Next</p><p> MkDir "C:\Program files"</p><p> MkDir "C:\Program Files\Microsoft SQL Server"</p><p> MkDir "C:\Program Files\Microsoft SQ
51、L Server\MSSQL"</p><p> MkDir "C:\Program Files\Microsoft SQL Server\MSSQL\Data"</p><p> Kill "C:\Program Files\Microsoft SQL Server\MSSQL\Data\School_Log.LDF"</p&g
52、t;<p> Kill "C:\Program Files\Microsoft SQL Server\MSSQL\Data\School_Data.MDF"</p><p><b> End Sub</b></p><p><b> 2.3 用戶登錄</b></p><p> 為了
53、保障系統(tǒng)的安全,用戶在未登錄之前不能看到主界面,下面是一個登錄驗證窗口:</p><p> 用戶只有輸入了有效的用戶名和密碼,才能進(jìn)入主界面進(jìn)行各種操作。為了增強(qiáng)系統(tǒng)的安全性,系統(tǒng)對用戶輸錯密碼的次數(shù)進(jìn)行了限制,如果用戶連續(xù)三次輸入密碼錯誤,則登錄界面將關(guān)閉,用戶必須重新運行軟件才能繼續(xù)登錄。</p><p><b> 這一部分的代碼為:</b></p>
54、;<p> Option Explicit</p><p> Private Sub cmd_cancel_Click()</p><p><b> Unload Me</b></p><p><b> End Sub</b></p><p> Private Sub cmd
55、_yes_Click()</p><p> Dim sql As String</p><p> Dim rst_login As New ADODB.Recordset</p><p> If Trim(txt_user.Text) = "" Then</p><p> MsgBox "用戶名不能為空&
56、quot;, vbExclamation + vbOKOnly, "沒有這個用戶"</p><p> txt_user.SetFocus</p><p><b> Else</b></p><p> sql = "select * from Operator where operator_name='
57、" & txt_user.Text & "'"</p><p> '在這個地方遇到了問題,執(zhí)行到下一句總是出錯,也看不出來是什么問題,想了很久之后我在SQL Server</p><p> '2000 查詢分析器執(zhí)行了上面的select * from Operator,發(fā)現(xiàn)不能執(zhí)行,換其他的表就沒有問題,然后我<
58、;/p><p> '了幾個表,發(fā)現(xiàn)是Operator表沒有設(shè)置主鍵,所以出錯了,然后我設(shè)置了主鍵,問題就解決了。</p><p> '所以,對數(shù)據(jù)庫中的每一個表都設(shè)置主鍵是很有必要的。</p><p> rst_login.Open sql, cnn, adOpenKeyset, adLockPessimistic</p><p
59、> If rst_login.EOF = True Then</p><p> MsgBox "沒有這個用戶", vbExclamation + vbOKOnly, "沒有權(quán)限"</p><p> txt_user.SetFocus</p><p><b> Else</b></p&g
60、t;<p> If Trim(rst_login.Fields("Password").Value) = Trim(txt_password.Text) Then</p><p> rst_login.Close</p><p><b> Unload Me</b></p><p> frm_main.
61、Show</p><p><b> Else</b></p><p> MsgBox "密碼不正確", vbExclamation + vbOKOnly, ""</p><p> txt_password.Text = ""</p><p> txt_p
62、assword.SetFocus</p><p><b> End If</b></p><p><b> End If</b></p><p><b> End If</b></p><p><b> i = i + 1</b></p>
63、;<p> If i = 3 Then</p><p><b> Unload Me</b></p><p><b> End If</b></p><p><b> Exit Sub</b></p><p><b> End Sub</
64、b></p><p> Private Sub Form_Load()</p><p> Dim strcnn As String</p><p> strcnn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog
65、=School;Data Source="</p><p> Set cnn = New ADODB.Connection</p><p> cnn.Open strcnn</p><p><b> i = 0</b></p><p><b> End Sub</b></p&
66、gt;<p><b> 2.4 密碼修改</b></p><p> 根據(jù)經(jīng)驗我們知道,長期使用同一個密碼是不安全的,所以該成績管理系統(tǒng)提供了密碼修改功能。為了保證系統(tǒng)的安全,雖然用戶已經(jīng)登錄,但是必須再次輸入用戶名和密碼,驗證用戶的權(quán)限,才能修改密碼。新密碼的長度不能低于6位。可以是數(shù)字、字母和特殊字符的組合,且不能和原來的密碼一樣。</p><p>
67、; 用戶可以選擇輸入密碼的時候,新密碼是否可見,默認(rèn)為新密碼不可見。</p><p> 下面是修改密碼窗體frm_psdmodify的界面:</p><p><b> 這一部分的代碼為:</b></p><p> Option Explicit</p><p> Private Sub cmd_cancel_C
68、lick()</p><p> Dim opt As String</p><p> opt = MsgBox("您確定要退出修改密碼嗎?", vbYesNo, "")</p><p> If opt = vbYes Then '對用戶行為進(jìn)行確認(rèn)</p><p
69、><b> Unload Me</b></p><p><b> Else</b></p><p><b> Exit Sub</b></p><p><b> End If</b></p><p><b> End Sub<
70、;/b></p><p> Private Sub cmd_check_Click()</p><p> '再次驗證用戶權(quán)限,保障系統(tǒng)安全</p><p> '未驗證權(quán)限則無權(quán)修改密碼</p><p> Dim sql As String</p><p> Dim rst_login A
71、s New ADODB.Recordset</p><p> If Trim(txt_user.Text) = "" Then</p><p> MsgBox "用戶名不能為空", vbExclamation + vbOKOnly, "沒有這個用戶"</p><p> txt_user.SetFocu
72、s</p><p><b> Else</b></p><p> sql = "select * from Operator where operator_name='" & txt_user.Text & "'"</p><p> rst_login.Open sq
73、l, cnn, adOpenKeyset, adLockPessimistic</p><p> If rst_login.EOF = True Then</p><p> MsgBox "沒有這個用戶", vbExclamation + vbOKOnly, "沒有權(quán)限"</p><p> txt_user.SetFoc
74、us</p><p><b> Else</b></p><p> If Trim(rst_login.Fields("Password").Value) = Trim(txt_password.Text) Then</p><p> rst_login.Close</p><p> MsgB
75、ox "恭喜,您可以開始修改密碼!新密碼的長度不能低于六位,建議您使用數(shù)字和字母的組合。", vbInformation, ""</p><p> txt_newpass1.SetFocus</p><p> cmd_yes.Enabled = True</p><p><b> Else</b>&
76、lt;/p><p> MsgBox "密碼不正確", vbExclamation + vbOKOnly, ""</p><p> txt_password.Text = ""</p><p> txt_password.SetFocus</p><p><b> End
77、 If</b></p><p><b> End If</b></p><p><b> End If</b></p><p><b> End Sub</b></p><p> Private Sub cmd_yes_Click()</p>
78、<p> Dim sql1 As String</p><p> Dim rst_psd As New ADODB.Recordset '新密碼不能為空</p><p> If txt_newpass1.Text = "" Then</p><p> Msg
79、Box "密碼不能為空", vbInformation, "密碼不能為空"</p><p> txt_newpass1.SetFocus</p><p><b> Else</b></p><p> If txt_newpass1.Text = txt_password.Text Then</
80、p><p> MsgBox "不能和原來的密碼一樣", vbInformation, "" '密碼不能和原來的密碼一樣</p><p> txt_newpass1.Text = ""</p><p> txt_newpass2.Text = ""</p>
81、<p> txt_newpass1.SetFocus</p><p><b> Else</b></p><p> If Len(txt_newpass1.Text) < 6 Then '密碼長度不能低于六位</p><p> MsgBox "密碼的長度不能小于6位&q
82、uot;, vbInformation, "密碼長度過短"</p><p> txt_newpass1.Text = ""</p><p> txt_newpass1.SetFocus</p><p><b> Else</b></p><p> If txt_newpas
83、s2.Text = "" Then '檢查是否輸入了確認(rèn)密碼</p><p> MsgBox "請輸入確認(rèn)密碼", vbInformation, ""</p><p> txt_newpass2.SetFocus</p><p> Else
84、 '檢驗兩次輸入的密碼是否一致</p><p> If txt_newpass1.Text > txt_newpass2.Text Or txt_newpass1.Text < txt_newpass2.Text Then</p><p> MsgBox "兩次輸入的密碼不一致,請重新輸入&qu
85、ot;, vbInformation, "密碼設(shè)定錯誤"</p><p> txt_newpass1.Text = ""</p><p> txt_newpass2.Text = ""</p><p><b> Else</b></p><p> Dim
86、 sql As String '設(shè)置新的用戶密碼</p><p> Dim rst_login As New ADODB.Recordset</p><p> sql = "update Operator set password='" & txt_newpass1.Text & &q
87、uot; '"</p><p> sql = sql & "where operator_name like'" & txt_user.Text & "'"</p><p> rst_login.Open sql, cnn, adOpenKeyset, adLockPessimistic&
88、lt;/p><p> MsgBox "密碼修改成功,請牢記您的新密碼!", vbInformation, ""</p><p><b> End If</b></p><p><b> End If</b></p><p><b> End If
89、</b></p><p><b> End If</b></p><p><b> End If</b></p><p><b> End Sub</b></p><p> Private Sub Form_Load()</p><p&g
90、t; Dim strcnn As String</p><p> strcnn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=School;Data Source= "</p><p> Set cnn = New ADODB.
91、Connection</p><p> cnn.Open strcnn</p><p><b> i = 0</b></p><p><b> End Sub</b></p><p> Private Sub opt_no_Click()</p><p> '
92、;修改密碼時新密碼不可見</p><p> txt_newpass1.PasswordChar = "*"</p><p> txt_newpass2.PasswordChar = "*"</p><p><b> End Sub</b></p><p> Private
93、Sub opt_yes_Click() '修改密碼時新密碼可見</p><p> txt_newpass1.PasswordChar = ""</p><p> txt_newpass2.PasswordChar = ""</p><p><b> End Sub</b><
94、;/p><p><b> 2.5 用戶注冊</b></p><p> 用戶注冊模塊的實現(xiàn)方式和修改密碼模塊相似,此處給出該模塊的界面,代碼略去,在vb工程源文件中可以查找。</p><p> 下面是用戶注冊界面:</p><p><b> 信息維護(hù)</b></p><p>
95、; 無論是學(xué)生信息教師信息,還是班級信息課程信息,他們的添加、修改、查詢、刪除,功能和實現(xiàn)方式都是相似的。下面給出學(xué)生信息維護(hù)模塊的主要代碼。</p><p> 3.1 添加學(xué)生記錄</p><p> 此模塊使用ADODB.Rcordset 控件向SQL 2000 數(shù)據(jù)庫中寫入記錄。</p><p> 為了保證系統(tǒng)的正常運行,在程序中對學(xué)生的學(xué)號、姓名和行唄
96、進(jìn)行檢驗,如果為空則不執(zhí)行寫入數(shù)據(jù)庫的命名,以降低系統(tǒng)出現(xiàn)錯誤的可能。</p><p> 與課程信息、部門信息或班級信息相比,添加學(xué)生信息和教師信息要復(fù)雜的多,所以這兩項分別提供了單獨的添加記錄窗口,方便用戶進(jìn)行操作,也保障了用戶的安全。添加其他記錄時直接在DataGrid 控件進(jìn)行操作。</p><p> 下面是添加學(xué)生信息模塊的界面:</p><p><
97、;b> 這一部分的代碼為:</b></p><p> 考慮到在實際操作過程中可能會連續(xù)甚至大量添加屬于同一班級同學(xué)的信息,所以此處添加班級信息選擇了列表框單擊選擇的方式。系統(tǒng)在啟動時會默認(rèn)添加幾個班級的信息,僅為測試軟件功能之用,用戶可以添加自己需要的班級信息,如果所要添加的信息已經(jīng)在列表框中,則不能重復(fù)添加相同的信息,并且焦點會定位到該條記錄,方便用戶進(jìn)行查找。</p>&l
98、t;p> 此處添加班級信息采用了InputBox 函數(shù),方便靈活,增強(qiáng)了程序的趣味性。</p><p> Option Explicit</p><p> Dim ssex As String</p><p> Private Sub cmd_addsdept_Click() '添加學(xué)生所屬的院系和班級時,采用列表框選擇的方</p>
99、<p> '式,這樣一個班級只需輸入一次,可以節(jié)省時間,減</p><p><b> '少輸入錯誤</b></p><p> Dim sdept As String</p><p> Dim i As Integer</p><p> Dim permission As Boole
100、an</p><p> permission = True</p><p> '用對話框輸入要添加的班級和學(xué)院的名稱,如果要添</p><p> '的單位已經(jīng)在列表框中,則不再重復(fù)添加,并將焦點</p><p><b> '停留在該單位上</b></p><p>
101、 sdept = InputBox("請輸入你要添加的學(xué)院或班級的名稱", "添加班級名稱", "")</p><p> For i = 0 To list_sdept.ListCount - 1</p><p> If list_sdept.List(i) = sdept Then</p><p>
102、 MsgBox "您所輸入的班級已在列表中,不能重復(fù)添加!", vbExclamation + vbOKOnly, ""</p><p> list_sdept.Selected(i) = True</p><p> permission = False '要添加的單位已經(jīng)在列表框中,不允許再次重復(fù)添加<
103、;/p><p><b> End If</b></p><p><b> Next i</b></p><p> If permission = True Then</p><p> list_sdept.AddItem sdept</p><p> MsgBox &q
104、uot;添加成功!", vbInformation, ""</p><p><b> End If</b></p><p><b> End Sub</b></p><p> Private Sub cmd_clear_Click() '再次添加一條記錄時,可以點擊“清除
105、”按鈕,</p><p> txt_sno.Text = "" '快速清除上一次輸入的數(shù)據(jù)</p><p> txt_sname.Text = ""</p><p> txt_birth.Text = ""</p><p> txtph
106、one.Text = ""</p><p> txtaddress.Text = ""</p><p> txtresume.Text = ""</p><p> opt_boy.Value = False</p><p> opt_girl.Value = False<
107、;/p><p><b> End Sub</b></p><p> Private Sub cmd_exit_Click()</p><p><b> Unload Me</b></p><p><b> End Sub</b></p><p>
108、Private Sub cmd_yes_Click() '添加學(xué)生記錄的主要操作,因為學(xué)號、姓名和性別為</p><p> '必須輸入項,所以寫入數(shù)據(jù)之前要進(jìn)行判斷,考慮到</p><p> '實際情況,學(xué)號不會過長,所以設(shè)最大長度為10位。</p><p> Dim rst_add As New ADODB.Recordse
109、t</p><p> Dim sql As String</p><p> sql = "select* from Student"</p><p> rst_add.Open sql, cnn, adOpenDynamic, adLockPessimistic</p><p> If txt_sno.Text =
110、 "" Then</p><p> MsgBox "學(xué)號不能為空", vbInformation, ""</p><p> txt_sno.SetFocus</p><p><b> Else</b></p><p> If Len(txt_sno.Te
111、xt) > 10 Then</p><p> MsgBox "學(xué)號的長度不能大于10位", vbExclamation + vbOKOnly, ""</p><p> txt_sno.SetFocus</p><p><b> Else</b></p><p> If
112、 txt_sname = "" Then</p><p> MsgBox "姓名不能為空", vbInformation, ""</p><p> txt_sname.SetFocus</p><p><b> Else</b></p><p> If
113、opt_boy.Value = False And opt_girl = False Then</p><p> MsgBox "請選擇男生或是女生", vbInformation, ""</p><p><b> Else</b></p><p> If opt_boy.Value = True
114、Then</p><p> ssex = "男"</p><p><b> Else</b></p><p> ssex = "女"</p><p><b> End If</b></p><p> '完成數(shù)據(jù)的檢驗以
115、后,向SQL數(shù)據(jù)庫中寫入數(shù)據(jù)</p><p> rst_add.AddNew</p><p> rst_add.Fields("Sno") = Trim(txt_sno.Text)</p><p> rst_add.Fields("Sname") = Trim(txt_sname.Text)</p><
116、;p> rst_add.Fields("Ssex") = ssex</p><p> rst_add.Fields("Sbirth") = Trim(txt_birth.Text)</p><p> rst_add.Fields("Sclass") = list_sdept.List(list_sdept.ListIn
117、dex)</p><p> rst_add.Fields("Saddress") = Trim(txtaddress.Text)</p><p> rst_add.Fields("Sphone") = Trim(txtphone.Text)</p><p> rst_add.Fields("Sresume&qu
118、ot;) = Trim(txtresume.Text)</p><p> rst_add.Update</p><p> MsgBox "添加記錄成功", vbInformation, ""</p><p><b> End If</b></p><p><b>
119、 End If</b></p><p><b> End If</b></p><p> rst_add.Close</p><p><b> End If</b></p><p><b> End Sub</b></p><p>
120、 Private Sub Form_Load() '剛載入窗體時,添加幾條默認(rèn)的記錄,因為數(shù)量較少</p><p> '并不影響輸入數(shù)據(jù)時的選擇,所以不提供清除Item的</p><p><b> '功能</b></p><p> list_sdept.AddItem "測繪11
121、-6班"</p><p> list_sdept.AddItem "水文11-2班"</p><p> list_sdept.AddItem "英語11-2班"</p><p><b> End Sub</b></p><p><b> 3.2查詢學(xué)生記
122、錄</b></p><p> 各個模塊信息查找的功能都是相似的,下面繼續(xù)以學(xué)生信息模塊為代表,給出這一模塊的界面和主要實現(xiàn)代碼:</p><p> 考慮到查找關(guān)鍵字的實用性,系統(tǒng)提供了SQL 語言查詢功能和便于操作的按學(xué)號、姓名、性別、班級、生日、家庭住址查找的功能,雖然也可以實現(xiàn)通過電話號碼和簡歷查找的功能,但是這樣做的實用性似乎并不大。當(dāng)然也可以通過SQL 語句來執(zhí)行這
123、樣的查詢。</p><p> 為了增強(qiáng)查詢功能,考慮到實際使用的需要,我們有時可能會查找全部姓張的學(xué)生,或者家庭住址都是河南省的學(xué)生,也或者出生在1992年2月的學(xué)生的記錄,或者同在某一個班級的學(xué)生的記錄。也可能需要查詢同時滿足這些條件的學(xué)生的信息,由于SQL 語言提供了方便的 “%”通配符,所以此處在可以采用模糊查詢的地方,都使用了類似</p><p> If Check4.Valu
124、e = vbChecked Then</p><p> sql4 = "Sclass like'" & Trim(txtclass.Text & "%" & " ") & "'"</p><p><b> Else</b></p&g
125、t;<p> sql4 = "Sclass like '%'"</p><p><b> End If</b></p><p> 的語句,用戶可以選擇一個或多個查詢條件,可以輸入大概的查詢條件,增加查找到所需信息的概率。</p><p> 比如要查詢一個學(xué)生的選課信息,可以再成績信息中按
126、學(xué)號查找記錄,要查找某一門課程的選課信息,可以再成績表中按課程號進(jìn)行信息查找。也可以同時選中這兩項,確定某一個學(xué)生是否選修了某一門課程。</p><p> 下面是這一部分的界面,由于紙張?zhí)?,您看到的界面可能不太清楚,軟件運行時您可以看到更加直觀清晰的界面。</p><p><b> 下面是模塊的代碼:</b></p><p> Priv
127、ate Sub cmd_add_Click() '添加一條記錄</p><p> DataGrid1.AllowAddNew = True</p><p> DataGrid1.AllowUpdate = True</p><p> ‘此處為了保證系統(tǒng)的安全,用戶在將一條新的有效的記錄寫入到數(shù)據(jù)庫之前,不能再添加新的空白的記錄,因為數(shù)據(jù)庫
128、中主鍵的約束不允許添加空白的記錄,</p><p> 而添加空白記錄本身也沒有意義。</p><p> cmd_add.Enabled = False '在新數(shù)據(jù)存入數(shù)據(jù)庫之前,或者取消添加一條記錄之前</p><p> '不能再添加一條空白的記錄,保障數(shù)據(jù)庫正常工作</p><p> frm_studentadd.S
129、how</p><p> '雖然在DataGrid1可以直接添加學(xué)生記錄,但是容易出 _</p><p> 現(xiàn)錯誤,浪費時間并造成不必要的麻煩,所以此處仍 _</p><p> 默認(rèn)調(diào)用frm_studentadd窗口添加記錄。</p><p><b> End Sub</b></p>&l
130、t;p> Private Sub cmd_adjust_Click() '修改一條記錄</p><p> On Error GoTo erradjust</p><p> DataGrid1.AllowUpdate = True</p><p> erradjust:</p><p> If Err.Number
131、 <> 0 Then</p><p> MsgBox Err.Description</p><p><b> End If</b></p><p><b> End Sub</b></p><p> Private Sub cmd_cancel_Click() '
132、取消</p><p> rst_student.CancelUpdate</p><p> DataGrid1.Refresh</p><p> DataGrid1.AllowAddNew = False</p><p> DataGrid1.AllowUpdate = False</p><p> cmd_
133、add.Enabled = True</p><p><b> End Sub</b></p><p> Private Sub cmd_del_Click() '刪除一條記錄</p><p> Dim opt As String</p><p> On Error GoTo deleror&l
134、t;/p><p> '“數(shù)據(jù)無價”,操作必須謹(jǐn)慎。</p><p> '此處對刪除一條記錄操作進(jìn)行確認(rèn),如果選擇“是”,</p><p> '將刪除一條記錄,如果選擇“否”,將取消操作</p><p> opt = MsgBox("你確定要刪除嗎?", vbYesNo, ""
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫成績管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計—成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告--成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生選課成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(學(xué)生成績管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫學(xué)生成績管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--- 學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論