2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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>  參 考 文 獻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)借助于計算機強大的處理能力,大大減輕了管理人員的工作量,并提高了處理的準(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é)生信息、成績信息和課程信息進行管理。查詢、增添、修改、刪除都變的非常簡便,減少了管理的工作量。</p><p>  基于學(xué)校學(xué)生眾多,為了數(shù)據(jù)的安

11、全性,系統(tǒng)將學(xué)生數(shù)據(jù)保存在數(shù)據(jù)庫中,以Visual C++設(shè)計前臺對系統(tǒng)進行設(shè)計。因為成績管理系統(tǒng)是一項很實用的系統(tǒng),所面對的數(shù)據(jù)量很大,所以我們要求系統(tǒng)能夠高效快速的處理這些數(shù)據(jù),并且要保證數(shù)據(jù)的正確性、相容性和安全性。C++作為前臺是將數(shù)據(jù)庫中的數(shù)據(jù)讀取出來,有助于用戶對這些數(shù)據(jù)進行相應(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)可以對不同的項目進行查詢、添加、修改、刪除等操作,方便學(xué)校的成績管理。</p><p>  課程設(shè)計,著重培養(yǎng)的是學(xué)生的自學(xué)能力,以及獨立分析互聯(lián)網(wǎng)上和圖書館里的各種資料,用來豐富自己的知識并且提高對SQL、VC++等軟件的實際操作能力。通過這次的課程設(shè)計,使我們對已經(jīng)學(xué)習(xí)過的數(shù)據(jù)庫課程的進一步的掌握,

14、對知識進行最大程度的消化融匯。因此這次的課程設(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)登錄后進入主界面,主界面菜單欄進行各種查詢,而主界面按

15、鈕直接進行相關(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)鍵,它通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體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),并對其進行優(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ù)庫達到一定的完整性。每個表的物理設(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ù)庫中用戶表中。如無用戶可注冊新用戶,從而進入程序。當(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控件的屬性進行設(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控件的屬性進行設(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();//進入主界面</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>  系別管理可以通過系號來確定系別,從而對系別信息進行操作。不允許有空值操作。</p><p>  圖

61、3.2.13 系別管理界面</p><p><b>  教研室管理</b></p><p>  教研室管理通過教研室號來確定教研室,從而對教研室信息進行操作。不允許有空值操作。</p><p>  圖3.2.15 教研室管理界面</p><p><b>  班級管理</b></p>&

62、lt;p>  班級管理可以通過班號來確定班級,從而對班級信息進行操作。不允許有空值操作。</p><p>  圖3.2.16 班級管理界面</p><p><b>  教師管理</b></p><p>  教師管理通過教師號來確定教師,從而對教師信息進行操作。</p><p>  圖3.2.17 教師管理界面<

63、;/p><p><b>  學(xué)生管理</b></p><p>  學(xué)生管理可根據(jù)學(xué)號唯一確定學(xué)生,從而對信息進行添加、刪除、修改操作。</p><p>  圖3.2.18 學(xué)生管理界面</p><p><b>  課程管理</b></p><p>  課程管理通過課程號來確定課程

64、信息,從而對課程信息進行添加、刪除、修改操作。</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編程有了進一步的提高,讓系統(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)有了突破性的進展。</p><p><b>  參 考 文 獻</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();//進入主界面</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("修改失?。?quot;);

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控件的屬性進行設(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控件的屬性進行設(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論