數(shù)據(jù)庫課程設計---學生信息管理系統(tǒng)設計_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  2012年1月3日 </p><p><b>  目錄</b></p><p>  一 概述…………………………………………………….1</p><p>  1.1目的與要求……………………………………………….1</p&

2、gt;<p>  1.2設計環(huán)境…………………………………………………..1</p><p>  二 需求分析…………………………………………………..1</p><p>  2.1 系統(tǒng)功能要求設計………………………………………….1</p><p>  2.2 系統(tǒng)模塊設計…………………………………………………1</p><p

3、>  2.3 數(shù)據(jù)字典………………………………………………………2</p><p>  三 概念模型設計………………………………………………..4</p><p>  四 邏輯和物理結構設計……………………………………….4</p><p>  4.1由系統(tǒng)E—R圖轉化而得到的關系模式………………5</p><p>  4.2 確定關系

4、模型的存取方法………………………………..5</p><p>  4.3 確定數(shù)據(jù)庫的存儲結構…………………………………..5</p><p>  5.1 數(shù)據(jù)庫的實施……………………………………………5</p><p>  五 數(shù)據(jù)庫的實施與維護……………………………………..5</p><p>  5.1 數(shù)據(jù)庫的實施…………………………

5、……………………6</p><p>  5.2部分操作截圖…………………………………………………25</p><p>  5.3數(shù)據(jù)庫的維護……………………………………………….27</p><p>  六 總結……………………………………………………………27</p><p><b>  學生信息管理系統(tǒng)</b><

6、;/p><p><b>  一 概述</b></p><p><b>  1.1目的與要求</b></p><p>  隨著科技的發(fā)展,基本上所有的具有一定數(shù)量數(shù)據(jù)的機構都開始使用計算機數(shù)據(jù)庫來做管理。幾乎所有學校也都已經在使用計算機管理數(shù)據(jù)的機制,大大減少了學校學生成績管理的工作量。該課程設計要求設計一個學生成績的數(shù)據(jù)庫管理

7、系統(tǒng),數(shù)據(jù)庫中要求包含學生的基本信息,學科基本信息,以及學生所學課程的考試成績。要方便學生進行成績查詢,通過該課程設計,應該達到把數(shù)據(jù)庫理論知識更加的鞏固加深,加強動手能力與實踐能力,學以致用,與現(xiàn)實生活中的應用充分的結合起來。</p><p><b>  1.2設計環(huán)境</b></p><p> ?、?#160; Microsoft SQL Server

8、 2000</p><p>  ②    Microsoft Visual C++ 6.0</p><p><b>  二 需求分析</b></p><p>  2.1 系統(tǒng)功能要求設計</p><p>  此系統(tǒng)實現(xiàn)如下系統(tǒng)功能:</p><p> ?。?

9、)使得學生的成績管理工作更加清晰、條理化、自動化。</p><p> ?。?)通過用登錄系統(tǒng),查詢學生基本信息,學生所選課程成績,添加或刪除等功能。 容易地完成學生信息的查詢操作。</p><p>  (3) 設計人機友好界面,功能安排合理,操作使用方便,并且進一步考慮系統(tǒng)在安全性,完整性,并發(fā)控制,備份和恢復等方面的功能要求。</p><p>  2.2 系統(tǒng)模塊

10、設計</p><p>  成績管理系統(tǒng)大體可以分成二大模塊如, 一是學生的基本信息模塊,里面應該包含學生的各方面的基本信息;再者便是課程管理模塊, 在該模塊中應該包含有對學生成績信息的查詢和處理,如平均成績、最好成績、最差成績以及不及格學生的統(tǒng)計等功能模塊;再其次還有教師、課程等相關信息的模塊;可以得到系統(tǒng)流程圖:</p><p><b>  2.3 數(shù)據(jù)字典</b>

11、</p><p>  數(shù)據(jù)項是數(shù)據(jù)庫的關系中不可再分的數(shù)據(jù)單位,下表分別列出了數(shù)據(jù)的名稱、數(shù)據(jù)類型、長度、取值能否為空。利用SQL Server 2000建立“學生選課”數(shù)據(jù)庫,其基本表清單及表結構描述如下:</p><p><b>  數(shù)據(jù)庫中用到的表:</b></p><p>  SC基本情況數(shù)據(jù)表,結構如下:</p><

