P 2012课业1:食品订购系统,2024年3月29日,23:23COMP 2012面向对象编程与数据结构课业1食品订购系统来源:DALL-E介绍在本课业中,我们将结合面向对象编程(OOP)的概念并利用C++构建了一个订餐系统。我们将利用权力OOP概念,如类和对象,买家和菜单。这些类将封装相关数据和功能,确保正确执行。此外,我们将使用基本的C++结构,如函数,循环和条件语句,以实现添加项等功能菜单、下订单和管理用户交互。
此外,在这项任务中,您将处理这些主要功能。卖方行为COMP 2012课业1:食品订购系统,2024年3月29日,23:23第2页,共19页“视图”菜单“更新”菜单添加食物项目更新食品价格移除食物查看订单处理订单买方任务“视图”菜单下订单查看我的订单复制订单引言结束代码概述以下部分描述了给定的类及其用途。您已获得以下文件:买方.h食物.h菜单.h订单.h订单列表.hmain.cpp现在,让我们快速浏览一下每个文件,其中包括要创建的类和函数食品订购系统。买方类别(Buyer.h)文件Buyer.h是一个C++头文件,定义了一个名为Buyer的类。买方类提供了一种创建和管理具有唯一ID和名称的买家对象的方法。它提供了安全访问这些信息并在必要时对其进行修改的方法。COMP 2012课业1:食品订购系统,2024年3月29日,23:23第3页,共19页类别购买者{私有的int购买者ID;string买方名称;
平民的//默认构造函数买方(int id=0,const string&name=“”);//买方ID的Setter和getter方法int getBuyerId()常量;void setBuyerId(int newId);//买方名称的Setter和getter方法string getBuyerName()常量;void setBuyerName(const string&newName);};买方类别说明所提供的代码定义了一个名为“Buyer”的类,该类表示系统中的购买者。成员变量buyerID:一个整数变量,用于存储买方的唯一标识符。buyerName:一个字符串变量,用于存储买方的名称。建造师买方(int id=0,const string&name=“”)这是“Buyer”类的构造函数。需要两个可选参数来初始化新的`Buyer`对象:id(integer):表示买家id的整数(默认为0)。name(const string&):对买方名称的常量字符串引用(默认值转换为空字符串)。成员函数(Getter和Setter)“Buyer”类提供了在中访问和修改其成员变量的方法受控方式:getBuyerId()const:此函数检索`buyerID的当前值`成员变量,并将其作为整数返回。这是一个**const**函数,意思是保证不修改对象的状态。setBuyerId(int newId):此函数允许您为`buyerID`成员变量。它采用一个整数参数(“newId”)来表示新买家ID。getBuyerName()const:此函数检索`buyerName'成员变量,并将其作为字符串返回。与“getBuyerId”类似,它是**const**函数。setBuyerName(const string&newName):此函数允许您设置新的“buyerName”成员变量的值。它采用常量字符串引用(`newName`)表示买方的新名称。COMP 2012课业1:食品订购系统,2024年3月29日,23:23第4页,共19页通过使用getter和setter,“Buyer”类促进了数据封装。它限制直接访问成员变量,并提供检索和更新的受控方式他们的价值观。食品类别(Food.h)文件Food.h是一个定义Food类的C++头文件。食物类提供以结构化方式表示和管理具有唯一ID、名称和价格。它提供了控制对这些属性的访问的方法,并允许创建现有食品的副本。class食物{私有的int foodID;字符串foodName;浮动价格;平民的//默认构造函数食品(int id=0,const string&name=“”,浮动价格=0.0);
//复制Food的构造函数食品(const食品及其他);//食品ID的沉淀和吸气剂法void setFoodId(int newId);int getFoodId()const;
//食品名称的Setter和getter方法void setFoodName(const string&newName);string getFoodName()常量;
//食品价格的Setter和getter方法void setPrice(float newPrice);float getPrice()const;
};
食物类别说明提供的代码定义了一个名为“Food”的类,该类表示系统成员变量foodID:一个整数变量,用于存储食品的唯一标识符。foodName:一个字符串变量,用于存储食物的名称。price:用于存储食品价格的浮动变量。施工人员“Food”类包括两个用于创建新“Food’对象的构造函数:默认构造函数:食品(int id=0,const string&name=“”,浮动价格=0.0);COMP 2012课业1:食品订购系统,2024年3月29日,23:23第5页,共19页此构造函数采用三个可选参数来初始化新的“Food”对象:id(integer):表示食品id的整数(默认为0)。name(conststring&):对食物名称的常量字符串引用(默认为空字符串)。price(float):表示食品价格的浮点数(默认值为0.0)。复制构造函数:食品(const食品及其他);此构造函数创建现有“Food”对象的深度副本,确保为复制的数据分配独立的内存。完成复制时构造函数任务确保您将其作为委托构造函数来实现。成员函数(Getter和Setter)“Food”类提供了访问和修改其成员变量的方法:getFoodId():返回“foodID”成员变量的当前值。setFoodId(int newId):为“foodID”成员变量设置一个新值。getFoodName():返回“foodName”成员变量的当前值。setFoodName(const string&newName):为`foodName设置一个新值`成员变量。getPrice():返回“price”成员变量的当前值。setPrice(float newPrice):为“price”成员变量设置一个新值。菜单类(Menu.h)文件Menu.h是一个定义Menu类的C++头文件。Menu类提供了管理菜单系统内的食物项目集合的结构化方式。它提供在菜单中添加、删除、显示和管理食物项目的功能。菜单类说明类菜单{私有的食品*foodItems;//食物的动态阵列int currentSize;//当前食品数量int容量;//阵列的最大容量int nextFoodId;//跟踪下一个可用的食品ID
平民的菜单构造函数初始化currentSize并为foodItems分配内存菜单析构函数以释放已分配的内存void addFood(const Food&Food);bool-removeFood(int id);void displayMenu()常量;void manageFoodItems();const Food*getFoodById(int id)const;private://Helper函数bool isFull()const{return currentSize==capacity;}void resizeArray();//根据需要调整阵列的大小int findFoodIndex(int id)const;};COMP 2012课业1:食品订购系统,2024年3月29日,23:23第6页,共19页提供的代码定义了一个名为“Menu”的类,该类表示的菜单系统管理食品。成员变量foodItems:指向“Food”对象的动态数组的指针。此数组存储菜单中包含的实际食物。currentSize:一个跟踪当前食物数量的整数变量存储在“foodItems”数组中的项目。capacity:一个整数变量,用于指定食物项目的最大数量`foodItems的数组可以容纳。nextFoodId:一个整数变量,用作跟踪下一个可用的计数器应该是唯一值的食品ID。然后,此变量用于分配新的添加到菜单时的食物项目ID(一个新的唯一值)。公共成员功能Menu()(构造函数):此构造函数初始化“Menu”对象。它设置`currentSize`为0,'nextFoodId'为1,并为'foodItems'数组分配内存具有选定的初始容量。注:开始时将容量值指定为10。~Menu()(析构函数):这个析构函数负责释放分配的内存对于“foodItems”数组,当“Menu”对象超出范围时,会阻止内存泄漏。addFood(const Food&Food):此函数向菜单中添加一个新的食物项目。它引用“Food”对象(“Food”)并将其添加到“foodItems”数组中。removeFood(int id):此函数根据菜单中的ID(`ID`)。它搜索具有匹配ID的食物,并将其从`foodItems数组。displayMenu()const:这个函数显示所有食物的信息当前在菜单中。它遍历“foodItems”数组,并显示的详细信息每种食物。manageFoodItems():此函数提供了一个界面,用于管理菜单。它提供了添加、删除、编辑或对食物执行其他操作的选项项目。getFoodById(int id)const:此函数检索指向“Food”对象的指针根据其ID(“ID”)从菜单中选择。它搜索具有匹配ID的食物并返回指向它的指针,如果未找到,则返回“nullptr”。
更改为2024年3月18日上午10:57:骨架代码zip文件现在使用新的Menu.cpp文件更新。01:57 AM 17/03/2024:在OrderList类描述中findOrder(int orderId)const函数详细信息已更新。此外,In Menu类描述nextFoodIdvariable和getFoodById(int id)const函数的详细信息将被更新。01:26 AM 17/03/2024:在Order类描述中,有关Order()和的更多详细信息添加了cloneOrder(const Order&other)以进行进一步澄清。
情况1:{cout<<“当前菜单项:”<<endl;displayMenu();if(isFull()){cout<<“菜单已满。无法添加更多食物。”回来}//获取食物详细信息的用户输入字符串名称;浮动价格;//确保它是浮动的以匹配构造函数cout<<“输入食品名称:”;cin>>名称;cout<<“输入食品价格:”;cin>>价格;食品新食品(nextFoodId,名称,价格);//在此处使用nextFoodIdaddFood(newFood);cout<<“已成功添加食品。”<endl;打破}
情况1:{cout<<“当前菜单项:”<<endl;displayMenu();//获取食物详细信息的用户输入字符串名称;浮动价格;//确保它是浮动的以匹配构造函数cout<<“输入食品名称:”;cin>>名称;cout<<“输入食品价格:”;cin>>价格;食品新食品(nextFoodId,名称,价格);//在此处使用nextFoodIdaddFood(newFood);cout<<“已成功添加食品。”<endl;打破}COMP 2012课业1:食品订购系统,2024年3月29日,23:23第19页,共19页由COMP 2012教学团队维护?2024香港科技大学计算机科学与工程06:1
4 PM 16/03/2024:测试用例部分更新。也可提交ZINC现在05:58 AM 14/03/2024:删除了OrderList类辅助函数cleleList()来自OrderList.h文件。此功能需要在OrderLi中实现的位置析构函数。请下载最新的骨架文件。06:2
2 AM 14/03/2024:更新了Menu类和中Menu()构造函数的定义Order类中的Order()构造函数。变更日志结束