📄 printinv.cpp.html
字号:
<html>
<head>
<title>printinv.cpp</title>
</head>
<body>
<pre> 1 #include <iostream>
2 #include <iomanip>
3
4 #include <string>
5 #include <mysql.h>
6
7 using namespace std;
8
9 #include "sutil.h"
10
11 <font color='#0000cc'>/**
12 Prints a customer with a given customer number.
13 @param connection the database connection
14 @param custnum the customer number
15 */</font>
16 void print_customer(MYSQL* connection, string custnum)
17 {
18 string query = "SELECT Name, Address, City, State, Zip "
19 "FROM Customer WHERE Customer_Number = '" + custnum + "'";
20 if (mysql_query(connection, query.c_str()) != 0)
21 {
22 cout << "Error: " << mysql_error(connection) << "\n";
23 return;
24 }
25 MYSQL_RES* result = mysql_store_result(connection);
26 if (result == NULL)
27 {
28 cout << "Error: " << mysql_error(connection) << "\n";
29 return;
30 }
31 int rows = mysql_num_rows(result);
32 if (rows == 0)
33 {
34 cout << "Customer not found.\n";
35 return;
36 }
37
38 MYSQL_ROW row = mysql_fetch_row(result);
39 string name = row[0];
40 string street = row[1];
41 string city = row[2];
42 string state = row[3];
43 string zip = row[4];
44 mysql_free_result(result);
45
46 cout << name << "\n" << street << "\n"
47 << city << ", " << state << " " << zip << "\n";
48 }
49
50 <font color='#0000cc'>/**
51 Prints all items of an invoice
52 @param connection the database connection
53 @param invnum the invoice number
54 */</font>
55 void print_items(MYSQL* connection, string invnum)
56 {
57 string query = "SELECT Item.Quantity, Product.Description, "
58 "Product.Unit_Price FROM Item, Product WHERE Item.Invoice_Number = '"
59 + invnum + "'AND Item.Product_Code = Product.Product_Code";
60 if (mysql_query(connection, query.c_str()) != 0)
61 {
62 cout << "Error: " << mysql_error(connection) << "\n";
63 return;
64 }
65 MYSQL_RES* result = mysql_store_result(connection);
66 if (result == NULL)
67 {
68 cout << "Error: " << mysql_error(connection) << "\n";
69 return;
70 }
71 int rows = mysql_num_rows(result);
72
73 const int COLUMN_WIDTH = 30;
74
75 cout <<
76 "\n\nDescription Price Qty Total\n";
77
78 for (int r = 1; r <= rows; r++)
79 {
80 MYSQL_ROW row = mysql_fetch_row(result);
81 int quantity = string_to_int(row[0]);
82 string description = row[1];
83 double price = string_to_double(row[2]);
84
85 cout << description;
86
87 <font color='#0000cc'>// Pad with spaces to fill column</font>
88
89 int pad = COLUMN_WIDTH - description.length();
90 for (int i = 1; i <= pad; i++)
91 cout << " ";
92
93 cout << price
94 << " " << quantity
95 << " " << price * quantity << "\n";
96 }
97
98 mysql_free_result(result);
99 }
100
101 <font color='#0000cc'>/**
102 Gets the amount due on all items of an invoice.
103 @param connection the database connection
104 @param invnum the invoice number
105 */</font>
106 double get_amount_due(MYSQL* connection, string invnum)
107 {
108 string query = "SELECT SUM(Item.Quantity * Product.Unit_Price) "
109 "FROM Item, Product WHERE Item.Invoice_Number = '"
110 + invnum + "' AND Item.Product_Code = Product.Product_Code";
111 if (mysql_query(connection, query.c_str()) != 0)
112 {
113 cout << "Error: " << mysql_error(connection) << "\n";
114 return 0;
115 }
116 MYSQL_RES* result = mysql_store_result(connection);
117 if (result == NULL)
118 {
119 cout << "Error: " << mysql_error(connection) << "\n";
120 return 0;
121 }
122 int rows = mysql_num_rows(result);
123 if (rows == 0) return 0;
124 MYSQL_ROW row = mysql_fetch_row(result);
125 double amount_due = string_to_double(row[0]);
126 mysql_free_result(result);
127 return amount_due;
128 }
129
130 <font color='#0000cc'>/**
131 Prints an invoice.
132 @param connection the database connection
133 @param invnum the invoice number
134 */</font>
135 void print_invoice(MYSQL* connection, string invnum)
136 {
137 string query = "SELECT Customer_Number, Payment FROM Invoice "
138 "WHERE Invoice_Number = '" + invnum + "'";
139 if (mysql_query(connection, query.c_str()) != 0)
140 {
141 cout << "Error: " << mysql_error(connection) << "\n";
142 return;
143 }
144 MYSQL_RES* result = mysql_store_result(connection);
145 if (result == NULL)
146 {
147 cout << "Error: " << mysql_error(connection) << "\n";
148 return;
149 }
150 int rows = mysql_num_rows(result);
151 if (rows == 0)
152 {
153 cout << "Invoice not found.\n";
154 return;
155 }
156
157 MYSQL_ROW row = mysql_fetch_row(result);
158 string custnum = row[0];
159 double payment = string_to_double(row[1]);
160 mysql_free_result(result);
161
162 cout << " I N V O I C E\n\n";
163
164 print_customer(connection, custnum);
165 print_items(connection, invnum);
166
167 double amount_due = get_amount_due(connection, invnum);
168
169 cout << "\nAMOUNT DUE: $" << amount_due - payment << "\n";
170 }
171
172 int main()
173 {
174 MYSQL* connection = mysql_init(NULL);
175
176 if(mysql_real_connect(connection, NULL, NULL, NULL,
177 "bigcpp", 0, NULL, 0) == NULL)
178 {
179 cout << "Error: " << mysql_error(connection) << "\n";
180 return 1;
181 }
182
183 cout << "Enter invoice number: ";
184 string invnum;
185
186 getline(cin, invnum);
187 print_invoice(connection, invnum);
188
189 mysql_close(connection);
190 return 0;
191 }</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -