订餐管理系统

#include<iostream>
#include<string>
#include<fstream>
#include<stdlib.h>
#include<string.h>
using namespace std;

char ADMIN_PASSWD[20]="123"; 	//管理员初始密码
#define USER_MAX_SIZE 100   //控制最大值
#define GOODS_MAX_SIZE 100	//商品最大值
#define Evaluate_MAX_SIZE 100	//商品最大值

typedef struct 
{
	char id[20];//评价人
	char str[50];//内容
	float score;//评分
}Evaluate;

Evaluate eva[Evaluate_MAX_SIZE];
int eva_num=0;//记录评价数量

typedef struct 
{
	char id[20];//账号
	char tel[20];//电话
	char passwd[20];//密码
	char name[20];//姓名
}User;//用户信息

User user[USER_MAX_SIZE];
int user_num=0;//记录用户数量
char now_user[20];//当前用户ID

typedef struct
{
	int id;//编号
	char name[30];//名称
	float price;//价格
}Goods;

Goods goods[GOODS_MAX_SIZE]=
{
	1,"大米饭",1.0,
	2,"冷面",3.0,
	3,"兰州拉面",5,
	4,"刀削面",5,
	5,"菜粥",0.5,
	6,"南瓜粥",1,
	7,"糯米粥",1,
	8,"黑米粥",1,
	9,"燕麦粥",1,
	10,"红烧肉",3,
	11,"红烧鱼",5,
	12,"北京烤鸭",10,
	13,"啤酒鸭",6,
	14,"猪肚",8,
	15,"牛肉",15,
	16,"青菜",0.8,
	17,"白菜",1,
	18,"韭菜",1,
	19,"常豆",1.5,
	20,"扁豆",1.5,
	21,"豌豆",1.6,
	22,"丝瓜",1,
	23,"黄瓜",1.5,
	24,"排骨汤",5,
	25,"鲫鱼汤",6,
	26,"番茄蛋汤",2,
	27,"糯米丸子汤",3,
	28,"可乐",2,
	29,"雪碧",3.5,
	30,"果粒橙",3.5,
	31,"农夫果园",4,
	32,"农夫山泉",2,
	33,"白开水",0
};
int goods_num=33;//记录商品数量



/*进入系统后  登录选项菜单*/
int Login_Menu()
{
	int chioce;
	system("cls");

	cout<<"1:用户登录"<<endl;
	cout<<"2:用户注册"<<endl;
	cout<<"3:管理员登录"<<endl;
	cout<<"0:退出"<<endl;
	cin>>chioce;

	while(chioce<0||chioce>3)
	{
		cout<<"输入范围错误,重新输入"<<endl;
		cin>>chioce;
	}

	return chioce;
}




/*打印评价列表*/
void Print_Eva()
{
	int i;
	system("cls");

	printf("%-20s%-50s%-5s","评价人","评价","评分");
	cout<<endl;

	for(i=0;i<eva_num;i++)
	{
		printf("%-20s%-50s%.1f",eva[i].id,eva[i].str,eva[i].score);
		cout<<endl;
	}

	system("pause");
}




/*显示商品信息*/
void Print_Goods()
{
	int i;
	system("cls");

	printf("%-10s%-20s%5s\n","编号","名称","价格");

	for(i=0;i<goods_num;i++)
	{
		printf("%-10d%-20s%5.1f\n",goods[i].id,goods[i].name,goods[i].price);
	}

	system("pause");
}



/*对商品按编号进行排序*/
void Sort_Goods_Id()
{
	int i,j;
	Goods temp;

	for(i=0;i<goods_num;i++)
	{
		for(j=i+1;j<goods_num;j++)
		{
			if(goods[i].id>goods[j].id)
			{
				temp=goods[i];
				goods[i]=goods[j];
				goods[j]=temp;
			}
		}
	}
}




/*加载评价信息*/
void Load_Eva_File()
{
	int i=0;
	ifstream filein("eva.txt",ios::binary);
	while(filein)
	{
		filein.read((char*)&eva[i],sizeof(Evaluate));
		i++;
	}
	if(i>=1)
	{
		eva_num=i-1;
	}
	else
	{
		eva_num=0;
	}
}


/*保存评价信息*/
void Save_Eva_File()
{
	ofstream fileout("eva.txt",ios::binary);
	if(!fileout)
	{
		cout<<"文件不能被打开!"<<endl;
		return ;
	}
	for(int i=0;i<goods_num;i++)
	{
		fileout.write((char*)&eva[i],sizeof(Evaluate));
	}
	fileout.close();
}

/*加载商品信息*/
void Load_Goods_File()
{
	int i=goods_num;
	ifstream filein("goods.txt",ios::binary);
	while(filein)
	{
		filein.read((char*)&goods[i],sizeof(Goods));
		i++;
	}
	if(i>=1)
	{
		goods_num=i;
	}
	else
	{
		goods_num=0;
	}
}

/*保存商品信息*/
void Save_Goods_File()
{
	ofstream fileout("goods.txt",ios::binary);
	if(!fileout)
	{
		cout<<"文件不能被打开!"<<endl;
		return ;
	}
	for(int i=0;i<goods_num;i++)
	{
		fileout.write((char*)&goods[i],sizeof(Goods));
	}
	fileout.close();
}




/*加载用户信息*/
void Load_User_File()
{
	int i=0;
	ifstream filein("user.txt",ios::binary);

	while(filein)
	{
		filein.read((char*)&user[i],sizeof(User));
		i++;
	}

	if(i>=1)
	{
		user_num=i-1;
	}
	else
	{
		user_num=0;
	}
}



/*加载管理员密码*/
void Load_Admin_file()
{
	ifstream filein("admin.txt",ios::binary);

	if(filein)
	{
		filein.read(ADMIN_PASSWD,sizeof(char)*20);
	}

	filein.close();
}



/*保存管理员密码*/
void Save_Admin_File()
{
	ofstream fileout("admin.txt",ios::binary);

	if(!fileout)
	{
		cout<<"文件不能被打开!"<<endl;
		return ;
	}

	fileout.write(ADMIN_PASSWD,sizeof(char)*20);

	fileout.close();
}



/*保存用户信息*/
void Save_User_File()
{
	ofstream fileout("user.txt",ios::binary);

	if(!fileout)
	{
		cout<<"文件不能被打开!"<<endl;
		return ;
	}

	for(int i=0;i<user_num;i++)
	{
		fileout.write((char*)&user[i],sizeof(User));
	}
	fileout.close();
}


/*管理员登录模块*/
bool Admin_Login()
{
	char temp[50];
	system("cls");
	cout<<"请输入管理员密码"<<endl;
	fflush(stdin);
	cin.getline(temp,49,'\n');
	if(strcmp(temp,ADMIN_PASSWD))
	{
		return false;
	}
	return true;
}

/*用户注册模块*/
void User_Reg()
{
	char flag;
	int i,temp=1;
	system("cls");

	cout<<"请输入您的真实姓名"<<endl;
	fflush(stdin);
	cin.getline(user[user_num].name,19,'\n');

	cout<<"请输入您的昵称"<<endl;
	fflush(stdin);
	cin.getline(user[user_num].id,19,'\n');

	cout<<"请输入您的手机号码"<<endl;
	fflush(stdin);
	cin.getline(user[user_num].tel,19,'\n');

	cout<<"请输入您的登录密码"<<endl;
	fflush(stdin);
	cin.getline(user[user_num].passwd,19,'\n');
	
	cout<<"确认注册该账号?Y/N"<<endl;
	fflush(stdin);
	cin>>flag;
	
	if('Y'==flag||'y'==flag)
	{
		for(i=0;i<user_num;i++)
		{
			if(!strcmp(user[i].id,user[user_num].id))
			{
				cout<<"该昵称已被注册!"<<endl;
				temp=0;
				break;
			}
		}
		if(temp)
		{
			user_num++;
			cout<<"注册成功!"<<endl;
			Save_User_File();
		}
	}
	else
	{
		cout<<"注册失败!"<<endl;
	}
	system("pause");
}

/*用户登录模块*/
bool User_Login()
{
	int i;
	char id[50],passwd[50];
	system("cls");

	cout<<"请输入用户ID"<<endl;
	fflush(stdin);
	cin.getline(id,49,'\n');

	cout<<"请输入用户密码"<<endl;
	fflush(stdin);
	cin.getline(passwd,49,'\n');

	for(i=0;i<user_num;i++)
	{
		if(!strcmp(user[i].id,id)&&!strcmp(user[i].passwd,passwd))
		{
			cout<<"登录成功!"<<endl;
			strcpy(now_user,id);
			system("pause");
			return true;
		}
	}

	cout<<"ID或密码错误!"<<endl;
	cout<<"登录失败!"<<endl;
	system("pause");
	return false;
}

/*修改管理员密码*/
void Modify_Admin_Passwd()
{
	char temp[20];
	system("cls");
	cout<<"当前密码为:"<<ADMIN_PASSWD<<endl;

	cout<<"请输入新密码"<<endl;
	fflush(stdin);
	cin.getline(temp,19,'\n');

	strcpy(ADMIN_PASSWD,temp);

	cout<<"修改成功!"<<endl;
	system("pause");
}

/*删除用户*/
void Delete_User()
{
	char id[20];
	int i,j,flag=1;
	system("cls");

	cout<<"请输入要删除的id"<<endl;
	fflush(stdin);
	cin>>id;

	for(i=0;i<user_num;i++)
	{
		if(!strcmp(id,user[i].id))
		{
			for(j=i;j<user_num;j++)
			{
				user[j]=user[j+1];
			}
			user_num--;
			flag=0;
			cout<<"删除成功!"<<endl;
			break;
		}
	}

	if(flag)
	{
		cout<<"无该id,删除失败"<<endl;
	}
	system("pause");
}

/*新增商品*/
void Add_Goods()
{
	int i;
	system("cls");

	cout<<"请输入新商品编号"<<endl;
	fflush(stdin);
	cin>>goods[goods_num].id;
	
	for(i=0;i<goods_num;i++)
	{
		if(goods[i].id==goods[goods_num].id)
		{
			cout<<"已存在该商品编号"<<endl;
			cout<<"添加失败"<<endl;
			system("pause");
			return;
		}
	}
	
	cout<<"请输入新商品名称"<<endl;
	fflush(stdin);
	cin>>goods[goods_num].name;

	cout<<"请输入新商品价格"<<endl;
	fflush(stdin);
	cin>>goods[goods_num].price;

	goods_num++;

	cout<<"添加商品成功!"<<endl;
	system("pause");
}

/*下架该商品*/
void Del_Goods()
{
	int i,j,id,flag=1;
	system("cls");

	cout<<"请输入要下架商品编号"<<endl;
	fflush(stdin);
	cin>>id;
	
	for(i=0;i<goods_num;i++)
	{
		if(goods[i].id==id)
		{
			for(j=i;j<goods_num;j++)
			{
				goods[j]=goods[j+1];
			}
			cout<<"删除该商品成功!"<<endl;
			flag=0;
			goods_num--;
			break;
		}
	}

	if(flag)
	{
		cout<<"删除失败,无该商品编号!"<<endl;
	}
	system("pause");
}

/*打印所有用户信息*/
void Print_All_User_Info()
{
	int i;
	system("cls");
	printf("%-20s%-20s%-20s\n","姓名","账号","密码","手机号码");

	for(i=0;i<user_num;i++)
	{
		printf("%-20s%-20s%-20s\n",user[i].name,user[i].id,user[i].passwd,user[i].tel);
	}

	system("pause");
}

