个人帐簿管理系统.docx
《个人帐簿管理系统.docx》由会员分享,可在线阅读,更多相关《个人帐簿管理系统.docx(40页珍藏版)》请在冰豆网上搜索。
个人帐簿管理系统
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
算法与数据结构课程设计
题目:
个人账簿管理系统
专业班级:
软件工程基地班
姓名:
学号:
10240541
指导教师:
王旭阳
成绩:
_______________
目录
摘要………………………………………………………………………………...1
正文………………………………………………………………………………….2
1.采用类c语言定义相关的数据类型………………………………………2
2.各模块的伪码算法………………………………………………………...2
3.函数的调用关系图3
4.调试分析4
5.测试结果5
6.源程序(带注释)10
总结30
参考文献31
致谢31
附件Ⅰ任务一源程序代码32
摘要
现如今,随着计算机的普及,人们了解到了计算机强大的功能,以及带给我们诸多方面的便利,个人账簿管理系统正是如此它是建立在计算机硬件上的一个小软件。
随着信息技术,计算机技术的发展,在社会各领域都已经离不开信息系统的支持。
个人账簿管理系统针对个人用户设计,是一个单用户系统,它提供各全方位的财务数据统计、数据查询、数据打印,方便个人理财,做出正确的财务决策
。
为了更加适应现代越来越快的生活节奏和越来越多的个人收支情况,以科学的管理、使用的简便为出发点,建立了一个具有实用性、高效性及功能划分细致的个人财务管理系统,VisualC作为前台开发工具,运用面向对象的设计方法,完成了该管理系统的模块和功能设计。
结果表明:
系统具有较高的可靠性和灵活性,且便于扩充和维护。
关键词:
个人账簿管理;存储结构;逻辑结构。
正文
1.采用类c语言定义相关的数据类型
typedefstruct
{
charmonth[10];
charspxf[5];
charfzfy[5];
charznjy[5];
charsdfy[5];
charylfy[5];
charcxfy[5];
charsrfy[5];
}MYBILL;1
2.各模块的伪码算法
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、函数的调用不正确。
解决方法:
当在一个函数中要调用另一个函数时,必须在调用函数的函数z之前对被调用函数进行类型的声明
b、算法的时间复杂度和空间复杂度
算法的时间复杂度为T(n)=O(f(n))=O(n)
算法的空间复杂度为S(n)=O(f(n))
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;