

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生信息管理系統(tǒng)設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計報告--學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計報告
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生信息管理系統(tǒng) (2)
- 數(shù)據(jù)庫原理b課程設(shè)計--數(shù)據(jù)庫學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生選課信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生學(xué)籍信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計之學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計課程設(shè)計論文-醫(yī)院信息管理數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---宿舍信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--教室信息管理系統(tǒng).
- sql數(shù)據(jù)庫(學(xué)生信息管理系統(tǒng))課程設(shè)計報告
- pb數(shù)據(jù)庫應(yīng)用課程設(shè)計——學(xué)生信息管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-員工信息管理系統(tǒng)
評論
0/150
提交評論