标签:algorithm return col algo space name delete close arch
程设课的一个小玩具。
1 /** 2 * Copyright 2017 Neopolitan 3 */ 4 5 #include <cstdio> 6 #include <algorithm> 7 8 using namespace std; 9 10 #define SIZE 100 11 #define CASH sizeof(cash) 12 13 struct cash{ 14 int date; 15 int entry_or_expenditure; 16 }; 17 18 cash list[SIZE]; 19 int tail; 20 21 bool cmp(cash a, cash b){ 22 return a.date < b.date; 23 } 24 25 void cash_insert(){ 26 if (tail >= SIZE){ 27 printf("Failed to insert. The storage is full.\n"); 28 return; 29 } 30 printf("Date:\n"); 31 scanf("%d", &list[tail].date); 32 printf("Entry(+) or Expenditure(-):\n"); 33 scanf("%d", &list[tail].entry_or_expenditure); 34 tail += 1; 35 sort(list, list + tail, cmp); 36 printf("Successfully inserted.\n"); 37 } 38 39 void cash_search(int id){ 40 if (id >= tail){ 41 printf("Not found.\n"); 42 return; 43 } 44 int balance = 0; 45 printf("ID: %d\n", id); 46 printf("Date: %08d\n", list[id].date); 47 printf("Entry(+) or Expenditure(-): %d\n", list[id].entry_or_expenditure); 48 for (int i = 0; i <= id; i++) 49 balance += list[i].entry_or_expenditure; 50 printf("Balance: %d\n", balance); 51 } 52 53 void cash_delete(int id){ 54 if (id >= tail){ 55 printf("Not found.\n"); 56 return; 57 } 58 tail -= 1; 59 for (int i = id; i < tail; i++){ 60 list[i].date = list[i + 1].date; 61 list[i].entry_or_expenditure = list[i + 1].entry_or_expenditure; 62 } 63 printf("Successfully deleted.\n"); 64 } 65 66 void cash_change(int id){ 67 if (id >= tail){ 68 printf("Not found.\n"); 69 return; 70 } 71 printf("Date:\n"); 72 scanf("%d", &list[id].date); 73 printf("Entry(+) or Expenditure(-):\n"); 74 scanf("%d", &list[id].entry_or_expenditure); 75 sort(list, list + tail, cmp); 76 printf("Successfully changed.\n"); 77 } 78 79 void cash_print(){ 80 for (int i = 0; i < tail; i++) 81 cash_search(i); 82 } 83 84 int main(){ 85 int i = 0; 86 cash file_input; 87 FILE *fp = fopen("cashbox.neo", "ab+"); 88 if (fp == nullptr){ 89 printf("Failed to open the file."); 90 exit(0); 91 } 92 while (fread(&list[i], CASH, 1, fp) != 0) 93 i += 1; 94 sort(list, list + i, cmp); 95 tail = i; 96 int input, id; 97 while (printf("1: Insert; 2:Search; 3:Delete; 4:Change; 5:Print; 0:Exit\n"), scanf("%d", &input), input != 0){ 98 switch (input){ 99 case 1: 100 cash_insert(); 101 break; 102 case 2: 103 printf("ID:\n"); 104 scanf("%d", &id); 105 cash_search(id); 106 break; 107 case 3: 108 printf("ID:\n"); 109 scanf("%d", &id); 110 cash_delete(id); 111 break; 112 case 4: 113 printf("ID:\n"); 114 scanf("%d", &id); 115 cash_change(id); 116 break; 117 case 5: 118 cash_print(); 119 break; 120 default: 121 printf("Input error."); 122 break; 123 } 124 } 125 if (fclose(fp)){ 126 printf("Failed to close the file."); 127 exit(0); 128 } 129 fp = fopen("cashbox.neo", "wb+"); 130 fwrite(list, CASH, tail, fp); 131 if (fclose(fp)){ 132 printf("Failed to close the file."); 133 exit(0); 134 } 135 return 0; 136 }
标签:algorithm return col algo space name delete close arch
原文地址:http://www.cnblogs.com/neopolitan/p/7875092.html