C语言课程设计班级财务管理.docx
《C语言课程设计班级财务管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计班级财务管理.docx(35页珍藏版)》请在冰豆网上搜索。
C语言课程设计班级财务管理
C语言课程设计论文
学生姓名:
金灿
学生学号:
1310321109
所在班级:
软件一班
任课教师:
熊英
班级财务管理系统
【设计目的】
设计一个班级财务管理系统,该程序具有以下功能:
(1)用户登录:
输入用户名和密码,并判断是管理员还是普通成员,管理员和普通成员具有不同的功能选择界面。
(2)录入信息:
各项财务信息(包括用途、收入、支出、收入(或支出)时间、总计、使用人等。
)。
(3)修改班级成员信息。
(4)删除班级成员信息。
(5)查询班级财务状况。
(6)统计班级财务情况:
班级每月共收入、支出各多少,整个学期共收入、支出多少。
(7)分类统计:
根据用途对支出进行统计排序输出
【设计思路】
根据要求,班级财务数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
【总体设计】
图1系统功能模块图
【详细设计】
1.主函数
主函数设计要求简洁,只提供部分提示语和函数的调用
【程序】
图2.主函数流程图
附录:
源代码
#include
#include
#include
#include
typedefstructincome_info
{intnumber;
doubleincome;
intmonth;
intday;
intyear;
charname[50];
structincome_info*next;
}IncomeLink,*Pointer1;
typedefstructoutput_info
{intnumber;
doubleoutput;
intmonth;
intday;
intyear;
intuse;
charname[50];
structoutput_info*next;
}OutputLink,*Pointer2;
intSelect(void);//收入和支出管理选择函数
voidInsert1(Pointer1*Head1);
voidInsert2(Pointer2*Head2);
voidSearch1(Pointer1Head1);
voidSearch2(Pointer2Head2);
voidUpdate1(Pointer1Head1);
voidUpdate2(Pointer2Head2);
voidDelete1(Pointer1*Head1);
voidDelete2(Pointer2*Head2);
voidShow1(Pointer1Head1);
voidShow2(Pointer2Head2);
voidCount1(Pointer1Head1);
voidCount2(Pointer2Head2);
intn,k;
intmain()
{voidprintf_message1();
voidmenu();
charm[7];charM[7];charnum[15];
inti,j;
longsum;
Pointer1Head1=NULL;
Pointer2Head2=NULL;
printf("★*********************欢迎使用班级财务管理系统*******************★\n");
printf("请输入你的帐号(即你的学号):
");
gets(num);
for(i=4;i<10;i++)
m[i-4]=num[i];
m[6]='\0';
for(i=0;i<10;i++)
num[i]=num[i]-48;
sum=num[0]*1000000000+num[1]*100000000+num[2]*10000000+num[4]*100000+num[5]*10000+num[6]*1000+num[7]*100+num[8]*10+num[9];
if(sum>=1310321101&&sum<=1310321136)
{
printf("请输入密码(密码为学号的后六位}:
");
gets(M);
if(strcmp(m,M)==0)
{printf("登陆成功!
!
\n");
printf("正为你转接,请稍候。
。
\n");
Sleep(1000);
if(sum==1310321109||sum==1310321108||sum==1310321107||sum==1310321127||sum==1310321132){printf("★**************************************************************************★\n");
printf("★*********************欢迎使用班级财务管理系统(管理员版)*******************★\n");
printf("★**************************************************************************★\n\n\n");
Sleep(1000);
system("cls");
do
{
printf_message1();
scanf("%d",&j);
switch(j)
{
case1:
k=Select();
if(k==1)
Insert1(&Head1);
else
if(k==2)
Insert2(&Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case2:
k=Select();
if(k==1)
Search1(Head1);
else
if(k==2)
Search2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case3:
k=Select();
if(k==1)
Update1(Head1);
else
if(k==2)
Update2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case4:
k=Select();
if(k==1)
Delete1(&Head1);
else
if(k==2)
Delete2(&Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case5:
k=Select();
if(k==1)
Show1(Head1);
else
if(k==2)
Show2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case6:
k=Select();
if(k==1)
Count1(Head1);
else
if(k==2)
Count2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case0:
break;
default:
printf("错误选择!
\n");break;
}
}
while(j!
=0);
}
else
{printf("★**************************************************************************★\n");
printf("★*********************欢迎使用班级财务管理系统(普通用户版)*****************★\n");
printf("★**************************************************************************★\n\n\n");
Sleep(1000);
system("cls");
do
{
menu();
scanf("%d",&j);
switch(j)
{
case1:
k=Select();
if(k==1)
Insert1(&Head1);
else
if(k==2)
Insert2(&Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case2:
k=Select();
if(k==1)
Search1(Head1);
else
if(k==2)
Search2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case3:
k=Select();
if(k==1)
Show1(Head1);
else
if(k==2)
Show2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case4:
k=Select();
if(k==1)
Count1(Head1);
else
if(k==2)
Count2(Head2);
else
printf("错误选择!
\n\n\n\n");
break;
case0:
break;
default:
printf("错误选择!
\n\n\n\n");break;
}
}
while(j!
=0);
}
return0;
}
elseprintf("密码错误!
请查证后再来!
!
\n");
}
elseprintf("用户名不存在!
请验证后再输!
!
\a\n");
return0;
}
voidprintf_message1()
{printf("★**************************************************************★\n");
printf("*******************★欢迎使用财务管理系统★*******************\n");
printf("**************************************************************\n");
printf("\n");
printf("☆1.添加财务信息\n");
printf("☆2.查询财务信息\n");
printf("☆3.修改财务信息\n");
printf("☆4.删除财务信息\n");
printf("☆5.显示财务信息\n");
printf("☆6.统计财务信息\n");
printf("☆7.读取数据库\n");
printf("☆0.退出系统\n");
printf("\n");
printf("★**************************************************************★\n");
printf("◆请选择(0-7):
\n");
}
voidmenu()
{printf("★**************************************************************★\n");
printf("*******************★欢迎使用财务管理系统★*******************\n");
printf("**************************************************************\n");
printf("\n");
printf("☆1.添加财务信息\n");
printf("☆2.查询财务信息\n");
printf("☆3.显示财务信息\n");
printf("☆4.统计财务信息\n");
printf("☆5.保存一个新数据库\n");
printf("☆6.读取数据库\n");
printf("☆0.退出系统\n");
printf("\n");
printf("★**************************************************************★\n");
printf("◆请选择(0-6):
\n");
}
intSelect(void)//第二次选择的函数
{intw;
printf("★**************************************************************★\n");
printf("*******************★欢迎使用财务管理系统★*******************\n");
printf("**************************************************************\n");
printf("\n");
printf("☆1.收入\n");
printf("☆2.支出\n");
printf("\n");
printf("★**************************************************************★\n");
printf("◆◆◆请选择(1-2):
\n");
scanf("%d",&w);
return(w);
}
voidInsert1(Pointer1*Head1)//添加收入
{
intin_number;
Pointer1p,q,r;
printf("请输入编号:
");
scanf("%d",&in_number);
p=q=*Head1;
while(p!
=NULL)
{if(p->number==in_number)
{printf("已经有相同的编号:
");
printf("\n按任意键继续!
\n");
getchar();
return;
}
else
{q=p;p=p->next;}
}
r=(Pointer1)malloc(sizeof(IncomeLink));
r->next=NULL;
if(r==NULL)
{
printf("分配空间失败\n");
return;
}
if(q==NULL)
*Head1=r;
else
q->next=r;
r->number=in_number;
printf("请输入收入金额(单位:
元):
");
scanf("%lf",&r->income);
printf("请输入收入时间:
\n");
printf("年:
");
scanf("%d",&r->year);
printf("月:
");
scanf("%d",&r->month);
printf("日:
");
scanf("%d",&r->day);
printf("请输入您的姓名:
");
scanf("%s",r->name);
printf("\n\n\n\n");
Sleep(300);
}
voidInsert2(Pointer2*Head2)//添加支出
{
intin_number;
Pointer2p,q,r;
printf("请输入编号:
");
scanf("%d",&in_number);
p=q=*Head2;
while(p!
=NULL)
{if(p->number==in_number)
{printf("已经有相同的编号:
");
printf("\n按任意键继续!
\n");
getchar();
return;
}
else
{q=p;p=p->next;}
}
r=(Pointer2)malloc(sizeof(IncomeLink));
r->next=NULL;
if(r==NULL)
{
printf("分配空间失败\n");
return;
}
if(q==NULL)
*Head2=r;
else
q->next=r;
r->number=in_number;
printf("请输入支出金额(单位:
元):
");
scanf("%lf",&r->output);
printf("请输入支出时间:
\n");
printf("年:
");
scanf("%d",&r->year);
printf("月:
");
scanf("%d",&r->month);
printf("日:
");
scanf("%d",&r->day);
printf("请输入用途:
");
printf("<1:
吃喝(eat)2:
娱乐(amusement)3:
学习(studying)4:
其它(other)>\n");
printf("◆请选择(1-4):
\n");
scanf("%d",&r->use);
printf("请输入使用人名称:
");
scanf("%s",r->name);
Sleep(300);
}
voidSearch1(Pointer1Head1)//查询收入
{
intflag=1;
intnumber1;
Pointer1p;
printf("请输入查询的编号:
");
scanf("%d",&number1);
p=Head1;
while(p!
=NULL&&flag)
{
if(p->number==number1)
{
printf("收入金额:
%lf元\n",p->income);
printf("收入时间:
\n");
printf("年:
%d,月:
%d,日:
%d\n",p->year,p->month,p->day);
printf("姓名:
%s",p->name);
printf("\n\n\n\n");
getchar();
flag=0;
}
elsep=p->next;
}
if(flag)
{printf("没有查到\n");
printf("\n\n\n\n");
getchar();}
}
voidSearch2(Pointer2Head2)//查询支出
{
voidSearch_name(Pointer2Head2);
voidSearch_number(Pointer2Head2);
inti;
printf("请选择查询的方式:
\n");
printf("1.姓名2.编号\n");
scanf("%d",&i);
switch(i)
{
case1:
Search_name(Head2);
break;
case2:
Search_number(Head2);
break;
}
Sleep(1000);
printf("\n\n\n\n");
getchar();
}
voidSearch_name(Pointer2Head2)//支出查询函数(姓名)
{
intflag=1;
charname[50];
Pointer2p;
printf("请输入查询的姓名:
");
scanf("%s",name);
p=Head2;
while(p!
=NULL&&flag)
{
if(strcmp(p->name,name)==0)
{
printf("支出金额:
%lf元\n",p->output);
printf("支出时间:
\n");
printf("年:
%d,月:
%d,日:
%d\n",p->year,p->month,p->day);
if(p->use==1)
printf("用途:
吃喝\n");
else
if(p->use==2)
printf("用途:
娱乐\n");
else
if(p->use==3)
printf("用途:
学习\n");
else
printf("用途:
其它\n");
printf("使用人姓名:
%s",p->name);
printf("\n按任意键继续!
\n");
getchar();
flag=0;
}
elsep=p->next;
}
if(flag)
printf("没有查到\n");
}
voidSearch_number(Pointer2Head2)//支出查询函数(编号)
{
intflag=1;
longnumber;
Pointer2p;
printf("请输入查询的编号:
");
scanf("%ld",&number);
p=Head2;
while(p!
=NULL&&flag)
{
if(p->number==number)
{
printf("支出金额:
%lf元\n",p->output);
printf("支出时间:
\n");
printf("年:
%d,月:
%d,日:
%d\n",p->year,p->month,p->day);
if(p->use==1)
printf("用途:
吃喝\n");
elseif(p->use==2)
printf("用途:
娱乐\n");
els