c語言實現(xiàn)的貨物管理系統(tǒng)實例代碼(增加刪除 查找貨物信息等功能)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h> /*屏幕操作函數(shù)庫*/
/*主管權限數(shù)據(jù)格式化*/
#define HEADER1_zg "-----------------------------貨物管理系統(tǒng)(主管)--------------------------------\n"
#define HEADER2_zg "| 編號 | 名稱 | 進價 | 售價 | 產(chǎn)地 | 生產(chǎn)日期 |保質期| 庫存 | 銷量 | 收入 |\n"
#define HEADER3_zg "|------|--------|------|------|------|----------|------|------|------|--------|\n"
#define FORMAT_zg "|%-6s|%-8s|%.2f |%.2f |%6s|%-4d%3d%3d| %4d | %4d | %4d |%.2f |\n"
#define DATA_zg p->data.numbs,p->data.name,p->data.purchase,p->data.sales,p->data.place,p->data.Date.year,p->data.Date.mouth,p->data.Date.day,p->data.days,p->data.stock,p->data.salesnumb,p->data.income
#define END_zg "-------------------------------------------------------------------------------\n"
/*普通權限數(shù)據(jù)格式化*/
#define HEADER1_pt "----------------貨物管理系統(tǒng)(普通)--------------------\n"
#define HEADER2_pt "| 編號 | 名稱 | 售價 | 產(chǎn)地 | 生產(chǎn)日期 |保質期| 銷量 |\n"
#define HEADER3_pt "|------|--------|------|------|----------|------|------|\n"
#define FORMAT_pt "|%-6s|%-8s| %.2f|%6s|%-4d%3d%3d| %4d | %4d |\n"
#define DATA_pt p->data.numbs,p->data.name,p->data.sales,p->data.place,p->data.Date.year,p->data.Date.mouth,p->data.Date.day,p->data.days,p->data.salesnumb
#define END_pt "--------------------------------------------------------\n"
int yhflag=0; /*是否優(yōu)惠*/
int incomflag=0; /*是否計算收入*/
int dateflag=0; /*是否輸入日期*/
int saveflag=0; /*是否需要保存*/
char zg[]="zg";
char pt[]="pt";
struct date
{
int year;
int mouth;
int day;
};
/*貨物基本信息*/
struct goods
{
char numbs[6]; /*編號*/
char name[10]; /*名稱*/
float purchase; /*進價*/
float sales; /*售價*/
char place[10]; /*產(chǎn)地*/
struct date Date; /*生產(chǎn)日期*/
int days; /*保質期*/
int datecha; /*保質期截止日期差*/
int stock; /*庫存量*/
int salesnumb; /*銷量*/
float income; /*收入*/
};
typedef struct node
{
struct goods data;
struct node *next;
}Node,*Link;
/*格式化輸出主管表頭*/
void printheader_zg()
{
printf(HEADER1_zg);
printf(HEADER2_zg);
printf(HEADER3_zg);
}
/*格式化輸出普通表頭*/
void printheader_pt()
{
printf(HEADER1_pt);
printf(HEADER2_pt);
printf(HEADER3_pt);
}
/*格式化輸出主管表中數(shù)據(jù)*/
void printdata_zg(Node *pp)
{
Node *p;
p=pp;
printf(FORMAT_zg,DATA_zg);
}
/*格式化輸出普通表中數(shù)據(jù)*/
void printdata_pt(Node *pp)
{
Node *p;
p=pp;
printf(FORMAT_pt,DATA_pt);
}
/*輸出案件錯誤信息*/
void wrong()
{
printf("\n\n\n\n*******錯誤:輸入錯誤,按任意鍵繼續(xù)*******\n");
getchar();
}
/*輸出為查找到貨物的信息*/
void Nofind()
{
printf("\n*****無此貨物信息!*****\n");
getchar();
}
/*主管顯示菜單*/
void Disp(Link L,char s[])
{
Node *p;
p=L->next;
if (!p) /*空,則*/
{
printf("\n沒有錄入貨物信息\n");
getchar();
return ;
}
printf("\n\n");
if (strcmp(zg,s)==0)
{
printheader_zg();
while (p)
{
printdata_zg(p);
p=p->next;
printf(HEADER3_zg);
}
}
else
{
printheader_pt();
while (p)
{
printdata_pt(p);
p=p->next;
printf(HEADER3_pt);
}
}
getchar();
}
/*返回鏈表中符合要求的節(jié)點的指針,s[]保存用戶查找內容,NaorNum[]保存按什么查找”name,num“*/
Node *Locate(Link L,char s[],char NaorNum[] )
{
Node *p;
if (strcmp(NaorNum,"num")==0)
{
p=L->next;
while (p)
{
if (strcmp(p->data.numbs,s)==0)
return p;
p=p->next;
}
}
else if (strcmp(NaorNum,"name")==0)
{
p=L->next;
while (p)
{
if (strcmp(p->data.name,s)==0)
return p;
p=p->next;
}
}
return 0; /*未找到,返回空指針*/
}
/*平潤年判斷*/
int Year_pd(int year)
{
int flag;
if ((year%4==0&&year%100!=0)||year%400==0)
{/*閏年*/
flag=0;
}
else
{/*平年*/
flag=1;
}
return flag;
}
/*月份對應的天數(shù)*/
int Day_pd(int mouth,int flag)
{
int day;
switch(mouth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:day=30;break;
case 2:if (flag) day=28;
else day=29;break;
}
return day;
}
/*輸入字符串,并進行驗證,用戶的輸入通過*t輸出*/
void S_input(char *t,int lens,char *notice)
{
char str[255];
do
{
printf(notice);
scanf("%s",str);
if(strlen(str)>lens)
printf("\n超過了要求長度,重新輸入\n");
} while (strlen(str)>lens);
strcpy(t,str);
}
int Num_input(char *notice)
{
int a;
do
{
printf(notice);
scanf("%d",&a);
if(a<0) printf("\n數(shù)字必須大于零\n");
} while (a<0);
return a;
}
/*輸入月份進行驗證*/
int Mou_input(char *notice)
{
int mouth=0;
do
{
printf(notice);
scanf("%d",&mouth);
if (mouth>12||mouth<0)
printf("\n月份必須在(1~12)之間!\n");
} while (mouth>12||mouth<0);
return mouth;
}
/*輸入天數(shù)進行驗證*/
int Day_input(char *notice,int year,int mouth)
{
int day=0;
int nlimit,flag;
flag=Year_pd(year);
do
{
printf(notice);
scanf("%d",&day);
nlimit=Day_pd(mouth,flag);
if (day>nlimit||day<0)
printf("\n日期必須在(1~%d)之間!\n",nlimit);
} while (day>nlimit||mouth<0);
return day;
}
/*增加貨物記錄*/
void Add_goods(Link L)
{
Node *p,*r,*s;
char ch,flag=0,num[10];
r=L;
s=L->next;
system("cls");
Disp(L,zg);
while (1)
{
while (1) /*輸入編號,保證沒有被使用,若輸入為0,則推出*/
{
S_input(num,6,"輸入貨物編號(按‘0'返回菜單界面):");
flag=0;
if (strcmp(num,"0")==0) return;
s=L->next;
while (s) /*查詢貨物編號是否存在,若存在,要去輸入新編號*/
{
if (strcmp(s->data.numbs,num)==0)
{
flag=1;
break;
}
s=s->next;
}
if (flag)
{
getchar();
printf("貨物編號:%s已存在,是否要重新輸入?(y/n)",num);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
continue;
else
return;
}
else
break;
}
p=(Node *)malloc(sizeof(Node));
if (!p)
{
printf("\n沒有申請到");
return; /*返回到主界面*/
}
strcpy(p->data.numbs,num);
S_input(p->data.name,8,"名稱:");
p->data.purchase=Num_input("進價:");
p->data.sales=Num_input("售價:");
S_input(p->data.place,6,"產(chǎn)地:");
p->data.Date.year=Num_input("成產(chǎn)日期:年:");
p->data.Date.mouth=Mou_input(" 月:");
p->data.Date.day=Day_input(" 日:",p->data.Date.year,p->data.Date.mouth);
p->data.days=Num_input("保質期(天):");
p->data.stock=Num_input("庫存:");
p->data.salesnumb=Num_input("銷量:");
p->data.income=00;
p->next=r->next;
r->next=p; /*前插*/
}
return ;
}
int select(int a,int b) /*菜單選擇*/
{
int n;
do
{
printf("\n\n");
printf("%15s"," ");
printf("請輸入一個數(shù)(%d~%d): [ ]\b\b",a,b);
scanf("%d",&n);
} while (n<a||n>b);
return n;
}
/*實時計算實際收益*/
void Sum_Income(Link L)
{
Node *p;
p=L->next;
while (p)
{
p->data.income=p->data.salesnumb*(p->data.sales-p->data.purchase);
p=p->next;
}
incomflag=1;
return ;
}
/*查詢的通用方法*/
void Sea_by_ways(Link L,Node *p,char s[])
{
if (p)
{
if (strcmp(zg,s)==0)
{
printheader_zg();
printdata_zg(p);
printf(END_zg);
printf("按任意鍵返回...");
getchar();
}
else
{
printheader_pt();
printdata_pt(p);
printf(END_pt);
printf("按任意鍵返回...");
getchar();
}
}
else
{
Nofind();
getchar();
}
}
/*按編號或貨物名稱查詢*/
void Sea_by_name(Link L,char s[])
{
Node *p;
char ss[20];
system("cls");
S_input(ss,10,"請輸入要查找的貨物名稱:");
p=Locate(L,ss,"name");
Sea_by_ways(L,p,s);
}
void Sea_by_num(Link L,char s[])
{
Node *p;
char ss[20];
system("cls");
S_input(ss,10,"請輸入要查找的貨物編號:");
p=Locate(L,ss,"num");
Sea_by_ways(L,p,s);
}
/*日期相對于本年的天數(shù)*/
int Sum_day(int year,int mouth,int day)
{
int i,flag,days,sum=0;
flag=Year_pd(year);
for (i=1;i<mouth;i++)
{
days=Day_pd(i,flag);
sum+=days;
}
return sum+day;
}
/*兩個日期差值*/
void Datecha(Link L)
{
int year,mouth,day;
Node *p;
p=L->next;
year=Num_input("今天日期:年:");
mouth=Mou_input("月:");
day=Day_input("日:",year,mouth);
dateflag=1;
if (!p)
{
printf("***無貨物信息,不用輸入日期***\n");
getchar();
return ;
}
else
{
while (p)
{
p->data.datecha=Sum_day(year,mouth,day)-Sum_day(p->data.Date.year,p->data.Date.mouth,p->data.Date.day);
p=p->next;
}
}
}
void Dz_by_data( Link L)
{
Node *p,*r;
Link l;
int year,mouth,day,count=0;
p=L->next;
l=(Node *)malloc(sizeof(Node));
l->next=NULL;
system("cls");
if (!dateflag)
{
Datecha(L);
}
printf("| 編號 | 名稱 |過期差值|\n");
while (p)
{
printf("|%-6s|%-8s| %4d |",p->data.numbs,p->data.name,p->data.datecha);
if (p->data.days>=p->data.datecha)
{
/*優(yōu)惠的標示優(yōu)惠*/
if (p->data.days-p->data.datecha<=10)
{
count++;
p->data.sales=p->data.sales/2;
printf("已優(yōu)惠\n");
/* Ltol(l,p,p->next);*/
}
else
{
printf("\n");
}
}
else
{
printf("該商品過期,請刪除\n");
}
p=p->next;
}
if(!count)
{
printf("/n***沒有差10天過期的貨物***/n");
getchar();
return;
}
else
{
printf("共有%d中商品打折",count);
yhflag=1;
saveflag=1;
Disp(L,zg);
}
}
/*刪除*/
void Del_by_ways(Link L,Node *p)
{
Node *q;
char ch;
if (p)
{
q=L;
while(q->next!=p)
q=q->next;
printheader_zg();
printdata_zg(p);
printf(END_zg);
getchar();
printf("請確定是否要刪除該貨物信息(y/n):");
scanf("%c",&ch);
if (ch=='y'||ch=='Y')
{
q->next=p->next;
free(p);
printf("\n成功刪除該貨物信息\n");
saveflag=1;
getchar();
return;
}
else
{
printf("\n沒有刪除該貨物信息\n");
getchar();
return;
}
}
else
{
Nofind();
getchar();
}
}
/*通過名稱刪除*/
void Del_by_name(Link L)
{
Node *p;
char s[20];
system("cls");
S_input(s,10,"請輸入要查刪除的貨物名稱:");
p=Locate(L,s,"name");
Del_by_ways(L,p);
}
/*通過編號刪除*/
void Del_by_num(Link L)
{
Node *p;
char s[20];
system("cls");
S_input(s,10,"請輸入要查刪除的貨物的編號:");
p=Locate(L,s,"num");
Del_by_ways(L,p);
}
/*補貨信息*/
void Buhuo(Link L)
{
Node *p,*q;
int i=0;
p=L->next;
system("cls");
if (p)
{
q=L->next;
printf("| 編號 | 名稱 |庫存|銷量|剩余| \n");
while (q)
{
/*統(tǒng)計庫存,銷量,剩余*/
printf("|%-8s|%-8s|%-4d|%4d|%4d|\n",q->data.numbs,q->data.name,q->data.stock,q->data.salesnumb,q->data.stock-q->data.salesnumb);
q=q->next;
}
while (p)
{
if ((p->data.stock-p->data.salesnumb)<100)
{
if (i==0)
{
printf("需要補貨的貨物分別是\n");
printf("| 編號 |商品名稱|\n");
}
printf("|%-8s|%8s|\n",p->data.numbs,p->data.name);
i++;
}
p=p->next;
}
if (i)
{
printf("共%d種貨物\n",i);
getchar();
return;
}
else
{
printf("沒有需要補充的貨物種類\n");
getchar();
return;
}
}
else
{
printf("\n***沒有貨物信息***\n");
printf("\n按任意鍵返回...\n");
getchar();
return ;
}
}
void Sort_by_ways(Link L,char s[],int n)
{
int flag=0,a;
Node *p,*q,*lq,*fq; /*fq記下節(jié)點前驅,lq記下節(jié)點的后驅,q每次冒泡遍歷,p控制遍歷,qq用來交換地址*/
p=L->next;
system("cls");
while (p)
{
fq=L;
q=fq->next;
while (lq=q->next)
{
if (strcmp(zg,s)==0)
{
switch (n)
{
case 1:a=strcmp(q->data.name,lq->data.name);break;
case 2:a=strcmp(q->data.numbs,lq->data.numbs);break;
case 3:a=(q->data.salesnumb>lq->data.salesnumb);break;
case 4:if(!incomflag) Sum_Income(L); a=(q->data.income>lq->data.income);break;
case 5:if (!dateflag) Datecha(L);a=(q->data.datecha>lq->data.datecha);break;
}
}
else
{
switch (n)
{
case 1:a=strcmp(q->data.name,lq->data.name);break;
case 2:a=strcmp(q->data.numbs,lq->data.numbs);break;
case 3:a=(q->data.sales>lq->data.sales);break;
case 4:a=(q->data.salesnumb>lq->data.salesnumb);break;
case 5:if (!dateflag) Datecha(L);a=(q->data.datecha>lq->data.datecha);break;
}
}
/*if ((n==1)?(strcmp(q->data.name,lq->data.name)):(strcmp(q->data.numbs,q->data.numbs)))*/
if(a>0)
{
flag=1;
q->next=lq->next;
lq->next=q;
fq->next=lq;
}
fq=fq->next;
q=fq->next;
}
if(flag==0) break;
p=p->next;
}
if (strcmp(zg,s)==0)
Disp(L,zg);
else
Disp(L,pt);
}
void Wb_Save(Link L)
{
FILE *out;
Node *p;
int count=0;
if ((out=fopen("d:\\Goods.txt","w"))==NULL)
{
printf("打開文件失??!\n");
getchar();
return;
}
p=L->next;
fprintf(out,HEADER1_zg);
fprintf(out,HEADER2_zg);
fprintf(out,HEADER3_zg);
while (p)
{
fprintf(out,FORMAT_zg,DATA_zg);
p=p->next;
fprintf(out,HEADER3_zg);
count++;
}
if (count>0)
{
getchar();
printf("\n\n\n***文本文件保存完成,共%d條貨物信息保存***\n",count);
getchar();
saveflag=0;
}
else
{
system("cls");
printf("沒有貨物信息,沒有貨物信息保存\n");
getchar();
}
fclose(out); /*關閉此文件*/
}
void Er_Save(Link L)
{
FILE *out;
Node *p;
int count=0;
if ((out=fopen("d:\\Goods","wb"))==NULL)
{
printf("打開文件失敗!\n");
getchar();
return;
}
p=L->next;
while (p)
{
if (fwrite(p,sizeof(Node),1,out))
{
p=p->next;
count++;
}
else
{
break;
}
}
if (count>0)
{
getchar();
printf("\n\n\n***二進制文件保存完成,共%d條貨物信息保存***\n",count);
getchar();
saveflag=0;
}
else
{
system("cls");
printf("沒有貨物信息,沒有貨物信息保存\n");
getchar();
}
fclose(out); /*關閉此文件*/
}
void Menu_sort_zg()
{
system("cls");
printf("\n\n\n");
printf("%30s%s"," "," 排序貨物信息 \n\n");
printf("%30s%s"," ","********功能*******\n\n");
printf("%30s%s"," ","* 1.按名稱 *\n\n");
printf("%30s%s"," ","* 2.按編號 *\n\n");
printf("%30s%s"," ","* 3.按銷量*\n\n");
printf("%30s%s"," ","* 4.按利潤*\n\n");
printf("%30s%s"," ","* 5.按保期 *\n\n");
printf("%30s%s"," ","* 6.返回 *\n\n");
printf("%30s%s"," ","* 7.退出 *\n\n");
printf("%30s%s"," ","********************\n");
}
void Menu_sort_pt()
{
system("cls");
printf("\n\n\n");
printf("%30s%s"," "," 排序貨物信息 \n\n");
printf("%30s%s"," ","********功能*******\n\n");
printf("%30s%s"," ","* 1.按名稱 *\n\n");
printf("%30s%s"," ","* 2.按編號 *\n\n");
printf("%30s%s"," ","* 3.按售價 *\n\n");
printf("%30s%s"," ","* 4.按銷量 *\n\n");
printf("%30s%s"," ","* 5.按保期 *\n\n");
printf("%30s%s"," ","* 6.返回 *\n\n");
printf("%30s%s"," ","* 7.退出 *\n\n");
printf("%30s%s"," ","********************\n");
}
void Menu_del()
{
system("cls");
printf("\n\n\n");
printf("%30s%s"," "," 刪除貨物信息 \n\n");
printf("%30s%s"," ","********功能*******\n\n");
printf("%30s%s"," ","* 1.按名稱 *\n\n");
printf("%30s%s"," ","* 2.按編號 *\n\n");
printf("%30s%s"," ","* 3.返回 *\n\n");
printf("%30s%s"," ","* 4.退出 *\n\n");
printf("%30s%s"," ","********************\n");
}
void Menu_Sea()
{
system("cls");
printf("\n\n\n");
printf("%30s%s"," "," 查詢貨物信息 \n\n");
printf("%30s%s"," ","********功能*******\n\n");
printf("%30s%s"," ","* 1.按名稱 *\n\n");
printf("%30s%s"," ","* 2.按編號 *\n\n");
printf("%30s%s"," ","* 3.返回 *\n\n");
printf("%30s%s"," ","* 4.退出 *\n\n");
printf("%30s%s"," ","********************\n");
}
void Menu_Qx() /*權限菜單*/
{
system("cls");
printf("\n\n\n");
printf("%25s%s"," "," 歡迎進入 \n");
printf("%25s%s"," "," 貨物管理體統(tǒng) \n\n\n");
printf("%25s%s"," ","**********功能*********\n\n");
printf("%25s%s"," ","* 1.主管 *\n\n");
printf("%25s%s"," ","* 2.普通用戶 *\n\n");
printf("%25s%s"," ","* 3.退出 *\n\n");
printf("%25s%s"," ","***********************\n");
}
void Menu_zg() /*主管菜單*/
{
system("cls");
printf("\n\n\n");
printf("%15s%s"," "," 貨物管理體統(tǒng) \n\n\n");
printf("%15s%s"," ","*****************主管功能******************\n\n");
printf("%15s%s"," ","* 1.錄入貨物信息 *\n");
printf("%15s%s"," ","* 2.刪除貨物信息 *\n");
printf("%15s%s"," ","* 3.查找貨物信息 *\n");
printf("%15s%s"," ","* 4.顯示貨物信息 *\n");
printf("%15s%s"," ","* 5.差10天過物信息(促銷) *\n");
printf("%15s%s"," ","* 6.統(tǒng)計貨物數(shù)量(補貨) *\n");
printf("%15s%s"," ","* 7.實時收益 *\n");
printf("%15s%s"," ","* 9.排序日期差 *\n");
printf("%15s%s"," ","* 10.保存文件 *\n");
printf("%15s%s"," ","* 11.返回 *\n");
printf("%15s%s"," ","* 12.退出 *\n");
printf("%15s%s"," ","*******************************************\n");
}
void Menu_pt() /*普通菜單*/
{
printf("%15s%s"," "," 貨物管理體統(tǒng) \n\n\n");
printf("%15s%s"," ","*****************普通用戶功能***************\n\n");
printf("%15s%s"," ","* 1.查找貨物信息 *\n");
printf("%15s%s"," ","* 2.顯示貨物信息 *\n");
printf("%15s%s"," ","* 3.排序貨物銷量 *\n");
printf("%15s%s"," ","* 4.返回 *\n");
printf("%15s%s"," ","* 5.退出 *\n");
printf("%15s%s"," ","*************************************************\n");
}
void Isaveflag(Link L)
{
char ch;
if (saveflag)
{
printf("您已經(jīng)修改數(shù)據(jù)了,是否要保存退出(y/n):");
getchar();
scanf("%c",&ch);
if (ch=='y'||ch=='Y')
{
Wb_Save(L);
Er_Save(L);
exit(0);
}
else
exit(0);
}
else
exit(0);
}
int IsPassword() /*密碼是否通過*/
{
char password[7];
char mypassword[]="123456";
static int n=3;
int i;
system("cls");
for (;n>0;n--)
{
switch(n)
{
case 1:
case 2: printf("密碼錯誤,您還有%d次機會,請再輸入:",n);break;
case 3: printf("請輸入6位進入主管功能的密碼:");getchar();break;
}
for ( i=0;i<6;i++)
{
password[i]=getch();
printf("*");
}
getchar();
password[6]='\0';
if (strcmp(mypassword,password)==0)
{
printf("***密碼正確***");
getchar();
return 1;
}
}
printf("恭喜你,三次都輸錯了,無法再輸入密碼,按任意鍵返回...");
getchar();
return 0;
}
void Sort_goods(Link L,char s[])
{
if (!L->next)
{
system("cls");
printf("\n沒有貨物信息,無法使用排序功能\n");
getchar();
return;
}
else
{
if (strcmp(zg,s)==0)
{
system("cls");
for (;;)
{
Menu_sort_zg();
switch(select(1,7))
{
case 1:Sort_by_ways(L,zg,1);break; /*名稱*/
case 2:Sort_by_ways(L,zg,2);break; /*編號*/
case 3:Sort_by_ways(L,zg,3);break; /*銷量*/
case 4:Sort_by_ways(L,zg,4);break; /*利潤*/
case 5:Sort_by_ways(L,zg,5);break; /*保期*/
case 6:return;break;
case 7:Isaveflag(L);break;
}
getchar();
}
}
else
{
system("cls");
for (;;)
{
Menu_sort_pt();
switch(select(1,7))
{
case 1:Sort_by_ways(L,pt,1);break; /*名稱*/
case 2:Sort_by_ways(L,pt,2);break; /*編號*/
case 3:Sort_by_ways(L,pt,3);break; /*售價*/
case 4:Sort_by_ways(L,pt,4);break; /*銷量*/
case 5:Sort_by_ways(L,pt,5);break; /*銷量*/
case 6:return;break;
case 7:Isaveflag(L);break;
}
getchar();
}
}
}
}
void Sea_goods(Link L,char s[])
{
if (!L->next)
{
system("cls");
printf("\n***沒有貨物記錄,不能進入查詢功能***\n");
return ;
}
else
{
system("cls");
for (;;)
{
Menu_Sea();
switch(select(1,4))
{
case 1:Sea_by_name(L,s);break;
case 2:Sea_by_num(L,s);break;
case 3:return;break;
case 4:Isaveflag(L);break;
}
getchar();
}
}
}
void Del_goods(Link L)
{
if (!L->next)
{
system("cls");
printf("\n***沒有貨物記錄,不能使用刪除功能***\n");
return ;
}
else
{
system("cls");
for (;;)
{
Menu_del();
switch (select(1,4))
{
case 1:Del_by_name(L);break;
case 2:Del_by_num(L);break;
case 3:return;break;
case 4:Isaveflag(L);break;
}
getchar();
}
}
}
void main_zg(Link L) /*主管功能*/
{
system("cls");
for (;;)
{
Menu_zg();
switch (select(1,12))
{
case 1:Add_goods(L);saveflag=1;break; /*增加貨物信息*/
case 2:Del_goods(L);break; /*刪除學生信息*/
case 3:Sea_goods(L,zg);break; /*按編號名字查詢*/
case 4:system("cls");Disp(L,zg);break;
case 5:Dz_by_data(L);break;
case 6:Buhuo(L);break;
case 7:Disp(L,zg);Sum_Income(L);Disp(L,zg);break;
case 9:Sort_goods(L,zg);break;
case 10:Wb_Save(L);Er_Save(L);break;
case 11:return;break;
case 12:Isaveflag(L);break;
}
getchar();
}
}
void main_pt(Link L) /*普通功能*/
{
system("cls");
for (;;)
{
Menu_pt();
switch (select(1,5))
{
case 1:Sea_goods(L,pt);break; /*按編號名字查詢*/
case 2:system("cls");Disp(L,pt);break;
case 3:Sort_goods(L,pt);break;
case 4:return;break;
case 5:Isaveflag(L);break;
}
getchar();
system("cls");
}
}
int main()
{
Link L;
FILE *in;
Node *p,*r;
int count=0;
L=(Node *)malloc(sizeof(Node));
L->next=NULL;
r=L;
if ((in=fopen("d:\\Goods","ab+"))==NULL) /*以追加方式打開二進制文件*/
{
printf("\n***打開文件失敗***\n");
exit(0);
}
while (!feof(in))
{
p=(Node *)malloc(sizeof(Node));
if (fread(p,sizeof(Node),1,in))
{
p->next=r->next;
r->next=p;
count++;
}
}
fclose(in);
for (;;)
{
Menu_Qx();
switch (select(1,3))
{
case 1:if(IsPassword())
{
main_zg(L);
}
break;
case 2:main_pt(L);break;
case 3:Isaveflag(L);break;
}
getchar();
}
return 0;
}