12、;p>  Student表信息</p><p>  course數(shù)據(jù)表,結構如下:</p><p>  Class情況數(shù)據(jù)表,結構如下:</p><p><b>  三 概念模型設計</b></p><p>  由需求分析的結果可知,本系統(tǒng)設計的實體包括:</p><p> ?。?)學生基本

13、信息:(學號,姓名,性別,年齡,班級號,成績)。</p><p> ?。?)課程基本信息:( 課程名,課程號,先修課課號,教師號,學分)。 </p><p>  這些實體間的聯(lián)系包括:</p><p>  (1)每位學生可以學習多門課程,每門課程可供多位學生學習。</p><p>  由上述分析可得到系統(tǒng)的E—R圖:</p>&

14、lt;p>  四 邏輯和物理結構設計</p><p>  4.1由系統(tǒng)E—R圖轉化而得到的關系模式如下:</p><p> ?。?)學生(學號,姓名,性別,年齡,班級號)</p><p> ?。?)課程(課程號,課程名,先修課程號,學分,教師號),其中主關鍵字為課程號;</p><p> ?。?)班級(班級號,班級成績)其中主關鍵字為班

15、級號??梢耘c學生關系模式合并為:學生(課程號號,成績,班級號,班級成績)。</p><p>  4.2 確定關系模型的存取方法</p><p>  在將概念模型轉換成物理模型之后,我們可以對物理模型進行設計,雙擊物理模型的關系,可以對該關系的名稱、注釋等信息進行查詢??蓪υ撽P系的屬性列進行設計,可分別設置其名稱、碼、數(shù)據(jù)類型以及主碼、是否為空等。在實際設計中最常用的存取方法是索引發(fā),使用索

16、引可以大大減少數(shù)據(jù)的查詢時間,在建立索引時應遵循:在經常需要搜索的列上建立索引;  在主關鍵字上建立索引;在經常用于連接的列上建立索引,即在外鍵上建立索引;在經常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經排序,其指定的范圍是連續(xù)的等規(guī)則。才能充分利用索引的作用避免因索引引起的負面作用。</p><p>  4.3 確定數(shù)據(jù)庫的存儲結構</p><p>  確定數(shù)據(jù)庫的存儲結

17、構主要指確定數(shù)據(jù)的存放位置和存儲結構,包括確定關系、索引、日志、備份等的存儲安排及存儲結構,以及確定系統(tǒng)存儲參數(shù)的配置。因為該成績管理系統(tǒng)的數(shù)據(jù)量小,,所以我們只用把數(shù)據(jù)存儲在使用的電腦硬盤上,不用作更多的安排。</p><p>  創(chuàng)建學生基本信息表:</p><p>  下圖顯示了學生,課程和成績三個關系的物理設計其中課程號與學號號分別為關系的主碼。</p><p&

18、gt;  五 數(shù)據(jù)庫的實施與維護</p><p>  5.1 數(shù)據(jù)庫的實施:</p><p>  此階段主要任務包括創(chuàng)建數(shù)據(jù)庫,加載初始數(shù)據(jù),數(shù)據(jù)庫試運行,數(shù)據(jù)庫的安全性和完整性控制數(shù)據(jù)庫的備份與恢復,數(shù)據(jù)庫性能的監(jiān)督分析和改僅,數(shù)據(jù)庫的重組和重構等。首先在數(shù)據(jù)庫中建立一個學生成績管理系統(tǒng)數(shù)據(jù)庫,然后新建一個數(shù)據(jù)源。主要代碼如下:</p><p>  void CD

