當前位置:首頁 » 服務存儲 » 菜品管理系統c順序存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

菜品管理系統c順序存儲

發布時間: 2022-05-03 20:19:50

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數據丟失
}
}