1. 哗啦啦商户管理系统怎么添加菜品怎么天啦菜品
摘要 一、登录商户后台
2. 餐饮管理系统软件怎么加菜品和价格
您可以看看 鼎众 CRM客户关系管理系统
将客户、商机、产品、财务、会员卡、库存、来去电数据统计进行充分协同,在一个系统完美运作,有效管理企业内部资源,提高客户忠诚度,实现客户和商业价值最大化,达到降低运营成本,提高效率,优化客户关系,提升销售。
根据企业客户维护特点而设计,界面清晰,操作简单,员工容易上手
3. 菜么么餐饮管理系统收银机套餐内容怎么添加
摘要 新建一菜品名字为“商务套餐”,填好菜品信息(价格、单位等), 在属性栏中,勾选“套餐”并点击“确定”。此时,会增加一个名为“商务套餐”的套餐。
4. 数据结构课程设计 图书借阅管理系统 c语言版 顺序存储
用结构体了,要追求效率的话就用分块模型了
5. c语言外卖管理系统涉及的知识点
用C语言做了一个外卖管理系统,则希望可以模拟网上订餐,店家工作,专人管理的过程。并实现注册与登录以及基本信息的输出。各位大佬不喜勿喷
管理员端可以查看店铺信息,店铺信息修改(分为增删改查),处理申请店铺,和修改本人信息。
用户端分为用户相关(为用户本人对自己信息的操作),查看订单,查看菜品,购买菜品,以及订单排序。
管理员端为增添菜品,删除菜品,修改菜品,查看菜品以及业绩查看(统计总订单与总收入)。
注册分为用户注册和点击注册,其中店家注册需要的到管理员的认证,认证通过之后才可登录。
6. 菜么么餐饮管理系统添加菜品
摘要 您好,菜么么餐饮管理系统在菜单管理可以添加菜单,点击添加就可以添加了哦。谢谢
7. C语言设计商品管理系统,可以实现商品的录入,查询,求源代码
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 300
typedef struct 
{ 
char name[30];
int num;
char shang[10];
float price;
}record;
void DataInput(record *com, int *nptr); 
int DataRead(record *com,int *nptr) ; 
void DataStorage(record *com, int n); /*信息保存到文件*/
void DataFind( ); 
void DataDisPlay( ); 
void DataAdd( ); 
void DataDel( ); 
void DataStatistic( );
int main( )
{
record shangpin[SIZE];
int number=20; /*设商品数*/
char fn; 
printf("\t~~~~~~商品管理系统~~~~~~");
while(1)
{
printf("\n\t\t1.商品信息录入\n"); /*显示主菜单*/ 
printf("\t\t2.商品信息显示\n");
printf("\t\t3.商品信息查找\n");
printf("\t\t4.商品信息添加\n");
printf("\t\t5.商品信息删除\n");
printf("\t\t6.商品信息统计\n");
printf("\t\t0.退出系统");
printf("\n\t~~~~~~~~~~~~~~~~\n");
printf("\t请输入你的一个选项(数字0-6): ");
fflush(stdin);
scanf("%c",&fn);
puts("\n");
switch(fn) /*切换到不同功能*/
{ 
case '1':
DataInput(shangpin, &number );
break; /*录入信息*/
case '2':DataDisPlay();
break; /*信息显示*/
case '3':
DataFind();
break; /*信息查找*/
case '4':
DataAdd( );
break; /*增加*/
case '5':
DataDel( );
break; /*删除*/
case '6':
DataStatistic();
break; /*信息统计*/
case '0':
return 0;
default:puts("\t\t没有这个项!返回主菜单!");
break;
} 
printf("\n\t\t完毕!按任意键继续");
getch( );
puts("\n");
} 
} 
void DataInput(record *com, int *nptr) /*商品信息录入*/
{
int i = 0; 
int n ; /*录入的总数*/
char YesOrNo; /*判断是否保存*/
char shangming[30]; /*商名*/
int haoma; /*商品号*/
char shangjia[10]; /*单价*/
float danjia; 
printf("\t\t请输入商品个数:");
scanf("%d",&n);
*nptr = n; /*nptr返回商品个数*/ 
printf("\t\t现在开始录入这%d个商品信息:\n\n",n);
while(i<n)
{
printf("请输入商品的商品名:",i+1);
scanf("%s",&shangming);
printf("请输入商品的商品号:",i+1);
scanf("%d",&haoma);
printf("请输入商品的生产商:",i+1);
scanf("%s",&shangjia);
printf("请输入商品的单价 :",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的单价才录入*/
{
strcpy(com[i].name,shangming);
com[i].num = haoma;
strcpy(com[i].shang,shangjia);
com[i].price = danjia;
i =i+1;
} 
else 
printf("输入的单价是一个无效的值!!!\n\n");
} /*结束while*/
printf("要保存您刚才录入的数据吗(Y/N)?"); /*选择保存*/
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else 
printf("输入了不正确的选项\n");
return;
} /*结束函数*/
void DataFind( ) /*查找*/
{
void OnNumber(record *com,int n ); /*按商品号排序*/
int key; /*key为要查找的关键值*/
int low = 0; /*下限*/
int high ; /*上限*/
int mid ; /*中间值*/
char ans; /*选项*/
record com[SIZE];
int n;
if(DataRead(com,&n)==1) /*从文件中读取信息*/
{
OnNumber(com,n); /*先按商品号排序*/
high = n;
do
{ 
printf("\n\n\t\t请输入你要查找的商品号:");
scanf("%d",&key);
low = 0;high = n; 
while (low <=high) 
{ 
mid = (high + low)/2; /*折半查找法*/
if (key == com[mid].num ) 
{
printf("\n\t\t你要找的是第%d个商品\n",mid + 1);
printf("\t\t结果如下:\n\n");
printf("序号\t\t商品名\t 商品号\t生产商\t单价\n"); 
printf("%3d%17s%12d%12s%8.1f\n",mid+1,com[mid].name,com[mid].num,com[mid].shang,
com[mid].price);
break; /*如果找到则退出循环*/
} 
if (key > com[mid].num ) low = mid + 1; 
else high = mid - 1; 
} 
if (low > high)
printf("\t\t,没有找到这个价格!\n");
printf("\n\t\t还要继续查询吗(Y/N)?");
ans = getch( );
} 
while (ans =='Y'||ans == 'y'); /*结束do....while*/
}
} 
void DataStorage(record *com, int n) /*录入保存文件*/
{
int i;
FILE *comPtr;
char FileName[20];
printf("请输入您要保存的文件名:");
scanf("%s",FileName);
printf("正在将商品信息保存到文件,请稍候……\n");
if((comPtr=fopen(FileName,"w"))==NULL)
printf("没有该文件\n");
else
for(i=0 ; i<n ; i++)
fprintf(comPtr,"\n%17s%12d%12s%8.1f",com[i].name,com[i].num,com[i].shang,com[i].price);
fclose(comPtr);
} 
int DataRead(record *com,int *nptr) /*读取文件*/
{
int i=0;
char datafile[20];
FILE *comPtr;
*nptr = 0; 
printf("请输入文件名:");
scanf("%s",datafile);
if((comPtr = fopen(datafile,"r")) == NULL) /*打开文件*/
{
printf("没有该文件,请重新输入!\n");
return 0;
} 
else
{
printf("正在读取商品单价,请稍候……\n");
while (!feof(comPtr))
{
fscanf(comPtr,"%s%d%s%f",&com[i].name,&com[i].num,&com[i].shang,&com[i].price);
i++;
}
*nptr = i;
printf("\n");
fclose(comPtr);
return 1;
}
} 
void DataDisPlay()
{
void OnPrice(record *com,int n ); /*按单价*/
void OnNumber(record *com,int n ); /*按商品号*/
int N;
int i;
record com[300];
char YesNo; /*是否按顺序显示*/
char tp; 
if(DataRead(com,&N)==1) /*从文件读取数据*/
{
printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");
for(i=0;i<N;i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,com[i].price);
printf("要按顺序显示吗?(Y/N)?");
fflush(stdin);
scanf("%c",&YesNo);
if(YesNo=='y'||YesNo=='Y')
{ 
printf("\t请输入排序方式:\n");
printf("\t(1.按价格排序从低到高;2.按商品号排序从低到高.)");
fflush(stdin);
scanf("%c",&tp);
if(tp=='1') 
OnPrice(com,N);
else if(tp =='2') 
OnNumber(com,N);
else 
printf("\t输入了不正确项!\n"); 
}
}
} /*结束显示成绩*/
void OnPrice(record *com,int n ) /*按单价顺序*/
{ int i,j;
record temp;
printf("\t\t按单价排序---\n\n");
printf("商品总数为%d:\n",n);
for(j=0 ; j<n-1 ; j++) /*冒泡排序*/
for(i=0 ; i<n-j-1 ; i++) 
if(com[i].price>com[i+1].price)
{
temp=com[i]; 
com[i]=com[i+1]; 
com[i+1]=temp; 
}
printf("\n\t\t按成绩排序的结果如下(按分数从低到高):\n\n");
printf("序号\t\t商品名\t 商品号\t生产商\t单价\n"); 
for(i=0 ; i<n ; i++) 
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);
} 
void OnNumber(record *com,int n ) /*按序号顺序*/
{
int i,j;
record temp;
printf("\t\t按商品号排序---\n\n"); 
printf("商品总数为%d:\n",n);
for(j=0 ; j<n-1 ; j++) 
for(i=0 ; i<n-j-1 ; i++) 
if(com[i].num>com[i+1].num)
{
temp=com[i]; 
com[i]=com[i+1]; 
com[i+1]=temp; 
}
printf("\n\t按商品号排序的结果如下(按商品号从小到大):\n\n");
printf("序号\t\t商品名\t 商品号\t生产商\t单价\n"); 
for(i=0 ; i<n ; i++) 
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);
} 
void DataAdd( ) /*增加*/
{ 
int i=0,n,m; /*商品名称*/
char shangming[30]; 
int haoma; /*生产商*/
char shangjia[10]; 
float danjia; 
char YesOrNo;
record com[SIZE];
printf("\t\t读取原有数据信息---\n");
if(DataRead(com,&n)==1) 
{
printf("\t\t信息读取完毕!\n\n");
printf("\t\t请输入要添加的商品总数:");
scanf("%d",&m);
printf("\t\t现在开始录入这%d个商品信息:\n\n",m);
while(i<m)
{
printf("第%d个商品的商品名:",i+1);
scanf("%s",&shangming);
printf("第%d个商品的商品号:",i+1);
scanf("%d",&haoma);
printf("第%d个商品的生产商:",i+1);
scanf("%s",&shangjia);
printf("第%d个商品的单价:",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的单价才录入*/
{
strcpy(com[i+n].name,shangming);
com[i+n].num = haoma;
strcpy(com[i+n].shang,shangjia);
com[i+n].price = danjia;
i =i+1;
} 
else 
printf("输入的单价是一个无效的值,请重新输入!\n\n");
} 
printf("要保存您刚才录入的数据吗(Y/N)?");
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n+m);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else 
printf("输入了不正确项,返回上一级\n");
return;
}
}
void DataDel( )//删除
{ 
void OnNumber(record *com,int n );
record com[SIZE];
int i; /*总记录数*/
int n; /*要删除的记录号*/
int m; 
printf("\t\t读取原有数据信息---\n");
if(DataRead(com,&n)==1) 
{
printf("\t\t原始数据如下:\n\n");
OnNumber(com,n );
printf("请输入你要删除的记录的序号");
scanf("%d",&m);
if(m>=1 && m<=n)
{
for(i=m-1;i<n-1;i++)
com [i] = com[i+1];
DataStorage(com,n-1);
}
} 
}
void DataStatistic( ) /*统计信息*/
{
int high=0,low=200,ave=0;
int n,i,sum=0;
int g,l;
record com[SIZE];
printf("读取数据信息---\n");
if(DataRead(com,&n)==1)
{
printf("商品总数为%d\n\n",n);
for(i=0;i<n;i++)
{
if(com[i].price>high)
{
high = com[i].price;
g=i;
}
if(com[i].price<low)
{
low = com[i].price; 
l=i;
}
sum += com[i].price;
}
ave=sum/n;
printf("\t\t最高\t最低\t平均\n"); /*计算值*/
printf("商品单价统计:\t%d\t%d\t%d\n\n",high,low,ave);
printf("序号\t\t商品名\t 商品号\t生产商\t单价\n"); 
for(i=0 ; i<n ; i++) 
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);
printf("\t\t 序号\t\t 商品名\t 商品号\t 生产商 单价\n"); 
printf("单价最高的商品是:%3d%17s%12d%12s%8.1f\n\n",g+1,com[g].name,com[g].num,com[g].shang,com[g].price);
printf("单价最低的商品是:%3d%17s%12d%12s%8.1f\n",l+1,com[l].name,com[l].num,com[l].shang,com[l].price);
} /*结束统计*/
}
8. c语言商品管理系统源代码,加注释
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 300
typedef struct 
{ 
char name[30];
int   num;
char shang[10];
float price;
}record;
void DataInput(record *com, int *nptr);    
int DataRead(record *com,int *nptr) ;     
void DataStorage(record *com, int n);      /*信息保存到文件*/
void DataFind( );              
void DataDisPlay( );           
void DataAdd( );               
void DataDel( );               
void DataStatistic( );
int main( )
{
record shangpin[SIZE];
int number=20;           /*设商品数*/
char fn;           
printf("\t~~~~~~商品管理系统~~~~~~");
while(1)
{
   printf("\n\t\t1.商品信息录入\n");     /*显示主菜单*/      
   printf("\t\t2.商品信息显示\n");
   printf("\t\t3.商品信息查找\n");
   printf("\t\t4.商品信息添加\n");
   printf("\t\t5.商品信息删除\n");
   printf("\t\t6.商品信息统计\n");
   printf("\t\t0.退出系统");
printf("\n\t~~~~~~~~~~~~~~~~\n");
printf("\t请输入你的一个选项(数字0-6): ");
fflush(stdin);
scanf("%c",&fn);
puts("\n");
switch(fn)            /*切换到不同功能*/
{                                         
   case '1':
    DataInput(shangpin, &number );
    break;           /*录入信息*/
   case '2':DataDisPlay();
    break;           /*信息显示*/
     case '3':
      DataFind();
     break;           /*信息查找*/
   case '4':
      DataAdd( );
    break;           /*增加*/
   case '5':
    DataDel( );
    break;           /*删除*/
   case '6':
    DataStatistic();
    break;           /*信息统计*/
   case '0':
    return 0;
   default:puts("\t\t没有这个项!返回主菜单!");
    break;
}      
    printf("\n\t\t完毕!按任意键继续");
getch( );
puts("\n");
}      
}   
void DataInput(record *com, int *nptr)      /*商品信息录入*/
{
int i = 0;   
int n ;             /*录入的总数*/
char YesOrNo;           /*判断是否保存*/
char shangming[30];          /*商名*/
int haoma;            /*商品号*/
char shangjia[10];          /*单价*/
float danjia;             
   printf("\t\t请输入商品个数:");
   scanf("%d",&n);
   *nptr = n;           /*nptr返回商品个数*/      
   printf("\t\t现在开始录入这%d个商品信息:\n\n",n);
   while(i<n)
{
     printf("请输入商品的商品名:",i+1);
   scanf("%s",&shangming);
   printf("请输入商品的商品号:",i+1);
   scanf("%d",&haoma);
   printf("请输入商品的生产商:",i+1);
   scanf("%s",&shangjia);
   printf("请输入商品的单价 :",i+1);
   scanf("%f",&danjia);
   if(danjia>=0&&danjia<=1000)       /*有效的单价才录入*/
   {
   strcpy(com[i].name,shangming);
   com[i].num = haoma;
   strcpy(com[i].shang,shangjia);
   com[i].price = danjia;
     i =i+1;
   } 
   else 
     printf("输入的单价是一个无效的值!!!\n\n");
   }             /*结束while*/
printf("要保存您刚才录入的数据吗(Y/N)?");   /*选择保存*/
   fflush(stdin);
   scanf("%c",&YesOrNo);
   if(YesOrNo=='y'||YesOrNo=='Y')
     DataStorage(com,n);
   else if(YesOrNo=='n'||YesOrNo=='N')
   return;
   else 
   printf("输入了不正确的选项\n");
   return;
}               /*结束函数*/
void DataFind( )           /*查找*/
{
  
void OnNumber(record *com,int n );       /*按商品号排序*/
int key;             /*key为要查找的关键值*/
int low = 0;            /*下限*/
int high ;             /*上限*/
int mid ;             /*中间值*/
char ans;             /*选项*/
record com[SIZE];
int n;
if(DataRead(com,&n)==1)         /*从文件中读取信息*/
{
OnNumber(com,n);          /*先按商品号排序*/
high = n;
do
{ 
printf("\n\n\t\t请输入你要查找的商品号:");
scanf("%d",&key);
low = 0;high = n; 
while (low <=high) 
{               
mid = (high + low)/2;         /*折半查找法*/
if (key == com[mid].num ) 
{
printf("\n\t\t你要找的是第%d个商品\n",mid + 1);
printf("\t\t结果如下:\n\n");
                 
printf("序号\t\t商品名\t    商品号\t生产商\t单价\n"); 
printf("%3d%17s%12d%12s%8.1f\n",mid+1,com[mid].name,com[mid].num,com[mid].shang,
com[mid].price);
break;             /*如果找到则退出循环*/
}   
if (key > com[mid].num ) low = mid + 1;   
else high = mid - 1; 
} 
if (low > high)
printf("\t\t,没有找到这个价格!\n");
printf("\n\t\t还要继续查询吗(Y/N)?");
ans = getch( );
} 
while (ans =='Y'||ans == 'y');       /*结束do....while*/
}
} 
void DataStorage(record *com, int n)      /*录入保存文件*/
{
    int i;
FILE *comPtr;
char FileName[20];
printf("请输入您要保存的文件名:");
scanf("%s",FileName);
printf("正在将商品信息保存到文件,请稍候……\n");
if((comPtr=fopen(FileName,"w"))==NULL)
printf("没有该文件\n");
else
for(i=0 ; i<n ; i++)
fprintf(comPtr,"\n%17s%12d%12s%8.1f",com[i].name,com[i].num,com[i].shang,com[i].price);
fclose(comPtr);
} 
int DataRead(record *com,int *nptr)       /*读取文件*/
{
int i=0;
    char datafile[20];
FILE *comPtr;
   *nptr = 0; 
   printf("请输入文件名:");
   scanf("%s",datafile);
   if((comPtr = fopen(datafile,"r")) == NULL)      /*打开文件*/
   {
   printf("没有该文件,请重新输入!\n");
   return 0;
   }   
   else
   {
   printf("正在读取商品单价,请稍候……\n");
   while (!feof(comPtr))
   {
   fscanf(comPtr,"%s%d%s%f",&com[i].name,&com[i].num,&com[i].shang,&com[i].price);
   i++;
   }
   *nptr = i;
printf("\n");
        fclose(comPtr);
   return 1;
   }
} 
void DataDisPlay()
{
void OnPrice(record *com,int n );      /*按单价*/
    void OnNumber(record *com,int n );      /*按商品号*/
    int N;
int i;
record com[300];
    char YesNo;            /*是否按顺序显示*/
    char tp;  
if(DataRead(com,&N)==1)         /*从文件读取数据*/
{
printf("序号\t\t商品名\t    商品号\t生产商\t单价\n");
for(i=0;i<N;i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,com[i].price);
printf("要按顺序显示吗?(Y/N)?");
fflush(stdin);
scanf("%c",&YesNo);
if(YesNo=='y'||YesNo=='Y')
{                      
printf("\t请输入排序方式:\n");
printf("\t(1.按价格排序从低到高;2.按商品号排序从低到高.)");
fflush(stdin);
scanf("%c",&tp);
if(tp=='1') 
OnPrice(com,N);
else if(tp =='2') 
OnNumber(com,N);
else 
printf("\t输入了不正确项!\n");   
}
}
}               /*结束显示成绩*/
void OnPrice(record *com,int n )       /*按单价顺序*/
{ int i,j;
record temp;
printf("\t\t按单价排序---\n\n");
printf("商品总数为%d:\n",n);
for(j=0 ; j<n-1 ; j++)           /*冒泡排序*/
for(i=0 ; i<n-j-1 ; i++)        
if(com[i].price>com[i+1].price)
{
temp=com[i]; 
com[i]=com[i+1]; 
com[i+1]=temp; 
}
printf("\n\t\t按成绩排序的结果如下(按分数从低到高):\n\n");
printf("序号\t\t商品名\t    商品号\t生产商\t单价\n"); 
for(i=0 ; i<n ; i++)                          
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);
} 
void OnNumber(record *com,int n )       /*按序号顺序*/
{
int i,j;
record temp;
    printf("\t\t按商品号排序---\n\n"); 
printf("商品总数为%d:\n",n);
    for(j=0 ; j<n-1 ; j++)              
for(i=0 ; i<n-j-1 ; i++)        
if(com[i].num>com[i+1].num)
{
temp=com[i]; 
com[i]=com[i+1]; 
com[i+1]=temp; 
}
printf("\n\t按商品号排序的结果如下(按商品号从小到大):\n\n");
printf("序号\t\t商品名\t    商品号\t生产商\t单价\n"); 
for(i=0 ; i<n ; i++)                          
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);
} 
void DataAdd( )               /*增加*/
{   
int i=0,n,m;            /*商品名称*/
char shangming[30];           
    int haoma;             /*生产商*/
char shangjia[10]; 
    float danjia;             
char YesOrNo;
record com[SIZE];
   printf("\t\t读取原有数据信息---\n");
   if(DataRead(com,&n)==1)      
{
   printf("\t\t信息读取完毕!\n\n");
   printf("\t\t请输入要添加的商品总数:");
   scanf("%d",&m);
printf("\t\t现在开始录入这%d个商品信息:\n\n",m);
   while(i<m)
{
    
   printf("第%d个商品的商品名:",i+1);
   scanf("%s",&shangming);
   printf("第%d个商品的商品号:",i+1);
   scanf("%d",&haoma);
   printf("第%d个商品的生产商:",i+1);
   scanf("%s",&shangjia);
   printf("第%d个商品的单价:",i+1);
   scanf("%f",&danjia);
   if(danjia>=0&&danjia<=1000)        /*有效的单价才录入*/
   {
   strcpy(com[i+n].name,shangming);
   com[i+n].num = haoma;
   strcpy(com[i+n].shang,shangjia);
     com[i+n].price = danjia;
   i =i+1;
   } 
   else 
    printf("输入的单价是一个无效的值,请重新输入!\n\n");
   }  
printf("要保存您刚才录入的数据吗(Y/N)?");
   fflush(stdin);
   scanf("%c",&YesOrNo);
   if(YesOrNo=='y'||YesOrNo=='Y')
   DataStorage(com,n+m);
   else if(YesOrNo=='n'||YesOrNo=='N')
   return;
   else 
   printf("输入了不正确项,返回上一级\n");
   return;
}
}
void DataDel( )//删除
{   
void OnNumber(record *com,int n );
record com[SIZE];
int i;              /*总记录数*/
int n;              /*要删除的记录号*/
int m;  
   printf("\t\t读取原有数据信息---\n");
   if(DataRead(com,&n)==1)      
   {
   printf("\t\t原始数据如下:\n\n");
   OnNumber(com,n );
  
   printf("请输入你要删除的记录的序号");
   scanf("%d",&m);
   if(m>=1 && m<=n)
   {
   for(i=m-1;i<n-1;i++)
   com [i] = com[i+1];
   DataStorage(com,n-1);
   }
   } 
}
void DataStatistic( )           /*统计信息*/
{
int high=0,low=200,ave=0;
int n,i,sum=0;
int g,l;
   record com[SIZE];
   printf("读取数据信息---\n");
   if(DataRead(com,&n)==1)
   {
   printf("商品总数为%d\n\n",n);
   for(i=0;i<n;i++)
   {
   if(com[i].price>high)
   {
   high = com[i].price;
   g=i;
   }
   if(com[i].price<low)
   {
   low = com[i].price; 
   l=i;
   }
   sum += com[i].price;
   }
   ave=sum/n;
   printf("\t\t最高\t最低\t平均\n");      /*计算值*/
   printf("商品单价统计:\t%d\t%d\t%d\n\n",high,low,ave);
   printf("序号\t\t商品名\t    商品号\t生产商\t单价\n"); 
   for(i=0 ; i<n ; i++)                          
   printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
   com[i].price);
   
   printf("\t\t 序号\t\t 商品名\t     商品号\t 生产商   单价\n"); 
   printf("单价最高的商品是:%3d%17s%12d%12s%8.1f\n\n",g+1,com[g].name,com[g].num,com[g].shang,com[g].price);
   printf("单价最低的商品是:%3d%17s%12d%12s%8.1f\n",l+1,com[l].name,com[l].num,com[l].shang,com[l].price);
   }              /*结束统计*/
   }
