




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、家庭記賬系統的設計與實現 摘要摘要:記賬是一個家庭不可缺少的,企業很早就實施了記賬的集中系統管理,而家庭使用 的小型記賬系統卻還是鳳毛麟角,記賬是很小的一個部分,但大到企業,小到家庭都有十 分重要的意義。 本論文介紹了家庭記賬系統開發的整個過程。利用軟件工程原理,采用面向對象的編程方 法,其開發主要包括后臺數據庫的建立、維護以及前端應用程序開發,實現了家庭記賬的 自動化和信息化。 主要包括以下幾個模塊:用戶密碼登陸,原始數據的匯入、查詢、統計,家庭特殊事件的 提醒等,從而對家庭收入與支出進行有效、系統的管理,并使之更全面和靈活。 論文系統地分析了軟件開發的背景及過程,首先介紹了軟件的開發環境,
2、其次介紹了本軟 件的詳細設計過程:數據庫的設計以及具體界面的設計和功能,最后對在本軟件開發過程 中的問題進行了總結。 關鍵詞關鍵詞:記賬;收支管理;查詢;軟件工程 the design and implementation of the domestic accounting system abstract:the system of domestic accounting is very important to a family, and it is an indispensability part. long ago, the corporation had focused on car
3、ry out the financial manage. however, it was rarity. though accounting was only a small part, but to corporation or family, it has very important meaning. the thesis introduced the whole process which refers to the system of domestic accounting in family. using the theory of software engineering and
4、 adopting the way of object oriented program, whose exploitation mainly includes the establishment begin form1.hide; frm_userregister.showmodal; form1.show; end; procedure tform1.bitbtn2click(sender: tobject); begin form1.hide; frmlogon.showmodal; form1.show; end; /procedure tform1.bitbtn3click(send
5、er: tobject); /begin /form1.hide; /frmchangepassword.showmodal; /form1.show; /end; procedure tform1.formcreate(sender: tobject); var sql : string ; / i:integer; strstartdate:string ; strenddate:string ; begin strstartdate:=datetostr(now(); strenddate:=datetostr(now()+7 ); sql:=select * from dt where
6、 date_time= +strstartdate + and date_time 0 then begin showmessage(成功登錄!); frmlogon.hide; frmmain.showmodal; frmlogon.show; end else showmessage(輸入有誤!); end; procedure tfrmlogon.button3click(sender: tobject); begin close; end; end. 程序主界面 正確登陸后出現此窗口,可以選擇想進行的操作,點擊對應按鈕即可。設置的提醒事 件顯示在該窗口下方。 核心代碼: procedu
7、re tfrmmain.button1click(sender: tobject); begin frmincomeadd.showmodal; end; procedure tfrmmain.button2click(sender: tobject); begin frmoutcomeadd.showmodal; end; procedure tfrmmain.button3click(sender: tobject); begin frmqueryincome.showmodal; end; procedure tfrmmain.button4click(sender: tobject);
8、 begin frmqueryoutcome.showmodal; end; procedure tfrmmain.button5click(sender: tobject); begin frmincomesum.showmodal; end; procedure tfrmmain.button6click(sender: tobject); begin frmoutcomesum.showmodal; end; procedure tfrmmain.formcreate(sender: tobject); begin lbldt.caption := + unit1.strdt; end;
9、 procedure tfrmmain.button7click(sender: tobject); begin frmmain.hide; frmchangepassword.showmodal; frmmain.show; end; procedure tfrmmain.button8click(sender: tobject); begin frmmain.hide; frmaddnotice.showmodal; frmmain.show; end; end. 收入登記 輸入任一人的收入信息。 核心代碼: procedure tfrmincomeadd.button1click(sen
10、der: tobject); var sql:string; /i:integer; dt1:string; begin dt1:=datetostr(now(); sql:=insert into salary(user_name,price,mark,date_time) values(+edit2.text+,+edit1.text+,+edit3.text+,+dt1+); adoconnection1.open; adoconnection1.execute(sql); adoconnection1.close; showmessage(添加成功!); end; procedure
11、tfrmincomeadd.button2click(sender: tobject); begin close; 收入查詢 輸入用戶想查詢的人的名字,可一查詢到所有該姓名對應的收入詳細情況。 核心代碼: procedure tfrmqueryincome.button1click(sender: tobject); var sql : string ; item:tlistitem; i:integer; begin sql:=select * from salary where user_name=+ edit1.text + and price not like -%; adoquery
12、1.sql.clear; adoquery1.sql.add(sql); adoquery1.open; / i := listview1.items.count; listview1.items.clear; while not(adoquery1.eof) do for i := 0 to adoquery1.recordcount -1 do begin item:=listview1.items.add; / listitem.caption:= inttostr(i); item.caption:=trim(adoquery1.fieldbyname(user_name).asstr
13、ing); item.subitems.add(trim(adoquery1.fieldbyname(price).asstring); item.subitems.add(trim(adoquery1.fieldbyname(mark).asstring); item.subitems.add(trim(adoquery1.fieldbyname(date_time).asstring); adoquery1.next; end; end; 收入統計 點擊收入統計按鈕后出現此窗口,顯示出一段時間內所有姓名對應的各項收入總和。 核心代碼: procedure tfrmincomesum.for
14、mcreate(sender: tobject); var sql : string ; item:tlistitem; i:integer; strstartdate:string ; strenddate:string ; begin strstartdate:=datetostr(now(); strenddate:=datetostr(now()-30 ); sql:=select user_name ,mark,sum(price) as price from salary where price not like -% and date_time= +strenddate + gr
15、oup by user_name,mark order by user_name; adoquery1.sql.clear; adoquery1.sql.add(sql); adoquery1.open; / i := listview1.items.count; listview1.items.clear; while not(adoquery1.eof) do for i := 0 to adoquery1.recordcount -1 do begin item:=listview1.items.add; / listitem.caption:= inttostr(i); item.ca
16、ption:=trim(adoquery1.fieldbyname(user_name).asstring); item.subitems.add(trim(adoquery1.fieldbyname(price).asstring); item.subitems.add(trim(adoquery1.fieldbyname(mark).asstring); adoquery1.next; end; end; 修改密碼 輸入正確的用戶名和密碼可以修改密碼。 核心代碼: procedure tfrmchangepassword.button2click(sender: tobject); var
17、 strstr:string; i:integer; begin /adoquery1,close; adoquery1.sql.text:=select * from user_info where user_name=+ edit1.text + and user_password=+ edit2.text + ; adoquery1.open; i:=adoquery1.recordcount; if i =0 then /原用戶名和密碼輸入有誤 showmessage(原用戶名和密碼輸入有誤!) else begin if edit3.text edit4.text then show
18、message(兩次輸入的密碼不相同!) else /兩次輸入的密碼相同 ,可以修改密碼 begin /adoquery1.close; /adoquery1.sql.text:=update user_info set user_password=+ edit3.text + where user_name=+ edit1.text + and user_password=+ edit2.text + ; /adoquery1.open; strstr:=update user_info set user_password=+ edit3.text + where user_name=+ e
19、dit1.text + and user_password=+ edit2.text + ; adoconnection1.open(); adoconnection1.execute(strstr); showmessage(密碼修改成功!) end; end; end; procedure tfrmchangepassword.button3click(sender: tobject); begin close; end; 事件提醒設置 可以設置需要進行提醒的事件。 核心代碼: procedure tfrmaddnotice.button2click(sender: tobject); b
20、egin close; end; procedure tfrmaddnotice.button1click(sender: tobject); var sql:string; /i:integer; begin sql:=insert into dt values(+edit1.text+,+edit2.text+,+edit3.text+); adoconnection1.open; adoconnection1.execute(sql); adoconnection1.close; showmessage(添加成功!); end; 注:由于支出和收入模塊設計與實現類似,此處不再表述。 4.
21、2 ado 連接數據庫設計 ado 連接數據庫 delphi 連接數據庫使用 ado 控件,具體設置如下: (1)打開 ado 的屬性。 (2)選擇數據庫類型,我用的是 sql server 2000 數據庫,所以選擇 midrosoft ole db provider for sql server。 (3)選擇數據庫測試連接,如果連接成功確定即連接上了服務器了。 5 系統測試和優化 5.1 測試目的 系統測試的目的是:測試的定義是為了發現程序中的錯誤而執行程序的過程。所以測 試的目的是測試系統中各個功能模塊的功能,及時發現迄今為止尚未發現的錯誤,及時發 現系統中尚未發現的缺陷,及時地反饋給程
22、序設計人員,以達到改正錯誤、優化程序代碼、 提高程序執行速度和提高軟件可靠性的目的。 5.2 測試方法 測試任何的系統都有兩種方法:如果已經知道了系統應該具有的功能,可以通過測試 來檢驗是否每個功能都能正常使用;如果知道產品內部工作過程,可以通過測試來檢驗系 統內部動作是否按照規格說明回溯的規定正常進行。前一種方法稱為黑盒測試;后一種方 法稱為白盒測試。 對于軟件測試而言,黑盒測試方法把程序看成一個黑盒子,完全不考慮程序的內部結 構和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能 按照規格說明書的規定正常使用,程序是否能適當的接收輸入數據產生正確的輸出信息, 并且保
23、持外部信息(如數據庫或文件)的完整性。黑盒測試又稱為功能測試。與黑盒測試 法相反,白盒測試法這種方法按照程序內部的邏輯測試程序,檢驗程序中的每條通路是否 都能按預定要求正確工作。白盒測試又稱為結構測試。 5.3 測試步驟 除非是測試一個小程序,否則一開始就把整個系統作為一個單獨的實體來測試是不現 實的。與開發過程類似,測試過程也必須分步驟進行,后一個步驟在邏輯上是前一個步驟 的繼續。 從過程的觀點考慮測試,在軟件工程環境中的測試過程,實際上是順序進行的四個步 驟的序列: (1) 單元測試 單元測試階段著重測試每個單獨的模塊,以確保它作為一個單元來說的功能是正確的。 單元測試大量使用白盒測試技術
24、,檢查模塊控制結構中的特定路徑,以確保做到完全覆蓋 并發現最大數量的錯誤。 (2) 集成測試 集成測試是測試和組裝軟件的系統化技術,在把模塊按照設計要求組裝起來的同時進 行測試,主要目標是發現與接口有關的問題。在集成測試過程中最常使用的是黑盒測試用 例設計技術,當然,為了保證覆蓋主要的控制路徑,也可能使用一定數量的白盒測試。 (3) 高級測試 在軟件集成完成之后,還要進行一系列高級測試。必須測試在需求分析階段確定下來 的標準,確認測試是對軟件滿足所有功能的、行為的和性能的需求的最終保證。 5.4 系統優化 系統優化很大一部分是在數據庫系統的優化,查詢優化在數據庫中有著非常重要的地 位。所以系統
25、要優化大部分的優化是在查詢數據庫方面來做的。查詢優化的優點不僅在于 用戶不必考慮如何最好地表達查詢以獲得較好的效率,而且在于系統可以比用戶程序的優 化做的更好,因為: (1) 優化器可以從數據字典中獲取許多統計信息; (2) 如果數據庫的物理統計信息改變了,系統可以自動的對查詢進行重新優化以選擇 適當的執行計劃; (3) 優化器可以考慮數百種不同的優化技術,而程序員一般只能考慮有限的幾種可能 性; (4) 優化器中包括了很多復雜的優化技術,這些技術要很好的技術員才能掌握,系統 的自動優化解決了這個問題。 另外 delphi 中在窗體轉化中,隱藏窗體有兩種方式,一個是.hide,另一個是 clo
26、se,前 面的只是把這個窗體隱藏起來,而后面的就是在運行本系統的時候的內存中把窗體關掉, 所以除了主窗體用 hide 以外一般直接 close,這樣可以盡量減少本系統占用用戶機子的內存, 使得系統的性能更好。 6 結束語結束語 通過此次畢業設計,我學習了用軟件工程的方法較為系統地開發一款應用軟件的全過 程。基本實現了家庭記賬可能牽涉到的各方面功能。 在設計過程中,對 delphi 這一工具的學習也使我受益不少。很多更好的功能等待進一 步的發掘。 對 sql server 2000 的使用也讓我對該數據庫的內涵有了新的了解。 由于時間的關系,該系統設計的較粗糙,有許多需要完善的地方。比如,提醒功能只 能顯示出一條需要進行提醒的事件,若有多條符合條件的無法全部顯示。在后續的時間里, 我將盡力完成對該系統的優化。 計算機技術飛速發展,在今后的工作中,我會繼續學習,學以致用,貢獻自己的力量。 參考文獻參考文獻 1 王珊.數據庫系統概論(第四版)m.高等教育出版社,2006 2 張海藩.軟件工程導輪(第 4 版)m.清華大學出版社,2003 3 黃梯云.管理信息系統(第三版)m. 高等教育出版社,2004 4 胡學鋼,王浩.計算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中生涯規劃與數學學科邏輯推理能力培養研究論文
- 歷史文化遺址保護教育對初中生歷史實踐能力培養的作用研究論文
- 節能節水等管理制度
- 英語培訓班管理制度
- 茶館俱樂部管理制度
- 低壓成套開關設備和控制設備設計規范書
- 趕集網簡介服務類-媒體資源網-中國權威的廣告媒體交易平臺
- 2025年廣東省深圳市南山第二外國語學校(集團)學府中學中考數學三模試卷
- 綠色卡通插畫綠植奇妙的種子認識種子主題
- 山東省青島市城陽區2024-2025學年九年級下學期期中歷史試題(含答案)
- 職業學校學生崗位實習三方協議范本
- 河北省唐山市路南區2023年數學五年級第二學期期末經典試題含解析
- 2023年廣東初中學業水平考試生物試卷真題(含答案)
- 奶茶店消防應急預案
- 工程制圖及機械CAD基礎知到章節答案智慧樹2023年吉林大學
- 初級會計職稱考試教材《初級會計實務》
- 第二十二課-重屬和弦前方的共同和弦
- 碳酸飲料生產工藝流程圖
- 帶電跨越10kV線路施工方案
- 土壤肥料學野外教學實習分析
- GB/T 8012-2000鑄造錫鉛焊料
評論
0/150
提交評論