c语言程序设计个人财务系统Word文件下载.docx
《c语言程序设计个人财务系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计个人财务系统Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
此函数的功能是计算所有收入和支出的总和,计算全部的收入的总合,计算全部输出的总合。
(11)打印输出记录的函数:
在本程序中一共有三个打印输出记录的函数,分别为all_print()、acc_print()、pay_print()这三个函数。
它们的功能依次是打印输出全部记录,打印输出输入记录,打印输出支出记录。
(12)mian():
在主函数中,可以根据用户的选择来操作系统允许用户使用的功能,也可以随时退出这个系统。
3系统设计
3.1主要结构体
个人信息
账户信息
3.2主要功能函数
old_record()//将所有用户信息存入系统
print_message()//显示用户可见的基本信息
sum_num()//计算所有收入和支出的总和
all_print()、acc_print()、pay_print()//打印输出全部记录,打印输出输入记录,打印输出支出记录
4系统调试
4.1、程序开始执行时系统的所显示的页面:
4.2、选择退出系统:
4.3、选择登陆,并且输入的帐号和密码都正确:
4.4、用户输入的帐号不正确:
4.5、用户输入的帐号正确,密码不正确:
4.6、用户进行具体操作:
5总结
本程序在编写是,主要就是基于用户的角度去分析该如何设计此程序,和编写功能模块的。
在编写程序时,所有的数据都是对结构体进行的操作,在此过程中,我发现了自己在对指针操作的时候,尤其是对指向结构体数组的指针和指向结构体的指针的操作都不够熟练。
但在编写完此程序之后,我感觉自己对语法的应用有了明显的提高。
6源程序清单
#include<
stdio.h>
string.h>
#definenull0
#definemax20
#defineok1
structrecord{
chardate[20];
charoperate[20];
intnum;
};
structlist_record{
characcount[20];
charcode[20];
charname[20];
intrec_len;
structrecordrec[max];
}r[max];
//系统原有数据,用户不可知
intold_record(structlist_recordr[])
{
inti;
for(i=0;
i<
3;
i++)
r[i].rec_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,"
strcpy(r[0].rec[3].operate,"
strcpy(r[1].rec[0].operate,"
strcpy(r[1].rec[1].operate,"
strcpy(r[1].rec[2].operate,"
strcpy(r[1].rec[3].operate,"
strcpy(r[2].rec[0].operate,"
strcpy(r[2].rec[1].operate,"
strcpy(r[2].rec[2].operate,"
strcpy(r[2].rec[3].operate,"
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;
}
//将数据写入文件
voidsave()
{FILE*fp;
if((fp=fopen("
wenjian"
"
wb"
))==null)
{printf("
cannotopenthefile.\n"
return;
}
max;
if(fwrite(&
r[i],sizeof(structlist_record),1,fp)!
=1)
printf("
filewriteerror.\n"
fclose(fp);
//文件读出
voidload()
rb"
cannotopeninfile.\n"
if(fread(&
{if(feof(fp))
(fclose(fp));
//将用户输入的帐号与系统中原有帐号比较,查找用户帐号
intlookup_accounts(structlist_recordr[],characc[])
if(strcmp(r[i].account,acc)==0)
{
帐号不存在,请重新输入!
\n"
returnnull;
//检查密码函数
structlist_recordcheck_code(structlist_recordr[],characc[],charc[])
structlist_recorda;
strcpy(a.account,"
0"
strcpy(a.code,"
a.rec_len=0;
a.rec_len;
{
strcpy(a.rec[i].date,"
strcpy(a.rec[i].operate,"
a.rec[i].num=0;
if(strcmp(r[i].code,c)==0)
returnr[i];
thecodeiswrong,pleaseinputagain!
returna;
//显示用户基本信息
voidprint_message(structlist_record*p)
{printf("
姓名:
%s\n"
p->
name);
帐号:
(*p).account);
//根据用户输入的日期,查找记录
intfind_record(structlist_record*p,chard[])
(*p).rec_len;
if(strcmp((*p).rec[i].date,d)==0)
printf("
dateoperatemoney\n"
%s"
(*p).rec[i].date);
(*p).rec[i].operate);
%d\n"
(*p).rec[i].num);
if(i==(*p).rec_len)
thedateisnotexit!
//插入函数,根据用户输入的信息,增加记录
intinsert_record(structlist_record*p,structrecord*p1,intlop)
if((lop<
1)||(lop>
((*p).rec_len+1)))
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++;
//删除记录函数
intdel_record(structlist_record*p,intlop2)
if((lop2<
1)||(lop2>
(*p).rec_len))
for(i=lop2-1;
(*p).rec_len-1;
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--;
//输出全部记录函数
voidall_print(structlist_record*p)
{inti;
dateoperatenum\n"
{printf("
%d"
//计算总的钱数
intsum_num(structlist_record*p)
intsum=0;
intsum_in=0;
intsum_out=0;
sum+=(*p).rec[i].num;
if((*p).rec[i].num>
0)
sum_in+=(*p).rec[i].num;
if((*p).rec[i].num<
sum_out+=(*p).rec[i].num;
总金额为:
%d\n"
sum);
总收入为:
sum_in);
总支出为:
sum_out);
//输出收入记录
intacc_print(structlist_record*p)
intsum_acc=0;
sum_acc+=(*p).rec[i].num;
总收入金额为:
sum_acc);
if(sum_acc==0)
thereisnoaccount.\n"
//输出支出记录
intpay_print(structlist_record*p)
{inti;
intsum_pay=0;
p->
rec_len;
sum_pay+=(*p).rec[i].num;
总的支出为:
sum_pay);
if(sum_pay==0)
thereisnopayout.\n"
voidmain()
intj=0,n=0;
intx,k,lop1,lop2;
chardata1[20];
characcou[20],cod[20];
structrecord*p0;
structrecorda;
structlist_recordb;
structlist_record*p;
b.rec_len=0;
p0=&
a;
old_record(r);
save();
load();
欢迎使用个人财政支出管理系统!
------------------------------------------------------------\n"
||\n"
|1、登陆系统|\n"
|2、退出系统|\n"
scanf("
%d"
&
x);
if(x==0)
感谢您使用本系统,再见!
do
请输入帐号:
"
//while(j<
3);
%s"
accou);
if(lookup_accounts(r,accou))
请输入密码:
cod);
b=check_code(r,accou,cod);
if(b.rec_len==0)
{do
//while(n>
3)
scanf("
n++;
}while(n<
if(n=3)
您的密码不正确,请退出系统,谢谢使用,再见!
break;
{
---------------请选择您要进行的操作-------------------\n"
|2、查找记录|\n"
|3、增加记录|\n"
|4、删除记录|\n"
|5、输出所有记录|\n"
|6、输出所有收入记录|\n"
|7、输出所有支出记录|\n"
-----------------------------------------------------|\n"
p=&
b;
print_message(p);
k);
//while(k>
if(k==10)
感谢您使用本系统,再见!
if(k==2)
{
请输入您要查询的日期:
data1);
find_record(p,data1);
}
if(k==3)
printf("
请输入你要插入的位置:
scanf("
lop1);
请输入您要添加的记录:
printf("
日期:
p0->
操作:
operate);
金额:
(p0->
num));
insert_record(p,p0,lop1);
if(k==4)
请输入您要删除的记录的位置:
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<
(2)量化评分表
请学生将下面成绩评定表复制到报告的最后一页(单独一页)。
程序设计工程训练成绩评定标准表
明细项目
评分等级(含系数)
评分分值
实际得分