c語言個(gè)人財(cái)務(wù)管理系統(tǒng)_第1頁
c語言個(gè)人財(cái)務(wù)管理系統(tǒng)_第2頁
c語言個(gè)人財(cái)務(wù)管理系統(tǒng)_第3頁
c語言個(gè)人財(cái)務(wù)管理系統(tǒng)_第4頁
c語言個(gè)人財(cái)務(wù)管理系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、個(gè)人財(cái)政支出管理付欣0 5計(jì)算機(jī)四班指導(dǎo)老師:梁新元一、問題描述及分析1。二、實(shí)驗(yàn)程序設(shè)計(jì)思想及功能描述1。3、主要函數(shù)模塊得設(shè)計(jì)思想與具體實(shí)現(xiàn)2三、實(shí)驗(yàn)程序測(cè)試41、程序開始執(zhí)行時(shí)系統(tǒng)得所顯示得頁而42、選擇退出系統(tǒng):5。3、選擇登陸,并且輸入得帳號(hào)與密碼都正確:5,4、用戶輸入得帳號(hào)不正確:5。5、用戸輸入得帳號(hào)正確.密碼不正確:6四、實(shí)驗(yàn)程序自我評(píng)價(jià)7。五、課程設(shè)訃創(chuàng)新六、課程設(shè)計(jì)總結(jié)7七、參考書目:7。八、實(shí)驗(yàn)程序源代碼8一、問題描述及分析編寫一個(gè)個(gè)人財(cái)政支出管理系統(tǒng),主要解決得問題就是作為一個(gè)系統(tǒng)而言,它所要面對(duì)不 只就是某一個(gè)人而言,而就是要而對(duì)很多得用戶、那么想要解決這一問題,就

2、必須要求這個(gè)系 統(tǒng)能夠存儲(chǔ)許多用戶得基本信息與記錄。同時(shí)也要求系統(tǒng)能夠?qū)Σ煌糜脩舻蒙矸葸M(jìn)行查找 與驗(yàn)證。在驗(yàn)證通過之后,在對(duì)其進(jìn)行用戶所要求得操作。作為一個(gè)財(cái)政支岀系統(tǒng),那么就要求對(duì)于用戶關(guān)于金錢得每一項(xiàng)操作都要有相應(yīng)得記錄, 同時(shí)并允許用戶對(duì)于每一條整體得記錄進(jìn)行操作,例如可以根搖時(shí)間來查找某一確定日期就 是否進(jìn)行了收入或者支出得操作,也可以根據(jù)特沱得需要來刪除某一條整體得記錄。但不允 許對(duì)每條記錄得單項(xiàng)數(shù)據(jù)進(jìn)行更改,因?yàn)椴还芫褪鞘杖脒€就是支出,所涉及得金額都就是固左 得,時(shí)間也就是固定得,所以系統(tǒng)不允許用戶對(duì)苴進(jìn)行操作。除此之外,還必須有足夠大得空間 來存儲(chǔ)新得記錄。所以此程序就就是基于

3、這個(gè)思想而編寫出來得,基本滿足了用戶對(duì)于一個(gè) 財(cái)政支岀管理系統(tǒng)所要求得相關(guān)功能。二、實(shí)驗(yàn)程序設(shè)計(jì)思想及功能描述根據(jù)前而對(duì)于編寫一個(gè)個(gè)人財(cái)政支岀管理系統(tǒng)得程序得問題描述與分析,確泄了此程序 得基本思想與相關(guān)功能。1、基本思想首先定義一個(gè)結(jié)構(gòu)體數(shù)組,這個(gè)數(shù)組得功能便就是用來所有用戶得所有信息。它得成員為每 個(gè)用戶得帳號(hào)(ac c o u nt)、密碼(c ode)、姓名(name)、記錄(r e cor d rec max), 以及記錄得條數(shù)(rec Jen) o英中記錄(reco rd re c max)這個(gè)成員本身也就是一個(gè)結(jié) 構(gòu)體數(shù)組。它包含了用戶所有得記錄(r e cord),并且根據(jù)用戶