/*管理员菜单模块*/
void Admin_Menu()
{
	int chioce;
	do
	{

		system("cls");

		cout<<"1:添加新商品"<<endl;
		cout<<"2:下架已有商品"<<endl;
		cout<<"3:查看所有用户信息"<<endl;
		cout<<"4:删除违规用户"<<endl;
		cout<<"5:修改管理员密码"<<endl;
		cout<<"6:查看所有商品"<<endl;
		cout<<"7:查看顾客评价"<<endl;
		cout<<"0:返回登录界面"<<endl;


		fflush(stdin);
		cin>>chioce;

		while(chioce<0||chioce>7)
		{
			cout<<"输入范围错误,重新输入"<<endl;
			cin>>chioce;
		}

		switch(chioce)
		{

		case 1:
			Add_Goods();
			Save_Goods_File();
			break;

		case 2:
			Del_Goods();
			Save_Goods_File();
			break;

		case 3:
			Print_All_User_Info();
			break;

		case 4:
			Delete_User();
			Save_User_File();
			break;

		case 5:
			Modify_Admin_Passwd();
			Save_Admin_File();
			break;

		case 6:
			Sort_Goods_Id();
			Print_Goods();
			break;

		case 7:
			Print_Eva();
			break;

		}

	}while(chioce);
}



/*对商品按价格升序排序*/
void Sort_Goods_Price_Low_To_High()
{
	int i,j;
	Goods temp;
	for(i=0;i<goods_num;i++)
	{
		for(j=i+1;j<goods_num;j++)
		{
			if(goods[i].price>goods[j].price)
			{
				temp=goods[i];
				goods[i]=goods[j];
				goods[j]=temp;
			}
		}
	}
}



/*对商品按价格降序排序*/
void Sort_Goods_Price_High_To_Low()
{
	int i,j;
	Goods temp;
	for(i=0;i<goods_num;i++)
	{
		for(j=i+1;j<goods_num;j++)
		{
			if(goods[i].price<goods[j].price)
			{
				temp=goods[i];
				goods[i]=goods[j];
				goods[j]=temp;
			}
		}
	}
}




/*打印个人信息*/
void Print_Own_Info()
{
	int i,flag=1;
	system("cls");
	for(i=0;i<user_num;i++)
	{
		if(!strcmp(now_user,user[i].id))
		{
			printf("%-20s%-20s%-20s\n","姓名","账号","密码","手机号码");
			printf("%-20s%-20s%-20s\n",user[i].name,user[i].id,user[i].passwd,user[i].tel);
			break;
		}
	}
	system("pause");
}



/*修改密码*/
void Modify_Passwd()
{
	int i;
	char temp;
	system("cls");
	for(i=0;i<user_num;i++)
	{
		if(!strcmp(now_user,user[i].id))
		{

			printf("%-20s%-20s%-20s\n","姓名","账号","密码","手机号码");
			printf("%-20s%-20s%-20s\n",user[i].name,user[i].id,user[i].passwd,user[i].tel);
			break;
		}
	}

	cout<<"确认修改当前密码?Y/N"<<endl;
	fflush(stdin);
	cin>>temp;


	if(temp=='Y'||temp=='y')
	{
		fflush(stdin);
		cout<<"请输入新密码:"<<endl;
		cin.getline(user[i].passwd,19,'\n');
		cout<<"修改密码成功!"<<endl;
	}
	else
	{
		cout<<"您已取消修改!"<<endl;
	}
	system("pause");
}



/*查看已经购买的商品*/
void Printf_Have_Buy_Goods(Goods* have_buy,int* num)
{
	int i;
	float total=0;
	system("cls");

	printf("%-10s%-20s%5s\n","编号","名称","价格");

	for(i=0;i<*num;i++)
	{
		printf("%-10d%-20s%5.1f\n",goods[i].id,goods[i].name,goods[i].price);
		total+=goods[i].price;
	}

	cout<<"共计购买"<<(*num)<<"件商品"<<endl;
	cout<<"共计"<<total<<"元"<<endl;
	system("pause");

}

