#include#include #include #include #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("错误原因: %sn", 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.



