C語言課程設(shè)計-家庭財務(wù)管理系統(tǒng)_第1頁
C語言課程設(shè)計-家庭財務(wù)管理系統(tǒng)_第2頁
C語言課程設(shè)計-家庭財務(wù)管理系統(tǒng)_第3頁
C語言課程設(shè)計-家庭財務(wù)管理系統(tǒng)_第4頁
C語言課程設(shè)計-家庭財務(wù)管理系統(tǒng)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 HUNAN UNIVERSITY程序設(shè)計訓(xùn)練報 告 課程 名稱 家庭財務(wù)管理系統(tǒng) 學(xué)生姓名 學(xué)生學(xué)號 專業(yè)班級 指導(dǎo)老師 起 止 時 間 湖南大學(xué)課程訓(xùn)練設(shè)計報告家庭財務(wù)管理系統(tǒng)摘 要本報告介紹了一個運(yùn)用C語言知識和Microsoft Visual c+ 6.0創(chuàng)建的用于家庭各成員財務(wù)情況管理的家庭財務(wù)管理系統(tǒng)。在該系統(tǒng)中創(chuàng)建了包含增加,刪除,修改,查找,瀏覽的功能總列表,包含了輸入家庭成員收入信息情況,增加信息,刪除信息,修改信息,創(chuàng)建姓名查找和編號查詢便于用戶查找個人財務(wù)情況,創(chuàng)建合計排序瀏覽用戶可從總體上瀏覽全家庭財務(wù)信息情況。目錄1 緒 論12 問題定義23 可行性分析24 系統(tǒng)需求

2、45 方案設(shè)計分析56 系統(tǒng)運(yùn)行情況147 系統(tǒng)維護(hù)158 致謝15 1 緒 論家庭財務(wù)管理對于每一個家庭來說有著重要的意義,隨著科技的發(fā)達(dá),財務(wù)的管理由原先的手寫賬本發(fā)展到現(xiàn)今的電腦系統(tǒng)輸入并統(tǒng)計,不僅大大減少了時間與精力,也是財務(wù)管理更系統(tǒng)化,便捷化,清晰化,減少金錢上的缺失。家庭財務(wù)系統(tǒng)主要對家庭的各項財務(wù)收支管理進(jìn)行在計算機(jī)上的信息存儲和處理,從而簡化用戶的工作量本報告設(shè)計的家庭財務(wù)管理系統(tǒng)主要是負(fù)責(zé)給家庭成員提供了一個在Windows操作系統(tǒng)上運(yùn)行的管理平臺,家庭財務(wù)管理者可以對其成員編號、姓名以及收入、支出構(gòu)成進(jìn)行增加、刪除、修改,查找等管理操作,還可以對全家庭財務(wù)合計排序瀏覽。C

3、語言是國內(nèi)外廣泛使用的一種計算機(jī)語言,學(xué)會使用C語言進(jìn)行程序設(shè)計是計算機(jī)工作者的一項基本功。對于我們大學(xué)生來說,學(xué)習(xí)這樣一門“C程序設(shè)計教程”更是必要的。本課程設(shè)計“家庭財務(wù)管理系統(tǒng)”就是通過學(xué)習(xí)C程序設(shè)計采用Visual C+作為編譯環(huán)境,是程序編譯和運(yùn)行的。本系統(tǒng)的總體思想基于結(jié)構(gòu)化的程序設(shè)計。應(yīng)用高級語言程序設(shè)計中的基本控制結(jié)構(gòu),如循環(huán)和選擇,著重實現(xiàn)管理系統(tǒng)的增、刪、改、查等典型的管理功能。程序設(shè)計是一門實踐性很強(qiáng)的課程,既要掌握概念,又要動手編譯,還要上機(jī)調(diào)試運(yùn)行,通過這一次的課程設(shè)計我們從實踐中更進(jìn)一步的學(xué)習(xí)和了解C語言,當(dāng)然由于個人的技術(shù)水平有限,在這途中遇到很多問題,程序也未能

