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

下载本文档

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

文档简介

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

2、计(论文)的印刷本和电 子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供 目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制 手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分 或全部内容湖南涉外经济学院本科学生课程设计(论文)作者签名:日期:摘要个人账簿管理是根据现实生活中的应用而编写的,主要是用C语言编写,其中运用到了文件的基本操作,结构体数组,宏定义,还有几个主要循环的应 用,其功能包括按月份插入、输出、修改、查询、删除及按开支排序,包括了 账簿管理的大部分功能,适合于大部分家庭用户。关键词:C语言,算法,数据结构,个人账簿管理第一章前言 1第二章系统功能

3、分析 22.1个人账簿管理 22.2解决个人账簿管理 22.2.1 概要分析 22.2.2 流程图 3第三章 总体设计 43.1概括43.2基本思路4第四章详细设计54.1程序代码实现 54.1.1程序主界面 54.1.2创建结构体 74.1.3数据的插入 84.1.4数据的删除 94.1.5数据的排序 10第五章系统实现13第六章 解决的关键问题 15第七章结论16结束语178.1编程感想17参考文献 18程序分工 19第一章前言本系统使用 Microsoft Visual Studio.NET 2005开发工具创建 Web应用程序。采Visual C.NET开发语言,使用文件的操作达到个人

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

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

6、的操作,通过对数组,结构体,文件的删除、查找、修改及排 序使程序都完成了相应的功能。2.2解决个人账簿管理221概要分析个人账簿管理通过:void In sert() /插入信息void Outli n( ) /收支情况void Modify(i nt xg) /修改信息void Search(i nt yf) /查询月份信息void Del(i nt yf) /删除某月信息void ps() / 按收支排序这六个函数分别完成每一部分功能,其中都是从主函数调用相应的函数,完成 相应的功能2.2.2流程图目2 1流刃圏第三章总体设计3.1概括个人账簿管理主要是通过文件的输入、输出、查询、修改、删

7、除、排序来完 成程序的主要功能,其中每一个功能都为对应的一个函数,增加程序的可读性, 以实现程序的整体功能。3.2基本思路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中,通过

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

9、实现了排序的功能。第四章详细设计4.1程序代码实现4.1.1程序主界面void mai n()int k,xg,yf;doprintf(nn);printf(n欢迎进入个人帐簿管理系统 nn );printf(n个人帐簿管理系统主菜单 n );prin tf(nn); /*输出开始界面*/prin tf(n1插入某月信息n);prin tf(n2.输出整体收支情况n);prin tf(n3.修改某月信息n);prin tf(n4.查询某月信息n);prin tf(n5.删除某月信息n);prin tf(n6按开支排序输出结果n);prin tf(n0.退出个人帐簿管理系统n);sea nf(%

10、d,&k);switch(k)case 1:/*插入某月信息*/In sert();break;case 2:/*输出所有月份的收支情况*/Outli n();break;case 3:/*修改某月信息*/printf(请输入需要修改的月份:n);scan f(%d, &xg);Modify(xg);break;case 4:/*查询某月信息*/printf(请输入需要查询的月份:n);scan f(%d, &yf);Search(yf);break;case 5:/*删除某月信息*/printf(请输入需要删除的月份:n);scan f(%d, &yf);Del(yf); break;cas

11、e 6:/* 排序 */ ps();break;case O:exit(O);/*退出个人帐簿管理系统*/ default : printf(输入错误,请重新输入);while(k=6);4. 1.2创建结构体struct ElemTypein t mon th;/* 月份 */int in come;/*全部月收入*/int food; /*食品开支*/in t re nt;/* 房租 */int utilities; /* 水电费 */int medical;/*医疗费 */int savings;/*储蓄*/int education;/*子女教育费 */int payment ;/*总

12、支出 */x12; /* 一个月开支信息*/4.1.3数据的插入void In sert() / 插入信息int j,i=1;FILE *fp;printf(请依次输入n月份 当月收入食品开支房租 水电费 医疗费 子女教育n );scan f(%d%d%d%d%d%d%d, &xi.mo nth, &xi.i ncome, &xi.food, &xi.re nt, &xi.utilities, &xi.medical, &catio n);xi.payme nt=xi.food+xi.re nt+xi.utilities+xi.medical+catio n;xi.sa

13、v in gs=xi.i ncome-xi.payme nt;if(fp=fope n(data.dat,ab)=NULL)prin tf(ca n not ope n filen);exit(0);for(j=1;jmo nth!=yf)fwrite(b,sizeof(ElemType),1,fp2);fread(b,sizeof(ElemType),1,fp1); fclose(fp1);fclose(fp2);remove(File); 删除源文件rename(temp.dat,File); /把临时文件改成源文件名Outl in ();/调用输出函数,输出整体的开支4. 1.5数据的排

14、序void ps() /按收支排序FILE *fp1,*fp2;ElemType a12,h;int i,j,c=O;if(fp 仁fope n( data.dat,rb)=NULL)prin tf(ca n not ope n filen);exit(0);if(fp2=fope n( temp.dat,wb)=NULL)prin tf(ca n not ope n 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

15、.payme ntaj.payme nt)h=ai;ai=aj;aj=h;for(i=1;ic;i+)fwrite(&ai,sizeof(struct ElemType),1,fp2);fclose(fpl);fclose(fp2);remove(File); 删除源文件rename(temp.dat,File); /把临时文件改成源文件名Outl in ();/调用输出函数,输出整体的开支第五章系统实现其中程序结果如下:D:kcsjocDebugzbgl.exeI 1=1 !叵1个人帐滝簣理系统主菜单插、某月信息霞输岀整体收支靑況沢修改某月信息4.查询某月信息、5 删除某月信息按开支排序输岀

16、结果缜退岀个人帐簿管理系统图5. 1 程序的主界面麻次输入m 当月收入食品开支房租水电费医疗费子女教育1 2000015002000100102000图5.2 程序插入月份界面肖份 当月收入.食品开支房租水电费医疗费子女教育储蓄总支岀12&QQ&1508200010Q2Q00143Q0570022200S2000200020Q丄胸2500152006800322&QQ22001501002600H75072504180S23002Q092091802Bt)0i166007400图5.3程序输出整体收支情况戶份当月收入.食品开支,房租水电费医疗费子女教育储蓄总支出1150020001001032

17、00014300570022000200020010025腼15200322002000200015928U0I-48507050423020002001002SQQ1Q60Q?40图5.4修改某月信息(修改3月份的数据)4惰输入需要杳询的月份;冃份 当月收入食品开支房租水电费医疗费子女教育储蓄总支岀2220B02000200020Q100250S1520B6800图5.5 查询2月份的数据请输入需要删除的月份*1月份当月收入食品开支房租水电费医疗费子女教育储塞总支岀12Q00S150010010020001430357002220QQ2S00200320010Q250011520068004

18、1B00S23B02000洒1002B00I10B0074B0图5.5 删除3月份的信息当月收入食品开支,房租水电费医疗费子女教育储蓄趁出12OM0150020001001002Q0&143035700*220002Q0Q200S269100250011520Q680041B00Q23B02B0020918028Q0I10E0074Q0图5.6按收支排序第六章解决的关键问题本程序主要解决的关键问题如下:1. 文件的读写操作及读写所用的方式2. 文件的修改及删除3. 文件的排序4. 结构体的操作5. 函数的参数传递问题第七章结论通过这次课程设计使我了解到了 :1. 写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约 很多时间和加快系统的速度。2. 在这个程序中,主要还是利用了 C语言中文件的操作,其中最主要的就 是文件的读

温馨提示

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

评论

0/150

提交评论