个人账簿管理系统课程设计论文.docx
- 文档编号:25977866
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:22
- 大小:112.32KB
个人账簿管理系统课程设计论文.docx
《个人账簿管理系统课程设计论文.docx》由会员分享,可在线阅读,更多相关《个人账簿管理系统课程设计论文.docx(22页珍藏版)》请在冰豆网上搜索。
个人账簿管理系统课程设计论文
课程名称:
数据结构
湖南涉外经济学院
本科学生课程设计(论文)
题目个人账簿管理
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
摘要
个人账簿管理是根据现实生活中的应用而编写的,主要是用C语言编写,其中运用到了文件的基本操作,结构体数组,宏定义,还有几个主要循环的应用,其功能包括按月份插入、输出、修改、查询、删除及按开支排序,包括了账簿管理的大部分功能,适合于大部分家庭用户。
关键词:
C语言,算法,数据结构,个人账簿管理
第一章前言
本系统使用MicrosoftVisualStudio.NET2005开发工具创建Web应用程序。
采VisualC.NET开发语言,使用文件的操作达到个人账簿管理的各种功能。
文章详细讨论了该系统的开发、设计环境、实现算法及其具体的实现。
数据结构是一门专业技术基础课。
它的教学要求是:
学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。
另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确意读,符合软件工程的规范。
如果说高级语言程序设计的训练过程,要进行了结构化的程序设计的初步训练的话,那么数据结构就要培养我们的数据抽象能力
个人账簿管理系统是结合了文件、结构体、函数等操作,运用了数据结构中最基本的一些算法,使程序简单明了,使用了一些最优的算法,从而达到了不浪费内存的目的,同时也加快了程序的运行速度。
第二章系统功能分析
本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除及按开支排序,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。
可以按主界面的提示完成每一块功能。
2.1个人账簿管理
在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了6个函数,分别是插入信息,收支情况,修改信息,查询月份信息,删除某月信息,其中每一个程序都能实现相应部分的功能,并且在每一个程序中都使用了相应的文件操作,和结构体数组的操作,通过对数组,结构体,文件的删除、查找、修改及排序使程序都完成了相应的功能。
2.2解决个人账簿管理
2.2.1概要分析
个人账簿管理通过:
voidInsert()//插入信息
voidOutlin()//收支情况
voidModify(intxg)//修改信息
voidSearch(intyf)//查询月份信息
voidDel(intyf)//删除某月信息
voidps()//按收支排序
这六个函数分别完成每一部分功能,其中都是从主函数调用相应的函数,完成相应的功能。
2.2.2流程图
第三章总体设计
3.1概括
个人账簿管理主要是通过文件的输入、输出、查询、修改、删除、排序来完成程序的主要功能,其中每一个功能都为对应的一个函数,增加程序的可读性,以实现程序的整体功能。
3.2基本思路
1.首先建立一个结构体,用户输入某个月的数据通过相应的文件操作就把他追加到文件data.dat中。
2.输入整体的收支情况就是直接从文件中读出所有的数据然后输出到屏幕中。
3.修改信息是建立一个临时的temp.dat的文件,通过fp1,fp2两个文件指针和一个结构体变量b,fp1指向data.dat,fp2指向temp.dat。
然后把fp1中的数据读到b中,就通过对比,假如b->month==xg就把x[xg]的地址写入到fp2中,否则就直接把b中的数据写到fp2中,通过循环到!
feof(fp1)为止,这个就把所有的修改的数据写入到了fp2,关闭两个文件,最后删除原来的data.dat文件,然后把temp.dat文件换名成为data.dat文件,这样就达到了修改的目的。
4.查询月份信息是在主函数中输入一个数,然后在查询函数中判断是否月份相同,假如月份相同就输出来。
5.删除某月信息是和修改某月信息一样的,只是把其中的一句改成b->month!
=xg就直接写入到fp2中,经过换名就达到了效果。
按收支排序是首先建立一个结构体数组,把所有的数据读到数组中,然后按收支情况排序,排好序之后就又把他写入到temp.dat的文件中,删除源文件,替换文件名就实现了排序的功能。
第四章详细设计
4.1程序代码实现
4.1.1程序主界面
voidmain()
{
intk,xg,yf;
do{
printf("\n------------------------------------------------\n");
printf("\n----------欢迎进入个人帐簿管理系统-------------\n\n");
printf("\n-----------个人帐簿管理系统主菜单--------------\n");
printf("\n1.插入某月信息\n");
printf("\n2.输出整体收支情况\n");
printf("\n3.修改某月信息\n");
printf("\n4.查询某月信息\n");
printf("\n5.删除某月信息\n");
printf("\n6.按开支排序输出结果\n");
printf("\n0.退出个人帐簿管理系统\n");
printf("\n------------------------------------------------\n");/*输出开始界面*/
scanf("%d",&k);
switch(k)
{
case1:
{/*插入某月信息*/
Insert();
}break;
case2:
{/*输出所有月份的收支情况*/
Outlin();
}break;
case3:
{/*修改某月信息*/
printf("请输入需要修改的月份:
\n");
scanf("%d",&xg);
Modify(xg);
}break;
case4:
{/*查询某月信息*/
printf("请输入需要查询的月份:
\n");
scanf("%d",&yf);
Search(yf);
}break;
case5:
{/*删除某月信息*/
printf("请输入需要删除的月份:
\n");
scanf("%d",&yf);
Del(yf);
}break;
case6:
{/*排序*/
ps();
}break;
case0:
exit(0);/*退出个人帐簿管理系统*/
default:
printf("输入错误,请重新输入");
}
}while(k<=6);
}
4.1.2创建结构体
structElemType
{
intmonth;/*月份*/
intincome;/*全部月收入*/
intfood;/*食品开支*/
intrent;/*房租*/
intutilities;/*水电费*/
intmedical;/*医疗费*/
intsavings;/*储蓄*/
inteducation;/*子女教育费*/
intpayment;/*总支出*/
}x[12];/*一个月开支信息*/
4.1.3数据的插入
voidInsert()//插入信息
{
intj,i=1;
FILE*fp;
printf("请依次输入\n月份当月收入食品开支房租水电费医疗费子女教育\n");
scanf("%d%d%d%d%d%d%d",&x[i].month,&x[i].income,&x[i].food,&x[i].rent,&x[i].utilities,&x[i].medical,&x[i].education);
x[i].payment=x[i].food+x[i].rent+x[i].utilities+x[i].medical+x[i].education;
x[i].savings=x[i].income-x[i].payment;
if((fp=fopen("data.dat","ab"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
for(j=1;j<=i;j++)
fwrite(&x[j],sizeof(structElemType),1,fp);
fclose(fp);
}
4.1.4数据的删除
voidDel(intyf)//删除某月信息
{
FILE*fp1,*fp2;
ElemType*b;
if((fp1=fopen("data.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
b=(ElemType*)malloc(sizeof(structElemType));
rewind(fp1);
fread(b,sizeof(structElemType),1,fp1);
while(!
feof(fp1))
{
if(b->month!
=yf)
fwrite(b,sizeof(ElemType),1,fp2);
fread(b,sizeof(ElemType),1,fp1);
}
fclose(fp1);
fclose(fp2);
remove(File);//删除源文件
rename("temp.dat",File);//把临时文件改成源文件名
Outlin();//调用输出函数,输出整体的开支
}
4.1.5数据的排序
voidps()//按收支排序
{
FILE*fp1,*fp2;
ElemTypea[12],h;
inti,j,c=0;
if((fp1=fopen("data.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
if((fp2=fopen("temp.dat","wb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
for(j=1;!
feof(fp1);j++,c++)
fread(&a[j],sizeof(structElemType),1,fp1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 账簿 管理 系统 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)