个人帐簿管理系统设计_第1页
个人帐簿管理系统设计_第2页
个人帐簿管理系统设计_第3页
个人帐簿管理系统设计_第4页
个人帐簿管理系统设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/数据结构课程设计报告个人帐簿管理系统设计2010年01月21日目录1.引言(1)2需求分析(2)3概要设计(4)4具体设计(5)5测试结果(6)6设计体会(12)7结束语(13)8参考文献(11)摘要该课程设计主要设计个人账簿管理系统以记录某人每月的全部收入及各项开支状况,包括食品消费,房租,子女教化费用,水电费,医疗费,储蓄等。在课程设计中,用到了C语言以及数据结构中的相关学问,当然也有少数参考了其他人对某些问题的处理阅历。对于进入系统后可以输入和修改某月的收支状况,可以对每月的开支从小到大进行排序,可以依据输入的月份查询每月的收支状况。在程序设计中,添加了运用说明和帮助事项,并且采纳了面对对象这种解决问题的方法。程序通过调试运行,初步是想了设计目标,并且经过适当完善后,将可以应用在个人理财解决实际问题。一引言本课程设计主要解决在个人帐簿管理系统记录某人每月的全部收入及各项开支状况,包括食品消费,房租,子女教化费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支状况,可以对每月的开支从小到大进行排序,可以依据输入的月份查询每月的收支状况。现在是一个科技文化飞速发展的时代,家家户户都可以见到计算机的影子,我们平常的生活,工作以及学习和消遣都和电脑有着亲密的联系。随着经济的发展,理财成为我们生活中不行缺少的内容,理财的重要性自不待言。因此,特别有必要设计一个个人帐薄管理系统,它能够为我们家庭生活个人理财供应诸多便利,使理财更系统,更精确。作为计算机应用的一部分,运用计算机供应个人帐薄管理系统,既继承了传统理财形式,也克服了人工理财的很多缺点,譬如:计算困难,会时有错误,而用计算机处理的话这种错误可以轻易避开;输入便利,节约了理财人的时间,提高效率和精确度。查询便利、信息具体清楚。便于理财。二需求分析个人帐薄管理系统具有良好的性能和好用的功能,其性能的良好表现为:输入性强、检索快速、查询便利、牢靠性高等,其好用的功能表现为:由于个人理财所要记载的项目比较琐碎,查询不便利,简洁搞错依次,应用该管理系统可以输入随意每月开支状况,不但不会轻易犯错,而且可以简洁修改每月的记录,包括食品消费,房租,子女教化费用,水电费,医疗费,储蓄等。节约时间和空间,这些优点能够促进优化家庭及财政管理,促进财政管理的科技化和现代化。个人帐薄管理系统可以为用户供应随意月份的查询,月份消费信息包括食品消费,房租,子女教化费用,水电费,医疗费,储蓄,具体信息如表2-1所示。表2-1个人开支项目信息表数字编号名称具体信息1录入数据录入个人每月份的开支状况2查看数据查看所录入月份的开支状况3修改数据假如录入开清状况有误,可以修改4查询数据可以查询全部月份的开支状况5排序数据可以把所要查询的月份的开支状况按从小到大排列6删除数据删除所输入月份的数据0退出系统退出系统三概要设计设计本系统,首先要细致研读老是给的题目要求,细致分析设计该题须要用到的技术和学问,同时应当主动查询相关资料,复习有关学问,不懂的地方多向同学以及挚友提问,从而达到事半功倍的想过,也可以参考网上的有关学问帮助有自己解答,总之,就是动用一切可以动用的力气,达到充溢自己的目的!以下为该设计系统流程图起先结束0退出系统6删除数据5排序数据4查询数据3修改数据2查询数据1录入数据菜单起先结束0退出系统6删除数据5排序数据4查询数据3修改数据2查询数据1录入数据菜单图3.0四具体设计1算法设计(1)录入、查询、修改、删除数据。建立一个文件,包括某人5个月的开支状况,对文件中的信息扩充,包括修改,删除等。所以先确定文件保存路径,接受键盘输入,像文件内写入内容,将dat格式文件转换为txt文件,查询用声明,自定义数据类型,然后返回查询结果及查询状态,继而对查询结果排序。删除数据时,先调用打开转换的文本文件。修改数据时,要重写数据,删除源文件,重命名中间文件,显示新的数据。(2)起泡排序起泡排序是每趟把当先序列中最小的元素放在起先位置,是交换排序中最简洁的排序方法,其基本思想是:两两比较相邻记录的关键码,假如反序则交换,值到没有反序的记录为止,将整个待排序的记录序列分成为有序区和无序区,初始状态有序区为空,无序区包括全部待排序的记录。对无序去从前向后依次将相邻记录的关键码进行比较,若反序则交换,从而使得关键码晓得记录向前移,关键码大的记录向后移(像水中的气泡,体积大的先浮现来)。重复执行,之前无序区中没有反序的记录。确定每趟范围。(3)其基本思想是:先确定文件保存路径,建立一个文件,录入个人5个月的开支状况,对文件中的信息扩充,包括修改,删除等。接受键盘输入,向文件内写入内容,将dat格式文件转换为txt文件,然后输入2进行查看,查看所录入的数据,假如数据有误,可以输入3修改数据,输入4查询全部月份的开支状况,系统自动启用气泡排序对数据细心两两比较,按从小到大的依次排列。2实现代码#include<stdio.h>#include<stdlib.h>#include<memory.h>#include<windows.h>//文件保存路径#defineFilePath1"Myinfor.dat"#defineFilePath2"Myinfor.txt"//查询用声明#defineStatusint#defineOK1#defineError0#defineNotFound2typedefstruct{intmonth;//月份intfood;//食品消费inthouse;//房租费用intedu;//子女教化费用intelc;//水电费用inthealth;//医疗费用intstore;//储蓄费用intincome;//收入费用}Infor;typedefstruct{//查询用自定义数据类型intno;intdata;}pType;voidmenu(void);//菜单voidinput(Infor*newI);//接收键盘输入voidwriteinfor(Infor*newI);//向文件内写入内容voidchangeFormat(void);//将dat格式文件转换为txt文件Statussearch(Infor*a);//查询函数[返回查询的结果及查询的状态]voidpaixu(Infor*a);//对查询据结果排序voidmodify(Infor*a,intmon);//修改数据voiddelRecord(intmon);//删除数据voidmain(){while(1){menu();}}voidmenu(void){intitem;intmon;Infor*a;a=(Infor*)malloc(sizeof(Infor));do{printf("\n…………个人帐簿管理系统--软件082郭帅…………\n\n");printf("\t\t1.录入数据。\n");printf("\t\t2.查看数据。\n");printf("\t\t3.修改数据。\n");printf("\t\t4.查询数据。\n");printf("\t\t5.排序数据。\n");printf("\t\t6.删除数据。\n");printf("\t\t0.退出系统。\n\n");printf("请输入要进行的操作:");scanf("%d",&item);}while(item>6||item<-1);switch(item){//退出程序case0:getchar();//保存界面getchar();exit(0);break;//录入数据case1:input(a);writeinfor(a);break;//查看数据case2:changeFormat();break;//修改数据case3:item=search(a);mon=a->month;if(item!=OK)printf("\n没有符合条件的记录!\n");else{printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);input(a);modify(a,mon);}break;//查询数据case4:item=search(a);if(item!=OK)printf("\n没有符合条件的记录!\n");else{printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);}break;//排序数据case5:item=search(a);if(item!=OK)printf("\n没有符合条件的记录!\n");elsepaixu(a);break;//删除数据case6:item=search(a);mon=a->month;if(item!=OK)printf("\n没有符合条件的记录!\n");else{printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);delRecord(mon);}break;}free(a);//释放内存空间}voidinput(Infor*newI){printf("\n请依次输入数据[说明:中间以空格符隔开]:\n(本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)\n");scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->food,&newI->house,&newI->edu,&newI->elc,&newI->health,&newI->store,&newI->income);fflush(stdin);}voidwriteinfor(Infor*newI){FILE*fp;fp=fopen(FilePath1,"ab+");if(fp==NULL){printf("无法创建文件:%s",FilePath1);exit(0);}fwrite(newI,sizeof(Infor),1,fp);//这里可以做特殊处理可防止存在同一月份有条以上的记录问题。这里就不写了。fclose(fp);printf("数据录入胜利!\n");}voidchangeFormat(void)//短暂只能操作一行文件有待改进{FILE*fp1,*fp2;Infor*a;a=(Infor*)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("无法找到文件:%s\n",FilePath1);return;//返回主函数}fp2=fopen(FilePath2,"wt+");if(fp2==NULL){printf("无法创建文件:%s\n",FilePath2);return;//返回主函数}fputs("\n……个人帐簿管理系统……\n\n",fp2);fputs("记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n",fp2);fputs("\n",fp2);printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("\n");rewind(fp1);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1))//从原文件[.dat]中读数据写入显示文件[.txt]中{printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);fprintf(fp2,"%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);fread(a,sizeof(Infor),1,fp1);}fputs("\n",fp2);fputs("关闭本程序接着原程序!\n",fp2);fclose(fp1);fclose(fp2);system(FilePath2);//调用打开转换的文本文件remove(FilePath2);//删除文本文件文件}Statussearch(Infor*a){FILE*fp1;intmon;intisfound=0;printf("请正确输入要查询的月份:");scanf("%d",&mon);fflush(stdin);//清除缓冲区fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("无法找到文件:%s\n",FilePath1);returnError;//返回主函数}rewind(fp1);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1))//查询操作{if(a->month==mon){isfound=1;break;}else{isfound=0;}fread(a,sizeof(Infor),1,fp1);}fclose(fp1);if(isfound)returnOK;elsereturnNotFound;}voidpaixu(Infor*a){inti=0,j=0,flag=0,t;pTypepx[8]={{0,0}};charstr[8][10]={"记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用","储蓄费用","本月收入"};for(;i<8;i++)px[i].no=i;px[0].data=a->month;px[1].data=a->food;px[2].data=a->house;px[3].data=a->edu;px[4].data=a->elc;px[5].data=a->health;px[6].data=a->store;px[7].data=a->income;for(i=1;i<8;i++)//冒泡排序{flag=0;for(j=0;j<8-i;j++)if(px[j].data>px[j+1].data){t=px[j].data;px[j].data=px[j+1].data;px[j+1].data=t;t=px[j].no;px[j].no=px[j+1].no;px[j+1].no=t;flag=1;}//输出结果if(flag==0)break;}printf("\n");for(i=0;i<8;i++){printf("%s",str[px[i].no]);}printf("\n\n");for(i=0;i<8;i++){printf("%8d",px[i].data);}printf("\n");}voidmodify(Infor*a,intmon)//修改数据{FILE*fp1,*fp2;Infor*b;b=(Infor*)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Infor),1,fp1);while(!feof(fp1))//重写数据{if(b->month==mon){fwrite(a,sizeof(Infor),1,fp2);//修改数据}else{fwrite(b,sizeof(Infor),1,fp2);}fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename("temp.dat",FilePath1);//重命名中间文件printf("修改数据胜利!\n");changeFormat();//显示数据}voiddelRecord(intmon)//删除数据{FILE*fp1,*fp2;Infor*b;b=(Infor*)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Infor),1,fp1);while(!feof(fp1))//重写数据{if(b->month!=mon)fwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论