




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、個人賬簿管理系統(tǒng)設計書3.相關的數(shù)據(jù)類型typedef struct int month;/int spxf;int fzfy;/int znjy;/int sdfy;/int ylfy;/int cxfy;/int srfy;/ Infor;月份食品消費房租費用子女教育費用水電費用醫(yī)療費用儲蓄費用收入費用typedef struct / 查詢用自定義數(shù)據(jù)類型int no;int data;pType;4. 各問題處理的流程圖4.1 錄入模塊4.2修改模塊ri utifC A. n 五育依次哂人效d/d、d丁晟 m4.3查詢模塊jpiri n rf; 口十三錄月份告晶滸結 .再程裁用.prin
2、tf f10名將合奉件 ”三三羊!“工printf(110名符合事件 判三三吊尸篇 /jpiri n*。1 .口七三錄月份 曾晶川聲.再租妻里-mpu cfa);m odifv(a ti)rinpu eCa);m oAifyC 工m a fi)ri em =w gzardi NO 二 m oa aJs-fii CkAth;i tem =tearciCi m on 3J3-n oiiEhr4.4排序模塊4.5 刪除模塊開始fpl=NULLpnntf?無法獨到文ReturtLfpgfptinifC3結束5.描述實現(xiàn)函數(shù)的調(diào)用關系圖tffij置握添是據(jù)U顯示全部月份勤 *顯一番青數(shù)據(jù) *受函數(shù)6.1
3、 調(diào)試中遇到的問題及對問題的解決方法創(chuàng)建結構體對該程序至關重要,通過查閱參考書籍,創(chuàng)建了合適的結構體。由于初期未考慮到排序功能,后期做排序的時候,對整個程序做了一些修改,主要是結構體方面。 本程序的排序系統(tǒng)的采用的是“快速排序”,代碼主要來自數(shù)據(jù)結構(c語言版),由于書上代碼為偽代碼,所以調(diào)試時遇到一些問題,由于習慣使用C+中的引用傳遞,導致在 c文件中編譯錯誤,經(jīng)過查找資料才發(fā)現(xiàn)問題所在,于是將c文件改為cpp文件,解決了做排序功能時遇到的一些問題6.2 算法的時間復雜度和空間復雜度空間復雜度:O(f(n)時間復雜度:O (n)7.輸出典型數(shù)據(jù),獲得測試結果;*1個人帳遒管展系誑設計ms戮數(shù)
4、飄慰藪蓼卡改詢序錄查螫排駛lM 34.G 6 也性輸入要進行的巽作一青依太物入夔據(jù)曉明:中旬以空的州開:k本月月初著吊哨費房租費用子女方用水電替用醫(yī)療鑄用糙番費用收入察用1E酮 1 B0 EFt3HWHi 1盤詢序 苴售排駛 之? 4 4 5&L可G 據(jù)晶; 數(shù)食la功晴輸入要進行的操作工,明獨聞以空格符幅開Km房租費用子女博用水電替用醫(yī)療中用儲蓄若用收入存用) 口e 7nn 3日加T八帳通管型系統(tǒng)設計居月居居Ir 藪藪數(shù)數(shù)數(shù) 人看改詢序 毒臉排明 12 356晴輸入要進彳逢/點3.嫉, 1 ,小林近理與魄&:十彳入營土釬除攆、:T水電費黑 醫(yī)療費阻滯*號用 收人導為?1 Eg 5加 IQt吳
5、刪fi制iLisig的娓M聚月用曹品酒帶冏相當用IjrRfl 用電號用EfFBfl施號用3月載入己量月此囪品洞F鼻二皆作 干之任用,電W用之L費孑壇* 三田黎月的,8.源程序(帶注釋)#include #include #include #include /文件保存路徑#define FilePathl Myinfor.dat#define FilePath2 Myinfor.txt/查詢用聲明#define Status int# define OK 1# define Error 0# define NotFound 2typedef struct int month;/ 月份int sp
6、xf;食品消費int fzfy;/房租費用int znjy;子女教育費用int sdfy;水電費用int ylfy;/醫(yī)療費用int cxfy;/儲蓄費用int srfy;/收入費用 Infor;typedef struct /查詢用自定義數(shù)據(jù)類型int no;int data;pType; void menu(void); / 菜單void input(Infor *newI); / 接收鍵盤輸入將dat格式文件轉(zhuǎn)換為txt文件void writeinfor(Infor *newI);/向文件寫入容void changeFormat(void );/Status search(Infor *
7、a);/查詢函數(shù)返回查詢的結果及查詢的狀態(tài)void paixu(Infor *a);/對查詢據(jù)結果排序void modify(Infor *a,int mon);/ 修改數(shù)據(jù)void delRecord(int mon);/ 刪除數(shù)據(jù)int main()while(1)menu();void menu(void)int item;int mon;Infor *a;a=(Infor *)malloc(sizeof(Infor);doprintf(n 個人帳簿管理系統(tǒng)設計nn);printf(tt1.錄入數(shù)據(jù)。n);printf(tt2.查看數(shù)據(jù)。n);printf(tt3.修改數(shù)據(jù)。n);pri
8、ntf(tt4.查詢數(shù)據(jù)。n);printf(tt5.排序數(shù)據(jù)。n);printf(tt6.刪除數(shù)據(jù)。n);printf(tt0.退出系統(tǒng)。nn);printf(” 請輸入要進行的操作:);scanf(%d”,&item);while(item6 | itemmonth;if (item!=OK) printf(n沒有符合條件的記錄!n);else printf(n記錄月份食品消費房租費用子女費用水電費用醫(yī)療費用儲蓄費用本月收入n);printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a
9、-sdfy,a-ylfy,a-cxfy,a-srfy);input(a);modify(a,mon);break;/ 查詢數(shù)據(jù)case 4: item=search(a);if (item!=OK) printf(n沒有符合條件的記錄!n);elseprintf(n記錄月份食品消費房租費用子女費用水電費用醫(yī)療費用儲蓄費用本月收入n);printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srfy);break;/ 排序數(shù)據(jù)case 5: ite
10、m=search(a);if (item!=OK) printf(n沒有找到符合排序條件的記錄!n);else paixu(a); break;/刪除數(shù)據(jù)case 6:item=search(a);mon=a-month;if (item!=OK) printf(n沒有符合條件的記錄!n);else printf(n記錄月份食品消費房租費用子女費用水電費用醫(yī)療費用儲蓄費用本月收入n);printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srf
11、y);delRecord(mon);break;free(a);/釋放存空間void input(Infor *newI)/接收從鍵盤輸入的數(shù)據(jù)printf(n請依次輸入數(shù)據(jù)說明:中間以空格符隔開:n(本月月份食品消費 房租費用 子女費用 水電費用 醫(yī)療費用 儲蓄費用 收入費 用)n);scanf(%d%d%d%d%d%d%d%d,&newI-month,&newI-spxf,&newI-fzfy,&ne wl-znjy,&newl-sdfy,&newl-ylfy,&newl-cxfy,&newl-srfy);fflush(stdin);void writeinfor(Infor *newI)
12、/ 向文件寫入容FILE *fp;fp=fopen(FilePath1,ab+);if(fp=NULL)printf(無法創(chuàng)建文件:s,FilePath1);exit(0);fwrite(newI,sizeof(Infor),1,fp);/這里可以做特別處理可防止存在同一月份有2條以上的記錄問題。這里就不寫了。fclose(fp);printf(數(shù)據(jù)錄入成功! n);void changeFormat(void) /暫時只能操作一行文件有待改進FILE *fp1,*fp2;Infor *a;a=(Infor *)malloc(sizeof(Infor);fp1=fopen(FilePath1,
13、rb+);if(fp1=NULL)printf(無法找到文件:sn,FilePath1);return ; / 返回主函數(shù)fp2=fopen(FilePath2,wt+);if(fp2=NULL)printf(無法創(chuàng)建文件:sn,FilePath2);return ; /返回主函數(shù)fputs(n個人帳簿管理系nn,fp2);fputs(”記錄月份 食品消費 房租費用 子女費用 水電費用醫(yī)療費用儲蓄費用本月收入n”,fp2);fputs(n,fp2);printf(n 記錄月份食品消費房租費用子女費用水電費用醫(yī)療費 用儲蓄費用本月收入n);printf(n);rewind(fpl);fread(
14、a,sizeof(Infor),1,fp1);while(!feof(fp1)從原文件.dat中讀數(shù)據(jù)寫入顯示文件.txt中printf(%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf,a-fz fy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srfy);fprintf(fp2,%7d %8d %8d %8d %8d %8d %8d %8dn,a-month,a-spxf, a-fzfy,a-znjy,a-sdfy,a-ylfy,a-cxfy,a-srfy);fread(a,sizeof(Infor),1,fp1);fputs(
15、n,fp2);fputs(關閉本程序繼續(xù)原程序!n,fp2);fclose(fpl);fclose(fp2);system(FilePath2); /調(diào)用打開轉(zhuǎn)換的文本文件remove(FilePath2);/刪除文本文件文件Status search(Infor *a)FILE *fp1;int mon;int isfound=0;printf(請正確輸入要查詢的月份:);scanf(%d”,&mon);fflush(stdin); 清除緩沖區(qū)fp1=fopen(FilePath1,rb+);if(fp1=NULL)printf(無法找到文件:sn,FilePath1);return Err
16、or; 返回主函數(shù)rewind(fpl);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1)查詢操作if(a-month=mon)isfound=1;break;elseisfound=0;fread(a,sizeof(Infor),1,fp1);fclose(fp1);if(isfound)return OK;elsereturn NotFound;void paixu(Infor *a)int i=0,j=0,flag=0,t;pType px8=0,0;char str810=記錄月份,食品消費,房租費用,子女費用,水電費用”,醫(yī)療費用,儲蓄費用”
17、,”本月收入土for(;imonth;px1.data=a-spxf;px2.data=a-fzfy;px3.data=a-znjy;px4.data=a-sdfy;px5.data=a-ylfy;px6.data=a-cxfy;px7.data=a-srfy;for(i=1;i8;i+)/ 冒泡排序flag=0;for(j=0;jpxj+1.data)t=pxj.data;pxj.data=pxj+1.data;pxj+1.data=t;t=pxj.no;pxj.no=pxj+1.no;pxj+1.no=t;flag=1;/輸出結果if(flag=0) break;printf(n);for
18、(i=0;i8;i+)printf( %s,strpxi.no);printf(nn);for(i=0;imonth=mon)fwrite(a,sizeof(Infor),1,fp2);/修改數(shù)據(jù)elsefwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);fclose(fpl);fclose(fp2);remove(FilePathl); /刪除源文件rename(temp.dat,FilePath1);重命名中間文件printf(修改數(shù)據(jù)成功! n);changeFormat(); /顯示數(shù)據(jù)void delRecord(in
19、t mon) /刪除數(shù)據(jù)FILE *fp1,*fp2;Infor *b;b=(Infor *)malloc(sizeof(Infor);fp1=fopen(FilePath1,rt);fp2=fopen(temp.dat,wt+);rewind(fpl);fread(b,sizeof(Infor),1,fp1);while (!feof(fp1) /重寫數(shù)據(jù)if(b-month!=mon)fwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);fclose(fpl);fclose(fp2);remove(FilePathl); /刪
20、除源文件rename(temp.dat,FilePath1);重命名中間文件printf( 刪除數(shù)據(jù)成功! n);changeFormat(); /顯示數(shù)據(jù)9.總結經(jīng)過這次數(shù)據(jù)結構課程設計,我們不僅及時鞏固的了數(shù)據(jù)結構、算法、 以及軟件工程的知識,并對數(shù)據(jù)結構和算法的配合對于程序時間和空間性能的影 響以及軟件工程提供的開發(fā)流程和工具對于實現(xiàn)特定功能程序的重要意義。當我們面對一個實際問題, 應該迅速根據(jù)問題性質(zhì)和特點抽象成特定的數(shù)據(jù)結構,當然每個問題都有可能能夠抽象成多種數(shù)據(jù)結構, 每種數(shù)據(jù)結構適應于不同的算法, 例如, 馬踏棋盤問題就可以采用廣度優(yōu)先搜索或深度優(yōu)先搜索來解決。 因此此時就應該綜合考慮這樣的數(shù)據(jù)結構、 算法以及它們的空間和時間效率, 然后從中選擇一個作為實現(xiàn)程序的基礎。此外, 對程序的測試應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療機構護工感染培訓
- 中班健康教案課件文庫
- 二零二五年度學生轉(zhuǎn)學安全責任承諾書與家長責任履行協(xié)議
- 二零二五年EMC項目專用標準合同文本編制指南
- 2025版IT企業(yè)保密培訓協(xié)議范本
- 二零二五年度IC卡物聯(lián)網(wǎng)應用開發(fā)與銷售合同
- 2025年度二零二五年度全國離婚協(xié)議書范本
- 2025版物流PPP項目合同體系與關鍵條款梳理
- 2025至2030廣告策劃產(chǎn)業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 材料學考試題庫及答案
- 山東畜牧獸醫(yī)單招考試題及答案
- 商戶安全生產(chǎn)培訓課件
- 2025年西安高新區(qū)管委會招聘考試試卷
- 四川省廣元市2024-2025學年第二學期八年級期末考試數(shù)學試卷(無答案)
- 2024-2025學年成都市青羊區(qū)七年級下英語期末考試題(含答案)
- 死亡病例討論制度落實與質(zhì)控優(yōu)化
- 2018-2024年中國西瓜行業(yè)市場趨勢分析及投資潛力研究報告
- DB32∕T 5048-2025 全域土地綜合整治項目驗收規(guī)范
- 2025屆河北中考道德與法治真題試卷【含答案】
- 《產(chǎn)科危急重癥早期識別中國專家共識(2024年版)》解讀課件
- 中醫(yī)外科一般護理常規(guī)
評論
0/150
提交評論