班级收支管理系统c语言编写.docx
- 文档编号:30559988
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:18
- 大小:17.15KB
班级收支管理系统c语言编写.docx
《班级收支管理系统c语言编写.docx》由会员分享,可在线阅读,更多相关《班级收支管理系统c语言编写.docx(18页珍藏版)》请在冰豆网上搜索。
班级收支管理系统c语言编写
此系统需要用到算法,还有计算方面的要求,若你确实想学好c,请联系我***************
#include
#include
#include
#include
#include
#include
#defineNULL0
structBF
{
chardate[12];//日期
floatIn;//收入
floatOut;//支出
charbz[20];//事由
floatyuE;//余额
structBF*next;
};
voidtime1();
structBF*creat()
{
structBF*p,*head,*end;
p=head=end=(structBF*)malloc(sizeof(structBF));
printf("\n=============请输入具体事项=============\n");
printf("\n日期:
");
scanf("%s",p->date);
printf("收入:
");
scanf("%f",&p->In);
printf("支出:
");
scanf("%f",&p->Out);
printf("事由:
");
scanf("%s",p->bz);
printf("余额:
");
scanf("%f",&p->yuE);
end->next=p;
end=p;
p=(structBF*)malloc(sizeof(structBF));
printf("日期:
");
scanf("%s",p->date);
while(strcmp(p->date,"0")!
=0)
{
printf("收入:
");
scanf("%f",&p->In);
printf("支出:
");
scanf("%f",&p->Out);
printf("事由:
");
scanf("%s",p->bz);
p->yuE=end->yuE+p->In-p->Out;
printf("余额:
");
printf("%0.2f",p->yuE);
end->next=p;
end=p;
p=(structBF*)malloc(sizeof(structBF));
printf("\n日期:
");
scanf("%s",p->date);
}
end->next=NULL;
returnhead;
}
voidsave(structBF*head)
{
FILE*fp;
structBF*p;
charfilename[20];
intch;
printf("请输入要保存的文件名:
");
scanf("%s",filename);
if((fp=fopen(filename,"r"))!
=NULL)
{printf("该文件已经存在,是否覆盖?
\n");
printf("1.覆盖2.不覆盖\n");
scanf("%d",&ch);
if(ch!
=1)
{
printf("请重新输入要保存的文件名:
");
scanf("%s",filename);
}
}
if((fp=fopen(filename,"w"))==NULL)
{
printf("创建文件失败!
\n");
return;
}
p=head;
while(p!
=NULL)
{
fprintf(fp,"%s\n",p->date);
fprintf(fp,"%f\n",p->In);
fprintf(fp,"%f\n",p->Out);
fprintf(fp,"%s\n",p->bz);
fprintf(fp,"%f\n",p->yuE);
p=p->next;
}
fputs("over",fp);
printf("文件保存成功!
\n");
getchar();
fclose(fp);
}
voidoutput(structBF*head)
{
structBF*p;
p=head;
if(p==NULL)
{
printf("未创建任何记录!
\n");
getchar();
return;
}
if(p!
=NULL)
{
printf("==========================显示数据==========================");
printf("\n日期收入支出事由余额");
}
while(p!
=NULL)
{
printf("\n%-10s%6.2f%6.2f%-20s%6.2f",p->date,p->In,p->Out,p->bz,p->yuE);
p=p->next;
}
getchar();
}
structBF*openfile()
{
structBF*head,*p,*f;
FILE*fp;
intch;
charfilename[20];
printf("请输入要打开的文件名:
");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("打开文件失败!
\n");
printf("1.请重新输入文件名2.退出\n");
scanf("%d",&ch);
if(ch==1)
scanf("%s",filename);
elseif(ch==2)
returnNULL;
}
head=f=p=(structBF*)malloc(sizeof(structBF));
fscanf(fp,"%s%f%f%s%f",p->date,&p->In,&p->Out,p->bz,&p->yuE);
while(!
feof(fp))
{
p=(structBF*)malloc(sizeof(structBF));
f->next=p;
fscanf(fp,"%s%f%f%s%f",p->date,&p->In,&p->Out,p->bz,&p->yuE);
if(strcmp(p->date,"over")==0)
{
f->next=NULL;
printf("文件打开成功,可显示信息!
");
getchar();
returnhead;
}
f=p;
}
fclose(fp);
f->next=NULL;
returnhead;
}
voidmima()
{
FILE*fp;
charmina1[20],mina2[20];
inti=0;
if((fp=fopen("mima","r"))==NULL)
{
printf("密码尚未创建!
\n");
getchar();
do
{
printf("请输入密码:
");
scanf("%s",mina1);
printf("请再次输入密码:
");
scanf("%s",mina2);
if(strcmp(mina1,mina2)!
=0)
{
printf("两次输入的密码不一样,请重新输入\n");
i=1;
}
else
break;
}while(i);
fp=fopen("mina","w");
fprintf(fp,"%s",mina1);
printf("密码设置成功!
\n");
fclose(fp);
getchar();
return;
}
else
printf("密码已创建!
\n");
getchar();
}
voidsearch(structBF*head)
{
structBF*p;
p=head;
charstr[20];
intj=1;
if(head==NULL)
{
printf("未打开任何文件夹!
");
getchar();
return;
}
printf("请输入要查看的日期(例:
2012-1-2)");
scanf("%s",str);
while(p!
=NULL)
{
if(strcmp(p->date,str)==0)
{
printf("\n日期:
%s",p->date);
printf("\n收入:
%0.2f",p->In);
printf("\n支出:
%0.2f",p->Out);
printf("\n事由:
%s",p->bz);
printf("\n余额:
%0.2f",p->yuE);
j=0;
}
p=p->next;
}
getchar();
if(j)
printf("查找完毕,未搜索到结果!
\n");
}
structBF*add(structBF*head)
{
structBF*p,*q;
p=head;
if(p==NULL)
{
printf("未打开任何文件夹!
\n");
getchar();
returnNULL;
}
while(p->next!
=NULL)
p=p->next;
q=(structBF*)malloc(sizeof(structBF));
printf("\n日期:
");
scanf("%s",q->date);
while(strcmp(q->date,"0")!
=0)
{
printf("收入:
");
scanf("%f",&q->In);
printf("支出:
");
scanf("%f",&q->Out);
printf("事由:
");
scanf("%s",q->bz);
q->yuE=p->yuE+q->In-q->Out;
printf("余额:
%0.2f",q->yuE);
p->next=q;
p=q;
q=(structBF*)malloc(sizeof(structBF));
printf("\n日期:
");
scanf("%s",q->date);
}
p->next=NULL;
printf("添加成功!
\n");
returnhead;
}
structBF*delete_mem(structBF*head)
{
structBF*p,*e;
charstr[20];
inti=1;
if(head==NULL)
{printf("未能打开任何文件夹!
\n");
getchar();
returnNULL;
}
printf("请输入要删除的日期\n");
scanf("%s",str);
p=head;
while(p!
=NULL)
{
if(strcmp(p->date,str)==0)
{i=0;
printf("\n日期:
%s",p->date);
printf("\n收入:
%0.2f",p->In);
printf("\n支出:
%0.2f",p->Out);
printf("\n事由:
%s",p->bz);
printf("\n余额:
%0.2f",p->yuE);
break;
}
e=p;
p=p->next;
}
if(i==0)
{if(p==NULL)
e->next=NULL;
else
{
e->next=p->next;
p=p->next;
while(p!
=NULL)
{p->yuE=e->yuE+p->In-p->Out;
e=e->next;
p=p->next;
}
}
printf("删除成功!
");
getchar();
returnhead;
}
if(i)
printf("不存在此日期\n");
returnhead;
}
structBF*change(structBF*head)
{
structBF*p,*e;
charstr[20];
inti=1,ch;
floatm,n;
if(head==NULL)
{printf("未能打开任何文件夹!
\n");
getchar();
returnNULL;
}
printf("请输入要修改项目的日期\n");
scanf("%s",str);
p=head;
while(p!
=NULL)
{
if(strcmp(p->date,str)==0)
{i=0;
printf("\n日期:
%s",p->date);
printf("\n收入:
%0.2f",p->In);
printf("\n支出:
%0.2f",p->Out);
printf("\n事由:
%s",p->bz);
printf("\n余额:
%0.2f",p->yuE);
m=p->In-p->Out;
break;
}
e=p;
p=p->next;
}
if(i==0)
{
printf("\n确认修改此项(1.y/2.n):
");
scanf("%d",&ch);
getchar();
if(ch==1)
{
printf("\n日期:
");
scanf("%s",p->date);
printf("收入:
");
scanf("%f",&p->In);
printf("支出:
");
scanf("%f",&p->Out);
printf("事由:
");
scanf("%s",p->bz);
n=p->In-p->Out;
if(fabs(m-n)>10e-5)
{
while(p!
=NULL)
{p->yuE=e->yuE+p->In-p->Out;
e=p;
p=p->next;
}
}
else
p->yuE=e->yuE+p->In-p->Out;
printf("\n修改成功!
");
getchar();
returnhead;
}
elsereturnNULL;
}
if(i)
printf("不存在此日期\n");
getchar();
returnhead;
}
voidview()
{printf("\n0.用户说明");
printf("\n1.创建新表格");
printf("\n2.保存表格");
printf("\n3.打开文件");
printf("\n4.打印表格");
printf("\n5.设置密码");
printf("\n6.查找数据");
printf("\n7.增加数据");
printf("\n8.删除数据");
printf("\n9.修改数据\n");
}
voidhint()
{
printf("提示:
");
printf("\n1.在第一次加入数据时,第一行数据应该自己输入余额,\n以便接下来的运行;");
printf("\n2.输入数据以日期为'0'终止(不在提醒);");
getchar();
}
/*voidlogo()
{
printf("马到成功");
printf("\n_(\_/)");
printf("\n,((((^`\");
printf("\n(((((6\");
printf("\n,(((((,\");
printf("\n,,,_,(((((/"._,`,");
printf("\n((((\\,...,((((/`-.-'");
printf("\n)));'`"'"'""(((((");
printf("\n(((/(((\");
printf("\n))||");
printf("\n((|.'|");
printf("\n))\_'`t,.')");
printf("\n(|y;--,-""'"-.\\/");
printf("\n)/./)/`\\");
printf("\n|./((//'");
printf("\n||\\//'|");
printf("\n||\\_//'||");
printf("\n||))|_/||");
printf("\n\_\|_/||");
printf("\n`'"\_\");
printf("\n`'"");
}*/
voidmain()
{time1();
structBF*head=NULL;
charch;
//logo();
do
{
view();
printf("请做出选择:
");
scanf("%c",&ch);
switch(ch)
{
case'0':
hint();break;
case'1':
head=creat();break;
case'2':
save(head);break;
case'3':
head=openfile();break;
case'4':
output(head);break;
case'5':
mima();break;
case'6':
search(head);break;
case'7':
head=add(head);break;
case'8':
head=delete_mem(head);break;
case'9':
head=change(head);break;
default:
exit(0);
}
printf("\n按回车键返回\n");
getchar();
system("cls");
}
while
(1);
}
voidtime1()
{
time_trawtime;
structtm*timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
printf("现在是北京时间:
%s",asctime(timeinfo));
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 收支 管理 系统 语言 编写