//之前写的,命名不标准,勿学此命名格式;
#include struct str { int main() { } else { printf("1.录入收入\t2.录入支出\n"); printf("请输入收入日期(****/**/**):"); } printf("输入格式错误,请重新输入!\n"); k1: } printf("请输入支出日期(****/**/**):"); } printf("%s\t%d/%d/%d\t%.2f\n", str[i].event, str[i].igid[0], str[i].igid[1], str[i].igid[2], str[i].money);//输出收入信息 printf("\n\n\n*********************支出**********************\n"); printf("%s\t%d/%d/%d\t%.2f\n", uct[i].event, uct[i].igid[0], uct[i].igid[1], uct[i].igid[2], uct[i].money);//输出支出信息 } printf("请输入要查询的日期(****/**/**):"); printf("请输入要查询的收入金额(元):"); } //支出查询 printf("请输入要查询的日期:"); printf("请输入要查询的收入金额(元):"); } void Summary() { system("cls"); } k6: } } } } } for (i = 0; i < frequency_1; i++) { } } 欢迎分享,转载请注明来源:内存溢出
#include
#include
//本系统使用了大量的system("cls");清屏; system("pause");暂停;
//本系统用到了大量的goto语句,且以k开头。
void Interface();//主界面
int Scanf_();//录入界面
void Printf_();//查看财务表界面
int Query();//查询界面
void Summary();//汇总统计
char event[40];//事件
float money;//日期
int igid[3];//金额
} str[100], uct[100];//str[100]代表收入,uct[100]代表支出
//本系统用到了大量的全局变量
int option, option_1 = 0, option_2 = 0, option_3 = 0, option_4 = 0, option_5, option_6; //储存用户输入的选项数据
int frequency = 0, frequency_1 = 0; //次数 frequency:收入的用户输入次数,frequency_1:支出的用户输入次数
int i = 0, j = 0, x = 0, igid_scanf_1, igid_scanf_2, igid_scanf_3, x1 = 0, x2 = 0;//x,x1,x2:判断条件;igid_scanf_1 ,igid_scanf_2, igid_scanf_3:用于以日期进行查询;
char event_scanf[40];//用于以事件进行查询
float money_scanf, money_m = 0, money_n = 0, money_a, money_b, money_c; //money_scanf:用于以金额进行查询;money_m=0:存储月总收入/支出金额,money_n:存储日平均金额;money_a:存储所有总收入,money_b:存储所有总支出,money_c:存储剩余金额;
while (1) {
char name[30] = {"guanliyuan123"}, name_1[30];//用户名
int password = 123456, password_1;//密码
system("cls");
printf("****************************************登录界面********************************\n");
printf("请输入用户名:");
scanf("%s", name_1);
fflush(stdin);
printf("请输入密码:");
scanf("%d", &password_1);
fflush(stdin);
//判断用户输入的账户密码是否正确
if (strcmp(name, name_1) == 0 && password == password_1) {
while (1) {
system("cls");
Interface();
//利用switch语句进行调用自定义函数
switch (option) {
//退出
case 0:
printf("退出成功!\n");
exit(0);
//录入
case 1:
Scanf_();
break;
//查看
case 2:
Printf_();
break;
//查询
case 3:
Query();
break;
//汇总统计
case 4:
Summary();
break;
//帮助
case 5:
system("cls");
printf("系统简单且见名知意,无需帮助!\n");
system("pause");
break;
//输入错误提示
default:
printf("输入错误!\n");
system("pause");
break;
}
}
//输入错误提示(登录)
system("cls");
printf("用户名或密码错误!请重新输入!\n");
system("pause");
}
}
return 0;
}
void Interface() { //主界面/选择界面
printf("*******************************************************************************\n");
printf(" 主界面 \n");
printf("0.退出\t1.录入(收入/支出)\t2.查看财务表\t3.查询(收入/支出)\t4.汇总统计\t5.帮助\n");
printf("请输入选项:");
scanf("%d", &option);
}
//录入函数
int Scanf_() {
k2:
printf("请输入选项:");
scanf("%d", &option_1);
//判断选项是否输入错误
if (option_1 > 2 || option_1 < 1) {
printf("输入错误,请重新输入!\n");
goto k2;
}
//录入收入
if (option_1 == 1) {
while (1) {
system("cls");
printf("*************************************************录入界面*******************************************\n");
printf("请输入收入来源(事件):");
scanf("%s", str[frequency].event);//让用户输入收入事件
k:
fflush(stdin);
scanf("%d/%d/%d", &str[frequency].igid[0], &str[frequency].igid[1], &str[frequency].igid[2]);//让用户输入收入日期
//判断用户输入日期格式是否正确
if (str[frequency].igid[1] > 12 || str[frequency].igid[1] < 1) {
x2 = 1;
}
if (str[frequency].igid[2] > 31 || str[frequency].igid[2] < 1) {
x2 = 1;
if (x2 == 1) {
x2 = 0;
goto k;//goto语句 k
}
fflush(stdin);
printf("请输入收入金额(元):");
scanf("%f", &str[frequency].money);//让用户输入收入金额
fflush(stdin);
money_a += str[frequency].money; //算总金额
frequency += 1;// frequency+1
//让用户选择是否继续录入
printf("是否继续录入(1.继续/2.退出):");
scanf("%d", &option_2);
fflush(stdin);
//直接退出scanf_函数
if (option_2 == 2) {
return 0;
}
//提示用户输入选项错误
if (option_2 > 2 || option_2 < 1) {
printf("输入错误,请重新输入!\n");
goto k1;//goto语句 k1
system("pause");
}
}
//支出录入
if (option_1 == 2) {
while (1) {
system("cls");
printf("*************************************************录入界面*******************************************\n");
printf("请输入支出去向(事件):");
scanf("%s", uct[frequency_1].event);//让用户输入支出事件
k3:
fflush(stdin);
scanf("%d/%d/%d", &uct[frequency_1].igid[0], &uct[frequency_1].igid[1], &uct[frequency_1].igid[2]);//让用户输入支出日期
//判断用户输入的日期格式是否正确
if (uct[frequency_1].igid[1] > 12 || uct[frequency_1].igid[1] < 1) {
x2 = 1;
}
if (uct[frequency_1].igid[2] > 31 || uct[frequency_1].igid[2] < 1) {
x2 = 1;
}
if (x2 == 1) {
printf("输入格式错误,请重新输入!\n");
x2 = 0;
goto k3;//goto语句 k3
fflush(stdin);
printf("请输入支出金额(元):");
scanf("%f", &uct[frequency_1].money);//让用户输入支出金额
fflush(stdin);
money_b += uct[frequency_1].money;
frequency_1 += 1;
//让用户选择是否继续录入
k8:
printf("是否继续录入(1.继续/2.退出):");
scanf("%d", &option_2);
fflush(stdin);
//直接退出scanf_自定义函数
if (option_2 == 2) {
return 0;
}
//提示用户错误
if (option_2 > 2 || option_2 < 1) {
printf("输入错误,请重新输入!\n");
goto k8;//goto语句 k8
system("pause");
}
}
system("pause");
}
return 0;
}
//查看财务表
void Printf_() {
system("cls");
money_c = money_a - money_b; //算出剩余金额
printf("***************************************查看财务表界面********************************************\n\n\n");
printf("*********************收入**********************\n");
printf("事件\t 日期\t 金额(元)\n");
//判断用户是否输入收入信息
if (frequency == 0) {
printf("无收入记录\n");
} else {
for (i = 0; i < frequency; i++) {
}
}
printf("事件\t 日期\t 金额(元)\n");
//判断用户是否输入支出信息
if (frequency_1 == 0) {
printf("无支出记录\n");
} else {
for (i = 0; i < frequency_1; i++) {
}
}
printf("\n\n总收入:%.2f(元)\n总支出:%.2f(元)\n剩余金额:%.2f(元)\n", money_a, money_b, money_c); //输出总金额,总支出,剩余金额
system("pause");
//查询
int Query() {
system("cls");
printf("************************************查询界面**********************************\n");
printf("1.收入查询\t2.支出查询\n");
k5:
printf("请选择选项:");
scanf("%d", &option_3);//进行选择
//收入查询
if (option_3 == 1) {
system("cls");
printf("1.事件查询\t2.日期查询\t3.收入金额(元)查询\n");
k4:
printf("请选择选项:");
scanf("%d", &option_4);//进行选择
//事件查询
if (option_4 == 1) {
system("cls");
printf("请输入要查询的事件:");
scanf("%s", event_scanf);
for (i = 0; i < frequency; i++) {
//遍历数据集寻找与用户想要查询的事件的相同数据
if (strcmp(str[i].event, event_scanf) == 0) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("*****************收入信息*******************\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", str[i].event, str[i].igid[0], str[i].igid[1], str[i].igid[2], str[i].money);//输出对应的信息
x = 0;
system("pause");
return 0;
}
//提示错误
if (x == 0) {
system("cls");
printf("查无此事件!");
}
}
//日期查询
if (option_4 == 2) {
system("cls");
scanf("%d/%d/%d", &igid_scanf_1, &igid_scanf_2, &igid_scanf_3);
for (i = 0; i < frequency; i++) {
//遍历数据集寻找与用户想要查询的日期的相同数据
if (str[i].igid[0] == igid_scanf_1 && str[i].igid[1] == igid_scanf_2 && str[i].igid[2] == igid_scanf_3) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("********收入信息**********\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", str[i].event, str[i].igid[0], str[i].igid[1], str[i].igid[2], str[i].money);//输出对应的信息
x = 0;
system("pause");
return 0;
}
//提示错误
if (x == 0) {
system("cls");
printf("查无此日期!");
}
}
//金额查询
if (option_4 == 3) {
system("cls");
scanf("%f", &money_scanf);
for (i = 0; i < frequency; i++) {
//遍历数据集寻找与用户想要查询的金额的相同数据
if (str[i].money == money_scanf) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("********收入信息**********\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", str[i].event, str[i].igid[0], str[i].igid[1], str[i].igid[2], str[i].money);//输出对应的信息
x = 0;
system("pause");
return 0;
}
//提示错误
if (x == 0) {
system("cls");
printf("查无此收入金额(元)!");
}
}
//提示错误
if (option_4 > 3 || option_4 < 1) {
printf("输入错误,请重新输入!\n");
goto k4;//goto语句 k4
}
if (option_3 == 2) {
system("cls");
printf("1.事件查询\t2.日期查询\t3.收入金额(元)查询\n");
k7:
printf("请选择选项:");
scanf("%d", &option_4);
//事件查询
if (option_4 == 1) {
system("cls");
printf("请输入要查询的事件:");
scanf("%s", event_scanf);
for (i = 0; i < frequency_1; i++) {
//遍历数据集寻找与用户想要查询的事件的相同数据
if (strcmp(uct[i].event, event_scanf) == 0) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("*****************支出信息*******************\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", uct[i].event, uct[i].igid[0], uct[i].igid[1], uct[i].igid[2], uct[i].money);//输出对应的信息
x = 0;
system("pause");
return 0;
}
if (x == 0) {
system("cls");
printf("查无此事件!");
}
}
//日期查询
if (option_4 == 2) {
system("cls");
scanf("%d/%d/%d", &igid_scanf_1, &igid_scanf_2, &igid_scanf_3);
for (i = 0; i < frequency_1; i++) {
//遍历数据集寻找与用户想要查询的日期的相同数据
if (uct[i].igid[0] == igid_scanf_1 && uct[i].igid[1] == igid_scanf_2 && uct[i].igid[2] == igid_scanf_3) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("********支出信息**********\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", uct[i].event, uct[i].igid[0], uct[i].igid[1], uct[i].igid[2], uct[i].money);//输出对应的信息
x = 0;
system("pause");
return 0;
}
//提示错误
if (x == 0) {
system("cls");
printf("查无此日期!");
}
}
//金额查询
if (option_4 == 3) {
system("cls");
scanf("%f", &money_scanf);
for (i = 0; i < frequency_1; i++) {
//遍历数据集寻找与用户想要查询的金额的相同数据
if (uct[i].money == money_scanf) {
x = 1;
break;
}
}
if (x == 1) {
system("cls");
printf("********支出信息**********\n");
printf("事件\t\t日期\t\t金额(元)\n");
printf("%s\t%d/%d/%d\t%.2f\n", uct[i].event, uct[i].igid[0], uct[i].igid[1], uct[i].igid[2], uct[i].money);//输出对应信息
x = 0;
system("pause");
return 0;
}
//提示未找到
if (x == 0) {
system("cls");
printf("查无此收入金额(元)!");
}
}
//提示错误
if (option_4 > 3 || option_4 < 1) {
printf("输入错误,请重新输入!\n");
goto k7;//goto语句 k7
}
//提示错误
if (option_3 > 2 || option_3 < 1) {
printf("输入错误,请重新输入!\n");
goto k5;//goto语句 k5
}
printf("\n");
system("pause");
return 0;
}
struct str t;//struct类型 t
printf("1.收入信息\t2.支出信息\n");
k9:
printf("\n请输入选项:");
scanf("%d", &option_5);//进行选择
//提示错误
if (option_5 > 2 || option_5 < 1) {
printf("输入错误,请重新输入!");
goto k9;//goto语句 k9
//收入信息
if (option_5 == 1) {
printf("请输入查看几月收入账物信息:");
scanf("%d", &option_6);
//提示错误
if (option_6 > 12 || option_6 < 1) {
printf("无此月份,请重新输入\n");
goto k6;//goto语句 k6
} else {
//利用冒泡排序法,排str[i].igid[2]大小
for (i = 0; i < frequency - 1 ; i++) {
for (j = 0; j < frequency - 1 - i ; j++) {
if (str[j].igid[2] > str[j + 1].igid[2]) {
t = str[j];
str[j] = str[j + 1];
str[j + 1] = t;
}
system("cls");
printf("事件\t日期\t金额(元)\n");
for (i = 0; i < frequency; i++) {
if (str[i].igid[1] == option_6) {
printf("%s\t%d/%d/%d\t%.2f\n", str[i].event, str[i].igid[0], str[i].igid[1], str[i].igid[2], str[i].money);//输出对应信息
money_m += str[i].money; //计算月总金额
x1 = 1;
}
//判断用户是否输入信息
}
if (frequency == 0) {
x1 = 0;
}
if (money_m > 0) {
money_n = money_m / 30.00;
printf("\n\n\n%d月总支出:%.2f(元)\n%d月每天平均支出%.2f(元)\n", option_6, money_m, option_6, money_n); //输出对应信息
money_m = 0;
money_n = 0;
}
}
//支出统计
if (option_5 == 2) {
k10:
printf("请输入查看几月支出账物信息:");
scanf("%d", &option_6);
{
//判断用户输入月份范围是否在1~12范围内
if (option_6 > 12 || option_6 < 1) {
printf("无此月份,请重新输入!\n");
goto k10;
} else {
//利用冒泡排序法,排uct[i].igid[2]大小
for (i = 0; i < frequency_1 - 1; i++) {
for (j = 0; j < frequency_1 - 1 - i; j++) {
if (uct[j].igid[2] > uct[j + 1].igid[2]) {
t = uct[j];
uct[j] = uct[j + 1];
uct[j + 1] = t;
}
printf("事件\t日期\t金额(元)\n");
if (uct[i].igid[1] == option_6) {
printf("%s\t%d/%d/%d\t%.2f\n", uct[i].event, uct[i].igid[0], uct[i].igid[1], uct[i].igid[2], uct[i].money);//输出对应信息
money_m += uct[i].money;
x = 1;
}
if (money_m > 0) {
money_n = money_m / 30.00;
printf("\n\n\n%d月总支出:%.2f(元)\n%d月每天平均支出%.2f(元)\n", option_6, money_m, option_6, money_n); //输出对应信息
money_m = 0;
money_n = 0;
x1=1;
}
if (frequency_1 == 0) {
x1=0;
}
}
}
//提示错误
if (x1 == 0) {
printf("无此月份信息!");
}
printf("\n");
system("pause");
}
评论列表(0条)