4、做到很完美,望見諒! 2 問題定義家庭財務(wù)管理系統(tǒng)的問題定義階段必須回答的關(guān)鍵問題是:“要解決的問題是什么?”不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會白白浪費(fèi)時間和金錢,最終得出的結(jié)果可能是毫無意義的。盡管確切地定義問題的必要性是十分明顯的,但是在實踐中它卻可能是最容易被忽視的一個步驟。下面就將“家庭財務(wù)管理系統(tǒng)要解決的問題做是什么?”這個問題做出詳細(xì)的分析。隨著社會主義的不斷發(fā)展與進(jìn)步,人們的生活部斷完善,家庭的收入和支出也越來越多,當(dāng)然也不能盲目的追求時尚,高估了自己的能力,這就需要明確自己的收支情況,對家庭財務(wù)的來龍去脈有個大致的了解。做到心中有數(shù)。經(jīng)過我分析初步得出以下幾

5、個方面是家庭財務(wù)管理系統(tǒng)必須要解決的問題,主要包括:1:增加成員財務(wù)信息記錄2:刪除成員財務(wù)信息記錄3:修改成員財務(wù)信息記錄4:按成員姓名查詢財務(wù)信息5:按成員編號查詢財務(wù)信息6:查詢?nèi)砍蓡T信息 3 可行性分析進(jìn)一步明確系統(tǒng)的目標(biāo),規(guī)模與功能。對系統(tǒng)開發(fā)背景、必要性和意義進(jìn)行調(diào)查分析并根據(jù)需要和可能提出擬定開發(fā)系統(tǒng)的初步方案與計劃??尚行匝芯渴菍ο到y(tǒng)進(jìn)行全面,概要的分析。此項活動開始時,要對初步調(diào)查的結(jié)果進(jìn)行復(fù)審,重新明確問題,對所提系統(tǒng)大致規(guī)模和目標(biāo)及有關(guān)約束條件論證,并且提出系統(tǒng)的邏輯模型和各種可能方案。當(dāng)今社會是一個講求效率的社會,時間就是金錢。開發(fā)簡單,易于操作的,管理軟件不僅可以節(jié)

6、省時間,還可以避免浪費(fèi)人力,物力,提高效率。待開發(fā)系統(tǒng)是一個對家庭理財管理系統(tǒng),簡單,易學(xué),將成為家庭理財?shù)牡暮脦褪?。并非所有問題都有簡單明顯的解決辦法,事實上,許多問題不可能在預(yù)定的系統(tǒng)規(guī)模或時間限制之內(nèi)解決。如果問題沒有可行的解,那么花費(fèi)在這項工程上的任何時間、人力、軟件資源和經(jīng)費(fèi),都是無謂的浪費(fèi)??尚行匝芯康哪康?,就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能解決。必須時刻記住,可行性研究的目的不是解決問題,而是確定問題是否值得去解決?,F(xiàn)從下述三個方面分析家庭理財系統(tǒng)問題的可行性。(1)技術(shù)可行性就技術(shù)可行性來說:我們已經(jīng)學(xué)習(xí)了VC,具備了開發(fā)和維護(hù)的實力。因此只要加上認(rèn)真的編譯、測試

7、,這個家庭管理系統(tǒng)絕對可以實現(xiàn)的,開發(fā)和維護(hù)該系統(tǒng)也是可行的。(2)經(jīng)濟(jì)可行性。就經(jīng)濟(jì)可行性來說,由于我們?yōu)榱藢W(xué)習(xí)每個人都有配置很算差不多的個人電腦,并組建了內(nèi)部局域網(wǎng),因此硬件上是沒有問題的。而軟件上由于是自己開發(fā),所以開發(fā)及日后的維護(hù)費(fèi)用并不高,在經(jīng)濟(jì)條件方面也是允許的。再加上由于家庭財務(wù)管理系統(tǒng)是各個家庭管理自己家的的財務(wù),所以他不會涉及聯(lián)機(jī)的,只要在自己家中的計算機(jī)按上家庭理財系統(tǒng)就可以使用。操作簡單,功能強(qiáng)大。是每個家庭必不可少的好幫手。所以家庭理財系統(tǒng)是很值得開發(fā)的一款家庭助手軟件。(3)操作可行性。就操作可行性來說,該系統(tǒng)能夠?qū)崿F(xiàn)家庭理財功能的要求,使家庭成員能夠及時、全面的掌握

