




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計報告設計題目家庭財務記賬系統(tǒng)學院:通信與信息工程學院年級:通信1101班組長:組 員:2012年 07 月 07 日1 / 38 通信與信息工程學院實驗報告設計題目:家庭財務記賬系統(tǒng) 一、程序設計的要求1、要求設計一個家庭財務的記錄系統(tǒng),記錄家庭的收入、支出明細,并且對訪問者有權限要求。2、要求寫出設計報告,報告中要求寫出總體設計框架和詳細程序分析。3、6名學生分一組,選出組長共同完成。在報告中各個同學要明確寫出自己所做的工作,并由組長認可評定。4、手寫及設計方案均用A4制打印以便統(tǒng)一裝訂成冊,并且要求上交電子文本。二、程序設計分組 本小組成員共6個人,可評出一個組長,其中有兩人
2、負責在圖書管查資料,一人負責寫實驗報告,剩余4個人每人編輯若干個程序功能,并且在運行無誤后交上.。三、程序設計環(huán)境 1. 硬件環(huán)境:每生一臺機2. 軟件環(huán)境:Vc + 6.04、 總體設計()功能模塊設計 1.添加收入信息 主菜單中選擇 1的時候進行添加收入操作,系統(tǒng)調用 add_income()函數(shù)來添加收入信息,首先建立單鏈表,函數(shù)調用 input_info()函數(shù)提示用戶輸入收入信息,并存儲到單鏈表中,輸入完成后返回到主菜單界面。 2.查詢收入明細 主菜單中選擇 2的時候進行查詢收入明細操作,系統(tǒng)調用 search_income()函數(shù)來查詢收入的明細,調用 search_data()函
3、數(shù)來完成具體的查詢操作。首先提示用戶輸入要查詢的年月,如果用戶輸入錯誤,給出輸入錯誤的提示信息,如果用戶輸入正確,在單鏈表中查找該年月的收入信息,如果查找成功,按照指定格式顯示找到的收入信息。每頁顯示 9條收入信息,如果找到的收入信息多余 9條,按空格鍵翻頁。如果沒有找到任何信息,系統(tǒng)給出提示信息。查找成功后提示用戶是否繼續(xù)查詢操作,如果用戶輸入“Y”或“y”,則再次進行查詢操作;否則,返回主菜單界面。 3.刪除收入信息 主菜單中選擇 3的時候進行刪除收入信息的操作,調用delete_data()函數(shù)進行刪除收入的操作。首先提示用戶輸入要刪除收入的年月,然后根據(jù)用戶輸入的年月信息在單鏈表中查找
4、相關信息,如果查找成功調用 show_info()函數(shù)顯示查找到的收入信息,每頁最多顯示 9 條信息,如果查找到的收入信息多余 9 條,則按空格鍵翻頁,最后提示用戶輸入要刪除的收入信息的序號,完成刪除的操作。如果查找不成功,給出相應的提示信息。刪除操作結束后,提示用戶是否繼續(xù)刪除的操作,如果用戶輸入“Y”或“y”,則再次進行查詢操作;否則,返回主菜單界面。 4.更新收入信息 主菜單中選擇 4 的時候進行更新收入信息的操作,調用update_data()函數(shù)進行更新收入的操作。首先,提示用戶輸入要更新收入的年月,然后,根據(jù)用戶輸入的年月信息在單鏈表中查找相關信息。如果查找成功則調用 show_i
5、nfo()函數(shù),顯示查找到的收入信息,每頁最多顯示 9 條信息;如果查找到的收入信息多于 9 條,則按空格鍵翻頁,最后提示用戶輸入要更新的收入信息的序號,調用input_info()函數(shù),輸入更新的收入信息,完成更新的操作。如果查找不成功,則給出相應的提示信息。更更新操作結束后,提示用戶是否繼續(xù)進行更新操作,如果用戶輸入“Y”或“y”,則再次進行查詢操作;否則,返回主菜單界面。 5.添加支出信息 主菜單中選擇 5 的時候進行添加支出操作,系統(tǒng)調用 add_income()函數(shù)來添加支出信息。添加支出信息的操作與添加收入信息的操作相似。 6.查詢支出明細 主菜單中選擇 6 的時候進行查詢支出明細
6、操作,系統(tǒng)調用 search_income()函數(shù)來查詢支出的明細,調用 search_data()函數(shù)來完成具體的查詢操作。查詢支出明細的操作與查詢收入明細的操作相似。 7.刪除支出信息 主菜單中選擇 7 的時候進行刪除支出信息的操作,調用 delete_data()函數(shù)進行刪除支出的操作。刪除支出的操作與刪除收入的操作相似。 8.更新支出信息 主菜單中選擇 8 的時候進行統(tǒng)計操作,調用 update_data()函數(shù)進行更新支出的操作。更新支出的操作與更新收入的操作相似。 9.統(tǒng)計收入、總支出 主菜單中選擇 9 的時候進行統(tǒng)計操作,調用count_total()函數(shù)進行總收入、總支出的統(tǒng)計
7、。在單鏈表中,計算收入和支出的總和,并將兩者想見得到家庭收入的結余,并按一定的格式顯示出來。統(tǒng)計結束后,按任意鍵返回主菜單界面。 10.退出系統(tǒng) 主菜單中選擇 0 的時候退出系統(tǒng),調用quit()函數(shù)進行退出操作,首先調用save-to-file()函數(shù),將單鏈表中的數(shù)據(jù)保存到文件,再調用clear_data()函數(shù)清空單鏈表,最后退出系統(tǒng)。家庭財務管理的功能模塊如圖所示。家庭財務記賬系統(tǒng)收入管理支出管理統(tǒng)計退出添加收入查詢收入明細刪除收入修改收入添加支出查詢支出明細刪除支出修改支出 家庭財務管理的功能模塊(2) 程序處理流程系統(tǒng)的執(zhí)行應從系統(tǒng)菜單的選擇開始,允許用戶輸入09之間的數(shù)值來選擇要
8、進行的操作,輸入其他字符都是無效的,系統(tǒng)會給出錯誤的提示信息。若用戶輸入0,調用quit()退出系統(tǒng);若輸入一,則調用add_income()函數(shù),進行添加輸入操作;如輸入2,則調用search_income()函數(shù),進行查詢收入明細;若輸入3,則調用delete_income函數(shù),進行刪除收入操作,若用戶輸入4,則調用update_income函數(shù),修改收入操作;若輸入5,則調用add_payout()函數(shù),進行添加支出操作;若輸入6,則調用search-payout()函數(shù),進行查詢支出明細操作;如輸入7,則調用delete_payout(),進行刪除支出操作;若輸入8,則調用update
9、_payout()函數(shù),進行修改支出操作;若輸入9,則調用counttotal()函數(shù),進行統(tǒng)計總收入、總支出操作。其處理流程入圖所示。開始繼續(xù)查詢詢繼續(xù)查詢主菜單界面 主菜單界面0退出1添加收入2查詢收入明 細3刪除收入4修改收入5添加支出6查詢支出明 細7刪除支出8修改支出 9統(tǒng)計總收入總支 出結束1.添加操作 建立單鏈表,調用input_info()函數(shù),提示用戶輸入要添加的收入或支出的信息;并將輸入的信息存儲到單鏈表中,輸入完成后返回主菜單界面。2.查詢操作 提示用戶輸入查詢的年月,如果用戶提示錯誤,則給出相應的出錯提示信息;如果用戶輸入正確,則根據(jù)用戶輸入的數(shù)據(jù)在單鏈表中查找收入或支
10、出的信息。如果沒有找到,則給出沒有數(shù)據(jù)的提示;如果找到,則判斷記錄個數(shù)是否小于9,如果小于9,直接顯示結果,否則提示用戶按空格翻頁。查詢操作的處理流程如圖所示。開始用戶輸入條件 輸入正確?提示錯誤 否 是定義指針p指向頭節(jié)點提示沒有數(shù)據(jù)結果個數(shù)是0?P是NULL? 是 是取得p指向節(jié)點的數(shù)據(jù) 否 否顯示結果P的值等于用戶輸入的條件? P是NULL? 否 是 提示用戶按空格鍵翻頁 否 是結果個數(shù)<9? 否用戶翻頁?將p的值添加到結果中 是 是 否提示是否再次查詢P=p->next清空結果結果再次查詢? 是 否結束2.查詢操作 提示用戶輸入查詢刪除的年月,如果用戶輸入錯誤,則給出相應的
11、出錯提示信息;如果用戶輸入正確,則根據(jù)用戶輸入的數(shù)據(jù)在單鏈表中查找收入或支出的信息。如果沒有找到,則給出沒有數(shù)據(jù)的提示信息;如果找到,顯示找到的記錄信息,并提示用戶輸入序號進行刪除操作。刪除成功后給出相應的提示信息。刪除的處理流程如圖所示。開始用戶輸入條件輸入正確?提示錯誤 否定義指針p指向頭節(jié)點 是結果個數(shù)為0?提示沒有數(shù)據(jù)P是NULL? 是 是取得p指向節(jié)點的數(shù)據(jù) 否P的值等于用戶輸入的條件?顯示結果提示用戶按數(shù)字鍵刪除數(shù)據(jù)刪除鏈表中對應的值 否結果個數(shù)<9?P是NULL? 是 是 否 否將p的值添加到結果中提示用戶按空格鍵翻頁 是用戶翻頁?P=p->next清空結果 是在結果
12、中刪除第i個值 否用戶刪除第i個? 是 否再次查詢? 是 否 結束 4. 修改操作 首先提示用戶輸入查詢的年月,如果用戶輸入錯誤,則給出相應的出錯提示信息;如果用戶輸入正確,則根據(jù)用戶輸入的數(shù)據(jù)在單鏈表中查找收入或支出的信息。開始如果沒有找到,則給出沒有數(shù)據(jù)的提示信息;如果找到,顯示找到的記錄信息,并提示用戶輸入序號進行修改操作。修改成功后給出相應的提示信息。修改的處理流程如圖所示。 用戶輸入條件輸入正確?提示錯誤 否定義指針p指向頭節(jié)點 是結果個數(shù)為0?提示沒有數(shù)據(jù)P是NULL? 是 是 否取得p指向節(jié)點的數(shù)據(jù) 否顯示結果P的值等于用戶輸入的條件? 否提示用戶按數(shù)字鍵刪除數(shù)據(jù) 是P是NULL
13、?結果個數(shù)<9? 否 是將p的值添加到結果中 是 否提示用戶按空格鍵翻頁 清空結果用戶翻頁?P=p->next 是 更新鏈表中的數(shù)據(jù) 否用戶刪除第i個? 是 否再次查詢? 是 否結束五詳細設計及程序設計(一) 頭文件<finance.h> 1.常量定義#define MAX_NAME 11 /*家庭成員姓名最大長度*/#define MAX_DETAIL 21 /*備注最大長度*/#define MENU_COUNT 9 /*菜單選項個數(shù)*/#define DATA_FILE "fs.dat" /*數(shù)據(jù)文件文件名*/2數(shù)據(jù)結構定義 (1)定義枚舉,表
14、示收入和支出typedef enum _fi_typeincome =1,/*收入*/payout =-1/*支出*/fi_type; (2)定義儲存家庭財務信息的結構體typedef struct _fi_infoint year;int month;fi_type type;char nameMAX_NAME;float money;char detailMAX_DETAIL;fi_info; (3)定義儲存財務數(shù)據(jù)結構的結構體typedef struct _fi_datafi_info info;struct _fi_data*next;fi_data;3函數(shù)聲明(1)主菜單對應的處理函
15、數(shù)void add_income(); /*添加收入*/void search_income();/*查詢收入*/void delete_income();/*刪除收入*/void update_income();/*修改收入*/void add_payout();/*添加支出*/void search_payout();/*查詢支出*/void delete_payout();/*刪除支出*/void update_payout();/*修改支出*/void count_total();/*統(tǒng)計總收入總支出*/void quit(); /*退出*/(2)主要處理函數(shù)void search_d
16、ata(fi_type type);/*查詢處理*/void delete_data(fi_type type);/*刪除處理*/void update_data(fi_type type);/*更新處理*/(3)輔助函數(shù)void mima();/*密碼*/void initialize();/*系統(tǒng)初始化*/void save_to_file();/*數(shù)據(jù)保存文件*/void clear_data();/*清空鏈表數(shù)據(jù)*/fi_data*get_last();/*得到鏈表數(shù)據(jù)最后一個節(jié)點*/fi_data*get_previous(fi_data*p);/*取前一個節(jié)點*/void inpu
17、t_info(fi_info*info);/*輸入財務數(shù)據(jù)信息*/void show_info(fi_data*p,int count);/*顯示財務信息*/ (二)模塊設計1.文件包含 #include <stdio.h>#include"stdlib.h"#include < string.h >#include <finance.h>2.定義一個頭節(jié)點fi_data*head;3.常量定義以下是主菜單中要顯示的字符。char menu="=n""|家庭財務管理系統(tǒng) |n""+ +n&
18、quot;"|收入管理 |n""| (1)添加收入 |n""| (2)查詢收入 |n""| (3)刪除收入 |n""| (4)修改收入 |n""+ +n""|支出管理 |n""| (5)添加支出 |n""| (6)查詢支出 |n""| (7)刪除支出 |n""| (8)修改支出 |n""| (9)合計 |""+-+n""| (0
19、)退出 |n""+-+n"4.定義函數(shù)指針數(shù)組 函數(shù)指針數(shù)組menu_main_func 儲存的是主菜單項中10個功能函數(shù)的地址,分別對應09菜單項。void (*menu_fun)()=quit,add_income,search_income,delete_income,update_income,add_payout,search_payout,delete_payout,update_payout,;5.主函數(shù)int main() int seleted=0;mima();initialize();while(seleted>=0&&
20、seleted<=MENU_COUNT)system("cls");/清屏printf(menu);printf(">請選擇要進行的操作(%d-%d)",0,MENU_COUNT);if(scanf("%d",&seleted)!=1|seleted<0|seleted>MENU_COUNT)printf(">輸入錯誤!請選擇%d-%d之間的數(shù),按任意鍵重試。",0,MENU_COUNT);fflush(stdin);getchar();elsemenu_funseleted(
21、);seleted=0;6.主菜單對應的處理函數(shù) (1)添加收入函數(shù)名稱:add_income函數(shù)功能:用戶在主菜單中選擇1的時候調用此函數(shù),用來添加收入信息的操作。處理流程:首先建立鏈表,調用input_info()函數(shù),提示用戶輸入輸入信息,并將輸入的信息儲存到單鏈表中,輸入完成后返回到主菜單界面。程序清單:void add_income()fi_data*p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p->next=NULL;input_info(&(p->info);p->info.
22、type=income;if(head=NULL)head=p;elseget_last(head)->next=p;(2)查詢收入明細函數(shù)名稱:search_income函數(shù)功能:用戶在主菜單中選擇2的時候調用此函數(shù),用來查詢收入明細的操作,函數(shù)中調用search_data()來完成收入明細的查詢。程序清單:void search_income()search_data(income);(3)刪除收入函數(shù)名稱:delete_income函數(shù)功能:用戶在主菜單中選擇3的時候調用此函數(shù),用來刪除收入信息的操作。在函數(shù)中調用delete_data()來完成。程序清單:void delete_
23、income()delete_data(income);(4)修改收入函數(shù)名稱:updata_income函數(shù)功能:用戶在主菜單中選擇4的時候調用此函數(shù),用來修改收入信息的操作。函數(shù)中調用update_data()來完成的。程序清單:void update_income()update_data(income);(5)添加支出函數(shù)名稱:add_payout函數(shù)功能:用戶在主菜單中選擇5的時候調用此函數(shù),用來添加支出信息的操作。處理流程:首先建立鏈表,調用input_info()函數(shù),提示用戶輸入輸入信息,并將輸入的信息儲存到單鏈表中,輸入完成后返回到主菜單界面。程序清單:void add_pa
24、yout()fi_data*p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);input_info(&(p->info);p->info.type=payout;if(head=NULL)head=p;elseget_last(head)->next=p;(6)查詢支出明細函數(shù)名稱:search_payout函數(shù)功能:用戶在主菜單中選擇6的時候調用此函數(shù),用來查詢收入明細的操作,函數(shù)中調用search_data()來完成收入明細的查詢。程序清單:void search_payout()searc
25、h_data(payout);(7)刪除支出函數(shù)名稱:delete_payout函數(shù)功能:用戶在主菜單中選擇7的時候調用此函數(shù),用來刪除支出信息的操作。在函數(shù)中調用delete_data()來完成。程序清單:void delete_payout()delete_data(payout);(8)修改支出函數(shù)名稱:updata_payout函數(shù)功能:用戶在主菜單中選擇8的時候調用此函數(shù),用來修改收入信息的操作。函數(shù)中調用update_data()來完成的。程序清單:void update_payout()update_data(payout);(9)統(tǒng)計總收入總支出函數(shù)名稱:count_total
26、函數(shù)功能:主菜單中選擇9的時候進行統(tǒng)計的操作,在單鏈表中,計算收入和支出的總和,并將兩者想減得到家庭收入的結余,并按一定的格式顯示出來。程序清單:void count_total()float total_income=0.0;float total_payout=0.0;fi_data*p=head;while(p!=NULL)if(p->info.type=income)total_income+=p->info.money;elsetotal_payout+=p->info.money;p=p->next;printf("+-+-+-+n");
27、printf("| 合計收入 | 合計支出 | 結余 |n"); printf("+-+-+-+n");printf("|%12.2f|%12.2f|%12.2f|n",total_income,total_payout,total_income-total_payout); printf("+-+-+-+n");printf("按任意鍵返回主菜單。n");fflush(stdin);getchar();(10)退出系統(tǒng)函數(shù)名稱:quit函數(shù)功能:將鏈表中的數(shù)據(jù)釋放,退出系統(tǒng)。程序清單:void
28、 quit()save_to_file();clear_data();exit(0);7.主要處理函數(shù)(1)查詢處理 函數(shù)名稱:search_data函數(shù)功能:收入和支出的查詢操作。處理流程:提示用戶按照指定格式輸入要查詢的年月,如果用戶輸入錯誤,給出提示;如果用戶輸入正確,則在單鏈表中查找該年月的收入信息。如果查詢成功,判斷查詢結果個數(shù)是否小于9,調用函數(shù)show_info()顯示找到的收入信息;如果大于9,按空格進行翻頁操作。如果沒有找到任何信息,系統(tǒng)給出提示信息。提示用戶是否繼續(xù)查詢,如果用戶輸入Y或y,則再次進行查詢操作;否則,返回主菜單界面。程序清單:/*查詢處理*/void sea
29、rch_data(fi_type type)int year=0;int month=0;fi_data*p=NULL;fi_data*result9=NULL;int count=0;char input=''while(1)printf(">請輸入要查詢的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2)printf(">輸入錯誤。n");elsep=head;count=0;memset(result,0,sizeof(fi_data*
30、);while(p!=NULL)if(p->info.year=year&&p->info.month=month&&p->info.type=type)if(count<9)resultcount=p;count+;elseshow_info(result,count);printf(">輸入空格并回車翻頁。其余鍵退出。");fflush(stdin);input=getchar();if(input='')memset(result,0,sizeof(fi_data*);count=0;res
31、ultcount=p;count+;elsebreak;p=p->next;if(count!=0)show_info(result,count);elseprintf(">沒有找到數(shù)據(jù)。n");printf(">繼續(xù)查找其它數(shù)據(jù)?(y or n)");fflush(stdin);input=getchar();if(input='y'|input='Y')continue;elsebreak;(2)刪除處理 函數(shù)名稱:delete_data函數(shù)功能:收入和支出的刪除操作。處理流程:提示用戶輸入要刪除收入
32、的年月,然后根據(jù)用戶輸入的年月信息在單鏈表中查找相關信息。如果查找成功,且查找到的數(shù)據(jù)小于9,直接調用show_info()函數(shù)顯示查找到的收入信息;入過查到的數(shù)據(jù)大于9,則按空格鍵翻頁。最后提示用戶輸入要刪除的收入信息的序號,完成刪除的操作。如果查找不成功,給出相應的提示信息。提示用戶是否繼續(xù)刪除的操作,如果用戶輸入“Y”或“y”,則再進行查詢操作;否則,返回值菜單界面。程序清單:void delete_data(fi_type type)int year=0;int month=0;fi_data*p=NULL;fi_data*pre=NULL;fi_data*result9=NULL;i
33、nt count=0;char input=''int i=0;while(1)printf(">請輸入要查詢的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2)printf(">輸入錯誤!n");elsep=head;count=0;memset(result,0,sizeof(fi_data*);while(p!=NULL)if(p->info.year=year&&p->info.month=month&am
34、p;&p->info.type=type)if(count<9)resultcount=p;count+;elseshow_info(result,count);printf(">輸入空格并翻頁。輸入對應的序號刪除。其他鍵退出。");fflush(stdin);input=getchar();if(input='')memset(result,0,sizeof(fi_data*);count=0;resultcount=p;count+;else if(input>='1'&&input<
35、=48+count)i=input-49;pre=get_previous(resulti);if(pre=NULL)head=head->next;elsepre->next=resulti->next;free(resulti);for(;i<count-1;i+)resulti=resulti+1;resulti=p;printf(">刪除成功!n");elsebreak;p=p->next;if(count!=0)show_info(result,count);printf(">輸入對應的序號刪除,其它鍵退出&qu
36、ot;); fflush(stdin);input=getchar();if(input>='1'&&input<=48+count)i=input-49;pre=get_previous(resulti);if(pre=NULL)head=head->next;elsepre->next=resulti->next;free(resulti);for(;i<count-1;i+)resulti=resulti+1;resulti=NULL;count+;printf(">刪除成功!n");elsep
37、rintf(">沒有找到數(shù)據(jù)!n");printf(">繼續(xù)查找其它數(shù)據(jù)?(y or n)");fflush(stdin);input=getchar();if(input='y'|input='Y')continue;elsebreak;(3)更新處理 函數(shù)名稱:update_data 函數(shù)功能:收入和支出的更新操作。處理流程:首先提示用戶輸入要更新收入或支出的年月,然后根據(jù)用戶輸入的年月信息在單鏈表中查找相關信息。遇過查找成功,且查找到的數(shù)據(jù)小于9,直接調用show_info()函數(shù)顯示查找到的收入或支出信
38、息;如果大于9,則按空格鍵翻頁。最后提示用戶輸入要更新的收入或支出信息的序號,調用input_info()函數(shù)輸入更新的收入或支出信息,完成更新操作。如果查找不成功,則給出相應的提示信息。提示用戶是否繼續(xù)更新操作,如果用戶輸入“Y”或“y”,則再次進行查詢操作;否則,返回主菜單界面。程序清單:void update_data(fi_type type)int year=0;int month=0;fi_data*p=NULL;fi_data*pre=NULL;fi_data*result9=NULL;int count=0;char input=''int i=0;while(
39、1)printf(">請輸入要查詢的年月(例如:2009/1)");if(scanf("%d/%d",&year,&month)!=2)printf(">輸入錯誤!n");elsep=head;count=0;memset(result,0,sizeof(fi_data*);while(p!=NULL)if(p->info.year=year&&p->info.month=month&&p->info.type=type)if(coumt<9)resu
40、ltcount=p;count+;elseshow_info(result,count);printf(">輸入空格并翻頁。輸入對應的序號刪除。其他鍵退出。");fflush(stdin);input=getchar();if(input='')memset(result,0,sizeof(fi_data*);count=0;resultcount=p;count+;else if(input>='1'&&input<=48+count)i=input-49;input_info(&(resulti-
41、>info);printf(">修改成功!n");p=get_previous(p);elsebreak;p=p->next;if(count!=0)show_info(result,count);printf(">請輸入對應的序號修改,其它鍵退出。");fflush(stdin);input=getchar();if(input>='1'&&input<=48+count)i=input-49;input_info(&(resulti->info);show_info(r
42、esult,count);printf(">修改成功!n"); elseprintf(">沒有找到數(shù)據(jù)!n");printf(">繼續(xù)查找其它數(shù)據(jù)?(y or n)");fflush(stdin);input=getchar();if(input='y'|input='Y')continue;elsebreak;8.輔助函數(shù) (1)系統(tǒng)初始化 函數(shù)名稱:initialize 函數(shù)功能:系統(tǒng)初始化操作,包括數(shù)據(jù)文件和單鏈表的初始化。 函數(shù)清單:void initialize()FULE*
43、fp=NULL;fi_data*p=NULL;fi_data*last=NULL;int count=0;/*判斷數(shù)據(jù)文件是否存在,不存在創(chuàng)建一個*/fp=fopen("d:data.dat","rb"); if(fp=NULL)fp=fopen("d:data.dat","w");/*創(chuàng)建文件*/fclose(fp);return;p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p->next=NULL;while(fread(&a
44、mp;(p->info),sizeof(fi_data),1,fp)=1)if(head=NULL)/*鏈表為空*/head=p;elselast=get_last();/*頭節(jié)點不為空時,在鏈表中找到最后一個*/last->next=p;/*將b連到最后一個節(jié)點之后*/count+;fseek(fp,count*sizeof(fi_info),SEEK_SET);/*將文件指針指到下個*/ p=(fi_data*)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p->next=NULL;free(p);p=NULL;fclose(fp);(2)將財務數(shù)據(jù)保存到文件函數(shù)名稱:save_to_file函數(shù)功能:將單鏈表中的數(shù)據(jù)保存到文件。程序清單:void save_to_file()FILE*fp=fopen("d:data.dat","wb");fi_data*p=head;while(p!=NULL)fwrite(&(p->info),sizeof(fi_info),1,fp);fseek(fp,0,SEEK_END);p=p->next;fclose(fp);(3)清空鏈表中的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學與生活聯(lián)系的試題及答案
- 2025年注冊土木工程師考試的應考心態(tài)試題及答案
- 九種體質試題及答案大全
- 2025年農(nóng)產(chǎn)品電商市場前景研究試題及答案
- 三基測驗試題及答案大全
- 發(fā)掘2025年注冊土木工程師考試的試題及答案根源
- 中國鉛酸蓄電池延生器行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告2025-2028版
- 中國酸性橙II行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告2025-2028版
- 中國連鎖經(jīng)營行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資機會研究報告2025-2028版
- 創(chuàng)業(yè)政策變化分析試題及答案
- 組織供應,運輸,售后服務方案
- (完整版)各檔口單品菜品毛利率核算表
- 信息隱藏技術全套教學課件
- 2023年云南省昆明市中考作文真題解析及欣賞:堅持的力量
- SMC電磁閥的選型手冊
- 2023年江蘇泰州市第四人民醫(yī)院招考聘用高層次人才11人模擬備考試卷(共1000題含答案解析)
- 工會換屆選舉請示樣式
- 七年級音樂上冊 《青少年管弦樂隊指南》教學課件
- 新中國史智慧樹知到答案章節(jié)測試2023年
- 員工面試登記表通用模板
- 部編版2022-2023學年六年級下冊期末語文升學分班常考易錯題模擬試卷(二)含解析
評論
0/150
提交評論