2016新編《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)報(bào)告_第1頁(yè)
2016新編《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)報(bào)告_第2頁(yè)
2016新編《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)報(bào)告_第3頁(yè)
2016新編《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)報(bào)告_第4頁(yè)
2016新編《程序設(shè)計(jì)基礎(chǔ)》課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件服務(wù)外包學(xué)院 程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào)告吉 首 大 學(xué) jishou university 程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)報(bào) 告 書題 目 個(gè)人收支管理系統(tǒng) 小組名單 所屬學(xué)院 軟件服務(wù)外包學(xué)院 專業(yè)年級(jí) 軟件工程2012級(jí) 指導(dǎo)老師 寫作時(shí)間 2012年12 月 至 2013 年 1 月 吉首大學(xué)教務(wù)處制目錄一 、項(xiàng)目概述- 2 -1 問(wèn)題的要求分析與描述- 2 -2 問(wèn)題的要求與限制- 2 -3. 任務(wù)安排- 2 -二、項(xiàng)目設(shè)計(jì)- 3 -1系統(tǒng)程序流程圖如下- 3 -2 詳細(xì)設(shè)計(jì)- 4 -(1).main()函數(shù)- 4 -(2).inputidentity函數(shù)- 4 -(3).函數(shù)原型: read

2、();- 5 -(4).add()函數(shù)- 6 -(5).search()函數(shù)- 7 -(6).del()函數(shù)- 8 -(7).modify函數(shù)- 9 -(8) .sort()函數(shù)- 10 -(9). save()函數(shù)- 11 -三、調(diào)試與結(jié)果- 12 -四、工作總結(jié)- 13 -五、特殊問(wèn)題的解決方法- 14 -1對(duì)于系統(tǒng)主菜單的處理。- 14 -2.對(duì)于文件的操作。- 14 -附錄a:- 15 -以下是源代碼:- 26 - 個(gè)人收支信息管理系統(tǒng) 一 、項(xiàng)目概述1 問(wèn)題的要求分析與描述 我們組設(shè)計(jì)了一個(gè)對(duì)個(gè)人日常的收入和消費(fèi)帳目進(jìn)行管理及查詢統(tǒng)計(jì)計(jì)算的管理程序。個(gè)人收支信息包括收入(工資、獎(jiǎng)金、

3、津貼、酬金、中獎(jiǎng)等)和支出(水電費(fèi)、通訊費(fèi)、服裝、伙食費(fèi)、交際費(fèi)、旅游、房租等)。 這個(gè)管理系統(tǒng)需要實(shí)現(xiàn)以下功能:1 系統(tǒng)能進(jìn)行用戶是否合法驗(yàn)證;2 實(shí)現(xiàn)以菜單的方式進(jìn)行工作;3 實(shí)現(xiàn)個(gè)人收入支出信息錄入功能,用戶的信息保存在文件中;4 實(shí)現(xiàn)個(gè)人收入支出信息的輸出功能,輸出功能應(yīng)該包括如下算法: 4.1:?jiǎn)蝹€(gè)用戶按時(shí)間查詢功能; 4.2:?jiǎn)蝹€(gè)用戶全部信息按單月總收入從大到小排序?yàn)g覽功能; 4.3:?jiǎn)蝹€(gè)用戶全部信息按單月總支出從大到小排序?yàn)g覽功能;5 實(shí)現(xiàn)個(gè)人收支信息的刪除與修改界面; 2 問(wèn)題的要求與限制1:在進(jìn)行用戶驗(yàn)證時(shí)有一定的容錯(cuò)能力,比如姓名輸入有誤,則系統(tǒng)提示要求重新輸入;2:在進(jìn)行

