个人帐簿管理系统课程设计.docx
《个人帐簿管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《个人帐簿管理系统课程设计.docx(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、个人帐簿管理系统课程设计以月, 4N季桂课程设计(论文)三详细设计changeFormat()该函数功首先在控制台上打印一排语句提示用户输入想要查找的文件 名,若该文件不存在的话该程序就会终止。若该文件存在的话使用文件 类型指针fpl指向该文件,以二进制文件读写方式打开该文件,接着我 用相通的名字却用.txt后缀创建了另一个文件,并用文件类型指针fp2指 向它,并在该文件中打印一些展示文字使输出结果更加好看,同时将这 些文字也打印在了控制台上,最后将fpl文件指向的内容用格式化输出fprintf全部写入fp2中,最后分别关闭fpl,fp2,并将刚刚的.txt文件显示出来,同时删除刚刚创建的.t
2、xt文件。以月, 4N季桂课程设计(论文)c输入所在的文件名二) NYQ找到所在的文件 Q未找到所在的文件_ + -生成一个.txt文件2)V终止程序将dat文件中的数据一一写入a, 将a所指向内存的数据写入.txt文件中C将改文件打开显示出来二)闭txt文件,删除该文件, 结束该函数闭txt文件,删除该文件, 结束该函数void changeFormat()(FILE *fpl, *fp2;Infor *a;char filename100;int i;a= (Infor *)malloc(sizeof(Infor);(以.dat为后缀的printf (请输入您要查询的数据所在的文件名 文件
3、名);scanf (%s, filename);fpl=fopen(filename, rb+”);以读写方式打开一个二进制文件以月, 4N季桂以月, 4N季桂课程设计(论文)if(fpl=NULL)(printf (无法找到文件n);exit (0);for(i=0;filenamei;i+)(filename2i=filenameEi;)if(filename2i!=.)(strcat (filename2,txt); 将 filename 的后缀改为. txt 文件.)fp2=fopen(f ilename2, wb+”); if(fp2=NULL)printf (无法创建文件n);re
4、turn ; 返回主函数)fputsC n个人帐簿管理系统rn”,fp2);fputs(记录月份 食品消费房租费用 子女费用 水电费用 医 疗费用储蓄费用本月收入rn,fp2);fputs (rn”, fp2);printf fn记录月份食品消费房租费用子女费用水电费用 医疗费用储蓄费用本月收入n);10以月, 4N季桂课程设计(论文)printf (n);rewind (fpl); 使fpl指向文件开头f read (a, sizeof (Infor), 1, fpl).while(!feof (fpl)从原文件.dat中读数据写入显示文件.txtprintf f%7d %8d %8d %8
5、d %8d %8d %8d %8dn,; a-month, a-ship in, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shou ru);fprintf (fp2, ,z%7d %8d %8d %8d %8d %8d %8d %8drn, a-month, a-shipin, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shouru); 格式化文件输出fread(a, sizeof (Infor), 1, fpl);.)fputs(rn”, fp2);fputs (r关闭本
6、程序继续原程序! n, fp2);. fclose(fpl);fclose(fp2); system(filename2); 调用打开转换的文本文件 remove (f ilename2); ).1. search(infor *a)该函数功首先在控制台上打印一排语句提示用户输入想要查找的文 件名,若该文件不存在的话该程序就会终止。若该文件存在的话使用文 件类型指针fpl指向该文件,以二进制文件读写方式打开该文件,接着 我用相通的名字却用.txt后缀创建了另一个文件,并用文件类型指针fp2 指向它,并在该文件中打印一些展示文字使输出结果更加好看,同时将11以月, 4N季桂课程设计(论文)这些文
7、字也打印在了控制台上,最后将fpl文件指向的内容用格式化输 出fprintf全部写入fp2中,最后分别关闭fpl,fp2,并将刚刚的.txt文件 显示出来,同时删除刚刚创建的.txt文件。不存在该文件终止程序终止程序(输入月份)三dat赢中找、对应的月份上一未接到确实未找到般时指3变量;1正好指向返回主函数,显示未找到对应月份int search(Infor *a)(FILE *fpl;.int mon;int isfound=0;标志变量,初始为0代表为找到对应的月份, 若找到对应的月份这设置为1char filenameElOO;printf (请输入文件名字(.dat文件):);. sc
8、anf (%s”, filename);12以月, 4N季桂课程设计(论文)printf (请正确输入月份:); scanf(%d”, &mon);f flush (stdin); 清除缓冲区fpl=fopen(filename, “rb+); if(fpl=NULL)(printf (无法找到文件n);exit (0);)rewind(fpl);将fpl指向文件头,这样更加严谨f read (a, sizeof (Infor), 1, fpl)while (! feof (fpl) 查询操作(if(a-month=mon) isfound=l;break;) else(isfound=0;)
9、fread(a, sizeof (Infor), 1, fpl);fclose(fpl)if (isfound)return OK;elseprintf (未找到对应的月份n);13以月, 4N季桂课程设计(论文)return 1; ).2. void modify (Infor *a,int mon)该函数主要功能在于修改指定文件下指定月份的指定数据项,首先用 fpl指向指定的文件,同时用fp2打开一个temp.dat文件。月份是通过前 面的search函数找到后,通过指针变量a”传递”过来的。首先选择修改 哪一项数据,然后输入要修改的数据的内容将其写入a指向的内存区域 里对应的数据项。此时
10、我们用printf在控制台打印出修改后的月份的数 据。然后用指针变量b来存储从fpl文件中读取的数据,当它不是对应 的月份就直接写入fp2指向的temp.dat文件中,当它是对应的月份的时 候就将a指向的内存区域的数据写入fp2指向的temp.dat文件中,该过 程还是一个直到fpl指向文件结尾时才结束的函数。最后关闭fpl,fp2指 向的文件,删除源文件,将temp.dat文件的名字命名为与先前文件相同 的名字并在控制台上打印出修改成功的字样。14以月, 4N季桂课程设计(论文)除fp1指向的文小 将fp2文件命名成与fp1 一样的支件名/void modify (Infor *a, int
11、 mon) 修改数据 (FILE *fpl, *fp2;int i;int money;char filename100;Infor *b;b=(Infor *)malloc(sizeof(Infor);15以月, 4N季桂课程设计(论文)printf (修改后的数据所要插入的文件(注意与前面的文件名一 定要是一致的! !);scanf (%s”, filename);fpl=fopen(f ilename, rb+”);fp2=fopen (,ztemp. dat, wb+) ;/temp. dat 作为临时文件 printf (你要修改哪一项数据?(1代表食品,2代表房租,3代表子女费用,
12、4代表水电费用,5代表医疗费用,6代表储蓄,7代表 收入):);scanf (%d, &i);while(i7)(printf (请重新输入:“); scanf&i);)printf (请将修改后的数据输入进来:); scanffemoney);switch(i)case 1: a-shipin=money; break;case 2: a-fangzu=money; break;case 3: a-zinv=money;break;case 4: a-shuidian=money;break;case 5: a-yiliao=money;break;case 6: 16遥W / N挈花课程设
13、计(论文)a-chuxu=money; break;case 7:a- shouru=money break;default: break;)printf (修改后的:n);printfCXn记录月份食品消费房租费用子女费用水电费用 医疗费用储蓄费用本月收入n);printf (、);printf f%7d %8d %8d %8d %8d %8d %8d %8dnz,, a-month, a-ship in, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shou ru);rewind(fpl). fread(b, sizeof (Inf
14、or), 1, fpl) while Qfeof(fpl)重写数据 if(b-month=mon)(fwrite (a, sizeof (Infor), 1, fp2);修改数据 ) , else(fwrite(b, sizeof(Infor), 1, fp2);)fread(b, sizeof (Infor), 1, fpl);fclose(fpl); fclose(fp2);17编号B04900083学号201240420113湖J/笈)草花HUBEI POLYTECHNIC UNIVERSITY课程设计教学院课程名称题目专业班级姓名同组人员指导教师计算机学院数据结构课程设计个人帐簿管理系
15、统网络工程1班夏能 一罗四维、邱少雄、王欢2012年 12月 25日以月, 4N季桂课程设计(论文)remove(filename);删除源文件rename (/ztemp. dat, filename);重命名中间文件 printf (修改数据成功! n);)4.主函数调试主函数部分通过switch语句来对实现整个程序功能的调度。首先easel 里通过input函数将变量写入a所指向的内存区域,然后调用writeinfor函 数将指针变量a所指向区域的数据写入用户自己指定的文件中。case2是对用 户指定的文件的数据进行整个文件查询,结果最终会打印在控制台中并且还 会显示一个.txt文件这样
16、更加方便更加直观。case3中调用了 search函数,并且通过标志位变量flag来接收search函数所返回的值,若flag值不是0K 的话就打印出没有符合条件的记录的语句,flag是0K的话就通过指针变量a 将其所指向的内存区域的数据格式化的打印在屏幕上,然后调用modify函数 对该该月份的数据指定的数据项进行修改。case4中前面部分的流程与case3 还是一样的,同样是调用search函数找到指定文件里的指定月份的数据并使指向它,最后通过指针变量a打印在屏幕上。case5中还是通过search函 数来找到指定的月份然后通过paixu函数来对指定月份的数据进行从小到大 的排序,最后还是
17、打印到控制台上。case6中同样是通过search函数找到指 定的月份,并删除这个月份的所有数据。case7中通过stdlib. h函数中的 exit。函数来退出整个程序。主函数的整个流程图如算法整体思路里的函数流程图所示,在这里就省略 掉了。int main()(while(TRUE)int flag;标志位,用来保存查询函数所返回的结果 int item;功能项目号 int mon;Infor *a; 信息指针a= (Infor *)malloc(sizeof (Infor);动态分配内存空间 doprintf (,z nt *欢迎进入个人帐簿管理系统18以月, 4N季桂课程设计(论文)*
18、n);printf(t*t*n);主菜单松n);printf*n);printfCt*t 1.录入数据printf Ct* t 2. 2 看数据printfprintf3.修改数据4. 查*n);*n);*n);数. 据*n);printfprintfprintfprintf5 .排序数据6 .删除数据0.退出系统松n);*n);*n);*n);/ 1 ill i I*nn);printf(请输入要进行的操作:); scanf(%d”, &item);while(item7 | | itemmonth;if (flag!=OK) printf (n 没有符合条件的记录! n); else(pr
19、intf(n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入n);printf (n);printf (,z%7d %8d %8d %8d %8d %8d %8d %8dn,z, a-month, a-shipin, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shouru);modify (a, mon);) break;查询数据case 3: flag二search(a);if (flag!=0K) printf (n 没有符合条件的记录! n);elseprintf (n记录月份食品消费房租费用子女费用 水电费用医
20、疗费用储蓄费用本月收入n);printf (n);printf C%7d %8d %8d %8d %8d %8d %8d %8dn,z, a-month, a-shipin, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shouru);20以月, 4N季桂课程设计(论文)break;排序数据flag二search(a);if (flag!=OK)printffXn没有找到符合排序条件的记录! n);else(paixu(a);)break;删除数据flag=search(a);mon=a-month;if (flag!=OK) prin
21、tf (n 没有符合条件的记录! n); else(printf (n记录月份食品消费房租费用子女费用 水电费用医疗费用储蓄费用本月收入n);printf (n);printf r%7d %8d %8d %8d %8d %8d %8d %8dnz; a-month, a-shipin, a-fangzu, a-zinv, a-shuidian, a-yiliao, a-chuxu, a-shouru);delRecord(mon);)break;.退出系统case 0:21以月, 4N季桂课程设计(论文)printf(n指导老师:冯珊n);printf(小组成员:夏能,王欢,邱少雄,罗四维n)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 帐簿 管理 系统 课程设计
限制150内