【正文】
數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目: 個(gè)人帳簿管理系統(tǒng)設(shè)計(jì) 2020 年 第二 學(xué)期 一.實(shí)習(xí)目的 通過(guò)實(shí)習(xí),了解并初步掌握設(shè)計(jì)、實(shí)現(xiàn)較大系統(tǒng)的完整過(guò)程,包括系統(tǒng)分析、編碼設(shè)計(jì)、系統(tǒng)集成、以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計(jì)、實(shí)現(xiàn)以及操作方法,為進(jìn)一步的應(yīng)用開(kāi)發(fā)打好基礎(chǔ)。 二.問(wèn)題描述 ( 具體任務(wù) ) 根據(jù)課程設(shè)計(jì)任務(wù)書(shū)要求, 個(gè)人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項(xiàng)開(kāi)支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。進(jìn) 入系統(tǒng)后可以輸入和修改某月的收支情況,可以對(duì)每月的開(kāi)支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。另外 要求 建立一個(gè)文件,包括某人 5 個(gè)月的收支情況,能對(duì)文件中的信息進(jìn)行擴(kuò)充(追加),修改和刪除;完成對(duì)每月的開(kāi)支排序,以及完成系統(tǒng)查詢功能。 三.需求分析 功能需求 個(gè)人帳簿管理系統(tǒng) 要求 記錄某人每月的全部收入及各項(xiàng)開(kāi)支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等 并能進(jìn)行修改,查詢,排序, 求和, 刪除等功能。 數(shù)據(jù)需求 系統(tǒng)主要處理的是個(gè)人帳簿信息,因此其輸入和輸出都 與此相關(guān)。 (1) 輸入數(shù)據(jù): 月份 和 食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄 等數(shù)據(jù)。 (2) 輸出數(shù)據(jù): 月份 和 食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄 等的數(shù)據(jù)。 四. 算法設(shè)計(jì)思想及流程圖 (1) 菜單 本系統(tǒng)根據(jù)需要主要設(shè)計(jì)了 6 個(gè)菜單,分別為 ① 錄 入 數(shù) 據(jù) ② .查 看 數(shù) 據(jù) ③ 修 改 數(shù) 據(jù) ④ .查 詢 數(shù) 據(jù) ⑤ 排 序 數(shù) 據(jù) ⑥ 刪 除 數(shù) 據(jù) ⑦ 求 和 數(shù) 據(jù) ⑧ 退 出 系 統(tǒng) (2) 文件保存方式 系統(tǒng)需要保文件,文件存儲(chǔ)月 份 和 食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄 等數(shù)據(jù)。 (3) 數(shù)據(jù)類型 系統(tǒng)定義了數(shù)組,結(jié)構(gòu)體等類型,存儲(chǔ)月份和食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等信息。 (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ù)分析,系統(tǒng)主要設(shè)計(jì)了 7 個(gè)模塊, 分別是: 錄入數(shù)據(jù) 模塊, 查看數(shù)據(jù) 模塊, 修改數(shù)據(jù) 模塊 , 查詢數(shù)據(jù) 模塊 , 排序數(shù)據(jù) 模塊, 刪除數(shù)據(jù) 模塊 ,月消費(fèi)求和模塊 ; 功能模塊圖 如圖 1 所示。 個(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ù)。 (2)查看數(shù)據(jù) 查 看 數(shù)據(jù)模塊 是輸入要執(zhí)行的操作,打開(kāi)文件,查看帳戶里面的信息 (3)修改數(shù)據(jù) 修改數(shù)據(jù)模塊是輸入要修改的月份,打開(kāi)文件,找到該月的信息,把新輸入的信息復(fù)制給原有 信息,已達(dá)到修改的目的。 (4)查詢數(shù)據(jù) 查 詢 數(shù)據(jù)模塊是打開(kāi)文件,輸入要查看的月份,就將輸出該月的信息。 (5)排序數(shù)據(jù) 排序數(shù)據(jù)模塊是用冒泡排序,把每月的費(fèi)用從小到大排列。 (6)求和 數(shù)據(jù) 利用循環(huán)一一累加求和。 (7)刪除數(shù)據(jù) 刪除數(shù)據(jù)模塊是用鏈表把其中某月刪除。 5詳細(xì)設(shè)計(jì) 模塊 錄入主要通過(guò) scanf 函數(shù)實(shí)現(xiàn)。具體程序?qū)崿F(xiàn)流程如圖 2 所示。 開(kāi) 始結(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。 ne w I m o n t h 。f f l u s h ( s t d i n ) 。 / 圖 2 輸入 月 份 和 食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄 等數(shù)據(jù)。 子模塊 修改文件中的信息 , 具體程序?qū)崿F(xiàn)流程如圖 3 所示 。 開(kāi) 始結(jié) 束i t e m = s e a r c h ( a ) 。m o n = a m o n t h 。 i t e m ! = O K p r i n t f ( \n 記 錄 月 份 食 品 消 費(fèi) 房 租 費(fèi) 用 . . . p r i n t f ( \n 沒(méi) 有 符 合 條 件的 記 錄 ! \ n ) 。i n p u t ( a ) 。 / / m o d i f y ( a , m o n ) 。NY 圖 3 輸入 月份 首先判斷文件中是否有該信息,沒(méi)有,輸出沒(méi)有符合條件的記錄,有,輸出該信息,再進(jìn)行修改 ;即重新 輸入 月 份 和 食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄 等數(shù)據(jù)。 子模塊 查詢某月的信息 , 具體程序?qū)崿F(xiàn)流程如圖 4 所示 。 開(kāi) 始F I L E * f p 1 。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 。 ! f e o f ( f p 1 )a m o n t h = = m o ni s f o u n d = 1 。 i s f o u n d = 0 。 b r e a k 。f c l o s e ( f p 1 ) 。i s f o u n dr e t u r n O K 。r e t u r n N o t F o u n d結(jié) 束NYNYf r e a d ( a , s i z e o f ( I n f o r ) , 1 , f p 1NNYY 圖 4 輸入要查 詢 的月份, 首先判斷文件中是否有該信息,沒(méi)有,輸出 無(wú)法找到該文件 ,有,輸出該信息 。 子模塊 排序某月的所有費(fèi)用,具體程序?qū)崿F(xiàn)流程如圖 5 所示 ; 開(kāi) 始i n t i = 0 , j = 0 , f l a g = 0 , t 。i 8p x [ i ] . n o = i 。i + +p x [ 0 ] . d a t a = a m o n t h 。i = 1i 8f l a g = 0 。j = 0j 8 it = p x [ j ] . d a t a 。j + +f l a g = = 0b r e a k 。i + +p r i n t f ( \ n ) 。i = 0i 8p r i n t f ( % s , s t r [ p x [ i ] . n o ] ) 。p r i n t f ( \ n \ n ) 。i = 0i 8p r i n t f ( % 8 d , p x [ i ] . d a t a ) 。i + +p r i n t f ( \ n ) 。結(jié) 束Yi + +NYYYYNNNN 圖 5