codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <iostream> #include <string> #include <fstream> using namespace std; struct Product { string ID; string Name; string Original; union { struct { float Price; int Number; }PRICE; } UNION; }; typedef struct Product PRODUCT; void fRunSubMenu(PRODUCT [], int , PRODUCT& , string ); int SubMenu(); void Save(ofstream& , PRODUCT ); void SaveList(PRODUCT [], int ); void inProduct(PRODUCT& pr) { cout << "input ID:"; getline(cin, pr.ID); cout << "\ninput Name:"; getline(cin, pr.Name); cout << "\ninput Original:"; getline(cin, pr.Original); cout << "\ninput Price:"; cin >> pr.UNION.PRICE.Price; cout << "\ninput Number:"; cin >> pr.UNION.PRICE.Number; cin.ignore(); } void inBill(PRODUCT bill[],int &N) { cout << "Input number of bill:"; cin >> N; cin.ignore(); for (int i = 0; i < N; i++) { cout << "Input Bill " << i + 1<<endl; inProduct(bill[i]); } } void outProduct(PRODUCT pr) { cout << "ID: " << pr.ID<<endl; cout << "Name: " << pr.Name << endl; cout << "Original: " << pr.Original << endl; cout << "Price: " << pr.UNION.PRICE.Price << endl; cout << "Number: " << pr.UNION.PRICE.Number << endl; cout << "Pay: " << pr.UNION.PRICE.Number * pr.UNION.PRICE.Price << endl; } void outBill(PRODUCT bill[], int N) { for (int i = 0; i < N; i++) { cout << "BILL NUMBER " << i + 1 << endl; outProduct(bill[i]); } float sum = 0; for (int i = 0; i < N; i++) { sum += bill[i].UNION.PRICE.Number * bill[i].UNION.PRICE.Price; } cout << endl; cout << "Total money: " << sum << endl; } int MainMenu() { cout << "1. Input and Save Bill." << endl; cout << "2. Update the bill." << endl; cout << "3. Exit." << endl; cout << "Select: "; return 3; } int fSelectMenu(int SelNum) { int command; do { cin >> command; cin.ignore(numeric_limits<streamsize>::max(), '\n'); } while (command<1 ||command>6); return command; } void fRunMainMenu(int command,PRODUCT bill[],int &N,PRODUCT& pr,bool &Update) { if (command == 1) { system("cls"); inBill(bill, N); system("cls"); outBill(bill, N); SaveList(bill, N); Update = true; } else if (command == 2) { if (Update == false) cout << "No Bill to update."; else { string FINDID; fRunSubMenu(bill, N, pr, FINDID); } } else if (command == 3) exit(EXIT_FAILURE); } int SubMenu() { system("cls"); cout << "======UPDATE FUNCTION======"; cout << "\n1. ID." << endl; cout << "2. Name." << endl; cout << "3. Original." << endl; cout << "4. Price." << endl; cout << "5. Number." << endl; cout << "6.Exit" << endl; cout << "Select: "; return 6; } void fRunSubMenu(PRODUCT bill[],int N,PRODUCT &pr,string FINDID) { cout << "input ID: "; getline(cin, FINDID); for (int i = 0; i < N; i++) { if (bill[i].ID == FINDID) { int COMMAND = fSelectMenu(SubMenu()); if (COMMAND == 1) { system("cls"); outBill(bill, N); cout << "\nInput ID:"; getline(cin, bill[i].ID); outBill(bill, N); SaveList(bill, N); } if (COMMAND == 2) { system("cls"); outBill(bill, N); cout << "\nInput Name:"; getline(cin, bill[i].Name); outBill(bill, N); SaveList(bill, N); } if (COMMAND == 3) { system("cls"); outBill(bill, N); cout << "\nInput Original:"; getline(cin, bill[i].Original); outBill(bill, N); SaveList(bill, N); } if (COMMAND == 4) { system("cls"); outBill(bill, N); cout << "\nInput Price:"; cin >> bill[i].UNION.PRICE.Price; outBill(bill, N); SaveList(bill, N); } if (COMMAND == 5) { system("cls"); outBill(bill, N); cout << "\nInput Number:"; cin >> bill[i].UNION.PRICE.Number; outBill(bill, N); SaveList(bill, N); } if (COMMAND == 6) { exit(EXIT_FAILURE); } } } } void Save(ofstream &fileout,PRODUCT pr) { fileout << pr.ID<<endl; fileout << pr.Name << endl; fileout << pr.Original << endl; fileout << pr.UNION.PRICE.Price << endl; fileout << pr.UNION.PRICE.Number << endl; fileout << "Pay for this product: " << pr.UNION.PRICE.Price * pr.UNION.PRICE.Number << endl; } void SaveList(PRODUCT bill[], int N) { ofstream fileout; fileout.open("LOG.TXT", ios::out); for (int i = 0; i < N; i++) { fileout << "BILL NUMBER: " << i + 1 << endl; Save(fileout, bill[i]); } float sum = 0; for (int i = 0; i < N; i++) { sum += bill[i].UNION.PRICE.Number * bill[i].UNION.PRICE.Price; } fileout << "Total money: " << sum << endl; fileout.close(); } void main() { int command, N{}; PRODUCT bill[100], Pr; bool Update=false; string FindID; do { command = fSelectMenu(MainMenu()); fRunMainMenu(command, bill, N, Pr, Update); } while (command != 3); }
Private
[
?
]
Run code
Submit