![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/050aebf6-8cb8-4c61-ba30-8112b216cd0a/050aebf6-8cb8-4c61-ba30-8112b216cd0apic.jpg)
![數(shù)據(jù)庫(kù)課程設(shè)計(jì)---小型記賬系統(tǒng)_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/050aebf6-8cb8-4c61-ba30-8112b216cd0a/050aebf6-8cb8-4c61-ba30-8112b216cd0a1.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告-個(gè)人記賬系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--小型超市管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--java_個(gè)人記賬管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---小型超市管理系統(tǒng)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 小型超市管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---中小型超市銷(xiāo)售管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--bbs系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- sql數(shù)據(jù)庫(kù)課程設(shè)計(jì)-- 小型超市管理系統(tǒng)
- 小型辦公系統(tǒng)(數(shù)據(jù)庫(kù)課程設(shè)計(jì))word格式
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---數(shù)據(jù)庫(kù)
- 中小型超市銷(xiāo)售管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--中小型工廠管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--快餐訂餐系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)系統(tǒng)原理
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)—公司管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)快餐訂餐系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)原理及應(yīng)用課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論