8、財產(chǎn)的流動情況、財產(chǎn)的使用、收支情況等。能夠在很大程度上節(jié)省家庭在財產(chǎn)管理方面花費(fèi)的精力。綜上所述,證明我們開發(fā)該系統(tǒng)是切實可行的??偨Y(jié):由于投資效益比遠(yuǎn)大于100%, 技術(shù)、經(jīng)濟(jì)、操作都有可行性,可以進(jìn)行開發(fā)。4系統(tǒng)需求1編寫目的本需求的編寫目的在于研究家庭理財系統(tǒng)軟件的開發(fā)途徑和應(yīng)用方法。一個好的需求分析可以為以后工作減輕很多不必要的花費(fèi)。它是軟件開過程中最重要的任務(wù)之一,如果需求分析完成的不好,這個軟件很有可能是沒有作用的,所以我們一定要編寫好需求分析。2 背景及范圍本項目的名稱:家庭財務(wù)管理系統(tǒng)。本項目的任務(wù)提出者是很多家庭賬務(wù)繁瑣的家庭本產(chǎn)品能具體化、合理化的管理家庭輸入、開支、收入

9、信息記錄,用結(jié)構(gòu)化的思維方式去了解計算機(jī)的基本工作原理。3確定對系統(tǒng)的綜合要求(1)功能需求: 主要功能:提供家庭日常收入、開銷的詳細(xì)情況。賬戶管理等多項功能。輸入要求:數(shù)據(jù)完整,詳實。輸出要求:簡捷,快速,實時。(2)意圖a. 幫助家庭管理財務(wù)信息.b. 為了給家庭人員減輕負(fù)擔(dān). c. 為了促進(jìn)國家經(jīng)濟(jì)建設(shè)的發(fā)展.3)目標(biāo)通過本系統(tǒng)軟件,能幫家庭成員快速方便的對家庭財務(wù)管理、查看等需求操作時方便家庭財務(wù)記錄管理,使散亂的各種記錄,檔案能夠具體化,直觀化、合理化。(4)使用及范圍本軟件適用于每個財務(wù)復(fù)雜的家庭,它是比較完善的系統(tǒng)管理軟件,對家庭財務(wù)信息可以隨時輸入,更改,查看。(5)背景 現(xiàn)在

10、大多數(shù)家庭都在為麻煩的財務(wù)管理發(fā)愁,如果有一個專門管理軟件來管理這些賬務(wù),豈不為家庭成員減少很多負(fù)擔(dān)?(6)用戶特點(diǎn) 本軟件的使用對象是家庭成員只要稍微懂得計算機(jī)基本操作就可以利用該軟件進(jìn)行所需操作。 5方案設(shè)計分析 1、結(jié)構(gòu)體設(shè)計用于存放每個家庭成員的序號、姓名、收入、支出、合計方面信息。typedef structlong no; /*每一組輸入的編號*/ long Number; /*家庭成員編號*/ char Name20; /*家庭成員姓名*/ float in; /*家庭成員收入*/ char intime10; /*收入時間*/ float out; /*家庭成員支出*/char

11、 outtime10; /*支出時間*/float sum; /*總計*/money;由編號、姓名、收入、支出構(gòu)成用于描述一個有機(jī)整體家庭成員財務(wù)信息系統(tǒng),為了表明這些字段不是孤立的,而是共同描述一個完整的事物,因此用結(jié)構(gòu)體這種形式來體現(xiàn)。2.函數(shù)設(shè)計為實現(xiàn)家庭財務(wù)管理系統(tǒng)用了下列自定義函數(shù)tianjiashouzhi(); /*增加成員財務(wù)信息記錄*/shanchushouzhi(); /*刪除成員財務(wù)信息記錄*/xiugaishouzhi(); /*修改成員財務(wù)信息記錄 */xingmingchaxun(); /*按成員姓名查詢財務(wù)信息*/bianhaochaxun(); /*按成員編號查

12、詢財務(wù)信息*/chaxunquanbu(); /*查詢?nèi)砍蓡T信息*/家庭財務(wù)管理系統(tǒng)流程圖:開始請選擇判斷a的值Switch(a)語句添加財務(wù)信息修改財務(wù)信息退出瀏覽全部信息按編號查詢按姓名查詢刪除財務(wù)信息1添加財務(wù)信息輸入你要添加信息的文件名N請重新輸入判斷文件是否打開成功Y請根據(jù)提示輸入你要添加的信息保存并關(guān)閉文件Y是否繼續(xù)N結(jié)束2請根據(jù)提示輸入你要刪除的成員編號判斷文件是否打開成功輸入你要刪除信息的文件名刪除財務(wù)信息請重新輸入NYN判斷是否存在請重新輸入Y是否刪除Y刪除成功 保存剩余文件YN是否繼續(xù)N保存并關(guān)閉文件結(jié)束3請重新輸入判斷是否存在請重新輸入是否修改判斷文件是否打開成功輸入你

