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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

18、gt;  五 數(shù)據(jù)庫的實施與維護(hù)</p><p>  5.1 數(shù)據(jù)庫的實施:</p><p>  此階段主要任務(wù)包括創(chuàng)建數(shù)據(jù)庫,加載初始數(shù)據(jù),數(shù)據(jù)庫試運行,數(shù)據(jù)庫的安全性和完整性控制數(shù)據(jù)庫的備份與恢復(fù),數(shù)據(jù)庫性能的監(jiān)督分析和改僅,數(shù)據(jù)庫的重組和重構(gòu)等。首先在數(shù)據(jù)庫中建立一個學(xué)生成績管理系統(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("請重新輸入正確的學(xué)生學(xué)號");</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) //比較講要加入的學(xué)生學(xué)號,查看該學(xué)生是否已經(jīng)存在</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;該學(xué)生已存在");</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("學(xué)號不能為空");</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("已經(jīng)是末記錄!");</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,"學(xué)分",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個問題,當(dāng)先修課為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) //比較講要加入的學(xué)生學(xué)號,查看該學(xué)生是否已經(jīng)存在</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) //比較講要加入的學(xué)生學(xué)號,查看該學(xué)生是否已經(jīng)存在</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("表內(nèi)數(shù)據(jù)已經(jīng)為空");</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("不存在該班級號,請重新輸入正確的學(xué)號");</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("學(xué)號不能為空");</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("已經(jīng)是第一條記錄!");</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("已經(jīng)是末記錄!");</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>  下圖顯示了學(xué)生登陸系統(tǒng)進(jìn)行查詢時界面:</p><p>  下圖顯示了進(jìn)行班級查詢時界面:</p><p>  查找班級號為9的班級名</p><p>  添加班級號為10,班級名為信電學(xué)院</p><p><b>  添加前</b></p><p><b>  添加成功

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

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

溫馨提示

  • 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

提交評論