4、查詢?yōu)g覽和刪除修改等功能時(shí)在一定程度上按照用戶的意見(jiàn)進(jìn)行;3. 任務(wù)安排組長(zhǎng): *:用戶驗(yàn)證、提供菜單、個(gè)人收支信息的錄入、刪除個(gè)人收支信息、小組程序最后的修改、word文檔的制作;成員 : *:追加個(gè)人收支信息、修改個(gè)人收支信息、個(gè)人收支信息的排序、word文檔的制作; *:查詢個(gè)人收支信息、統(tǒng)計(jì)并輸出個(gè)人收支信息、ppt的制作;*:個(gè)人收支及余額的計(jì)算、瀏覽全部信息、ppt的制作二、項(xiàng)目設(shè)計(jì)1系統(tǒng)程序流程圖如下先輸入月份,系統(tǒng)查詢,如果沒(méi)有此月份信息則按任意鍵返回主菜單。如果有,給用戶選擇要修改的月份的具體信息,并修改只有在個(gè)人收支信息錄入后才能進(jìn)行查詢功能。1.可以按收入多少來(lái)瀏覽。2.

5、可以按時(shí)間先后來(lái)瀏覽。3.可以按支出多少來(lái)瀏覽查看。4.以表格形式瀏覽全部信息。輸入個(gè)人工資,獎(jiǎng)金,津貼,中獎(jiǎng)等收入信息和水電費(fèi),房租,生活費(fèi)等支出信息并保存到名為的文件中先輸入月份(時(shí)間)系統(tǒng)查詢,如果沒(méi)有此月份信息,則按任意鍵返回主菜單,如果有,則提示用戶是否確定刪除。輸入用戶姓名與密碼,若輸入錯(cuò)誤則重新輸入一次歡迎界面0:退出系統(tǒng) 1:用戶驗(yàn)證2:個(gè)人收支信息錄入 3:個(gè)人收支信息查詢4:個(gè)人收支信息刪除 5:個(gè)人收支信息修改結(jié)束 2 詳細(xì)設(shè)計(jì) 編譯預(yù)處理命令: 在開頭就調(diào)用了“stdio.h”,“strilng.h”,“stdlib.h”和“stdlib.h”,并且宏定義了n為5,同時(shí)

6、定義了一個(gè)有n個(gè)組員組成的結(jié)構(gòu)體數(shù)組。每個(gè)結(jié)構(gòu)體中有字符型,浮點(diǎn)型。且定義了一個(gè)整型全局變量n,用來(lái)判斷有多少信息記錄,還有兩個(gè)浮點(diǎn)型全局變量sum和sum1,便于計(jì)算余額。(1).main()函數(shù) 所有函數(shù)都寫在main函數(shù)中,并給他調(diào)用。main函數(shù)中首先定義了一些整型數(shù)據(jù)k,i,j,choice,接著由“printf”進(jìn)入歡迎界面。然后進(jìn)行用戶驗(yàn)證,在輸入個(gè)人姓名與密碼時(shí)有容錯(cuò)能力,若輸入錯(cuò)誤,系統(tǒng)提示輸入有誤,請(qǐng)重新輸入,接著由“printf”函數(shù)打印出一個(gè)選擇菜單,用戶輸入選項(xiàng)來(lái)運(yùn)行系統(tǒng)。用“scanf”函數(shù)來(lái)給choice賦值,然后程序進(jìn)入“switch”函數(shù),通過(guò)選項(xiàng),程序運(yùn)行進(jìn)

7、入相應(yīng)功能區(qū)。case 1,函數(shù)進(jìn)行個(gè)人收入支出信息錄入功能。用戶輸入個(gè)人收入支出信息。case 4函數(shù)進(jìn)行個(gè)人收入支出信息刪除功能,調(diào)用del函數(shù),此功能內(nèi)同樣有選項(xiàng)供用戶進(jìn)行選擇,1按時(shí)間刪除已有信息,2按項(xiàng)目進(jìn)行刪除已有信息。如果n=-1,則代表無(wú)記錄,按任意鍵返回主菜單。case 7,函數(shù)進(jìn)行個(gè)人收入支出信息查詢功能,此功能區(qū)內(nèi)也有選項(xiàng)供用戶選擇。1按時(shí)間查詢,2按規(guī)定時(shí)間內(nèi)的總收入和總支出,3按項(xiàng)目查詢。如果n=-1,則代表無(wú)記錄,則按任意鍵返回主菜單。csae 8,調(diào)用sort函數(shù),函數(shù)進(jìn)入對(duì)個(gè)人收入支出信息從多到少的排序。此功能內(nèi)還有瀏覽功能,以表格的形式呈現(xiàn)。case 10,調(diào)

