foodmap开发:mysql的使用说明(最简单的CRUD)

操作数据库

创建,查询

在这里插入图片描述

修改,删除,使用数据库

在这里插入图片描述

操作表

查询

在这里插入图片描述

创建

在这里插入图片描述
在这里插入图片描述

删除drop table

在这里插入图片描述

复制create table A like B

#创建表student
create table student(
	id int,
	age int,
	name varchar(20)
);
#复制一份表student到新的表stu
create table stu like student;

修改alter table A xxx

在这里插入图片描述

操作数据

插入insert into

在这里插入图片描述
注:
1.一次同时插入多条数据
如果要往数据库插入多条数据,可以改成values(record1),(record2),(record3),比起用for循环使用多条插入语句要节约性能。
2.关于auto_increment:
如果创建表时,某一列,例如id,被声明为int not null auto_increment,一开始插入了3条数据以后,删除第2条数据、想要再次插入第2条数据时,只需在values的列对应值填上2就行了。如果插入了一条id=5的数据,以后再次插入数据时,id值在没有填对应值的情况下。默认从5开始计数

删除delete from

在这里插入图片描述

修改update

在这里插入图片描述

查询语句

排序查询order by

在这里插入图片描述
例如:

select * from stu order by id; -- 默认是ASC
select * from stu order by age desc; 

聚合函数()

在这里插入图片描述
例如:

select max(age) from stu;
select count(ifnull(birthday,0)) from stu;

分组查询group by

例如:

#以年龄进行分组,查看每个分组下的score的平均值
select age,avg(score) from stu group by age;
#以年龄进行分组,查看每个分组下的个数和score的平均值,要求低于70分的不计入分组中
select age,count(id),avg(score) from stu where math>70 group by age;
#以年龄进行分组,查看每个分组下的个数和score的平均值,要求低于70分的不计入分组中,只展示多于2个人的分组
select age,count(id),avg(score) from stu where math>70 group by age having count(id)>2;

在这里插入图片描述

分页查询limit

在这里插入图片描述

基础查询select from

在这里插入图片描述
在这里插入图片描述

条件查询where

在这里插入图片描述
例如:

select * from student where age not in (18,25,30);
select * from student where math is not null;
select name from student where english between 60 and 80;
select * from student where age = 20 or age =30;
select * from student where age >= 20 and age <=30;
好的,我可以帮您编写这个程序。首先,我们需要设计一个饭类,包括饭菜名、窗口号和价格三个数据成员。代码如下: ```c++ class Food { private: string name; // 饭菜名 int window; // 窗口号 double price; // 价格 public: // 构造函数 Food(string n, int w, double p) { name = n; window = w; price = p; } // 获取饭菜名 string getName() const { return name; } // 获取窗口号 int getWindow() const { return window; } // 获取价格 double getPrice() const { return price; } }; ``` 接下来,我们需要设计一个管理程序类,包括显示饭菜单、修改饭菜单、饭菜价格排序、饭菜信息查询、用户能够通过给价格区间筛选满足条件的饭菜、能够随机推出一道饭菜、输入在星期几吃什么饭、显示在之前输入的星期几吃的饭、退出的功能。代码如下: ```c++ class FoodManager { private: vector<Food> menu; // 饭菜单 unordered_map<string, Food> foodMap; // 饭菜名到饭菜对象的映射 unordered_map<string, string> weekdayMap; // 星期到饭菜名的映射 public: // 添加饭菜 void addFood(const Food &food) { menu.push_back(food); foodMap[food.getName()] = food; } // 显示饭菜单 void showMenu() const { for (const auto &food : menu) { cout << food.getName() << "\t" << food.getWindow() << "\t" << food.getPrice() << endl; } } // 修改饭菜信息 void modifyFood(const string &name, const Food &food) { auto iter = foodMap.find(name); if (iter != foodMap.end()) { iter->second = food; } } // 饭菜价格排序 void sortMenuByPrice() { sort(menu.begin(), menu.end(), [](const Food &a, const Food &b) { return a.getPrice() < b.getPrice(); }); } // 饭菜信息查询 const Food *findFood(const string &name) const { auto iter = foodMap.find(name); if (iter != foodMap.end()) { return &iter->second; } return nullptr; } // 根据价格区间筛选饭菜 vector<Food> filterByPrice(double minPrice, double maxPrice) const { vector<Food> result; for (const auto &food : menu) { if (food.getPrice() >= minPrice && food.getPrice() <= maxPrice) { result.push_back(food); } } return result; } // 随机推出一道饭菜 const Food *recommendFood() const { if (menu.empty()) { return nullptr; } srand(time(nullptr)); int index = rand() % menu.size(); return &menu[index]; } // 输入在星期几吃什么饭 void setFoodOfWeekday(const string &weekday, const string &name) { auto iter = foodMap.find(name); if (iter != foodMap.end()) { weekdayMap[weekday] = name; } } // 显示在之前输入的星期几吃的饭 void showFoodOfWeekday(const string &weekday) const { auto iter = weekdayMap.find(weekday); if (iter != weekdayMap.end()) { cout << iter->second << endl; } else { cout << "没有设置" << weekday << "吃什么饭" << endl; } } // 退出程序 void exitProgram() const { exit(0); } }; ``` 最后,我们可以编写一个 main 函数来测试程序的功能。代码如下: ```c++ int main() { // 初始化饭菜管理程序 FoodManager manager; manager.addFood(Food("鱼香肉丝", 1, 12.5)); manager.addFood(Food("宫保鸡丁", 2, 15.0)); manager.addFood(Food("糖醋里脊", 1, 18.0)); manager.addFood(Food("红烧肉", 2, 20.5)); manager.addFood(Food("回锅肉", 1, 22.0)); manager.addFood(Food("酸菜鱼", 2, 28.0)); // 显示饭菜单 cout << "===== 饭菜单 =====" << endl; manager.showMenu(); // 修改饭菜信息 manager.modifyFood("酸菜鱼", Food("烤鱼", 2, 35.0)); cout << "===== 修改饭菜信息后的饭菜单 =====" << endl; manager.showMenu(); // 饭菜价格排序 manager.sortMenuByPrice(); cout << "===== 饭菜价格排序后的饭菜单 =====" << endl; manager.showMenu(); // 饭菜信息查询 const Food *food = manager.findFood("回锅肉"); if (food != nullptr) { cout << "查询到饭菜:" << food->getName() << "\t" << food->getWindow() << "\t" << food->getPrice() << endl; } else { cout << "没有找到饭菜" << endl; } // 根据价格区间筛选饭菜 cout << "===== 价格在 15 ~ 25 之间的饭菜 =====" << endl; vector<Food> result = manager.filterByPrice(15, 25); for (const auto &food : result) { cout << food.getName() << "\t" << food.getWindow() << "\t" << food.getPrice() << endl; } // 随机推出一道饭菜 food = manager.recommendFood(); if (food != nullptr) { cout << "随机推荐饭菜:" << food->getName() << "\t" << food->getWindow() << "\t" << food->getPrice() << endl; } else { cout << "没有饭菜可供推荐" << endl; } // 设置星期几吃什么饭 manager.setFoodOfWeekday("星期一", "鱼香肉丝"); manager.setFoodOfWeekday("星期二", "宫保鸡丁"); manager.setFoodOfWeekday("星期三", "糖醋里脊"); manager.setFoodOfWeekday("星期四", "红烧肉"); manager.setFoodOfWeekday("星期五", "回锅肉"); manager.setFoodOfWeekday("星期六", "烤鱼"); manager.setFoodOfWeekday("星期日", "酸菜鱼"); // 显示在之前输入的星期几吃的饭 cout << "星期三吃什么饭:" << endl; manager.showFoodOfWeekday("星期三"); // 退出程序 manager.exitProgram(); return 0; } ``` 以上就是编写食堂饭菜管理程序的全部内容,希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值