C++超市管理系统(MySQL)

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

  • 9
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值