《个人账簿管理系统课程设计论文.doc》由会员分享,可在线阅读,更多相关《个人账簿管理系统课程设计论文.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 . 课程名称:数据结构涉外经济学院本科学生课程设计(论文)题 目 个人账簿管理 18 / 22毕业设计(论文)原创性声明和使用授权说明原创性声明本人重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作与取得的成果。尽我所知,除文中特别加以标注和致的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得与其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了意。作 者 签 名:日 期:指导教师签名: 日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提
2、交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部容。作者签名: 日 期:摘 要个人账簿管理是根据现实生活中的应用而编写的,主要是用C语言编写,其中运用到了文件的基本操作,结构体数组,宏定义,还有几个主要循环的应用,其功能包括按月份插入、输出、修改、查询、删除与按开支排序,包括了账簿管理的大部分功能,适合于大部分家庭用户。关键词: C语言,算法,数据结构,个人账簿管理目 录第一章前言1第二章系统功能分析22.1个人账簿管理22.2
3、解决个人账簿管理22.2.1 概要分析22.2.2 流程图3第三章总体设计43.1概括43.2基本思路4第四章详细设计54.1程序代码实现541.1程序主界面541.2创建结构体741.3数据的插入741.4数据的删除841.5数据的排序10第五章系统实现12第六章解决的关键问题14第七章结论15结束语168.1编程感想16参考文献17程序分工18第一章 前 言本系统使用Microsoft Visual Studio.NET 2005开发工具创建Web应用程序。采Visual C.NET开发语言,使用文件的操作达到个人账簿管理的各种功能。文章详细讨论了该系统的开发、设计环境、实现算法与其具体的
4、实现。数据结构是一门专业技术基础课。它的教学要:学会分析研究计算机加工的数据结构的特性,以便为应用涉与的数据选择适当的逻辑结构,存储结构与其相应的算法,并初步掌握算法的时间分析和空间分析的技术。另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确意读,符合软件工程的规。如果说高级语言程序设计的训练过程,要进行了结构化的程序设计的初步训练的话,那么数据结构就要培养我们的数据抽象能力个人账簿管理系统是结合了文件、结构体、函数等操作,运用了数据结构中最基本的一些算法,使程序简单明了,使用了一些最优的算法,从而达到了不浪费存的目的,同时也加快了程序的运行速度。第二章
5、系统功能分析本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除与按开支排序,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。可以按主界面的提示完成每一块功能。2.1个人账簿管理在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了6个函数,分别是插入信息,收支情况,修改信息,查询月份信息,删除某月信息,其中每一个程序都能实现相应部分的功能,并且在每一个程序中都使用了相应的文件操作,和结构体数组的操作,通过对数组,结构体,文件的删除、查找、修改与排序使程序都完成了相应的功能。2.2解决个人账簿管理2
6、.2.1 概要分析 个人账簿管理通过:void Insert() / 插入信息void Outlin( ) /收支情况void Modify(int xg) /修改信息void Search(int yf) / 查询月份信息void Del(int yf) / 删除某月信息void ps() /按收支排序这六个函数分别完成每一部分功能 ,其中都是从主函数调用相应的函数,完成相应的功能。2.2.2流程图第三章 总体设计3.1概括 个人账簿管理主要是通过文件的输入、输出、查询、修改、删除、排序来完成程序的主要功能,其中每一个功能都为对应的一个函数,增加程序的可读性,以实现程序的整体功能。3.2基本
7、思路1. 首先建立一个结构体,用户输入某个月的数据通过相应的文件操作就把他追加到文件data.dat中。2. 输入整体的收支情况就是直接从文件中读出所有的数据然后输出到屏幕中。3. 修改信息是建立一个临时的temp.dat的文件,通过fp1,fp2两个文件指针和一个结构体变量b ,fp1指向data.dat,fp2指向temp.dat。然后把fp1中的数据读到b 中,就通过对比,假如b-month=xg就把xxg的地址写入到fp2中,否则就直接把b中的数据写到fp2中,通过循环到!feof(fp1)为止,这个就把所有的修改的数据写入到了fp2,关闭两个文件,最后删除原来的data.dat文件,
8、然后把temp.dat文件换名成为data.dat文件,这样就达到了修改的目的。4. 查询月份信息是在主函数中输入一个数,然后在查询函数中判断是否月份一样,假如月份一样就输出来。5. 删除某月信息是和修改某月信息一样的,只是把其中的一句改成b-month!=xg就直接写入到fp2中,经过换名就达到了效果。6. 按收支排序是首先建立一个结构体数组,把所有的数据读到数组中,然后按收支情况排序,排好序之后就又把他写入到temp.dat的文件中,删除源文件,替换文件名就实现了排序的功能。第四章 详细设计4.1程序代码实现41.1程序主界面void main() int k,xg,yf; do prin
9、tf(n-n); printf(n -欢迎进入个人帐簿管理系统- nn ); printf(n -个人帐簿管理系统主菜单- n ); printf(n 1.插入某月信息n); printf(n 2.输出整体收支情况n); printf(n 3.修改某月信息n); printf(n 4.查询某月信息n); printf(n 5.删除某月信息n); printf(n 6.按开支排序输出结果n); printf(n 0.退出个人帐簿管理系统n); printf(n-n); /*输出开始界面*/ scanf(%d,&k); switch(k) case 1:/*插入某月信息*/ Insert(); b
10、reak; case 2:/*输出所有月份的收支情况*/ Outlin(); break; case 3:/*修改某月信息*/ printf(请输入需要修改的月份:n); scanf(%d,&xg); Modify(xg); break; case 4:/*查询某月信息*/ printf(请输入需要查询的月份:n); scanf(%d,&yf); Search(yf); break; case 5:/*删除某月信息*/ printf(请输入需要删除的月份:n); scanf(%d,&yf);Del(yf); break; case 6:/*排序*/ ps(); break; case 0:ex
11、it(0);/*退出个人帐簿管理系统*/default : printf(输入错误,请重新输入); while(k=6); 41.2创建结构体struct ElemType int month;/*月份*/ int income;/*全部月收入*/ int food; /*食品开支*/ int rent;/*房租*/ int utilities; /*水电费*/ int medical;/*医疗费*/ int savings;/*储蓄*/ int education;/*子女教育费*/ int payment ;/*总支出*/x12; /*一个月开支信息*/41.3数据的插入void Inse
12、rt() / 插入信息 int j,i=1;FILE *fp;printf(请依次输入n月份 当月收入 食品开支 房租 水电费 医疗费 子女教育 n );scanf(%d%d%d%d%d%d%d,&xi.month,&xi.income,&xi.food,&xi.rent,&xi.utilities,&xi.medical,&xi.education); xi.payment=xi.food+xi.rent+xi.utilities+xi.medical+xi.education; xi.savings=xi.income-xi.payment; if(fp=fopen(data.dat,ab
13、)=NULL) printf(can not open filen); exit(0);for(j=1;jmonth!=yf) fwrite(b,sizeof(ElemType),1,fp2);fread(b,sizeof(ElemType),1,fp1);fclose(fp1);fclose(fp2);remove(File); /删除源文件rename(temp.dat,File); /把临时文件改成源文件名 Outlin();/调用输出函数,输出整体的开支41.5数据的排序void ps() /按收支排序 FILE *fp1,*fp2;ElemType a12,h;int i,j,c=0
14、; if(fp1=fopen(data.dat,rb)=NULL) printf(can not open filen); exit(0); if(fp2=fopen(temp.dat,wb)=NULL) printf(can not open filen); exit(0); for(j=1;!feof(fp1);j+,c+)fread(&aj,sizeof(struct ElemType),1,fp1); for(i=1;ic;i+) for(j=1;jc;j+) if(ai.paymentaj.payment) h=ai; ai=aj; aj=h; for(i=1;ic;i+) fwri
15、te(&ai,sizeof(struct ElemType),1,fp2); fclose(fp1);fclose(fp2);remove(File); /删除源文件rename(temp.dat,File); /把临时文件改成源文件名 Outlin();/调用输出函数,输出整体的开支第五章 系统实现其中程序结果如下: 图5. 1 程序的主界面 图5.2 程序插入月份界面 图5.3 程序输出整体收支情况 图5.4 修改某月信息(修改3月份的数据) 图5.5 查询2月份的数据 图5.5 删除3月份的信息 图5.6 按收支排序第六章 解决的关键问题本程序主要解决的关键问题如下:1. 文件的读写操作
16、与读写所用的方式2. 文件的修改与删除3. 文件的排序4. 结构体的操作5. 函数的参数传递问题第七章 结 论通过这次课程设计使我了解到了 :1. 写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约很多时间和加快系统的速度。2. 在这个程序中,主要还是利用了C语言中文件的操作,其中最主要的就是文件的读写与用的不同种读写的方式,还有查找、修改与删除文件中的数据,其中查找还是比较简单,但修改文件中的数据,要利用一个中间文件。首先要查找到要删除的数据,假如一样就复制到一个文件中,原文件中不一样的也复制到那个文件中,这样以达到修改的目的,删除也类似,还有就是排序了,也要利用到中间文件。3.
17、 在结构体的操作用,不能直接给结构体变量赋值。4. 这个程序的界面编的虽然不怎么好看,但基本账簿管理的功能都达到了。所以说还是具有一定的实用性。结 束 语8.1编程感想在这次课程设计中,我学习到了,不管做什么事情还是团队协作,才可以使一件事情办得最后,一个人的力量永远是有限的,不管一个人的能力有多大,总会有一些地方的不足,尤其是我们编程这一行,最主要的还是要团队合作。其次就是写程序时要用到注释,因为一个程序是由几个人写出来的,假如不写注释的话,就相互都看不懂,也不能实现程序的结合,所以说写程序时注释很重要。最后,我觉得不管做什么事情必须认认真真的做,要沉得下心来,尤其是写程序,假如沉不下心来做的话,也决对写不出一个好的程序或者实用的程序来。参考文献1 谭浩强著语言程序设计(第三版)清华大学2 严蔚敏、吴伟民.数据结构(C语言版).清华大学 3 阿奇Visual C+实用教程(第三版)电子工业.程序分工任务分配马铁军程序的插入、输出、删除、排序梁斌程序主界面的设计、查找、修改
限制150内