個人賬簿管理系統課程設計論文_第1頁
個人賬簿管理系統課程設計論文_第2頁
個人賬簿管理系統課程設計論文_第3頁
個人賬簿管理系統課程設計論文_第4頁
個人賬簿管理系統課程設計論文_第5頁
已閱讀5頁,還剩17頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程名稱:課程名稱:數據結構 湖南涉外經濟學院湖南涉外經濟學院本科學生課程設計(論文)本科學生課程設計(論文)題 目 個人賬簿管理 畢業設計(論文)原創性聲明和使用授權說明畢業設計(論文)原創性聲明和使用授權說明原創性聲明原創性聲明本人鄭重承諾:所呈交的畢業設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經發表或公布過的研究成果,也不包含我為獲得 及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作 者 簽 名: 日 期: 指導教師簽名:

2、 日期: 使用授權說明使用授權說明本人完全了解 大學關于收集、保存、使用畢業設計(論文)的規定,即:按照學校要求提交畢業設計(論文)的印刷本和電子版本;學校有權保存畢業設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學校可以采用影印、縮印、數字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名: 日 期: 摘 要個人賬簿管理是根據現實生活中的應用而編寫的,主要是用 C 語言編寫,其中運用到了文件的基本操作,結構體數組,宏定義,還有幾個主要循環的應用,其功能包括按月份插入、輸出、修改、查詢、刪除及按開支排序,包括了賬簿管理的大部分功能,適合于大部

3、分家庭用戶。關鍵詞: C 語言,算法,數據結構,個人賬簿管理目 錄第一章 前 言1第二章 系統功能分析2個人賬簿管理2解決個人賬簿管理22.2.1 概要分析22.2.2 流程圖3第三章 總體設計4概括4基本思路4第四章 詳細設計5程序代碼實現54程序主界面54創建結構體74數據的插入74數據的刪除84數據的排序10第五章 系統實現12第六章 解決的關鍵問題14第七章 結 論15結 束 語16編程感想16參考文獻17程序分工18第一章第一章 前前 言言本系統使用 Microsoft Visual Studio.NET 2005 開發工具創建 Web 應用程序。采 Visual C.NET 開發語

4、言,使用文件的操作達到個人賬簿管理的各種功能。文章詳細討論了該系統的開發、設計環境、實現算法及其具體的實現。數據結構是一門專業技術基礎課。它的教學要求是:學會分析研究計算機加工的數據結構的特性,以便為應用涉及的數據選擇適當的邏輯結構,存儲結構及其相應的算法,并初步掌握算法的時間分析和空間分析的技術。另一方面,本課程的學習過程也是復雜程序設計的訓練過程,要求學生編寫的程序結構清楚和正確意讀,符合軟件工程的規范。如果說高級語言程序設計的訓練過程,要進行了結構化的程序設計的初步訓練的話,那么數據結構就要培養我們的數據抽象能力個人賬簿管理系統是結合了文件、結構體、函數等操作,運用了數據結構中最基本的一

5、些算法,使程序簡單明了,使用了一些最優的算法,從而達到了不浪費內存的目的,同時也加快了程序的運行速度。第二章第二章 系統功能分析系統功能分析本程序可以實現個人賬簿的按月份插入、輸出、修改、查詢、刪除及按開支排序,其中每一個功能,都分別使用了一個函數,其中程序的主界面簡潔明了。可以按主界面的提示完成每一塊功能。2.12.1 個人賬簿管理個人賬簿管理在程序中定義了一個結構體主要包括(月份,全部的收入,食品開支,房租,水電費,醫療費,儲蓄,子女教育費和總體的支出費用)其次定義了 6 個函數,分別是插入信息,收支情況,修改信息,查詢月份信息,刪除某月信息,其中每一個程序都能實現相應部分的功能,并且在每

6、一個程序中都使用了相應的文件操作,和結構體數組的操作,通過對數組,結構體,文件的刪除、查找、修改及排序使程序都完成了相應的功能。解決個人賬簿管理解決個人賬簿管理2. 概要分析 個人賬簿管理通過:void Insert() / 插入信息void Outlin( ) /收支情況void Modify(int xg) /修改信息void Search(int yf) / 查詢月份信息void Del(int yf) / 刪除某月信息void ps() /按收支排序這六個函數分別完成每一部分功能 ,其中都是從主函數調用相應的函數,完成相應的功能。2. . 流程圖第三章 總體設計 個人賬簿管理主要是通過

7、文件的輸入、輸出、查詢、修改、刪除、排序來完成程序的主要功能,其中每一個功能都為對應的一個函數,增加程序的可讀性,以實現程序的整體功能。1. 首先建立一個結構體,用戶輸入某個月的數據通過相應的文件操作就把他追加到文件 data.dat 中。2. 輸入整體的收支情況就是直接從文件中讀出所有的數據然后輸出到屏幕中。3. 修改信息是建立一個臨時的 temp.dat 的文件,通過 fp1,fp2 兩個文件指針和一個結構體變量 b ,fp1 指向 data.dat,fp2 指向 temp.dat。然后把 fp1 中的數據讀到 b 中,就通過對比,假如 b-month=xg 就把xxg的地址寫入到 fp2

8、 中,否則就直接把 b 中的數據寫到 fp2 中,通過循環到!feof(fp1)為止,這個就把所有的修改的數據寫入到了 fp2,關閉兩個文件,最后刪除原來的 data.dat 文件,然后把 temp.dat 文件換名成為 data.dat 文件,這樣就達到了修改的目的。4. 查詢月份信息是在主函數中輸入一個數,然后在查詢函數中判斷是否月份相同,假如月份相同就輸出來。5. 刪除某月信息是和修改某月信息一樣的,只是把其中的一句改成 b-month!=xg 就直接寫入到 fp2 中,經過換名就達到了效果。6. 按收支排序是首先建立一個結構體數組,把所有的數據讀到數組中,然后按收支情況排序,排好序之后