4、得操作,記錄這個(gè)成員變量也會(huì) 有所跟改,例如如果擁護(hù)增加了一條記錄,那么這一條記錄就會(huì)存儲(chǔ)在此成員變量中、除了這 個(gè)成員變量就是動(dòng)態(tài)變化之外,記錄得條數(shù)(rec.len)也會(huì)根據(jù)用戶得操作進(jìn)行變化,例如如果 用戶增加了一條記錄,則rec Jen就會(huì)自加1,如果用戶刪除了一條記錄,則r e c_len就會(huì)自 減1、記剝r(jià)e c o rd rec max )這個(gè)成員變量就是以后函數(shù)中操作得主要內(nèi)容。除了 這兩個(gè)成員變量之外,英它得成員變量則不會(huì)被改變,系統(tǒng)只允許用戶對(duì)其進(jìn)行訪問,但不允 許進(jìn)行操作,因?yàn)檫@幾個(gè)成員變量得作用主要就是用來驗(yàn)證用戶得身份用得,所以不可以更 改。苴中得密碼(code)甚至

5、只能別系統(tǒng)調(diào)用,而不能對(duì)用戶進(jìn)行顯示得,也就就是說密碼(code) 對(duì)于用戶就是不可預(yù)知得,這樣做得目得就是為了系統(tǒng)自身得安全性,以免用戶得信息被其她 人瞧到。這就就是這個(gè)結(jié)構(gòu)體數(shù)組得功能與基本成員變量及各個(gè)成員變量得功能。左義了結(jié)構(gòu)體數(shù)組之后,首先要做得就就是要把所有得記錄都存入這個(gè)結(jié)構(gòu)體數(shù)組中,以 方便用戶得操作。所以在main函數(shù)中有系統(tǒng)自行調(diào)用了 old_re c ord這個(gè)函數(shù)來存入信息、 在此之后進(jìn)行得操作便就是讓用戶選擇所要進(jìn)行得就是登陸系統(tǒng)得操作還就是退岀系統(tǒng)得 操作、如果選擇登陸,則要輸入帳號(hào)與密碼。之后由系統(tǒng)來檢査帳號(hào)得存在性與密碼得正確 性。如果這兩項(xiàng)都通過了系統(tǒng)得檢査,

6、那么用戶便可以進(jìn)行具體記錄得操作了。這便就是這 個(gè)程序得基本設(shè)計(jì)思想。2、各個(gè)函數(shù)模塊得功能(I) old_rec o rd():此函數(shù)由系統(tǒng)自行調(diào)用,作用就是將所有用戶信息存入系統(tǒng)。(2 )vo i d s ave():此函數(shù)得作用就是將結(jié)構(gòu)體數(shù)組中得信息寫入文件存儲(chǔ),由系統(tǒng)調(diào) 用°(3) 1 oad():此函數(shù)得作用就是將結(jié)構(gòu)體數(shù)組中寫入文件得信息讀岀,由系統(tǒng)調(diào)用。(4) lookup_ a ccount s ():此函數(shù)得作用就是將用戶輸入得帳號(hào)與系統(tǒng)中得所有帳號(hào)進(jìn) 行對(duì)比,查瞧系統(tǒng)中就是否有此帳號(hào)、(5) che c k_co d e():此函數(shù)就是作用就是在系統(tǒng)查詢到了帳號(hào)

7、之后,對(duì)用戶輸入得帳號(hào) 與密碼進(jìn)行檢驗(yàn),瞧就是否相對(duì)應(yīng)。(6) p rin t _messa g e():此函數(shù)得功能就是在系統(tǒng)檢查了用戶輸入得帳號(hào)與密碼之后, 如果用戶通過了系統(tǒng)得檢査,在此顯示用戶可見得基本信息。(7) f i nd_rec o rd():此函數(shù)得作用就是根據(jù)用戶輸入得日期進(jìn)行査找操作、(8) i n s e r t_recor d ():此函數(shù)得功能就是在記錄中增加一條新得記錄,這個(gè)記錄由用戶 輸入。(9) de l_r ecord():此函數(shù)得功能就是根據(jù)用戶得輸入得位置,將相應(yīng)位置得記錄刪除。(10) sum_n u m():此函數(shù)得功能就是計(jì)算所有收入與支出得總與,