13、要修改信息的文件名修改財務(wù)信息NY請根據(jù)提示輸入你要修改成員的的編號NYNY請輸入要修改的內(nèi)容Y是否繼續(xù)保存并關(guān)閉文件N結(jié)束4按姓名查看財務(wù)信息請根據(jù)提示輸入你要查看的成員的姓名輸入你要查看信息的文件名判斷文件是否打開成功Y請重新輸入NN請重新輸入判斷是否存在Y輸出該成員財務(wù)信息Y是否繼續(xù)N保存并關(guān)閉文件結(jié)束系統(tǒng)運(yùn)行界面:刪除家庭成員財務(wù)信息6系統(tǒng)運(yùn)行情況1出現(xiàn)的問題。l 剛開始輸出時亂碼,上網(wǎng)搜了才知道是數(shù)據(jù)溢出。l 數(shù)據(jù)的輸入與輸出結(jié)果不一致。l 刪除、修改功能不能如期實現(xiàn)。2相關(guān)的解決方法l 通過不斷試驗,刪除多余結(jié)構(gòu)體;l 查找錯誤,嚴(yán)格定義變量類型;l 不斷的進(jìn)行調(diào)試及改進(jìn)。3目前的

14、運(yùn)行情況針對一系列運(yùn)行過程中出現(xiàn)的問題,我們進(jìn)行了相應(yīng)的修改,到目前為止,該管理系統(tǒng)基本上可以正常運(yùn)行,實現(xiàn)其預(yù)期的功能管理,但仍有許多可以改進(jìn)的地方。4系統(tǒng)操作說明進(jìn)入系統(tǒng)操作界面后,輸入06選擇功能。 Ø 選擇1根據(jù)系統(tǒng)提示,添加家庭成員收支信息。Ø 選擇2根據(jù)系統(tǒng)提示,刪除家庭成員收支信息Ø 選擇3根據(jù)系統(tǒng)提示,修改家庭成員收支信息Ø 選擇4根據(jù)系統(tǒng)提示,按姓名查找家庭成員收支信息Ø 選擇5根據(jù)系統(tǒng)提示,按編號查找家庭成員收支信息Ø 選擇6查看全部家庭成員收支信息。7系統(tǒng)維護(hù)一個軟件從定義、開發(fā)、使用和維護(hù),直到最終被廢棄,要經(jīng)

15、歷一個漫長的時期,在這期間會需要程序員來維護(hù)這個軟件正常工作,因此清晰簡潔的文檔是必不可少的,而不僅僅是只需要源代碼??偨Y(jié)通過本此的課程設(shè)計,讓我們更熟練地掌握了C程序設(shè)計教程的知識,熟悉了一個管理系統(tǒng)的運(yùn)用和操作,熟悉如何采用Visual C+作為編譯環(huán)境,使程序成功的編譯和運(yùn)行,此次我們所設(shè)計的家庭財務(wù)管理系統(tǒng)可應(yīng)用于家庭的簡單管理,對家庭各成員的財務(wù)收入,支出進(jìn)行增加,刪除,修改,按姓名查詢,按編號查詢和瀏覽全部家庭成員財務(wù)信息。 在這次課程設(shè)計中由于對知識掌握的不夠熟悉,專業(yè)技術(shù)水平的有限,從程序的初步設(shè)計,編輯到程序的運(yùn)行,從一開始的按模塊撰寫,到各模塊的鏈接運(yùn)行,我遇到很多問題,有

