#include<iostream>
#include<stdio.h>
#include<string>
#include<mysql.h>
#define Password "******" //定义密码
using namespace std;
MYSQL mysql; //定义mysql变量
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //行数据展示
//01购买函数
void MyPurchase() {
string my_type,my_name,the_sql; //初始化所需要的局部变量
float my_price;
char my_num;
int my_number;
do { //用户选择商品类别
system("cls");
cout << endl << " 1.食品 2.化妆品 3.日用品 4.饮料 " << endl;
cout << endl << " 请输入序号选择购买商品的类别:";
cin >> my_num;
switch (my_num) {
case '1':my_type = "食品";
break;
case '2':my_type = "化妆品";
break;
case '3':my_type = "日用品";
break;
case '4':my_type = "饮料";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //用户输入错误则循环操作
cout << endl << " 请输入您要购买的商品的名称:"; //用户输入商品名称
cin >> my_name;
the_sql = "select * from market.my_system where name = \'"; //编辑SQL语句
the_sql += my_name;
the_sql += "\' and type = \'";
the_sql += my_type += "\'";
mysql_query(&mysql, the_sql.c_str()); //向数据库传递SQL查询语句并获取查询结果
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (!row) { //若没有商品则输出提示语句结束购买
cout << endl << " 该记录不存在!" << endl;
}
else { //若有商品则进行购买操作
cout << endl; //输出商品信息并提示用户输入购买数量
cout << " 商品名称:\t" << row[1] << endl;
cout << " 商品类别:\t" << row[2] << endl;
cout << " 生产厂家:\t" << row[3] << endl;
cout << " 商品品牌:\t" << row[4] << endl;
cout << " 商品价格:\t" << row[5] << endl;
cout << " 剩余库存:\t" << row[6] << endl << endl;
cout << " 请输入购买的数量:";
cin >> my_number;
if (my_number > stoi(string((row[6]))) || stoi(string((row[6]))) == 0) {//若库存量不足则输出提示并结束购买
cout << endl << " 库存量不足!" << endl;
}
else { //若库存量足够则进行购买操作
my_price = stof(string(row[5]));
my_price *= my_number; //计算消费价格
cout << " 您此次购买一共花费:" << my_price << endl;
cout << endl << " 购买成功,该商品售出! " << endl;
the_sql = "update my_system set stock = "; //编辑SQL语句并传递到mysql
the_sql += to_string(stoi(string(row[6])) - my_number);
the_sql += " where name = \'";
the_sql += my_name += "\'";
mysql_query(&mysql, the_sql.c_str());
}
}
system("pause");
}
//02插入函数
void MyInsert(){
char my_num; //初始化所需要的局部变量
string value01, value02, value03, value04, value05, value06;
do { //用户选择商品类别
system("cls");
cout << endl << " 1.食品 2.化妆品 3.日用品 4.饮料 " << endl;
cout << endl << " 请输入序号选择添加商品的类别:";
cin >> my_num;
switch (my_num) {
case '1':value02 = "食品";
break;
case '2':value02 = "化妆品";
break;
case '3':value02 = "日用品";
break;
case '4':value02 = "饮料";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //如果输入错误则重新进行操作
cout << endl << " 请输入商品的名称: "; //提示用户输入添加商品信息
cin >> value01;
cout << endl << " 请输入商品的生产厂家: ";
cin >> value03;
cout << endl << " 请输入商品的品牌: ";
cin >> value04;
cout << endl << " 请输入商品的价格: ";
cin >> value05;
cout << endl << " 请输入商品的库存量: ";
cin >> value06;
string the_sql = "insert into my_system values(\"0\",\""; //编辑sql语句
the_sql += value01 += "\",\"";
the_sql += value02 += "\",\"";
the_sql += value03 += "\",\"";
the_sql += value04 += "\",\"";
the_sql += value05 += "\",\"";
the_sql += value06 += "\")";
if (mysql_query(&mysql, the_sql.c_str())) { //执行插入语句并检查是否成功
cout << mysql_error(&mysql) << endl;
}
else {
cout << endl << " 添加成功!" << endl << endl;
}
system("pause");
}
//03删除函数
void MyDelete() {
char my_num; //初始化所需要的局部变量
string my_type, my_name, the_sql;
do { //提示用户选择商品的类别
system("cls");
cout << endl << " 1.食品 2.化妆品 3.日用品 4.饮料 " << endl;
cout << endl << " 请输入序号选择商品删除的类别:";
cin >> my_num;
switch (my_num) {
case '1':my_type = "食品";
break;
case '2':my_type = "化妆品";
break;
case '3':my_type = "日用品";
break;
case '4':my_type = "饮料";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //输入错误则重新进行操作
cout << endl << " 请输入您要删除的商品的名称:"; //用户输入删除商品的名称
cin >> my_name;
the_sql = "select * from market.my_system where name = \'"; //编辑SQL语句
the_sql += my_name;
the_sql += "\' and type = \'";
the_sql += my_type += "\'";
mysql_query(&mysql, the_sql.c_str()); //传递SQL查询语句并获取结果集
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (!row) { //如果没有查询结果则输出提示并结束删除
cout << endl << " 该记录不存在!" << endl << endl;
}
else { //如果有查询结果则进行删除操作
the_sql = "delete from market.my_system where name = \'";
the_sql += my_name += "\'";
mysql_query(&mysql, the_sql.c_str());
cout << endl << " 删除成功!" << endl << endl;
}
system("pause");
}
//04修改函数
void MyUpdate() {
char my_num; //定义所需要的局部变量
string my_type,my_name,the_sql,my_value;
do { //用户选择修改的商品类别
system("cls");
cout << endl << " 1.食品 2.化妆品 3.日用品 4.饮料 " << endl;
cout << endl << " 请输入序号选择修改商品的类别:";
cin >> my_num;
switch (my_num) {
case '1':my_type = "食品";
break;
case '2':my_type = "化妆品";
break;
case '3':my_type = "日用品";
break;
case '4':my_type = "饮料";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //如果输入错误则重新进行选择
do { //用户输入商品名称并选择修改项目
system("cls");
cout << endl << " 请输入您要修改的商品的名称:";
cin >> my_name;
cout << endl << " 1.修改价格" << endl << " 2.修改库存" << endl;
cout << endl << " 请选择您要修改的项目:"; //用户选择修改的项目
cin >> my_num;
switch (my_num) {
case '1':
cout << " 请输入新价格:"; //提示用户输入价格并编辑SQL语句
the_sql = "update my_system set price = ";
cin >> my_value;
the_sql += my_value += " where name = \"";
the_sql += my_name += "\" and type = \"";
the_sql += my_type += "\"";
break;
case '2':
cout << " 请输入新库存:"; //提示用户输入库存并编辑SQL语句
the_sql = "update my_system set stock = ";
cin >> my_value;
the_sql += my_value += " where name = \"";
the_sql += my_name += "\" and type = \"";
the_sql += my_type += "\"";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0');
mysql_query(&mysql, the_sql.c_str()); //执行SQL语句
cout << endl << " 修改成功!" << endl << endl;
system("pause");
}
//05查询函数
void MySelect() {
string my_name, my_manufacturer,the_sql; //初始化所需要的局部变量
char my_num;
do { //提示用户选择查询方式
system("cls");
cout << endl << " 1.按商品类别 2.按商品名称 3.按生产厂家 " << endl;
cout << endl << " 请输入序号选择要查询的方式:";
cin >> my_num;
switch (my_num) {
case '1':
cout << endl << " 1.食品 2.化妆品 3.日用品 4.饮料 " << endl;
cout << endl << " 请输入要查询的类型:"; //提示用户选择要查询的类型
cin >> my_num;
switch (my_num) { //按不同的类型编写不同的SQL语句并执行
case '1':
mysql_query(&mysql, "select * from market.my_system where type = '食品'");
break;
case '2':
mysql_query(&mysql, "select * from market.my_system where type = '化妆品'");
break;
case '3':
mysql_query(&mysql, "select * from market.my_system where type = '日用品'");
break;
case '4':
mysql_query(&mysql, "select * from market.my_system where type = '饮料'");
break;
}
break;
case '2':
cout << endl << " 请输入要查询的名称:"; //提示用户输入查询的名称
cin >> my_name;
the_sql = "select * from market.my_system where name = '"; //编辑SQL语句并执行
the_sql += my_name += "'";
mysql_query(&mysql, the_sql.c_str());
break;
case '3':
cout << endl << " 请输入要查询的生产厂家:";
cin >> my_manufacturer;
the_sql = "select * from market.my_system where manufacturer = '"; //编辑SQL语句并执行
the_sql += my_manufacturer += "'";
mysql_query(&mysql, the_sql.c_str());
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //如果输入错误则重新输入
res = mysql_store_result(&mysql); //获取结果集
if (row = mysql_fetch_row(res)) { //如果有数据则分别输出
cout << endl << "\t商品名称\t" << "商品类别\t" << "生产厂家\t" << "商品品牌\t" << "商品价格\t" << "商品库存\t" << endl;
for (int i = 1; i <= 6; i++) {
cout << "\t" << row[i];
if (size(string(row[i])) < 8) { //为了排版整齐,若字符长度小于8则多输出一个制表位
cout << "\t";
}
}
cout << endl;
while (row = mysql_fetch_row(res)) {
for (int i = 1; i <= 6; i++) {
cout << "\t" << row[i];
if (size(string(row[i])) < 8) {
cout << "\t";
}
}
cout << endl;
}
}
else { //如果没有数据则输出提示并退出查询
cout << endl << " 该记录不存在!" << endl;
}
cout << endl;
system("pause");
}
//06统计函数
void MySort() {
char my_num; //初始化所需要的局部变量
string the_sql;
do { //提示用户选择统计的方式并编辑SQL语句
system("cls");
cout << " 1.按价格统计 2.按库存统计 3.按厂家统计" << endl;
cout << " 请选择要统计的方式:";
cin >> my_num;
switch (my_num) {
case '1':
the_sql = "select * from my_system order by price desc";
break;
case '2':
the_sql = "select * from my_system order by stock desc";
break;
case '3':
the_sql = "select * from my_system order by manufacturer desc";
break;
default:
my_num = '0';
cout << endl << " 输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num == '0'); //用户输入错误则重新输入
mysql_query(&mysql, the_sql.c_str());
res = mysql_store_result(&mysql); //获取结果集
if (row = mysql_fetch_row(res)) { //如果有数据则分别输出
cout << endl << "\t商品名称\t" << "商品类别\t" << "生产厂家\t" << "商品品牌\t" << "商品价格\t" << "商品库存\t" << endl;
for (int i = 1; i <= 6; i++) {
cout << "\t" << row[i];
if (size(string(row[i])) < 8) { //为了排版整齐,若字符长度小于8则多输出一个制表位
cout << "\t";
}
}
cout << endl;
while (row = mysql_fetch_row(res)) {
for (int i = 1; i <= 6; i++) {
cout << "\t" << row[i];
if (size(string(row[i])) < 8) {
cout << "\t";
}
}
cout << endl;
}
}
else { //如果没有数据则输出提示并退出统计
cout << endl << " 该记录不存在!" << endl;
}
system("pause");
}
//展示菜单函数
void ShowMenu() {
cout << endl << endl << endl;
cout << " &&&&&&&&&&&&&&&&&&&&********************&&&&&&&&&&&&&&&&&&&" << endl << endl;
cout << " ---------欢迎进入超市商品管理系统--------- " << endl << endl;
cout << " ********** 1.购买商品 ********** " << endl << endl;
cout << " ********** 2.添加商品 ********** " << endl << endl;
cout << " ********** 3.删除商品 ********** " << endl << endl;
cout << " ********** 4.修改商品 ********** " << endl << endl;
cout << " ********** 5.查询商品 ********** " << endl << endl;
cout << " ********** 6.统计商品 ********** " << endl << endl;
cout << " ********** 0.退出系统 ********** " << endl << endl;
cout << " &&&&&&&&&&&&&&&&&&&&********************&&&&&&&&&&&&&&&&&&&" << endl << endl;
cout << " 请选择您要进行的操作项目(0-6):";
}
//链接数据库函数
void MyConnect() {
mysql_init(&mysql); //初始化数据库
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); //设置字符编码
//连接数据库,并检查是否连接成功
if (mysql_real_connect(&mysql, "localhost", "root", "zsql1106", "market", 3306, NULL, 0) == NULL) {
printf("错误原因: %s\n", mysql_error(&mysql));
printf("连接失败!\n");
exit(-1);
}
else {
cout << endl << endl;
cout << " ------------已连接数据库------------ " << endl << endl;
}
//检查是否存在数据表,如果没有则新建数据表
int cre = mysql_query(&mysql, "create table my_system(ID int primary key auto_increment,Name char(50),Type char (50),Manufacturer char(50),Brand char(50),Price float,Stock int);");
if (cre != 0) {
if (string(mysql_error(&mysql)) == "Table 'my_system' already exists") {
cout << " ------------数据表已存在------------ " << endl << endl;
}
else {
cout << " " << mysql_error(&mysql) << endl << endl;
}
}
else {
cout << " ------------已创建数据表------------ " << endl << endl;
}
system("pause");
system("cls");
}
//管理员系统
void Management() {
char my_num;
do { //用户输入0-6选择功能
system("cls");
ShowMenu();
cin >> my_num;
switch (my_num) {
case'1':
MyPurchase();
break;
case'2':
MyInsert();
break;
case'3':
MyDelete();
break;
case'4':
MyUpdate();
break;
case'5':
MySelect();
break;
case'6':
MySort();
break;
case'0':
break;
default:
cout << "输入错误,请重新输入!" << endl;
system("pause");
}
} while (my_num != '0'); //输入0退出系统
}
//登录选择身份
void MyLogin() {
char my_num; //初始化所需要的局部变量
string my_password;
do {
system("cls");
cout << endl << endl;
cout << " 0. 路人 (退出操作系统)" << endl;
cout << " 1. 顾客 (仅能进行购买)" << endl;
cout << " 2. 管理员 (进行全部操作)" << endl << endl;
cout << " 请选择您的身份:"; //用户选择身份进入系统
cin >> my_num;
switch (my_num) {
case '1':
MyPurchase();
while (1) {
system("cls");
cout << endl << " 是否继续进行购买?" << endl;
cout << " 1. 继续购买 2. 退出" << endl;
cout << " ";
cin >> my_num;
if (my_num == '1') {
MyPurchase();
}
else if (my_num == '2') {
break;
}
}
break;
case'2':
cout << " 请输入管理员密码:";
cin >> my_password;
if (my_password == Password) {
Management();
}
else {
cout << endl << " 密码错误,请重新进行选择!" << endl;
system("pause");
}
break;
case'0':
break;
default:
my_num = 'R';
cout << endl << " 输入错误,请重新进行选择!" << endl;
system("pause");
}
} while (my_num == 'R');
cout << endl << " 欢迎下次使用本系统!" << endl;
mysql_close(&mysql); //关闭数据库
}
//程序主函数
int main() {
MyConnect(); //链接数据库
MyLogin(); //进入程序系统
return 0;
}
//I Love Munchie Zhou.
C++超市管理系统(MySQL)
最新推荐文章于 2024-01-09 12:10:22 发布