8、計(jì)算全部得收入得總 合,計(jì)算全部輸出得總合。(II) 打印輸出記錄得函數(shù):在本程序中一共有三個(gè)打印輸出記錄得函數(shù),分別為al l_p rint()、a cc_p r i n t( )、p a y_print()這三個(gè)函數(shù)、它們得功能依次就是打印輸出全部 記錄,打印輸出輸入記錄,打印輸出支岀記錄。(mian():在主函數(shù)中,可以根據(jù)用戶得選擇來操作系統(tǒng)允許用戶使用得功能,也可以 隨時(shí)退出這個(gè)系統(tǒng)。3、主要函數(shù)模塊得設(shè)計(jì)思想與具體實(shí)現(xiàn)(l) voidsave()函數(shù) 與 load()函數(shù)。這兩個(gè)函數(shù)得功能就是在系統(tǒng)調(diào)用了 old_rccord()這個(gè)函數(shù)之后,結(jié)構(gòu)體內(nèi)就有了所 有用戶得所有信息、S

9、ave()函數(shù)得作用就是將所有得信息都存入文件中,便于數(shù)拯得保存與 讀取。Load()函數(shù)得作用則就是把存入得文件中得信息讀出來、這兩個(gè)函數(shù)所涉及得知識(shí) 點(diǎn)為文件得讀入與寫出。主要就是f readhe與fwrite兩個(gè)函數(shù)得應(yīng)用。它們得一般調(diào)用 形式為:fre a d(buff e r, s ize,co u nt.f p );fwrit e (bu f f e r ,si z e , c o u n t, f p);其中:Bu f fe r :就是一個(gè)指針,對(duì)fr e ad來說,它就是讀入數(shù)據(jù)得存放地址。對(duì)f w r ite來說, 就是要輸岀數(shù)據(jù)得地址。S i zc:要讀寫得字節(jié)數(shù)、Co u

10、 nt:要進(jìn)行讀寫多少個(gè)s ize字節(jié)得數(shù)據(jù)項(xiàng)。Fp;文件型指針。調(diào)用這兩個(gè)函數(shù)之后,如果調(diào)用成功,則函數(shù)返回值為cou n t得值,即輸入或輸出數(shù)據(jù)項(xiàng) 得完整個(gè)數(shù)、(2) lo oku p_ac c ou n t s()函數(shù)與 c h e c k _ c ode()函數(shù):這兩個(gè)函數(shù)得功能主要就是用來核對(duì)用戶得身份、系統(tǒng)先檢驗(yàn)得就是a x xounts這個(gè)函 數(shù)。根據(jù)用戶輸入得帳號(hào)與系統(tǒng)中所有得帳號(hào)進(jìn)行比較,査找瞧就是否有相同得。如果找到 了,則進(jìn)行對(duì)密碼進(jìn)行檢驗(yàn),瞧密碼與帳號(hào)就是否對(duì)應(yīng)。在檢驗(yàn)帳號(hào)得時(shí)候,如果用戶輸入得帳 號(hào)在系統(tǒng)中不存在,系統(tǒng)則會(huì)給岀提示要求用戶從新輸入、但如果用戶輸入了三

11、次體統(tǒng)都找 不到帳號(hào)得時(shí)候,系統(tǒng)則會(huì)強(qiáng)制要求用戶退出系統(tǒng),此時(shí)則顯示結(jié)朿語得歡迎詞。而如果帳號(hào) 找到了,但用戶輸入得密碼與原有密碼不一致,系統(tǒng)也會(huì)給出提示信息要求用戶再次輸入、同 樣得,如果用戶輸入三次體統(tǒng)都檢驗(yàn)到不就是正確得密碼得時(shí)候,系統(tǒng)則會(huì)強(qiáng)制要求用戶退岀 系統(tǒng),此時(shí)則顯示結(jié)朿語得歡迎詞。在這兩個(gè)函數(shù)中主要用到得知識(shí)點(diǎn)就就是對(duì)字符串得相 關(guān)操作、如果帳號(hào)與密碼都通過檢驗(yàn)之后,此函數(shù)則將返回struct lis t _r e cord類型得數(shù) 據(jù)、字符串處理得函數(shù)主要有以下幾個(gè):pu ts函數(shù):其一般形式為puts(字符數(shù)組)、其作用就是將一個(gè)字符串輸出到終端。Gets函數(shù):英一般形式為g

12、et s (字符數(shù)組)。其作用就是從終端輸入一個(gè)字符串到字 符數(shù)組,并且得到一個(gè)函數(shù)值。該函數(shù)值就是字符數(shù)組得起始地址。Stract函數(shù):其一般形式為strcat(字符數(shù)組1,字符數(shù)組2 )。Strcat就是字符串連接得 縮寫、英作用就是連接兩個(gè)字符數(shù)組中得字符串,把字符串2接到字符串1得后而,結(jié)果放在 字符數(shù)組1中,函數(shù)調(diào)用后得到一個(gè)函數(shù)值字符數(shù)組1得地址。Strep y函數(shù):其一般形式為stre p y(字符數(shù)組1,字符數(shù)組2)。Str c py就是字符串復(fù)制 得簡(jiǎn)寫。它得作用就是將字符串2復(fù)制到字符數(shù)組1中去。在本程序中、用到得最多得便就 是此函數(shù)、strem p函數(shù)淇一般形式為stre

13、mp(字符串1,字符串2)。Stremp就是字符串比較得縮 寫、它得作用就是比較字符串1與字符串2,比較得結(jié)果有函數(shù)值帶回。如果字符串1=字符 串2,則函數(shù)值為0;如果字符串1大于字符串2,則函數(shù)值為一個(gè)正整數(shù),否則則為負(fù)整數(shù)。(3) f ind_r e c ord()函數(shù):此函數(shù)得功能就是根據(jù)用戶輸入得時(shí)間查找當(dāng)天得記錄、這個(gè)函數(shù)得參數(shù)為一個(gè)指向結(jié) 構(gòu)體得指針與一個(gè)字符串。字符串就是用語輸入得日期指向結(jié)構(gòu)體得指針指向得則就是用 戶輸入得帳號(hào)得這個(gè)結(jié)構(gòu)體。如果找到了用戶輸入得日期,則輸出當(dāng)天得所以記錄。如果找 不到,則顯示無此日得記錄。(4) in s e rt_recor d ()函數(shù)與 d

14、cl_re cor d ()函數(shù):這兩個(gè)函數(shù)得功能就是增加新得記錄與刪除用戶指泄得記錄。在in s ert_r e cord()函 數(shù)中,此函數(shù)得參數(shù)就是一個(gè)指向s true t 1 ist_ r ecor d得指針與一個(gè)指向s truct re c o rd得指針還有一個(gè)選擇插入位苣得整形變量。在主函數(shù)中,先左義一個(gè)struct r e co r d得結(jié)構(gòu)體。這個(gè)結(jié)構(gòu)體得內(nèi)容就是由用戶輸入得,也就就是用戶所要向struct lis t_rec o rd這個(gè)結(jié)構(gòu)體中輸入得新得記錄得內(nèi)容。然后再在主函數(shù)中泄義一個(gè)指向struct record 結(jié)構(gòu)體得指針,并指向已經(jīng)輸入記錄得結(jié)構(gòu)體,最后將此指

15、針作為實(shí)參傳入函數(shù)。由于向函數(shù) 中傳如就是指針,所以在函數(shù)中記錄更改之后,返回主函數(shù)得就是更改后得記錄、在del_r ecord()函數(shù)中,有用戶在主函數(shù)中輸入要?jiǎng)h除得記錄得位置,然后調(diào)用此函數(shù),那么就會(huì)執(zhí)行 刪除該記錄得操作。與inse r t_ r ec o r d函數(shù)一樣,參數(shù)傳遞得也就是指針,所以在函數(shù)中更 改得記錄,返回主函數(shù)后依舊就是更改后得記錄、(5) sum_num()函數(shù):此函數(shù)得功能就是用來計(jì)算用戶所有記錄中得錢數(shù)得總與,以方便用戶對(duì)于系統(tǒng)得操作, 同時(shí)也可以使用戶對(duì)自己得帳戶有更深入得了解。除此之外,該函數(shù)還能會(huì)對(duì)用戶所有得收入與所有得支岀進(jìn)行求與,使用戶能夠知道自己 得

