标题:餐厅管理系统
只看楼主
lzc8994375
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2012-5-21
结帖率:50%
已结贴  问题点数:20 回复次数:2 
餐厅管理系统
就高手帮忙找一下下面代码的错误快疯了
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//输入/输出文件流类
using namespace std;
const int Maxr=100;//最多的餐桌
const int Maxb=100;//最多的菜肴
const int Max=50;//每位位置最多订五十道菜
//读者类,实现对读者的信息的描述


class Table
{
private:
int tag; //删除标记 1:已删 0:未删
int no; //餐桌编号
//int pricep[Max];//价格
//int sum;
int bordishes[Max];//所点菜肴
public:
Table() {}  
int gettag() {return tag;} //获取删除标记
int getno() {return no;} //获取餐桌编号
void deldishes(){ tag=1; }//设置删除标记 1:已删 0:未删
void addtable(int n)//增加读者
{
tag=0;
no=n;  
for(int i=0;i<Max;i++)
dishes[i]=0;
}
void borrowdishes(int dishesid)//点菜操作
{
for(int i=0;i<Max;i++)
{
if (dishes[i]==0)
{
dishes[i]=dishesid;
return;

}
}

};
int retdshes(int dishesid)//结账操作
{
for(int i=0;i<Max;i++)
{
if(dishes[i]==dishesid)
{
dishes[i]=0;
return 1;
}
 //sum=price[i];
}
return 0;
}
void disp()//读出菜肴信息
{
cout << setw(5) << no <<setw(10) << dishes<<"点菜编号:[";
for(int i=0;i<Max;i++)
{
if(dishes[i]!=0)
{
cout << bordishes[i] << "|";
cout << "]"<<endl;
//cout<<"价格:"<<price[i]<<endl;
}
}
};



//位置类库,实现建立位置的资料
class TDatabase
{
private:
int top; //位置记录指针
Table table[Maxr];//位置记录
public:
TDatabase() //构造函数,将reader.txt读到read[]中
{
Table s;
top=-1;
fstream file("table.txt",ios::in);//打开一个输入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
file.close(); //关闭 reader.txt
}
void clear()//删除所有位置信息
{
top=-1;
}
int addtable(int n)//添加读者时先查找是否存在
{
Table *p=query(n);
if (p==NULL)
{
top++;
read[top].addtable(n);
return 1;
}
return 0;

}
Table *query(int tableid)//按编号查找
{
for (int i=0;i<=top;i++)
if (read[i].getno()==tableid &&
read[i].gettag()==0)
{
return &read[i];
}
return NULL;
}
void disp() //输出所有餐桌信息
{
for (int i=0;i<=top;i++)
read[i].disp();
}
void tabledata();//餐桌库维护
~TDatabase() //析构函数,将read[]写到reader.txt文件中
{
fstream file("table.txt",ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
file.write((char *)&read[i],sizeof(read[i]));
file.close();

}
};
void TDatabase::tabledata()
{
char choice;
int tableid;
Table *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t餐 桌 维 护\n\n\n\t\t 1 下  单\n\n\t\t 2 更 改\n\n\t\t 3 结 账\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入餐桌编号:";
cin >> readerid;
addreader (readerid);
break;
case '2':
cout << "输入餐桌编号:";
cin >> tableid;
r=query(tableid);
if (r==NULL)
{
cout << " 该餐桌不存在 "<<endl;
break;
}
break;
case '3':
cout << " 输入餐桌编号:";
cin >> tableid;
r=query(tableid);
if (r==NULL)
{
cout <<" 该餐桌不存在" << endl;
break;
}
r->deltable();
break;
case '4':
cout << "读入餐桌编号:";
cin >> tableid;
r=query(tableid);
if (r==NULL)
{
cout <<"该餐桌不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";break;
}
}
}






//菜肴类,实现对菜肴的描述,菜肴的编号,菜肴下单等
class Dishes
{
private:
int tag;//删除标记 1:已删 0:未删
int no;//菜肴编号
char name[20];//菜名
int onshelf;
int  price[50]
public:
Dishes(){}
char *getname() { return name; }//获取姓名
int getno(){ return no; }//获取菜肴编号
int gettag(){ return tag; }//获取删除标记
void setname(char na[])//设置菜名
{
strcpy(name,na);
}
void deldishes(){ tag=1;}//删除菜肴
void adddishes(int n,char *na)//增加菜肴
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowdishes()//点菜操作
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retdishes()//结账操作
onshelf=1;
}
void disp()//输出菜肴
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "未点":"已点") <<endl;
}
};