16、過放棄的想法,可最后還是堅持到了最后,直到把程序?qū)懲?,編譯調(diào)試完成。后來回頭看自己的成果,雖然不容易,但是心里還是很高興的,畢竟是自己親手做的。通過這次課程設(shè)計,我更加深入地學(xué)習(xí)了VC語言這門課程,讓我學(xué)了一個學(xué)期的知識得以應(yīng)用,增強(qiáng)了我求知的欲望和學(xué)習(xí)的興趣,想對VC語言課程有更多的了解。致謝非常感謝老師一直以來對我們的悉心指導(dǎo),從最初的選題,到輔導(dǎo)檢查進(jìn)展情況,到程序綜合調(diào)試,再到最后的設(shè)計報告,老師犧牲休息時間給了我們耐心的知道和無私的幫助,老師的這種無私奉獻(xiàn)的敬業(yè)精神令人欽佩,在此我們向老師表示我們最誠摯的謝意。同時,感謝同學(xué)對我的幫助,幫助我檢查程序錯誤,調(diào)試程序,才有了今天我的成功

17、。非常感謝大家。參考文獻(xiàn) visualC+項目案例設(shè)計 清華大學(xué)出版社.項目案例導(dǎo)航 科學(xué)出版社還有百度文庫,百度知道。程序源代碼:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<math.h>#define SIZE 100typedef structlong no; /*每一組輸入的編號*/ long Number; /*家庭成員編號*/ char Name20; /*家庭成員姓名*/ float in; /*家庭成員收入

18、*/ char intime10; /*收入時間*/ float out; /*家庭成員支出*/char outtime10; /*支出時間*/float sum; /*總計*/money;void tianjiashouzhi()/*添加財務(wù)收支信息記錄*/ FILE *fp = NULL; /*定義指向文件的指針*/ money Tm,ch; /*定義進(jìn)行操作時的臨時結(jié)構(gòu)體變量*/ char Da40,next; /*存儲財務(wù)收支信息的文件名*/ int count=1; /*計算可輸入數(shù)據(jù)的最大范圍*/ printf("n 請輸入要添加財務(wù)收支信息的文件名:"); g

19、ets(Da); begin:count=1;fp=fopen(Da,"ab+"); if (fp=NULL) /*判斷文件是否成功打開*/ printf("n 打開文件 %s 失敗!按任意鍵結(jié)束!n",Da); exit(0); while(fread(&ch,sizeof(money),1,fp)!=(int)NULL) /*從文件中讀取數(shù)據(jù)并判斷是否成功*/ count+; fclose(fp); /*如果成功打開或創(chuàng)建文件,則提示輸入家庭成員序號、姓名、收入、支出等相關(guān)信息*/fp=fopen(Da,"ab+");/*

20、ab+:當(dāng)文件存在時,追加,當(dāng)文件不存在時,創(chuàng)建*/printf("輸入編號,姓名,收入,收入時間,支出,支出時間,輸入編號為0時結(jié)束!n"); printf("編號不超過九位,姓名不超過二十個字符。n");while(count<=SIZE) Tm.no=count; printf("n 輸入 編號為零時結(jié)束輸入!n"); printf("成員編號:"); scanf("%ld",&Tm.Number); if (Tm.Number=0 ) /*如果輸入的編號為0,結(jié)束*/ br

21、eak; printf("輸入成員姓名:"); scanf("%s",Tm.Name); printf("輸入成員收入:"); scanf("%f",&Tm.in);printf("輸入收入時間:");scanf("%s",Time); printf("輸入成員支出:"); scanf("%f",&Tm.out);printf("輸入支出時間:");scanf("%s",

22、Tm.outtime); Tm.sum=Tm.in-Tm.out;printf("n"); if(fwrite(&Tm,sizeof(money),1,fp)!=1) /*將數(shù)據(jù)寫入文件并判斷是否成功*/ printf("n寫入文件 %s 失??!以任意鍵結(jié)束!n",Da); exit(0); count+; /*如果輸入的數(shù)據(jù)量超過最大允許的范圍,則提示數(shù)據(jù)不能錄入*/ if (count>SIZE) printf("n對不起,輸入的數(shù)據(jù)量超過最大允許的范圍%dn",SIZE); fclose(fp);system(&q

23、uot;cls"); printf("您輸入的數(shù)據(jù)已成功存儲在 %s 文件中。n",Da); printf("文件全部內(nèi)容如下:n"); fp=fopen(Da,"rb"); /*只讀方式打開二進(jìn)制文件*/ if (fp=NULL) /*判斷是否打開成功*/ printf("n打開文件%s失?。“慈我怄I結(jié)束!n",Da); exit(0); while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*從文件中讀取數(shù)據(jù),是否讀取成功*/ printf(&quo

24、t;#n"); printf("成員編號:%ldn",Tm.Number); printf("成員姓名:%sn",Tm.Name);printf("成員收入:%f元n",Tm.in);printf("收入時間:%sn",Time);printf("成員支出:%f元n",Tm.out);printf("支出時間:%sn",Tm.outtime);printf("收支總和:%fn",Tm.sum); printf("#n"

25、;);printf("nn"); fclose(fp);/*詢問是否繼續(xù)*/ printf("n是否繼續(xù)?(是:y/Y; 否:n/N)"); next=getche();system("cls"); putchar('n'); if ( next='y'|next='Y') goto begin;void shanchushouzhi() /*刪除家庭成員收支信息記錄*/ int i,result=0; long delnum; /*存放要輸入的要刪除家庭成員序號*/ money Tm;