16、所有得收入得總與與所有支岀得總與,這樣也方便了用戶進(jìn)行下一步得操作。(6) 打印輸出函數(shù):在此程序中,打印輸出函數(shù)共有三個(gè),分別就是輸出全部記錄,輸出收入記錄與輸岀支岀 記錄。任這里立義三個(gè)輸岀函數(shù)就是為了方便用戶能夠更容易得進(jìn)行操作。假設(shè)只有一個(gè)輸 出全部記錄得函數(shù),那么如果用戶只想查瞧收入得記錄或者支出得記錄,此時(shí)用戶只能自己一 條一條得去查瞧,這樣就會(huì)讓用戶感到不方便。一個(gè)良好得管理系統(tǒng)得目得就就是能盡可能 得滿足用戶得所有需要,分工越就是精確越好,所以為了滿足此項(xiàng)要求,在此定義了三個(gè)輸岀 函數(shù)。(7) ma i n()函數(shù):在一個(gè)程序中,ma i n()函數(shù)就是最為重要得一個(gè)函數(shù),因?yàn)?/p>

17、它就是所有程序執(zhí)行得入 口、同時(shí)函數(shù)也就是以ma i n()函數(shù)得結(jié)束作為結(jié)朿得,由此可見main()函數(shù)得重要性。在 本程序中,所以得功能模塊函數(shù)都就是在main()函數(shù)中調(diào)用得,這樣做得目得就是為了就是 整個(gè)程序得結(jié)構(gòu)簡(jiǎn)單緊湊,同時(shí)也就是為了程序得調(diào)試方便、但這樣也就相對(duì)得增加了 ma i n ()函數(shù)得復(fù)雜性、在本程序中.mai n ()函數(shù)中涉及得語法知識(shí)包括循環(huán)得嵌套使用,分之結(jié) 構(gòu)得嵌套使用,指針得應(yīng)用,指向結(jié)構(gòu)體指針得應(yīng)用等許多語法結(jié)構(gòu)。因?yàn)閙ai n ()函數(shù)在本程序中有著至關(guān)重要得作用,所以在此詳細(xì)說明。在程序開始執(zhí)行 之后,首先由用戶來選擇就是要登陸系統(tǒng)還就是要推岀系統(tǒng)。如

