一个问题小程序,可以处理吗?


#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.

能否帮忙解决第四行代码问题?谢谢

你的程序用到了数据库,需要安装好 mysql 数据库

#include<mysql.h> 

安装好mysql才有这个头文件
https://www.jb51.net/article/163647.htm

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/1034383
  • 这篇博客你也可以参考下:数组之间不能直接赋值,为什么?赋值有四种方法
  • 除此之外, 这篇博客: 委托构造函数详解,小白也可以看懂中的 为什么要有委托构造函数? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 避免你有多个参数表不同但是逻辑相近(或者有公共部分)的构造函数的时候,一个逻辑写好几遍造成代码重复。

    这里要更好的理解,需要将一个故事

    如图1, 班主任要求A、B、C三位同学完成将各自资料送交办公室任务.(C++中初始化成员) ,虽然三位同学手中的资料不同(各成员列表), 但是需要完成的操作是相同的(初始化), 都是送往办公室。按照C++98的做法, 则需要A、B、C三位同学各自重复相同操作。这显示是不必要的. 对于C++11, 完全可以将这个工作委托给一个同学(充当目标构造函数, 后面会专门将到)去间接完成, 这样便省去了大量的重复性劳动。

    在这里插入图片描述

    委托构造函数也是构造函数, 因此, 构造函数的特性都适合委托构造函数, 比如: 没有返回值, 可以有一个或多个参数, 有函数体等。委托构造函数也有一个成员初始值列表和函数体。 在委托构造函数内, 成员初始值列表的唯一入口便是类名本身。然后紧接着是以圆括号围起来的参数列表, 这些参数列表必须与类中的另外一个构造函数相匹配。

  • 您还可以看一下 李志辉老师的微信小程序开发从入门课程课程中的 对批量上传函数进行模块封装?小节, 巩固相关知识点