C语言简易班费管理系统

班费管理系统

具体功能

  • 浏览所有班费收支信息
  • 添加班费收支信息
  • 删除班费收支信息
  • 金额查询
  • 事由查询
  • 概率查看

代码展示

下面展示一些 内联代码片

#include <stdio.h>
#include <string.h>
#include <math.h>

#define M 20

void Output(int A[], char B[][100]);                   //浏览所有班费收支信息
void Insert(int A[], char B[][100]);                   //添加班费收支信息
void Delete(int x, int A[], char B[][100]);            //删除班费收支信息
void Exact(int A[], char B[][100], int y);
void Range(int x, int y, int A[], char B[][100]);
void Matter(int A[], char B[][100], int x);
void Frequency(char B[][100]);

int main(void)      //主函数
{
	int use[M];
	char cause[M][100];
	int i, x, y, z, t = 0;
	int number, min, max;
	for (i = 0; i < M - 4; i++)
	{
		printf("|输入收支:  ");
		scanf("%d", &use[i]);
		printf("|收支事项:  ");
		scanf("%s", cause[i]);
	}
	printf("\n\n|是否浏览所有收支信息  ");
	printf("T or F?\n");
	fflush(stdin);
	getchar();
	if (getchar() == 'T')
		Output(use, cause);//浏览所有班费收支信息,以及使用事由

	printf("\n\n|***增加信息***");
	Insert(use, cause);//添加班费收支信息
	printf("\n\n|***删除信息***");
	do 
	{
		printf("\n|想删除第几项:  ");
		scanf("%d", &x);
		Delete(x, use, cause);//删除班费收支信息
		printf("\n|是否继续删除:  T or F\n");
		fflush(stdin);
		getchar();
		t++;
	} while (getchar() == 'T');
	printf("|当前收支信息为:  ");
	for (i = 0; i < M - t; i++)
	{
		printf("%d\t", use[i]);
	}
	printf("\n\n\n|选择操作: ");
	printf("1.按具体金额查找  2.按金额范围查找  3.按使用事项查找\n|输入数字:");
	scanf("%d", &number);
	switch (number)
	{
	case 1:printf("|输入具体金额:");
		scanf("%d", &y);
		Exact(use, cause, y); break;//具体金额查询
	case 2:printf("|输入金额范围:\n");
		printf("|最小值=");
		scanf("%d", &min);
		printf("|最大值=");
		scanf("%d", &max);
		Range(min, max, use, cause); break;//金额范围查询
	case 3:
		printf("\n|有以下事项:\n| 1.信息 2.活动 3.庆典 4.收入\n");
		printf("|输入数字:");
		scanf("%d", &z);
		Matter(use, cause, z); break;//使用事由查询
	default:printf("|只有这三个选项!\n");
	}
	printf("是否浏览事由频率:T or F\n");
	fflush(stdin);
	getchar();
	if (getchar() == 'T')
		Frequency(cause);//频率查看
	printf("\n\n\nEND!");
	return 0;
}

void Output(int A[], char B[][100])  //浏览所有班费收支信息函数定义
{
	int i, spend = 0, income = 0, sum;
	printf("    |*******所有收支情况*******");
	printf("\n    |");
	for (i = 0; i < M - 4; i++)
	{
		printf("\n    | 收支:%d\t", A[i]);
		if (A[i] > 0)
			income += A[i];
		else if (A[i] < 0)
			spend += A[i];
	}
	printf("\n    | 余额: %d", sum = income + spend);
	printf("\n    | 事项: ");
	for (i = 0; i < M - 4; i++)
	{
		printf(" %s ", B[i]);
	}
	printf("\n    |");
	printf("\n    |**************************\n");

}
void Insert(int A[], char B[][100])  //添加班费收支信息函数定义
{
	int i;
	for (i = 16; i < M; i++)
	{
		printf("\n|添加收支:  ");
		scanf("%d", &A[i]);
		printf("|收支事项:  ");
		scanf("%s", B[i]);
	}
}
void Delete(int x, int A[], char B[][100])  //删除班费收支信息函数定义
{
	int i;
	for (i = x - 1; i < M; i++)
	{
		A[i] = A[i + 1];
		strcpy(B[i], B[i + 1]);
	}
}
void Exact(int A[], char B[][100], int y)              //确切金额查询函数定义
{
	int i;
	for (i = 0; i < M; i++)
	{
		if (A[i] == y)
			printf("收支事项:%s", B[i]);
		else
			printf("没有该事项!");
	}
}
void Range(int x, int y, int A[], char B[][100])       //金额范围查询函数定义
{
	int i, t = 0;
	for (i = 0; i < M; i++)
	{
		if (abs(A[i]) >= x && abs(A[i]) <= y)
		{
			t++;
			printf("收支费用:%6d,", A[i]);
			printf("\nT收支事项:%s, ", B[i]);
		}
	}
	printf("\n费用在 %d - %d 之间,", x, y);
	printf("一共有 %d 次!\n", t);
}
void Matter(int A[], char B[][100], int x)            //事由查询函数查询
{
	int i, j;
	char information[2][100] = { "Print","Buyingbooks" };
	char activities[2][100] = { "Games","Race" };
	char celebration[2][100] = { "New","National" };
	char get[2][100] = { "Bonnus","Charge" };
	if (x == 1)
		for (i = 0; i < M; i++)
		{
			for (j = 0; j < 2; j++)
			{
				if (strcmp(B[i], information[j]) == 0)
					printf("|事项:%s, 收支:%d\n", B[i], A[i]);
			}
		}
	if (x == 2)
		for (i = 0; i < M; i++)
		{
			for (j = 0; j < 2; j++)
			{
				if (strcmp(B[i], activities[j]) == 0)
					printf("|事项:%s, 收支%d\n", B[i], A[i]);
			}
		}
	if (x == 3)
		for (i = 0; i < M; i++)
		{
			for (j = 0; j < 2; j++)
			{
				if (strcmp(B[i], celebration[j]) == 0)
					printf("|事项:%s, 收支%d\n", B[i], A[i]);
			}
		}
	if (x == 4)
		for (i = 0; i < M; i++)
		{
			for (j = 0; j < 2; j++)
			{
				if (strcmp(B[i], get[j]) == 0)
					printf("|事项:%s, 收支%d\n", B[i], A[i]);
			}
		}
}
void Frequency(char B[][100])     //频率查看函数定义
{
	int i, j, t = 0;
	int temp = 0;
	char A[24][100] = { "00" };
	double p = 0;
	for (i = 0; i < M; i++)
	{
		temp = 0;
		for (j = 0; j < t; j++)
		{
			if (strcmp(A[j], B[i]) == 0)
			{
				temp++;
				if (temp > 1)
					break;
			}
		}
		if (temp == 0)
		{
			strcpy(A[t], B[i]);
			t++;
		}
	}
	printf("一共有%d个事件!\n", t);
	for (i = 0; i < t; i++)
	{
		for (j = 0; j < M; j++)
		{
			if (strcmp(A[i], B[j]) == 0)
			{
				p++;
			}
		}
		printf("|事项:%s\t\t|频率:%lf\n", A[i], p / (M + 0.0));
		p = 0;
	}
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值