北京联合大学
数据结构实训报告
课程名称:            数据结构实训                             
项目名称:            餐厅点餐系统                 
学    院:  管理学院  专    业:信息管理与信息系统
姓    名:  *******    学    号:    ********     
指导老师:  *****     
2011年1月13日
c语言listinsert函数
一、实践题目
餐厅点餐系统
二、实践目的
编写出一个有用户界面的容易使用的点餐系统,服务员可以通过这个系统为顾客点餐,点完餐后可以直接打印出来或在餐厅后堂打印出来方便厨师及时了解顾客的点餐,如果是餐厅管理者在使用还可以查看原材料的余量,以便及时进货。
三、实践内容
1.选择的数据结构:线性表,线性存储结构
  2.程序代码及注释
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include"windows.h"
struct cai  /*cai结构体 实现对菜品 已点份数、名称、原材料 的记录*/
{
    int  fenshu;
      char name[50];
    int  use;
    int  price;
};
typedef  int  ElemType;
struct List    /*该线性表实现对菜品原材料的剩余量的记录,线性表【i】对应菜品的点餐菜单编码*/
    ElemType* list;
    int size;
    int MaxSize;
};
/*以下为线性表的函数*/
void InitList(struct List* L,int ms)     
{
    if(ms<=0){printf("ms 值非法!\n");exit(1);}
    L->MaxSize=ms;
    L->list=malloc(ms*sizeof(ElemType));
    if(!L->list)
    {
        printf("动态存储分配失败!");
        exit(1);
    }
    L->size=0;
}
void againMalloc(struct List *L)
{
    ElemType *p=realloc(L->list,2*L->MaxSize*sizeof(ElemType));
    if(!p){
    printf("分配存储空间失败!");
    exit(1);
    }
L->list=p;
L->MaxSize=2*L->MaxSize;
}
void InsertLastList(struct List *L,ElemType x)
{
    if(L->size==L->MaxSize)
        againMalloc(L);
    L->list[L->size]=x;
    L->size++;
}
/*表格函数*/
void cddayin(struct cai a[])
{
    int i=0,j=0,s=0;
    for(i=0;i<30;i++)
    {if(a[i].fenshu>0)    j++;}
    if(j!=0)
    {
        printf("已点菜/酒品编号        已点菜品名称    已点份数/瓶数        价格\n");
        for(i=0;i<30;i++)
        if(a[i].fenshu>0)   
        {printf(" %5d                %10s%14d              %d¥      \n",i,a[i].name,a[i].fenshu,a[i].fenshu*a[i].price);
          s=s+a[i].fenshu*a[i].price;
            }
        printf("                                        您好,您点餐价格合计=%d¥\n",s);
    }
    if(j==0)
          printf("顾客尚未点餐,无法进行菜单打印!\n");
}
void ycliao(struct List *yuan,struct cai a[])
{
    int i=1,p=0,k=0;
    for(i=0;i<30;i++)
    {
    do{
            p=a[i].use%100;
            yuan->list[p]=yuan->list[p]-a[i].fenshu;
            a[i].use=a[i].use/100;
        }while(a[i].use!=0);
    }   
    printf("|-------------------------------------------------------|--------------------|\n");
    printf("|------------------原材料余量---------------------------|-----酒品余量-------|\n");
    printf("|-------------------------------------------------------|--------------------|\n");