18、果就是退出系統(tǒng),那么程序便 會(huì)結(jié)束。如果選擇登陸,那么系統(tǒng)便會(huì)要求用戶輸入帳號(hào)與密碼。系統(tǒng)先會(huì)對(duì)帳號(hào)進(jìn)行檢查, 如果檢査通過了,則要對(duì)密碼進(jìn)行檢查,如果通過了,則會(huì)顯示用戶信息,同時(shí)也允許用戶對(duì)記 錄進(jìn)行操作,而所有得操作都就是由用戶自行隨意選擇得,直到用戶選擇退岀系統(tǒng)之后,程序 便會(huì)結(jié)束。這就是在用戶輸入得帳號(hào)與密碼都通過檢査得情況。如果帳號(hào)沒有通過檢査,系 統(tǒng)便會(huì)要求用戶重新輸入,然后系統(tǒng)再對(duì)英進(jìn)行檢查,通過了就繼續(xù),通不過則還要重新輸入, 但用戶輸入帳號(hào)得次數(shù)最多只有三次。三次之后,系統(tǒng)變會(huì)自行推出。如果帳號(hào)通過了檢查, 而密碼沒有通過,那么系統(tǒng)也會(huì)要求用戶重新輸入,同樣輸入得次數(shù)不會(huì)超

19、過三次,否則系統(tǒng) 便會(huì)自行退出、這便就是main( )函數(shù)得具體設(shè)訃思想與具體得功能得描述。三、實(shí)驗(yàn)程序測(cè)試1、程序開始執(zhí)行時(shí)系統(tǒng)得所顯示得頁面:歡迎使用個(gè)人財(cái)政支岀管理系統(tǒng)!2、2、選擇退出系統(tǒng):3、選擇登陸,并且輸入得帳號(hào)與密碼都正確:歡迎使用個(gè)人財(cái)政支岀管理系統(tǒng)!0、 一 號(hào)碼_ 帳密 £ 輸輸一 主啟主啟一1001111111-一請(qǐng)選擇您妥進(jìn)行的操作,錄錄更勺有有 記記記SS5 找加密出出 2 3 4 5 6 7注名=wang 吒號(hào)二1001號(hào)在號(hào)在號(hào)在用y 入不入不入不您S es.-rrr> > E -二rm > £ 二rm , £AN

20、4、用戶輸入得帳號(hào)不正確:1,請(qǐng)重新輸入!:1,請(qǐng)重新輸入!:1 般輛 kej/ to continue5、用戶輸入得帳號(hào)正確,密碼不正確:10011thecodeiswrong,pleaseinputagain?thecodeiswrong,pleaseinputagain?Lthe1codeiswrong,pleaseinputagain?Lthecodeiswpong,pleaseinputagain?翳髒籬影請(qǐng)歆吾統(tǒng)謝謝使甩再見!Press any key to continue.6、用戶進(jìn)行具體操作:姓名:wang.西 I請(qǐng)輸入您要查詢的日期:07-01 -01 dateoperat

21、e money07-01-01in3000善輸入你要插入的位置;需j入您要添卽的記錄;日期;07-05-01襟作;in金額;1000dateoperatenun07-05-81in100007-01-81in300007-02-81out-150007-03-01in250007-04-01out-1000總金希為二4000總收入為二6500總支出為:-25004-52.尸 <4-第輸入您曼刪除的記錄的說置:25 dateopepatenum07-05-01in100007-02-01out-150007-03-01in250007-04-01out1000總金額為:1000總收入為,3

22、500總支出為:-2500Dda.t eopera七巳num07-05-01in100007-03-01in2500總收入金額為二3500da.t eopera七巳num07-02-01-150007-04-01-1000總的支岀為:-2500感謝您使用本系統(tǒng),再見!Press anyf key to continue.四、實(shí)驗(yàn)程序自我評(píng)價(jià)。在這個(gè)程序中,我認(rèn)為我已經(jīng)完成了所要求得基本操作,同時(shí)也增加了相應(yīng)得功能模塊來 讓用戶操作。設(shè)計(jì)得基本原則就就是盡可能得滿足用戶得所有要求,同時(shí)也能盡可能方便得 使用戶對(duì)系統(tǒng)進(jìn)行操作。雖然這個(gè)程序可能還有不足之處,但我對(duì)于這個(gè)程序還就是比較滿 意得。五、課

23、程設(shè)計(jì)創(chuàng)新本程序主要模仿就是就是銀行得ATM機(jī)得相關(guān)功能,除此之外,還增加了允許用戶對(duì)于 記錄得一些操作。而不就是只允許用戶進(jìn)行查瞧,這樣就增加了系統(tǒng)得靈活性、六、課程設(shè)計(jì)總結(jié)。本程序在編寫就是,主要就就是基于用戶得角度去分析該如何設(shè)計(jì)此程序,與編寫功能模 塊得。在編寫程序時(shí),所有得數(shù)據(jù)都就是對(duì)結(jié)構(gòu)體進(jìn)行得操作,在此過程中,我發(fā)現(xiàn)了自己在對(duì) 指針操作得時(shí)候,尤其就是對(duì)指向結(jié)構(gòu)體數(shù)組得指針與指向結(jié)構(gòu)體得指針得操作都不夠熟 練。但在編寫完此程序之后,我感覺自己對(duì)語法得應(yīng)用有了明顯得提高。七、參考書目:。1、C程序設(shè)計(jì)(第三版)譚浩強(qiáng)淸華大學(xué)出版社2、數(shù)據(jù)結(jié)構(gòu)(C語言版)譚浩強(qiáng)淸華大學(xué)出版社3、程序

24、設(shè)計(jì)基礎(chǔ)(C語言版)龍昭華 王玉柱重慶大學(xué)岀版社八、實(shí)驗(yàn)程序源代碼#includ e (std i o。h)#in c 1 u dc<stringo h)#d e fine n u 110#d e f ine max 20#dcf i ne ok 1stru c t r ecord char date 20;cha r opera t e 20;int num;stru c t 1 i s r ecord c h a r account20;char code 20;ch a r name 20;i n t r e c_lc n ;stru c t r e c o r d rec max

