版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 信息科學(xué)與工程學(xué)院</b></p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 題目: 學(xué)生成績管理系統(tǒng) </p><p> 專業(yè): </p>
2、;<p> 課程: 數(shù)據(jù)庫應(yīng)用 </p><p> 學(xué)號: </p><p> 姓名: </p><p> 指導(dǎo)教師:
3、 職稱: </p><p> 課程設(shè)計(jì)任務(wù)書及成績評定</p><p><b> 目 錄</b></p><p> 一.題目···············&
4、#183;·····························2</p><p> 二.成績管理系統(tǒng)的概要設(shè)計(jì)
5、3;···································2</p&
6、gt;<p> 三.成績管理系統(tǒng)的詳細(xì)設(shè)計(jì)································
7、;····3</p><p> 1.主控模塊的設(shè)計(jì)與實(shí)現(xiàn)··························
8、83;············3</p><p> 2.成績管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)··················
9、;·················8</p><p> 3.系統(tǒng)安全設(shè)置··············&
10、#183;································8</p><p>
11、 4.編譯與發(fā)布···································
12、183;·············8</p><p> 四.主要功能SQL語句·················&
13、#183;·······················8</p><p> (1)成績總評:·······
14、83;····································&
15、#183;······8</p><p> (2)補(bǔ)考處理:························
16、83;··························9</p><p> (3)重修處理:·····
17、;····································
18、83;······9</p><p> (4)統(tǒng)計(jì)學(xué)分:·························
19、;·······················9</p><p> (5)評優(yōu)秀········
20、83;····································&
21、#183;·····10</p><p> 五.源碼··························
22、····························10</p><p> 1、Tree Control:··
23、····································
24、3;·······11</p><p> 2、成績查詢:························
25、··························13</p><p> 3、排序:·····
26、3;····································
27、183;···········15</p><p> 4、數(shù)據(jù)庫備份:···················
28、83;····························16</p><p> 5、數(shù)據(jù)庫還原:··
29、3;····································
30、183;········18</p><p> 6、打?。?#183;······················
31、·······························19</p><p><b>
32、一.題目</b></p><p><b> 學(xué)生成績管理系統(tǒng)</b></p><p> 二.成績管理系統(tǒng)的概要設(shè)計(jì)</p><p> 本成績管理系統(tǒng)主要分三大功能模塊。</p><p><b> 1·系統(tǒng)設(shè)置模塊</b></p><p>
33、183;實(shí)體(分類)定義:</p><p> 學(xué)生基本信息(學(xué)號、姓名、性別、年齡);</p><p> 成績表(學(xué)號、課程代碼、考試代碼、成績);</p><p> 考試類型代碼(考試代碼、考試名稱、備注);</p><p> 課程信息(課程代碼、課程名稱、學(xué)分);</p><p> 班級信息(班級代碼、班
34、級名稱、班輔導(dǎo)員);</p><p> 專業(yè)信息(專業(yè)代碼、專業(yè)名稱、專業(yè)負(fù)責(zé)人);</p><p> 系別信息(系別代碼、系名、系負(fù)責(zé)人);</p><p><b> ·基本E-R圖:</b></p><p> 三.成績管理系統(tǒng)的詳細(xì)設(shè)計(jì)</p><p> 1.主控模塊的設(shè)計(jì)
35、與實(shí)現(xiàn)</p><p> ·成績管理模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 在成績管理模塊面板上點(diǎn)擊相應(yīng)的按鈕或菜單項(xiàng),便進(jìn)入以下相應(yīng)項(xiàng)。</p><p><b> ··成績錄入</b></p><p><b> ··修改成績</b></p
36、><p> 修改成績與成績錄入同用一界面模塊。當(dāng)數(shù)據(jù)庫里已經(jīng)存在該生的成績時(shí),系統(tǒng)會(huì)提示已有記錄,并提示是否要修改。</p><p><b> ··刪除成績</b></p><p> 在刪除時(shí)會(huì)給出提示,確保用戶不是誤操作。</p><p><b> ··成績查詢&l
37、t;/b></p><p> 成績查詢操作界面如下:本系統(tǒng)提供四個(gè)組合條件輸入框供用戶選擇使用。如下圖,查詢條件可以是(班級名稱、學(xué)號、姓名、課程名稱、考試名稱、專業(yè)名稱、系名)中的一種或多種組合,條件組合方式有(與、或、非),還可以進(jìn)行模糊查詢,如學(xué)號的前幾位吻合或姓氏相同等。</p><p><b> ··成績總評</b></p
38、><p> 如上圖,可調(diào)整總評成績的構(gòu)成比例,確定后,系統(tǒng)將生成總評成績并顯示所有學(xué)生的總評成績。</p><p><b> ··補(bǔ)考處理</b></p><p><b> ··重修處理</b></p><p><b> ··
39、統(tǒng)計(jì)學(xué)分</b></p><p> 統(tǒng)計(jì)學(xué)分是根據(jù)該生該科的總評成績是還及格來決定該生該科是否獲得學(xué)分。并顯示所有學(xué)生的學(xué)分情況。</p><p><b> ··評選優(yōu)秀</b></p><p> ·學(xué)生信息模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> ·
40、;·新增學(xué)生</b></p><p> 新增學(xué)生以學(xué)號不與數(shù)據(jù)庫中的記錄學(xué)號相同為準(zhǔn),若已存在該學(xué)號,則給出提示,也可在本模塊修改該生信息。操作界面如下:</p><p><b> ··修改學(xué)生</b></p><p> 修改學(xué)生與新增學(xué)生共用一界面模塊,不同的是修改學(xué)生要先選定一學(xué)生記錄<
41、/p><p><b> ··刪除學(xué)生</b></p><p> 刪除學(xué)生會(huì)連帶學(xué)生信息、選修情況與成績一起刪除。所以在刪除時(shí)會(huì)給出提示,確保用戶不是誤操作。</p><p><b> ··信息查詢</b></p><p> 操作界面如上,本功能既能以精確條
42、件查詢,也可以模糊查詢。</p><p><b> ··學(xué)生選課</b></p><p><b> 本功能未實(shí)現(xiàn)。</b></p><p><b> ··導(dǎo)出Excel</b></p><p> 導(dǎo)出Excel是根據(jù)當(dāng)前操作的界面
43、表格的數(shù)據(jù)(所有的學(xué)生信息或經(jīng)某個(gè)條件查詢出來的學(xué)生信息)用Excel顯示出來。</p><p> ·系統(tǒng)設(shè)置模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 系統(tǒng)設(shè)置主要涉及用戶添加、密碼修改、用戶登錄與注銷,還可以還原數(shù)據(jù)庫和備份數(shù)據(jù)庫。而不涉及具體的數(shù)據(jù)操作。</p><p> 2.成績管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)</p><p><b
44、> 3.系統(tǒng)安全設(shè)置</b></p><p> 為保正數(shù)據(jù)安全性,本系統(tǒng)設(shè)有用戶登錄和密碼驗(yàn)證。還可以注銷用戶,以供不同用戶使用,由于時(shí)間關(guān)系,本系統(tǒng)的權(quán)限管理還沒有完成。</p><p><b> 4.編譯與發(fā)布</b></p><p> 四.主要功能SQL語句</p><p><b&g
45、t; (1)成績總評:</b></p><p> //先刪除原有的總評成績</p><p> CString szSQL="DELETE FROM 成績表 WHERE (考試代碼 = '05')";</p><p> //按組分//把所有學(xué)生和它選課 一個(gè)個(gè)選出來</p><p>
46、szSQL="SELECT 學(xué)號, 課程代碼 FROM 成績表 WHERE (考試代碼 = '01') OR (考試代碼 = '02') GROUP BY 學(xué)號, 課程代碼";</p><p> while循環(huán)取一個(gè)個(gè)計(jì)算 </p><p> SQL1.Format("SELECT 成績 FROM 成績表 WHERE (考試
47、代碼 = '01') AND (學(xué)號 = '%s') AND (課程代碼 = '%s')",szSno,szCno);</p><p> SQL2.Format("SELECT 成績 FROM 成績表 WHERE (考試代碼 = '02') AND (學(xué)號 = '%s') AND (課程代碼 = '%s&
48、#39;)",szSno,szCno);</p><p> //最后插入總評成績</p><p> szSQLtotal.Format("INSERT INTO 成績表 VALUES ('%s','%s','05',%s)",szSno,szCno,CtotalG);</p><p>
49、<b> (2)補(bǔ)考處理:</b></p><p> szSQL="SELECT 班級名稱,學(xué)生基本信息.學(xué)號,姓名,課程名稱,考試名稱,成績,專業(yè)名稱,系名 FROM 成績表,學(xué)生基本信息,考試類型代碼,班級信息,課程信息,專業(yè)信息,系別信息 WHERE 系別信息.系別代碼 = 專業(yè)信息.所屬系別 AND 專業(yè)信息.專業(yè)代碼 = 班級信息.所屬專業(yè) AND 成績表.學(xué)號 =
50、學(xué)生基本信息.學(xué)號 AND 成績表.考試代碼 = 考試類型代碼.考試代碼 AND 學(xué)生基本信息.所屬班級 = 班級信息.班級代碼 AND 成績表.課程代碼 = 課程信息.課程代碼 ";</p><p> //再在后面加上條件,還有處理范圍where條件語句省略。</p><p> szSQLlast.Format(" AND 成績>= %s AND 成績<
51、;%s",b_MinScore,b_Score); </p><p> szSQL += szSQLlast;</p><p><b> ?。?)重修處理:</b></p><p> szSQL="SELECT 班級名稱,學(xué)生基本信息.學(xué)號,姓名,課程名稱,考試名稱,成績,專業(yè)名稱,系名 FROM 成績表,學(xué)生基本信
52、息,考試類型代碼,班級信息,課程信息,專業(yè)信息,系別信息 WHERE 系別信息.系別代碼 = 專業(yè)信息.所屬系別 AND 專業(yè)信息.專業(yè)代碼 = 班級信息.所屬專業(yè) AND 成績表.學(xué)號 = 學(xué)生基本信息.學(xué)號 AND 成績表.考試代碼 = 考試類型代碼.考試代碼 AND 學(xué)生基本信息.所屬班級 = 班級信息.班級代碼 AND 成績表.課程代碼 = 課程信息.課程代碼 ";</p><p> //再在
53、后面加上條件,還有處理范圍等等where條件語句生成方法省略。</p><p> //AND ((考試類型代碼.考試名稱 = '補(bǔ)考成績' AND 成績<60) or (考試類型代碼.考試名稱 = '總評成績' AND 成績<40))</p><p> szSQL1.Empty();</p><p> szSQLla
54、st.Format("考試名稱 = '%s'",b_Ename);</p><p> szSQL1 += szSQLlast;</p><p> szSQLlast.Format(" AND 成績<%s",b_Score);</p><p> szSQL1 += szSQLlast;</p
55、><p> szSQL2.Empty();</p><p> szSQL2="考試類型代碼.考試名稱 = '總評成績'";</p><p> szSQLlast.Format(" AND 成績<%s",b_MiniScore);</p><p> szSQL2 += szSQL
56、last;</p><p> szSQLlast.Format(" AND ((%s) or (%s))",szSQL1,szSQL2);</p><p> szSQL += szSQLlast;</p><p><b> (4)統(tǒng)計(jì)學(xué)分:</b></p><p><b> //先
57、刪除臨時(shí)表</b></p><p> CString szSQLdel="DELETE FROM T_分科學(xué)分";</p><p> CStringszSQLdelstu="UPDATE 學(xué)生基本信息 SET 總得學(xué)分 = NULL ";</p><p> //把所有學(xué)生和它選課 一個(gè)個(gè)選出來</p
58、><p> CString szSQL="SELECT 學(xué)號, 課程代碼 FROM 成績表 GROUP BY 學(xué)號,課程代碼"; </p><p><b> //一個(gè)個(gè)計(jì)算</b></p><p> SQL1.Format("SELECT 成績 FROM 成績表,考試類型代碼 WHERE 成績表.考試代碼 = 考
59、試類型代碼.考試代碼 AND 考試類型代碼.考試名稱 = '總評成績' AND (學(xué)號='%s') AND (課程代碼 = '%s')",szSno,szCno); </p><p> //看補(bǔ)考過了沒有 </p><p> SQL1.Format("SELECT 成績 FROM 成績表,考試類
60、型代碼 WHERE 成績表.考試代碼 = 考試類型代碼.考試代碼 AND 考試類型代碼.考試名稱 = '補(bǔ)考成績' AND (學(xué)號='%s') AND (課程代碼 = '%s')",szSno,szCno);</p><p><b> //看重修過了沒有</b></p><p> SQL1.Format(&
61、quot;SELECT 成績 FROM 成績表,考試類型代碼 WHERE 成績表.考試代碼 = 考試類型代碼.考試代碼 AND 考試類型代碼.考試名稱 = '重修成績' AND (學(xué)號='%s') AND (課程代碼 = '%s')",szSno,szCno);</p><p> //最后更新學(xué)生信息表</p><p> UpS
62、QL.Format("UPDATE 學(xué)生基本信息 SET 總得學(xué)分 = %s WHERE (學(xué)號 = '%s')",totalCent,Stu[k].Sno);</p><p><b> ?。?)評優(yōu)秀:</b></p><p> szSQL="SELECT 班級名稱,學(xué)生基本信息.學(xué)號,姓名,課程名稱,考試名稱,成績,
63、專業(yè)名稱,系名 FROM 成績表,學(xué)生基本信息,考試類型代碼,班級信息,課程信息,專業(yè)信息,系別信息 WHERE 系別信息.系別代碼 = 專業(yè)信息.所屬系別 AND 專業(yè)信息.專業(yè)代碼 = 班級信息.所屬專業(yè) AND 成績表.學(xué)號 = 學(xué)生基本信息.學(xué)號 AND 成績表.考試代碼 = 考試類型代碼.考試代碼 AND 學(xué)生基本信息.所屬班級 = 班級信息.班級代碼 AND 成績表.課程代碼 = 課程信息.課程代碼 ";</
64、p><p> //再在后面加上條件,還有處理范圍where條件語句省略。</p><p> szSQLlast.Format(" AND 成績>=%s",b_Score); </p><p> szSQL += szSQLlast;</p><p> szSQLlast.Format(" AND 考
65、試名稱 = '%s'",b_Ename);</p><p> szSQL += szSQLlast;</p><p><b> 五</b></p><p><b> ?。创a</b></p><p> 1、Tree Control:</p><p&
66、gt; ?。?)初始化動(dòng)態(tài)查找數(shù)據(jù)庫更新Tree</p><p> //初始化樹形-系(學(xué)院)-專業(yè)-班 </p><p> _RecordsetPtr pT_set1,pT_set2,pT_set3;</p><p> //TV_INSERTSTRUCT TreeCtrl; //定義存放樹的結(jié)構(gòu) 這里想用作存第幾層</p><p&
67、gt; CTreeCtrl *ptree = (CTreeCtrl*)GetDlgItem(IDC_TREE_class);</p><p> ptree->SetImageList(&pFrame->m_ImageList,LVSIL_NORMAL);</p><p> HTREEITEM hroot1 = ptree->InsertItem("
68、廣工全部學(xué)院",0,1); //設(shè)0為層數(shù)ID </p><p> //HTREEITEM hroot1 = ptree->InsertItem(TVIF_TEXT,_T("廣工全部學(xué)院"), 1, 2, 3, 4, 5, NULL, NULL);</p><p> HTREEITEM hroot2,hroot3; </p>&l
69、t;p> CString Nostr,str;</p><p> CString szSQL = "SELECT * FROM 系別信息"; </p><p> _variant_t vDno,vDname,vSno,vSname,vCno,vCname;</p><p> pT_set1.CreateInstance(__u
70、uidof( Recordset ));</p><p> pT_set2.CreateInstance(__uuidof( Recordset ));</p><p> pT_set3.CreateInstance(__uuidof( Recordset ));</p><p> pT_set1->Open((LPCSTR)szSQL,RS_PARAM
71、); </p><p> while(!pT_set1->adoEOF)</p><p><b> { </b></p><p> vDno=pT_set1->GetCollect("系別代碼"); //第一列的值,也可寫成vSno=p_set->GetCollect("學(xué)號&qu
72、ot;);</p><p> vDname=pT_set1->GetCollect("系名");</p><p> Nostr=(BSTR)vDno.pbstrVal;</p><p> str=(BSTR)vDname.pbstrVal; //AfxMessageBox(aa);</p><p> h
73、root2=ptree->InsertItem(str,0,1,hroot1); //插入學(xué)院</p><p> ///----------->> 專業(yè)</p><p> szSQL="SELECT * FROM 專業(yè)信息,系別信息 where 專業(yè)信息.所屬系別 = 系別信息.系別代碼 AND 系別代碼 = '" + Nostr +
74、 "'";</p><p> pT_set2->Open((LPCSTR)szSQL,RS_PARAM); </p><p> while(!pT_set2->adoEOF)</p><p><b> { </b></p><p> vSno=pT_set2->G
75、etCollect("專業(yè)代碼"); </p><p> vSname=pT_set2->GetCollect("專業(yè)名稱");</p><p> Nostr=(BSTR)vSno.pbstrVal;</p><p> str=(BSTR)vSname.pbstrVal; //AfxMessageBox(aa
76、);</p><p> hroot3=ptree->InsertItem(str,0,1,hroot2); //插入專業(yè)</p><p> //---->>>> 班</p><p> szSQL="SELECT * FROM 班級信息,專業(yè)信息 where 班級信息.所屬專業(yè) = 專業(yè)信息.專業(yè)代碼 AND 專業(yè)代碼
77、= '" + Nostr + "'";</p><p> pT_set3->Open((LPCSTR)szSQL,RS_PARAM); </p><p> while(!pT_set3->adoEOF)</p><p><b> { </b></p><p&
78、gt; vCno=pT_set3->GetCollect("班級代碼"); </p><p> vCname=pT_set3->GetCollect("班級名稱");</p><p> Nostr=(BSTR)vCno.pbstrVal;</p><p> str=(BSTR)vCname.pbstrVa
79、l; //AfxMessageBox(aa);</p><p> ptree->InsertItem(str,0,1,hroot3); //插入班級 </p><p> pT_set3->MoveNext();</p><p><b> }</b></p><p> pT_set3->
80、;Close();</p><p> pT_set2->MoveNext();</p><p><b> }</b></p><p> pT_set2->Close();</p><p> pT_set1->MoveNext();</p><p><b> }
81、</b></p><p> pT_set1->Close(); </p><p> ?。?)點(diǎn)擊樹動(dòng)態(tài)更新ComobList控件</p><p> (太長了,這里只列出一部分代碼)</p><p> szSQL = "SELECT * FROM 學(xué)生基本信息";</p><p&
82、gt; CTreeCtrl *ptree = (CTreeCtrl*)GetDlgItem(IDC_TREE_class);</p><p> HTREEITEM hitem = ptree->GetSelectedItem();</p><p><b> //取第幾層</b></p><p> HTREEITEM hN=hite
83、m; int n=0;</p><p> while(hN && hN!=ptree->GetRootItem())</p><p><b> { </b></p><p><b> n++;</b></p><p> hN=ptree->GetParentIt
84、em(hN);</p><p><b> }</b></p><p> if ((m_nFlag==2) || (m_nFlag==3) || (m_nFlag==4)) *b_Np=n;//返回給補(bǔ)考重修用</p><p> if( hitem && hitem != ptree->GetRootItem())&l
85、t;/p><p><b> {</b></p><p> CString szPar,szGra;HTREEITEM hpar,hGra;</p><p> szSQL="SELECT 學(xué)生基本信息.* FROM 學(xué)生基本信息,系別信息,專業(yè)信息,班級信息 where 系別信息.系別代碼 = 專業(yè)信息.所屬系別 and 專業(yè)信息.專
86、業(yè)代碼 = 班級信息.所屬專業(yè) and 班級信息.班級代碼 = 學(xué)生基本信息.所屬班級";</p><p> CString szSDS = ptree->GetItemText(hitem);</p><p> if ((m_nFlag ==2) || (m_nFlag ==3) || (m_nFlag==4)) *b_School = szSDS;</p>
87、;<p> switch (n)</p><p><b> {</b></p><p> case 1: //第一層 選中院系</p><p> szSQL+=" and 系別信息.系名='" + szSDS + "'";</p><p
88、><b> break;</b></p><p><b> case 2:</b></p><p> hpar=ptree->GetParentItem(hitem); //取回父親結(jié)點(diǎn)值</p><p> szPar=ptree->GetItemText(hpar); //系</p
89、><p> szSQL+=" and 系別信息.系名='" + szPar + "' and 專業(yè)信息.專業(yè)名稱='" + szSDS + "'";</p><p> break; //選中專業(yè)</p><p><b> case 3:</b><
90、/p><p> hpar=ptree->GetParentItem(hitem); //取回父親結(jié)點(diǎn)值</p><p> szPar=ptree->GetItemText(hpar); //系</p><p> hGra=ptree->GetParentItem(hpar); //取回"祖"結(jié)點(diǎn)值</p&g
91、t;<p> szGra=ptree->GetItemText(hGra); //專業(yè)</p><p> szSQL+=" and 系別信息.系名='" + szGra + "' and 專業(yè)信息.專業(yè)名稱='" + szPar + "' and 班級信息.班級名稱 ='" + sz
92、SDS + "'";</p><p><b> break;</b></p><p><b> }</b></p><p> //刷新取得學(xué)生信息</p><p> pCombo_Sno->ResetContent(); //刪除原有的</p>
93、;<p> pCombo_Sname->ResetContent();</p><p> CString Nostr,str; </p><p> _variant_t vDno,vDname;//vSno,vSname,vCno,vCname;</p><p> _RecordsetPtr pT_set1;</p>&
94、lt;p> pCombo_Sno = (CComboBox*) GetDlgItem(IDC_CBO_Sno);</p><p> pCombo_Sname = (CComboBox*) GetDlgItem(IDC_CBO_Sname); </p><p> pT_set1.CreateInstance(__uuidof( Recordset ));</p>
95、<p> pT_set1->Open((LPCSTR)szSQL,RS_PARAM);</p><p> 以下略。。。。。。。。。。。。。</p><p> 2、成績查詢:(關(guān)鍵是生成查詢字符串)</p><p> if (m_CHECK.GetCheck()) //是否模糊查找</p><p><b>
96、 {</b></p><p> if ((Ctext1!="請選擇...") && (!text1.IsEmpty()))</p><p><b> { </b></p><p> sql1.Format(" %s like '%s",Ctext1,text1
97、);</p><p> sql1+="%'";</p><p><b> }</b></p><p> if ((Ctext2!="請選擇...") && (!text2.IsEmpty())) </p><p><b> { <
98、/b></p><p> sql2.Format(" %s %s like '%s",AR2,Ctext2,text2);</p><p> sql2+="%'";</p><p><b> }</b></p><p> if ((Ctext3!=&q
99、uot;請選擇...") && (!text3.IsEmpty())) </p><p><b> { </b></p><p> sql3.Format(" %s %s like '%s",AR3,Ctext3,text3);</p><p> sql3+="%
100、9;";</p><p><b> }</b></p><p> if ((Ctext4!="請選擇...") && (!text4.IsEmpty())) </p><p><b> {</b></p><p> sql4.Format(&
101、quot; %s %s like '%s",AR4,Ctext4,text4);</p><p> sql4+="%'";</p><p><b> }</b></p><p><b> }</b></p><p><b> else&
102、lt;/b></p><p><b> {</b></p><p> if ((Ctext1!="請選擇...") && (!text1.IsEmpty()))</p><p> sql1.Format(" %s = '%s'",Ctext1,text1);&l
103、t;/p><p> if ((Ctext2!="請選擇...") && (!text2.IsEmpty())) </p><p> sql2.Format(" %s %s = '%s'",AR2,Ctext2,text2);</p><p> if ((Ctext3!="請選擇.
104、..") && (!text3.IsEmpty())) </p><p> sql3.Format(" %s %s = '%s'",AR3,Ctext3,text3);</p><p> if ((Ctext4!="請選擇...") && (!text4.IsEmpty())) &
105、lt;/p><p> sql4.Format(" %s %s = '%s'",AR4,Ctext4,text4);</p><p><b> }</b></p><p> szSQLlast.Format("AND (%s%s%s%s)",sql1,sql2,sql3,sql4);<
106、;/p><p> if (sql1.IsEmpty() && ( sql2.IsEmpty() || sql3.IsEmpty() || sql4.IsEmpty())) //把多出來的AND OR刪除</p><p><b> {</b></p><p> int fc=szSQLlast.Find("AND&q
107、uot;,4);</p><p> if (fc!=-1) //刪除AND</p><p> szSQLlast.Delete(fc,3);</p><p><b> else </b></p><p><b> {</b></p><p> fc=szSQLla
108、st.Find("OR",4); </p><p> szSQLlast.Delete(fc,2);</p><p><b> }</b></p><p><b> }</b></p><p> if (sql1.IsEmpty() && sql2
109、.IsEmpty() && sql3.IsEmpty() && sql4.IsEmpty())</p><p> szSQLlast.Empty();</p><p> szSQL+=szSQLlast;</p><p> strcpy(szSQLt,(LPSTR)(LPCSTR)szSQL);</p><p
110、> 3、排序:(主要是在Clist控件點(diǎn)列名進(jìn)行排序)</p><p> NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;</p><p> // TODO: Add your control notification handler code here</p><p> // pNMListView-&
111、gt;iSubItem; //返回點(diǎn)中的第幾列</p><p> CString szSQL;</p><p> if( pNMListView->iSubItem == m_nSortedCol )</p><p> m_fAsc = !m_fAsc;</p><p><b> else</b><
112、/p><p><b> {</b></p><p> m_fAsc = TRUE;</p><p> m_nSortedCol = pNMListView->iSubItem;</p><p><b> }</b></p><p> switch (m_nSort
113、edCol)</p><p><b> {</b></p><p> case 0: //按班級排</p><p> if (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 班級信息.班級名稱";</p><p><b&
114、gt; else </b></p><p> szSQL = curSQL + " ORDER BY 班級信息.班級名稱 DESC";</p><p><b> break;</b></p><p><b> case 1:</b></p><p> if
115、 (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 學(xué)生基本信息.學(xué)號";</p><p><b> else </b></p><p> szSQL = curSQL + " ORDER BY 學(xué)生基本信息.學(xué)號 DESC";</p>&
116、lt;p><b> break;</b></p><p><b> case 2:</b></p><p> if (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 學(xué)生基本信息.姓名";</p><p><b>
117、; else </b></p><p> szSQL = curSQL + " ORDER BY 學(xué)生基本信息.姓名 DESC";</p><p><b> break;</b></p><p><b> case 3:</b></p><p> if (
118、m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 課程信息.課程名稱";</p><p><b> else </b></p><p> szSQL = curSQL + " ORDER BY 課程信息.課程名稱 DESC";</p><
119、;p><b> break;</b></p><p><b> case 4:</b></p><p> if (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 考試類型代碼.考試名稱";</p><p><b>
120、; else </b></p><p> szSQL = curSQL + " ORDER BY 考試類型代碼.考試名稱 DESC";</p><p><b> break;</b></p><p><b> case 5:</b></p><p> if
121、 (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 成績表.成績";</p><p><b> else </b></p><p> szSQL = curSQL + " ORDER BY 成績表.成績 DESC";</p><p&g
122、t;<b> break;</b></p><p><b> case 6:</b></p><p> if (m_fAsc)</p><p> szSQL = curSQL + " ORDER BY 專業(yè)信息.專業(yè)名稱";</p><p><b> els
123、e </b></p><p> szSQL = curSQL + " ORDER BY 專業(yè)信息.專業(yè)名稱 DESC";</p><p><b> break;</b></p><p><b> case 7:</b></p><p> if (m_fAsc
124、)</p><p> szSQL = curSQL + " ORDER BY 系別信息.系名";</p><p><b> else </b></p><p> szSQL = curSQL + " ORDER BY 系別信息.系名 DESC";</p><p><
125、b> break;</b></p><p><b> default:</b></p><p> szSQL = curSQL;</p><p><b> break;</b></p><p><b> }</b></p><p&
126、gt; RefreshGradeList(szSQL); //刷新List控件</p><p><b> 4、數(shù)據(jù)庫備份:</b></p><p> int fc = pFrame->ConSQL.Find(“SQL Server”,0);</p><p> if (fc!=-1) //當(dāng)前連接為SQL Server</
127、p><p><b> {</b></p><p> Cstring szSQL;</p><p> CfileDialog dlgFileOpen(FALSE);</p><p> if(dlgFileOpen.DoModal()==IDOK) </p><p> szSQL.Format(
128、“BACKUP DATABASE %s to DISK = ‘%s’”,DatabaseName,(Cstring)dlgFileOpen.m_ofn.lpstrFile);</p><p><b> else </b></p><p><b> {</b></p><p> MessageBox(“備份文件名出錯(cuò)!
129、”,NULL,MB_ICONSTOP);</p><p><b> return;</b></p><p><b> }</b></p><p><b> try {</b></p><p> pFrame->ExecSQL(szSQL);</p>
130、<p> MessageBox(“備份成功!”,NULL,MB_ICONINFORMATION);</p><p><b> }</b></p><p> catch (_com_error e)</p><p><b> {</b></p><p> MessageBox(“備
131、份數(shù)據(jù)庫失敗!”,NULL,MB_ICONSTOP);</p><p><b> }</b></p><p><b> }</b></p><p> else //當(dāng)前為access連接</p><p><b> {</b></p><p>
132、 Cstring Dpath;</p><p> CfileDialog dlgFileOpen(FALSE);</p><p> if(dlgFileOpen.DoModal()==IDOK) </p><p><b> {</b></p><p> Dpath = (Cstring)dlgFileOpen.
133、m_ofn.lpstrFile;</p><p> Cstring D_Right = Dpath.Right(3);</p><p> D_Right.MakeLower();</p><p> if (D_Right!=”mdb”)</p><p> Dpath.Insert(Dpath.GetLength(),”.mdb”
134、);</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> MessageBox(“備份文件名出錯(cuò)!”,NULL,MB_ICONSTOP);</p><p>&
135、lt;b> return;</b></p><p><b> }</b></p><p> //AfxMessageBox(Dpath);</p><p> Cstring ConSQL,ConAccPath;</p><p> ConSQL = pFrame->ConSQL;</
136、p><p> int fc = ConSQL.Find(“Source=”,0);</p><p> ConAccPath = ConSQL.Mid(fc+7,ConSQL.GetLength()-fc-7);</p><p> //ConAccPath = “H:\\dos.chm”;</p><p> if (pFrame->m
137、_pConnection->State)</p><p> pFrame->m_pConnection->Close();</p><p> Cfile SF,DF;</p><p> CfileException ex;</p><p> if (!SF.Open(ConAccPath,</p>
138、<p> Cfile::modeRead | Cfile::shareDenyWrite, &ex))</p><p><b> {</b></p><p> SF.Close();</p><p> MessageBox(“打開數(shù)據(jù)文件失敗!”);</p><p><b> ret
139、urn;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if (!DF.Open(Dpath, Cfile::modeWrite |</p>&
140、lt;p> Cfile::shareExclusive | Cfile::modeCreate, &ex))</p><p><b> {</b></p><p> MessageBox(“打開備份文件失敗!”);</p><p> DF.Close();</p><p><b> re
141、turn;</b></p><p><b> }</b></p><p> BYTE buffer[4096];</p><p> DWORD dwRead;</p><p> // Read in 4096-byte blocks,</p><p> // remember
142、 how many bytes were actually read,</p><p> // and try to write that many out. This loop ends</p><p> // when there are no more bytes to read.</p><p><b> Do</b></p
143、><p><b> {</b></p><p> dwRead = SF.Read(buffer, 4096);</p><p> DF.Write(buffer, dwRead);</p><p><b> }</b></p><p> while (dwRead &
144、gt; 0);</p><p> Cstring Msg; Msg.Format(“Access數(shù)據(jù)庫已備份到%s”,Dpath);</p><p> MessageBox(Msg,”備份成功!”,MB_ICONINFORMATION);</p><p> // Close both files</p><p> SF.Close()
145、;</p><p> DF.Close();</p><p> }//end if(!SF.open())</p><p><b> //重新打開連接</b></p><p><b> try{</b></p><p> pFrame->m_pConnecti
146、on->ConnectionTimeout=5;</p><p> pFrame->m_pConnection->Open((LPCSTR)(pFrame->ConSQL),””,””,adModeUnknown);</p><p><b> }</b></p><p> catch(_com_error e)&l
147、t;/p><p><b> {</b></p><p> Cstring errormessage;</p><p> errormessage.Format(“數(shù)據(jù)庫連接超時(shí)!\r\n請檢查數(shù)據(jù)庫狀態(tài)!\r\n數(shù)據(jù)連接錯(cuò)誤:%s”,e.ErrorMessage());</p><p> AfxMessageBox(
148、errormessage);///顯示錯(cuò)誤信息</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 5、數(shù)據(jù)庫還原:</b></p><
149、;p> 類似備份,主要SQL語句為:</p><p> szSQL.Format("RESTORE DATABASE %s FROM DISK = '%s' WITH REPLACE",rsDBname,(CString)dlgFileOpen.m_ofn.lpstrFile);</p><p><b> try{</b>
150、;</p><p> m_pConnection_ma->Execute((LPCSTR)szSQL,NULL,adExecuteNoRecords);</p><p> MessageBox("還原成功!",NULL,MB_ICONINFORMATION);</p><p><b> }</b></p&g
151、t;<p> catch (_com_error e)</p><p><b> {</b></p><p> MessageBox("還原出錯(cuò)!",NULL,MB_ICONSTOP);</p><p><b> }</b></p><p> 6、打?。海?/p>
152、動(dòng)態(tài)打印List控件,包括成績、學(xué)生信息內(nèi)容)</p><p><b> TRY</b></p><p><b> { </b></p><p> sSql.Format("DRIVER={%s};DSN="";FIRSTROWHASNAMES=1;READONLY=FALSE;CREA
153、TE_DB=\"%s\";DBQ=%s",</p><p> sDriver,sExcelFile,sExcelFile);</p><p> // 創(chuàng)建數(shù)據(jù)庫 (既Excel表格文件)</p><p> if (database.OpenEx(sSql,CDatabase::noOdbcDialog))</p>&
154、lt;p><b> {</b></p><p> //sSql = "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[grade]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [d
155、bo].[grade] GO";</p><p> sSql = "CREATE TABLE student (學(xué)號 TEXT,姓名 TEXT,性別 TEXT,出生日期 TEXT,總學(xué)分 NUMBER,班級名稱 TEXT,專業(yè)名稱 TEXT,所在系名 TEXT,手機(jī) TEXT,政治面貌 TEXT)";</p><p> database.ExecuteSQ
156、L(sSql);</p><p><b> // 插入數(shù)值</b></p><p> CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_LIST_Stu);</p><p> for (int i=0;i<pList->GetItemCount()-1;i++)</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告-- 學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告---學(xué)生成績管理
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)(學(xué)生成績管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計(jì)
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)——學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論