找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3483|回复: 0
打印 上一主题 下一主题
收起左侧

基于c语言的简易商品信息管理系统程序源码

[复制链接]
跳转到指定楼层
楼主
ID:203072 发表于 2018-7-18 20:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于c语言的简易管理系统,已用visual c++6.0调试可用

单片机源程序如下:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #define PR printf
  6. #define SC scanf
  7. struct goods
  8. {
  9.         int num;
  10.         char name[20];
  11.         char sort[20];
  12.         int count;
  13.         float price;
  14. }goods[100];                //全局定义结构体名称

  15. int k,n,i;

  16. void input();
  17. void sequence();
  18. void purchase();
  19. void sell();
  20. void edit();
  21. void correct();
  22. void search();
  23. void scan();
  24. void reserve();
  25. int open();

  26. void main ()
  27. {       
  28.         i=1;
  29.         while(i) /*菜单选择界面*/
  30.         {
  31.                 system("color F0");
  32.                 PR("\n\n--★-☆--★-☆--☆-★--☆-★--☆-☆--★-\n");
  33.                 PR("\n\t\t\t    商品信息管理系统\t\n\n");
  34.                 PR("\t  1 →重新输入商品信息\n\n");
  35.                 PR("\t  2 →排序商品信息\n\n");
  36.                 PR("\t  3 →输入进货信息\n\n");
  37.                 PR("\t  4 →输入销售信息\n\n");
  38.                 PR("\t  5 →增加/删除商品\n\n");
  39.                 PR("\t  6 →修改商品信息\n\n");
  40.                 PR("\t  7 →查询商品信息\n\n");
  41.                 PR("\t  8 →浏览商品信息\n\n");
  42.                 PR("\t  9 →保存商品信息\n\n");
  43.                 PR("\t  10→打开一个文件\n\n");
  44.                 PR("\t  0 →退出系统\n\n");
  45.                 PR("\n\n--☆-★--☆-★--☆-☆--★-☆--★-☆--★-");
  46.                 PR("\n\n");
  47.                 PR("\t请选择您所要的操作:");
  48.                 fflush(stdin);
  49.                 SC("%d",&k);
  50.                 system("cls");
  51.                 switch(k)  
  52.                 {
  53.                 case 1: input();break;
  54.                 case 2: sequence();break;
  55.                 case 3: purchase();break;
  56.                 case 4: sell();break;
  57.                 case 5: edit();break;
  58.                 case 6: correct();break;
  59.                 case 7: search();break;
  60.                 case 8: scan();break;
  61.                 case 9: reserve();break;  
  62.                 case 10: open();break;
  63.                 case 0: PR("\n\n\t…………谢谢使用,欢迎再来,再见O(∩_∩)O…………");exit(0);
  64.                 default: puts("输入错误,请按任意健返回主菜单:\n"); break;
  65.                 }
  66.                 system("cls");   /*清屏*/
  67.         }
  68. }

  69. void input()  /*功能1:重新输入商品信息*/
  70. {
  71.         PR("\n\n\t\t请输入需要建立新库存的商品数量:");
  72.         SC("%d",&n);
  73.         system("cls");  
  74.         for(i=0;i<n;i++)   /*用循环实现输入n个商品*/
  75.         {
  76.                 PR("\n\t 请输入商品的编号:(数字)");
  77.                 SC("%ld",&goods[i].num);
  78.                 PR("\n\t 请输入商品的名称:");
  79.                 SC("%s",goods[i].name);
  80.                 PR("\n\t 请输入商品的种类:");
  81.                 SC("%s",goods[i].sort);
  82.                 PR("\n\t 请输入商品的数量:(数字)");
  83.                 SC("%d",&goods[i].count);
  84.                 PR("\n\t 请输入商品的单价:(数字)");
  85.                 SC("%f",&goods[i].price);
  86.                 PR("\n …………………………………………………………………………………………………\n");
  87.         }
  88.         PR("\tPlease press any key to continue");
  89.         getch();
  90.         main();   
  91. }

  92. void sequence()   /*功能2:排序商品信息*/
  93. {
  94.         int temp;
  95.         float temptemp;
  96.         char p1[30],p2[30];

  97.         for(k=0;k<n-1;k++)    /*按商品类别排序*/
  98.                 for(i=0;i<n-k-1;i++)   /*冒泡排序*/
  99.                         if(strcmp(goods[i].sort,goods[i+1].sort)>0)        /*按商品类别首字母由小到大排序*/
  100.                         {
  101.                                 temp=goods[i].num;
  102.                                 goods[i].num=goods[i+1].num;
  103.                                 goods[i+1].num=temp;               
  104.                                 strcpy(p1,goods[i].name);
  105.                                 strcpy(goods[i].name,goods[i+1].name);
  106.                                 strcpy(goods[i+1].name,p1);
  107.                                 strcpy(p2,goods[i].sort);
  108.                                 strcpy(goods[i].sort,goods[i+1].sort);
  109.                                 strcpy(goods[i+1].sort,p2);       
  110.                                 temp=goods[i].count;
  111.                                 goods[i].count=goods[i+1].count;
  112.                                 goods[i+1].count=temp;       
  113.                                 temptemp=goods[i].price;
  114.                                 goods[i].price=goods[i+1].price;
  115.                                 goods[i+1].price=temptemp;       
  116.                         }
  117.                         PR("--------------------------------------------------------------------------------");
  118.                         PR("\n\t\t按商品类别排序后的商品信息\n\n");
  119.                         PR("\n|★商品类别★   商品编号    商品名称     商品数量      商品单价|\n");
  120.                         for(i=0;i<n;i++)      
  121.                         {
  122.                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  123.                         }

  124.                         for(k=0;k<n-1;k++)   /*按商品名称排序*/
  125.                                 for(i=0;i<n-k-1;i++) /*冒泡排序*/
  126.                                         if(strcmp(goods[i].name,goods[i+1].name)>0)        /*按商品首字母由小到大排序*/
  127.                                         {
  128.                                                 temp=goods[i].num;
  129.                                                 goods[i].num=goods[i+1].num;
  130.                                                 goods[i+1].num=temp;               
  131.                                                 strcpy(p1,goods[i].name);
  132.                                                 strcpy(goods[i].name,goods[i+1].name);
  133.                                                 strcpy(goods[i+1].name,p1);
  134.                                                 strcpy(p2,goods[i].sort);
  135.                                                 strcpy(goods[i].sort,goods[i+1].sort);
  136.                                                 strcpy(goods[i+1].sort,p2);       
  137.                                                 temp=goods[i].count;
  138.                                                 goods[i].count=goods[i+1].count;
  139.                                                 goods[i+1].count=temp;       
  140.                                                 temptemp=goods[i].price;
  141.                                                 goods[i].price=goods[i+1].price;
  142.                                                 goods[i+1].price=temptemp;       
  143.                                         }
  144.                                         PR("--------------------------------------------------------------------------------");
  145.                                         PR("\n\t\t按商品名称排序后的商品信息\n");
  146.                                         PR("\n|商品类别    商品编号    ★商品名称★    商品数量      商品单价|\n");
  147.                                         for(i=0;i<n;i++)      
  148.                                         {
  149.                                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  150.                         }

  151.         for(k=0;k<n-1;k++)   /*按编号排序*/
  152.                 for(i=0;i<n-k-1;i++)  /*冒泡排序*/
  153.                         if(goods[i].num>goods[i+1].num)        /*按编号由小到大排序*/
  154.                         {
  155.                                 temp=goods[i].num;
  156.                                 goods[i].num=goods[i+1].num;
  157.                                 goods[i+1].num=temp;               
  158.                                 strcpy(p1,goods[i].name);
  159.                                 strcpy(goods[i].name,goods[i+1].name);
  160.                                 strcpy(goods[i+1].name,p1);
  161.                                 strcpy(p2,goods[i].sort);
  162.                                 strcpy(goods[i].sort,goods[i+1].sort);
  163.                                 strcpy(goods[i+1].sort,p2);       
  164.                                 temp=goods[i].count;
  165.                                 goods[i].count=goods[i+1].count;
  166.                                 goods[i+1].count=temp;       
  167.                                 temptemp=goods[i].price;
  168.                                 goods[i].price=goods[i+1].price;
  169.                                 goods[i+1].price=temptemp;       
  170.                         }
  171.                         PR("--------------------------------------------------------------------------------");
  172.                         PR("\n\t\t按商品编号排序后的商品信息\n\n");
  173.                         PR("\n|商品类别    ★商品编号★   商品名称     商品数量      商品单价|\n");
  174.                         for(i=0;i<n;i++)      
  175.                         {
  176.                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  177.                         }
  178.                                
  179.                         PR("--------------------------------------------------------------------------------\n");
  180.                         PR("please press any key to continue");
  181.                         getch();
  182.                         main();   
  183. }

  184. void purchase()  /*功能3:进货商品信息*/                                
  185. {
  186.         long temp;    /*定义临时变量表示刚进货的商品编号*/
  187.         int j;
  188.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  189.         for(i=0;i<n;i++)      
  190.         {
  191.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  192.         }
  193.         PR("\n\t请输入刚进货的商品编号:");
  194.         SC("%ld",&temp);
  195.         fflush(stdin);
  196.         PR("\n\t请输入刚进货的商品数量:");
  197.         SC("%d",&j);
  198.         fflush(stdin);
  199.         for(i=0;i<n;i++)    /*寻找与进货相同的商品信息*/
  200.                 if(temp==goods[i].num)
  201.                         goods[i].count=goods[i].count+j;  /*更改商品数量*/
  202.         PR("\n\tpress any key to continue:");
  203.         getch();
  204.         PR("\n\t进货后的商品信息:");
  205.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  206.         for(i=0;i<n;i++)      
  207.         {
  208.                 PR("|%10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  209.         }
  210.         PR("\n\n\t\tPress any key to enter menu");  
  211.         getch();  
  212.         main();
  213. }
  214. void sell()  /*功能4:销售商品信息*/
  215. {
  216.         int number,sell;    /*临时变量temp:表示刚销售的商品编号*/
  217.         PR("\n|\t商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  218.         for(i=0;i<n;i++)      
  219.         {
  220.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  221.         }
  222.         PR("\n\t请输入刚销售的商品编号:");
  223.         SC("%ld",&number);
  224.         fflush(stdin);
  225.         PR("\n\t请输入刚销售的商品数量:");
  226.         SC("%d",&sell);
  227.       for(i=0;i<n;i++)  /*找到刚销售的商品信息*/
  228.       {
  229.                 if(number==goods[i].num)
  230.                 {
  231.                         for(;sell>goods[i].count;)   /*如果销售额大于库存量,则出现错误提示*/
  232.                         {
  233.                                 PR("\n\t售出数量大于商品原有数量,请重新输入:");
  234.                                 SC("%d",&sell);
  235.                         }
  236.                         goods[i].count=goods[i].count-sell;   /*更改商品数量的功能*/
  237.                 }
  238.         }
  239.         PR("\n\tpress any key to continue:");
  240.         getch();
  241.         PR("\n|     销售后商品信息:                                         |");
  242.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  243.         for(i=0;i<n;i++)      
  244.         {
  245.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  246.         }
  247.         PR("\n\tPress any key to enter menu");   
  248.         getch();
  249.         main();    /*返回功能选择界面*/
  250. }       

  251. void edit()  /*功能5:添加或删除商品信息*/                                            
  252. {
  253.         void add(); /*声明子函数*/
  254.         void delete();
  255.         PR("\n\t请选择:1.添加商品信息;    2.删除商品信息;\n");
  256.         SC("%d",&k);
  257.         switch(k)  /*用switch语句实现功能选择*/
  258.         {
  259.         case 1: add();break;
  260.         case 2: delete();break;
  261.         }
  262.         PR("\n\tPress any key to enter menu");
  263.         getch();
  264.         main();  /*返回主菜单*/
  265. }

  266. void add()  /*添加商品信息*/
  267. {            /*定义子函数*/
  268.         PR("\t*请输入所添加商品的商品编号:");
  269.         SC("%ld",&goods[n].num);
  270.         PR("\n\t请输入所添加商品的名称:");
  271.         SC("%s",goods[n].name);
  272.         PR("\n\t请输入所添加商品的类别:");
  273.         SC("%s",goods[n].sort);
  274.         PR("\n\t请输入所添加商品的数量:");
  275.         SC("%d",&goods[n].count);
  276.         PR("\n\t请输入所添加商品的价格:");
  277.         SC("%f",&goods[n].price);
  278.         n=n+1;
  279.         PR("\n");
  280.         return;
  281. }   
  282.      
  283. void delete()  /*删除商品信息*/
  284. {             /*定义子函数*/
  285.         int temp; /*定义局部变量*/                        
  286.         int j;
  287.         PR("\n|\t商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  288.         for(i=0;i<n;i++)      
  289.         {
  290.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  291.         }
  292.         PR("\n请输入要删除的商品编号:");
  293.         SC("%d",&temp);
  294.         PR("\n\n");
  295.         for(i=0;i<n;i++)
  296.         {
  297.                 if(temp==goods[i].num)
  298.                 {
  299.                         for(j=i;j<n;j++)        /*全部前移覆盖一位*/
  300.                         {
  301.                                 goods[j].num=goods[j+1].num;
  302.                                 strcpy(goods[j].name,goods[j+1].name);
  303.                                 strcpy(goods[j].sort,goods[j+1].sort);
  304.                                 goods[j].count=goods[j+1].count;
  305.                                 goods[j].price=goods[j+1].price;
  306.                         }
  307.                         n=n-1;   /*商品总库存量减少*/
  308.                 }
  309.         }
  310.         for(i=0;i<n;i++)
  311.         {
  312.                 PR("删除后的商品信息为:\n");
  313.                 PR("\n|\t商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  314.                 for(i=0;i<n;i++)      
  315.                 {
  316.                         PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  317.                 }
  318.         }
  319.         return;    /*返回主界面*/
  320. }

  321. void correct()  /*功能6:修改商品信息*/                                   
  322. {       
  323.         int temp;  /*定义局部变量*/
  324.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  325.         for(i=0;i<n;i++)      
  326.         {
  327.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  328.         }
  329.         PR("\t请输入要修改的商品的编号:");  
  330.         SC("%d",&temp);   /*输入新的商品信息*/
  331.         PR("\n");
  332.         for(i=0;i<n;i++)   /*保存新的商品信息*/
  333.         {
  334.                 if(temp==goods[i].num)
  335.                 {
  336.                         PR("\t请输入一个新的的商品编号:");
  337.                         SC("%ld",&goods[i].num);
  338.                         PR("\n\t请输入新的商品的名称:");
  339.                         SC("%s",goods[i].name);
  340.                         PR("\n\t请输入新的商品的类别:");
  341.                         SC("%s",goods[i].sort);
  342.                         PR("\n\t请输入新的商品的数量:");
  343.                         SC("%d",&goods[i].count);
  344.                         PR("\n\t请输入新的商品价格:");
  345.                         SC("%f",&goods[i].price);
  346.                         PR("\n");       
  347.                 }
  348.         }
  349.         PR("修改之后的商品信息为:\n");
  350.         PR("\n|\t商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  351.         for(i=0;i<n;i++)      
  352.         {
  353.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  354.         }
  355.         PR("Please press any key to continue");  /*返回功能选择界面*/
  356.         getch();
  357.         main();   /*返回主菜单*/
  358. }

  359. void search()  /*功能7:查询商品信息*/
  360. {
  361.         int a;   /*定义局部变量*/
  362.         int temp1;
  363.         char temp2[30],temp3[20];
  364.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  365.         for(i=0;i<n;i++)      
  366.         {
  367.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  368.         }
  369.         PR("\n1-按商品编号查询\n2-按商品名查询\n3-按商品类别查询\n4-查需要进货的商品\n");
  370.         PR("\n\t请输入数字确定查询方式:");
  371.         SC("%d",&k);
  372.         switch(k)   /*查询方式的选择*/
  373.         {
  374.         case 1:
  375.                 PR("\n\t请输入要查询的商品的编号:");  /*按商品编号查询*/
  376.                 SC("%d",&temp1);
  377.                 PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  378.                 for(i=0;i<n;i++)
  379.                         if(temp1==goods[i].num)
  380.                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  381.                 break;  
  382.         case 2:
  383.                 PR("\n\t请输入要查询的商品名:");  /*按商品名查询数据*/
  384.                 SC("%s",temp2);                       
  385.                 PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  386.                 for(i=0;i<n;i++)
  387.                         if(strcmp(temp2,goods[i].name)==0)
  388.                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  389.                 break;  
  390.       case 3:
  391.                 PR("\n\t请输入要查询的商品类别:");   /*按商品类别查询数据*/
  392.                 SC("%s",temp3);
  393.                 PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  394.                 for(i=0;i<n;i++)
  395.                         if(strcmp(temp3,goods[i].sort)==0)
  396.                                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  397.                 break;  
  398.       case 4:  
  399.                 printf("请输入进货标准:(标准库存)");
  400.                 scanf("%d",&a);
  401.                 for(i=0;i<n;i++)  /*查询需要进货的商品名*/
  402.                 {
  403.                         if(goods[i].count<a)
  404.                                 PR("\n需要进货的商品名:%s    现有库存量:%d\n",goods[i].name,goods[i].count);
  405.                 }
  406.                 break;
  407.         }
  408.         PR("\n\n\tPress any key to enter menu");
  409.         getch();
  410.         main();  
  411. }

  412. void scan()   /*功能8:浏览商品信息*/                                                  
  413. {
  414.                 PR("\t\t\t浏览输入的商品信息\n");
  415.                 PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  416.                 for(i=0;i<n;i++)      
  417.                 {
  418.                         PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  419.                 }
  420.                 PR("Press any key to enter menu");
  421.                 getch();
  422.                 main();
  423. }

  424. void reserve()  /*功能9:保存文件*/  
  425. {
  426.         FILE *fp;
  427.         system("cls");     /*清屏*/
  428.         PR("\n\t请输入文件名");
  429.         fp=fopen("GOODS.txt","w+");   /*创建并打开一个文件,并得到该文件的地址*/
  430.         PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  431.         for(i=0;i<n;i++)
  432.         {
  433.                 fprintf(fp,"%10s    %5d   %10s    %5d        %6.2f\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  434.                 PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  435.         }
  436.         fclose(fp);      /*关闭文件*/
  437.         PR("文件已经保存!\n");
  438.         getch();   
  439.         system("cls");   /*清屏*/
  440.         main();
  441. }

  442. int open()
  443. {       
  444.         int number=0;
  445.         FILE *fp;
  446.         if((fp=fopen("GOODS.txt","r"))==NULL)/*p1是图书管理系统的书籍信息文件指针*/
  447.         {
  448.                 PR("还没有保存过文件呢,朋友\n");
  449.                 PR("按任意键回到主菜单!\n");
  450.                 getch();
  451.                 return(0);
  452.                 main();
  453.         }
  454.         else
  455.         {       
  456.                 n=0;
  457.                 fflush(stdin);
  458.                 PR("文件内容如下:\n\n\n");
  459.                 PR("\n|商品类别     商品编号     商品名称      商品数量      商品单价|\n");
  460.                 for (i=0; !feof(fp); i++)
  461.                 {
  462.                         fflush(stdin);
  463.                         /*fscanf(里边必须加\n,否则会有奇怪的一行0)*/
  464.                         fscanf(fp,"%s %d %s %5d %f\n",goods[i].sort,&goods[i].num,goods[i].name,&goods[i].count,&goods[i].price);
  465.                         PR("|%-10s    %5d   %10s         %5d         %6.2f |\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);
  466.                         n++;
  467.                 }
  468.                 fclose(fp);
  469.                 printf("按任意键回到主菜单!\n\n");
  470.                 getch();
  471.                 return(n);
  472.                 main();
  473.         }
  474. }
复制代码

所有资料51hei提供下载:
基于c语言的简易商品管理系统.rar (3.27 KB, 下载次数: 10)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表