26、 /*定義進(jìn)行操作時的臨時結(jié)構(gòu)體變量*/ money sSIZE; int recNumber; /*原文件中的記錄數(shù)*/ char Da40,next; FILE *fp; /*fp指針指向存儲數(shù)據(jù)的文件名*/ printf("n請輸入存儲數(shù)據(jù)的文件名,按回車鍵結(jié)束!n"); gets(Da); begin: /*以二進(jìn)制讀的方式打開文件*/ fp=fopen(Da,"rb"); if (fp=NULL) printf("n打開文件 %s 失??!按任意鍵結(jié)束!n",Da); exit(0); /*輸入要刪除的家庭成員序號*/ pri

27、ntf("請輸入要刪除的家庭成員編號:"); scanf("%ld",&delnum); printf("您要刪除的編號是:%ldn",delnum);while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*從文件中讀取數(shù)據(jù),是否讀取成功*/if(Tm.Number=delnum) printf("該項收支記錄如下:n");printf("#n");printf("該項內(nèi)容編號:%ldn",Tm.no);printf

28、("成員編號:%ldn",Tm.Number);printf("成員姓名:%sn",Tm.Name);printf("成員收入:%f元n",Tm.in);printf("收入時間:%sn",Time);printf("成員支出:%f元n",Tm.out);printf("支出時間:%sn",Tm.outtime); printf("收支總和:%fn",Tm.sum);printf("#n");result=1;rewind(f

29、p); /*把文件指針重新指向文件的開頭*/if(result=0) printf("n你輸入的編號不存在,請確認(rèn)后重新輸入n"); printf("n是否繼續(xù)刪除?(是:y/Y;否:n/N)"); next=getche();system("cls"); putchar('n'); if ( next='y'|next='Y') goto begin; /*詢問是否刪除*/ printf("n你確定要刪除該記錄嗎?刪除后不可恢復(fù)!(是:y/Y;否:n/N)"); n

30、ext=getche(); putchar('n'); if ( next='y'|next='Y') system("cls");printf("恭喜!該項紀(jì)錄已成功刪除。n"); /*將文件中信息存入結(jié)構(gòu)體數(shù)組*/ /*與要刪除的家庭成員序號相匹配的項不寫入數(shù)組, 循環(huán)后數(shù)組中即為去掉了要刪除記錄后的剩余記錄*/ recNumber=0; while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL)/*從文件中讀取數(shù)據(jù),是否讀取成功*/ if(Tm.Number

31、!=delnum) srecNumber.no=Tm.no; srecNumber.Number=Tm.Number; strcpy(srecNumber.Name, Tm.Name); srecNumber.in=Tm.in; strcpy(srecNime,Time); srecNumber.out=Tm.out; strcpy(srecNumber.outtime,Tm.outtime); srecNumber.sum=Tm.sum; recNumber+; fclose(fp); /*將刪除后的剩余結(jié)構(gòu)體記錄寫入文件*/ fp=fopen(Da,"

32、wb+"); /*讀寫方式打開文件,原文件內(nèi)容清空*/ if (fp=NULL) printf("n記錄文件 %s失敗!按任意鍵結(jié)束!n",Da); exit(0); for(i=0;i<recNumber;i+) /*用循環(huán)將數(shù)據(jù)寫入文件*/ if(fwrite(&si,sizeof(money),1,fp)!=1) printf("n記錄文件 %s 失敗!按任意鍵結(jié)束!n",Da); exit(0); fclose(fp); /*顯示刪除財務(wù)信息記錄后的文件*/printf("是否查看刪除后剩下的內(nèi)容、n"

33、);printf("n是否?(是:y/Y;否:n/N)"); next=getche();system("cls"); putchar('n'); if ( next='y'|next='Y') fp=fopen(Da,"rb"); /*只讀方式打開文件*/ if (fp=NULL) printf("n打開文件%s失??!按任意鍵結(jié)束! n",Da); exit(0);printf("#n");printf("刪除后剩余全部內(nèi)容是:n&qu

34、ot;);while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) printf("#n"); printf("成員編號:%ldn",Tm.Number); printf("成員姓名:%sn",Tm.Name);printf("成員收入:%f元n",Tm.in);printf("收入時間:%sn",Time);printf("成員支出:%f元n",Tm.out);printf("支出時間:%sn",T

35、m.outtime);printf("收支總和:%fn",Tm.sum);printf("#n"); elsesystem("cls");printf("n刪除失敗,原因:用戶取消操作nn");fclose(fp); /*詢問是否繼續(xù)*/ printf("n是否繼續(xù)刪除?(是:y/Y;否:n/N)"); next=getche();system("cls"); putchar('n');if ( next='y'|next='Y'

36、;) goto begin;void xiugaishouzhi() /*修改家庭成員收支信息記錄*/ int i,result=0; long modnum;/*存儲要修改的家庭成員序號*/ /*輸入各項修改后信息*/ long no,Number; char Name20; float in;char intime10; float out;char outtime10; float sum; money Tm; /*定義進(jìn)行操作時的臨時結(jié)構(gòu)體變量*/ money sSIZE; /*SIZE,在shead.h頭文件中定義的常量,值為100 */ int recNumber; char Da

37、40,next; /*Da存儲家庭成員收支信息信息的文件名,next為是否進(jìn)行下一次操作的選項*/ FILE *fp; /*fp指針指向存儲數(shù)據(jù)的文件名*/ /*輸入要進(jìn)行修改記錄的文件名*/ printf("n請輸入存儲數(shù)據(jù)的文件名,按回車鍵結(jié)束!n"); gets(Da); begin: fp=fopen(Da,"rb"); /*只讀方式打開文件*/ if(fp=NULL) printf("n打開文件 %s 失?。“慈我怄I結(jié)束!n",Da); exit(0); printf("請輸入您要修改的家庭成員的成員編號:&quo

38、t;); scanf("%ld",&modnum); printf("您要修改的成員編號是:%ldnn",modnum);while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*讀取文件內(nèi)容,判斷是否讀取成功*/if(Tm.Number=modnum) /*輸入的編號和文件內(nèi)容的編號一致*/ printf("#n");printf("n該項內(nèi)容編號:%ldn",Tm.no);printf("n 成員編號:%ldn",Tm.Number)

39、;printf("n 成員姓名:%sn",Tm.Name);printf("n 成員收入:%f元n",Tm.in);printf("n 收入時間:%sn",Time);printf("n 成員支出:%f元n",Tm.out);printf("n 支出時間:%sn",Tm.outtime);printf("n 收支總和:%fn",Tm.sum);printf("#n");result=1; rewind(fp); /*把文件指針指向文件的開頭*/i

