數(shù)據(jù)庫技術(shù)與應(yīng)用課程設(shè)計--成績管理系統(tǒng)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論