8、用函數(shù)change,函數(shù)進(jìn)入對(duì)個(gè)人收入支出信息修改的功能。先輸入要改的月份,然后重新輸入此月份各項(xiàng)目的收支信息即可。如果n=-1,則代表無(wú)記錄,那么按任意鍵返回主菜單。case 0,退出系統(tǒng)。 (2).inputidentity函數(shù) 函數(shù)原型:int inputidentity();返回為1,進(jìn)入下一步 主要功能:驗(yàn)證用戶輸入的用戶名和密碼是否正確,如果輸入錯(cuò)誤,則提示從新輸入,若輸入正確,則進(jìn)入下一個(gè)函數(shù)yn 開始判斷是否合法? 若合法,返回1,進(jìn)入下一步輸入用戶名和密碼 (3).函數(shù)原型: read(); 主要功能:從文件中讀取用戶已經(jīng)保存了的信息,然后保存到結(jié)構(gòu)體數(shù)組之中。進(jìn)行初始化。流

9、程如下: 開始n判斷文件是否打開提示錯(cuò)誤-判斷文件指針是否指向末尾?yyn讀取信息存于結(jié)構(gòu)體數(shù)組中結(jié)束(4).add()函數(shù) 函數(shù)原型:void add();參數(shù):無(wú)。返回值:無(wú)。主要功能:添加用戶新信息,對(duì)用戶新的信息進(jìn)行錄入,存于結(jié)構(gòu)體數(shù)組中,最后保存到文件末尾。開始根據(jù)提示,輸入當(dāng)月的基本信息結(jié)束操作(5).search()函數(shù) 函數(shù)原型:void search();返回值:無(wú)。要求:用戶根據(jù)提示信息,選擇自己想要查詢的方式,1:表示按時(shí)間查找; 2:表示按余額查詢;3:表示按項(xiàng)目查詢。主要功能:根據(jù)用戶想要查詢的方式,顯示相應(yīng)的信息。 流程圖如下: 輸出該月信息nnyyy開始結(jié)束提示查

10、詢方式輸入變量aa=1??a=2a=3輸入要查詢的時(shí)間輸入要查詢的項(xiàng)目序號(hào)輸出余額和支出輸出該項(xiàng)目信息n (6).del()函數(shù) 函數(shù)原型 void del();要求:用戶根據(jù)提示,1:表示按時(shí)間刪除,2:表示按項(xiàng)目刪除。功能:根據(jù)用戶的選擇,刪除相應(yīng)的信息。 刪除該時(shí)間信息出該月信息nyy開始結(jié)束提示刪除方式輸入變量aa=1??a=2輸人要?jiǎng)h除的時(shí)間輸出可刪除的項(xiàng)目n輸入選擇,進(jìn)行刪除 (7).modify函數(shù) 函數(shù)原型 void modify();要求;用戶需要輸入要修改的時(shí)間,從新輸入項(xiàng)目信息,達(dá)到修改的目的;功能:對(duì)用戶所輸入的時(shí)間內(nèi)的項(xiàng)目進(jìn)行修改流程圖如下: 輸入要修改的時(shí)間結(jié)束操作

11、根據(jù)提示,從新輸入當(dāng)月的信息開始 (8) .sort()函數(shù) 函數(shù)原型:void sort(struct node *p)要求:用戶根據(jù)具體的需要,輸入1表示按總收入排序,2 表示按總支出排序,函數(shù)功能:根據(jù)用戶的需求,對(duì)相關(guān)項(xiàng)目進(jìn)行排序。 輸出排序結(jié)果出該月信息nyy開始結(jié)束提示排序方式輸入變量aa=1??a=2按收入排序按支出排序n輸出排序結(jié)果 (9). save()函數(shù) 函數(shù)原型 void save();函數(shù)功能:對(duì)結(jié)構(gòu)體中的所有信息進(jìn)行保存到文件之中。流程圖如下: 提示錯(cuò)誤yn判斷文件是否打開開始結(jié)束把結(jié)構(gòu)體中的數(shù)據(jù)包存到文件中 三、調(diào)試與結(jié)果1調(diào)試方法:利用調(diào)試系統(tǒng),當(dāng)代碼完全寫好后

12、,就用他運(yùn)行,程序會(huì)把所有的錯(cuò)誤與警告顯示出來(lái),找到程序有錯(cuò)的地方,參考錯(cuò)誤的原因,仔細(xì)檢查程序然后改寫代碼。在認(rèn)為改好后再運(yùn)行一次,若還有錯(cuò)誤則再根據(jù)其提示再進(jìn)行改正,一次次直到?jīng)]有任何錯(cuò)誤與警告為止。調(diào)試結(jié)果分析與討論:由于這個(gè)小系統(tǒng)的代碼是由各個(gè)組員共同完成的,每個(gè)人都寫了幾個(gè)函數(shù),所以輕松許多。但大家都在不同程度上犯錯(cuò)。像排序函數(shù)開始的時(shí)候老是排不好,排序只排前面幾個(gè),最后一個(gè)似乎不加入排序。但是反復(fù)檢查都發(fā)現(xiàn)那個(gè)代碼絲毫沒(méi)有錯(cuò)誤。于是嘗試改變排序方法,但還是不行。最后才發(fā)現(xiàn)個(gè)人收入支出信息“inform”這個(gè)結(jié)構(gòu)體數(shù)組的第一個(gè)元素的下標(biāo)是從1開始的,與一般的不同,于是對(duì)原有代碼稍作修

13、改后終于能夠順利排序。主要問(wèn)題及解決辦法:1.在書寫長(zhǎng)代碼時(shí)要注意“”,有時(shí)候會(huì)漏掉,導(dǎo)致錯(cuò)誤。2.有時(shí)會(huì)不經(jīng)意在“”后面加上“;”,導(dǎo)致許多程序不能正常運(yùn)行,出現(xiàn)混亂,需要仔細(xì)。3.在“scanf”函數(shù)中,有時(shí)候會(huì)忘記加上“&”,導(dǎo)致程序不能運(yùn)行,所以要記得加上“&”。2、測(cè)試結(jié)果:輸入個(gè)人收入支出信息后能按照意愿瀏覽查詢,有時(shí)候輸入數(shù)據(jù)不能正常運(yùn)行是因?yàn)椤啊焙竺娑嗉恿恕?”,把“;”去掉即可。有時(shí)文件讀入功能不正確,是某個(gè)環(huán)節(jié)出了小錯(cuò)誤。所有的程序運(yùn)行數(shù)據(jù)和結(jié)果都在附錄a中。四、工作總結(jié)這次的課程設(shè)計(jì)是由四人組成的小組完成的。每個(gè)人都有明確的分工,我們密切合作,一起討論,寫代碼,改代碼。剛

14、開始,我們一籌莫展,不知道從何下手,因?yàn)閷?duì)于文件,鏈表等的使用,我們都不是很了解。我們有點(diǎn)覺(jué)得太難。但我們一想到別人都能做,就相信我們也可以,于是就各自開始行動(dòng),不懂我們就猛看書,問(wèn)同學(xué),問(wèn)老師,看別人寫的代碼,然后再一步步寫代碼。在我們寫了一些代碼后,就明顯感覺(jué)沒(méi)有那么難寫了。但在這個(gè)過(guò)程中確實(shí)遇到了很多令人頭疼的問(wèn)題。有時(shí)候一個(gè)函數(shù)寫了幾天還是不正確。像排序、刪除函數(shù)都曾因?yàn)榇中亩鴮懥撕脦滋欤瑴y(cè)試了很多次,最后是通過(guò)組員內(nèi)部討論檢查才成功的。特別是文件的讀入與輸出,我們?cè)趺匆蚕氩怀?,改了又改,還是只能錄入一組信息,且讀不出信息,令我們頭疼欲裂,于是我們就去請(qǐng)教老師和同學(xué),再努力調(diào)試找錯(cuò)改錯(cuò)

15、,最后終于順利完成。那個(gè)時(shí)候大家都開心的舒了一口氣,這也許就是編程帶來(lái)的踏實(shí)的快樂(lè)。這個(gè)小系統(tǒng)牽涉到了大家都才剛接觸到的一些內(nèi)容,由于課時(shí)有限,老師也沒(méi)有詳細(xì)的講解,以至于我們都要埋頭自己學(xué)習(xí)那些方面的知識(shí),特別是文件部分。對(duì)于我來(lái)講,那是天書,連其中出現(xiàn)的單詞什么意思都不知到,甚至不知道為什么要用文件,有什么好處都不知道。還有關(guān)于鏈表,只是知道很多地方都需要用到,而且他很好用,跟本連創(chuàng)建鏈表都不怎么清楚。我們與是大量看書,做小題,敲一些代碼,這樣我們竟然發(fā)現(xiàn)自己掌握了原本看都看不懂的知識(shí),這讓我們很高興,也越發(fā)的相信自己了,在接下來(lái)的寫代碼的過(guò)程中起了很重要的作用。有時(shí)候?yàn)榱说玫揭环N算法,我

16、們有的組員翻看大量參考書上他人的代碼,有時(shí)候代碼很長(zhǎng),看久了令人頭昏腦脹,但因?yàn)椴幌胪侠畚覀兘M編程的進(jìn)程,熬夜在那里苦看,反復(fù)推敲,努力想引用其中比較好的代碼,終于搞清了算法后又馬上投身于寫自己代碼任務(wù)中。我們組員之間都有保持著緊密的聯(lián)系,有時(shí)候不方便見(jiàn)面,就在電話中講自己的進(jìn)程或者遇到的困難,大家緊密合作,討論。在編程的過(guò)程中,我們也曾有過(guò)消極的思想。因?yàn)橛袝r(shí)候真的前進(jìn)太難。編程太麻煩,枯燥而累人,搞了半天有時(shí)候還是錯(cuò),搞得自己心情不好。但我們最終在相互鼓勵(lì)中堅(jiān)持了下來(lái),深深地體會(huì)到團(tuán)結(jié)在我們這個(gè)學(xué)習(xí)過(guò)程中的重要性,也意識(shí)到編程確實(shí)煩悶枯燥,但在我們完成任務(wù)的那一刻真的會(huì)格外開心,那樣踏實(shí)的

17、快樂(lè)是非常寶貴的,而且我們要相信自己一定能做出來(lái),那樣思路才會(huì)清晰,才會(huì)少犯低級(jí)錯(cuò)誤,從而更容易編程!五、特殊問(wèn)題的解決方法 1對(duì)于系統(tǒng)主菜單的處理。因?yàn)槲募鞑藛尉拖袷且粋€(gè)項(xiàng)目的心臟,因此,文件主菜單的建立的好壞直接影響整個(gè)系統(tǒng)的運(yùn)行,因此,我們?cè)谙到y(tǒng)主菜單的建造上花費(fèi)很多的時(shí)間,在主菜單里,我們用了一個(gè)do-while循環(huán),單滿足條件不為零的時(shí)候,就繼續(xù)循環(huán),當(dāng)在輸入為一得時(shí)候,就會(huì)跳出循環(huán)。就這樣,我們建好了我們的主菜單。2.對(duì)于文件的操作。由于我們對(duì)函數(shù)的文件了解的比較少,因此在這一環(huán)節(jié)上我們花費(fèi)了大量的時(shí)間,首先我們想到的是用模塊化讀取,也就是用fwrite()和fread()函數(shù),

