个人帐簿管理系统.docx
《个人帐簿管理系统.docx》由会员分享,可在线阅读,更多相关《个人帐簿管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
![个人帐簿管理系统.docx](https://file1.bdocx.com/fileroot1/2023-4/20/6f7bc70f-f84e-4c2a-a873-5858b23c3b65/6f7bc70f-f84e-4c2a-a873-5858b23c3b651.gif)
个人帐簿管理系统
目录
摘要1
前言2
正文3
1.采用类c语言定义相关的数据类型3
2.各模块的伪码算法3
3.函数的调用关系图5
4.调试分析5
5.测试结果6
6.源程序(带注释)11
总结31
参考文献32
致谢33
附件Ⅰ部分源程序代码34
摘要
今天,随着微型计算机的普及,使越来越多的人们了解到了计算机的作用,以及带给我们的便利。
个人账簿管理系统就是我们常说的管理信息系统MIS(ManagementInformationSystem)中的一种,它是一个计算机软硬件资源以及数据库的人-机系统。
随着信息技术,计算机技术的发展,在社会各领域都已经离不开信息系统的支持。
个人账簿管理系统针对个人用户设计,是一个单用户系统,它提供各全方位的财务数据统计、数据查询、数据打印,方便个人理财,做出正确的财务决策。
为了更加适应现代越来越快的生活节奏和越来越多的个人收支情况,以科学的管理、使用的简便为出发点,建立了一个具有实用性、高效性及功能划分细致的个人财务管理系统,VisualC作为前台开发工具,运用面向对象的设计方法,完成了该管理系统的模块和功能设计。
结果表明:
系统具有较高的可靠性和灵活性,且便于扩充和维护。
关键词:
个人账簿管理;存储结构;
前言
当前生活节奏加快,人们生活水平不断提高,收入和支出越来越趋于多样化,传统的人工记录方式和管理家庭和自己账簿情况的记录方式不便于长期保存,还一些不可避免的缺点。
开发一个能够管理个人账簿的软件系统已经很有必要,这样可以减轻人们在个人账簿管理时的负担。
能克服传统管理方法的多个缺点。
该程序主要是通过线性表的逻辑结构、存储结构,线性表及队列上基本运算实现的。
可以让我们学会如何把学到的知识用于解决实际问题。
它的主要功能
1个人账簿信息输入、浏览及排序。
2个人账簿信息查询及更改。
3账簿信息及文件操作。
正文
采用类c语言定义相关的数据类型
typedefstruct
{
charmonth[10];
charspxf[5];
charfzfy[5];
charznjy[5];
charsdfy[5];
charylfy[5];
charcxfy[5];
charsrfy[5];
}MYBILL;
各模块的伪码算法
voidshowpaixu(MYBILLbill[],intlength)
{
menu1:
system("cls");
intchoice;
printf("\n\n\n\n*************************个人账簿信息管理系统***********************\n\n");
printf("1.显示全部个人账簿信息\n\n");
printf("2.按月份顺序排序\n\n");
printf("3.按每月收入排序\n\n");
printf("0.返回上一级菜单\n\n");
printf("********************************************************************\n");
printf("请选择(0~3)\n");
scanf("%d",&choice);
switch(choice)
{
case1:
length=load(bill);
list(bill,length);
printf("请按任意键返回...\n");
getch();
break;
case2:
length=load(bill);
monthsort(bill,length);
save(bill,length);
printf("请按任意键返回...\n");
getch();
break;
case3:
length=load(bill);
srfysort(bill,length);
save(bill,length);
printf("请按任意键返回...\n");
getch();
break;
case0:
return;
}
gotomenu1;
}
3函数的调用关系图
4调试分析
a、调试中遇到的问题及对问题的解决方法
调试中遇到的问题及对问题的解决方法
1、输出的运行界面不整齐,例如“*”在编写程序的时候输入不整齐,运行出来的界面就不好看。
2、在使用解释符号时应该注意“//”,不适合于TC的环境,要用“/**/”。
3、函数的调用不正确。
解决方法:
当在一个函数中要调用另一个函数时,必须在调用函数的函数块中对被调用函数进行类型的声明
b、算法的时间复杂度和空间复杂度
5测试结果
6源程序(带注释)
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#defineM50
typedefstruct
{
charmonth[10];
charspxf[5];
charfzfy[5];
charznjy[5];
charsdfy[5];
charylfy[5];
charcxfy[5];
charsrfy[5];
}MYBILL;
voidmprint(MYBILLtemp)
{
//inti[]
printf("\n********************************************************************************\n");
printf("\n月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");
printf("--------------------------------------------------------------------------------\n");
printf("%8s%6s%10s%10s%10s%10s%10s%10s\n",temp.month,temp.spxf,temp.fzfy,temp.znjy,temp.sdfy,temp.ylfy,temp.cxfy,temp.srfy);
printf("**************************************end***************************************\n");
}
intenter(MYBILLt[])
{
system("cls");
inti,n;
printf("********************************************************************************\n");
printf("请确定您要输入几个月的账单:
");
scanf("%d",&n);
if(n>0)
{
printf("请输入您的个人账单信息\n");
printf("\n月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;i{
scanf("%s%s%s%s%s%s%s%s",&t[i].month,&t[i].spxf,&t[i].fzfy,&t[i].znjy,&t[i].sdfy,&t[i].ylfy,&t[i].cxfy,&t[i].srfy);
printf("--------------------------------------------------------------------------------\n");
}
printf("信息录入成功!
");
returnn;
}
if(n<=0)printf("对不起,您输入的月数不正确\n");
exit(0);
}
voidlist(MYBILLt[],intn)
{
system("cls");
inti;
printf("\n***********************************个人账簿信息*********************************\n");
printf("总共有%d个月的账单\n",n);
printf("月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");
printf("--------------------------------------------------------------------------------\n");
for(i=0;i{
printf("%8s%6s%10s%10s%10s%10s%10s%10s\n",t[i].month,t[i].spxf,t[i].fzfy,t[i].znjy,t[i].sdfy,t[i].ylfy,t[i].cxfy,t[i].srfy);
if((i+1)%10==0)
{
printf("请输入任意键继续....\n");
getchar();
}
}
printf("*************************************结束***************************************\n");
}
intmonthfind(MYBILLt[],intn,char*s)
{
inti;
for(i=0;i{
if(strcmp(s,t[i].month)==0)
returni;
}
returni;
}
intdelet(MYBILLt[],intn)
{
chars[20];
intch=0;
inti,j;
printf("请输入您要删除账单的月份\n");
scanf("%s",&s);
i=monthfind(t,n,s);
if(i>n-1)
printf("对不起,没有找到要删除的月份的账单!
\n");
else
{
mprint(t[i]);
printf("您确认要删除该月的账单么?
(1.是/0.否)\n");
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j{
strcpy(t[j-1].month,t[j].month);
strcpy(t[j-1].spxf,t[j].spxf);
strcpy(t[j-1].fzfy,t[j].fzfy);
strcpy(t[j-1].znjy,t[j].znjy);
strcpy(t[j-1].sdfy,t[j].sdfy);
strcpy(t[j-1].ylfy,t[j].ylfy);
strcpy(t[j-1].cxfy,t[j].cxfy);
strcpy(t[j-1].srfy,t[j].srfy);
}
n--;
printf("记录删除成功!
\n");
}
}
returnn;
}
voidrewrite(MYBILLt[],intn)
{
chars[20];
intch=0;
inti;
printf("请输入您要修改的账单的月份:
\n");
scanf("%s",&s);
i=monthfind(t,n,s);
if(i>n-1)
printf("对不起,没有找到要修改的记录!
\n");
else
{
mprint(t[i]);
printf("您确定要修改这条记录么?
(1.是/0.否)\n");
scanf("%d",&ch);
if(ch==1)
{
printf("请输入新的记录\n");
printf("***************************************************************************\n");
printf("月份食品消费房租费用工作子女教育费用水电费用医疗费用储蓄费用收入费用\n");
printf("---------------------------------------------------------------------------\n");
scanf("%s%s%s%s%s%s%s%s",&t[i].month,&t[i].spxf,&t[i].fzfy,&t[i].znjy,&t[i].sdfy,&t[i].ylfy,&t[i].cxfy,&t[i].srfy);
printf("---------------------------------------------------------------------------\n");
printf("记录修改成功!
\n");
}
}
}
intadd(MYBILLt[],intn)
{
MYBILLtemp;
inti,j;
chars[20];
printf("请输入您要插入的记录\n");
printf("********************************************************************************\n");
printf("月份食品消费房租费用工作子女教育费用水电费用医疗费用储蓄费用收入费用\n");
printf("--------------------------------------------------------------------------------\n");
scanf("%s%s%s%s%s%s%s%s",&temp.month,&temp.spxf,&temp.fzfy,&temp.znjy,&temp.sdfy,&temp.ylfy,&temp.cxfy,&temp.srfy);
printf("--------------------------------------------------------------------------------\n");
printf("请输入您要插入的位置\n");
scanf("%s",&s);
i=monthfind(t,n,s);
for(j=n-1;j>=i;j--)
{
strcpy(t[j+1].month,t[j].month);
strcpy(t[j+1].spxf,t[j].spxf);
strcpy(t[j+1].fzfy,t[j].fzfy);
strcpy(t[j+1].znjy,t[j].znjy);
strcpy(t[j+1].sdfy,t[j].sdfy);
strcpy(t[j+1].ylfy,t[j].ylfy);
strcpy(t[j+1].cxfy,t[j].cxfy);
strcpy(t[j+1].srfy,t[j].srfy);
}
strcpy(t[i].month,temp.month);
strcpy(t[i].spxf,temp.spxf);
strcpy(t[i].fzfy,temp.fzfy);
strcpy(t[i].znjy,temp.znjy);
strcpy(t[i].sdfy,temp.sdfy);
strcpy(t[i].ylfy,temp.ylfy);
strcpy(t[i].cxfy,temp.cxfy);
strcpy(t[i].srfy,temp.srfy);
n++;
printf("记录插入成功!
\n");
returnn;
}
voidsave(MYBILLt[],intn)
{
inti;
FILE*fp;
if((fp=fopen("mybill.txt","wb"))==NULL)
{
printf("文件不能打开!
\n");
exit
(1);
}
fprintf(fp,"%d",n);
fprintf(fp,"\r\n");
for(i=0;i{
fprintf(fp,"%-8s%4s%13s%8s%7s%12s%12s%8s",t[i].month,t[i].spxf,t[i].fzfy,t[i].znjy,t[i].sdfy,t[i].ylfy,t[i].cxfy,t[i].srfy);
fprintf(fp,"\r\n");
}
fclose(fp);
}
intload(MYBILLt[])
{
inti,n;
FILE*fp;
if((fp=fopen("mybill.txt","rb"))==NULL)
{
printf("对不起,不能打开文件!
\n");
exit
(1);
}
fscanf(fp,"%d",&n);
for(i=0;ifscanf(fp,"%s%s%s%s%s%s%s%s",&t[i].month,&t[i].spxf,&t[i].fzfy,&t[i].znjy,&t[i].sdfy,&t[i].ylfy,&t[i].cxfy,&t[i].srfy);
fclose(fp);
returnn;
}
voidmonthsort(MYBILLt[],intn)
{
inti,j,flag;
MYBILLtemp;
for(i=0;i{
flag=0;
for(j=0;jif((strcmp(t[j].month,t[j+1].month))>0)
{
flag=1;
strcpy(temp.month,t[j].month);
strcpy(temp.spxf,t[j].spxf);
strcpy(temp.fzfy,t[j].fzfy);
strcpy(temp.znjy,t[j].znjy);
strcpy(temp.sdfy,t[j].sdfy);
strcpy(temp.ylfy,t[j].ylfy);
strcpy(temp.cxfy,t[j].cxfy);
strcpy(temp.srfy,t[j].srfy);
strcpy(t[j].month,t[j+1].month);
strcpy(t[j].spxf,t[j+1].spxf);
strcpy(t[j].fzfy,t[j+1].fzfy);
strcpy(t[j].znjy,t[j+1].znjy);
strcpy(t[j].sdfy,t[j+1].sdfy);
strcpy(t[j].ylfy,t[j+1].ylfy);
strcpy(t[j].cxfy,t[j+1].cxfy);
strcpy(t[j].srfy,t[j+1].srfy);
strcpy(t[j+1].month,temp.month);
strcpy(t[j+1].spxf,temp.spxf);
strcpy(t[j+1].fzfy,temp.fzfy);
strcpy(t[j+1].znjy,temp.znjy);
strcpy(t[j+1].sdfy,temp.sdfy);
strcpy(t[j+1].ylfy,temp.ylfy);
strcpy(t[j+1].cxfy,temp.cxfy);
strcpy(t[j+1].srfy,temp.srfy);
}
if(flag==0)
break;
}
printf("按月份排序成功!
\n");
}
voidsrfysort(MYBILLt[],intn)
{
inti,j,flag;
MYBILLtemp;
for(i=0;i{
flag=0;
for(j=0;jif((strcmp(t[j].srfy,t[j+1].srfy))>0)
{
flag=1;
strcpy(temp.month,t[j].month);
strcpy(temp.spxf,t[j].spxf);
strcpy(temp.fzfy,t[j].fzfy);
strcpy(temp.znjy,t[j].znjy);
strcpy(temp.sdfy,t[j].sdfy);
strcpy(temp.ylfy,t[j].ylfy);
strcpy(temp.cxfy,t[j].cxfy);
strcpy(temp.srfy,t[j].srfy);
strcpy(t[j].month,t[j+1].month);
strcpy(t[j].spxf,t[j+1].spxf);
strcpy(t[j].fzfy,t[j+1].fzfy);
strcpy(t[j].znjy,t[j+1].znjy);
strcpy(t[j].sdfy,t[j+1].sdfy);
strcpy(t[j].ylfy,t[j+1].ylfy);
strcpy(t[j].cxfy,t[j+1].cxfy);
strcpy(t[j].srfy,t[j+1].srfy);
strcpy(t[j+1].month,temp.month);
strcpy(t[j+1].spxf,temp.spxf);
strcpy(t[j+1].fzfy,temp.fzfy);
strcpy(t[j+1].znjy,temp.znjy);
strcpy(t[j+1].sdfy,temp.sdfy);
strcpy(t[j+1].ylfy,temp.ylfy);
strcpy(t[j+1].cxfy,temp.cxfy);
strcpy(t[j+1].srfy,temp.srfy);
}
if(flag==0)
break;
}
printf("按每月收入排序成功!
\n");
}
voidcopy()
{
charoutfile[20];
inti,n;
MYBILLt;
FILE*sfp,*tfp;
if((sfp=fopen("mybill.txt","rb"))==NULL)
{
printf("对不起,