个人账簿管理系统课程设计论文_第1页
个人账簿管理系统课程设计论文_第2页
个人账簿管理系统课程设计论文_第3页
个人账簿管理系统课程设计论文_第4页
个人账簿管理系统课程设计论文_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、课程名称:课程名称:数据结构 湖南涉外经济学院湖南涉外经济学院本科学生课程设计(论文)本科学生课程设计(论文)题 目 个人账簿管理 毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明原创性声明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名:

2、 日期: 使用授权说明使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 摘 要个人账簿管理是根据现实生活中的应用而编写的,主要是用 C 语言编写,其中运用到了文件的基本操作,结构体数组,宏定义,还有几个主要循环的应用,其功能包括按月份插入、输出、修改、查询、删除及按开支排序,包括了账簿管理的大部分功能,适合于大部

3、分家庭用户。关键词: C 语言,算法,数据结构,个人账簿管理目 录第一章 前 言1第二章 系统功能分析2个人账簿管理2解决个人账簿管理22.2.1 概要分析22.2.2 流程图3第三章 总体设计4概括4基本思路4第四章 详细设计5程序代码实现54程序主界面54创建结构体74数据的插入74数据的删除84数据的排序10第五章 系统实现12第六章 解决的关键问题14第七章 结 论15结 束 语16编程感想16参考文献17程序分工18第一章第一章 前前 言言本系统使用 Microsoft Visual Studio.NET 2005 开发工具创建 Web 应用程序。采 Visual C.NET 开发语

4、言,使用文件的操作达到个人账簿管理的各种功能。文章详细讨论了该系统的开发、设计环境、实现算法及其具体的实现。数据结构是一门专业技术基础课。它的教学要求是:学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确意读,符合软件工程的规范。如果说高级语言程序设计的训练过程,要进行了结构化的程序设计的初步训练的话,那么数据结构就要培养我们的数据抽象能力个人账簿管理系统是结合了文件、结构体、函数等操作,运用了数据结构中最基本的一

5、些算法,使程序简单明了,使用了一些最优的算法,从而达到了不浪费内存的目的,同时也加快了程序的运行速度。第二章第二章 系统功能分析系统功能分析本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除及按开支排序,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。可以按主界面的提示完成每一块功能。2.12.1 个人账簿管理个人账簿管理在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了 6 个函数,分别是插入信息,收支情况,修改信息,查询月份信息,删除某月信息,其中每一个程序都能实现相应部分的功能,并且在每

6、一个程序中都使用了相应的文件操作,和结构体数组的操作,通过对数组,结构体,文件的删除、查找、修改及排序使程序都完成了相应的功能。解决个人账簿管理解决个人账簿管理2. 概要分析 个人账簿管理通过:void Insert() / 插入信息void Outlin( ) /收支情况void Modify(int xg) /修改信息void Search(int yf) / 查询月份信息void Del(int yf) / 删除某月信息void ps() /按收支排序这六个函数分别完成每一部分功能 ,其中都是从主函数调用相应的函数,完成相应的功能。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

8、 中,否则就直接把 b 中的数据写到 fp2 中,通过循环到!feof(fp1)为止,这个就把所有的修改的数据写入到了 fp2,关闭两个文件,最后删除原来的 data.dat 文件,然后把 temp.dat 文件换名成为 data.dat 文件,这样就达到了修改的目的。4. 查询月份信息是在主函数中输入一个数,然后在查询函数中判断是否月份相同,假如月份相同就输出来。5. 删除某月信息是和修改某月信息一样的,只是把其中的一句改成 b-month!=xg 就直接写入到 fp2 中,经过换名就达到了效果。6. 按收支排序是首先建立一个结构体数组,把所有的数据读到数组中,然后按收支情况排序,排好序之后

9、就又把他写入到 temp.dat 的文件中,删除源文件,替换文件名就实现了排序的功能。第四章第四章 详细设计详细设计void main() int k,xg,yf; do printf(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.退

10、出个人帐簿管理系统n); printf(n-n); /*输出开始界面*/ scanf(%d,&k); switch(k) case 1:/*插入某月信息*/ Insert(); break; 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

11、 5:/*删除某月信息*/ printf(请输入需要删除的月份:n); scanf(%d,&yf); Del(yf); break; case 6:/*排序*/ ps(); break; case 0:exit(0);/*退出个人帐簿管理系统*/default : printf(输入错误,请重新输入); while(k=6); struct ElemType int month;/*月份*/ int income;/*全部月收入*/ int food; /*食品开支*/ int rent;/*房租*/ int utilities; /*水电费*/ int medical;/*医疗费*/

12、 int savings;/*储蓄*/ int education;/*子女教育费*/ int payment ;/*总支出*/x12; /*一个月开支信息*/void Insert() / 插入信息 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,&cation); xi.

13、payment=xi.food+xi.rent+xi.utilities+xi.medical+cation; xi.savings=xi.income-xi.payment; if(fp=fopen(data.dat,ab)=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(te

14、mp.dat,File); /把临时文件改成源文件名 Outlin();/调用输出函数,输出整体的开支void ps() /按收支排序 FILE *fp1,*fp2;ElemType a12,h;int i,j,c=0; 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(struc

15、t 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+) fwrite(&ai,sizeof(struct ElemType),1,fp2); fclose(fp1);fclose(fp2);remove(File); /删除源文件rename(temp.dat,File); /把临时文件改成源文件名 Outlin();/调用输出函数,输出整体的开支第五章第五章 系统实现系统实现其中程序结果如下: 图 5. 1 程序的主界面 图

16、 5.2 程序插入月份界面 图 5.3 程序输出整体收支情况 图 5.4 修改某月信息(修改 3 月份的数据) 图 5.5 查询 2 月份的数据 图 5.5 删除 3 月份的信息 图 5.6 按收支排序第六章第六章 解决的关键问题解决的关键问题本程序主要解决的关键问题如下:1.文件的读写操作及读写所用的方式2.文件的修改及删除3.文件的排序4.结构体的操作5.函数的参数传递问题第七章第七章 结结 论论通过这次课程设计使我了解到了 :1. 写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约很多时间和加快系统的速度。2. 在这个程序中,主要还是利用了 C 语言中文件的操作,其中最主要的

17、就是文件的读写及用的不同种读写的方式,还有查找、修改及删除文件中的数据,其中查找还是比较简单,但修改文件中的数据,要利用一个中间文件。首先要查找到要删除的数据,假如相同就复制到一个文件中,原文件中不相同的也复制到那个文件中,这样以达到修改的目的,删除也类似,还有就是排序了,也要利用到中间文件。3. 在结构体的操作用,不能直接给结构体变量赋值。4. 这个程序的界面编的虽然不怎么好看,但基本账簿管理的功能都达到了。所以说还是具有一定的实用性。结结 束束 语语在这次课程设计中,我学习到了,不管做什么事情还是团队协作,才可以使一件事情办得最后,一个人的力量永远是有限的,不管一个人的能力有多大,总会有一些地方的不足,尤其是我们编程这一行,最主要的还是要团队合作。其次就是写程序时要用到注释

温馨提示

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

评论

0/150

提交评论