18、但是在實(shí)際的操作過(guò)程之中,相應(yīng)的問(wèn)題也暴露出來(lái)了,出現(xiàn)了無(wú)法讀取文件的情況,這令我們十分的頭疼。我們查閱資料,問(wèn)同學(xué),上網(wǎng)看視頻,但是最后也沒(méi)有找出問(wèn)題所在。迫不得已,我們就必須找另外的一種方法。于是我們運(yùn)用另外的一種方法,格式化讀取文件,也就是說(shuō)用fscanf()函數(shù)和fprintf()來(lái)對(duì)文件進(jìn)行操作,在其中也遇到了很多的問(wèn)題,但是,我們不懈的努力最后總是會(huì)得到回報(bào)的。我們都相信,在這次做項(xiàng)目的過(guò)程會(huì)是我們?cè)诖髮W(xué)時(shí)光中美好的回憶之一。附錄a:歡迎與開始界面:用戶驗(yàn)證時(shí)的容錯(cuò)能力:開始菜單界面:錄入時(shí)間時(shí)的容錯(cuò)能力:個(gè)人收支信息的錄入功能:按時(shí)間查詢個(gè)人收支信息功能:按項(xiàng)目查詢各個(gè)月的收支信

19、息:查詢用戶各個(gè)月的總收入與總支出信息功能:瀏覽用戶全部收支信息功能:對(duì)個(gè)人收入支出信息按總收入多少排序并輸出功能:對(duì)個(gè)人收入支出信息按總支出多少排序并輸出:按時(shí)間刪除個(gè)人收支信息功能:查詢是否刪除成功:按項(xiàng)目刪除個(gè)人收支信息功能:查詢是否刪除成功:修改個(gè)人收支信息功能:查詢是否修改成功:以下是源代碼:#include#include#include#include#define n 5struct node char time10; int inandex12; int totalex; int totalin; int totalleft;informn;void copy(struct

20、node *p);int inputidentity();/用戶驗(yàn)證函數(shù)void add();/新建增加函數(shù)void del();/刪除函數(shù)void read();/把文件讀入數(shù)組函數(shù)void write();/把數(shù)組中的值寫入文件void output(struct node *p);/輸出函數(shù)void sort();/排序void search();/查詢函數(shù)void modify();/修改個(gè)人信息函數(shù)int n=-1;char program1220=工資,獎(jiǎng)金,津貼,酬金,中獎(jiǎng),水電費(fèi),通訊費(fèi),服裝費(fèi),伙食費(fèi),交際費(fèi),旅游費(fèi),房租費(fèi); int sum=0,sum1=0;/全局變量,便

21、于計(jì)算余額void main() int k,i,j,choice; printf(nnnn); printf( 尊敬的用戶,歡迎使用個(gè)人收支管理系統(tǒng)!n); read(); do k=inputidentity(); if(k!=1) printf(n); printf( 輸入有誤,請(qǐng)從新輸入n); while(k!=1); do system(cls); system(color 30); printf(nnn); printf(n); printf( 個(gè)人收支管理選項(xiàng): n); printf( 1:新建; n); printf( 2:查詢收入支出余額; n); printf( 3:追加個(gè)

22、人收入支出信息; n); printf( 4:刪除個(gè)人收入支出信息; n); printf( 5:查詢個(gè)人收入支出; n); printf( 6:瀏覽全部信息; n); printf( 7查詢個(gè)人收入支出信息; n); printf( 8:對(duì)個(gè)人收入支出進(jìn)行排序并輸出; n); printf( 9保存 n); printf( 10修改個(gè)人信息 n); printf( 0:退出 n); printf( 請(qǐng)輸入你的選擇! n); printf(n); scanf(%d,&choice); getchar(); switch(choice) case 1: add(); break; case 2:

