#include #include #include #include #include int bgnumber = 023; //客户号 int goodsn = 0; //商品量的统计 int ordern = 0; //订单的统计 void secondmain(); //管理维护子菜单 void shuru(); //输入商品 void browse(); //浏览商品 void search(); //搜索商品 void order(); //订购商品 void seek(); //查询订单 void add(); //增加商品 void del(); //删除商品 void savesp(); //保存商品 void savedd(); //保存订单 void daoru(); //从文本导入商品 struct goods { char name[30]; //商品名 int number; //货号 char vender[30]; //厂家 char filed[100]; //产地 int stock; //库存 double unvalent; //单价 }; struct goods a[100]; struct order { int goodnumber; //货号 int ordernumber; //订购量 int ordertime; //日期时间 char customername[10]; //客户名 char customeraddress[100]; //客户地址 int customernumber; //客户编号 }; struct order b[100]; int main(void) { printf(".. .. ......... .............. ........ .\n............ ... .. ....................@@\n.........@`..... .....................@@o \no.........@@.... ........@...... ..`@@@...\n.@@........@@..................O@O....@@ .......O@@@*... \n...@@O......@@@.....*O@@@@@@@@@@@..O@@@... ...@@@@o..... \n....@@@@`....@@@@@@@@@@@@@@@@@@@....@@......@@@@O....... \n.....@@@@/...@@@@............@*..O@@.....@@@@O......... \n........@@@@*..@@......oOOOO\\....@@@...*@@@@@.....o@.... \n.@@.......@@@@....@@@@@@@@@@@@@@@@@..O@@@@@....O@@@..... \n... @@@O....@@@@@@@@...........O@O.@@@@@@...@@@@O....... \n.. ...@@@@...O@@..... ... ......@@@@@@..@@@@@O......... \n ..O@@@...O*.....OOOO...@@@@@@..@@o..@@@. . . ... \n ......\\Oo...O@@@@@@@@@@@@@@..o.......@@O.. .... \n ...... ..O@@@@O.. ...O@@@*...........@@@.... \n . ... ..@@@@*.o@@/...@@@...@@@@....o@@.... \n............. .........O@@@@o..@@@..@@..@@...*@@*...... \n .... . ..... .......*..`@@*...@@@...@@@@....O@@.... . . \n............O......O@@@......@@@@...... ....@@@..... .. \n. ......O@@@..O@.o@@@@@@@@@@@@@*....... .. .@@O .. . \n......o..@@\\@@..@@@@o...oOOo................@@@. \n. ......@O@...@@@@.......... . ...o@......@@@.. \n . ....O^....@@@. ...... . .. .....*@@@O@@@@... \n............@@..... . ...... .. ......O@@@@O.... \n ../@ ... o@@@o... ....... \n .... .. ..\\@@@.. ....... \n ... .... .. .*@@@.... \n .... ... .. ....@@*.. \n"); Sleep(1000); int i; daoru(); do { system("cls"); printf("\n\n\n\n\n\n"); printf("**************************欢迎使用商品订购系统**********************************\n"); printf(" 1.浏览商品信息 \n"); printf(" 2.订购商品 \n"); printf(" 3.订单查询 \n"); printf(" 4.搜索商品 \n"); printf(" 5.管理菜单 \n"); printf(" 0.退出系统 \n"); printf("********************************************************************************\n"); printf("\n\n 选择: "); scanf("%d",&i); switch(i) { case 1: system("cls"); browse(); break; case 2: system("cls"); order(); break; case 3: system("cls"); seek(); break; case 4: search(); break; case 5: secondmain(); break; case 0: //退出系统的界面 system("cls"); printf("\n\n\n\n\n\n\n\n"); printf("\n\n 欢迎使用本系统\n\n\n\n\n 欢迎再次使用\n"); exit(0); default: printf("请从0-5中选择!!!"); break; } } while(1); return 0; } //浏览商品 void browse() { int i; system("cls"); printf(" 商品信息\n"); for (i = 0; i < goodsn; i++) { printf("品名 : %s\n",a[i].name); printf("货号 : %d\n",a[i].number); printf("厂家 : %s\n",a[i].vender); printf("产地 : %s\n",a[i].filed); printf("库存 : %d\n",a[i].stock); printf("单价 : %.2lf\n\n\n",a[i].unvalent); } printf("\n\n\n\n\n\n "); printf("返回主菜单\n"); printf(" "); system("pause"); return; } //商品的订购 void order() { char ch; int i, j, t, c = 1; int n = 1; int m = 0; do { switch(n) { case 1: system("cls"); printf(" 商品信息\n"); //显示商品的名称、货号信息,以便于订购 printf("名称 货号 库存\n"); for (i = 0; i < goodsn; i++) { printf("%s %d %d\n\n\n",a[i].name,a[i].number,a[i].stock); } printf("\n\n\n"); printf(" 商品订单\n"); printf("\n 请输入你的第%d个订单信息:\n",m + 1); printf("\n 货号:"); fflush(stdin); scanf("%d",&b[ordern].goodnumber); //检测是否含有此商品 j = 1; for (i = 0; i < goodsn; i++) { if(a[i].number == b[ordern].goodnumber) { j = 0; t = i; } } //若有商品继续购买项目 if(j == 0) { printf("\n 订购量:"); fflush(stdin); scanf("%d",&b[ordern].ordernumber); if (a[t].stock >= b[ordern].ordernumber) { a[t].stock = a[t].stock - b[ordern].ordernumber; //顾客购买后商品的库存计算 printf("\n 日期时间:"); fflush(stdin); scanf("%d",&b[ordern].ordertime); printf("\n 客户名:"); fflush(stdin); gets(b[ordern].customername); printf("\n 客户地址:"); fflush(stdin); gets(b[ordern].customeraddress); printf("\n 客户编号:"); b[ordern].customernumber = bgnumber; printf("%d\n",b[ordern].customernumber); bgnumber++; ordern++; m++; printf("\n\n\n "); system("pause"); } else { printf("\n\n 订购数目超出库存\n"); printf(" "); system("pause"); } } //若没有商品的提示及操作 else { printf("\n\n 查无此货\n"); printf(" "); system("pause"); } case 2: printf("是否继续输入订购?(Y/N)"); fflush(stdin); scanf("%c",&ch); if(ch == 'N' || ch == 'n') { c = 0; break; } else if(ch == 'Y' || ch == 'y') { c = 0; n = 1; break; } else if(ch != 'n' || ch != 'N' || ch != 'Y' || ch != 'y') { n = 0; c = 1; break; } case 0: if(c == 1) { n = 2; } } } while(ch != 'n' && ch != 'N'); system("cls"); return ; } //订单的查询 void seek() { int i; system("cls"); printf(" 订单列表\n"); for (i = 0; i < ordern; i++) { printf("货号 : %d\n",b[i].goodnumber); printf("订购量 : %d\n",b[i].ordernumber); printf("日期时间 : %d\n",b[i].ordertime); printf("客户名 : %s\n",b[i].customername); printf("客户地址 : %s\n",b[i].customeraddress); printf("客户编号 : %d\n\n\n",b[i].customernumber); } printf("\n\n\n\n\n\n "); printf("返回主菜单\n"); printf(" "); system("pause"); return; } //增加商品 void add() { char ch; int i=1; int n = 1; do { switch(n) { case 1: system("cls"); printf(" 商品信息的增加\n"); printf("\n 请输入你的第%d件商品的信息:\n",i); printf("\n 名称:"); fflush(stdin); scanf("%s",a[goodsn].name); printf("\n 货号:"); fflush(stdin); scanf("%d",&a[goodsn].number); printf("\n 厂家:"); fflush(stdin); scanf("%s",a[goodsn].vender); printf("\n 产地:"); fflush(stdin); scanf("%s",a[goodsn].filed); printf("\n 库存:"); fflush(stdin); scanf("%d",&a[goodsn].stock); printf("\n 单价:"); fflush(stdin); scanf("%lf",&a[goodsn].unvalent); i++; goodsn++; case 2: printf("是否继续输入记录?(Y/N)"); fflush(stdin); scanf("%c",&ch); if(ch ==' Y'|| ch == 'y') { n = 1; } if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y') { break; } } } while(ch != 'n' && ch != 'N'); return; } //删除商品 void del() { int i; int j; char ch; int n = 1; do { switch(n) { case 1: system("cls"); printf(" 商品列表\n"); //显示商品的名称、货号信息,以便于下部的删除 for (i = 0; i < goodsn; i++) { printf("名称 : %s\n",a[i].name); printf("ID : %d\n",i); printf("库存 : %d\n\n\n",a[i].stock); } //商品的搜索 printf("\n\n\n 请输入你要删除商品的ID:"); scanf("%d",&j); i = j; while(i < goodsn - 1) { strcpy(a[i].name, a[i + 1].name); a[i].number = a[i + 1].number; strcpy(a[i].filed, a[i + 1].filed); a[i].stock = a[i + 1].stock; a[i].unvalent = a[i + 1].unvalent; strcpy(a[i].vender, a[i + 1].vender); i++; } goodsn--; case 2: printf("是否继续删除商品?(Y/N)"); fflush(stdin); scanf("%c",&ch); if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y') { break; } if(ch ==' Y'|| ch == 'y') { n = 1; break; } } } while(ch != 'n' && ch != 'N'); printf("\n\n\n\n\n\n "); printf("返回附加功能菜单\n"); printf(" "); system("pause"); return; } //商品信息的保存 void savesp() { FILE *fp; int i; fp = fopen("spxx.txt","w"); assert(fp != NULL); fprintf(fp," 商品信息列表\n"); //商品信息的录入 for (i = 0; i < goodsn; i++) { fprintf(fp,"名称: %s\n",a[i].name); fprintf(fp,"货号: %d\n",a[i].number); fprintf(fp,"厂家: %s\n",a[i].vender); fprintf(fp,"产地: %s\n",a[i].filed); fprintf(fp,"库存: %d\n",a[i].stock); fprintf(fp,"单价: %.2lf\n\n\n",a[i].unvalent); } fclose(fp); system("cls"); printf("\n\n\n\n\n\n 商品信息保存成功!!!\n"); printf(" "); system("pause"); return; } //订单的保存信息 void savedd() { FILE *fp; int i; fp = fopen("ddxx.txt","w"); assert(fp != NULL); fprintf(fp," 订单列表\n"); //商品信息的录入 for (i = 0; i < ordern; i++) { fprintf(fp,"货号 :%d\n",b[i].goodnumber); fprintf(fp,"订购量 :%d\n",b[i].ordernumber); fprintf(fp,"日期时间 :%d\n",b[i].ordertime); fprintf(fp,"客户名 :%s\n",b[i].customername); fprintf(fp,"客户地址 :%s\n",b[i].customeraddress); fprintf(fp,"客户号 :%d\n\n\n",b[i].customernumber); } fclose(fp); //保存后信息的反馈 system("cls"); printf("\n\n\n\n\n\n 信息保存成功!!!\n"); printf(" "); system("pause"); return; } //管理维护子菜单 void secondmain() { int i; do { system("cls"); printf("\n\n\n\n\n\n\n"); printf("********************************管理子菜单************************************\n\n"); printf(" 1.输入全部商品 \n"); printf(" 2.增加商品 \n"); printf(" 3.删除商品 \n"); printf(" 4.储存商品 \n"); printf(" 5.储存订单 \n"); printf(" 0.返回上一级 \n"); printf("**************************************************************************\n\n\n\n\n"); printf("\n\n 请输入你所要选择的功能(0~5): "); scanf("%d",&i); switch(i) { case 1: system("cls"); shuru (); break; case 2: system("cls"); add(); break; case 3: system("cls"); del(); break; case 4: system("cls"); savesp(); break; case 5: system("cls"); savedd(); break; case 0: system("cls"); return ; } } while(1); printf(" "); system("pause"); system("cls"); return; } //从键盘输入商品 void shuru() { char ch; int n = 1; goodsn = 0; do { switch(n) { case 1: //商品的录入 system("cls"); printf(" 请重新输入全部商品信息\n"); printf("\n 请输入第%d件商品的信息:\n",goodsn + 1); printf("\n 名称:"); fflush(stdin); gets(a[goodsn].name); printf("\n 货号:"); fflush(stdin); scanf("%d",&a[goodsn].number); printf("\n 厂家:"); fflush(stdin); gets(a[goodsn].vender); printf("\n 产地:"); fflush(stdin); gets(a[goodsn].filed); printf("\n 库存:"); fflush(stdin); scanf("%d",&a[goodsn].stock); printf("\n 单价:"); fflush(stdin); scanf("%lf",&a[goodsn].unvalent); goodsn++; fflush(stdin); case 2: printf("是否继续输入记录?(Y/N)"); fflush(stdin); scanf("%c",&ch); if(ch == 'N' || ch ==' Y'|| ch == 'n'|| ch == 'y') { break; } if(ch ==' Y'|| ch == 'y') { n = 1; break; } case 0: printf("是否继续输入记录?(Y/N)"); fflush(stdin); scanf("%c",&ch); n = 2; } } while(ch != 'n' && ch != 'N'); return; } //导入商品信息 void daoru() { FILE *fp; char ch[30]; double dou; int in; int i = 0; goodsn = 0; fp = fopen("spxx.txt","r"); assert(fp); //从文件中导入商品信息 fscanf(fp,"%s",&ch); while(fscanf(fp,"%s",&ch) != EOF) { fscanf(fp, "%s", &ch); strcpy(a[goodsn].name, ch); fscanf(fp,"%s",&ch); fscanf(fp,"%d",&in); a[goodsn].number = in; fscanf(fp,"%s",&ch); fscanf(fp,"%s",&ch); strcpy(a[goodsn].vender, ch); fscanf(fp,"%s",&ch); fscanf(fp,"%s",&ch); strcpy(a[goodsn].filed, ch); fscanf(fp,"%s",&ch); fscanf(fp,"%d",&in); a[goodsn].stock = in; fscanf(fp,"%s",&ch); fscanf(fp,"%lf",&dou); a[goodsn].unvalent = dou; goodsn++; } fclose (fp); return; } //搜索商品 void search() { int i; int j; char ch; int n = 1; do { switch(n) { case 1: system("cls"); printf(" 商品列表\n"); //显示商品的名称、货号信息,以便于下部的删除 for (i = 0; i < goodsn; i++) { printf("名称 : %s\n",a[i].name); printf("ID : %d\n",i); printf("库存 : %d\n\n\n",a[i].stock); } //商品的搜索 printf("\n\n\n 请输入你要搜索商品的ID:"); scanf("%d",&j); if(0<=j&&j<=goodsn) { printf("名称 : %s\n",a[j].name); printf("货号 : %d\n",a[j].number); printf("厂家 : %s\n",a[j].vender); printf("产地 : %s\n",a[j].filed); printf("库存 : %d\n",a[j].stock); printf("单价 : %.2lf\n\n\n",a[j].unvalent); } case 2: printf("是否继续搜索商品?(Y/N)"); fflush(stdin); scanf("%c",&ch); if(ch == 'N'|| ch == 'n') { break; } if(ch ==' Y'|| ch == 'y') { n = 1; break; } } } while(ch != 'n' && ch != 'N'); printf("\n\n\n\n\n\n "); printf("返回主菜单!\n"); printf(" "); system("pause"); return; }