班级收支管理系统c语言编写.docx
- 文档编号:26511785
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:14
- 大小:16.55KB
班级收支管理系统c语言编写.docx
《班级收支管理系统c语言编写.docx》由会员分享,可在线阅读,更多相关《班级收支管理系统c语言编写.docx(14页珍藏版)》请在冰豆网上搜索。
班级收支管理系统c语言编写
#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;
if(i)}e=e->next;
p=p->next;}}
printf("删除成功!
");
getchar();
returnhead;
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("现在是xx时间:
%s",asctime(timeinfo));}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 班级 收支 管理 系统 语言 编写
![提示](https://static.bdocx.com/images/bang_tan.gif)