//菜肴库类,实现对图书的维护,查找,删除等
class DDatabase
{
private:
int top; //菜肴记录指针
Dishes dishes[Maxb]; //菜肴记录
public:
DDatabase()//构造函数,将book.txt读到book[]中
{
Dishes b;
top=-1;
fstream file("dishes.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
dishes[top]=b;
}
file.close();
}
void clear()//全删
{
top=-1;
}
int adddishes(int n,char *na)//增加菜肴
{
dishes *p=query(n);
if (NULL==p)
{
top++;
dishes[top].adddishes(n,na);
return 1;
}
return 0;
}
Dishes *query(int dishesid)//查找菜肴
{
for (int i=0;i<=top;i++)
if (dishes[i].getno()==dishesid &&dishes[i].gettag()==0)
{
return &dishes[i];
}
return NULL;
}
void dishesdata();//菜单库维护
void disp()
{
for (int i=0;i<=top;i++)
if (dishes[i].gettag()==0)
dishes[i].disp();
}
~DDatabase()//析构函数,将dishes[]写到dishes.txt文件中
{
fstream file("dishes.txt",ios::out);
for (int i=0;i<=top;i++)
if (dishes[i].gettag()==0)
file.write((char *)&dishes[i],sizeof(dishes[i]));
file.close();
}
};
void DDatabase::dishesdata()
{
char choice;
char bname[40];
int dishesid;
Dishes *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t菜 肴 维 护 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 删 除\n\t\t4 查 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入菜肴编号:"<<endl;
cin >> bookid;
cout << "输入菜肴菜名:"<<endl;
cin >> bname;
adddishes(dishesid,bname);
break;
case '2':
cout << "输入菜肴编号:"<<endl;
cin >> dishesid;
b=query(dishesid);
if (b==NULL)
{
cout << " 该菜肴不存在 "<<endl;
break;
}
cout << "输入新的菜肴:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 读入菜肴编号:"<<endl;
cin >> dishesid;
b=query(dishesid);
if (b==NULL)
{
cout <<" 该菜肴不存在" << endl;
break;
}
b->deldishes();
break;
case '4':
cout << " 读入菜肴编号:"<<endl;
cin >> dishesid;
b=query(dishesid);
if (b==NULL)
{
cout <<" 该菜肴不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";
}
}
}



//main() 函数的实现,程序的主界面的引导

void main()
{
char choice;
int dishesid,tableid;
TDatabase TableDB;
Table *r;
DDatabase DishesDB;
Dishes *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 餐 厅 管 理 系 统\n\n\n";


cout <<"\t\t\t1 点 菜\n\n\t\t\t2 结 账 \n\n\t\t\t3 菜 肴 维 护\n\n\t\t\t4 位置 维 护\n\n\t\t\t0 离 开"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 点菜 餐桌编号:";
cin >>tableid;
cout <<" 菜肴编号: ";
cin >>dishesid;
r=TableDB.query(tableid);//按编号查找
if (NULL==r)
{
cout <<" 不存在该餐桌,不能点菜"<< endl;
break;
}
b=DishesDB.query(dishesid);
if (b==NULL)
{
cout <<" 不存在该菜肴,不能点菜"<< endl;
break;
}
if (b->borrowdishes()==0)
{
cout << " 该菜肴已点"<< endl;
break;
}
r->borrowdishes(b->getno());
break;
case '2':
cout<<"结账\n 餐桌编号:";
cin >>dishesid;
cout << " 菜肴编号:";
cin >>dishesid;
r=TableDB.query(tableid);
if (r==NULL)
{
cout <<" 不存在该餐桌,不能结账" << endl;
break;
}
b=DishesDB.query(dishesid);
if (b==NULL)
{
cout <<" 不存在该菜肴,不能点菜" <<endl;
break;
}
b->retdishes();
r->retdishes(b->getno());
break;
case '3':
DishesDB.dishesata();
break;
case '4':
TableDB.tabledata();
break;
default:cout<<"输入错误,请从新输入:";

}
}
}

搜索更多相关主题的帖子: 餐桌 读者 private include public 
2012-05-21 22:11
lzc8994375
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2012-5-21
得分:0 
怎么没人理我呢
2012-05-23 12:12
lyswwr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:124
注 册:2011-7-3
得分:20 
太多错了改不了那么多呀
2012-05-23 12:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-367844-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved