C语言程序设计个人财务管理系统.docx
《C语言程序设计个人财务管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计个人财务管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计个人财务管理系统
程序设计工程训练报告
C语言程序设计个人财务管理系统
课程名称C语言程序设计工程训练
姓名
院(系)信息科学与技术学院
专业班级
学号
指导教师
教务处制
1.需求分析
编写一个个人财政支出管理系统,主要解决的问题是作为一个系统而言,它所要面对不只是某一个人而言,而是要面对很多的用户。
那么想要解决这一问题,就必须要求这个系统能够存储许多用户的基本信息和记录。
同时也要求系统能够对不同的用户的身份进行查找和验证。
在验证通过之后,在对其进行用户所要求的操作。
作为一个财政支出系统,那么就要求对于用户关于金钱的每一项操作都要有相应的记录,同时并允许用户对于每一条整体的记录进行操作,例如可以根据时间来查找某一确定日期是否进行了收入或者支出的操作,也可以根据特定的需要来删除某一条整体的记录。
但不允许对每条记录的单项数据进行更改,因为不管是收入还是支出,所涉及的金额都是固定的,时间也是固定的,所以系统不允许用户对其进行操作。
除此之外,还必须有足够大的空间来存储新的记录。
所以此程序就是基于这个思想而编写出来的,基本满足了用户对于一个财政支出管理系统所要求的相关功能。
2系统总框图和功能模块说明
系统总框图
功能模块说明
(1)old_record():
此函数由系统自行调用,作用是将所有用户信息存入系统。
(2)voidsave():
此函数的作用是将结构体数组中的信息写入文件存储,由系统调用。
(3)load():
此函数的作用是将结构体数组中写入文件的信息读出,由系统调用。
(4)lookup_accounts():
此函数的作用是将用户输入的帐号与系统中的所有帐号进行对比,查看系统中是否有此帐号。
(5)check_code():
此函数是作用是在系统查询到了帐号之后,对用户输入的帐号和密码进行检验,看是否相对应。
(6)print_message():
此函数的功能是在系统检查了用户输入的帐号和密码之后,如果用户通过了系统的检查,在此显示用户可见的基本信息。
(7)find_record():
此函数的作用是根据用户输入的日期进行查找操作。
(8)insert_record():
此函数的功能是在记录中增加一条新的记录,这个记录由用户输入。
(9)del_record():
此函数的功能是根据用户的输入的位置,将相应位置的记录删除。
(10)sum_num():
此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总合。
(11)打印输出记录的函数:
在本程序中一共有三个打印输出记录的函数,分别为all_print()、acc_print()、pay_print()这三个函数。
它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。
(12)mian():
在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。
3系统设计
主要结构体
个人信息
账户信息
主要功能函数
old_record()ec_len=4;
strcpy(r[0].account,"1001");
strcpy(r[1].account,"1002");
strcpy(r[2].account,"1003");
strcpy(r[0].code,"111111");
strcpy(r[1].code,"222222");
strcpy(r[2].code,"333333");
strcpy(r[0].name,"wang");
strcpy(r[1].name,"li");
strcpy(r[2].name,"zhang");
strcpy(r[0].rec[0].date,"07-01-01");
strcpy(r[0].rec[1].date,"07-02-01");
strcpy(r[0].rec[2].date,"07-03-01");
strcpy(r[0].rec[3].date,"07-04-01");
strcpy(r[1].rec[0].date,"07-01-02");
strcpy(r[1].rec[1].date,"07-02-02");
strcpy(r[1].rec[2].date,"07-03-02");
strcpy(r[1].rec[3].date,"07-04-02");
strcpy(r[2].rec[0].date,"07-01-03");
strcpy(r[2].rec[1].date,"07-02-03");
strcpy(r[2].rec[2].date,"07-03-03");
strcpy(r[2].rec[3].date,"07-04-03");
strcpy(r[0].rec[0].operate,"in");
strcpy(r[0].rec[1].operate,"out");
strcpy(r[0].rec[2].operate,"in");
strcpy(r[0].rec[3].operate,"out");
strcpy(r[1].rec[0].operate,"out");
strcpy(r[1].rec[1].operate,"in");
strcpy(r[1].rec[2].operate,"out");
strcpy(r[1].rec[3].operate,"in");
strcpy(r[2].rec[0].operate,"in");
strcpy(r[2].rec[1].operate,"out");
strcpy(r[2].rec[2].operate,"in");
strcpy(r[2].rec[3].operate,"out");
r[0].rec[0].num=3000;
r[0].rec[1].num=-1500;
r[0].rec[2].num=2500;
r[0].rec[3].num=-1000;
r[1].rec[0].num=-3000;
r[1].rec[1].num=5000;
r[1].rec[2].num=-1000;
r[1].rec[2].num=2000;
r[2].rec[0].num=1000;
r[2].rec[1].num=-1500;
r[2].rec[2].num=3000;
r[2].rec[2].num=-500;
returnok;
}
n");
return;
}
for(i=0;iif(fwrite(&r[i],sizeof(structlist_record),1,fp)!
=1)
printf("filewriteerror.\n");
fclose(fp);
}
n");
return;
}
for(i=0;iif(fread(&r[i],sizeof(structlist_record),1,fp)!
=1)
{if(feof(fp))
(fclose(fp));
return;
}
fclose(fp);
}
ccount,acc)==0)
{
returnok;
}
printf("帐号不存在,请重新输入!
\n");
returnnull;
}
ate,"0");
strcpy[i].operate,"0");
[i].num=0;
}
for(i=0;i<3;i++)
if(strcmp(r[i].account,acc)==0)
if(strcmp(r[i].code,c)==0)
returnr[i];
printf("thecodeiswrong,pleaseinputagain!
\n");
returna;
}
ccount);
}
ec_len;i++)
{
if(strcmp((*p).rec[i].date,d)==0)
{
printf("dateoperatemoney\n");
printf("%s",(*p).rec[i].date);
printf("%s",(*p).rec[i].operate);
printf("%d\n",(*p).rec[i].num);
returnok;
}
}
if(i==(*p).rec_len)
printf("thedateisnotexit!
\n");
returnnull;
}
ec_len+1)))
{
printf("thepositioniswrong.\n");
return0;
}
else
{
for(i=(*p).rec_len;i>lop-1;i--)
{
strcpy((*p).rec[i].date,(*p).rec[i-1].date);
strcpy((*p).rec[i].operate,(*p).rec[i-1].operate);
(*p).rec[i].num=(*p).rec[i-1].num;
}
strcpy(p->rec[i].date,p1->date);
strcpy((*p).rec[i].operate,(*p1).operate);
(*p).rec[i].num=(*p1).num;
(*p).rec_len++;
returnok;
}
}
ec_len))
{
printf("thepositioniswrong.\n");
returnnull;
}
else
{
for(i=lop2-1;i<(*p).rec_len-1;i++)
{
strcpy((*p).rec[i].date,(*p).rec[i+1].date);
strcpy((*p).rec[i].operate,(*p).rec[i+1].operate);
(*p).rec[i].num=(*p).rec[i+1].num;
}
(*p).rec_len--;
returnok;
}
}
ec_len;i++)
{printf("%s",(*p).rec[i].date);
printf("%s",(*p).rec[i].operate);
printf("%d",(*p).rec[i].num);
printf("\n");
}
}
ec_len;i++)
{
sum+=(*p).rec[i].num;
if((*p).rec[i].num>0)
sum_in+=(*p).rec[i].num;
if((*p).rec[i].num<0)
sum_out+=(*p).rec[i].num;
}
printf("总金额为:
%d\n",sum);
printf("总收入为:
%d\n",sum_in);
printf("总支出为:
%d\n",sum_out);
returnok;
}
ec_len;i++)
if((*p).rec[i].num>0)
{
sum_acc+=(*p).rec[i].num;
printf("%s",(*p).rec[i].date);
printf("%s",(*p).rec[i].operate);
printf("%d",(*p).rec[i].num);
printf("\n");
}
printf("总收入金额为:
%d\n",sum_acc);
returnok;
if(sum_acc==0)
printf("thereisnoaccount.\n");
returnnull;
}
ec[i].num<0)
{
sum_pay+=(*p).rec[i].num;
printf("%s",(*p).rec[i].date);
printf("%s",(*p).rec[i].operate);
printf("%d",(*p).rec[i].num);
printf("\n");
}
printf("总的支出为:
%d\n",sum_pay);
returnok;
if(sum_pay==0)
printf("thereisnopayout.\n");
returnnull;
}
voidmain()
{
intj=0,n=0;
intx,k,lop1,lop2;
chardata1[20];
characcou[20],cod[20];
structrecord*p0;
structrecorda;
structlist_recordb;
structlist_record*p;
=0;
p0=&a;
old_record(r);
save();
load();
printf("欢迎使用个人财政支出管理系统!
\n");
printf("------------------------------------------------------------\n");
printf("||\n");
printf("|1、登陆系统|\n");
printf("|2、退出系统|\n");
printf("||\n");
printf("------------------------------------------------------------\n");
scanf("%d",&x);
if(x==0)
printf("感谢您使用本系统,再见!
\n");
else
{
do
{
printf("请输入帐号:
");//while(j<3);
scanf("%s",accou);
if(lookup_accounts(r,accou))
{printf("请输入密码:
");//while(j<3);
scanf("%s",cod);
b=check_code(r,accou,cod);
if==0)
{do
{
b=check_code(r,accou,cod);//while(n>3)
scanf("%s",cod);
n++;
}while(n<3);
if(n=3)
printf("您的密码不正确,请退出系统,谢谢使用,再见!
\n");
break;
}
else
{
printf("---------------请选择您要进行的操作-------------------\n");
printf("||\n");//while(j<3);
printf("|2、查找记录|\n");
printf("|3、增加记录|\n");
printf("|4、删除记录|\n");
printf("|5、输出所有记录|\n");
printf("|6、输出所有收入记录|\n");
printf("|7、输出所有支出记录|\n");
printf("||\n");
printf("-----------------------------------------------------|\n");
p=&b;
print_message(p);
do
{
scanf("%d",&k);//while(k>0)
if(k==10)
printf("感谢您使用本系统,再见!
\n");
if(k==2)
{
printf("请输入您要查询的日期:
");
scanf("%s",data1);
find_record(p,data1);
}
if(k==3)
{
printf("请输入你要插入的位置:
\n");
scanf("%d",&lop1);
printf("请输入您要添加的记录:
\n");
printf("日期:
");
scanf("%s",p0->date);
printf("操作:
");
scanf("%s",p0->operate);
printf("金额:
");
scanf("%d",&(p0->num));
insert_record(p,p0,lop1);
}
if(k==4)
{
printf("请输入您要删除的记录的位置:
\n");
scanf("%d",&lop2);
del_record(p,lop2);
}
if(k==5)
{
all_print(p);
sum_num(p);
}
if(k==6)
acc_print(p);
if(k==7)
pay_print(p);
}while(k>0);
break;
}
}
j++;
}while(j<3);
printf("感谢您使用本系统,再见!
\n");
}
}
(2)量化评分表
请学生将下面成绩评定表复制到报告的最后一页(单独一页)。
程序设计工程训练成绩评定标准表
明细项目
评分等级(含系数)
评分分值
实际得分
考勤
A
(1)
B()
C
D
10
工程项目规范
A
(1)
B()
C
D
10
工程训练报告
A
(1)
B()
C
D
30
设计作品质量
A
(1)
B()
C
D
45
材料收集情况
A
(1)
B()
C
D
5
综合评分
优
90-100
良
80-89
中
70-79
合格
60-69
不合格
0-59
该生成绩为:
,指导老师(签名):
评定日期:
年月日