📄 addinv.cpp.html
字号:
<html>
<head>
<title>addinv.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 Finds a customer with a given customer number.
13 @param connection the database connection
14 @param custnum the customer number
15 @return true if a customer with the given number exists
16 */</font>
17 bool find_customer(MYSQL* connection, string custnum)
18 {
19 string query = "SELECT * FROM Customer WHERE Customer_Number = '"
20 + custnum + "'";
21 if (mysql_query(connection, query.c_str()) != 0)
22 {
23 cout << "Error: " << mysql_error(connection) << "\n";
24 return false;
25 }
26 MYSQL_RES* result = mysql_store_result(connection);
27 if (result == NULL)
28 {
29 cout << "Error: " << mysql_error(connection) << "\n";
30 return false;
31 }
32 bool r = mysql_num_rows(result) > 0;
33 mysql_free_result(result);
34 return r;
35 }
36
37 <font color='#0000cc'>/**
38 Finds a product with a given product code.
39 @param connection the database connection
40 @param prodcode the product code
41 @return true if a product with the given code exists
42 */</font>
43 bool find_product(MYSQL* connection, string prodcode)
44 {
45 string query = "SELECT * FROM Product WHERE Product_Code = '"
46 + prodcode + "'";
47 if (mysql_query(connection, query.c_str()) != 0)
48 {
49 cout << "Error: " << mysql_error(connection) << "\n";
50 return false;
51 }
52 MYSQL_RES* result = mysql_store_result(connection);
53 if (result == NULL)
54 {
55 cout << "Error: " << mysql_error(connection) << "\n";
56 return false;
57 }
58 bool r = mysql_num_rows(result) > 0;
59 mysql_free_result(result);
60 return r;
61 }
62
63 <font color='#0000cc'>/**
64 Adds an invoice to the database.
65 @param connection the database connection
66 @param custnum the customer number
67 @param payment the payment amount
68 @return the automatically assigned invoice number
69 */</font>
70 string add_invoice(MYSQL* connection, string custnum, double payment)
71 {
72 string query = "SELECT MAX(Invoice_Number) FROM Invoice";
73 if (mysql_query(connection, query.c_str()) != 0)
74 {
75 cout << "Error: " << mysql_error(connection) << "\n";
76 return "";
77 }
78 MYSQL_RES* result = mysql_store_result(connection);
79 if (result == NULL)
80 {
81 cout << "Error: " << mysql_error(connection) << "\n";
82 return "";
83 }
84 int rows = mysql_num_rows(result);
85 if (rows == 0) return "";
86 MYSQL_ROW row = mysql_fetch_row(result);
87 int max = string_to_int(row[0]);
88 mysql_free_result(result);
89
90
91 string invnum = int_to_string(max + 1);
92 string command = "INSERT INTO Invoice VALUES ('" + invnum + "', '"
93 + custnum + "', " + double_to_string(payment) + ")";
94 if (mysql_query(connection, command.c_str()) != 0)
95 {
96 cout << "Error: " << mysql_error(connection) << "\n";
97 return "";
98 }
99 return invnum;
100 }
101
102 <font color='#0000cc'>/**
103 Adds an item to the database.
104 @param connection the database connection
105 @param invnum the invoice number
106 @param prodcode the product code
107 @param quantity the quantity
108 */</font>
109 void add_item(MYSQL* connection, string invnum, string prodcode,
110 int quantity)
111 {
112 string command = "INSERT INTO Item VALUES ('" + invnum + "', '"
113 + prodcode + "', " + int_to_string(quantity) + ")";
114 if (mysql_query(connection, command.c_str()) != 0)
115 {
116 cout << "Error: " << mysql_error(connection) << "\n";
117 return;
118 }
119 }
120
121 int main()
122 {
123 MYSQL* connection = mysql_init(NULL);
124
125 if(mysql_real_connect(connection, NULL, NULL, NULL,
126 "bigcpp", 0, NULL, 0) == NULL)
127 {
128 cout << "Error: " << mysql_error(connection) << "\n";
129 return 1;
130 }
131
132 cout << "Enter customer number: ";
133 string custnum;
134 cin >> custnum;
135
136 if (!find_customer(connection, custnum))
137 {
138 cout << "Customer not found.\n";
139 mysql_close(connection);
140 return 0;
141 }
142
143 cout << "Enter payment: ";
144 double payment;
145 cin >> payment;
146
147 string invnum = add_invoice(connection, custnum, payment);
148 if (invnum == "")
149 {
150 mysql_close(connection);
151 return 0;
152 }
153
154 bool more = true;
155 while (more)
156 {
157 cout << "Enter product code, - when done: ";
158 string prodcode;
159 cin >> prodcode;
160 if (prodcode == "-") more = false;
161 else
162 {
163 if (find_product(connection, prodcode))
164 {
165 cout << "Enter quantity: ";
166 int quantity;
167 cin >> quantity;
168 add_item(connection, invnum, prodcode, quantity);
169 }
170 else cout << "Product not found.\n";
171 }
172 }
173 cout << "Added invoice " << invnum << "\n";
174 mysql_close(connection);
175 return 0;
176 }</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -