|
发表于 2022-11-11 09:52:20
|
显示全部楼层
本帖最后由 jackz007 于 2022-11-11 09:53 编辑
只是排除了逻辑障碍,不能保证业务逻辑正确
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct Goods
- {
- int id ; //产品编号
- char kudan1[256] ; //入库单号
- char kudan2[256] ; //出库单号
- char name[256] ; //名称
- int num ; //数量
- float cost ; //成本
- float price ; //售价
- float profit ; //利润
- } goods[50] , rk[20] , ck[20] , cx[90] ;
- int S = 0 ; //产品种类
- void input()//入库
- {
- int a , i = 0 , j = 0 ;
- printf("请输入入库产品种类数:") ;
- scanf("%d" , & a) ;
- for(i = 0 ; i < a ; i ++) {
- printf("请输入第 %d 个产品信息\n" , i + 1) ;
- printf("产品名称:") ;
- scanf("%s" , goods[i] . name) ;
- printf("产品编号:") ;
- scanf("%d", & goods[i] . id) ;
- printf("入库单号 (例:2022年1月填为202201) :") ;
- scanf("%s", goods[i] . kudan1) ;
- printf("数量:") ;
- scanf("%d" , & goods[i] . num) ;
- rk[i].num = goods[i] . num ;
- }
- int flag = 0 ;
- for(i = 0 ; i < S ; i ++) {
- if(rk[i] . id == goods[i] . id) {
- flag = 1 ;
- goods[i] . num = rk[i] . num + goods[i] . num ;
- break ;
- }
- }
- if (flag == 0) S ++ ;
- }
- void output()//出库
- {
- int b , j = 0 , i = 0 , t , flag ;
- printf("请输入本次出库产品种类数:") ;
- scanf("%d" , & b) ;
- for(i = 0 ; i < b ; i ++) {
- printf("请输入出库单号:") ;
- scanf("%s" , goods[i] . kudan2) ;
- printf("\n") ;
- printf("请输入第 %d 个产品编号:" , (i + 1)) ;
- scanf("%d" , & ck[i] . id) ;
- printf("请输入出库数量:") ;
- scanf("%d", & ck[i] . num) ;
- }
- flag = 0 ;
- for(i = 0 ; i < S ; i ++) {
- t = 0 ;
- if(ck[i] . id == goods[i] . id) {
- flag = 1 ;
- if(goods[i] . num == ck[i] . num) {
- printf("库存清零\n") ;
- S -- ;
- } else if((goods[i] . num - ck[i] . num) < 0) {
- printf("库存不足,出库失败\n") ;
- } else {
- goods[i] . num = (goods[i] . num - ck[i] . num) ;
- printf("出库成功\n") ;
- }
- break ;
- }
- }
- }
- void search()
- {
- int i , s , flag ;
- char kudan1[256] , kudan2[256] ;
- while(1) {
- for(;;) {
- printf("\n") ;
- printf("\t * [信息查询] * \n\n") ;
- printf("\t 1.查询入库单\n") ;
- printf("\t 2.查询出库单\n") ;
- printf("\t 0.退出菜单\n\n") ;
- printf("\t请选择:") ;
- scanf("%d" , & s) ;
- if(s >= 0 && s <= 3) break ;
- else printf("*无效选择*\n") ;
- }
- flag = 0 ;
- printf("\n") ;
- switch(s) {
- case 1 : printf("请输入要查询入库单号 :") ;
- scanf("%s" , kudan1) ;
- for(i = 0 ; i < S ; i ++) {
- if(! strcmp(goods[i] . kudan1 , kudan1)) {
- flag = 1 ;
- printf("入库单号 编号 名称 入库数量 成本\n") ;
- printf("%3s %3d %3s %3d %3f\n" , kudan1 , goods[i] . id , goods[i] . name , rk[i] . num , goods[i]. cost) ;
- }
- }
- if(flag == 0) printf("该单号不存在!\n") ;
- break ;
- case 2: printf("请输入要查询出库单号 :") ;
- scanf("%s", kudan2) ;
- for(i = 0 ; i < S ; i ++) {
- if(! strcmp(goods[i] . kudan2 , kudan2)) {
- flag = 1 ;
- printf("出库单号 编号 名称 数量 利润\n") ;
- goods[i].profit=goods[i].price-goods[i].cost;
- printf("%3s %3d %3s %3d %3f\n" , kudan2 , goods[i] . id , goods[i] . name , ck[i] . num , goods[i] . profit) ;
- }
- }
- if(flag == 0) printf("该单号不存在!\n") ;
- break ;
- default: return ;
- }
- }
- }
- void menu()
- {
- int um ;
- for(;;) {
- for(;;) {
- printf("\n") ;
- printf("\t * [库存信息系统] *\n\n") ;
- printf("\t 1. 商品入库\n") ;
- printf("\t 2. 商品出库\n") ;
- printf("\t 3. 信息查询\n") ;
- printf("\t 0. 退出\n\n") ;
- printf("\t 请选择 :") ;
- scanf("%d" , & um) ;
- if(um >= 0 && um <= 3) break ;
- else printf("*无效选择*\n") ;
- }
- printf("\n") ;
- switch(um) {
- case 1:
- input() ;
- break ;
- case 2:
- output() ;
- break ;
- case 3:
- search() ;
- break ;
- default: return ;
- }
- }
- }
- int main()
- {
- menu() ;
- system("pause") ;
- return 0 ;
- }
复制代码 |
|