背景:
这次我们结合今年淄博烧烤做一个餐厅管理系统,具体需求如下,我们选择的是餐饮商家信息管理
问题描述:
淄博烧烤今年大火,“进淄赶烤”是大家最想干的事情,淄博烧烤大火特火的原因,火的不是烧烤,火的是人间烟火,火的是政通人和,火的是好客山东!火热的烧烤带动了淄博的旅游和经济,使一个三四线城市火出了圈,全部各地的城市都争相模仿,文旅局长们都争出奇招,利用本地的特色来大力发展当地经济。
某城市效仿淄博,欲举办烧烤节。为了服务好全国各地来的游客,城市准备成立相应的服务小组,为游客服务。
为了更好的管理各个服务小组,开发相应的管理系统,要求实现如下功能:
(1) 添加输入信息:程序能够添加后述表格中的信息,要求身份证号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2) 插入(修改)相关信息:可根据查询结果对相应的记录进行修改,修改时注意身份证号的唯一性。
(3) 删除相关信息:实现对已添加的信息进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。
(4) 统计浏览相关信息:能根据每个参数进行统计。如按性别进行统计。
(6) 保存相关信息:可将输入的信息记录存入文件中,存入方式任意。
(7) 读取相关信息:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
信息管理 | ||
餐饮商家信息管理 | 为外地游客提供餐饮服务 | 餐厅编号、餐厅名称、开业时间、包间种类(10人以下就餐、10-20人就餐、30人以上就餐)及包间数量、详细地址、交通情况、餐饮种类(湘菜、川菜、鲁菜、烧烤等)、营业时间、有无演艺表演、平均消费价位、餐厅法人、餐厅法人身份证号、备注 |
酒店宾馆信息管理 | 为外地游客提供住宿服务 | 酒店编号、酒店名称、酒店星级、开业时间、客房种类(标准间、双人间、三人间或家庭房等)及客房数量和价格、详细地址、交通情况、服务设施(停车场、商务中心、前台贵重物品保柜、商场、行李存放服务、残疾人客房、叫醒服务、演艺吧、桑拿房、健身房、网球场)、支持卡类(国际信用卡万事达(Master)、国际信用卡威士(VISA)、国际信用卡运通(AMEX)、国际信用卡大莱(Diners Club)、国际信用卡JCB、国内发行银联卡、微信、支付宝等)、附近景点、上网情况(所有房间免费宽带上网)、酒店法人、酒店法人身份证号、备注 |
车站接待志愿者信息管理 | 在车站迎接外地游客,给游客安全感,要求身高180以上 | 编号、姓名、身份证号码、性别、出生日期、籍贯、民族、单位、现居住地址、文化程度、电话号码、身体状况、身高、上岗起始时间、上岗结束时间、上岗地点(汽车站、火车站)、填报日期、备注 |
安全保障人员信息管理 | 协助警察在活动场地维持秩序 | 编号、姓名、身份证号码、性别、出生日期、籍贯、民族、单位、现居住地址、文化程度、电话号码、身体状况、上岗起始时间、上岗结束时间、上岗地点(最多可选10个地点)、填报日期、备注 |
车辆志愿者管理 | 为了方便外地游客从火车站或汽车站到活动地点 | 编号、姓名、身份证号码、性别、出生日期、籍贯、民族、单位、现居住地址、文化程度、电话号码、身体状况、拥有车辆数量及可乘坐人数、志愿服务路线、志愿服务起始时间、志愿服务结束时间、填报日期、备注 |
大众艺人信息管理 | 为了活跃活动场地的气氛,需要有一定才艺的志愿者进行各种才艺表演,增加活动的趣味性。 | 编号、姓名、身份证号码、性别、出生日期、籍贯、民族、单位、现居住地址、文化程度、电话号码、身体状况、擅长才艺、集体或个人节目、表演时长、可参与表演起始时间、可参与表演结束时间、表演地点(最多可选10个地点)、填报日期、备注 |
要求:
用文件存储数据,用类实现。要求功能完整正确,代码可读性好。
不要用结构实现,也不能把类的成员全部定义为共有成员,把类当结构使用。
效果:
主菜单:
录入与显示:
修改餐厅信息:
删除功能 :
统计功能:
保存文件与读取文件:
主要代码:
//vx-zew1040994588
//主菜单
void menu()
{
cout << " =================================================\n";
cout << " = 欢迎使用餐饮信息管理系统 =\n";
cout << " = 1=录入餐厅信息 =\n";
cout << " = 2=修改餐厅信息 =\n";
cout << " = 3=显示所有餐厅信息 =\n";
cout << " = 4=删除餐厅信息 =\n";
cout << " = 5=统计餐厅信息 =\n";
cout << " = 0=退出【存储到文件】 =\n";
cout << " =================================================\n";
cout << "请选择:";
}
//vx-zew1040994588
int main()
{
int currentN = 0;
Restaurant restaurant[MAX_RESTAURANT_NUM];
/*从文件读数据 */
ifstream filein("restaurants.dat", ios::binary);
if (filein)
{
filein.read((char*)¤tN, sizeof(currentN));
for (int i = 0; i < currentN; i++)
{
filein.read((char*)&restaurant[i], sizeof(restaurant[i]));
}
}
filein.close();
string a;//用来判断菜单选择,用string
Menu();
while (cin >> a)
{
if (a == "1")
{
cout << "您选择了1=录入餐饮商家信息" << endl;
input_restaurant(restaurant, currentN);//输入
Menu();
}