c语言点菜系统

酒店点菜管理系统
功能要求:
1、分类输入各种菜名,报价;
2、修改各种菜名,报价;
3、有添加、删除、插入、编辑数据功能;
4、查询菜名及价格;
5、客户点菜功能;
6、计算客户消费金额;
7、显示消费明细。

// 下面是前期的点餐系统的基础数据维护,其它功能你可以自己尝试写,如果遇到什么问题可以提出来追问喔,相信你可以解决的(我怕代码太多提交会受字数限制)。

// mm.h 头文件
#include<stdio.h>
#include<stdlib.h>
#define MENU_NUM_MAX 100  // 假设有100种菜式
#define LEN sizeof(struct MenuInfo)
struct MenuInfo 
{
int ID;
char MenuName[20];
float price;
}Menu[MENU_NUM_MAX];

/*   基础数据维护 */
void AddMenu()
{
FILE *fp;
int menu_num;

printf("\t\t 你要添加多少种菜?:");
scanf("%d",&menu_num);
for(int i=0;i<menu_num;i++)
{
printf("\n"); // added this line
        printf("\t\t请输入ID:");
scanf("%d",&Menu[i].ID);
printf("\t\t请输入菜名:");
scanf("%s",Menu[i].MenuName);
printf("\t\t请输入[%s]菜的价格:",Menu[i].MenuName);
Menu[i].price=0.0f; //initial float price
scanf("%f",&Menu[i].price);
fflush(stdin);
}

if((fp=fopen("MenuInfo.dat","ab"))==NULL) // open binary file 
{
printf("Can't open file\n");
exit(1);
}
for(int j=0;j<menu_num;j++)
{   
if(fwrite(&Menu[j],LEN,1,fp)!=1) //writing data to binary file
printf("Error writing file.\n");
}
   fclose(fp); // close file point
}

void DisplayMenuInfo()
{
    FILE *fp;
printf("\n\t\tID  菜名\t\t价格\n"); // column headings
    if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 
{
printf("Can't open file\n");
exit(1);
}

int i=0;
do
{
        fseek(fp,i*LEN,SEEK_SET); // move file head location
if(fread(&Menu[i],LEN,1,fp)) // read data save to structure variable
{
printf("\t\t%d  %5s\t\t%5.1f元\n",Menu[i].ID,Menu[i].MenuName,Menu[i].price);
i++;
}
}while(!feof(fp));

fclose(fp);
}
void DeleteToMenu()
{
FILE *fp; 
int MenuID;
int todelete=-1;
int i=0;
printf("请输入要删除的菜名的ID:");
scanf("%d",&MenuID);

/* load or reload the file and check that record with that ID exists */
if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 
{
printf("Can't open file\n");
exit(1);
}

do
{
fseek(fp,i*LEN,SEEK_SET); // move file head location
if(fread(&Menu[i],LEN,1,fp))
{
if (Menu[i].ID==MenuID) todelete=i;   
i++;
}
}while(!feof(fp));
fclose(fp);

if (todelete==-1)
{
printf("A menu with that ID doesn't exist\n");
}
else
{
/* write records back to file excluding one to be deleted */
if((fp=fopen("MenuInfo.dat","wb"))==NULL) // open binary file 
{
printf("Can't open file\n");
exit(1);
}

for(int j=0;j<i;j++)

if (j==todelete) continue;  /* skip record to be deleted */ 
if(fwrite(&Menu[j],LEN,1,fp)!=1) //writing data to binary file
printf("Error writing file.\n");
}
fclose(fp); // close file point
}
}
void FindMenu()
{
FILE *fp;
int MenuID;
bool find_mark=false;
printf("\n\t\t请输入你要查找的菜名ID:");
scanf("%d",&MenuID);
    
printf("\n\t\tID  菜名\t\t价格\n"); // column headings
if((fp=fopen("MenuInfo.dat","rb"))==NULL) // open binary file 
{
printf("Can't open file\n");
exit(1);
}

    int i=0;
do
{
        fseek(fp,i*LEN,SEEK_SET); // move file head location
fread(&Menu[i],LEN,1,fp);  // read data save to structure variable
if(Menu[i].ID==MenuID)
{
printf("\t\t%d  %5s\t\t%5.1f元\n",Menu[i].ID,Menu[i].MenuName,Menu[i].price);
find_mark=true;
break;
}

i++;
}while(!feof(fp));

if(!find_mark) printf("\n\t 尊敬的客户:我们餐厅没有你要点的菜喔,你可以试试我们的招牌菜啊^-^.\n");

fclose(fp);
}
/*   基础数据维护完毕   */
// sc.cpp主文件
#include <stdio.h>
#include <stdlib.h>
#include "mm.h"
void main(void)
{
//AddMenu();
//DisplayMenuInfo();
//FindMenu();
}

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-16
就是个演示程序罢了,何言点菜系统!
真正点菜系统为“子机-总机”结构,子机分为服务员使用的子机和餐桌上的自助点餐机,信息发送给总机后送到厨房做完了后子机上确认上菜后开始计算价钱,走的时候一起算账
相似回答