版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 中國(guó)礦業(yè)大學(xué)環(huán)境與測(cè)繪學(xué)院</p><p> 數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課程實(shí)踐</p><p><b> 目錄</b></p><p> 第一章 系統(tǒng)分析與設(shè)計(jì)………………………………………………………………… 3</p><p> 1.1系統(tǒng)功能分析……………………………………………………………
2、………. 3</p><p> 1.2數(shù)據(jù)庫(kù)設(shè)計(jì)……………………………………………………………………….. 3</p><p> 第二章 系統(tǒng)實(shí)施……………………………………………………………………………. 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 用戶注冊(cè)窗口…………………………………………………………………
4、 16</p><p> 第三章 信息維護(hù)…………………………………………………………………………… 16</p><p> 3.1 添加學(xué)生記錄………………………………………………………………… 16</p><p> 3.2 查詢學(xué)生記錄………………………………………………………………… 20</p><p> 3.3 生
5、成報(bào)表窗口………………………………………………………………… 28</p><p> 3.4 關(guān)于系統(tǒng)窗口………………………………………………………………… 29</p><p> 第四章 實(shí)驗(yàn)總結(jié)…………………………………………………………………………. 31</p><p> 4.1 實(shí)驗(yàn)過(guò)程…………………………………………………………………………
6、 31</p><p> 4.2 問(wèn)題解決…………………………………………………………………………. 31</p><p> 4.3 經(jīng)驗(yàn)總結(jié)…………………………………………………………………………. 33</p><p> 第五章 參考資料………………………………………………………………………….. 33</p><p>&l
7、t;b> 系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> 1.1系統(tǒng)功能分析</b></p><p> 隨著學(xué)校的規(guī)模不斷擴(kuò)大,學(xué)生數(shù)量急劇增加,有關(guān)學(xué)生的各種信息量也成倍增長(zhǎng)。面對(duì)龐大的信息量就需要有一個(gè)學(xué)生信息管理系統(tǒng)來(lái)提高學(xué)生管理工作的效率。通過(guò)這樣的系統(tǒng)可以做到信息的規(guī)范管理、快速查詢、修改、增加、刪除等,從而減少管理方面的工作量。設(shè)
8、計(jì)內(nèi)容為管理員登錄該系統(tǒng)進(jìn)行七個(gè)模塊操作:</p><p> 1)、學(xué)生基本情況維護(hù):增加、修改、刪除、報(bào)表、查詢(按學(xué)號(hào)、姓名、性別、班級(jí)、家庭住址、生日)</p><p> 2)、教師基本情況維護(hù):增加、修改、刪除、報(bào)表、查詢(按教師編號(hào)、教師姓名、部門編號(hào)、學(xué)歷、職稱、家庭住址、性別)</p><p> 3)、學(xué)生成績(jī)維護(hù):增加、修改、刪除、報(bào)表、查詢(
9、按學(xué)號(hào)、專業(yè))</p><p> 4)、部門信息維護(hù):增加、修改、刪除、報(bào)表、查詢(按部門編號(hào)、部門名稱)</p><p> 5)、課程信息維護(hù):增加、修改、刪除、報(bào)表、查詢(按課程編號(hào)、課程名稱、學(xué)時(shí)、類型)</p><p> 6)、課程類型維護(hù):增加、修改、刪除、報(bào)表、查詢(按編號(hào)、名稱)</p><p> 7)、用戶信息維護(hù):重
10、新登錄、修改密碼、用戶注冊(cè)</p><p><b> 1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 在系統(tǒng)設(shè)計(jì)過(guò)程中,首先要建立的就是數(shù)據(jù)庫(kù)。本數(shù)據(jù)庫(kù)采用SQL Server</p><p> 2000來(lái)構(gòu)造,數(shù)據(jù)庫(kù)名稱為School,共使用了8個(gè)表,它們分別是用戶信息表(Operator)、學(xué)生信息表(Student)、學(xué)生成績(jī)表(SC
11、)、教師信息表(Teacher)、課程信息表(Course)、課程類型表(Type)、部門信息表(Sdept)、班級(jí)信息表(Class)。</p><p> 1)、用戶信息表(Operator):表結(jié)構(gòu)如下表所示:</p><p> 2)學(xué)生信息表(Student):表結(jié)構(gòu)如下表所示:</p><p> 3)學(xué)生成績(jī)表(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)班級(jí)信息表(Clas
13、s):表結(jié)構(gòu)如下表所示:</p><p><b> 系統(tǒng)實(shí)施</b></p><p><b> 2.1 主界面設(shè)置</b></p><p> 在SQL Server2000 中新建一個(gè)名為School的數(shù)據(jù)庫(kù),并在該數(shù)據(jù)庫(kù)中按照上面的設(shè)置建立八個(gè)基本表。然后再Visiual Basic 6.0 簡(jiǎn)體中文企業(yè)版中建立主
14、窗體frm_main.主界面如下圖所示:</p><p> 因?yàn)槌绦蛟谶\(yùn)行的時(shí)候我才能抓取到當(dāng)前窗體,程序運(yùn)行的時(shí)候Imagelist 控件隱藏了,所以我們只能看到ToolBar控件。使用ToolBar 程序的美觀性和直觀性都有了一些提高,下面是ToolBar控件的代碼。</p><p> 這一過(guò)程使用 select case …… end select 語(yǔ)句,比使用 if …… en
15、d if</p><p> 語(yǔ)句,程序簡(jiǎn)化很多。下面試這一部分的代碼:</p><p> Option Explicit</p><p> Private Sub Classmanagement_Click() '班級(jí)管理</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() '錄入成績(jī)信息</p><p> frm_grade.Show</p><p><b> End Sub</b></p><p> Private Sub gradequery_Click() ‘成績(jī)查詢</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() '通過(guò)課程查詢成績(jī)</p><p> frm_course.Show</p><p&
23、gt;<b> End Sub</b></p><p> Private Sub querybystudent_Click() '通過(guò)學(xué)生查詢成績(jī)</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() ‘用戶注冊(cè)</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上每個(gè)按鈕的關(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> 程序編寫過(guò)程中需要用到一些全局變量,并且軟件的啟動(dòng)從Sub Main 過(guò)程開始,這一過(guò)程包含了軟件的初始化,School 數(shù)據(jù)庫(kù)的恢復(fù)。</p><p> 這一部分的運(yùn)行過(guò)程人們看不到,主要代碼為:</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ù)庫(kù)"</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 "您可能沒有啟動(dòng)SQL Server服務(wù)", , "提示"</p><p> Shell "net start MSSQLServer"</p>
49、<p> MsgBox "啟動(dòng)成功!", , "提示"</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)的安全,用戶在未登錄之前不能看到主界面,下面是一個(gè)登錄驗(yàn)證窗口:</p><p> 用戶只有輸入了有效的用戶名和密碼,才能進(jìn)入主界面進(jìn)行各種操作。為了增強(qiáng)系統(tǒng)的安全性,系統(tǒng)對(duì)用戶輸錯(cuò)密碼的次數(shù)進(jìn)行了限制,如果用戶連續(xù)三次輸入密碼錯(cuò)誤,則登錄界面將關(guān)閉,用戶必須重新運(yù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, "沒有這個(gè)用戶"</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> '在這個(gè)地方遇到了問(wèn)題,執(zhí)行到下一句總是出錯(cuò),也看不出來(lái)是什么問(wèn)題,想了很久之后我在SQL Server</p><p> '2000 查詢分析器執(zhí)行了上面的select * from Operator,發(fā)現(xiàn)不能執(zhí)行,換其他的表就沒有問(wèn)題,然后我<
58、;/p><p> '了幾個(gè)表,發(fā)現(xiàn)是Operator表沒有設(shè)置主鍵,所以出錯(cuò)了,然后我設(shè)置了主鍵,問(wèn)題就解決了。</p><p> '所以,對(duì)數(shù)據(jù)庫(kù)中的每一個(gè)表都設(shè)置主鍵是很有必要的。</p><p> rst_login.Open sql, cnn, adOpenKeyset, adLockPessimistic</p><p
59、> If rst_login.EOF = True Then</p><p> MsgBox "沒有這個(gè)用戶", 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)驗(yàn)我們知道,長(zhǎng)期使用同一個(gè)密碼是不安全的,所以該成績(jī)管理系統(tǒng)提供了密碼修改功能。為了保證系統(tǒng)的安全,雖然用戶已經(jīng)登錄,但是必須再次輸入用戶名和密碼,驗(yàn)證用戶的權(quán)限,才能修改密碼。新密碼的長(zhǎng)度不能低于6位??梢允菙?shù)字、字母和特殊字符的組合,且不能和原來(lái)的密碼一樣。</p><p>
67、; 用戶可以選擇輸入密碼的時(shí)候,新密碼是否可見,默認(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 '對(duì)用戶行為進(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> '再次驗(yàn)證用戶權(quán)限,保障系統(tǒng)安全</p><p> '未驗(yàn)證權(quán)限則無(wú)權(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, "沒有這個(gè)用戶"</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 "沒有這個(gè)用戶", 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 "恭喜,您可以開始修改密碼!新密碼的長(zhǎng)度不能低于六位,建議您使用數(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 "不能和原來(lái)的密碼一樣", vbInformation, "" '密碼不能和原來(lái)的密碼一樣</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 '密碼長(zhǎng)度不能低于六位</p><p> MsgBox "密碼的長(zhǎng)度不能小于6位&q
82、uot;, vbInformation, "密碼長(zhǎng)度過(guò)短"</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 "請(qǐng)輸入確認(rèn)密碼", vbInformation, ""</p><p> txt_newpass2.SetFocus</p><p> Else
84、 '檢驗(yàn)兩次輸入的密碼是否一致</p><p> If txt_newpass1.Text > txt_newpass2.Text Or txt_newpass1.Text < txt_newpass2.Text Then</p><p> MsgBox "兩次輸入的密碼不一致,請(qǐng)重新輸入&qu
85、ot;, vbInformation, "密碼設(shè)定錯(cuò)誤"</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 "密碼修改成功,請(qǐng)牢記您的新密碼!", 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、;修改密碼時(shí)新密碼不可見</p><p> txt_newpass1.PasswordChar = "*"</p><p> txt_newpass2.PasswordChar = "*"</p><p><b> End Sub</b></p><p> Private
93、Sub opt_yes_Click() '修改密碼時(shí)新密碼可見</p><p> txt_newpass1.PasswordChar = ""</p><p> txt_newpass2.PasswordChar = ""</p><p><b> End Sub</b><
94、;/p><p><b> 2.5 用戶注冊(cè)</b></p><p> 用戶注冊(cè)模塊的實(shí)現(xiàn)方式和修改密碼模塊相似,此處給出該模塊的界面,代碼略去,在vb工程源文件中可以查找。</p><p> 下面是用戶注冊(cè)界面:</p><p><b> 信息維護(hù)</b></p><p>
95、; 無(wú)論是學(xué)生信息教師信息,還是班級(jí)信息課程信息,他們的添加、修改、查詢、刪除,功能和實(shí)現(xiàn)方式都是相似的。下面給出學(xué)生信息維護(hù)模塊的主要代碼。</p><p> 3.1 添加學(xué)生記錄</p><p> 此模塊使用ADODB.Rcordset 控件向SQL 2000 數(shù)據(jù)庫(kù)中寫入記錄。</p><p> 為了保證系統(tǒng)的正常運(yùn)行,在程序中對(duì)學(xué)生的學(xué)號(hào)、姓名和行唄
96、進(jìn)行檢驗(yàn),如果為空則不執(zhí)行寫入數(shù)據(jù)庫(kù)的命名,以降低系統(tǒng)出現(xiàn)錯(cuò)誤的可能。</p><p> 與課程信息、部門信息或班級(jí)信息相比,添加學(xué)生信息和教師信息要復(fù)雜的多,所以這兩項(xiàng)分別提供了單獨(dú)的添加記錄窗口,方便用戶進(jìn)行操作,也保障了用戶的安全。添加其他記錄時(shí)直接在DataGrid 控件進(jìn)行操作。</p><p> 下面是添加學(xué)生信息模塊的界面:</p><p><
97、;b> 這一部分的代碼為:</b></p><p> 考慮到在實(shí)際操作過(guò)程中可能會(huì)連續(xù)甚至大量添加屬于同一班級(jí)同學(xué)的信息,所以此處添加班級(jí)信息選擇了列表框單擊選擇的方式。系統(tǒng)在啟動(dòng)時(shí)會(huì)默認(rèn)添加幾個(gè)班級(jí)的信息,僅為測(cè)試軟件功能之用,用戶可以添加自己需要的班級(jí)信息,如果所要添加的信息已經(jīng)在列表框中,則不能重復(fù)添加相同的信息,并且焦點(diǎn)會(huì)定位到該條記錄,方便用戶進(jìn)行查找。</p>&l
98、t;p> 此處添加班級(jí)信息采用了InputBox 函數(shù),方便靈活,增強(qiáng)了程序的趣味性。</p><p> Option Explicit</p><p> Dim ssex As String</p><p> Private Sub cmd_addsdept_Click() '添加學(xué)生所屬的院系和班級(jí)時(shí),采用列表框選擇的方</p>
99、<p> '式,這樣一個(gè)班級(jí)只需輸入一次,可以節(jié)省時(shí)間,減</p><p><b> '少輸入錯(cuò)誤</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> '用對(duì)話框輸入要添加的班級(jí)和學(xué)院的名稱,如果要添</p><p> '的單位已經(jīng)在列表框中,則不再重復(fù)添加,并將焦點(diǎn)</p><p><b> '停留在該單位上</b></p><p>
101、 sdept = InputBox("請(qǐng)輸入你要添加的學(xué)院或班級(jí)的名稱", "添加班級(jí)名稱", "")</p><p> For i = 0 To list_sdept.ListCount - 1</p><p> If list_sdept.List(i) = sdept Then</p><p>
102、 MsgBox "您所輸入的班級(jí)已在列表中,不能重復(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() '再次添加一條記錄時(shí),可以點(diǎn)擊“清除
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é)生記錄的主要操作,因?yàn)閷W(xué)號(hào)、姓名和性別為</p><p> '必須輸入項(xiàng),所以寫入數(shù)據(jù)之前要進(jìn)行判斷,考慮到</p><p> '實(shí)際情況,學(xué)號(hào)不會(huì)過(guò)長(zhǎng),所以設(shè)最大長(zhǎng)度為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é)號(hào)不能為空", 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é)號(hào)的長(zhǎng)度不能大于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 "請(qǐng)選擇男生或是女生", 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ù)的檢驗(yàn)以
115、后,向SQL數(shù)據(jù)庫(kù)中寫入數(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() '剛載入窗體時(shí),添加幾條默認(rèn)的記錄,因?yàn)閿?shù)量較少</p><p> '并不影響輸入數(shù)據(jù)時(shí)的選擇,所以不提供清除Item的</p><p><b> '功能</b></p><p> list_sdept.AddItem "測(cè)繪11
121、-6班"</p><p> list_sdept.AddItem "水文11-2班"</p><p> list_sdept.AddItem "英語(yǔ)11-2班"</p><p><b> End Sub</b></p><p><b> 3.2查詢學(xué)生記
122、錄</b></p><p> 各個(gè)模塊信息查找的功能都是相似的,下面繼續(xù)以學(xué)生信息模塊為代表,給出這一模塊的界面和主要實(shí)現(xiàn)代碼:</p><p> 考慮到查找關(guān)鍵字的實(shí)用性,系統(tǒng)提供了SQL 語(yǔ)言查詢功能和便于操作的按學(xué)號(hào)、姓名、性別、班級(jí)、生日、家庭住址查找的功能,雖然也可以實(shí)現(xiàn)通過(guò)電話號(hào)碼和簡(jiǎn)歷查找的功能,但是這樣做的實(shí)用性似乎并不大。當(dāng)然也可以通過(guò)SQL 語(yǔ)句來(lái)執(zhí)行這
123、樣的查詢。</p><p> 為了增強(qiáng)查詢功能,考慮到實(shí)際使用的需要,我們有時(shí)可能會(huì)查找全部姓張的學(xué)生,或者家庭住址都是河南省的學(xué)生,也或者出生在1992年2月的學(xué)生的記錄,或者同在某一個(gè)班級(jí)的學(xué)生的記錄。也可能需要查詢同時(shí)滿足這些條件的學(xué)生的信息,由于SQL 語(yǔ)言提供了方便的 “%”通配符,所以此處在可以采用模糊查詢的地方,都使用了類似</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> 的語(yǔ)句,用戶可以選擇一個(gè)或多個(gè)查詢條件,可以輸入大概的查詢條件,增加查找到所需信息的概率。</p><p> 比如要查詢一個(gè)學(xué)生的選課信息,可以再成績(jī)信息中按
126、學(xué)號(hào)查找記錄,要查找某一門課程的選課信息,可以再成績(jī)表中按課程號(hào)進(jìn)行信息查找。也可以同時(shí)選中這兩項(xiàng),確定某一個(gè)學(xué)生是否選修了某一門課程。</p><p> 下面是這一部分的界面,由于紙張?zhí)?,您看到的界面可能不太清楚,軟件運(yùn)行時(shí)您可以看到更加直觀清晰的界面。</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ù)庫(kù)之前,不能再添加新的空白的記錄,因?yàn)閿?shù)據(jù)庫(kù)
128、中主鍵的約束不允許添加空白的記錄,</p><p> 而添加空白記錄本身也沒有意義。</p><p> cmd_add.Enabled = False '在新數(shù)據(jù)存入數(shù)據(jù)庫(kù)之前,或者取消添加一條記錄之前</p><p> '不能再添加一條空白的記錄,保障數(shù)據(jù)庫(kù)正常工作</p><p> frm_studentadd.S
129、how</p><p> '雖然在DataGrid1可以直接添加學(xué)生記錄,但是容易出 _</p><p> 現(xiàn)錯(cuò)誤,浪費(fèi)時(shí)間并造成不必要的麻煩,所以此處仍 _</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ù)無(wú)價(jià)”,操作必須謹(jǐn)慎。</p><p> '此處對(duì)刪除一條記錄操作進(jìn)行確認(rèn),如果選擇“是”,</p><p> '將刪除一條記錄,如果選擇“否”,將取消操作</p><p> opt = MsgBox("你確定要?jiǎng)h除嗎?", vbYesNo, ""
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)—成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告--成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生選課成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)(學(xué)生成績(jī)管理系統(tǒng))
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)-數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論