數(shù)據(jù)庫(kù)課程設(shè)計(jì)---小型記賬系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課 程 設(shè) 計(jì)</b></p><p>  課程名稱(chēng)_ 數(shù)據(jù)庫(kù)課程設(shè)計(jì)___</p><p>  題目名稱(chēng)____小型記賬系統(tǒng)______</p><p>  學(xué)生學(xué)院______</p><p>  專(zhuān)業(yè)班級(jí)___ _</p><p>  學(xué) 號(hào)__

2、________</p><p>  學(xué)生姓名___________</p><p>  指導(dǎo)教師_________</p><p>  2011 年 6 月</p><p><b>  目錄</b></p><p><b>  相關(guān)技術(shù)介紹2</b></p>

3、<p>  1.1 Visual Studio 2008的簡(jiǎn)介2</p><p>  1.2 Microsoft Access 2007的簡(jiǎn)介2</p><p>  1.3 C/S結(jié)構(gòu)的簡(jiǎn)介2</p><p><b>  需求分析3</b></p><p><b>  2.1需求簡(jiǎn)介3&

4、lt;/b></p><p><b>  2.2數(shù)據(jù)字典3</b></p><p>  2.2.1數(shù)據(jù)項(xiàng)3</p><p>  2.2.2數(shù)據(jù)結(jié)構(gòu)4</p><p><b>  2.3用例圖4</b></p><p><b>  總體設(shè)計(jì)5</

5、b></p><p>  3.1系統(tǒng)總體功能模塊圖5</p><p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì)5</b></p><p>  4.1 ER圖設(shè)計(jì)6</p><p><b>  4.2關(guān)系模式6</b></p><p><b>  4.3邏輯模型7<

6、;/b></p><p><b>  4.4物理設(shè)計(jì)7</b></p><p>  4.4.1 數(shù)據(jù)庫(kù)建立7</p><p>  4.4.2 數(shù)據(jù)庫(kù)備份和恢復(fù)8</p><p>  用戶(hù)界面的設(shè)計(jì)和實(shí)現(xiàn)和應(yīng)用程序編碼8</p><p>  5.1用戶(hù)界面設(shè)計(jì)8</p>

7、<p>  系統(tǒng)測(cè)試方案和測(cè)試報(bào)告16</p><p>  6.1系統(tǒng)測(cè)試17</p><p>  6.1.1錯(cuò)誤數(shù)據(jù)17</p><p>  6.1.2正確數(shù)據(jù)21</p><p>  安裝和使用說(shuō)明23</p><p><b>  7.1 安裝23</b></p&

8、gt;<p>  7.2 使用說(shuō)明24</p><p><b>  參考文獻(xiàn)25</b></p><p><b>  相關(guān)技術(shù)介紹</b></p><p>  1.1 Visual Studio 2008的簡(jiǎn)介</p><p>  對(duì)于應(yīng)用程序開(kāi)發(fā)工具的選擇,很多人都聽(tīng)過(guò)這句經(jīng)典的

9、說(shuō)法:聰明的程序員使用Delphi,真正的程序員使用Visual C++ 。Visual Studio是微軟公司推出的開(kāi)發(fā)Win32應(yīng)用程序(Windows 95/98/2000/XP/NT)的、面向?qū)ο蟮目梢暬砷_(kāi)發(fā)工具。它的最大優(yōu)點(diǎn)就是提供了功能強(qiáng)大的MFC類(lèi)庫(kù),MFC是一個(gè)很大的C++類(lèi)層次結(jié)構(gòu),其中封裝了大量的類(lèi)及其函數(shù),很多Windows程序所共有的標(biāo)準(zhǔn)內(nèi)容可以由MFC的類(lèi)來(lái)提供,MFC類(lèi)為這些內(nèi)容提供了用戶(hù)接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方

10、法,程序員所要做的就是通過(guò)預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓,這將簡(jiǎn)化編程工作,大大的減少程序員編寫(xiě)的代碼數(shù)量,使編程工作變得更加輕松容易。</p><p>  1.2 Microsoft Access 2007的簡(jiǎn)介</p><p>  Microsoft Access 數(shù)據(jù)庫(kù)管理系統(tǒng)是Microsoft Office 套件的重要組成部分,先后出現(xiàn)了Access 97、Ac

11、cess 2000 和Access 2007。其中Access 2007是最新版本。Access適用于小型商務(wù)活動(dòng),用以存貯和管理商務(wù)活動(dòng)所需要的數(shù)據(jù)。Access不僅是一個(gè)數(shù)據(jù)庫(kù),而且它具有強(qiáng)大的數(shù)據(jù)管理功能,它可以方便地利用各種數(shù)據(jù)源,生成窗體(表單),查詢(xún),報(bào)表和應(yīng)用程序等。</p><p>  Access 2007數(shù)據(jù)庫(kù)由七種對(duì)象組成:表、查詢(xún)、窗體、報(bào)表、頁(yè)、宏和模塊。表(Table) ——表是數(shù)據(jù)

12、庫(kù)的基本對(duì)象,是創(chuàng)建其他6種對(duì)象的基礎(chǔ)。表由記錄組成,記錄由字段組成,表用來(lái)存貯數(shù)據(jù)庫(kù)的數(shù)據(jù),故又稱(chēng)數(shù)據(jù)表。查詢(xún)(Query)——查詢(xún)可以按索引快速查找到需要的記錄,按要求篩選記錄并能連接若干個(gè)表的字段組成新表。窗體(Form)——窗體提供了一種方便的瀏覽、輸入及更改數(shù)據(jù)的窗口。還可以創(chuàng)建子窗體顯示相關(guān)聯(lián)的表的內(nèi)容。窗體也稱(chēng)表單。報(bào)表(Report)——報(bào)表的功能是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)分類(lèi)匯總,然后打印出來(lái),以便分析。 頁(yè)(Page

13、) ——也叫數(shù)據(jù)訪問(wèn)頁(yè)。是連接到數(shù)據(jù)庫(kù)的 Web 頁(yè),在數(shù)據(jù)訪問(wèn)頁(yè)中,可以查看、添加、編輯和操作存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)。數(shù)據(jù)訪問(wèn)頁(yè)還可以包括其他來(lái)源的數(shù)據(jù),例如 Microsoft Excel。宏(Macro)——宏相當(dāng)于DOS中的批處理,用來(lái)自動(dòng)執(zhí)行一系列操作。Access列出了一些常用的操作供用戶(hù)選擇,使用起來(lái)十分方便。模塊(Module)——模塊的功能與宏類(lèi)似,但它定義的操作比宏更精細(xì)和復(fù)雜,用戶(hù)可以根據(jù)自己的需要編寫(xiě)程序。模塊

14、使用Vi</p><p>  1.3 C/S結(jié)構(gòu)的簡(jiǎn)介</p><p>  隨著網(wǎng)絡(luò)的發(fā)展,出現(xiàn)了C/S模式,應(yīng)用被分為前端(客戶(hù)機(jī)部分)和后端(服務(wù)器部分)。C/S結(jié)構(gòu)的系統(tǒng)有三個(gè)基本組成部分:客戶(hù)機(jī)、服務(wù)器、客戶(hù)機(jī)與服務(wù)器的連接件??蛻?hù)機(jī)一般運(yùn)行在微機(jī)上,而服務(wù)器一般運(yùn)行在大型機(jī)或高性能微機(jī)上。這種模式的最大特點(diǎn)就在于利用客戶(hù)機(jī)和服務(wù)器雙方的資源來(lái)共同執(zhí)行一個(gè)特定的任務(wù),也就是一個(gè)應(yīng)用

15、由客戶(hù)機(jī)和服務(wù)器共同承擔(dān)完成。C/S結(jié)構(gòu)的優(yōu)點(diǎn)有:交互性強(qiáng),運(yùn)行效率高,開(kāi)放性強(qiáng),可擴(kuò)充性好,應(yīng)用服務(wù)器運(yùn)行負(fù)荷較輕,提供了更安全的存儲(chǔ)模式。由于C/S模式在邏輯結(jié)構(gòu)上比B/S模式少一層,對(duì)于相同的任務(wù),C/S完成的速度總比B/S快。</p><p><b>  需求分析</b></p><p><b>  2.1需求簡(jiǎn)介</b></p&g

