




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、個(gè)人賬簿管理系統(tǒng)設(shè)計(jì)書3.相關(guān)的數(shù)據(jù)類型typedef struct int month;/int spxf;int fzfy;/int znjy;/int sdfy;/int ylfy;/int cxfy;/int srfy;/ Infor;月份食品消費(fèi)房租費(fèi)用子女教育費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲蓄費(fèi)用收入費(fèi)用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; 口十三錄月份告晶滸結(jié) .再程裁用.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?無法獨(dú)到文ReturtLfpgfptinifC3結(jié)束5.描述實(shí)現(xiàn)函數(shù)的調(diào)用關(guān)系圖tffij置握添是據(jù)U顯示全部月份勤 *顯一番青數(shù)據(jù) *受函數(shù)6.1
3、 調(diào)試中遇到的問題及對問題的解決方法創(chuàng)建結(jié)構(gòu)體對該程序至關(guān)重要,通過查閱參考書籍,創(chuàng)建了合適的結(jié)構(gòu)體。由于初期未考慮到排序功能,后期做排序的時(shí)候,對整個(gè)程序做了一些修改,主要是結(jié)構(gòu)體方面。 本程序的排序系統(tǒng)的采用的是“快速排序”,代碼主要來自數(shù)據(jù)結(jié)構(gòu)(c語言版),由于書上代碼為偽代碼,所以調(diào)試時(shí)遇到一些問題,由于習(xí)慣使用C+中的引用傳遞,導(dǎo)致在 c文件中編譯錯(cuò)誤,經(jīng)過查找資料才發(fā)現(xiàn)問題所在,于是將c文件改為cpp文件,解決了做排序功能時(shí)遇到的一些問題6.2 算法的時(shí)間復(fù)雜度和空間復(fù)雜度空間復(fù)雜度:O(f(n)時(shí)間復(fù)雜度:O (n)7.輸出典型數(shù)據(jù),獲得測試結(jié)果;*1個(gè)人帳遒管展系誑設(shè)計(jì)ms戮數(shù)
4、飄慰藪蓼卡改詢序錄查螫排駛lM 34.G 6 也性輸入要進(jìn)行的巽作一青依太物入夔據(jù)曉明:中旬以空的州開:k本月月初著吊哨費(fèi)房租費(fèi)用子女方用水電替用醫(yī)療鑄用糙番費(fèi)用收入察用1E酮 1 B0 EFt3HWHi 1盤詢序 苴售排駛 之? 4 4 5&L可G 據(jù)晶; 數(shù)食la功晴輸入要進(jìn)行的操作工,明獨(dú)聞以空格符幅開Km房租費(fèi)用子女博用水電替用醫(yī)療中用儲蓄若用收入存用) 口e 7nn 3日加T八帳通管型系統(tǒng)設(shè)計(jì)居月居居Ir 藪藪數(shù)數(shù)數(shù) 人看改詢序 毒臉排明 12 356晴輸入要進(jìn)彳逢/點(diǎn)3.嫉, 1 ,小林近理與魄&:十彳入營土釬除攆、:T水電費(fèi)黑 醫(yī)療費(fèi)阻滯*號用 收人導(dǎo)為?1 Eg 5加 IQt吳
5、刪fi制iLisig的娓M聚月用曹品酒帶冏相當(dāng)用IjrRfl 用電號用EfFBfl施號用3月載入己量月此囪品洞F鼻二皆作 干之任用,電W用之L費(fèi)孑壇* 三田黎月的,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;食品消費(fèi)int fzfy;/房租費(fèi)用int znjy;子女教育費(fèi)用int sdfy;水電費(fèi)用int ylfy;/醫(yī)療費(fèi)用int cxfy;/儲蓄費(fèi)用int srfy;/收入費(fèi)用 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ù)返回查詢的結(jié)果及查詢的狀態(tài)void paixu(Infor *a);/對查詢據(jù)結(jié)果排序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 個(gè)人帳簿管理系統(tǒng)設(shè)計(jì)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(” 請輸入要進(jìn)行的操作:);scanf(%d”,&item);while(item6 | itemmonth;if (item!=OK) printf(n沒有符合條件的記錄!n);else printf(n記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲蓄費(fèi)用本月收入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記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲蓄費(fèi)用本月收入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記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲蓄費(fèi)用本月收入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(本月月份食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 收入費(fèi) 用)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) /暫時(shí)只能操作一行文件有待改進(jìn)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個(gè)人帳簿管理系nn,fp2);fputs(”記錄月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用醫(yī)療費(fèi)用儲蓄費(fèi)用本月收入n”,fp2);fputs(n,fp2);printf(n 記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi) 用儲蓄費(fèi)用本月收入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(關(guān)閉本程序繼續(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=記錄月份,食品消費(fèi),房租費(fèi)用,子女費(fèi)用,水電費(fèi)用”,醫(yī)療費(fèi)用,儲蓄費(fèi)用”
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;/輸出結(jié)果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.總結(jié)經(jīng)過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我們不僅及時(shí)鞏固的了數(shù)據(jù)結(jié)構(gòu)、算法、 以及軟件工程的知識,并對數(shù)據(jù)結(jié)構(gòu)和算法的配合對于程序時(shí)間和空間性能的影 響以及軟件工程提供的開發(fā)流程和工具對于實(shí)現(xiàn)特定功能程序的重要意義。當(dāng)我們面對一個(gè)實(shí)際問題, 應(yīng)該迅速根據(jù)問題性質(zhì)和特點(diǎn)抽象成特定的數(shù)據(jù)結(jié)構(gòu),當(dāng)然每個(gè)問題都有可能能夠抽象成多種數(shù)據(jù)結(jié)構(gòu), 每種數(shù)據(jù)結(jié)構(gòu)適應(yīng)于不同的算法, 例如, 馬踏棋盤問題就可以采用廣度優(yōu)先搜索或深度優(yōu)先搜索來解決。 因此此時(shí)就應(yīng)該綜合考慮這樣的數(shù)據(jù)結(jié)構(gòu)、 算法以及它們的空間和時(shí)間效率, 然后從中選擇一個(gè)作為實(shí)現(xiàn)程序的基礎(chǔ)。此外, 對程序的測試應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2.2社會主義制度在中國的確立 課件 統(tǒng)編版高中思想政治必修1中國特色社會主義
- 納稅評估工作總結(jié)十篇
- 老年日??祻?fù)護(hù)理課件
- 老年護(hù)理課件題目
- 老年人慢性病課件
- 老年中醫(yī)課件制作
- 通信設(shè)備車間使用權(quán)及技術(shù)轉(zhuǎn)讓合同模板
- 保險(xiǎn)理賠責(zé)任限制條件合同
- 大學(xué)國家安全教育考試試題及答案
- 輔警培訓(xùn)課件
- 質(zhì)量合格評定協(xié)會認(rèn)證認(rèn)可專家管理辦法
- 2024年江蘇天寧城市發(fā)展集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 機(jī)械加工安全操作規(guī)程培訓(xùn)
- (高清版)CJJT 30-2024 糞便處理廠運(yùn)行維護(hù)及其安全技術(shù)標(biāo)準(zhǔn)
- 安全檢查工安全培訓(xùn)教學(xué)教案
- 2024年浙江省新華書店集團(tuán)招聘筆試參考題庫附帶答案詳解
- 1.知識點(diǎn)1-2-1 理解曝光三要素與曝光量
- 《中華民族共同體概論》考試復(fù)習(xí)題庫(含答案)
- PTBD管路維護(hù)技術(shù)
- 220kV變電運(yùn)行中的故障排除方法
- 30題投資管理類崗位常見面試問題含HR問題考察點(diǎn)及參考回答
評論
0/150
提交評論