版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)庫應(yīng)用</b></p><p><b> 課程設(shè)計說明書</b></p><p> 班級: 姓名: </p><p> 設(shè)計題目: 學(xué)生成績管理系統(tǒng) </p><p> 設(shè)計
2、時間: 2011.12.31 至 2012.1.6 </p><p> 指導(dǎo)教師: </p><p> 評 語:______________________________ __</p><p> ___________________________________
3、______</p><p> _________________________________________</p><p> _________________________________________</p><p> _________________________________________</p><p>
4、 評閱成績:__ __評閱教師:__ ___</p><p><b> 目 錄</b></p><p> 華北科技學(xué)院學(xué)生成績管理系統(tǒng)1</p><p><b> 設(shè)計總說明1</b></p><p><b> 關(guān)鍵詞1</b></p>&l
5、t;p><b> 前 言2</b></p><p> 第1章 總體設(shè)計3</p><p> 1.1 系統(tǒng)結(jié)構(gòu)設(shè)計3</p><p> 第2章 數(shù)據(jù)庫設(shè)計與實施4</p><p> 2.1數(shù)據(jù)庫設(shè)計4</p><p> 2.1.1概念分析:4</p>&l
6、t;p> 2.1.2邏輯設(shè)計:5</p><p> 2.1.3物理設(shè)計:6</p><p> 2.2數(shù)據(jù)庫的實施8</p><p> 2.2.1創(chuàng)建數(shù)據(jù)庫8</p><p> 2.2.2創(chuàng)建表8</p><p> 第3章 前臺設(shè)計與實現(xiàn)11</p><p> 3.
7、1登錄模塊11</p><p> 3.1.1登錄11</p><p> 3.1.2注冊新用戶13</p><p> 3.2系統(tǒng)的詳細(xì)設(shè)計14</p><p> 3.2.1主界面設(shè)計14</p><p> 3.2.2菜單欄設(shè)計15</p><p> 3.2.3管理模塊設(shè)計
8、22</p><p><b> 總 結(jié)26</b></p><p> 參 考 文 獻(xiàn)27</p><p><b> 附 錄28</b></p><p><b> 學(xué)生成績管理系統(tǒng)</b></p><p><b> 設(shè)計總說明&l
9、t;/b></p><p> 高校學(xué)生的成績管理工作量大、繁雜,人工處理非常困難。學(xué)生成績管理系統(tǒng)借助于計算機(jī)強(qiáng)大的處理能力,大大減輕了管理人員的工作量,并提高了處理的準(zhǔn)確性。學(xué)生成績管理系統(tǒng)的開發(fā)運用,實現(xiàn)了學(xué)生成績管理的自動化,不僅把廣大教師從繁重的成績管理工作中解脫出來、把學(xué)校從傳統(tǒng)的成績管理模式中解放出來,而且對學(xué)生成績的判斷和整理也更合理、更公正,同時也給教師提供了一個準(zhǔn)確、清晰、輕松的成績管理
10、環(huán)境。</p><p> 本系統(tǒng)根據(jù)我校的實際情況開發(fā),用于對學(xué)校教師、學(xué)生、課程信息的管理,主要用于管理學(xué)生成績。登錄系統(tǒng)時需要訪問數(shù)據(jù)庫中的用戶信息,從而正確確定登錄身份。系統(tǒng)完成了日常的教育工作中對學(xué)生成績檔案的數(shù)字化管理。較為系統(tǒng)地對學(xué)生信息、成績信息和課程信息進(jìn)行管理。查詢、增添、修改、刪除都變的非常簡便,減少了管理的工作量。</p><p> 基于學(xué)校學(xué)生眾多,為了數(shù)據(jù)的安
11、全性,系統(tǒng)將學(xué)生數(shù)據(jù)保存在數(shù)據(jù)庫中,以Visual C++設(shè)計前臺對系統(tǒng)進(jìn)行設(shè)計。因為成績管理系統(tǒng)是一項很實用的系統(tǒng),所面對的數(shù)據(jù)量很大,所以我們要求系統(tǒng)能夠高效快速的處理這些數(shù)據(jù),并且要保證數(shù)據(jù)的正確性、相容性和安全性。C++作為前臺是將數(shù)據(jù)庫中的數(shù)據(jù)讀取出來,有助于用戶對這些數(shù)據(jù)進(jìn)行相應(yīng)的操作,使操作更方便,更符合用戶的要求。所以該系統(tǒng)應(yīng)該要有一個良好的界面,使用戶感覺很直觀,使用快捷,這就是用C++所要實現(xiàn)的功能。</p&g
12、t;<p><b> 關(guān)鍵詞</b></p><p> Visual C++ 6.0;SQL Server;MFC;學(xué)生成績管理</p><p><b> 前 言</b></p><p> 本課程設(shè)計是在學(xué)習(xí)了數(shù)據(jù)庫系統(tǒng)和C語言等有關(guān)課程后,通過實際的操作來熟悉數(shù)據(jù)庫和相關(guān)軟件的應(yīng)用,培養(yǎng)獨立的完成對
13、相關(guān)課題或者項目的分析能力、設(shè)計能力和調(diào)試能力。成績管理系統(tǒng)登錄須有數(shù)據(jù)庫中的賬號信息,如無用戶可及時注冊。系統(tǒng)可以對不同的項目進(jìn)行查詢、添加、修改、刪除等操作,方便學(xué)校的成績管理。</p><p> 課程設(shè)計,著重培養(yǎng)的是學(xué)生的自學(xué)能力,以及獨立分析互聯(lián)網(wǎng)上和圖書館里的各種資料,用來豐富自己的知識并且提高對SQL、VC++等軟件的實際操作能力。通過這次的課程設(shè)計,使我們對已經(jīng)學(xué)習(xí)過的數(shù)據(jù)庫課程的進(jìn)一步的掌握,
14、對知識進(jìn)行最大程度的消化融匯。因此這次的課程設(shè)計對我們來說具有非常重要的作用:為以后學(xué)習(xí)工作做必要的準(zhǔn)備和實踐,提高自身對數(shù)據(jù)庫開發(fā)的能力。</p><p><b> 第1章 總體設(shè)計</b></p><p><b> 系統(tǒng)結(jié)構(gòu)設(shè)計</b></p><p> 系統(tǒng)登錄后進(jìn)入主界面,主界面菜單欄進(jìn)行各種查詢,而主界面按
15、鈕直接進(jìn)行相關(guān)管理。有添加、刪除和修改信息功能。功能設(shè)計圖如圖1.1.1.所示。</p><p> 圖1.1.1 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 第2章 數(shù)據(jù)庫設(shè)計與實施</p><p><b> 2.1數(shù)據(jù)庫設(shè)計</b></p><p> 2.1.1概念分析:</p><p> 概念
16、結(jié)構(gòu)設(shè)計階段是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵,它通過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型</p><p> 設(shè)計成績管理數(shù)據(jù)庫包括系別、教研室、班級、教師、學(xué)生、課程、成績七個關(guān)系。</p><p> E-R圖2.1.1和圖2.1.2所示。</p><p> 圖2.1.1 實體及其屬性圖</p><p> 圖2.
17、1.2完整的實體-聯(lián)系圖</p><p> 2.1.2邏輯設(shè)計:</p><p> 邏輯結(jié)構(gòu)是獨立于任何一種數(shù)據(jù)模型的信息結(jié)構(gòu)。邏輯結(jié)構(gòu)的任務(wù)是把概念結(jié)構(gòu)設(shè)計階段設(shè)計好的基本E-R圖轉(zhuǎn)化為宜選用的DBMS所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu),并對其進(jìn)行優(yōu)化。</p><p> 設(shè)計學(xué)生成績管理數(shù)據(jù)庫,包括系別、教研室、班級、教師、學(xué)生、課程、成績七個關(guān)系,考慮到數(shù)
18、據(jù)庫完整性,其關(guān)系模式中對每個實體定義的屬性如下:</p><p><b> 系別表</b></p><p> 系別:(系號,系名)</p><p><b> 教研室表</b></p><p> 教研室:(教研室號,教研室名)</p><p><b> 班
19、級表</b></p><p> 班級:(班號,班名,系號)</p><p><b> 教師表</b></p><p> 教師:(教師號,姓名,教研室號)</p><p><b> 學(xué)生表</b></p><p> 學(xué)生:(學(xué)號,姓名,性別,班號)<
20、/p><p><b> 課程表</b></p><p> 課程:(課程號,課程名,教師號,學(xué)時,學(xué)分)</p><p><b> 成績表</b></p><p> 成績:(學(xué)號,課程號,成績)</p><p> 為了存放前臺用戶信息再添加一用戶表</p>
21、<p><b> 用戶表</b></p><p> 用戶:(用戶名,密碼)</p><p> 2.1.3物理設(shè)計:</p><p> 定義每個表的數(shù)據(jù)類型以及字段限制,使數(shù)據(jù)庫達(dá)到一定的完整性。每個表的物理設(shè)計如下:</p><p> 表2.1.1 系別表</p><p>
22、表2.1.1 教研室表</p><p> 表2.1.3 班級表</p><p><b> 表2.1.4教師表</b></p><p> 表2.1.5學(xué)生信息表</p><p><b> 表2.1.6課程表</b></p><p><b> 表2.1.7成績
23、表</b></p><p><b> 表2.1.8用戶表</b></p><p><b> 2.2數(shù)據(jù)庫的實施</b></p><p> 2.2.1創(chuàng)建數(shù)據(jù)庫</p><p> 在D盤建立文件夾“學(xué)生成績”,在SQL Server查詢分析器中鍵入以下代碼完成數(shù)據(jù)庫的建立。<
24、/p><p> CREATE DATABASE 學(xué)生成績數(shù)據(jù)庫</p><p> ON PRIMARY</p><p> ( NAME= '學(xué)生成績_data',</p><p> FILENAME='D:\學(xué)生成績\學(xué)生成績dat.mdf',</p><p> SIZE=5 ,
25、 MAXSIZE=100 , FILEGROWTH=10%)</p><p><b> LOG ON</b></p><p> (NAME= '學(xué)生成績_log',</p><p> FILENAME='D:\學(xué)生成績\學(xué)生成績log.ldf',</p><p> SIZE=5 ,
26、 MAXSIZE=20 , FILEGROWTH=20%)</p><p><b> 2.2.2創(chuàng)建表</b></p><p> 同樣在查詢分析器中鍵入如下代碼完成表的創(chuàng)建。</p><p> use 學(xué)生成績數(shù)據(jù)庫</p><p><b> go</b></p><p&
27、gt; create table 系別(</p><p> 系號 char(2) not null primary key,</p><p> 系名 char(20)not null)</p><p> create table 班級(</p><p> 班號 char(10) not null primary key,</p
28、><p> 班名 char(14)not null,</p><p> 系號 char(10)not null)</p><p> create table 教研室(</p><p> 教研室號 char(10) not null primary key,</p><p> 教研室名 char(20)not nu
29、ll,</p><p> 系號 char(10)not null)</p><p> create table 學(xué)生(</p><p> 學(xué)號 char(14) not null primary key,</p><p> 姓名 char(6)not null,</p><p> 性別 char(2)not
30、null,</p><p> 班號 char(10)not null)</p><p> create table 教師(</p><p> 教師號 char(5) not null primary key,</p><p> 姓名 char(6)not null,</p><p> 教研室號 char(4)
31、not null)</p><p> create table 課程(</p><p> 課程號 char(5) not null primary key,</p><p> 課程名 char(20)not null,</p><p> 教師號 char(5)not null,</p><p> 學(xué)時 int
32、 not null,</p><p> 學(xué)分 char(3)not null)</p><p> create table 成績(</p><p> 學(xué)號 char(14) not null,</p><p> 課程號 char(5)not null,</p><p> 成績 char(3)not null&
33、lt;/p><p> primary key(學(xué)號,課程號))</p><p> create table 用戶(</p><p> 用戶名 char(20) not null primary key,</p><p> 密碼 char(20) not null)</p><p> 第3章 前臺設(shè)計與實現(xiàn)<
34、/p><p><b> 3.1登錄模塊</b></p><p><b> 3.1.1登錄</b></p><p> 運行程序首先要通過登錄,登錄的用戶名和密碼存于數(shù)據(jù)庫中用戶表中。如無用戶可注冊新用戶,從而進(jìn)入程序。當(dāng)用戶名與密碼不匹配時提示錯誤。</p><p> 為了使系統(tǒng)美觀,可通過設(shè)置背
35、景圖片來改變系統(tǒng)樣式。</p><p> 實現(xiàn)方法如下:引入一張要加入的圖片,在要添加圖片的對話框類向?qū)е蠱essages中選擇WM_PAINT對其編輯,在OnPaint()函數(shù)中加入如下代碼:</p><p> CRect rect;</p><p> GetClientRect(&rect);</p><p> CDC
36、 dcMem;</p><p> dcMem.CreateCompatibleDC(&dc);</p><p> CBitmap bmpBackground;</p><p> bmpBackground.LoadBitmap(IDB_BITMAP1); </p><p> //IDB_BITMAP1是對應(yīng)圖的ID<
37、/p><p> BITMAP bitmap;</p><p> bmpBackground.GetBitmap(&bitmap);</p><p> CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); </p><p> dc.StretchBlt(0,0,rect
38、.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);</p><p> 這樣設(shè)置后靜態(tài)文本框就顯得難看了,于是再在要添加圖片的對話框類向?qū)е蠱essages中選擇WM_CTRCOLOR對其編輯,在OnCtlColor()函數(shù)中加入如下代碼:</p><p> if(nCtlColor
39、==CTLCOLOR_STATIC)</p><p> //對所有的STATIC控件的屬性進(jìn)行設(shè)定</p><p><b> {</b></p><p> pDC->SetBkMode(TRANSPARENT);</p><p> return (HBRUSH)::GetStockObject(NULL_B
40、RUSH); </p><p><b> }</b></p><p> 如果要使編輯框透明,則添加如下代碼,這樣編輯框內(nèi)容會重疊,可以選擇性的設(shè)置。</p><p> if(nCtlColor==CTLCOLOR_EDIT)</p><p> //對所有的Edit控件的屬性進(jìn)行設(shè)定</p><
41、p><b> {</b></p><p> pDC->SetBkMode(TRANSPARENT);</p><p> return (HBRUSH)::GetStockObject(NULL_BRUSH); </p><p><b> }</b></p><p> 圖3.1.
42、1 登錄界面</p><p> 登錄界面的用戶名通過數(shù)據(jù)庫訪問代碼如下:</p><p> CDatabase database;</p><p> database.Open("華北科技學(xué)院成績管理",FALSE,FALSE,"ODBC;",FALSE);</p><p> CRecordse
43、t rs(&database); </p><p> UpdateData(TRUE);</p><p> CString str;</p><p> str.Format("select * from 用戶 where 用戶名='%s'",m_name);</p><p> CRecord
44、set rs1(&database);</p><p> rs1.Open(AFX_DB_USE_DEFAULT_TYPE,str);</p><p> if(rs1.IsEOF())</p><p><b> {</b></p><p> MessageBox("用戶名輸入錯誤!")
45、;</p><p><b> return;</b></p><p><b> }</b></p><p> str.Format("select * from 用戶 where 用戶名='%s'and 密碼='%s'",m_name,m_password);<
46、;/p><p> rs.Open(AFX_DB_USE_DEFAULT_TYPE,str);</p><p> if(rs.GetRecordCount()==0)</p><p><b> {</b></p><p> MessageBox("密碼輸入錯誤!");</p><
47、;p><b> }</b></p><p><b> else</b></p><p><b> { </b></p><p> CMainDlg dlg;</p><p> dlg.DoModal();//進(jìn)入主界面</p><p&
48、gt; CNcistSSMDlg::OnCancel();</p><p><b> }</b></p><p> database.Close();</p><p> 3.1.2注冊新用戶</p><p> 注冊用戶界面如圖所示,新注冊的賬戶存于數(shù)據(jù)庫中的用戶表中。通過相關(guān)代碼設(shè)置用戶名和密碼都不為空,并且彈
49、出提示框。詳細(xì)代碼見附錄。</p><p> 圖3.1.2 注冊新用戶</p><p> 圖3.1.3 注冊錯誤提示</p><p> 3.2系統(tǒng)的詳細(xì)設(shè)計</p><p> 3.2.1主界面設(shè)計</p><p> 主界面添加了菜單欄,用于各種信息查詢操作和軟件幫助信息。通過引入圖片設(shè)置對話框背景圖片。還可以
50、設(shè)置靜態(tài)文本組件讓其顯示時間。主界面如圖3.2.1所示。</p><p> 圖3.2.1 系統(tǒng)主界面</p><p> 顯示時間方法:添加兩個靜態(tài)文本組件,設(shè)置它們大小相同并放置在同一水平位置,第一個文本標(biāo)題為“時間:”,第二個不設(shè)置標(biāo)題,改變其ID為:IDC_STATIC_TIME,然后添加OnTimer()函數(shù),代碼設(shè)置如下:</p><p> void
51、CMainDlg::OnTimer(UINT nIDEvent) </p><p><b> {</b></p><p> CDialog::OnTimer(nIDEvent);</p><p> CString str;</p><p> CTime theTime = CTime::GetCurrentTim
52、e(); str.Format("%02d:%02d:%02d",theTime.GetHour(),theTime.GetMinute(),theTime.GetSecond());</p><p> SetDlgItemText(IDC_STATIC_TIME,str);</p><p> CDialog::OnTimer(nIDEvent);</p>
53、;<p><b> }</b></p><p> 適當(dāng)設(shè)置文本框字體顏色、文本顏色和組件背景色就可以做到美觀的顯示時間了。</p><p> HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);</p><p> if(nCtlColor==CTLCOLOR_STA
54、TIC)</p><p><b> {</b></p><p> pDC->SetTextColor(RGB(0,0,0));</p><p> pDC->SetBkColor(RGB(7,255,246));//文字背景色</p><p> HBRUSH b=CreateSolidBrush(RGB
55、(7,255,246));//控件背景色</p><p><b> return b;</b></p><p><b> }</b></p><p> return hbr;</p><p> 3.2.2菜單欄設(shè)計</p><p> 菜單欄前三個菜單都為查詢菜單,通
56、過SQL查詢語句顯示查詢結(jié)果。初始化狀態(tài)為顯示全部結(jié)果,若記錄太多可按主碼值查詢,若要返回初始狀態(tài),點擊刷新按鈕即可??梢詾槊總€窗口設(shè)置適當(dāng)?shù)膱D片背景。</p><p><b> (1) 院系查詢</b></p><p> 院系查詢菜單提供系別、教研室和班級的詳細(xì)信息。單擊相應(yīng)菜單實現(xiàn)對應(yīng)的查詢功能。</p><p> 圖3.2.2院系查
57、詢菜單</p><p> 圖3.2.3系別信息查詢界面</p><p> 圖3.2.4教研室信息查詢界面</p><p> 圖3.2.5班級信息查詢界面</p><p><b> (2)信息查詢</b></p><p> 信息查詢菜單提供教師信息、學(xué)生信息和課程信息的詳細(xì)查詢。單擊相應(yīng)菜
58、單實現(xiàn)對應(yīng)的查詢功能。</p><p> 圖3.2.6信息查詢菜單界面</p><p> 圖3.2.7教師信息查詢界面</p><p> 圖3.2.7學(xué)生信息查詢界面</p><p> 圖3.2.8課程信息查詢界面</p><p><b> (3)成績查詢</b></p>
59、<p> 成績查詢菜單提供按不同方式對學(xué)生成績的詳細(xì)查詢。單擊相應(yīng)菜單實現(xiàn)對應(yīng)的查詢功能。</p><p> 圖3.2.9成績查詢菜單</p><p> 圖3.2.10按班級查詢成績界面</p><p> 圖3.2.11按學(xué)號查詢成績界面</p><p> 圖3.2.12 按課程查詢成績界面</p><
60、p> 3.2.3管理模塊設(shè)計</p><p> 管理模塊在主界面主面板上,用于對各個數(shù)據(jù)表的更新操作。數(shù)據(jù)操作部允許控制操作,若有空值則提示錯誤。</p><p><b> 系別管理</b></p><p> 系別管理可以通過系號來確定系別,從而對系別信息進(jìn)行操作。不允許有空值操作。</p><p> 圖
61、3.2.13 系別管理界面</p><p><b> 教研室管理</b></p><p> 教研室管理通過教研室號來確定教研室,從而對教研室信息進(jìn)行操作。不允許有空值操作。</p><p> 圖3.2.15 教研室管理界面</p><p><b> 班級管理</b></p>&
62、lt;p> 班級管理可以通過班號來確定班級,從而對班級信息進(jìn)行操作。不允許有空值操作。</p><p> 圖3.2.16 班級管理界面</p><p><b> 教師管理</b></p><p> 教師管理通過教師號來確定教師,從而對教師信息進(jìn)行操作。</p><p> 圖3.2.17 教師管理界面<
63、;/p><p><b> 學(xué)生管理</b></p><p> 學(xué)生管理可根據(jù)學(xué)號唯一確定學(xué)生,從而對信息進(jìn)行添加、刪除、修改操作。</p><p> 圖3.2.18 學(xué)生管理界面</p><p><b> 課程管理</b></p><p> 課程管理通過課程號來確定課程
64、信息,從而對課程信息進(jìn)行添加、刪除、修改操作。</p><p> 圖3.2.18課程管理界面</p><p><b> 成績管理</b></p><p> 成績管理通過學(xué)號與課程確定某學(xué)生的某門課成績并可按照學(xué)號、課程號來修改成績。</p><p> 圖3.2.19成績管理</p><p>
65、;<b> 總 結(jié)</b></p><p> 通過一周的時間終于完成了華北科技學(xué)院學(xué)生成績管理系統(tǒng)的設(shè)計開發(fā),系統(tǒng)的基本的功能已經(jīng)實現(xiàn)。個人覺得數(shù)據(jù)庫設(shè)計比較完美,查詢、修改都很方便。系統(tǒng)本身也不僅僅局限于成績的管理,更有教師、課程等的管理。比較完善的實現(xiàn)了學(xué)生成績的數(shù)字化管理。</p><p> 課程設(shè)計之前擔(dān)心自己想象的系統(tǒng)無法實現(xiàn)預(yù)期效果,但是在不斷的努力
66、和勇敢的嘗試下終于如期待中的那樣完成了任務(wù)。總結(jié)經(jīng)驗就是要明白自己做的是什么,要對自己的系統(tǒng)有一個清晰的概念,這樣設(shè)計起來才會比較方便。由于時間緊迫,系統(tǒng)功能尚有欠缺,但我已經(jīng)覺得挺滿意了。有些功能不是不能實現(xiàn),而是限于時間緊迫。我想課程設(shè)計雖然結(jié)束了,但是我的系統(tǒng)沒有結(jié)束。我會在以后的生活中繼續(xù)完善它。以前C++課程設(shè)計做的很不好,功能單一。當(dāng)然那時候?qū)++語言本身不是很精通。能力是一個不斷提高的過程,不能急于求成。</p&g
67、t;<p> 在這一周做課程設(shè)計中,收獲了很多。因為這次課程設(shè)計設(shè)計的知識面非常廣。從數(shù)據(jù)庫方面來說,涉及到數(shù)據(jù)庫設(shè)計的五個步驟:需求分析、概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計和運行調(diào)試。數(shù)據(jù)庫的設(shè)計嚴(yán)重影響著系統(tǒng)的功能,如果數(shù)據(jù)庫設(shè)計不夠合理,前臺操作就不能正常運行。在運行過程中我發(fā)現(xiàn)數(shù)據(jù)庫的設(shè)計比較合理,查詢時特別方便。這為以后的開發(fā)積累了很寶貴的經(jīng)驗。從MFC編程方面來說又對MFC編程有了進(jìn)一步的提高,讓系統(tǒng)不
68、再單調(diào),通過有關(guān)設(shè)置使系統(tǒng)更為個性化。通過 MFC 程序來訪問并修改數(shù)據(jù)庫,從中體會到了編程的樂趣。看到自己開發(fā)的系統(tǒng)實現(xiàn)了一個又一個功能,會有一種特別快樂的感覺。學(xué)以致用,這才是學(xué)習(xí)的目的。</p><p> 當(dāng)然,系統(tǒng)的開發(fā)離不開好的資料和同學(xué)的交流。在這次課程設(shè)計中深深感受到了同學(xué)之間交流合作的重要性。交流不但可以發(fā)現(xiàn)新的問題,提高解決問題的效率,而且可以快速的學(xué)習(xí)到新的知識。</p>&l
69、t;p> 最后感謝這次課程設(shè)計中給予我?guī)椭睦蠋熀屯瑢W(xué),是你們的幫助才使我的系統(tǒng)有了突破性的進(jìn)展。</p><p><b> 參 考 文 獻(xiàn)</b></p><p> [1] 王瑞,于速. Visual C++數(shù)據(jù)庫系統(tǒng)開發(fā)完全手冊 [M]. 北京:人民郵電出版社, 2006.</p><p> [2] 朱景德,陳品華.SQL S
70、erver數(shù)據(jù)庫系統(tǒng)技術(shù) [M]. 陜西:西安電子科技大學(xué)出版社, 2008.</p><p><b> 附 錄</b></p><p><b> 源程序清單</b></p><p><b> 1.登錄控制:</b></p><p> void CNcistSSMDlg
71、::OnEnter() </p><p><b> {</b></p><p> CDatabase database;</p><p> database.Open("華北科技學(xué)院成績管理",FALSE,FALSE,"ODBC;",FALSE);</p><p> CRe
72、cordset rs(&database); </p><p> UpdateData(TRUE);</p><p> CString str;</p><p> str.Format("select * from 用戶 where 用戶名='%s'",m_name);</p><p> C
73、Recordset rs1(&database);</p><p> rs1.Open(AFX_DB_USE_DEFAULT_TYPE,str);</p><p> if(rs1.IsEOF())</p><p><b> {</b></p><p> MessageBox("用戶名輸入錯誤!&
74、quot;);</p><p><b> return;</b></p><p><b> }</b></p><p> str.Format("select * from 用戶 where 用戶名='%s'and 密碼='%s'",m_name,m_passwor
75、d);</p><p> rs.Open(AFX_DB_USE_DEFAULT_TYPE,str);</p><p> if(rs.GetRecordCount()==0)</p><p><b> {</b></p><p> MessageBox("密碼輸入錯誤!");</p>
76、;<p><b> }</b></p><p><b> else</b></p><p><b> { </b></p><p> CMainDlg dlg;</p><p> dlg.DoModal();//進(jìn)入主界面</p>
77、<p> CNcistSSMDlg::OnCancel();</p><p><b> }</b></p><p> database.Close();</p><p><b> }</b></p><p> 2.列表框內(nèi)容顯示(以課程管理為例):</p><
78、;p> BOOL CCouMangDlg::OnInitDialog() </p><p><b> {</b></p><p> CDialog::OnInitDialog();</p><p> // TODO: Add extra initialization here</p><p> CData
79、base database;</p><p> database.Open("華北科技學(xué)院成績管理",FALSE,FALSE,"ODBC;",FALSE);</p><p> m_ListCouMang.SetExtendedStyle(LVS_EX_FLATSB</p><p> |LVS_EX_FULLROWSELE
80、CT</p><p> |LVS_EX_HEADERDRAGDROP</p><p> |LVS_EX_ONECLICKACTIVATE</p><p> |LVS_EX_GRIDLINES);</p><p> m_ListCouMang.InsertColumn(0,"課程號", LVCFMT_LEFT, 60
81、);</p><p> m_ListCouMang.InsertColumn(1,"課程名", LVCFMT_LEFT, 160);</p><p> m_ListCouMang.InsertColumn(2,"教師號", LVCFMT_LEFT, 80);</p><p> m_ListCouMang.InsertCo
82、lumn(3,"學(xué)時", LVCFMT_LEFT, 40);</p><p> m_ListCouMang.InsertColumn(4,"學(xué)分", LVCFMT_LEFT, 40);</p><p><b> show();</b></p><p> database.Close();</p
83、><p> return TRUE; // return TRUE unless you set the focus to a control</p><p> // EXCEPTION: OCX Property Pages should return FALSE</p><p><b> }</b></p><p&g
84、t; void CCouMangDlg::show() </p><p><b> {</b></p><p> m_ListCouMang.DeleteAllItems();</p><p> CDatabase database;</p><p> database.Open("華北科技學(xué)院成績管
85、理",FALSE,FALSE,"ODBC;",FALSE);</p><p> CRecordset set(&database);</p><p> set.Open(CRecordset::dynaset,_T("select * from 課程"));</p><p><b> int
86、i=0;</b></p><p> while(!set.IsEOF())</p><p><b> {</b></p><p> m_ListCouMang.InsertItem(i,"");</p><p> CString str1,str2,str3,str4,str5;&
87、lt;/p><p> set.GetFieldValue("課程號",str1);</p><p> m_ListCouMang.SetItemText(i,0,str1);</p><p> set.GetFieldValue("課程名",str2);</p><p> m_ListCouMang
88、.SetItemText(i,1,str2);</p><p> set.GetFieldValue("教師號",str3);</p><p> m_ListCouMang.SetItemText(i,2,str3);</p><p> set.GetFieldValue("學(xué)時",str4);</p>&
89、lt;p> m_ListCouMang.SetItemText(i,3,str4);</p><p> set.GetFieldValue("學(xué)分",str5);</p><p> m_ListCouMang.SetItemText(i,4,str5);</p><p> set.MoveNext();</p><
90、;p><b> i++;</b></p><p><b> }</b></p><p> set.Close();</p><p><b> }</b></p><p><b> 3.添加記錄:</b></p><p&g
91、t; UpdateData(true);</p><p> // 確定所有輸入有效</p><p> CString sWarning="";</p><p> if ( ""==m_CouNo) sWarning=_T("課程號");</p><p> else if (
92、 ""==m_CouName) sWarning=_T("課程名");</p><p> else if ( ""==m_TeaNO) sWarning=_T("教師號");</p><p> else if ( ""==m_xueshi) sWarning=_T("學(xué)時&qu
93、ot;);</p><p> else if ( ""==m_xuefen) sWarning=_T("學(xué)分");</p><p> if ( ""!=sWarning ) </p><p><b> {</b></p><p> sWarning +=
94、 _T("不能為空");</p><p> AfxMessageBox(sWarning, MB_ICONEXCLAMATION);</p><p><b> return;</b></p><p><b> }</b></p><p> CDatabase databa
95、se; </p><p> database.Open("華北科技學(xué)院成績管理");</p><p> CString sql;</p><p> CString item;</p><p> sql.Format(</p><p> "insert into 課程(課程號,課程
96、名,教師號,學(xué)時,學(xué)分) \</p><p> values('"+m_CouNo+"','"+m_CouName+"','"+m_TeaNO+"','"+m_xueshi+"','"+m_xuefen+"')");<
97、/p><p><b> try{</b></p><p> database.ExecuteSQL(sql);//執(zhí)行sql語句</p><p> MessageBox("添加成功!");</p><p><b> }</b></p><p> ca
98、tch(CDBException e)</p><p><b> {</b></p><p> MessageBox("添加失??!");</p><p><b> return;</b></p><p><b> }</b></p>&
99、lt;p> database.Close();</p><p><b> show();</b></p><p> UpdateData(true);</p><p><b> 4.修改記錄:</b></p><p> UpdateData(true);</p><
100、;p> CString str,sWarning="";</p><p> CDatabase database;</p><p> //CString sWarning="";</p><p> if ( ""==m_CouNo) sWarning=_T("課程號");&
101、lt;/p><p> else if ( ""==m_CouName) sWarning=_T("課程名");</p><p> else if ( ""==m_TeaNO) sWarning=_T("教師號");</p><p> else if ( ""==m_
102、xueshi) sWarning=_T("學(xué)時");</p><p> else if ( ""==m_xuefen) sWarning=_T("學(xué)分");</p><p> if ( ""!=sWarning ) </p><p><b> {</b><
103、;/p><p> sWarning += _T("不能為空");</p><p> AfxMessageBox(sWarning, MB_ICONEXCLAMATION);</p><p><b> return;</b></p><p><b> }</b></p&g
104、t;<p> database.Open("華北科技學(xué)院成績管理");</p><p><b> try{</b></p><p> str.Format("update 課程 set 課程名='"+m_CouName+"' where (課程號='"+m_CouN
105、o+"')");</p><p> database.ExecuteSQL(str);</p><p> str.Format("update 課程 set 教師號='"+m_TeaNO+"' where (課程號='"+m_CouNo+"')");</p>
106、;<p> database.ExecuteSQL(str);</p><p> str.Format("update 課程 set 學(xué)時='"+m_xueshi+"' where (課程號='"+m_CouNo+"')");</p><p> database.ExecuteS
107、QL(str);</p><p> str.Format("update 課程 set 學(xué)分='"+m_xuefen+"' where (課程號='"+m_CouNo+"')");</p><p> database.ExecuteSQL(str);</p><p>
108、AfxMessageBox("修改成功!");</p><p><b> }</b></p><p> catch(CDBException e1)</p><p><b> {</b></p><p> AfxMessageBox("修改失敗!");
109、</p><p><b> }</b></p><p> database.Close();</p><p><b> show();</b></p><p><b> 5.刪除記錄:</b></p><p> UpdateData(tr
110、ue);</p><p> CString str,sWarning="";</p><p> CDatabase database;</p><p> //CString sWarning="";</p><p> if ( ""==m_CouNo) sWarning=_T
111、("課程號");</p><p> if ( ""!=sWarning ) </p><p><b> {</b></p><p> sWarning += _T("不能為空");</p><p> AfxMessageBox(sWarning, MB_
112、ICONEXCLAMATION);</p><p><b> return;</b></p><p><b> }</b></p><p> database.Open("華北科技學(xué)院成績管理");</p><p><b> try{</b><
113、/p><p> str.Format("delete from 課程 where (課程號='"+m_CouNo+"')");</p><p> database.ExecuteSQL(str);</p><p> AfxMessageBox("刪除成功!");</p>&l
114、t;p><b> }</b></p><p> catch(CDBException e1)</p><p><b> {</b></p><p> AfxMessageBox("刪除失敗!");</p><p><b> }</b>&
115、lt;/p><p> database.Close();</p><p><b> show();</b></p><p><b> 5.查詢記錄:</b></p><p> UpdateData(TRUE);</p><p> // TODO: Add your co
116、ntrol notification handler code here</p><p> CDatabase database;</p><p> database.Open("華北科技學(xué)院成績管理",FALSE,FALSE,"ODBC;",FALSE);</p><p><b> {</b>&l
117、t;/p><p> CString str;</p><p> CRecordset set(&database);</p><p> if(m_CKCouNo.IsEmpty())</p><p><b> {</b></p><p> MessageBox("請輸入課程
118、號");</p><p><b> return;</b></p><p><b> }</b></p><p> m_ListCouMes.DeleteAllItems();</p><p> set.Open(CRecordset::dynaset,_T(</p>
119、<p> "select 課程.課程號,課程.課程名,教師.教師姓名,課程.學(xué)時,課程.學(xué)分\</p><p> from 課程,教師 where 課程.教師號=教師.教師號 \</p><p> and 課程.課程號='"+m_CKCouNo+"'"));</p><p><b>
120、 int i=0;</b></p><p> while(!set.IsEOF())</p><p><b> {</b></p><p> m_ListCouMes.InsertItem(i,"");</p><p> CString str1,str2,str3,str4,s
121、tr5;</p><p> set.GetFieldValue("課程號",str1);</p><p> m_ListCouMes.SetItemText(i,0,str1);</p><p> set.GetFieldValue("課程名",str2);</p><p> m_ListCou
122、Mes.SetItemText(i,1,str2);</p><p> set.GetFieldValue("教師姓名",str3);</p><p> m_ListCouMes.SetItemText(i,2,str3);</p><p> set.GetFieldValue("學(xué)時",str4);</p>
123、<p> m_ListCouMes.SetItemText(i,3,str4);</p><p> set.GetFieldValue("學(xué)分",str5);</p><p> m_ListCouMes.SetItemText(i,4,str5);</p><p> set.MoveNext();</p>&l
124、t;p><b> i++;</b></p><p><b> }</b></p><p> set.Close();</p><p><b> }</b></p><p> UpdateData(TRUE);</p><p> data
125、base.Close();</p><p><b> 6.添加背景:</b></p><p> void CNcistSSMDlg::OnPaint() </p><p><b> {</b></p><p> CPaintDC dc(this); // device context for
126、 painting</p><p> CRect rect;</p><p> GetClientRect(&rect);</p><p> CDC dcMem;</p><p> dcMem.CreateCompatibleDC(&dc);</p><p> CBitmap bmpBa
127、ckground;</p><p> bmpBackground.LoadBitmap(IDB_denglu); </p><p> BITMAP bitmap;</p><p> bmpBackground.GetBitmap(&bitmap);</p><p> CBitmap *pbmpOld=dcMem.Sele
128、ctObject(&bmpBackground); </p><p> dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);</p><p><b> }</b></p><p> 7
129、.靜態(tài)文本和編輯框透明:</p><p> HBRUSH CNcistSSMDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) </p><p><b> {</b></p><p> HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlC
130、olor);</p><p> // TODO: Change any attributes of the DC here</p><p> if(nCtlColor==CTLCOLOR_STATIC)</p><p> //對所有的STATIC控件的屬性進(jìn)行設(shè)定</p><p><b> {</b></p
131、><p> pDC->SetBkMode(TRANSPARENT);</p><p> return (HBRUSH)::GetStockObject(NULL_BRUSH); </p><p><b> }</b></p><p> if(nCtlColor==CTLCOLOR_EDIT)</p>
132、<p> //對所有的Edit控件的屬性進(jìn)行設(shè)定</p><p><b> {</b></p><p> pDC->SetBkMode(TRANSPARENT);</p><p> return (HBRUSH)::GetStockObject(NULL_BRUSH); </p><p>&l
133、t;b> }</b></p><p> // TODO: Return a different brush if the default is not desired</p><p> return hbr;</p><p><b> }</b></p><p> 8.數(shù)據(jù)庫連接的類Ncist
134、DBset.cpp:</p><p> #include "stdafx.h"</p><p> #include "NcistSSM.h"</p><p> #include "NcistDBset.h"</p><p> #ifdef _DEBUG</p>
135、<p> #define new DEBUG_NEW</p><p> #undef THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p><p><b> #endif</b></p><p> ////////////////////
溫馨提示
- 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ù)庫應(yīng)用課程設(shè)計說明書---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫應(yīng)用課程設(shè)計說明書---學(xué)生成績管理系統(tǒng) (2)
- 數(shù)據(jù)庫應(yīng)用課程設(shè)計說明書---學(xué)生成績管理系統(tǒng).doc
- sql數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)設(shè)計說明
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(學(xué)生成績管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計---學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
- 學(xué)生成績管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫學(xué)生成績管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--- 學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計----學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)-數(shù)據(jù)庫課程設(shè)計
評論
0/150
提交評論