16、t;<p>  在生活節(jié)奏非??斓漠?dāng)今社會(huì),人們需要對(duì)日常的開(kāi)支有一個(gè)明確的但是簡(jiǎn)單的記錄方式,迷你一個(gè)記賬系統(tǒng)就是提供這樣一種方式的小型管理系統(tǒng)。它可以用來(lái)管理日常生活的支出,可以對(duì)消費(fèi)進(jìn)行分類(lèi)、統(tǒng)計(jì)、查詢(xún),使支出更加清晰明確,你可以根據(jù)時(shí)間段進(jìn)行統(tǒng)計(jì)出消費(fèi)的情況,打印出消費(fèi)單。</p><p>  因?yàn)槭敲嫦驅(qū)嵱玫?,所以功能不需要太過(guò)于復(fù)雜,只需要實(shí)用就可以了,考慮到用戶(hù)的需求,界面需要比較簡(jiǎn)潔

17、和美觀,操作盡量簡(jiǎn)單。</p><p><b>  2.2數(shù)據(jù)字典</b></p><p><b>  2.2.1數(shù)據(jù)項(xiàng)</b></p><p><b>  數(shù)據(jù)項(xiàng)名稱(chēng):用戶(hù)名</b></p><p>  簡(jiǎn)述:用戶(hù)的名稱(chēng),用于登錄系統(tǒng)</p><p>

18、<b>  類(lèi)型:字符串</b></p><p><b>  長(zhǎng)度:20</b></p><p>  數(shù)據(jù)項(xiàng)之間的聯(lián)系:用戶(hù)名→密碼</p><p>  數(shù)據(jù)項(xiàng)名稱(chēng):條目編號(hào)</p><p>  簡(jiǎn)述:消費(fèi)的條目編號(hào)</p><p><b>  類(lèi)型:字符串<

19、/b></p><p><b>  長(zhǎng)度:7</b></p><p>  取值范圍:0000000~9999999</p><p>  數(shù)據(jù)項(xiàng)之間的聯(lián)系:條目編號(hào)→條目名稱(chēng),條目編號(hào)→消費(fèi)類(lèi)型,條目編號(hào)→單價(jià),條目編號(hào)→數(shù)量,條目編號(hào)→消費(fèi)時(shí)間</p><p>  數(shù)據(jù)項(xiàng)名稱(chēng):消費(fèi)類(lèi)型</p><

20、;p><b>  簡(jiǎn)述:消費(fèi)的類(lèi)型</b></p><p><b>  類(lèi)型:字符串</b></p><p><b>  長(zhǎng)度:20</b></p><p><b>  2.2.2數(shù)據(jù)結(jié)構(gòu)</b></p><p>  數(shù)據(jù)結(jié)構(gòu)名稱(chēng):用戶(hù)信息</

21、p><p>  含義說(shuō)明:使用系統(tǒng)的用戶(hù)的具體信息</p><p>  組成:用戶(hù)名 + 密碼</p><p>  數(shù)據(jù)結(jié)構(gòu)名稱(chēng):消費(fèi)信息</p><p>  含義說(shuō)明:消費(fèi)的條目的具體信息</p><p>  組成:條目編號(hào) + 條目名稱(chēng) + 消費(fèi)類(lèi)型 + 單價(jià) + 數(shù)量 + 消費(fèi)時(shí)間</p><p&

22、gt;  數(shù)據(jù)結(jié)構(gòu)名稱(chēng):類(lèi)型信息</p><p>  含義說(shuō)明:消費(fèi)類(lèi)型的具體信息</p><p><b>  組成:消費(fèi)類(lèi)型</b></p><p><b>  2.3用例圖</b></p><p><b>  總體設(shè)計(jì)</b></p><p>  3

23、.1系統(tǒng)總體功能模塊圖</p><p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b>  4.1 ER圖設(shè)計(jì)</b></p><p><b>  4.2關(guān)系模式</b></p><p>  用戶(hù)(用戶(hù)名,密碼)</p><p>  消費(fèi)類(lèi)型(消

24、費(fèi)類(lèi)型)</p><p>  消費(fèi)(條目編號(hào),條目名稱(chēng),消費(fèi)類(lèi)型,單價(jià),數(shù)量,消費(fèi)時(shí)間)</p><p>  關(guān)系模式對(duì)應(yīng)的基本表</p><p><b>  4.3邏輯模型</b></p><p><b>  4.4物理設(shè)計(jì)</b></p><p>  4.4.1 數(shù)據(jù)庫(kù)建

25、立</p><p>  Access數(shù)據(jù)庫(kù)本身就是一個(gè)文件,創(chuàng)建一個(gè)文件就創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),所以不需要再建立數(shù)據(jù)庫(kù)。</p><p><b>  建立表users</b></p><p>  CREATE TABLE users</p><p><b>  (</b></p><p

26、>  u_name VARCHAR(20) PRIMARY KEY,</p><p>  u_password VARCHAR(20)</p><p><b>  );</b></p><p><b>  建立表class</b></p><p>  CREATE TABLE class<

27、;/p><p><b>  (</b></p><p>  c_name VARCHAR(20) PRIMARY KEY</p><p><b>  );</b></p><p><b>  建立表entry</b></p><p>  CREATE TAB

28、LE entry</p><p><b>  (</b></p><p>  e_no VARCHAR(7) PRIMARY KEY,</p><p>  e_tag VARCHAR(15),</p><p>  e_class VARCHAR(20),</p><p>  e_price MON

29、EY,</p><p>  e_quantity INT,</p><p>  e_date DATE,</p><p>  e_description TEXT,</p><p>  FOREIGN KEY (e_class) REFERENCES class(c_name)</p><p><b>  )

30、;</b></p><p>  4.4.2 數(shù)據(jù)庫(kù)備份和恢復(fù)</p><p>  因?yàn)锳ccess數(shù)據(jù)庫(kù)本身就是一個(gè)數(shù)據(jù)文件,所以可以直接對(duì)這個(gè)文件進(jìn)行備份,如果數(shù)據(jù)遭到破壞需要恢復(fù),那么將備份文件覆蓋到原來(lái)的數(shù)據(jù)文件就可以恢復(fù)數(shù)據(jù)了,非常方便。</p><p>  用戶(hù)界面的設(shè)計(jì)和實(shí)現(xiàn)和應(yīng)用程序編碼</p><p><b&

31、gt;  5.1用戶(hù)界面設(shè)計(jì)</b></p><p>  用戶(hù)界面使用MFC(微軟基礎(chǔ)類(lèi)庫(kù))進(jìn)行開(kāi)發(fā),其中的界面元素主要用的是BCG Control Bar框架,這個(gè)框架是BCG Soft公司的界面庫(kù)產(chǎn)品,后來(lái)被微軟收購(gòu),并在后續(xù)發(fā)布的VS2008 SP版本中將其嵌入到MFC中作為MFC的一部分。用該框架可以開(kāi)發(fā)出類(lèi)似于office2007的界面。</p><p><b&

32、gt;  登錄界面</b></p><p><b>  關(guān)鍵代碼</b></p><p>  void CLoginDlg::OnBnClickedBnLogin()</p><p><b>  {</b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p&

33、gt;<p>  UpdateData();</p><p>  CString strSQL;</p><p>  strSQL = _T("SELECT * FROM users");</p><p>  CAdoRecordSet rs;</p><p>  if (CPayoutManagerApp:

34、:OpenRecordSet(rs, strSQL))</p><p><b>  {</b></p><p>  if (rs.GetRecordCount() > 0)</p><p><b>  {</b></p><p>  CString strUsername;</p>

35、<p>  CString strPassword;</p><p>  rs.GetCollect(_T("u_name"), strUsername);</p><p>  rs.GetCollect(_T("u_password"), strPassword);</p><p>  if (strUsern

36、ame.Compare(m_strUsername) == 0)</p><p><b>  {</b></p><p>  if (strPassword.Compare(m_strPassword) == 0)</p><p><b>  {</b></p><p>  EndDialog(TR

37、UE);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("密碼錯(cuò)誤!"));</p><p><

38、;b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("用戶(hù)名錯(cuò)誤!"));</p&g

39、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("用戶(hù)表為空!&

40、quot;));</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  主界面</b></p><p><b>  面板<

41、/b></p><p>  ////////////////////////////////////////////////////////////////////////////////////</p><p>  // 添加管理主面板</p><p>  bNameValid = strTemp.LoadString(IDS_RIBBON_MANAGER)

42、;</p><p>  ASSERT(bNameValid);</p><p>  CMFCRibbonCategory* pManagerCategory = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE);</p><p>  // 面板工廠(管理)</p>&

43、lt;p>  CPanelFactory managerFactory(pManagerCategory);</p><p>  // 利用面板工廠創(chuàng)建類(lèi)別面板</p><p>  m_pClassPanel = new CClassPanel(IDS_RIBBON_CLASS, managerFactory);</p><p>  // 初始化面板內(nèi)容<

44、;/p><p>  m_pClassPanel->InitializeContainer();</p><p>  // 利用面板工廠創(chuàng)建條目面板</p><p>  m_pEntryPanel = new CEntryPanel(IDS_RIBBON_ENTRY, managerFactory);</p><p>  // 初始化面板內(nèi)容

45、</p><p>  m_pEntryPanel->InitializeContainer();</p><p>  ////////////////////////////////////////////////////////////////////////////////////</p><p>  // 添加搜索主面板</p><p

46、>  bNameValid = strTemp.LoadString(IDS_RIBBON_SEARCH);</p><p>  ASSERT(bNameValid);</p><p>  CMFCRibbonCategory* pSearchCategory = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRIT

47、ELARGE);</p><p>  // 面板工廠(搜索)</p><p>  CPanelFactory searchFactory(pSearchCategory);</p><p>  // 利用面板工廠創(chuàng)建搜索面板</p><p>  m_pSearchPanel = new CSearchPanel(IDS_RIBBON_SEAR

48、CH, searchFactory);</p><p>  // 初始化面板內(nèi)容</p><p>  m_pSearchPanel->InitializeContainer();</p><p>  /////////////////////////////////////////////////////////////////////////////////

49、///</p><p>  // 添加統(tǒng)計(jì)主面板</p><p>  bNameValid = strTemp.LoadString(IDS_RIBBON_STAT);</p><p>  ASSERT(bNameValid);</p><p>  CMFCRibbonCategory* pStatCategory = m_wndRibbon

50、Bar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE);</p><p>  // 面板工廠(統(tǒng)計(jì))</p><p>  CPanelFactory statFactory(pStatCategory);</p><p>  // 利用面板工廠創(chuàng)建統(tǒng)計(jì)面板</p><p>  m_pS

51、tatPanel = new CStatPanel(IDS_RIBBON_STAT, statFactory);</p><p>  // 初始化面板內(nèi)容</p><p>  m_pStatPanel->InitializeContainer();</p><p><b>  列表視圖</b></p><p>  

52、void CEntryGrid::OnInitialUpdate()</p><p><b>  {</b></p><p>  CListView::OnInitialUpdate();</p><p>  // TODO: 在此添加專(zhuān)用代碼和/或調(diào)用基類(lèi)</p><p><b>  // 設(shè)定列表樣式<

53、;/b></p><p>  DWORD dwStyle = ::GetWindowLong(m_hWnd, GWL_STYLE);</p><p>  dwStyle |= LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL;</p><p>  ::SetWindowLong(m_hWnd, GWL_STYLE,

54、dwStyle);</p><p>  dwStyle = m_listCtrl.GetExtendedStyle();</p><p>  dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;</p><p>  m_listCtrl.SetExtendedStyle(dwStyle);</p>&l

55、t;p>  CAdoRecordSet rs;</p><p>  CString strSQL;</p><p>  strSQL = _T("SELECT e_no AS 條目編號(hào), e_tag AS 條目名稱(chēng), e_class AS 消費(fèi)類(lèi)型, e_price AS 單價(jià), e_quantity AS 數(shù)量, e_date AS 購(gòu)買(mǎi)時(shí)間, e_description

56、 AS 備注FROM entry");</p><p>  CPayoutManagerApp::OpenRecordSet(rs, strSQL + _T(" ORDER BY e_no"), adCmdText);</p><p>  long colCount = rs.GetFieldsCount();</p><p><

57、b>  // 插入列名</b></p><p>  for (long i = 0; i < colCount; i++)</p><p><b>  {</b></p><p>  CString columnName = rs.GetFieldName(i);</p><p>  m_list

58、Ctrl.InsertColumn((int)i, columnName, 0, 100);</p><p><b>  }</b></p><p>  ListData(&rs);</p><p><b>  }</b></p><p>  void CEntryGrid::ListDat

