个人账簿管理系统c语言程序.doc
个人账簿管理系统程序如下include stdio.hinclude stdlib.hinclude conio.hinclude string.hdefine File data.dat struct ElemType int month;/*月份*/ int income;/*全部月收入*/ int food; /*食品开支*/ int rent;/*房租*/ int utilities; /*水电费*/ int medical;/*医疗费*/ int savings;/*储蓄*/ int education;/*子女教育费*/ int payment ;/*总支出*/x12; /*一个月开支信息*/void Insert 插入信息 int j,i1;FILE *fp;printf请依次输入n月份 当月收入 食品开支 房租 水电费 医疗费 子女教育 n ;scanfddddddd, xi.paymentxi.foodxi.rentxi.utilitiesxi.medicalxi.education; xi.savingsxi.income-xi.payment; iffpdata.dat,abNULL printfcan not open filen; exit0;forj1;ji;j fwrite fclosefp; void Outlin 收支情况 int j; FILE *fp; iffpdata.dat,rbNULL printfcan not open filen; exit0; printf月份 当月收入 食品开支 房租 水电费 医疗费 子女教育 储蓄 总支出 n ; forj1;freadj printfd8d11d11d10d8d10d10d9dn,xj.month,xj.income,xj.food,xj.rent,xj.utilities,xj.medical,xj.education,xj.savings,xj.payment; fclosefp;void Modifyint xg 修改信息 FILE *fp1,*fp2;ElemType *b; iffp1data.dat,rbNULL printfcan not open filen; exit0; iffp2temp.dat,wbNULL printfcan not open filen; exit0; printf请输入要修改的内容n;printf请依次输入n月份 当月收入 食品开支 房租 水电费 医疗费 子女教育 n ;scanfddddddd, xxg.paymentxxg.foodxxg.rentxxg.utilitiesxxg.medicalxxg.education; xxg.savingsxxg.income-xxg.payment;bElemType *mallocsizeofElemType;rewindfp1;freadb,sizeofstruct ElemType,1,fp1;whilefeoffp1 ifb-monthxg fwrite修改数据 else fwriteb,sizeofElemType,1,fp2;freadb,sizeofElemType,1,fp1;fclosefp1;fclosefp2;removeFile; 删除源文件renametemp.dat,File; 把临时文件改成源文件名 void Searchint yf 查询月份信息 FILE *fp; iffpdata.dat,rbNULL printfcan not open filen; exit0; fseekfp,sizeofstruct ElemType*yf-1,0;freadprintf月份 当月收入 食品开支 房租 水电费 医疗费 子女教育 储蓄 总支出 n ; printfd8d11d11d10d8d10d10d9dn,xyf.month,xyf.income,xyf.food,xyf.rent,xyf.utilities,xyf.medical,xyf.education,xyf.savings,xyf.payment;fclosefp;void Delint yf 删除某月信息 FILE *fp1,*fp2;ElemType *b; iffp1data.dat,rbNULL printfcan not open filen; exit0; iffp2temp.dat,wbNULL printfcan not open filen; exit0; bElemType *mallocsizeofstruct ElemType;rewindfp1;freadb,sizeofstruct ElemType,1,fp1;whilefeoffp1 ifb-monthyf fwriteb,sizeofElemType,1,fp2;freadb,sizeofElemType,1,fp1;fclosefp1;fclosefp2;removeFile; 删除源文件renametemp.dat,File; 把临时文件改成源文件名 Outlin;调用输出函数,输出整体的开支void ps 按收支排序 FILE *fp1,*fp2;ElemType a12,h;int i,j,c0; iffp1data.dat,rbNULL printfcan not open filen; exit0; iffp2temp.dat,wbNULL printfcan not open filen; exit0; forj1;feoffp1;j,cfread fori1;ic;i forj1;jc;j ifai.paymentaj.payment hai; aiaj; ajh; fori1;ic;i fwrite fclosefp1;fclosefp2;removeFile; 删除源文件renametemp.dat,File; 把临时文件改成源文件名 Outlin;调用输出函数,输出整体的开支void main int k,xg,yf; do printfnn; printfn 欢迎进入个人帐簿管理系统- nn ; printfn -个人帐簿管理系统主菜单 n ; printfn 1.插入某月信息n; printfn 2.输出整体收支情况n; printfn 3.修改某月信息n; printfn 4.查询某月信息n; printfn 5.删除某月信息n; printfn 6.按开支排序输出结果n; printfn 0.退出个人帐簿管理系统n; printfnn; /*输出开始界面*/ scanfd, switchk case 1/*插入某月信息*/ Insert; break; case 2/*输出所有月份的收支情况*/ Outlin; break; case 3/*修改某月信息*/ printf请输入需要修改的月份n; scanfd, Modifyxg; break; case 4/*查询某月信息*/ printf请输入需要查询的月份n; scanfd, Searchyf; break; case 5/*删除某月信息*/ printf请输入需要删除的月份n; scanfd, Delyf; break; case 6/*排序*/ ps; break; case 0exit0;/*退出个人帐簿管理系统*/default printf输入错误,请重新输入; whilek6;