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

下載本文檔

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

文檔簡介

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

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的簡介2</p><p>  1.2 Microsoft Access 2007的簡介2</p><p>  1.3 C/S結(jié)構(gòu)的簡介2</p><p><b>  需求分析3</b></p><p><b>  2.1需求簡介3&

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25、立</p><p>  Access數(shù)據(jù)庫本身就是一個文件,創(chuàng)建一個文件就創(chuàng)建一個數(shù)據(jù)庫,所以不需要再建立數(shù)據(jù)庫。</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ù)庫備份和恢復(fù)</p><p>  因為Access數(shù)據(jù)庫本身就是一個數(shù)據(jù)文件,所以可以直接對這個文件進(jìn)行備份,如果數(shù)據(jù)遭到破壞需要恢復(fù),那么將備份文件覆蓋到原來的數(shù)據(jù)文件就可以恢復(fù)數(shù)據(jù)了,非常方便。</p><p>  用戶界面的設(shè)計和實現(xiàn)和應(yīng)用程序編碼</p><p><b&

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

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

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

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)建類別面板</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)計主面板</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)計)</p><p>  CPanelFactory statFactory(pStatCategory);</p><p>  // 利用面板工廠創(chuàng)建統(tǒng)計面板</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: 在此添加專用代碼和/或調(diào)用基類</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 條目編號, e_tag AS 條目名稱, e_class AS 消費(fèi)類型, e_price AS 單價, e_quantity AS 數(shù)量, e_date AS 購買時間, 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 條目編號, e_tag AS 條目名稱, e_class AS 消費(fèi)類型, e_price AS 單價, e_quantity AS 數(shù)

61、量, e_date AS 購買時間, 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>  // 插入條目編號</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("購買時間"), 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;條目編號")) == 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;條目名稱")) == 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)類型")) == 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 條目編號, e_tag AS 條目名稱, e_class AS 消費(fèi)類型, e_price

87、AS 單價, e_quantity AS 數(shù)量, e_date AS 購買時間, 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)計面板</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 條目編號, e_tag AS 條目名稱, e_class AS 消費(fèi)類型, e_price AS 單價, e_quantity AS 數(shù)量, e_

96、date AS 購買時間, 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)測試方案和測試報告</p><p><b>  6.1系統(tǒng)測試</b></p><p><

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論