面向对象程序设计A课程设计文档格式.docx
《面向对象程序设计A课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计A课程设计文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
3、能够实现对餐厅菜式和价格的管理,包括对菜品和对应价格的增加、修改、删除、查找,折扣的设置,成绩≥80;
4、系统可根据历史记录对销售情况进行统计,根据餐厅管理员的输入日期统计某天的销售情况并显示(包括一共接了多少单,销售额是多少,各个菜品的销售情况,外卖和在店销售的占比),成绩≥90;
要求:
用面向对象的程序设计方法设计该系统。
本系统涉及的基本对象有订单对象(包括外卖订单和在店消费订单)、订单管理对象、菜单对象、菜品对象、菜品管理对象、系统界面。
实现对这些对象的合理抽象和封装,正确定义类之间的关系。
界面合理,代码文件组织清晰,命名符合规范,代码注释清楚,课程设计报告质量高。
一、题目
二、需求分析
有一个小型餐厅,该餐厅提供即时就餐和外卖服务。
方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。
1、根据顾客的选择正确打出订单。
2、统计出每一天的订单并将之保存在文件中。
3、可以通过管理员功能对订单,菜品等进行操作。
三、系统结构图
四、类的设计
五、程序代码与说明
#ifndefFace_h
#defineFace_h
#include"
"
classFace{
private:
OrderManashard;
public:
voidstart();
理员\t\t\t"
<
<
endl;
cout<
"
\t\t\t2.顾客\t\t\t"
________________________________________________________________"
intm;
cin>
>
m;
if(m==1){
Adm();
inti;
cin>
i;
switch(i){
case1:
AdmOrder();
break;
case2:
AdmVege();
case3:
AdmSell();
case4:
break;
}
}
else{
client();
}
找修改删除订单"
\t\t\t2.菜式和价格的管理"
\t\t\t3.查看销售情况"
\t\t\t4.退出"
inti;
switch(i){
case1:
case2:
case3:
case4:
start();
start();
找订单"
\t\t\t2.修改订单"
\t\t\t3.删除订单"
AdmOrderI();
AdmOrderII();
AdmOrderIII();
Adm1();
Adm1();
加菜品"
\t\t\t2.修改菜品"
\t\t\t3.删除菜品"
\t\t\t4.查找菜品"
\t\t\t5.设置折扣"
\t\t\t6.退出"
AdmVegeI();
AdmVegeII();
AdmVegeIII();
AdmVegeV();
case5:
AdmVegeVI();
case6:
xt"
;
OrderManape;
(day);
订单数:
()<
endl;
销售额:
()<
外卖和在店销售的占比:
卖"
\t\t\t2.在店消费"
if(i==1){
stringtime,address,phone;
cout<
请输入送餐时间:
time;
请输入送餐地点:
address;
请输入手机号:
phone;
number=();
\t\t\t外卖"
\t\t\t编号:
number<
送餐时间:
time<
\t送餐地点:
address<
\t客户手机号:
phone<
菜品\t\t价格\t\t份数\t\t折扣"
();
list<
Vegetalbe*>
:
iteratorit;
for(it=it!
=it++)
{
money=(*it)->
getmoney()*(*it)->
getnum()*(*it)->
getdiscount()*+money;
总价:
money+5<
元"
(&
pe,time,address,phone,number);
elseif(i==2){
请问是否选择包厢(是/否):
stringi;
boolr=0;
if(i=="
是"
){
r=1;
intc;
srand((unsigned)time(NULL));
c=rand()%(50-1);
\t\t\t在店消费"
\t\t\t订单编号:
包厢费:
(int)r*50<
座位号:
c<
money+(int)r*50<
pe,r,c,number);
ios:
trunc);
for(it=it!
{
outDate<
(*it)->
getname()<
\t\t"
getmoney()<
getdiscount()<
();
添加成功"
AdmVege();
修改成功"
删除成功"
输入查找订单编号:
stringnumble;
numble;
(numble);
AdmOrder();
输入删除订单编号:
ofstreamoutDate(day,ios:
list<
Mana*>
if((*it)->
getKind()=="
外卖"
outDate<
\t\t\t编号"
getNumble()<
getTim()<
getAddress()<
getphone()<
list<
iteratorI;
for(I=(*it)->
();
I!
=(*it)->
it++)
{
outDate<
(*I)->
getnum()<
(*I)->
}
getAllmoney()<
else{
(int)(*it)->
getA()*50<
getTable()<
getnum()<
#include<
iostream>
usingnamespacestd;
voidmain(){
Facere;
Mana:
Mana(stringnumble,stringkind,stringtim,stringaddress,stringphone){
this->
Numble=numble;
kind=kind;
tim=tim;
address=address;
phone=phone;
Mana(stringnumble,stringkind,inttable,boola){
table=table;
a=a;
voidMana:
setAllmoney(intmoney){
Allmoney=money;
insert(stringVege,doublemoney,intnum,doublediscount){
*it=newVegetalbe(Vege,money,num,discount);
(*it);
fstream>
iomanip>
);
stringname;
doublemoney;
doublediscount;
infile>
name>
money>
discount;
p=newVegetalbe(name,money,discount);
while(!
()){
(p);
infile>
p=newVegetalbe(name,money,discount);
voidMenu:
pushnew(Vegetalbe&
b){
p=&
b;
(p);
stringMenu:
number(){
time_tt=time(0);
chartmp[32]={NULL};
strftime(tmp,sizeof(tmp),"
%Y%m%d%H%M%S"
localtime(&
t));
returntmp;
dleinsert(stringVege){
for(it=();
it!
=();
getname()!
=Vege){
(*it);
Menu:
~Menu(){
it++){
delete*it;
Order:
Order(stringaccount,stringcode){
account=account;
code=code;
boolOrder:
judge(){
boolT=0;
ifstreaminfile("
D:
\\管理员账号.txt"
stringAccount,Code;
Account>
Code;
if((this->
account==Account)||(this->
code==Code)){
T=1;
break;
returnT;
app);
doublemoney=0;
outDate<
endl<
\t\t\t外卖"
\t\t\t订单编号"
送餐时间"
tim<
\t送餐地点"
\t客户手机号"
for(it=p->
=p->
money=(*it)->
总价"
money+5<
endl<
if(a==1){
包厢费"
(int)a*50<
座位号"
x<
iter