版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、個人財政支出管理付欣05計算機四班指導(dǎo)老師:梁新元一、問題描述及分析 1二、實驗程序設(shè)計思想及功能描述 13、主要函數(shù)模塊的設(shè)計思想和具體實現(xiàn) 2三、實驗程序測試 41、程序開始執(zhí)行時系統(tǒng)的所顯示的頁面: 42、選擇退出系統(tǒng):53、選擇登陸,并且輸入的帳號和密碼都正確: 54、用戶輸入的帳號不正確: 55、用戶輸入的帳號正確,密碼不正確: 6四、實驗程序自我評價 7五、課程設(shè)計創(chuàng)創(chuàng)新 7六、課程設(shè)計總結(jié) 7七、參考書目:7八、實驗程序源代碼 8一、問題描述及分析編寫一個個人財政支出管理系統(tǒng),主要解決的問題是作為一個系統(tǒng)而言,它所要面對不只是某一個人而言,而是要面對很多的用戶。那么想要解決這一問
2、題,就必須要求這個系統(tǒng) 能夠存儲許多用戶的基本信息和記錄。同時也要求系統(tǒng)能夠?qū)Σ煌挠脩舻纳矸葸M行查找和驗證。在驗證通過之后,在對其進行用戶所要求的操作。作為一個財政支出系統(tǒng),那么就要求對于用戶關(guān)于金錢的每一項操作都要有相應(yīng)的記 錄,同時并允許用戶對于每一條整體的記錄進行操作,例如可以根據(jù)時間來查找某一確定日期是否進行了收入或者支出的操作,也可以根據(jù)特定的需要來刪除某一條整體的記錄。但不允許對每條記錄的單項數(shù)據(jù)進行更改,因為不管是收入還是支出, 所涉及的金額都是固定的,時間也是固定的,所以系統(tǒng)不允許用戶對其進行操作。除此之外,還必須有足夠大的空間來存儲新的記錄。所以此程序就是基于這個思想而編寫
3、出來的,基本滿足了用戶對于一個財政支出管理系統(tǒng)所要求的相關(guān)功能。二、實驗程序設(shè)計思想及功能描述根據(jù)前面對于編寫一個個人財政支出管理系統(tǒng)的程序的問題描述和分析,確定了此程序的基本思想和相關(guān)功能。1、基本思想首先定義一個結(jié)構(gòu)體數(shù)組,這個數(shù)組的功能便是用來所有用戶的所有信息。它的成員為每個用戶的帳號(account)、密碼(code)、姓名(name)、記錄(record recmax),以及記錄的條 數(shù)(rec_len)。其中記錄(record recmax)這個成員本身也是一個結(jié)構(gòu)體數(shù)組。它包含了用戶 所有的記錄(record),并且根據(jù)用戶的操作,記錄這個成員變量也會有所跟改,例如如果擁 護增
4、加了一條記錄,那么這一條記錄就會存儲在此成員變量中。除了這個成員變量是動態(tài)變化之外,記錄的條數(shù)(rec_le n)也會根據(jù)用戶的操作進行變化,例如如果用戶增加了一條記錄,貝U rec_len就會自加1,如果用戶刪除了一條記錄,則rec_len就會自減1。記錄(recordrecmax)這個成員變量是以后函數(shù)中操作的主要內(nèi)容。除了這兩個成員變量之外,其它的 成員變量則不會被改變,系統(tǒng)只允許用戶對其進行訪問,但不允許進行操作,因為這幾個成員變量的作用主要是用來驗證用戶的身份用的,所以不可以更改。其中的密碼(code)甚至只能別系統(tǒng)調(diào)用,而不能對用戶進行顯示的,也就是說密碼(code)對于用戶是不可
5、預(yù)知的,這樣做的目的是為了系統(tǒng)自身的安全性,以免用戶的信息被其他人看到。這就是這個結(jié)構(gòu)體數(shù)組的功能和基本成員變量及各個成員變量的功能。定義了結(jié)構(gòu)體數(shù)組之后,首先要做的就是要把所有的記錄都存入這個結(jié)構(gòu)體數(shù)組中,以方便用戶的操作。所以在 main函數(shù)中有系統(tǒng)自行調(diào)用了old_record這個函數(shù)來存入信息。在此之后進行的操作便是讓用戶選擇所要進行的是登陸系統(tǒng)的操作還是退出系統(tǒng)的操作。如果選擇登陸,則要輸入帳號和密碼。之后由系統(tǒng)來檢查帳號的存在性和密碼的正確性。如果這兩項都通過了系統(tǒng)的檢查,那么用戶便可以進行具體記錄的操作了。這便是這個程序的基本設(shè)計思想。2、各個函數(shù)模塊的功能(1) old_rec
6、ord():此函數(shù)由系統(tǒng)自行調(diào)用,作用是將所有用戶信息存入系統(tǒng)。(2) void save():此函數(shù)的作用是將結(jié)構(gòu)體數(shù)組中的信息寫入文件存儲,由系統(tǒng)調(diào)用。(3) load():此函數(shù)的作用是將結(jié)構(gòu)體數(shù)組中寫入文件的信息讀出,由系統(tǒng)調(diào)用。(4) lookup_accounts():此函數(shù)的作用是將用戶輸入的帳號與系統(tǒng)中的所有帳號進 行對比,查看系統(tǒng)中是否有此帳號。(5) check_code():此函數(shù)是作用是在系統(tǒng)查詢到了帳號之后,對用戶輸入的帳號和密 碼進行檢驗,看是否相對應(yīng)。(6) print_message():此函數(shù)的功能是在系統(tǒng)檢查了用戶輸入的帳號和密碼之后, 如果用戶通過了系統(tǒng)的
7、檢查,在此顯示用戶可見的基本信息。(7) find_record ():此函數(shù)的作用是根據(jù)用戶輸入的日期進行查找操作。(8) insert_record ():此函數(shù)的功能是在記錄中增加一條新的記錄,這個記錄由用戶 輸入。(9) del_record ():此函數(shù)的功能是根據(jù)用戶的輸入的位置,將相應(yīng)位置的記錄刪除。(10) sum_num ():此函數(shù)的功能是計算所有收入和支出的總和,計算全部的收入的 總合,計算全部輸出的總合。(11) 打印輸出記錄的函數(shù):在本程序中一共有三個打印輸出記錄的函數(shù),分別為all_print ( )、acc_print ( )、pay_print ()這三個函數(shù)。
8、它們的功能依次是打印輸出全部 記錄,打印輸出輸入記錄,打印輸出支出記錄。(12) mian():在主函數(shù)中,可以根據(jù)用戶的選擇來操作系統(tǒng)允許用戶使用的功能,也 可以隨時退出這個系統(tǒng)。3、主要函數(shù)模塊的設(shè)計思想和具體實現(xiàn)(1) void save()函數(shù) 和 load()函數(shù)。這兩個函數(shù)的功能是在系統(tǒng)調(diào)用了old_record()這個函數(shù)之后,結(jié)構(gòu)體內(nèi)就有了所有用戶的所有信息。Save()函數(shù)的作用是將所有的信息都存入文件中,便于數(shù)據(jù)的保存和讀取。Load ()函數(shù)的作用則是把存入的文件中的信息讀出來。這兩個函數(shù)所涉及的知識點為文件 的讀入和寫出。主要是freadhe和fwrite兩個函數(shù)的應(yīng)用
9、。它們的一般調(diào)用形式為:fread(buffer,size,co un t,fp); fwrite(buffer,size ,co un t,fp);其中:Buffer:是一個指針,對fread來說,它是讀入數(shù)據(jù)的存放地址。對fwrite來說,是要輸出數(shù)據(jù)的地址。Size:要讀寫的字節(jié)數(shù)。Cou nt:要進行讀寫多少個 size字節(jié)的數(shù)據(jù)項。Fp;文件型指針。調(diào)用這兩個函數(shù)之后,如果調(diào)用成功,則函數(shù)返回值為count的值,即輸入或輸出數(shù)據(jù)項的完整個數(shù)。(2)lookup_accounts ()函數(shù)和 check_code()函數(shù):這兩個函數(shù)的功能主要是用來核對用戶的身份。系統(tǒng)先檢驗的是axxo
10、unts這個函數(shù)。根據(jù)用戶輸入的帳號與系統(tǒng)中所有的帳號進行比較,查找看是否有相同的。如果找到了,則進行對密碼進行檢驗,看密碼與帳號是否對應(yīng)。 在檢驗帳號的時候,如果用戶輸入的帳號在系統(tǒng)中不存在,系統(tǒng)則會給出提示要求用戶從新輸入。但如果用戶輸入了三次體統(tǒng)都找不到帳號的時候,系統(tǒng)則會強制要求用戶退出系統(tǒng),此時則顯示結(jié)束語的歡迎詞。而如果帳號找到了,但用戶輸入的密碼與原有密碼不一致,系統(tǒng)也會給出提示信息要求用戶再次輸入。同樣的,如果用戶輸入三次體統(tǒng)都檢驗到不是正確的密碼的時候,系統(tǒng)則會強制要求用戶退出系統(tǒng),此時則顯示結(jié)束語的歡迎詞。在這兩個函數(shù)中主要用到的知識點就是對字符串的相關(guān) 操作。如果帳號和密
11、碼都通過檢驗之后,此函數(shù)則將返回struct list_record類型的數(shù)據(jù)。字符串處理的函數(shù)主要有以下幾個:puts函數(shù):其一般形式為puts(字符數(shù)組)。其作用是將一個字符串輸出到終端。Gets函數(shù):其一般形式為gets (字符數(shù)組)。其作用是從終端輸入一個字符串到字符數(shù)組, 并且得到一個函數(shù)值。該函數(shù)值是字符數(shù)組的起始地址。Stract函數(shù):其一般形式為strcat(字符數(shù)組1,字符數(shù)組2)。Strcat是字符串連接的縮寫。 其作用是連接兩個字符數(shù)組中的字符串,把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后得到一個函數(shù)值一一字符數(shù)組1的地址。Strcpy函數(shù):其一般形式
12、為strcpy(字符數(shù)組1,字符數(shù)組2)。Strcpy是字符串復(fù)制的簡寫。它的作用是將字符串2復(fù)制到字符數(shù)組1中去。在本程序中。用到的最多的便是此函數(shù)。strcmp函數(shù):其一般形式為strcmp(字符串1,字符串2)。Strcmp是字符串比較的縮寫。 它的作用是比較字符串1和字符串2,比較的結(jié)果有函數(shù)值帶回。如果字符串仁字符串2,則函數(shù)值為0;如果字符串1大于字符串2,則函數(shù)值為一個正整數(shù),否則則為負整數(shù)。(3)find_record ()函數(shù):此函數(shù)的功能是根據(jù)用戶輸入的時間查找當(dāng)天的記錄。這個函數(shù)的參數(shù)為一個指向結(jié)構(gòu)體的指針和一個字符串。字符串是用語輸入的日期,指向結(jié)構(gòu)體的指針指向的則是用
13、戶輸入 的帳號的這個結(jié)構(gòu)體。如果找到了用戶輸入的日期,則輸出當(dāng)天的所以記錄。如果找不到, 則顯示無此日的記錄。(4)insert_record ()函數(shù)和 del_record ()函數(shù):這兩個函數(shù)的功能是增加新的記錄和刪除用戶指定的記錄。在insert_record()函數(shù)中,此函數(shù)的參數(shù)是一個指向struct list_record的指針和一個指向 struct record的指針還有一個選擇插入位置的整形變量。在主函數(shù)中,先定義一個struct record的結(jié)構(gòu)體。這個結(jié)構(gòu)體的內(nèi)容是由用戶輸入的,也就是用戶所要向struct list_record這個結(jié)構(gòu)體中輸入的新的記錄的內(nèi)容。然后
14、再在主函數(shù)中定義一個指向struct record結(jié)構(gòu)體的指針,并指向已經(jīng)輸入記錄的結(jié)構(gòu)體,最后將此指針作為實參傳入函數(shù)。由于向函數(shù)中傳如是指針,所以在函數(shù)中記錄更改之后,返回主函數(shù)的是更改后的記錄。在del_record()函數(shù)中,有用戶在主函數(shù)中輸入要刪除的記錄的位置,然后調(diào)用此函數(shù),那么就會執(zhí)行刪除該記錄的操作。與insert_record函數(shù)一樣,參數(shù)傳遞的也是指針,所以在函數(shù)中更改的記錄,返回主函數(shù)后依 舊是更改后的記錄。(5)sum_num ()函數(shù):此函數(shù)的功能是用來計算用戶所有記錄中的錢數(shù)的總和,以方便用戶對于系統(tǒng)的操作, 同時也可以使用戶對自己的帳戶有更深入的了解。除此之外,
15、該函數(shù)還能會對用戶所有的收入和所有的支出進行求和,使用戶能夠知道自己的所有的收入的總和和所有支出的總和,這樣也方便了用戶進行下一步的操作。(6)打印輸出函數(shù):在此程序中,打印輸出函數(shù)共有三個,分別是輸出全部記錄,輸出收入記錄和輸出支 出記錄。在這里定義三個輸出函數(shù)是為了方便用戶能夠更容易的進行操作。假設(shè)只有一個輸出全部記錄的函數(shù),那么如果用戶只想查看收入的記錄或者支出的記錄,此時用戶只能自己一條一條的去查看,這樣就會讓用戶感到不方便。一個良好的管理系統(tǒng)的目的就是能盡可能的滿足用戶的所有需要,分工越是精確越好, 所以為了滿足此項要求, 在此定義了三個輸出函數(shù)。(7)main()函數(shù):在一個程序中
16、,mai n()函數(shù)是最為重要的一個函數(shù),因為它是所有程序執(zhí)行的入口。同時函數(shù)也是以 main()函數(shù)的結(jié)束作為結(jié)束的,由此可見main()函數(shù)的重要性。在本程序中,所以的功能模塊函數(shù)都是在main()函數(shù)中調(diào)用的,這樣做的目的是為了是整個程序的結(jié)構(gòu)簡單緊湊,同時也是為了程序的調(diào)試方便。但這樣也就相對的增加了main ()函數(shù)的復(fù)雜性。在本程序中,main()函數(shù)中涉及的語法知識包括循環(huán)的嵌套使用,分之結(jié)構(gòu)的嵌套使用,指針的應(yīng)用,指向結(jié)構(gòu)體指針的應(yīng)用等許多語法結(jié)構(gòu)。因為main()函數(shù)在本程序中有著至關(guān)重要的作用,所以在此詳細說明。在程序開始 執(zhí)行之后,首先由用戶來選擇是要登陸系統(tǒng)還是要推出系
17、統(tǒng)。如果是退出系統(tǒng),那么程序便會結(jié)束。如果選擇登陸,那么系統(tǒng)便會要求用戶輸入帳號和密碼。系統(tǒng)先會對帳號進行檢查,如果檢查通過了,則要對密碼進行檢查,如果通過了,則會顯示用戶信息,同時也允許用戶對記錄進行操作,而所有的操作都是由用戶自行隨意選擇的,直到用戶選擇退出系統(tǒng)之后, 程序便會結(jié)束。這是在用戶輸入的帳號和密碼都通過檢查的情況。如果帳號沒有通過檢查, 系統(tǒng)便會要求用戶重新輸入,然后系統(tǒng)再對其進行檢查,通過了就繼續(xù),通不過則還要重新輸入,但用戶輸入帳號的次數(shù)最多只有三次。三次之后,系統(tǒng)變會自行推出。如果帳號通過了檢查,而密碼沒有通過,那么系統(tǒng)也會要求用戶重新輸入,同樣輸入的次數(shù)不會超過三次,否
18、則系統(tǒng)便會自行退出。這便是main ()函數(shù)的具體設(shè)計思想和具體的功能的描述。三、實驗程序測試1、程序開始執(zhí)行時系統(tǒng)的所顯示的頁面:2、選擇退出系統(tǒng):3、選擇登陸,并且輸入的帳號和密碼都正確:歡迎使用個人財政支岀管理系統(tǒng)!1.青輸帳號:1001一一擇您要進行的操作錄錄 記記 靈岀 記收支 錄錄nlE有有 記記記 n川陳出出出 查弟入不入不入不您 恰樹養(yǎng)養(yǎng)弓謝ft-2底號二1呢丄4、用戶輸入的帳號不正確:卷杳,請重新輸入! :簷:請重新輸入! 露;誼聖新SiAi 候用本索統(tǒng),謁兆!an5/ ke to continue5、用戶輸入的帳號正確,密碼不正確:code codeisiswronsr,p
19、lease wrong., pleaseinfiut inputaain! again *codeiswrong,pleaseinputthek的密碼不正裁 請退出系統(tǒng),謝謝使用,再見I 感謝您使用本累統(tǒng),再嗎!Pi?ess anv kei to continu.eHcodeisuroriQf, pleaseinputaain*6、用戶進行具體操作姓名:wan a1:1001請輸入您要查詢的日期;dateoperateinB7-01-01請輸入你要插入的位置,1請摘入您要添加的記錄;日期:07-05-01in07-01-01mone3000準額=1000dateoperatenunt07-05
20、-Mlin07-01-R1in30R00?-02-01out-150007-0301in07H4out-100A怠金額為:4000總收入為二殆加總支岀為:-2500b輸入您要刪除的記錄的位置:2date07-05-01 07-02-01 07-03-01 07-04-01 總?cè)聻? 總收入為: 總支出為: 6 date 07-05-01 07-03-01operate in out in out 1000 3500 -25 0Boperateinin國收入金額為:35007dateoperate07-02-01out07-04-01怠的支岀為乞out-2500豈謝您使用本系統(tǒng),num1000
21、 -15002500-1000num 1000 2500num -1500 -10M0再見I呑 any key to四、實驗程序自我評價在這個程序中,我認為我已經(jīng)完成了所要求的基本操作, 同時也增加了相應(yīng)的功能模塊來讓用戶操作。設(shè)計的基本原則就是盡可能的滿足用戶的所有要求,同時也能盡可能方便的使用戶對系統(tǒng)進行操作。雖然這個程序可能還有不足之處, 但我對于這個程序還是比較滿意 的。五、課程設(shè)計創(chuàng)新本程序主要模仿是是銀行的 ATM機的相關(guān)功能,除此之外,還增加了允許用戶對于記 錄的一些操作。而不是只允許用戶進行查看,這樣就增加了系統(tǒng)的靈活性。六、課程設(shè)計總結(jié)本程序在編寫是,主要就是基于用戶的角度去
22、分析該如何設(shè)計此程序,和編寫功能模塊的。在編寫程序時,所有的數(shù)據(jù)都是對結(jié)構(gòu)體進行的操作,在此過程中,我發(fā)現(xiàn)了自己在對 指針操作的時候,尤其是對指向結(jié)構(gòu)體數(shù)組的指針和指向結(jié)構(gòu)體的指針的操作都不夠熟練。 但在編寫完此程序之后,我感覺自己對語法的應(yīng)用有了明顯的提高。七、參考書目:1、 C程序設(shè)計(第三版)譚浩強 清華大學(xué)出版社2、數(shù)據(jù)結(jié)構(gòu)(C語言版)譚浩強 清華大學(xué)出版社3、程序設(shè)計基礎(chǔ)(C語言版) 龍昭華 王玉柱重慶大學(xué)出版社八、實驗程序源代碼#in clude<stdio.h>#in clude<stri ng.h>#define null 0#defi ne max 2
23、0#define ok 1struct recordchar date20;char operate20;int num;struct list_recordchar acco un t20;char code20;char n ame20;int rec_le n;struct record recmax;rmax;系統(tǒng)原有數(shù)據(jù),用戶不可知int old_record( struct list_record r) int i;for(i=0;i<3;i+)ri.rec_le n=4;strcpy(r0.account,"1OO1"); 賬號strcpy(r1.acc
24、ou nt,"1002"); strcpy(r2.accou nt,"1003"); strcpy(r0.code,"111111"); 密碼 strcpy(r1.code,"222222"); strcpy(r2.code,"333333"); strcpy( ,"wang");/ 姓名 strcpy( ,"li");日期strcpy(r2. name ,"zha ng"); strcpy(r0.rec0.
25、date,"07-01-01"); strcpy(r0.rec1.date,"07-02-01"); strcpy(r0.rec2.date,"07-03-01"); strcpy(r0.rec3.date,"07-04-01"); strcpy(r1.rec0.date,"07-01-02"); strcpy(r1.rec1.date,"07-02-02"); strcpy(r1.rec2.date,"07-03-02"); strcpy(r1.rec3
26、.date,"07-04-02"); strcpy(r2.rec0.date,"07-01-03");strcpy(r2.rec1.date,"07-02-03");strcpy(r2.rec2.date,"07-03-03");strcpy(r2.rec3.date,"07-04-03");strcpy(r0.rec0.operate,"i n");strcpy(r0.rec1.operate,"out");strcpy(r0.rec2.operate,
27、"i n");strcpy(r0.rec3.operate,"out");strcpy(r1.rec0.operate,"out");strcpy(r1.rec1.operate,"i n");strcpy(r1.rec2.operate,"out");strcpy(r1.rec3.operate,"i n");strcpy(r2.rec0.operate,"i n");strcpy(r2.rec1.operate,"out");str
28、cpy(r2.rec2.operate,"i n");strcpy(r2.rec3.operate,"out");rO.recO. num=3000;r0.rec1. nu m=-1500;r0.rec2. nu m=2500;r0.rec3. nu m=-1000;r1.rec0. nu m=-3000;r1.rec1. nu m=5000;r1.rec2. nu m=-1000;r1.rec2. nu m=2000;r2.rec0. num=1000;r2.rec1. nu m=-1500;r2.rec2. nu m=3000;r2.rec2. nu
29、m=-500;return ok;/將數(shù)據(jù)寫入文件void save()FILE *fp;int i;if(fp=fope n( "wenjia n","wb")=null)/只允許寫數(shù)據(jù)pri ntf("ca n not ope n the file.n");return;for(i=0;i<max;i+)if(fwrite(&ri,sizeof(struct list_record),1,fp)!=1)prin tf("file write error.'n");fclose(fp);文件
30、讀出void load()FILE *fp;int i;if(fp=fope n( "wenjia n","rb")=nu II)pri ntf("ca n not ope n in file.n");return;for(i=0;i<max;i+)if(fread(&ri,sizeof(struct list_record),1,fp)!=1) if(feof(fp)文件結(jié)束為1;否則為0 (fclose(fp);Return;/為什么在這加 returnfclose(fp);將用戶輸入的帳號與系統(tǒng)中原有帳號比較,查找
31、用戶帳號int lookup_acco un ts( struct list_record r,char acc)int i;for(i=0;i<3;i+)if(strcmp(ri.acco un t,acc)=0)return ok;printf("帳號不存在,請重新輸入!n");return n ull;/檢查密碼函數(shù)struct list_record check_code(struct list_record r,char acc,char c) int i;struct list_record a;strcpy(a.acco un t,"0&quo
32、t;);strcpy(a.code,"0");a.rec_le n=0;for(i=0;i<a.rec_le n; i+)strcpy(a.reci.date,"0");strcpy(a.reci.operate,"0");a.reci. num=0;for(i=0;i<3;i+)if(strcmp(ri.acco un t,acc)=O)if(strcmp(ri.code,c)=0)return ri;prin tf("the code is wron g,please in put aga in!n ”);
33、return a;顯示用戶基本信息void prin t_message( struct list_record *p)printf("姓名:%sn",p->name);printf("帳號:%sn",(*p).account);根據(jù)用戶輸入的日期,查找記錄int fin d_record( struct list_record *p,char d)int i;for(i=0;i<(*p).rec_le n;i+)if(strcmp(*p).reci.date,d)=0)prin tf("dateoperatemon eyn&quo
34、t;);prin tf("%s",(*p).reci.date);prin tf("%s",(*p).reci.operate);prin tf("%d n ",(*p).reci. nu m); return ok;if(i=(*p).rec_le n)prin tf("the date is not exit!n");return n ull;插入函數(shù),根據(jù)用戶輸入的信息,增加記錄int in sert_record( struct list_record *p,struct record *p1,i nt l
35、op) int i;if(lop<1)| (lop>(*p).rec_le n+1)prin tf("the positi on is wron g.n");return 0;elsefor(i=(*p).rec_le n;i>lop-1;i-)strcpy(*p).reci.date,(*p).reci-1.date); strcpy(*p).reci.operate,(*p).reci_1.operate); (*p).reci. num=(*p).reci_1. num;strcpy(p->reci.date,p1->date); str
36、cpy(*p).reci.operate,(*p1).operate);(*p).reci. num=(*p1). num;(*p).rec_le n+;return ok;/刪除記錄函數(shù)int del_record( struct list_record *p,i nt lop2)int i;if(lop2<1)|(lop2>(*p).rec_le n)prin tf("the positi on is wron g.n");return n ull;elsefor(i=lop2-1;i<(*p).rec_le n-1;i+)strcpy(*p).rec
37、i.date,(*p).reci+1.date); strcpy(*p).reci.operate,(*p).reci+1.operate); (*p).reci. num=(*p).reci+1. num;(*p).rec_le n-;return ok;/輸出全部記錄函數(shù)void all_pri nt( struct list_record *p) int i;prin tf("dateoperate numn ”);for(i=0;i<(*p).rec_le n;i+) prin tf("%s",(*p).reci.date);prin tf(&quo
38、t;%s",(*p).reci.operate);prin tf("%d",(*p).reci. num);prin tf("n ”);/計算總的錢數(shù)int sum_ num( struct list_record *p)int i;int sum=0;int sum_ in=O;int sum_out=0;for(i=0;i<(*p).rec_le n;i+)sum+=(*p).reci. num;if(*p).reci. nu m>0)sum_i n+=(*p).reci. num;if(*p).reci. nu m<0) sum_
39、out+=(*p).reci. num;printf("總金額為:%dn",sum);printf("總收入為:%dn",sumn);printf("總支出為:%dn",sum_out); return ok;/輸出收入記錄int acc_pri nt( struct list_record *p)int i;int sum_acc=0;prin tf("dateoperatenumn ”);for(i=0;i<(*p).rec_le n;i+)if(*p).reci. nu m>0)sum_acc+=(*p).
40、reci. num;prin tf("%s",(*p).reci.date);prin tf("%s",(*p).reci.operate);prin tf("%d",(*p).reci. num);prin tf("n ”);printf("總收入金額為:%dn",sum_acc); return ok;if(sum_acc=O)prin tf("there is no acco un t.n");return n ull;/輸出支出記錄int pay_pri nt( struct
41、list_record *p)int i;int sum_pay=0;prin tf("dateoperatenumn ”);for(i=0;i<p->rec_le n;i+)if(*p).reci. nu m<0)sum_pay+=(*p).reci. num;prin tf("%s",(*p).reci.date);prin tf("%s",(*p).reci.operate);prin tf("%d",(*p).reci. num);prin tf("n ”);printf("總的
42、支出為:%dn",sum_pay); return ok;if(sum_pay=0)prin tf("there is no payout.n");return n ull;void mai n()int j=0,n=0;/n記錄密碼輸入次數(shù)int x,k,lop1,lop2;/k 為命令數(shù)字選項char data120;char accou20,cod20;/accou 賬號 cod 密碼 struct record *p0; 內(nèi)容是由用戶輸入的 struct record a;struct list_record b;struct list_record *p
43、;b.rec_le n=0;p0=&a;old_record(r);save();load( );/ 顯示prin tf("歡迎使用個人財政支出管理系統(tǒng)!n");printf("n");prin tf("|n");prin tf("|1、登陸系統(tǒng)|n");prin tf("|任意鍵、退出系統(tǒng)|n");prin tf("|n");printf("n");sea nf("%d", &x);if(x ! =1)prin tf(" 感謝您使用本系統(tǒng),再見! n");elsedoprintf("請輸入帳號:”);while(j<3);sca nf("%s",accou);if(lookup_accounts(r,accou)將用戶輸
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電源轉(zhuǎn)移》課件
- 《實木家具調(diào)研報告》課件
- 《香港言語治療服務(wù)》課件
- 課件人力資源開發(fā)與
- 2024年醫(yī)療設(shè)備采購與供應(yīng)合同3篇
- 2024年生產(chǎn)車間承包與人力資源整合合同范本3篇
- 改裝環(huán)衛(wèi)三輪車協(xié)議書(2篇)
- 2024年物聯(lián)網(wǎng)技術(shù)在農(nóng)業(yè)中的應(yīng)用合同
- 2025年梧州貨運從業(yè)資格證模擬考試
- 2025年珠海道路運輸從業(yè)資格證考試內(nèi)容是什么
- 物業(yè)免租期申請書
- 保險公司高管資格考試綜合題及答案
- 2025屆黑龍江省黑河北安市數(shù)學(xué)七上期末考試試題含解析
- 鄭州市鄭州外國語中學(xué)等4校2022-2023學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題
- QCT457-2023救護車技術(shù)規(guī)范
- 廣東省深圳市南山區(qū)2023-2024學(xué)年四年級上學(xué)期期末數(shù)學(xué)試卷
- 醫(yī)院培訓(xùn)課件:《分級護理制度》
- 2023-2024學(xué)年福建省廈門市湖里區(qū)八年級(上)期末數(shù)學(xué)試卷
- 企業(yè)經(jīng)營管理分析案例
- 心內(nèi)科小講課
- 2024年512全國防災(zāi)減災(zāi)日應(yīng)知應(yīng)會知識競賽題庫(含答案)
評論
0/150
提交評論