/*购买商品*/
void Buy_Goods(Goods* have_buy,int* num)
{
	int id,i,flag=1;
	char temp;
	system("cls");

	cout<<"请输入要购买的商品编号"<<endl;
	fflush(stdin);
	cin>>id;

	for(i=0;i<*num;i++)
	{
		if(id==have_buy[i].id)
		{
			cout<<"已购买该商品"<<endl;
			system("pause");
			return ;
		}
	}

	for(i=0;i<goods_num;i++)
	{
		if(goods[i].id==id)
		{
			printf("%-10s%-20s%5s\n","编号","名称","价格");
			printf("%-10d%-20s%5.1f\n",goods[i].id,goods[i].name,goods[i].price);
			flag=0;
			break;
		}
	}

	if(flag)
	{
		cout<<"无该商品编号"<<endl;
		system("pause");
		return ;
	}
	
	cout<<"确定购买该商品?Y/N"<<endl;
	fflush(stdin);
	cin>>temp;

	if('Y'==temp||'y'==temp)
	{
		have_buy[*num]=goods[i];
		(*num)++;
		cout<<"购买成功!"<<endl;
	}
	else
	{
		cout<<"您已取消购买!"<<endl;
	}
	system("pause");
}




/*评价商品*/
void Eva_Goods()
{
	char temp;
	system("cls");
	strcpy(eva[eva_num].id,now_user);

	cout<<"请输入您的评价"<<endl;
	fflush(stdin);
	cin.getline(eva[eva_num].str,49,'\n');


	cout<<"请输入您的评分(0-5)"<<endl;
	fflush(stdin);
	cin>>eva[eva_num].score;

	while(eva[eva_num].score<0||eva[eva_num].score>5)
	{
		cout<<"评分只能在0-5,请重新输入"<<endl;
		fflush(stdin);
		cin>>eva[eva_num].score;
	}

	cout<<"是否确认发布评价?Y/N"<<endl;
	cin>>temp;

	if('Y'==temp||'y'==temp)
	{
		cout<<"发布成功!"<<endl;
		eva_num++;
	}
	else
	{
		cout<<"您已经取消发布"<<endl;
	}

	system("pause");
}




/*用户菜单模块*/
void User_Menu()
{
	Goods have_buy[GOODS_MAX_SIZE];
	int buy_num=0;
	int chioce;

	do
	{
		system("cls");

		cout<<"1:按编号查看商品"<<endl;
		cout<<"2:按价格升序查看商品"<<endl;
		cout<<"3:按价格降序查看商品"<<endl;
		cout<<"4:订餐"<<endl;
		cout<<"5:查看已购信息"<<endl;
		cout<<"6:查看个人信息"<<endl;
		cout<<"7:修改密码"<<endl;
		cout<<"8:评价商家"<<endl;
		cout<<"9:查看所有评价"<<endl;
		cout<<"0:返回登录界面"<<endl;

		fflush(stdin);
		cin>>chioce;

		while(chioce<0||chioce>9)
		{
			cout<<"输入范围错误,重新输入"<<endl;
			cin>>chioce;
		}

		switch(chioce)
		{

		case 1:
			Sort_Goods_Id();
			Print_Goods();
			break;

		case 2:
			Sort_Goods_Price_Low_To_High();
			Print_Goods();
			break;

		case 3:
			Sort_Goods_Price_High_To_Low();
			Print_Goods();
			break;

		case 4:
			Buy_Goods(have_buy,&buy_num);
			break;

		case 5:
			Printf_Have_Buy_Goods(have_buy,&buy_num);
			break;

		case 6:
			Print_Own_Info();
			break;

		case 7:
			Modify_Passwd();
			Save_User_File();
			break;

		case 8:
			Eva_Goods();
			Save_Eva_File();
			break;

		case 9:
			Print_Eva();
			break;
		}

	}while(chioce);
}




/*跳转到登录选项*/
void Goto_Login_Chioce(int chioce)
{
	switch(chioce)
	{

	case 0:
		exit(0);
		break;
	case 1:
		if(User_Login())
		{
			User_Menu();
		}
		break;

	case 2:
		User_Reg();
		break;

	case 3:
		if(Admin_Login())
		{
			Admin_Menu();
		}
		else
		{
			cout<<"密码错误"<<endl;
			system("pause");
		}
		break;
	}
}


/*主函数*/
int main()
{
	int chioce;

	Load_User_File();
	Load_Admin_file();
	Load_Goods_File();
	Load_Eva_File();


	do
	{
		chioce=Login_Menu();
		Goto_Login_Chioce(chioce);

	}while(chioce);

	return 0;
}

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值