23、 search(); break; case 3: add(); break; case 4: del(); break; case 5: search(); break; case 6: output(inform);/輸出函數(shù) break; case 7: search(); break; case 8: sort(inform); break; case 9: write(); break; case 10: modify(); break; default: break; while(choice!=0);int inputidentity() char a220=xiao ming,

24、li hua; char b210=12345,13579; char p20,v20; int k,k1,i,leap=0; printf(n); printf( 請(qǐng)輸入用戶名用回車結(jié)束!n); printf( ); gets(p); printf(n); printf( 請(qǐng)輸入用戶密碼用回車結(jié)束!n); printf( ); gets(v); for(i=0;i2;i+) k=strcmp(p,ai); if(k=0) k1=strcmp(v,bi); if(k1=0) leap=1; break; return(leap);/新建增加函數(shù)void add() system(cls); s

25、um=0;sum1=0; int i,l; char str20; printf(請(qǐng)輸入日期以月為單位,必須為六位,例如201205表示五月的收支n); gets(str);/得到時(shí)間 l=strlen(str); if(l!=6) printf(輸入有誤,按任意鍵結(jié)束n); getch(); return; strcpy(inform+n.time,str); for(i=0;i12;i+) printf(請(qǐng)輸入%sn,programi); scanf(%d,&informn.inandexi); if(i5) sum=sum+informn.inandexi; else sum1=sum1

26、+informn.inandexi; informn.totalin=sum; informn.totalex=sum1; informn.totalleft=sum-sum1; printf(%d %d %dn,sum,sum1,sum-sum1); printf(按任意鍵返回主菜單n); getch(); return;/刪除函數(shù)void del() system(cls); if(n=-1) printf(無(wú)記錄,請(qǐng)輸入任意鍵結(jié)束n); getch(); return; int a,i,j,k; char ss20,ch; printf(按1表示以時(shí)間刪除,2表示以項(xiàng)目刪除n); sca

27、nf(%d,&a); getchar(); if(a=1) printf(請(qǐng)輸入日期以月為單位,必須為六位,例如201205表示五月的收支); gets(ss); puts(ss);/檢查是否有誤 for(i=0;i=n;i+) if(!strcmp(ss,informi.time)/找到數(shù)據(jù) if(i=n)/表示最后一個(gè) n-; printf(刪除完畢,按任意鍵返回n); getch(); return; printf(確定要?jiǎng)h除嗎(y/n)n); ch=getchar(); printf(%dn,i); putchar(ch);/檢查是否有誤 if(ch=y|ch=y) for(j=i;j

28、=n;j+) for(k=0;k12;k+) informj.inandexk=informj+1.inandexk; strcpy(informj.time,informj+1.time); informj.totalin=informj+1.totalin; informj.totalex=informj+1.totalex; informj.totalleft=informj+1.totalleft; printf(%s %sn,informj.time,informj+1.time); n-; /output(inform); printf(%dn,n); printf(刪除成功。按任

29、意鍵返回n); getch(); return; else printf(你選擇的是不刪除。按任意鍵返回n); getch(); return; if(i=n+1) printf(沒(méi)有找到,按任意鍵返回n); getch(); return; else if(a=2) printf(刪除的項(xiàng)目有n); for(i=0;i11|s0) printf(輸入錯(cuò)誤,請(qǐng)按任意鍵返回主菜單!n); getch(); return; for(i=0;i=n;i+) informi.inandexs=0; printf(刪除完畢,按任意鍵返回n); getch; return; void output(str

30、uct node *p)/輸出函數(shù) system(cls); int i,j,c=0; for(i=0;itime); for(j=0;jinandexj); if(c=3) printf(n); c=0; printf(總收入: ); printf(%-8dn,p-totalin); printf(總支出: ); printf(%-8dn,p-totalex); printf(該月余額: ); printf(%-8d n,p-totalleft); printf(n); printf(按任意鍵返回n); getch(); return;/讀取信息void read() file *fp; i