40、f(result=0)printf("你輸入的編號不存在,請確認(rèn)后重新輸入:n");printf("n是否繼續(xù)?(是:y/Y,否:n/N)"); next=getche();system("cls"); putchar('n'); if (next='y'|next='Y') goto begin;else exit(0);result=0;printf("請輸入你要修改的該項內(nèi)容編號:n");scanf("%ld",&no); /*輸入要

41、修改記錄的各項內(nèi)容值*/Number=modnum;printf("輸入姓名,收入,收入時間,支出,支出時間,輸入編號為0時結(jié)束!n"); printf("成員姓名:"); scanf("%s",Name); printf("成員收入:");scanf("%f",&in);printf("收入時間:"); scanf("%s",intime); printf("成員支出:");scanf("%f",&

42、out);printf("支出時間:"); scanf("%s",outtime); sum=in-out; /*將文件中要修改的信息存入結(jié)構(gòu)體數(shù)組*/ recNumber=0; /*循環(huán)將文件數(shù)據(jù)讀入結(jié)構(gòu)體數(shù)組, 如文件中的數(shù)據(jù)家庭成員內(nèi)容編號和要修改的家庭成員內(nèi)容編號不符,則原樣寫入數(shù)組, 如文件中數(shù)據(jù)的家庭成員內(nèi)容編號和要修改家庭成員內(nèi)容編號匹配, 則根據(jù)輸入的各項修改內(nèi)容重新賦值,即修改,并寫入數(shù)組*/ while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) /*讀取文件內(nèi)容。是否成功*/ if(T

43、m.no!=no) /*輸入的內(nèi)容編號和文件內(nèi)容編號不一致*/ srecNumber.no=Tm.no; srecNumber.Number=Tm.Number; strcpy(srecNumber.Name, Tm.Name); srecNumber.in=Tm.in;strcpy(srecNime, Time); srecNumber.out=Tm.out;strcpy(srecNumber.outtime, Tm.outtime); srecNumber.sum=Tm.sum; if(Tm.no=no) /*輸入的內(nèi)容編號和文件內(nèi)容編號一致*/ srecNum

44、ber.no=no; srecNumber.Number=Number; strcpy(srecNumber.Name,Name); srecNumber.in=in;strcpy(srecNime,intime); srecNumber.out=out;strcpy(srecNumber.outtime,outtime); srecNumber.sum=sum;result=1;recNumber+; fclose(fp); /*將修改后的結(jié)構(gòu)體數(shù)組記錄寫入文件*/ fp=fopen(Da,"wb+"); /*打開文件,原文件內(nèi)容清空*/ if (fp=

45、NULL) printf("n打開文件%s失??!按任意鍵結(jié)束!n",Da); exit(0); for(i=0;i<recNumber;i+) /*采用循環(huán)將數(shù)據(jù)寫入文件*/ if(fwrite(&si,sizeof(money),1,fp)!=1) printf("n寫入文件 %s 失??!按任意鍵結(jié)束!n",Da); exit(0); fclose(fp);if(result=1)printf("文件修改成功,已成功保存在用戶文件夾n");/*詢問是否查看修改后的文件*/ printf("n是否查看修改后的文

46、件?(是:y/Y,否:n/N)"); next=getche();system("cls"); putchar('n');if (next='y'|next='Y') /*顯示修改后的文件*/ fp=fopen(Da,"rb"); /*只讀方式打開文件*/ if (fp=NULL) printf("n打開文件%s失??!按任意鍵結(jié)束!n",Da); exit(0); system("cls");printf("n修改后的文件全部內(nèi)容是:n"

47、); while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) printf("#nn"); printf(" 成員編號:%ldn",Tm.Number); printf(" 成員姓名:%sn",Tm.Name);printf(" 成員收入:%f元n",Tm.in);printf(" 收入時間:%sn",Time);printf(" 成員支出:%f元n",Tm.out);printf(" 支出時間:%sn&qu

48、ot;,Tm.outtime);printf(" 收支總和:%fnn",Tm.sum);printf("#n");printf("n"); fclose(fp);if(result=0)printf("n你輸入的內(nèi)容編號不存在。文件修改失敗。nn");/*提示是否進(jìn)行下一次修改*/ printf("n是否繼續(xù)?(是:y/Y,否:n/N)"); next=getche();system("cls"); putchar('n'); if (next='y&

49、#39;|next='Y') goto begin; void xingmingchaxun() /*按姓名查詢家庭成員財務(wù)收支信息記錄*/ int result;/* "result=1"說明查詢成功,反之查找失敗 */ money Tm; /*定義進(jìn)行操作時的臨時結(jié)構(gòu)體變量*/ char Xingming20,before20; /*數(shù)組Xingming用于用戶輸入要查詢的家庭成員姓名*/ char Da40,next; /*Da存儲家庭成員財務(wù)信息的文件名,next為是否進(jìn)行下一次操作的選項*/ FILE *fp=NULL; printf("n 請輸入存儲數(shù)據(jù)的文件名,按回車鍵結(jié)束。n"); gets(Da); /*提示用戶輸入要查詢的家庭成員姓名*/begin: result=0;system("cls"); printf("請輸入要查詢的家庭成員姓名

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論