【正文】
rintf(**\t輸入數(shù)據(jù) \t\t查看數(shù)據(jù) \t**\n)。 do { system(cls)。 printf(**\t\t\t\t\t\t**\n)。 printf(\n)。 printf(**\t\t宋曉東 \t\t\t**\n)。 printf(**\t\t\t\t\t\t**\n)。 //聲明刪除數(shù)據(jù)函數(shù) int main(void) {/*主函數(shù) */ Show_open_picture()。 //聲明關(guān)閉個(gè)人管理系統(tǒng)函數(shù) void Input(Infor *)。 //定義存儲(chǔ)費(fèi)用 int ine_c。f p u t s ( \n … … … …! f e o f ( f p 1p r i n t f ( % 7 d % 8 d . . . f p u t s ( 結(jié) 束NNYNY 圖 6 輸入要?jiǎng)h除的月份 ,若文件中沒有該信息,輸出無(wú)法找到該文件,若文件中有該信息,輸出請(qǐng)選擇要?jiǎng)h除的月份, 輸入月份 ,利用 鏈表的知識(shí) 刪除 該 月份 。i = 0i 8p r i n t f ( % 8 d , p x [ i ] . d a t a ) 。i 8p x [ i ] . n o = i 。F p 1 = N U L Lp r i n t f ( 無(wú) 法 找 到 文 ?r e t u r e E r r o ri s f o u n d = 1 。 開 始結(jié) 束i t e m = s e a r c h ( a ) 。 (7)刪除數(shù)據(jù) 刪除數(shù)據(jù)模塊是用鏈表把其中某月刪除。 (4) 算法設(shè)計(jì) 系統(tǒng)中主要排序算法(冒泡排序),即第 1 個(gè)數(shù)與第 2 個(gè)數(shù)比較,若第 1 個(gè)大,就與第 2 個(gè)數(shù)交換;若第 2 個(gè)數(shù)大,就不交換;繼續(xù)第 2 個(gè)與第 3 個(gè)比較, 。進(jìn) 入系統(tǒng)后可以輸入和修改某月的收支情況,可以對(duì)每月的開支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。 數(shù)據(jù)需求 系統(tǒng)主要處理的是個(gè)人帳簿信息,因此其輸入和輸出都 與此相關(guān)。 個(gè) 人 賬 簿 管 理 系 統(tǒng)錄入數(shù)據(jù)模塊查看數(shù)據(jù)模塊修改數(shù)據(jù)模塊查詢數(shù)據(jù)模塊排序數(shù)據(jù)模塊刪除數(shù)據(jù)模塊月消費(fèi)求和模塊 圖 1功能模塊圖 (1)錄入數(shù)據(jù) 錄入數(shù)據(jù)模塊把輸入的信息存儲(chǔ)到文件里,為以下操作提供數(shù)據(jù)。 開 始結(jié) 束 p r i n t f ( \ n 請(qǐng)依 次 輸 入 數(shù)據(jù)s c a n f ( % d %d % d % d % d %d % d % d , amp。i n p u t ( a ) 。 b r e a k 。j = 0j 8 it = p x [ j ] . d a t a 。 , 直到比較完為止。 //定義食品費(fèi)用 int rent_c。 int data。 //聲明將 dat 格式文件轉(zhuǎn)換為 txt 文件 int Search(Infor *)。 system(cls)。 printf(\n)。 printf(\n\n)。 printf(**\t\t\t\t\t\t**\n)。 exit(0)。 printf(**\t\t\t\t\t\t**\n)。 printf(**\t求和數(shù)據(jù) \t\t0、退出系統(tǒng) \t**\n)。 //調(diào)用輸入數(shù)據(jù)函數(shù) WriteInfor(data)。 case 3://修改數(shù)據(jù) system(color 3)。 //調(diào)用輸入數(shù)據(jù)函數(shù) Modify(data, mon)。 printf(%7d %8d %8d %8d %8d %8d %8d %8d\n, datamonth, datafood_c, datarent_c, datachildren_c, datawater_ele_c, datahospital_c, datacarring_c, dataine_c)。 break。 Delete(mon)。 break。newImonth, amp。 fflush(stdin)。 //關(guān)閉文件,避免內(nèi)存泄露 printf(數(shù)據(jù)存入文件成功! \n)。 if(fp2 == NULL) { printf(無(wú)法創(chuàng)建文件: %s\n, FilePath2)。 //feof(stream)函數(shù)有兩個(gè)返回值,如果遇到文件結(jié)束,函數(shù)返回值為非零值,否則為 0 while(!feof(fp1)) { printf(%7d %8d %8d %8d %8d %8d %8d %8d\n, datamonth, datafood_c, datarent_c, datachildren_c, datawater_ele_c, datahospital_c, datacarring_c, dataine_c)。//調(diào)用打開轉(zhuǎn)換的文本文件 remove(FilePath2)。//打開一個(gè)二進(jìn)制文件,可讀取或?qū)懭肫渲袛?shù)據(jù) if(fp1 == NULL) { printf(無(wú)法找到文件: %s\n, FilePath1)。 } fclose(fp1)。 for(i = 0。 Sort_info[5].data = dathospital_c。 Sort_info[j].data = Sort_info[j + 1].data。 i++) printf(%s , Str_info[Sort_info[i].number])。 //初值賦值為 0 char Str_info[9][10] = {記錄月份 , 食品消費(fèi) , 房租費(fèi)用 , 子女費(fèi)用 , 水電費(fèi)用 , 醫(yī)療費(fèi)用 , 儲(chǔ)蓄費(fèi)用 , 本月收入 , 月 消費(fèi)和 }。 Sort_info[4].data = datwater_ele_c。 printf(\n)。 printf(\n)。 while(!feof(fp1))//重寫數(shù)據(jù) { if(datmonth == mon)//判斷是否為要修改的月份 fwrite(data, sizeof(Infor), 1, fp2)。 ChangeFormat()。 while(!feof(fp1)) { if(datmonth != mon) fwrite(dat, sizeof(Infor), 1, fp2)。或者說(shuō),軟件測(cè)試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤或缺陷 。 八 . 參考文獻(xiàn) [1] 譚浩強(qiáng) .C 語(yǔ)言程序設(shè)計(jì) (第三版 ).清華大學(xué)出版社, 2020 [2] 姜靈芝,余健 .C 語(yǔ)言課程設(shè)計(jì)案例精編 .清華大學(xué)出版社, 2020 [3] 網(wǎng)上相關(guān)資料 附錄: 開機(jī)畫面 菜單界面 錄入數(shù)據(jù) 查看數(shù)據(jù) 修改數(shù)據(jù) 查詢數(shù)據(jù) 排序數(shù)據(jù) 刪除數(shù)據(jù) 月消費(fèi)求和