家庭财务小管家教学内容.docx
《家庭财务小管家教学内容.docx》由会员分享,可在线阅读,更多相关《家庭财务小管家教学内容.docx(51页珍藏版)》请在冰点文库上搜索。
家庭财务小管家教学内容
课程设计说明书
学院、系:
专业:
学生姓名:
学号:
设计题目:
家庭财务小管家
起迄日期:
指导教师:
1设计目的
本课程设计是采用C语言,在VC平台下设计年历显示系统,该系统运行在MS-DOS命令行模式下。
本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
1)进一步巩固和复习C程序设计的基础知识;
2)培养学生结构化程序、模块化程序设计的方法和能力;
3)了解软件的编制过程及各环节的具体内容;
4)提高学生程序调试技巧、软件设计能力和代码规范化等素质;
提高学生分析问题、解决问题以及实际运用能力。
2任务概述
个人小管家应用系统给家庭提供了一个管理个人财务的平台,主要用于对家庭成员收入、支出进行添加、查询、删除、修改以及打印的操作,使得家庭财务收支状况一目了然。
主要功能包括:
(1)主菜单。
主要包括收入管理、支出管理和退出;
(2)添加收入记录;
(3)查询收入记录;
(4)删除收入记录;
(5)修改收入记录;
(6)打印收入记录;
(7)添加支出记录;
(8)查询支出记录;
(9)删除支出记录;
(10)修改支出记录;
(11)打印支出记录;
(12)退出系统。
3模块划分
4主要函数说明及其N-S图
1、主函数main()
2、增加函数Add_()
输入待加入的家庭成员收支情况
文件存在
TF
从该文件读出数据并显示出来退出
确定所要加入的位置
向文件输入前面家庭成员收支数据并显示
向文件输出待输入的家庭成员收支数据并显示
向文件输出位置后面家庭成员收支数据并显示
关闭文件
3、删除函数Del_()
打开文件
显示读出的数据
关闭文件
N=1
输入待删除的家庭成员信息
信息正确
TF
将第j+1个成员的数据
移到第j个
关闭文件
4、修改函数xiugai_()
打开文件
输入需要修改家庭成员的信息
显示需要修改家庭成员信息
重新写入各项信息
向文件输入新信息并显示
关闭文件
5、查询函数chaxun_()
打开文件
输入需要查询家庭成员的信息
显示需要查询家庭成员信息
关闭文件
6、统计函数Tongji_()
打开文件
统计所有家庭成员的收入并显示
统计所有家庭成员的支出并显示
统计所有家庭成员的(收入-支出)并显示
关闭文件
5程序运行数据及其结果
1>主界面:
图1
2>收入界面:
图2
3>添加操作:
图3(以收入为例)
4>查询操作:
图4(以收入为例)
5>修改操作:
图5(以支出为例)
6>删除操作:
图6(以收入为例)
7>支出界面:
图7
8>统计界面:
图8
6课程设计心得
通过本此的课程设计,让我们更熟练地掌握了《C语言程序设计教程》的
知识,熟悉了一个管理系统的运用和操作,熟悉如何采用DevC++作为编译环
境,使程序成功的编译和运行,能够运用C语言创建基本表和编辑信息,增加
信息,删除信息,修改信息,查找信息和显示信息。
通过对结构体,编辑,增
加,删除,修改,查找,显示模块的连接,生成能操作运行的管理系统。
在这次课程设计的过程中,由于对知识掌握不熟悉,特别是链表、指针和文
件的使用不熟练,是自己在编写代码的时候遇到了很大的困难,最后通过上网查
找资料并请教学长解决了问题,但自身还是有很多不足的地方!
通过这次课程设计,是自己认识到了基础知识的重要性,在平时的学习中要
把基础的内容完全理解融会贯通,并且应该多加练习,提高自己敲写代码的速度
和准确性。
通过这次课程设计,增加了我对编程的兴趣和欲望。
总之,这次课程
设计使我受益匪浅!
!
!
附录:
源代码
#include
#include
#include
structData
{
charname[20];
charriqi[8];
floatmoney;
charbeizhu[50];
};
structlist
{
structDatainfo;
structlist*next;
};
structlist*Inhead=NULL;
structlist*Intail=NULL;
structlist*zhichuhead=NULL;
structlist*zhichutail=NULL;
structlist*temp=NULL;
voidchaxun_income();
voidchaxun_zhichu();
voidxiugai_income();
voidxiugai_zhichu();
voidSave_income()//保存支出文件
{
FILE*fp;//文件指针
fp=fopen("D:
\家庭财务管理.txt","w");
structlist*p=Inhead;
while(p!
=NULL)
{
fwrite(&p->info,sizeof(structData),1,fp);
p=p->next;
}
fclose(fp);
}
voidSave_zhichu()//保存支出文件
{
FILE*fp;
fp=fopen("D:
\家庭财务管理支出.txt","w");//打开文件
structlist*p=zhichuhead;
while(p!
=NULL)
{
fwrite(&p->info,sizeof(structData),1,fp);
p=p->next;
}
fclose(fp);
}
voidOpen()
{
FILE*fp;
fp=fopen("D:
\家庭财务管理.txt","r");//打开文件
if(fp!
=NULL)
{
structDatalinshi;
while(fread(&linshi,sizeof(structData),1,fp)==1)
{
temp=(structlist*)malloc(sizeof(structlist));
temp->info=linshi;
temp->next=NULL;
if(Inhead==NULL)
{
Inhead=temp;
Intail=temp;
}
else
{
Intail->next=temp;
Intail=temp;
}
}
fclose(fp);
}
}
voidMenu()//主菜单
{
system("cls");
printf("========================\n");
printf("#欢迎使用家庭财务小管家#\n");
printf("========================\n");
printf("1:
收入操作\n");
printf("2:
支出操作\n");
printf("3:
统计操作\n");
printf("0:
退出\n");
}
voidOpenzhichu()//打开支出文件
{
FILE*fp;
fp=fopen("D:
\家庭财务管理支出.txt","r");
if(fp!
=NULL)
{
structDatalinshi;
while(fread(&linshi,sizeof(structData),1,fp)==1)
{
temp=(structlist*)malloc(sizeof(structlist));
temp->info=linshi;
temp->next=NULL;
if(zhichuhead==NULL)
{
zhichuhead=temp;
zhichutail=temp;
}
else
{
zhichutail->next=temp;
zhichutail=temp;
}
}
fclose(fp);
}
}
voidmingzi()//按姓名查询
{
charchazhao[20];
printf("请输入查询的名字");
gets(chazhao);
structlist*p=Inhead;
while(p!
=NULL)
{
if(strcmp(p->info.name,chazhao)==0)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("收入:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(Inhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{
chaxun_income();
}
}
}
voidmingzi_zhichu()
{
charchazhao[20];
printf("请输入查询的名字");
gets(chazhao);
structlist*p=zhichuhead;
while(p!
=NULL)
{
if(strcmp(p->info.name,chazhao)==0)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("支出:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(zhichuhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{chaxun_zhichu();}}
}
voidmingzi_xiugai_income()
{
charxiugai[20];
printf("请输入修改的名字");
fflush(stdin);
gets(xiugai);
structlist*p=Inhead;
while(p!
=NULL)
{
if(strcmp(p->info.name,xiugai)==0)
{
fflush(stdin);
printf("姓名:
");gets(p->info.name);fflush(stdin);
printf("日期:
");gets(p->info.riqi);fflush(stdin);
printf("收入:
");scanf("%f",&p->info.money);fflush(stdin);
printf("备注:
");gets(p->info.beizhu);fflush(stdin);
}
p=p->next;
}
Save_income();
if(Inhead!
=NULL)
{charpanduan;
printf("是否继续修改(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{xiugai_income();}
}
}
voidmingzi_xiugai_zhichu()//按名字修改支出
{
charxiugai[20];
printf("请输入修改的名字");
fflush(stdin);
gets(xiugai);
structlist*p=zhichuhead;
while(p!
=NULL)
{
if(strcmp(p->info.name,xiugai)==0)
{
fflush(stdin);
printf("姓名:
");gets(p->info.name);fflush(stdin);
printf("日期:
");gets(p->info.riqi);fflush(stdin);
printf("支出:
");scanf("%f",&p->info.money);fflush(stdin);
printf("备注:
");gets(p->info.beizhu);fflush(stdin);
}
p=p->next;
}
Save_zhichu();
if(zhichuhead!
=NULL)
{charpanduan;
printf("是否继续修改(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{xiugai_zhichu();}
}
}
voidriqi()//收入查询
{
charchazhao[20];
printf("请输入查询的日期");
gets(chazhao);
structlist*p=Inhead;
while(p!
=NULL)
{
if(strcmp(p->info.riqi,chazhao)==0)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("收入:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(Inhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{chaxun_income();}
}
}
voidriqi_zhichu()
{
charchazhao[20];
printf("请输入查询的日期");
gets(chazhao);
structlist*p=zhichuhead;
while(p!
=NULL)
{
if(strcmp(p->info.riqi,chazhao)==0)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("支出:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(zhichuhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{chaxun_zhichu();}}
}
voidriqi_xiugai_income()
{
charxiugai[20];
printf("请输入修改的日期");
fflush(stdin);
gets(xiugai);
structlist*p=Inhead;
while(p!
=NULL)
{
if(strcmp(p->info.riqi,xiugai)==0)
{
fflush(stdin);
printf("姓名:
");gets(p->info.name);fflush(stdin);
printf("日期:
");gets(p->info.riqi);fflush(stdin);
printf("收入:
");scanf("%f",&p->info.money);fflush(stdin);
printf("备注:
");gets(p->info.beizhu);fflush(stdin);
}
p=p->next;
}
Save_income();
if(Inhead!
=NULL)
{charpanduan;
printf("是否继续修改(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{xiugai_income();}}
}
voidriqi_xiugai_zhichu()
{
charxiugai[20];
printf("请输入修改的日期");
fflush(stdin);
gets(xiugai);
structlist*p=zhichuhead;
while(p!
=NULL)
{
if(strcmp(p->info.riqi,xiugai)==0)
{
fflush(stdin);
printf("姓名:
");gets(p->info.name);fflush(stdin);
printf("日期:
");gets(p->info.riqi);fflush(stdin);
printf("支出:
");scanf("%f",&p->info.money);fflush(stdin);
printf("备注:
");gets(p->info.beizhu);fflush(stdin);
}
p=p->next;
}
Save_zhichu();
if(zhichuhead!
=NULL)
{charpanduan;
printf("是否继续修改(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{xiugai_zhichu();}}
}
voidmoney()//收入
{
floatchazhao;
printf("请输入查询的money");
scanf("%f",&chazhao);
fflush(stdin);
structlist*p=Inhead;
while(p!
=NULL)
{
if(p->info.money==chazhao)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("收入:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(Inhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{chaxun_income();}
}
}
voidmoney_zhichu()
{
floatchazhao;
printf("请输入查询的money");
scanf("%f",&chazhao);
fflush(stdin);
structlist*p=zhichuhead;
while(p!
=NULL)
{
if(p->info.money==chazhao)
{
printf("姓名:
");puts(p->info.name);
printf("日期:
");puts(p->info.riqi);
printf("收入:
");printf("%.4f\n",p->info.money);
printf("备注:
");puts(p->info.beizhu);
system("PAUSE");
}
p=p->next;
}
if(zhichuhead!
=NULL)
{charpanduan;
printf("是否继续查询(Y/N)");
panduan=getchar();
fflush(stdin);
if(panduan=='Y'||panduan=='y')
{
chaxun_zhichu();
}
}
}
voidmoney_xiugai_income()
{
floatxiugai;
printf("请输入修改的money");
scanf("%f",&xiugai);
fflush(stdin);
structlist*p=Inhead;
while(p!
=NULL)
{
if(p->info.money=