31、f(fp=fopen(./goods1.txt,r)=null) printf(nn); printf(t 請(qǐng)首先進(jìn)行用戶驗(yàn)證!n); printf(nn); printf(t 按任意鍵開始!n); getch(); return; else int i,k,leap=0; fscanf(fp,%d ,n); printf(%dn,n); for(i=0;i=n;i+) printf(djdjdjdjn); fscanf(fp,%s %d %d %d,informi.time,&informi.totalex,&informi.totalin,&informi.totalleft); prin

32、tf(%s %d %d %d ,informi.time,informi.totalex,informi.totalin,informi.totalleft); for(k=0;k12;k+) fscanf(fp,%d,&informi.inandexk); fclose(fp); printf(nnt職工工資收入完畢!n); printf(按任意鍵返回主菜單!n); getch(); return; /保存信息函數(shù)void write() system(cls); file *fp; int i,k; if(n=-1) printf(沒(méi)有數(shù)據(jù)可存!按任意鍵返回主菜單!n); getch();

33、 return; if(!(fp=fopen(./goods.txt,w) printf(tt無(wú)法打開收支文件!n); fclose(fp); return; fprintf(fp,%d ,n); for(i=0;i0) fprintf(fp,n); fprintf(fp,%s %d %d %d ,informi.time,informi.totalex,informi.totalin,informi.totalleft); for(k=0;k12;k+) fprintf(fp,%d ,informi.inandexk); / printf(%d ,i); fclose(fp); printf

34、(tt%d個(gè)月的收入存儲(chǔ)完畢n,n+1); printf(按任意鍵返回主菜單!n); getch(); return;/*修改項(xiàng)目信息*/void modify() system(cls); sum=sum1=0; char ss20; int i,k; if(n=-1) printf(當(dāng)前無(wú)記錄,按任意鍵結(jié)束n); getch(); return; printf(請(qǐng)輸入日期以月為單位,必須為六位,例如201205表示2012年五月的收支n); gets(ss); for(i=0;i=n;i+) printf(%sn,informi.time); for(i=0;i=n;i+) if(!str

35、cmp(ss,informi.time)/找到數(shù)據(jù) printf(%d,i); for(k=0;k12;k+) printf(請(qǐng)從新輸入%sn,programk); scanf(%d,&informi.inandexk); if(k5) sum=sum+informi.inandexk; else sum1=sum1+informi.inandexk; informi.totalin=sum; informi.totalex=sum1; informi.totalleft=sum-sum1; printf(%d %d %dn,sum,sum1,sum-sum1); printf(按任意鍵返回主

36、菜單n); getch(); return; if(i=n+1) printf(當(dāng)前無(wú)記錄,按任意鍵結(jié)束n); getch(); return; /排序函數(shù)void sort(struct node *p) system(cls); if(n=-1) printf(無(wú)記錄,請(qǐng)輸入任意鍵結(jié)束n); getch(); return; int t,f,k,g,t1; int i,j,a; char c100; char b420=時(shí)間,總收入,總支出,該月余額; printf(按1表示以總收入排序,2表示以總支出排序n); scanf(%d,&a); getchar(); if(a=1) for(i

37、=0;i=n;i+) for(j=1+i;j=n;j+) if(informi.totalininformj.totalin) t=informi.totalin; informi.totalin=informj.totalin; informj.totalin=t; f=informi.totalleft; informi.totalleft=informj.totalleft; informj.totalleft=f; strcpy(c,informi.time); strcpy(informi.time,informj.time); strcpy(informj.time,c); g=informi.totalex; info

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論