班费管理系统
具体功能
- 浏览所有班费收支信息
- 添加班费收支信息
- 删除班费收支信息
- 金额查询
- 事由查询
- 概率查看
代码展示
下面展示一些 内联代码片
。
#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;
}
}