25、;r max;/ /系統(tǒng)原有數(shù)據(jù),用戶不可知i nt o ld_record( struct li s t_record r )inti;fo r (i=0;i3; i +) r i a recjen=4;strcpy( r 0> a ccount,H 1 00 1 ");賬號(hào)st r cpy(r 1 .ac c ou n t1002”);s t rcpy(r2、a cc o unt,"1003'');strep y (r( 0 code,” 111111 J; 密碼strcpy(rl. c o de,"2 2 2222J;stre p y

26、( r 2、c o de," 3 3 3 3 3 3 ");st r cpy( r 0、nam e ,M xvaiig )7/姓名 st r cpy(r 1 、name ," IiM);stre P y( r 2 <> name ,Hzha n gj;strcpy(r 0. r ec 0o date,11 07-0101); /日期 stre p y( r 0 .rec 1 d alc07020 1 ");strcpy( r OJ.rec 2。d a te,"070 3 0 1 M ); s trcpy(rO、re c 3d a t

27、 e07 4 -01°);s t rcpy( r 1 .re c 0o d a t e0 7 - 0 1 0 2 H); str c py(r 1> rec 1 .dat e070 2 - 0 2 M);str c py(r 1 .rec2o d a te;*O 7 03 2M); strepy(r lx rec 3、date070 2J; strcpy( r 2。rec0.da t e/r 0 7-0 1 3 H);s trcpy(r 2 r e c 1 、dat e 0 7-02 3 ” );s t rcpy(r 2、rec 2 o d a t e,M0 7-03-0 3H

28、); stre py(r2、re c 3 .d a te/07 04-0 3J; strcpy( r 0 c r e c0、ope r ate;'inH);str c py( r 0、rec 1。o p era t e/'outH);strcpy(r0o rec 2 o op e rate/m");s t rcpy(r 0。re c 3 operate,"。u t M );st r c p y( r 1 .rec 0、operate/1 o uQ;s t r cp y ( r 1 .rec 1 .op e rate/* i nM);st r cpy(rl o

29、 rec 2o o p erate,H o u t "); strep y ( r 1、rec3、o p erate,Min H);s trcpy(r2、rc c 0 . operat e Jin J;s trcpy(r2x recl 、o p e r ate/on t ”); strcpy(r2.rec 2。oper a te/l n ”); s t rcpy(r2 .re c3> o p e rate;outH);r0o rec 0、num=3000;r 0o re c 1 、num=1500;r 0 、rcc 2 、num=2 5 0 0;r 0、rec 3、num=10

30、00;rl> r e c 0n u m=-300 0 ;r 1 <> rec 1n u m=5000;r lo rcc2、num=100 0 ;r 1 r e c2.n u m=2 0 0 0;r 2x rec 0 .num= 1 00 0 ;r 2.rec 1 、n u m= 1 500:r2、r e c2o num=3000;r2、rec 2 .num =-500;r e turn ok:)將數(shù)據(jù)寫入文件void s a ve()FILE * f p;int i;i f (f p =fopen(Hwenjia n M wb,>)= =null)/只允許寫數(shù)據(jù) prm

31、tf(, can no t ope n the file。 n M);r e tu r n ;for(i= 0 ; i <niax;i+)if(fw r i t e (& r i ,sizcof(s t ruct list_ r e c o r d),l,f p )! =1)p rintff' erroro n ");fc 1 o se(fp);/文件讀岀voi d loa d () FILE *fp;int i;i f(f p =f o pen ("wen j i a nMrb")=null)pri n tf(H can no t ope

32、n i n f i 1 e0 nH);ret u rn;f o r(i=0;i (ma x ;i+)i f (fread(&r i ,sizco f (struct lisLreco r d)J,f p )! =1) if (fe o f (fp)/ /文件結(jié)束為1;否則為0(fc I o s e ( f p);Return;/為什么在這加returnfc 1 o s e( f p);/將用戶輸入得帳號(hào)與系統(tǒng)中原有帳號(hào)比較,查找用戶帳號(hào)i nt lookup_accou n ts( s tru c t 1 i st_reco r d r .char acc)inti;f o r(i=0

33、;i (3;i+)if(strcnip( r i.acc o unt,acc)=0)ret u rn ok;printf( ”帳號(hào)不存在,諳重新輸入!n”);return null;/檢査密碼函數(shù)a cc ,cha r cs t ruct listr e co r d check, c ode(st r uct listre c or d r ,char)i nt i ;struc t I i s t_r e cord a;str cpy(aB accoun t," 0 ”);s t r c p y (a、c ode,M 0”);a.recJen=0;f o r(i=0;i (a0

34、re c _len;i+)stre p y (a« rec i.d a t e ,H 0H);st r c p y(a> r eci.o p erate,H0;a、rec ix num=0;fo r ( i =0;i (3;i+)if( s trcmp(r 訂.account, acc )=0)if(s t rcmp(ri<> c ode,c)=0) retur n r i;pr i n tfCt h e c o de is wrong, pie a se i n p u t again! nH); ret u r n a ;顯示用戶基本信息void prinMne

35、ssag e ( s tm c t 1 i s trecor d*p)p r intf(M 姓名:sn",p) name);pr i nt f C 帳號(hào):sn ” ,(*p)、a ccou n t);根據(jù)用戶輸入得日期,查找記錄int f ind_reco r d( s tnic tlist_ r ec o rd c har d )int i: f o r( i =0;i<( * p)o rec_ 1 e n ;i+)。i f(strcmp(*p).re c i .date, d )= 0 )operate money n ”);"(*p)> recix dat

36、e);",(*p)、rcc i 、op e r a t e);P rin t f (Md a tep ring % sprint %sp r intf("% d n'(*p)% reci .n u m);ok;re t u r nc _ 1 en)is not ex i t! n ");if( i =(*p)o r e p r i ntff' t he dat e r etur n n u 11;插入函數(shù),根據(jù)用戶輸入得信息,增加記錄i n t i n s e r t_record( s t r u ct lis t _ r e c ord * p

37、,st r u c t record *pLint loint i ;i f(l o p (1)11( I op>(*p).rec_len+1)prin t f(H th e p o sit i o n i s wron g An ”);r eturn 0;e Isefo r ( i =( * p)o rec_le n ; i >lop l;i)astrcp y «*P).reci .date,(*p)o rec i1 da t e);str c p y( * p ).rec i .ope rat e,(*p)o r e c i 1 © op e rate);(

38、*p)x rec i。num=( * p)o r e c i 1 <> num;s t rc p y(p>rec i、date, p 1 d ate);st rcpy (*p)x rec i0 opera tc,(*pl)。ope r ate);(*p)> re ci n u m = (* pl)。 n u m;(*p)x rec_le n +;retu r n ok;/刪除記錄函數(shù)i n t d e l_rc c or d ( stru c t listrec o rd * p Jn t lop 2 )in t i ;i f (lop2 <1)1 I (lop2

39、) (*p). r e cJen)。prmtfCthe posit i on is w r o n g An ");return null;elsefor(i=lop2-l;i(*p)、re c _ I e n-l;i+)。 strep y (* p ). r e c 訂d a t e,(水 p )。rec i+1 .date);str c py( * p).re c i。op e r a te,(*p).rec i+l。op e r a te);(*p)、recix num=(*p)x rec i +l.nu m;(*p)o rec Jen;re t u r n ok;輸出全部記錄

40、函數(shù)o p eraten u mn ");e c_lcn;i+),(*p).reci d a te);M X* p )o rec i ope r a te) ",(*p)o rec i o num);v o id al 1 _p r i n t ( s true t lister e c o r d * p ) < inti;p ri n t f(11 datef o r(i=0;i<(* p )o r pnntfC%s aprint f (吆sp nntff%dprintf(H n,f);計(jì)算總得錢數(shù)i n t s u m_ n u m( stru c t l

41、istr e cord * p)int i ;int s um=0;in t s um_in=0;i n t sum_o u t=0;f o r ( i =0;i <( * p).rec_ 1 e n; i +) sum+=(*p)o reci. n u m;if(*p).recix nunr>0)s u m_in+=( *p)。re c i .num;i f( *p).re c i 、numVO) sum.o ut+=(*p)«> re c i、num;p rintf(M 總金額為:% d n sum);p ri n tf(M 總收入為:d n sum_ i n)

42、;printf(°總支出為:%dn ” , s um_out);ret u rn ok;/輸岀收入記錄in t a c c_p r i nt( str u ct list_re c or d *p)i n t i;i n t sum_ a cc=0;p r in t f(" d a te o p e r aten u m n ”);f o r(i=0;i <(*p).re c Jen; i +)if( * p).rec i. n um>0)s um_acc+=(*p).rec 訂。num;p r i n t f (H%srec io d ate);p r i n

43、tf(n% s11 X*p)- r ec i 、op e rate);pri n tf("%d" ,(*p)、rec 訂、num);p r in t f C n J;p r intf(M 總收入金額為:% d n s um_ a c c); re t urnok;i f (s u m_acc=0)pnntfC t h e re is n o a ccounto n'J;ret u rn null;輸出支岀記錄i n t p ay_pri n t ( str u c t lisLre c o r d *p) i nt i;i nt sum_pay=0;pri n t

44、f C d at e o p era t en u mnM);f o r ( i =0;i<p->recJ e n;i+)if(*p)o recio num<0)sum_pay+=( *p)0 r c c i、num;prin t ff'% s':(次 p )o rec i .date);pr i ntf(91 %s”,(*p)、rec ij.opera t e);opr i nt f C%d';(次p)、rec ij.num);prin t f(" n J;printf(” 總得支出為:% d n's u m_pay);r e tu

45、 r n ok;if(sum_p a y =0)printf(vt h e re i s no p a youto n u);retu rn null;v o id mai n ()(in t j= 0 .n=O;/n記錄密碼輸入次數(shù)int x, k ,1 o pl,lop2; / / k為命令數(shù)字選項(xiàng)ch a r datal 20:char a c cou20, c od 20 ; / /accou 賬號(hào) cod 密碼s t ru c t record * p07/內(nèi)容就是由用戶輸入得stru c t rec o rd a;s t met 1 i st_re c or d b;s t met

46、 1 ist_ r eco r d *p;b、r ec_len=0;p0=&a;o 1 d_reco r d (r);s a ve();Io a d();/ / 顯示pri n tf("歡迎使用個(gè)人財(cái)政支出管理系統(tǒng)! n”);print f (" 一 nM);printf(uIln°);printf( ”11 .登陸系統(tǒng)I n”);p r int f ( - I任意鍵、退出系統(tǒng)l n ");printf(MIln");pr i n t f("- 一一一一-A n ”);sc a nfC%d 11,& x);if( x ! =1)p r int f (”感謝您使用本系統(tǒng),再見!n”);elsedoprint f(” 請(qǐng)輸入帳號(hào):”);/whi le(j<3);scanf(M %s M .a

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論