资源描述
目录
前言
1 设计项目.............................................1
2.总体设计.............................................1
2.1 流程图..........................................1
2.2 模块功能说明....................................1
2.3 主要函数之间的调用关系及各自功能................1
2.4 流程图..........................................2
3.程序运行效果截图.....................................3
3.1 主菜单..........................................3
3.2 输入账单........................................3
3.3 查看账单........................................3
3.4 查询账单........................................4
3.5 账单统计........................................4
3.6 修改账单........................................4
3.7 解决方案........................................5
4.源代码...............................................6
5.个人总结............................................13
前言
针对现在高校很多学生都进行记账的现状,采用Java和SQL SERVER2000工具,设计并开发了个人帐本管理系统,该系统能帮助用户进行日常理财。用户通过使用该系统,可以方便的进行日常的收入支出统计和查询。
该系统界面友好,功能完善,简单实用。
1 设计项目:会计记账管理系统
2 总体设计:
2.1流程图
会计记账管理系统
解决方案
统计账单
输入账单
查看账单
查询账单
修改账单
2.2模块功能说明:
1 输入功能:输入时期,科目及金额摘要。
2 查看功能:输出时间,科目及金额。
3 查询功能:通过时间查询账单的具体内容。
4 统计功能:统计总收入,总支出,平均收入,平均支出,损益。
5 修改功能:通过输入时间修改指定账单的错误信息。
6 解决方案:通过损益的判断得出解决方案。
2.3主要函数之间的调用关系及各自功能:
void input(void);
void look(void);
void search(void);
void statistic(void);
void modify(void);
void solution(void);
void menu(void);
2.3.1 在菜单界面输入1,调用函数input()实现输入账单。
2.3.2 在菜单界面输入2,调用函数look()实现账单收入,支出的高低。
2.3.3 在菜单界面输入3,调用函数search()实现通过输入时间查询账单。
2.3.4 在菜单界面输入4,调用函数statistic()实现账单总收入,总支出,平均收入,平均支出,损益。
2.3.5 在菜单界面输入5,调用函数modify()实现输入时间,修改该时间下账单的内容。
2.3.6 在菜单界面输入6,调用函数solution()实现输出本期该解决的方案。
2.3.7 在菜单界面输入7,实现程序退出。
2.4 流程图:
开始
退出
解决方案
修改账单
账单统计
显示账单
查询账单
输入账单
输入指令1~ 7
1 2 3 4 5 6
7
3 程序运行效果截图
3.1主菜单
3.2输入账单
3.3查看账单
3.4查询账单
3.5账单统计
3.6修改账单
3.7解决方案
4 源代码:
#include<stdio.h>
#include<string.h>
#include<process.h>
#include<conio.h>
#define N 150
int n;
typedef struct account
{
char date[20];
char summary[30];
char subject[30];
float borrow;
float loan;
}STU;
STU stu[N];
void input(void);
void look(void);
void search(void);
void statistic(void);
void modify(void);
void solution(void);
void menu(void);
void main()
{
int mulu=0;
menu();
do{mulu=1; switch(getch())
{
case '1':input();break; /*输入账单*/
case '2':look();break; /*查看账单*/
case '3':search();break; /*查询账单*/
case '4':statistic();break; /*统计账单*/
case '5':modify();break; /*修改账单*/
case '6':solution();break; /*解决方案*/
case '7':exit(0); /*退出程序*/
default:printf("您输入的数字有误");
}
printf("请按下任意键返回主菜单\n");
getch();
menu();
}while(mulu==1);
}
void menu(void)
{
system("cls");
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("********************************************************\n");
printf("请根据目录选择需要执行的内容\n");
}
/*输入账单的信息*/
void input(void)
{
int i;
system("cls");
printf("请输入账单的数量:\n");
scanf("%d",&n);
printf("若无摘要,填'无';若无借\\贷金额填'0'\n");
printf("输入日期时请按照xxxx-xx-xx(年-月-日)的形式\n");
for(i=0;i<n;i++)
{
printf("输入账单%d的时期 摘要 科目 借方金额 贷方金额:\n",i+1);
scanf("%s%s%s%f%f",stu[i].date,stu[i].summary,stu[i].subject,&stu[i].borrow,&stu[i].loan);
}
printf("输入成功\n");
}
/*查看账单借贷金额的大小,对账单进行排序*/
void look(void)
{
int i,j,k;
STU t;
system("cls");
/*通过借方金额排比顺序*/
for(i=0;i<n-1;i++)
{
for(k=i,j=i+1;j<n;j++)
if(stu[j].borrow>stu[k].borrow) k=j;
if(k!=j) {t=stu[k];stu[k]=stu[i];stu[i]=t;}
}
printf("比较借方金额\n");
printf("名次\t时期\t\t科目\t\t借方金额\n");
for(i=0;i<n;i++)
{printf("%d\t%s\t%s\t\t%f",i+1,stu[i].date,stu[i].subject,stu[i].borrow);
printf("\n");}
/*通过贷方金额排比顺序*/
for(i=0;i<n-1;i++)
{
for(k=i,j=i+1;j<n;j++)
if(stu[j].loan>stu[k].loan) k=j;
if(k!=j) {t=stu[k];stu[k]=stu[i];stu[i]=t;}
}
printf("比较贷方金额\n");
printf("名次\t时期\t\t科目\t\t贷方金额\n");
for(i=0;i<n;i++)
{printf("%d\t%s\t%s\t\t%f",i+1,stu[i].date,stu[i].subject,stu[i].loan);
printf("\n");}
}
/*通过输入日期查找账单*/
void search(void)
{
char a[20];
int i;
system("cls");
printf("请输入需要查询账单的时期,提示;输入日期时请按照xxxx-xx-xx(年-月-日)的形式\n");
scanf("%s",a);
for(i=0;i<n;i++)
{ if(strcmp(a,stu[i].date)==0)
{ printf("时期\t\t摘要\t科目\t\t借方金额\t\t贷方金额\n");
printf("%s\t%s\t%s\t\t%f\t%f",stu[i].date,stu[i].summary,stu[i].subject,stu[i].borrow,stu[i].loan);
printf("\n");
break;
}
else
printf("未找到该时期下的账单\n");
}
}
/*统计总收入,总支出,平均收入,平均支出,损益*/
void statistic(void)
{
int i;
float sum1=0,sum2=0,aver1=0,aver2=0,benefit=0;
system("cls");
for(i=0;i<n;i++)
{
sum1+=stu[i].borrow;
sum2+=stu[i].loan;
}
benefit=sum1-sum2;
aver1=sum1/n;
aver2=sum2/n;
printf("总收入:%f\n总支出:%f\n平均收入:%f\n平均支出:%f\n损益:%f\n",sum1,sum2,aver1,aver2,benefit);
}
/*修改账单*/
void modify(void)
{
char a[20];
int i;
system("cls");
printf("输入要修改账单的日期,提示;输入日期时请按照xxxx-xx-xx(年-月-日)的形式\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].date)==0)
{
printf("时期\t摘要\t科目\t借方金额\t贷方金额\n");
printf("%s\t%s\t%s\t\t%f\t%f",stu[i].date,stu[i].summary,stu[i].subject,stu[i].borrow,stu[i].loan);
printf("\n");
printf("请重新输入日期 摘要 科目 借方金额 贷方金额");
printf("\n");
scanf("%s%s%s%f%f",stu[i].date,stu[i].summary,stu[i].subject,&stu[i].borrow,&stu[i].loan);
printf("已经修改成功\n");
}
else
printf("未找到该时期下的账单\n");
}
}
/*解决方案*/
void solution(void)
{
int i;
float sum1=0,sum2=0,benefit=0;
system("cls");
for(i=0;i<n;i++)
{
sum1+=stu[i].borrow;
sum2+=stu[i].loan;
}
benefit=sum1-sum2;
if(benefit>0) printf("分析本期盈利的原因,并坚持此营销战略,使盈利更大化。\n");
if(benefit==0) printf("分析本期收入的情况,并从中选取好的策略保留,分析本期支出的情况,从中找出支出过多的原因,总结出更好的营销方法,获取更多利润。\n");
if(benefit<0) printf("改变营销方案,增加或减少相应的营销市场,尝试新的保守的策略,来改变以后损益。\n");
}
5 个人总结
整个程式运用了书上的知识,以及一些没学到过的内容,通过for循环,循环输入会计账户,时间,摘要,科目类型,借贷金额。在借贷金额排序中运用选择法,还有不足之处。
12
展开阅读全文