9. Excel 制作餐饮订单及库存管理系统
该系统较为复杂,人工耗时较多,你可以选择用钱换取,我公司已解决。
10. 用C语言实现线性表的顺序存储(创建,插入,删除和查找)
//C++课程设计---学生成绩管理系统
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <stdlib.h>
#include <windows.h>
typedef struct studentinfo //结构体定义
{
	int num;//学号
	char name[64];//姓名
	int sex;//性别,1为男性,0为女性
	float math;//数学
	float english;//英语
	float politic;//政治
	float chinese;//语文
	float total;//总成绩
	struct studentinfo *next;
}STUDENT;
#define FILENAME "D:\\1.txt"
//定义默认的数据库文件
#define DELAYTIME 1500
//显示信息,延时
void create_menu();
STUDENT * new_student();
STUDENT* create_linkbyfile(char *);
STUDENT *del_info(STUDENT *);
int save_info(char *,STUDENT *,int);
int find_infile_printf(char *);
int pri_whole_link(STUDENT *);
STUDENT* printf_sort(STUDENT *);
void free_link(STUDENT *);
void main() //主函数
{
	create_menu();
}
STUDENT * reverse(STUDENT *head)
//功能:链表反转顺序
//参数:head链表头结点指针
{
	STUDENT *ptemp,*p1;
	if(head==NULL)
	{
		return 0;
	}
	p1=head;//p1使之永远指向排好序的第一个结点,初值为head,head使之永远是已经排好序的最后一个结点
	
	while(head->next!=NULL)//本次循环使ptemp排好序
	{
		ptemp=head->next;//ptemp指向未排好序的第一个结点
		head->next=ptemp->next;//
		ptemp->next=p1;//ptemp也排好序了,ptemp变成排好序的第一个结点了
		p1=ptemp;//再次让p1成为第一个排好序的结点
	}
	return p1;//头结点为第一个结点
}
void create_menu()
//功能:输出功能菜单,提供人-机接口
{
	char menu_Num;
	STUDENT *head=NULL;
	char ch;
	char file_name[256];
	while(1)
	{
	system("cls");
	cout<<"\t\t学生成绩管理系统\n";
	cout<<"##########################################\n";
	cout<<"#\t\t 1.新增学生信息\t\t #\n";
	cout<<"#\t\t 2.加载数据库\t\t #\n";
	cout<<"#\t\t 3.删除学生信息\t\t #\n";
	cout<<"#\t\t 4.保存学生信息\t\t #\n";
	cout<<"#\t\t 5.数据库查询\t\t #\n";
	cout<<"#\t\t 6.原序输出\t\t #\n";
	cout<<"#\t\t 7.排序输出\t\t #\n";
	cout<<"#\t\t 8.退出\t\t\t #\n";
	cout<<"##########################################\n";
	cout<<"请输入操作编号:";
	cin>>menu_Num;
	switch (menu_Num)
	{
	case '1':
		free_link(head);//释放链表空间
		head=new_student();//新增学生信息
		break;
	case '2':
		free_link(head);//释放链表空间
		cout<<"请输入要加载的数据库文件的路径"<<endl;
		cin>>file_name;
		head=create_linkbyfile(file_name);//读取数据文件
		if(head!=NULL)
		{
			cout<<"数据库"<<file_name<<"已加载"<<endl;
			Sleep(DELAYTIME);
		}
		break;
	case '3':
		del_info(head);//删除学生信息
		break;
	case '4'://保存学生信息
		if (head==NULL)
		{
			cout<<"请先生成学生信息"<<endl;
			Sleep(DELAYTIME);
		}
		else
		{
			
			cout<<"想将学生信息保存到哪个数据库文件?";
			cin>>file_name;
			cout<<"请选择保存方式:0追加到文件末尾   1覆盖文件\n";
			cin>>menu_Num;
			if(save_info(file_name,head,menu_Num-'0')==0)//0表示追加,1表示覆盖
			{
				cout<<"信息保存失败\n";
			}
			else
			{
			cout<<"数据已保存到"<<file_name<<endl;
			Sleep(DELAYTIME);
			}
		}
		break;
	case '5':
		find_infile_printf(FILENAME);//数据库查询
		break;
	case '6'://原序输出信息
		pri_whole_link(head);
		cout<<"返回主菜单? Y/N\t";
		do
		{
			cin>>ch;
		}while(ch!='Y'&&ch!='y');
		
		break;
	case '7'://排序输出信息
		do
		{
			if((head=printf_sort(head))==NULL)
			{
				cout<<"数据库未加载"<<endl;
				Sleep(DELAYTIME);
				break;
			}
			else
			{
				cout<<"选择其他方式排序? Y/N\t";
				cin>>ch;
			}
		}while(ch=='Y'||ch=='y');
		
		break;
	case '8':
		free_link(head);//释放链表空间
		exit(0);
		break;
	default:
		cout<<"输入有误!请重新输入!"<<endl;
		Sleep(DELAYTIME);
		break;
	}
	}
}
STUDENT * new_student()
//功能:创建学生信息(通过链表)
//返回值:头结点指针
{
	STUDENT *pnew,*p,*head;
	float *pfloat;
	char ch;
	head=NULL;
	do
	{
		system("cls");
		pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
		cout<<"请输入学生的学号(0表示取消): ";
		cin>>pnew->num;
		if(0>=pnew->num)
		{
			break;
		}
		cout<<"请输入学生的姓名:";
		cin>>pnew->name;
while(1)
		{
			
			cout<<"请输入学生的性别:0/1\t";
			cin>>pnew->sex;
			if(pnew->sex&&pnew->sex-1)
			{
				cout<<"性别输入错误,0表示女性,1表示男性,请重新输入"<<endl;
			}
			else
			{
				break;
			}
		}
cout<<"请依次输入学生的数学、英语、政治、语文成绩:"<<endl;
	
		for(pnew->total=0,pfloat=&pnew->math;pfloat<&pnew->math+4;)
		{
			cin>>*pfloat;
			if(*pfloat<0||*pfloat>150)
			{
				cout<<"成绩输入错误,只能为0~150"<<endl;
			}
			else
			{
				pnew->total+=*pfloat;
				pfloat++;
			}
		}
		if(head==NULL)
		{
			head=pnew;
		}
		else
		{
			p->next=pnew;
		}
		p=pnew;
		pnew->next=NULL;
		cout<<"##########################该学生信息已生成#########################\n";
cout<<"建立另一个学生的信息? Y/N\t";
		cin>>ch;
	}while(ch=='Y'||ch=='y');
return head;
}
STUDENT* create_linkbyfile(char *filename)
//功能:读取文件,创建链表
//参数:如果filename不为空,则打开该文件,如果filename为空,要求输入文件位置
//创建的链表的所有结点的next全部修改,指向物理地址上的下一个结点
{
	system("cls");
	FILE *fp;
	STUDENT *head,*ptemp,*pnew;
	head=NULL;//初始化head为空
	if(filename==NULL)//若filename为空,要求输入文件绝对地址
	{
		char file_name[256];
		cout<<"请输入数据库文件的路径:"<<endl;
		cin>>file_name;
		if(NULL==(fp=fopen(file_name,"rb")))
		{
			cout<<"数据库连接失败\n";
			return 0;
		}
	}
	else
	{
		if(NULL==(fp=fopen(filename,"rb")))
		{
			cout<<"数据库连接失败\n";
			return 0;
		}
	}
	for(ptemp=NULL;;)
	{
		pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
		if(fread(pnew,sizeof(STUDENT),1,fp)!=NULL)
		{
			if(ptemp!=NULL)
			{
				ptemp->next=pnew;
			}
			else
			{
				head=pnew;
			}
			ptemp=pnew;
		}
		else
		{
			if(ptemp!=NULL)
			{
				ptemp->next=NULL;
			}
			else
			{
				head=NULL;
			}
			free(pnew);
			break;
		}
	}
	fclose(fp);
	return head;
}
STUDENT *del_info(STUDENT *head)
//根据学号,删除链表的结点
{
	system("cls");
	STUDENT *p1,*p2;
	int num;
	if (head==NULL)
	{
		cout<<"数据库未加载"<<endl;
		Sleep(DELAYTIME);
		return 0;
	}
	cout<<"请输入要删除学生的学号:";
	cin>>num;
	for(p1=head;p1!=NULL;)
	{
		if(p1->num==num)//找到
		{
			if(p1==head)//要删除的结点是头结点
			{
				head=p1->next;
			}
			else
			{
				p2->next=p1->next;
			}
			cout<<"成功删除!!";
		}
		p2=p1;
		p1=p1->next;
	}
	return head;
}
int save_info(char *filename,STUDENT *head,int flag)
//功能:将链表按Binary写入文件末尾
//参数:
//1.filename文件名,绝对地址
//2.head指向链表的头结点
//3.flag 0追加或1覆盖数据
//返回值:失败则返回0
{
	system("cls");
	FILE *fp;
	STUDENT *p;
	char openmethod[8];
	if(flag==0)
	{
		strcpy(openmethod,"ab+");//追加
	}
	else
	{
		strcpy(openmethod,"w");//覆盖
	}
	if(NULL==(fp=fopen(filename,openmethod)))//
	{
		cout<<"数据库连接失败"<<endl;
		Sleep(DELAYTIME);
		return 0;
	}
	else
	{
		for(p=head;p;p=p->next)
		{
			if((fwrite(p,sizeof(STUDENT),1,fp))==NULL)
			{
				cout<<"数据库创建失败"<<endl;
				return 0;
			}
		}
	}
	fclose(fp);
	return 1;
}
int find_infile_printf(char *filename)
//功能:根据学号和姓名来查询某个学生
//参数:filename数据库文件
//返回值:失败返回0
//直接搜索文件,缺点是速度慢
//也可先根据文件创建链表,再搜索链表,缺点是如果文件较大,占用内存多
{
	system("cls");
	FILE *fp;
	STUDENT stu;
	int num;
	char stu_name[64];
	char ch;
	if(filename==NULL)
	{
		return 0;
	}
	do
	{
		memset(stu_name,0,sizeof(stu_name));
		cout<<"查询学号或查询姓名? 1查询学号 0查询姓名";
		//flag=1根据学号来查询,flag=0根据姓名来查询
		cin>>num;
		if(num==1)
		{
			cout<<"输入要查询的学号:";
			cin>>num;
			cout<<"正在为您查询学号为"<<num<<"的学生……"<<endl;
		}
		else if(num==0)
		{
			cout<<"输入要查询的姓名:";
			cin>>stu_name;
			cout<<"正在为您查询姓名为"<<stu_name<<"的学生……"<<endl;
		}
		else
		{
			cout<<"输入有误"<<endl;
			return 0;
		}
		if(NULL==(fp=fopen(filename,"rw")))
		{
			cout<<"数据库连接失败\n";
			return 0;
		}
		else
		{
			while(fread(&stu,sizeof(STUDENT),1,fp)!=NULL)
			{
				if(strcmp(stu.name,stu_name)==0||stu.num==num)
				{
					cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";
					//输出该学生的所有信息
					cout<<stu.num<<"\t"<<stu.name<<"\t"<<stu.sex<<"\t"<<stu.math<<"\t"<<stu.english<<"\t"<<stu.politic<<"\t"<<stu.chinese<<"\t"<<stu.total<<endl; 
					//不加break;可支持多个相同数据的索引
				}
			}
		}
		cout<<"##########################查询完毕#########################\n";
		cout<<"查询另一个学生的信息? Y/N\t";
		cin>>ch;
	}while(ch=='Y'||ch=='y');
	fclose(fp);
	return 1;
}
int pri_whole_link(STUDENT *head)
//功能:显示整条链表的学生信息
//参数:head 头结点指针,如果head为空,返回空
{
	system("cls");
	STUDENT* p;
	if (head==NULL)
	{
		cout<<"数据库未加载"<<endl;
		Sleep(DELAYTIME);
		return 0;
	}
	cout<<"学号\t姓名\t性别\t数学\t英语\t政治\t语文\t总成绩\n";
	for(p=head;p;p=p->next) 
	{
		cout<<p->num<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->math<<"\t"<<p->english<<"\t"<<p->politic<<"\t"<<p->chinese<<"\t"<<p->total<<endl; 
	}
	return 1;
}
STUDENT* printf_sort(STUDENT *head)
//功能:根据学号|某科目成绩|总成绩对链表进行排序,然后输出
//参数:head链表头指针,如果head为空,返回空
//返回值:返回新的链表的头结点指针
{
	system("cls");
	STUDENT *p1,*p2,*ptemp,*pfinished=NULL;
	char num;
	char flag;
	if (head==NULL)
	{
		return 0;
	}
	cout<<"选择排序依据 0.数学成绩1.英语成绩2.政治成绩3.语文成绩4.总成绩\n";
	while(1)
	{
		cin>>num;
		if(num>'4'||num<'0')
		{
			cout<<"输入有误,请重新输入 0~4"<<endl;
		}
		else
		{
			break;
		}
	}
	cout<<"升序/降序输出? 0.降序1.升序";
	while(1)
	{
		cin>>flag;
		if(flag>'1'||flag<'0')
		{
			cout<<"输入有误,请重新输入 0~1"<<endl;
		}
		else
		{
			break;
		}
	}
	
	for(p1=head;p1->next!=pfinished;)//对链表进行从大到小排序(这里用冒泡法)
	//p1使之总是指向头结点,pfinished使之总是指向已排序好的最前面的结点
	//ptemp作为中介,保存p2的上一个结点
	{
		for(p2=p1;p2->next!=pfinished;)
		{
			if(*(&(p2->math)+num-'0')<*(&(p2->next->math)+num-'0'))//p2的值小于p2->next的值,交换 ptemp p2 p2->next
			{
				if(p2==p1)//头结点要交换
				{
					p1=p2->next;
					p2->next=p1->next;
					p1->next=p2;
					ptemp=p1;
				}
				else
				{
					ptemp->next=p2->next;
					ptemp=p2->next;
					p2->next=ptemp->next;
					ptemp->next=p2;
				}
			}
			else//不需要交换,则p2、ptemp前进1位
			{
				ptemp=p2;
				p2=p2->next;
			}
		}
		pfinished=p2;
	}
	if(flag=='1')
	{
		p1=reverse(p1);
	}
		pri_whole_link(p1);
	cout<<"##########################信息显示完毕#########################\n";
	return p1;
}
void free_link(STUDENT *head)
//释放链表空间,如果head,什么都不做
{
	STUDENT *p1,*p2;
	for(p1=head;p1;p1=p2)
	{
		p2=p1->next;//先保存,否则
		free(p1);//free后 p1->next数据丢失
	}
}
