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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論