59、a(CAdoRecordSet* pRs)</p><p><b>  {</b></p><p>  BOOL bCreated(FALSE);</p><p>  if (pRs == NULL)</p><p><b>  {</b></p><p>  bCreate

60、d = TRUE;</p><p>  pRs = new CAdoRecordSet();</p><p>  CString strSQL;</p><p>  strSQL = _T("SELECT e_no AS 條目編號(hào), e_tag AS 條目名稱(chēng), e_class AS 消費(fèi)類(lèi)型, e_price AS 單價(jià), e_quantity AS 數(shù)

61、量, e_date AS 購(gòu)買(mǎi)時(shí)間, e_description AS 備注FROM entry");</p><p>  CPayoutManagerApp::OpenRecordSet(*pRs, strSQL + _T(" ORDER BY e_no"), adCmdText);</p><p><b>  }</b></p&

62、gt;<p>  m_listCtrl.DeleteAllItems();</p><p>  long colCount = pRs->GetFieldsCount();</p><p>  long rowCount = pRs->GetRecordCount();</p><p>  m_listCtrl.SetColumnWidth

63、(colCount - 1, 200);</p><p>  pRs->MoveFirst();</p><p>  for (long i = 0; i < rowCount; i++)</p><p><b>  {</b></p><p>  CString item;</p><p

64、>  long j = 0;</p><p><b>  // 插入條目編號(hào)</b></p><p>  pRs->GetCollect(j, item);</p><p>  m_listCtrl.InsertItem(i, item);</p><p><b>  // 插入內(nèi)容</b&g

65、t;</p><p>  for (j = 1; j < colCount; j++)</p><p><b>  {</b></p><p>  if (j == (colCount - 2))</p><p><b>  {</b></p><p>  COleDa

66、teTime dtDate;</p><p>  pRs->GetCollect(_T("購(gòu)買(mǎi)時(shí)間"), dtDate);</p><p>  item = dtDate.Format(_T("%Y-%m-%d"));</p><p><b>  }</b></p><p>

67、<b>  else</b></p><p><b>  {</b></p><p>  pRs->GetCollect(j, item);</p><p><b>  }</b></p><p>  m_listCtrl.SetItemText(i, j, item);

68、</p><p><b>  }</b></p><p>  pRs->MoveNext();</p><p><b>  }</b></p><p>  if (bCreated == TRUE)</p><p><b>  {</b></

69、p><p>  delete pRs;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  管理面板</b></p><p>  void CEntryPanel::OnClickedBnAdd(voi

70、d)</p><p><b>  {</b></p><p>  UpdateData();</p><p>  CEntry entry(m_strNo, m_strTag, m_strClass, m_strPrice, m_strQuantity, m_strDate, m_strDescription);</p><

71、p>  if (entry.Add())</p><p><b>  {</b></p><p>  AfxMessageBox(_T("添加成功"));</p><p>  NotifyOthersToUpdate();</p><p><b>  }</b></p

72、><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("添加失敗"));</p><p><b>  }</b></p><p><b>  }&l

73、t;/b></p><p>  void CEntryPanel::OnClickedBnMod(void)</p><p><b>  {</b></p><p>  UpdateData();</p><p>  CEntry entry;</p><p>  MakeEntry(ent

74、ry);</p><p>  if (entry.Update() == TRUE)</p><p><b>  {</b></p><p>  AfxMessageBox(_T("修改成功"));</p><p>  NotifyOthersToUpdate();</p><p&

75、gt;<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("修改失敗"));</p><p><b>  }</b><

76、/p><p><b>  }</b></p><p>  void CEntryPanel::OnClickedBnDel(void)</p><p><b>  {</b></p><p>  CEntry entry;</p><p>  MakeEntry(entry);&

77、lt;/p><p>  if (entry.Delete() == TRUE)</p><p><b>  {</b></p><p>  AfxMessageBox(_T("刪除成功"));</p><p>  NotifyOthersToUpdate();</p><p>&l

78、t;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox(_T("刪除失敗"));</p><p><b>  }</b></p>

79、;<p><b>  }</b></p><p><b>  搜索面板</b></p><p>  void CSearchPanel::OnBnSearch(void)</p><p><b>  {</b></p><p>  CString strText

80、= m_pBnSearch->GetText();</p><p>  CString strField = m_pCBField->GetEditText();</p><p>  CString strValue = m_pEditValue->GetEditText();</p><p>  if (strField.Compare(_T(&

81、quot;條目編號(hào)")) == 0)</p><p><b>  {</b></p><p>  strField = _T("e_no");</p><p><b>  }</b></p><p>  else if (strField.Compare(_T(&quo

82、t;條目名稱(chēng)")) == 0)</p><p><b>  {</b></p><p>  strField = _T("e_tag");</p><p><b>  }</b></p><p>  else if (strField.Compare(_T("

83、消費(fèi)類(lèi)型")) == 0)</p><p><b>  {</b></p><p>  strField = _T("e_class");</p><p><b>  }</b></p><p>  CString strStatement;</p>&l

84、t;p>  if (strText.Compare(_T("精確搜索")) == 0)</p><p><b>  {</b></p><p>  strStatement.Format(_T("%s = '%s'"), strField, strValue);</p><p>&l

85、t;b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  strStatement.Format(_T("%s LIKE '%s%s%s'"), strField, _T("%"

86、), strValue, _T("%"));</p><p><b>  }</b></p><p>  CString strSQL;</p><p>  strSQL.Format(_T("SELECT e_no AS 條目編號(hào), e_tag AS 條目名稱(chēng), e_class AS 消費(fèi)類(lèi)型, e_price

87、AS 單價(jià), e_quantity AS 數(shù)量, e_date AS 購(gòu)買(mǎi)時(shí)間, e_description AS 備注FROM %s WHERE %s ORDER BY e_no"), m_strTable, strStatement);</p><p>  CAdoRecordSet rs;</p><p>  if (OpenRecordSet(rs, strSQL))&l

88、t;/p><p><b>  {</b></p><p>  CMainFrame* pMainFrame = (CMainFrame*)theApp.m_pMainWnd;</p><p>  CEntryGrid* pEntryGrid = (CEntryGrid*)pMainFrame->GetActiveView();</p&g

89、t;<p>  pEntryGrid->ListData(&rs);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  統(tǒng)計(jì)面板</b></p><p>  void CStatPanel::

90、OnBnStat(void)</p><p><b>  {</b></p><p>  CString strStart = m_pCBStart->GetEditText();</p><p>  CString strEnd = m_pCBEnd->GetEditText();</p><p>  CS

91、tring strCount = _T("0");</p><p>  CString strSum = _T("0");</p><p>  CString strHighest = _T("0");</p><p>  CString strStatement;</p><p>

92、  strStatement.Format(_T("e_date BETWEEN #%s# AND #%s#"), strStart, strEnd);</p><p>  CString strSQL;</p><p>  strSQL.Format(_T("SELECT SUM(e_price * e_quantity) AS 消費(fèi)總額, MAX(e_pr

93、ice * e_quantity) AS 最高消費(fèi)FROM %s WHERE %s"), m_strTable, strStatement);</p><p>  CAdoRecordSet rs;</p><p>  if (OpenRecordSet(rs, strSQL))</p><p><b>  {</b></p&g

94、t;<p>  if (!rs.IsFieldNull(0l))</p><p><b>  {</b></p><p>  rs.GetCollect(_T("消費(fèi)總額"), strSum);</p><p>  rs.GetCollect(_T("最高消費(fèi)"), strHighest);

95、</p><p><b>  }</b></p><p><b>  }</b></p><p>  strSQL.Format(_T("SELECT e_no AS 條目編號(hào), e_tag AS 條目名稱(chēng), e_class AS 消費(fèi)類(lèi)型, e_price AS 單價(jià), e_quantity AS 數(shù)量, e_

96、date AS 購(gòu)買(mǎi)時(shí)間, e_description AS 備注FROM %s WHERE %s ORDER BY e_no"), m_strTable, strStatement);</p><p>  if (OpenRecordSet(rs, strSQL))</p><p><b>  {</b></p><p>  str

97、Count.Format(_T("%d"), rs.GetRecordCount());</p><p>  CMainFrame* pMainFrame = (CMainFrame*)theApp.m_pMainWnd;</p><p>  CEntryGrid* pEntryGrid = (CEntryGrid*)pMainFrame->GetActiveVi

98、ew();</p><p>  pEntryGrid->ListData(&rs);</p><p><b>  }</b></p><p>  m_pEditCount->SetEditText(strCount);</p><p>  m_pEditSum->SetEditText(strS

99、um);</p><p>  m_pEditHighest->SetEditText(strHighest);</p><p><b>  }</b></p><p>  系統(tǒng)測(cè)試方案和測(cè)試報(bào)告</p><p><b>  6.1系統(tǒng)測(cè)試</b></p><p><

100、;b>  6.1.1錯(cuò)誤數(shù)據(jù)</b></p><p><b>  登錄測(cè)試</b></p><p><b>  用戶(hù)名錯(cuò)誤</b></p><p><b>  密碼錯(cuò)誤</b></p><p><b>  修改用戶(hù)測(cè)試</b></p

101、><p><b>  價(jià)格非數(shù)字</b></p><p><b>  數(shù)量非數(shù)字</b></p><p><b>  類(lèi)別重復(fù)</b></p><p><b>  6.1.2正確數(shù)據(jù)</b></p><p><b>  添加類(lèi)

102、別</b></p><p><b>  添加消費(fèi)</b></p><p><b>  結(jié)果圖</b></p><p>  搜索測(cè)試(精確搜索)</p><p>  搜索測(cè)試(模糊搜索)</p><p><b>  統(tǒng)計(jì)測(cè)試</b></p

103、><p><b>  安裝和使用說(shuō)明</b></p><p><b>  7.1 安裝</b></p><p>  該程序?yàn)榫G色程序,不需要安裝,附帶Access數(shù)據(jù)庫(kù)文件放在同級(jí)目錄下,就可以直接運(yùn)行。</p><p><b>  7.2 使用說(shuō)明</b></p>

104、<p>  打開(kāi)程序后出現(xiàn)登陸提示框,輸入用戶(hù)名:admin,密碼:admin,之后進(jìn)入主界面,如下圖所示</p><p><b>  編輯類(lèi)別</b></p><p>  在類(lèi)別編輯框里輸入類(lèi)別,點(diǎn)擊“添加類(lèi)別”,就完成添加類(lèi)別的操作,相應(yīng)的,你可以在這個(gè)面板中刪除一個(gè)選中的類(lèi)別。</p><p><b>  編輯消費(fèi)&l

105、t;/b></p><p>  在條目區(qū)域填寫(xiě)消費(fèi)的信息,然后點(diǎn)擊添加條目,就完成添加消費(fèi)的操作,也可以在下列列表中選擇一個(gè)條目進(jìn)行編輯</p><p><b>  搜索</b></p><p>  點(diǎn)擊頂部的選項(xiàng)卡切換到搜索面板,選擇進(jìn)行搜索的字段,然后輸入搜索關(guān)鍵字,再點(diǎn)擊“精確搜索”就可以進(jìn)行精確搜索了,如果需要進(jìn)行模糊搜索,點(diǎn)擊搜

106、索按鈕的下拉箭頭,切換到模糊搜索模式,點(diǎn)擊搜索就可以進(jìn)行模糊搜索了。</p><p><b>  統(tǒng)計(jì)</b></p><p>  點(diǎn)擊頂部的選項(xiàng)卡切換到統(tǒng)計(jì)面板,選擇需要統(tǒng)計(jì)的時(shí)間段,然后點(diǎn)擊統(tǒng)計(jì),就會(huì)將時(shí)間段內(nèi)的消費(fèi)統(tǒng)計(jì)出來(lái),這時(shí)候用戶(hù)可以點(diǎn)擊下面的“導(dǎo)出統(tǒng)計(jì)表”,將會(huì)彈出保存對(duì)話(huà)框,用戶(hù)選定路徑后,將統(tǒng)計(jì)結(jié)果導(dǎo)出。</p><p><

107、;b>  使用技巧</b></p><p>  用戶(hù)可以搜索指定的消費(fèi)出來(lái)(參考搜索),然后切換到統(tǒng)計(jì)面板,點(diǎn)擊“導(dǎo)出統(tǒng)計(jì)表”也可以將搜索的結(jié)果導(dǎo)出。</p><p><b>  修改用戶(hù)資料</b></p><p>  點(diǎn)擊主菜單按鈕,選擇修改用戶(hù)資料,進(jìn)入修改用戶(hù)資料界面,輸入舊用戶(hù)的資料和新用戶(hù)資料,驗(yàn)證成功后就修改了用

108、戶(hù)信息。</p><p><b>  參考文獻(xiàn)</b></p><p>  1、王珊 主編 數(shù)據(jù)庫(kù)系統(tǒng)概論(第四版)高等教育出版社</p><p>  2、李代平 主編 軟件工程(第二版) 冶金工業(yè)出版社</p><p>  3、姚領(lǐng)田 編著 精通MFC程序設(shè)計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論