19、ialogSTU::Add()</p><p><b>  {</b></p><p>  _variant_t var;</p><p>  CString str;</p><p>  UpdateData(true);</p><p>  if(m_StuID.IsEmpty() ||ato

20、f(m_StuID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的學生學號");</p><p><b>  return;</b></p><p><b>  }</b></p&g

21、t;<p>  if(m_ClaID.IsEmpty() ||atof(m_ClaID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的班級號");</p><p><b>  return;</b></p>

22、<p><b>  }</b></p><p>  if(!m_pRecordsetCLA->adoBOF)</p><p><b>  {</b></p><p>  m_pRecordsetCLA->MoveFirst();</p><p>  while(!m_pRec

23、ordsetCLA->adoEOF) //比較將要加入的班級號,查看該班級號是否在班級表中存在</p><p><b>  {</b></p><p>  var=m_pRecordsetCLA->GetCollect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);

24、</p><p>  if(atof(m_ClaID)==atof(str))</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordset

25、CLA->MoveNext();</p><p><b>  }</b></p><p>  if(m_pRecordsetCLA->adoEOF)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的班級號!")

26、;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(!m_pRecordset->adoBOF)</p><p><b>  {

27、</b></p><p>  m_pRecordset->MoveFirst();</p><p>  while(!m_pRecordset->adoEOF) //比較講要加入的學生學號,查看該學生是否已經存在</p><p><b>  {</b></p><p>  var=m_pRe

28、cordset->GetCollect("Sno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  if(atof(m_StuID)==atof(str))</p><p><b>  {</b></p><p>  AfxMessageBox(&

29、quot;該學生已存在");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><

30、p>  if(!m_pRecordset->adoEOF)</p><p><b>  {return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b><

31、;/p><p><b>  try</b></p><p><b>  {</b></p><p>  m_pRecordset->AddNew();</p><p>  m_pRecordset->PutCollect("Sno",_variant_t(m_StuID)

32、);</p><p>  m_pRecordset->PutCollect("Sname",_variant_t(m_StuName));</p><p>  var.iVal=m_StuAge;</p><p>  m_pRecordset->PutCollect("Sage",var.iVal);</p&

33、gt;<p>  m_pRecordset->PutCollect("Ssex",_variant_t(m_StuSex));</p><p>  m_pRecordset->PutCollect("Sclno",_variant_t(m_ClaID));</p><p>  m_pRecordset->Update(

34、);</p><p>  m_pRecordset->MoveFirst();</p><p>  m_grid.DeleteAllItems();</p><p>  AddToGrid();</p><p>  m_pRecordset->MoveLast();</p><p>  AfxMessage

35、Box("插入成功!");</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p>

36、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void CDialogSTU::Modify()</p>

37、;<p><b>  {</b></p><p>  _variant_t var;</p><p>  CString str;</p><p>  UpdateData(true);</p><p>  if(m_StuID=="" || atof(m_StuID)==0)</

38、p><p><b>  {</b></p><p>  AfxMessageBox("學號不能為空");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(m_ClaID

39、.IsEmpty() ||atof(m_ClaID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的班級號");</p><p><b>  return;</b></p><p><b>  }<

40、;/b></p><p>  if(!m_pRecordsetCLA->adoBOF)</p><p><b>  {</b></p><p>  m_pRecordsetCLA->MoveFirst();</p><p>  while(!m_pRecordsetCLA->adoEOF)

41、//比較將要加入的班級號,查看該班級號是否在班級表中存在</p><p><b>  {</b></p><p>  var=m_pRecordsetCLA->GetCollect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  if

42、(atof(m_ClaID)==atof(str))</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordsetCLA->MoveNext();</p

43、><p><b>  }</b></p><p>  if(m_pRecordsetCLA->adoEOF)</p><p><b>  {</b></p><p>  AfxMessageBox("請輸入正確的班級號");</p><p><b&

44、gt;  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  try</b></p><p>

45、<b>  {</b></p><p>  m_pRecordset->PutCollect("Sno",_variant_t(m_StuID));</p><p>  m_pRecordset->PutCollect("Sname",_variant_t(m_StuName));</p><p&

46、gt;  var.iVal=m_StuAge;</p><p>  m_pRecordset->PutCollect("Sage",var.iVal);</p><p>  m_pRecordset->PutCollect("Ssex",_variant_t(m_StuSex))</p><p>  m_pReco

47、rdset->PutCollect("Sclno",_variant_t(m_ClaID));</p><p>  m_pRecordset->Update();</p><p>  m_pRecordset->MoveFirst();</p><p>  m_grid.DeleteAllItems();</p>

48、<p>  AddToGrid();</p><p>  m_pRecordset->MoveLast();</p><p>  AfxMessageBox("修改成功!");</p><p><b>  }</b></p><p>  catch(_com_error *e)<

49、/p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

50、;/b></p><p><b>  }</b></p><p>  void CDialogSTU::OnButtonNext() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler co

51、de here</p><p>  m_pRecordset->MoveNext();</p><p>  _variant_t var;</p><p>  CString str;</p><p>  if(m_pRecordset->adoEOF)</p><p><b>  {</b

52、></p><p>  MessageBox("已經是末記錄!");</p><p>  m_pRecordset->MoveLast();</p><p><b>  }</b></p><p><b>  try</b></p><p>&

53、lt;b>  {</b></p><p>  var=m_pRecordset->GetCollect("Sno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_StuID=str;</p><p>  var=m_pRecordset->

54、GetCollect("Sname");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_StuName=str;</p><p>  var =m_pRecordset->GetCollect("Sage");</p><p>  m_StuAge

55、=var.iVal; </p><p>  var=m_pRecordset->GetCollect("Ssex");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_StuSex=str;</p><p>  var=m_pRecordset->GetColle

56、ct("Sclno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaID=str;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  catch(_c

57、om_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p&g

58、t;  BOOL CDialogCOU::OnInitDialog() </p><p><b>  {</b></p><p>  CDialog::OnInitDialog();</p><p>  // TODO: Add extra initialization here</p><p>  m_grid.Set

59、ExtendedStyle(LVS_EX_FLATSB</p><p>  |LVS_EX_FULLROWSELECT</p><p>  |LVS_EX_HEADERDRAGDROP</p><p>  |LVS_EX_ONECLICKACTIVATE</p><p>  |LVS_EX_GRIDLINES);</p><

60、;p>  m_grid.InsertColumn(0,"課程號",LVCFMT_LEFT,100,0);</p><p>  m_grid.InsertColumn(1,"課程名",LVCFMT_LEFT,100,0);</p><p>  m_grid.InsertColumn(2,"先修課課號",LVCFMT_LEFT,

61、100,0);</p><p>  m_grid.InsertColumn(3,"學分",LVCFMT_LEFT,100,0);</p><p>  m_grid.InsertColumn(4,"教師號",LVCFMT_LEFT,100,0);</p><p>  m_pRecordset.CreateInstance(__u

62、uidof(Recordset));</p><p>  m_pRecordsetCOU.CreateInstance(__uuidof(Recordset));</p><p>  m_pRecordsetSC.CreateInstance(__uuidof(Recordset));</p><p>  m_pRecordsetTno.CreateInstance

63、(__uuidof(Recordset));</p><p>  m_pRecordsetCno.CreateInstance(__uuidof(Recordset));</p><p>  //打開Student表</p><p>  OpenCOURSES();</p><p>  catch(_com_error *e)</p&g

64、t;<p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p>  return TRUE; // return TRUE unless you set the focus to a c

65、ontrol</p><p>  // EXCEPTION: OCX Property Pages should return FALSE</p><p><b>  }</b></p><p>  void CDialogCOU::Add()</p><p><b>  {</b></p&g

66、t;<p>  _variant_t var;</p><p>  CString str;</p><p>  UpdateData(true);</p><p>  if(m_CouID==""||atof(m_CouID)==0)</p><p><b>  {</b></p

67、><p>  AfxMessageBox("請重新輸入正確的課程號");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(m_TID==""||atof(m_TID)==0)</p>

68、<p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的教師號");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(m_TID==

69、""||atof(m_TID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的先修課課程號");</p><p><b>  return;</b></p><p><b>  }&

70、lt;/b></p><p>  void CDialogCOU::Modify() //存在1個問題,當先修課為11,12時會有異常</p><p><b>  {</b></p><p>  _variant_t var;</p><p>  CString str,strb;<

71、;/p><p>  UpdateData(true);</p><p>  if(m_CouID=="" || atof(m_CouID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("課程號不能為空");</p>&l

72、t;p><b>  return;</b></p><p><b>  }</b></p><p>  if(m_TID=="" || atof(m_TID)==0)</p><p><b>  {</b></p><p>  AfxMessageBo

73、x("教師號不能為空");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(/*m_CouPno=="" || */atof(m_CouPno)==0)</p><p><b> 

74、 {</b></p><p>  AfxMessageBox("先修課課程號不能為0");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(!m_pRecordsetTno->adoBOF)&

75、lt;/p><p><b>  {</b></p><p>  m_pRecordsetTno->MoveFirst();</p><p>  while(!m_pRecordsetTno->adoEOF) </p><p><b>  {</b></p><p>

76、;  var=m_pRecordsetTno->GetCollect("Tno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  if(atof(m_TID)==atof(str))</p><p><b>  {</b></p><p><

77、b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordsetTno->MoveNext();</p><p><b>  }</b></p><p>  if(m_pRecordsetTno->adoEOF)<

78、/p><p><b>  {</b></p><p>  AfxMessageBox("請輸入正確的教師號");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(!m_

79、pRecordsetCno->adoBOF)</p><p><b>  {</b></p><p>  m_pRecordsetCno->MoveFirst();</p><p>  while(!m_pRecordsetCno->adoEOF) </p><p><b>  {<

80、/b></p><p>  var=m_pRecordsetCno->GetCollect("Cno");</p><p>  strb=(LPCSTR)_bstr_t(var);</p><p>  if(atof(m_CouPno)==atof(strb))</p><p><b>  {<

81、/b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordsetCno->MoveNext();</p><p><b>  }</b></p><p>  if(

82、m_pRecordsetCno->adoEOF)</p><p><b>  {</b></p><p>  AfxMessageBox("請輸入正確的先修課課程號");</p><p><b>  return;</b></p><p><b>  }</

83、b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  m_pRecordset-&g

84、t;PutCollect("Cno",_variant_t(m_CouID));</p><p>  m_pRecordset->PutCollect("Cname",_variant_t(m_CouName));</p><p>  m_pRecordset->PutCollect("Cpno",_variant_t

85、(m_CouPno));</p><p>  var.iVal=m_CouCredit;</p><p>  m_pRecordset->PutCollect("Ccredit",var.iVal);</p><p>  m_pRecordset->PutCollect("CTno",_variant_t(m_TI

86、D));</p><p>  m_pRecordset->Update();</p><p>  m_pRecordset->MoveFirst();</p><p>  m_grid.DeleteAllItems();</p><p>  AddToGrid();</p><p>  m_pRecords

87、et->MoveLast();</p><p>  AfxMessageBox("修改成功!");</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b></p><p

88、>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

89、><p><b>  }</b></p><p>  void CDialogCLA::Add()</p><p><b>  {</b></p><p>  _variant_t var;</p><p>  CString str;</p><p> 

90、 UpdateData(true);</p><p>  if(m_ClaID==""||atof(m_ClaID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("請重新輸入正確的課程號");</p><p><b> 

91、 return;</b></p><p><b>  }</b></p><p>  if(atof(m_ClaID)!=0 &&(!m_pRecordset->adoBOF))</p><p><b>  {</b></p><p>  m_pRecordset-

92、>MoveFirst();</p><p>  while(!m_pRecordset->adoEOF) //比較講要加入的學生學號,查看該學生是否已經存在</p><p><b>  {</b></p><p>  var=m_pRecordset->GetCollect("Clno");</

93、p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  if(atof(m_ClaID)==atof(str))</p><p><b>  {</b></p><p>  AfxMessageBox("該班級已存在");</p><p><b

94、>  break;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><p>  if(!m_pRecordset->adoEOF)</p>

95、<p><b>  {</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p

96、><p><b>  try</b></p><p><b>  {</b></p><p>  m_pRecordset->AddNew();</p><p>  m_pRecordset->PutCollect("Clno",_variant_t(m_ClaID));

97、</p><p>  m_pRecordset->PutCollect("Clname",_variant_t(m_ClaName));</p><p>  m_pRecordset->Update();</p><p>  m_pRecordset->MoveFirst();</p><p>  m_g

98、rid.DeleteAllItems();</p><p>  AddToGrid();</p><p>  m_pRecordset->MoveLast();</p><p>  AfxMessageBox("插入成功!");</p><p><b>  }</b></p>&l

99、t;p>  catch(_com_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b><

100、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  void CDialogCLA::Delete()</p><p><b>  {</b></p><p>  _variant_t var;</p&g

101、t;<p>  CString str,stra,strb;</p><p>  UpdateData(true);</p><p>  if(m_ClaID=="" || atof(m_ClaID)==0)</p><p><b>  {</b></p><p>  MessageBo

102、x("請輸入要刪除的班級號!");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(atof(m_ClaID)!=0 &&(!m_pRecordset->adoBOF))</p><p>

103、<b>  {</b></p><p>  m_pRecordset->MoveFirst();</p><p>  while(!m_pRecordset->adoEOF) //比較講要加入的學生學號,查看該學生是否已經存在</p><p><b>  {</b></p><p>

104、;  var=m_pRecordset->GetCollect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  if(atof(m_ClaID)==atof(str))</p><p><b>  {</b></p><p>  st

105、rb.Format("SELECT * FROM Student where SClno='%s'",m_ClaID);</p><p><b>  try</b></p><p><b>  {</b></p><p>  //從SQL數(shù)據(jù)庫中打開Student表</p>

106、<p>  m_pRecordsetSTU->Open(strb.AllocSysString(),</p><p>  theApp.m_pConnection.GetInterfacePtr(),</p><p>  adOpenDynamic,</p><p>  adLockOptimistic,</p><p> 

107、 adCmdText);</p><p>  if(!m_pRecordsetSTU->adoEOF)</p><p><b>  {</b></p><p>  AfxMessageBox("此數(shù)據(jù)正在被表外數(shù)據(jù)使用,不能刪除!");</p><p>  m_pRecordsetSTU->

108、;Close();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {

109、</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p>  m_pRecordsetSTU->Close();</p><p>  m_pRecordset->Delete(adAffectCu

110、rrent);</p><p>  m_pRecordset->Update();</p><p>  m_pRecordset->MoveFirst();</p><p>  m_grid.DeleteAllItems();</p><p>  AddToGrid();</p><p>  m_pReco

111、rdset->MoveLast();</p><p>  if(m_pRecordset->adoBOF)</p><p><b>  {</b></p><p>  AfxMessageBox("表內數(shù)據(jù)已經為空");</p><p>  m_btnAdd.SetState(true);

112、</p><p>  m_btnQuery.EnableWindow(FALSE);</p><p>  m_btnDelete.EnableWindow(FALSE);</p><p>  m_btnModify.EnableWindow(FALSE);</p><p>  m_btnFirst.EnableWindow(FALSE);&l

113、t;/p><p>  m_btnPre.EnableWindow(FALSE);</p><p>  m_btnNext.EnableWindow(FALSE);</p><p>  m_btnLast.EnableWindow(FALSE);</p><p>  m_btnOK.SetFocus();</p><p>&

114、lt;b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p>&l

115、t;p>  if(m_pRecordset->adoEOF)</p><p><b>  {</b></p><p>  AfxMessageBox("不存在該班級號,請重新輸入正確的學號");</p><p><b>  }</b></p><p><b>

116、;  }</b></p><p><b>  }</b></p><p>  void CDialogCLA::Modify()</p><p><b>  {</b></p><p>  _variant_t var;</p><p>  UpdateData(

117、true);</p><p>  if(m_ClaID=="" || atof(m_ClaID)==0)</p><p><b>  {</b></p><p>  AfxMessageBox("學號不能為空");</p><p><b>  return;</b&

118、gt;</p><p><b>  }</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  m_pRecordset->PutCollect("Clno",_variant_t(m_ClaID

119、));</p><p>  m_pRecordset->PutCollect("Clname",_variant_t(m_ClaName));</p><p>  m_pRecordset->Update();</p><p>  m_pRecordset->MoveFirst();</p><p>  

120、m_grid.DeleteAllItems();</p><p>  AddToGrid();</p><p>  m_pRecordset->MoveLast();</p><p>  AfxMessageBox("修改成功!");</p><p><b>  }</b></p>

121、<p>  catch(_com_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b>

122、</p><p>  void CDialogCLA::OnButtonFirst() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_pRecordset->Mo

123、veFirst();</p><p>  _variant_t var;</p><p>  CString str;</p><p><b>  try</b></p><p><b>  {</b></p><p>  var=m_pRecordset->GetCo

124、llect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaID=str;</p><p>  var=m_pRecordset->GetCollect("Clname");</p><p>  str=(LPCSTR)_bs

125、tr_t(var);</p><p>  m_ClaName=str;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b><

126、;/p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CDialogCLA::OnButtonPre() </p><p><

127、;b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_pRecordset->MovePrevious();</p><p>  _variant_t var;</p><p>  CStrin

128、g str;</p><p>  if(m_pRecordset->adoBOF)</p><p><b>  {</b></p><p>  MessageBox("已經是第一條記錄!");</p><p>  m_pRecordset->MoveFirst();</p>

129、<p><b>  }</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  var=m_pRecordset->GetCollect("Clno");</p><p>  str=(

130、LPCSTR)_bstr_t(var);</p><p>  m_ClaID=str;</p><p>  var=m_pRecordset->GetCollect("Clname");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaName=str;</

131、p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage

132、());</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CDialogCLA::OnButtonNext() </p><p><b>  {</b></p><p>  // TODO:

133、Add your control notification handler code here</p><p>  m_pRecordset->MoveNext();</p><p>  _variant_t var;</p><p>  CString str;</p><p>  if(m_pRecordset->adoEOF

134、)</p><p><b>  {</b></p><p>  MessageBox("已經是末記錄!");</p><p>  m_pRecordset->MoveLast();</p><p><b>  }</b></p><p><b&

135、gt;  try</b></p><p><b>  {</b></p><p>  var=m_pRecordset->GetCollect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaID=str;<

136、;/p><p>  var=m_pRecordset->GetCollect("Clname");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaName=str;</p><p>  UpdateData(false);</p><p>&

137、lt;b>  }</b></p><p>  catch(_com_error *e)</p><p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p>

138、<p><b>  }</b></p><p>  void CDialogCLA::OnButtonLast() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p>

139、<p>  m_pRecordset->MoveLast();</p><p>  _variant_t var;</p><p>  CString str;</p><p><b>  try</b></p><p><b>  {</b></p><p&g

140、t;  var=m_pRecordset->GetCollect("Clno");</p><p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaID=str;</p><p>  var=m_pRecordset->GetCollect("Clname");</p&g

141、t;<p>  str=(LPCSTR)_bstr_t(var);</p><p>  m_ClaName=str;</p><p>  UpdateData(false);</p><p><b>  }</b></p><p>  catch(_com_error *e)</p><

142、p><b>  {</b></p><p>  AfxMessageBox(e->ErrorMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p>  5.2部分操作截圖:</p><

143、;p>  下圖顯示了學生登陸系統(tǒng)進行查詢時界面:</p><p>  下圖顯示了進行班級查詢時界面:</p><p>  查找班級號為9的班級名</p><p>  添加班級號為10,班級名為信電學院</p><p><b>  添加前</b></p><p><b>  添加成功

144、</b></p><p><b>  添加后</b></p><p><b>  查找排列最前的班級</b></p><p><b>  查找最后的班級號</b></p><p>  查找學號為200215132學生的個人信息</p><p>

145、;  查找排在最后的學生信息</p><p><b>  5.3數(shù)據(jù)庫的維護</b></p><p>  當試運行數(shù)據(jù)庫合格后,數(shù)據(jù)庫開發(fā)設計的工作就基本完成了,接下來就是正式運行中的調試,應為該系統(tǒng)比較簡單,數(shù)據(jù)量小,數(shù)據(jù)庫中幾乎不會發(fā)生什么大的變化,但是還是需要做好數(shù)據(jù)的備份,在sqlserver中我們可以利用備份數(shù)據(jù)庫的功能對已經設計好的數(shù)據(jù)做備份,如果數(shù)據(jù)庫受

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論