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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

14、運(yùn)行情況針對(duì)一系列運(yùn)行過程中出現(xiàn)的問題,我們進(jìn)行了相應(yīng)的修改,到目前為止,該管理系統(tǒng)基本上可以正常運(yùn)行,實(shí)現(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)提示,按編號(hào)查找家庭成員收支信息Ø 選擇6查看全部家庭成員收支信息。7系統(tǒng)維護(hù)一個(gè)軟件從定義、開發(fā)、使用和維護(hù),直到最終被廢棄,要經(jīng)

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

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

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

18、*/ char intime10; /*收入時(shí)間*/ float out; /*家庭成員支出*/char outtime10; /*支出時(shí)間*/float sum; /*總計(jì)*/money;void tianjiashouzhi()/*添加財(cái)務(wù)收支信息記錄*/ FILE *fp = NULL; /*定義指向文件的指針*/ money Tm,ch; /*定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量*/ char Da40,next; /*存儲(chǔ)財(cái)務(wù)收支信息的文件名*/ int count=1; /*計(jì)算可輸入數(shù)據(jù)的最大范圍*/ printf("n 請(qǐng)輸入要添加財(cái)務(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)建文件,則提示輸入家庭成員序號(hào)、姓名、收入、支出等相關(guān)信息*/fp=fopen(Da,"ab+");/*

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

21、eak; printf("輸入成員姓名:"); scanf("%s",Tm.Name); printf("輸入成員收入:"); scanf("%f",&Tm.in);printf("輸入收入時(shí)間:");scanf("%s",Time); printf("輸入成員支出:"); scanf("%f",&Tm.out);printf("輸入支出時(shí)間:");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對(duì)不起,輸入的數(shù)據(jù)量超過最大允許的范圍%dn",SIZE); fclose(fp);system(&q

23、uot;cls"); printf("您輸入的數(shù)據(jù)已成功存儲(chǔ)在 %s 文件中。n",Da); printf("文件全部?jī)?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("成員編號(hào):%ldn",Tm.Number); printf("成員姓名:%sn",Tm.Name);printf("成員收入:%f元n",Tm.in);printf("收入時(shí)間:%sn",Time);printf("成員支出:%f元n",Tm.out);printf("支出時(shí)間:%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; /*存放要輸入的要?jiǎng)h除家庭成員序號(hào)*/ money Tm;

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

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

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

29、p); /*把文件指針重新指向文件的開頭*/if(result=0) printf("n你輸入的編號(hào)不存在,請(qǐng)確認(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你確定要?jiǎng)h除該記錄嗎?刪除后不可恢復(fù)!(是:y/Y;否:n/N)"); n

30、ext=getche(); putchar('n'); if ( next='y'|next='Y') system("cls");printf("恭喜!該項(xiàng)紀(jì)錄已成功刪除。n"); /*將文件中信息存入結(jié)構(gòu)體數(shù)組*/ /*與要?jiǎng)h除的家庭成員序號(hào)相匹配的項(xiàng)不寫入數(shù)組, 循環(huán)后數(shù)組中即為去掉了要?jiǎng)h除記錄后的剩余記錄*/ 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); /*顯示刪除財(cái)務(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("刪除后剩余全部?jī)?nèi)容是:n&qu

34、ot;);while(fread(&Tm,sizeof(money),1,fp)!=(int)NULL) printf("#n"); printf("成員編號(hào):%ldn",Tm.Number); printf("成員姓名:%sn",Tm.Name);printf("成員收入:%f元n",Tm.in);printf("收入時(shí)間:%sn",Time);printf("成員支出:%f元n",Tm.out);printf("支出時(shí)間:%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;/*存儲(chǔ)要修改的家庭成員序號(hào)*/ /*輸入各項(xiàng)修改后信息*/ long no,Number; char Name20; float in;char intime10; float out;char outtime10; float sum; money Tm; /*定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量*/ money sSIZE; /*SIZE,在shead.h頭文件中定義的常量,值為100 */ int recNumber; char Da

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

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

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

40、f(result=0)printf("你輸入的編號(hào)不存在,請(qǐng)確認(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("請(qǐng)輸入你要修改的該項(xiàng)內(nèi)容編號(hào):n");scanf("%ld",&no); /*輸入要

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

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

43、m.no!=no) /*輸入的內(nèi)容編號(hào)和文件內(nèi)容編號(hào)不一致*/ 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)容編號(hào)和文件內(nèi)容編號(hào)一致*/ 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失?。“慈我怄I結(jié)束!n",Da); exit(0); system("cls");printf("n修改后的文件全部?jī)?nèi)容是:n"

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

48、ot;,Tm.outtime);printf(" 收支總和:%fnn",Tm.sum);printf("#n");printf("n"); fclose(fp);if(result=0)printf("n你輸入的內(nèi)容編號(hào)不存在。文件修改失敗。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() /*按姓名查詢家庭成員財(cái)務(wù)收支信息記錄*/ int result;/* "result=1"說明查詢成功,反之查找失敗 */ money Tm; /*定義進(jìn)行操作時(shí)的臨時(shí)結(jié)構(gòu)體變量*/ char Xingming20,before20; /*數(shù)組Xingming用于用戶輸入要查詢的家庭成員姓名*/ char Da40,next; /*Da存儲(chǔ)家庭成員財(cái)務(wù)信息的文件名,next為是否進(jìn)行下一次操作的選項(xiàng)*/ FILE *fp=NULL; printf("n 請(qǐng)輸入存儲(chǔ)數(shù)據(jù)的文件名,按回車鍵結(jié)束。n"); gets(Da); /*提示用戶輸入要查詢的家庭成員姓名*/begin: result=0;system("cls"); printf("請(qǐng)輸入要查詢的家庭成員姓名

溫馨提示

  • 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)論