9、就又把他寫入到 temp.dat 的文件中,刪除源文件,替換文件名就實現了排序的功能。第四章第四章 詳細設計詳細設計void main() int k,xg,yf; do printf(n-n); printf(n -歡迎進入個人帳簿管理系統- nn ); printf(n -個人帳簿管理系統主菜單- n ); printf(n 1.插入某月信息n); printf(n 2.輸出整體收支情況n); printf(n 3.修改某月信息n); printf(n 4.查詢某月信息n); printf(n 5.刪除某月信息n); printf(n 6.按開支排序輸出結果n); printf(n 0.退

10、出個人帳簿管理系統n); printf(n-n); /*輸出開始界面*/ scanf(%d,&k); switch(k) case 1:/*插入某月信息*/ Insert(); break; case 2:/*輸出所有月份的收支情況*/ Outlin(); break; case 3:/*修改某月信息*/ printf(請輸入需要修改的月份:n); scanf(%d,&xg); Modify(xg); break; case 4:/*查詢某月信息*/ printf(請輸入需要查詢的月份:n); scanf(%d,&yf); Search(yf); break; case

11、 5:/*刪除某月信息*/ printf(請輸入需要刪除的月份:n); scanf(%d,&yf); Del(yf); break; case 6:/*排序*/ ps(); break; case 0:exit(0);/*退出個人帳簿管理系統*/default : printf(輸入錯誤,請重新輸入); while(k=6); struct ElemType int month;/*月份*/ int income;/*全部月收入*/ int food; /*食品開支*/ int rent;/*房租*/ int utilities; /*水電費*/ int medical;/*醫療費*/

12、 int savings;/*儲蓄*/ int education;/*子女教育費*/ int payment ;/*總支出*/x12; /*一個月開支信息*/void Insert() / 插入信息 int j,i=1;FILE *fp;printf(請依次輸入n 月份 當月收入 食品開支 房租 水電費 醫療費 子女教育 n );scanf(%d%d%d%d%d%d%d,&xi.month,&xi.income,&xi.food,&xi.rent,&xi.utilities,&xi.medical,&cation); xi.

13、payment=xi.food+xi.rent+xi.utilities+xi.medical+cation; xi.savings=xi.income-xi.payment; if(fp=fopen(data.dat,ab)=NULL) printf(can not open filen); exit(0);for(j=1;jmonth!=yf) fwrite(b,sizeof(ElemType),1,fp2);fread(b,sizeof(ElemType),1,fp1);fclose(fp1);fclose(fp2);remove(File); /刪除源文件rename(te

14、mp.dat,File); /把臨時文件改成源文件名 Outlin();/調用輸出函數,輸出整體的開支void ps() /按收支排序 FILE *fp1,*fp2;ElemType a12,h;int i,j,c=0; if(fp1=fopen(data.dat,rb)=NULL) printf(can not open filen); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(can not open filen); exit(0); for(j=1;!feof(fp1);j+,c+)fread(&aj,sizeof(struc

15、t ElemType),1,fp1); for(i=1;ic;i+) for(j=1;jc;j+) if(ai.paymentaj.payment) h=ai; ai=aj; aj=h; for(i=1;ic;i+) fwrite(&ai,sizeof(struct ElemType),1,fp2); fclose(fp1);fclose(fp2);remove(File); /刪除源文件rename(temp.dat,File); /把臨時文件改成源文件名 Outlin();/調用輸出函數,輸出整體的開支第五章第五章 系統實現系統實現其中程序結果如下: 圖 5. 1 程序的主界面 圖

16、 5.2 程序插入月份界面 圖 5.3 程序輸出整體收支情況 圖 5.4 修改某月信息(修改 3 月份的數據) 圖 5.5 查詢 2 月份的數據 圖 5.5 刪除 3 月份的信息 圖 5.6 按收支排序第六章第六章 解決的關鍵問題解決的關鍵問題本程序主要解決的關鍵問題如下:1.文件的讀寫操作及讀寫所用的方式2.文件的修改及刪除3.文件的排序4.結構體的操作5.函數的參數傳遞問題第七章第七章 結結 論論通過這次課程設計使我了解到了 :1. 寫一個程序首先要有算法,而算法有很多種,使用最優的算法,能節約很多時間和加快系統的速度。2. 在這個程序中,主要還是利用了 C 語言中文件的操作,其中最主要的

17、就是文件的讀寫及用的不同種讀寫的方式,還有查找、修改及刪除文件中的數據,其中查找還是比較簡單,但修改文件中的數據,要利用一個中間文件。首先要查找到要刪除的數據,假如相同就復制到一個文件中,原文件中不相同的也復制到那個文件中,這樣以達到修改的目的,刪除也類似,還有就是排序了,也要利用到中間文件。3. 在結構體的操作用,不能直接給結構體變量賦值。4. 這個程序的界面編的雖然不怎么好看,但基本賬簿管理的功能都達到了。所以說還是具有一定的實用性。結結 束束 語語在這次課程設計中,我學習到了,不管做什么事情還是團隊協作,才可以使一件事情辦得最后,一個人的力量永遠是有限的,不管一個人的能力有多大,總會有一些地方的不足,尤其是我們編程這一行,最主要的還是要團隊合作。其次就是寫程序時要用到注釋

溫馨提示

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

評論

0/150

提交評論