找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2585|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言元器件信息管理系統(tǒng)源程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:606867 發(fā)表于 2019-9-3 14:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
元器件信息管理系統(tǒng)



單片機(jī)源程序如下:
  1. #include<stdio.h>
  2. #include<stdlib.h>  
  3. #include<string.h>
  4. struct component
  5. {
  6.     char identifier[15];       // 1、編號(hào)
  7.     char type[15];             // 2、類(lèi)型
  8.     char model[15];            // 3、型號(hào)
  9.     char number[15];           // 4、數(shù)目
  10.     char enclosure[15];        // 5、封裝
  11.     char factory[15];          // 6、廠(chǎng)家
  12.     char money[15];            // 7、價(jià)格
  13.     char date[15];             // 8、生產(chǎn)日期
  14. };
  15. //類(lèi)型定義語(yǔ)句  
  16. typedef struct node
  17. {
  18.     struct component data;
  19.     struct node *next;
  20. }Node;
  21. //添加信息函數(shù)
  22. void Add(Node *worker)
  23. {
  24.     Node *p, *q;
  25.     char n[10];
  26.     q = worker;
  27.     while (q->next != NULL)
  28.     {
  29.         q = q->next;     
  30.     }
  31.     while (1)
  32.     {
  33.         printf("提示:輸入0返回主菜單!\n");
  34.         printf("請(qǐng)輸入編號(hào):");
  35.         scanf("%s", n);
  36.         if (strcmp(n, "0") == 0)
  37.         {
  38.             break;
  39.         }
  40.         p = (Node *)malloc(sizeof(Node));
  41.         strcpy(p->data.identifier, n);
  42.         
  43.         printf("請(qǐng)輸入類(lèi)型:");
  44.         scanf("%s", p->data.type);
  45.         printf("請(qǐng)輸入型號(hào):");
  46.         scanf("%s", p->data.model);
  47.         printf("請(qǐng)輸入數(shù)目:");
  48.         scanf("%s", p->data.number);
  49.         printf("請(qǐng)輸入封裝:");
  50.         scanf("%s", p->data.enclosure);
  51.         printf("請(qǐng)輸入廠(chǎng)家:");
  52.         scanf("%s", p->data.factory);
  53.         printf("請(qǐng)輸入價(jià)格:");
  54.         scanf("%s", p->data.money);
  55.         printf("請(qǐng)輸入生產(chǎn)日期:");
  56.         scanf("%s", p->data.date);
  57.         printf("提示:已經(jīng)完成一條記錄的添加!");
  58.         p->next = NULL;
  59.         q->next = p;      
  60.         q = p;        
  61.     }
  62. }
  63. //修改元件信息函數(shù)
  64. int  change(Node *worker)
  65. {
  66.     Node *p;
  67.     char find[20];   
  68.     p = worker->next;   
  69.     if (p == NULL)
  70.     {
  71.         printf("\n提示:沒(méi)有元件可以修改!\n");
  72.         return 0;
  73.     }   
  74.     printf("請(qǐng)輸入要修改的編號(hào)");
  75.     scanf("%s", find);
  76.     while (p != NULL)
  77.     {
  78.         if (strcmp(p->data.identifier, find) == 0)
  79.         {
  80.             break;
  81.         }
  82.         p = p->next;
  83.     }
  84.     if(p!=NULL)
  85.     {
  86.         int x;
  87.         while (1)
  88.         {
  89.             printf("完成修改請(qǐng)輸入0,否則輸入非0數(shù)字進(jìn)行修改!");
  90.             scanf("%d", &x);
  91.             if (x == 0)
  92.             {
  93.                 break;
  94.             }
  95.             printf(" 請(qǐng)輸入新的編號(hào): ");
  96.             scanf("%s", p->data.identifier);
  97.             printf(" 請(qǐng)輸入新的元件類(lèi)型: ");
  98.             scanf("%s", p->data.type);
  99.             printf(" 請(qǐng)輸入新的元件型號(hào): ");
  100.             scanf("%s", p->data.model);
  101.             printf(" 請(qǐng)輸入新的元件數(shù)目: ");
  102.             scanf("%s", p->data.number);
  103.             printf(" 請(qǐng)輸入新的元件封裝: ");
  104.             scanf("%s", p->data.enclosure);
  105.             printf(" 請(qǐng)輸入新的元件廠(chǎng)家: ");
  106.             scanf("%s", p->data.factory);
  107.             printf(" 請(qǐng)輸入新的元件價(jià)格: ");
  108.             scanf("%s", p->data.money);
  109.             printf(" 請(qǐng)輸入新的元件生產(chǎn)日期: ");
  110.             scanf("%s", p->data.date);
  111.             printf(" \n提示:該元器件資料已經(jīng)修改!\n ");
  112.         }
  113.     }
  114.     else
  115.         printf("\n提示:沒(méi)有你要修改的資料!\n ");
  116. }
  117. //顯示元件信息函數(shù)
  118. int  Disp(Node *worker)
  119. {
  120.     Node *p;
  121.     p = worker->next;
  122.     if (p == NULL)
  123.     {
  124.         printf(" \n提示:沒(méi)有信息可以顯示!\n ");
  125.         return 0;
  126.     }
  127.     printf("\t\t\t\t顯示結(jié)果\n");
  128.     printf(" \n編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  129.     while (p!=NULL)  
  130.     {
  131.         printf("\n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.identifier, p->data.type,
  132.             p->data.model, p->data.number, p->data.enclosure, p->data.factory,
  133.             p->data.money, p->data.date);
  134.         p = p->next;
  135.     }
  136. }
  137. //查詢(xún)?cè)畔⒑瘮?shù): 按職元件編號(hào)查詢(xún)或按元件類(lèi)型查詢(xún)
  138. int  Cha_xun(Node *worker)
  139. {
  140.     Node *p;
  141.     int sel,i=0;
  142.     char find[20];   
  143.     p = worker->next;   
  144.     if (p==NULL)
  145.     {
  146.         printf(" \n提示:沒(méi)有資料可以查詢(xún)!\n ");
  147.         return 0;
  148.     }
  149.     printf("\n提示:\n  0 退出\n1 按編號(hào)查詢(xún)\n2 按元件類(lèi)型 \n3 元件型號(hào)\n4 元件數(shù)目\n5 元件封裝\n6 元件廠(chǎng)家\n7 元件價(jià)格\n8 元件生廠(chǎng)日期\n  ");
  150.     printf("請(qǐng)選擇:");
  151.     scanf("%d", &sel);
  152.     if (sel == 1)
  153.     {
  154.         printf("\n請(qǐng)輸入你要查詢(xún)分類(lèi)的編號(hào):");
  155.         scanf("%s", find);
  156.         while (p!=NULL)  
  157.         {
  158.             if (strcmp(p->data.identifier, find) == 0)
  159.             {
  160.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  161.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,
  162.                     p->data.model, p->data.number, p->data.enclosure, p->data.factory,
  163.                     p->data.money, p->data.date);
  164.                 i++;
  165.             }
  166.             p = p->next;   
  167.             
  168.         }
  169.         if(i==0)
  170.             printf("查找的信息有誤\n");
  171.     }
  172.     else if (sel == 2)
  173.     {
  174.         printf(" \n輸入你要查詢(xún)分類(lèi)的元件編號(hào):");
  175.         scanf("%s", find);
  176.         while (p!=NULL)
  177.         {
  178.             if (strcmp(p->data.type, find) == 0)
  179.             {
  180.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  181.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  182.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  183.             i++;
  184.             }
  185.             p = p->next;
  186.             
  187.         }
  188.             if(i==0)
  189.             printf("查找的信息有誤\n");
  190.     }
  191.     else if (sel == 3)
  192.     {
  193.         printf(" \n輸入你要查詢(xún)型號(hào)編號(hào):");
  194.         scanf("%s", find);
  195.         while (p!=NULL)
  196.         {
  197.             if (strcmp(p->data.model, find) == 0)
  198.             {
  199.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  200.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  201.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  202.             i++;
  203.             }
  204.             p = p->next;
  205.             
  206.         }
  207.         if(i==0)
  208.             printf("查找的信息有誤\n");
  209.     }
  210.     else if (sel == 4)
  211.     {
  212.         printf(" \n輸入你要查詢(xún)的數(shù)目:");
  213.         scanf("%s", find);
  214.         while (p!=NULL)
  215.         {
  216.             if (strcmp(p->data. number, find) == 0)
  217.             {
  218.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  219.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  220.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  221.             i++;
  222.             }
  223.             p = p->next;
  224.             
  225.         }
  226.             if(i==0)
  227.             printf("查找的信息有誤\n");
  228.     }
  229.     else if (sel == 5)
  230.     {
  231.         printf(" \n輸入你要查詢(xún)的封裝:");
  232.         scanf("%s", find);
  233.         while (p!=NULL)
  234.         {
  235.             if (strcmp(p->data. enclosure, find) == 0)
  236.             {
  237.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  238.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  239.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  240.             i++;
  241.             }
  242.             p = p->next;
  243.             
  244.         }
  245.             if(i==0)
  246.             printf("查找的信息有誤\n");
  247.     }
  248.     else if (sel == 6)
  249.     {
  250.         printf(" \n輸入你要查詢(xún)的廠(chǎng)家:");
  251.         scanf("%s", find);
  252.         while (p!=NULL)
  253.         {
  254.             if (strcmp(p->data. factory, find) == 0)
  255.             {
  256.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  257.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  258.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  259.         i++;   
  260.             }
  261.             p = p->next;
  262.             
  263.         }
  264.             if(i==0)
  265.             printf("查找的信息有誤\n");
  266.     }
  267.     else if (sel == 7)
  268.     {
  269.         printf(" \n輸入你要查詢(xún)的價(jià)格:");
  270.         scanf("%s", find);
  271.         while (p!=NULL)
  272.         {
  273.             if (strcmp(p->data. money, find) == 0)
  274.             {
  275.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  276.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  277.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  278.             i++;
  279.             }
  280.             p = p->next;
  281.         
  282.         }
  283.             if(i==0)
  284.             printf("查找的信息有誤\n");
  285.     }
  286.     else if (sel == 8)
  287.     {
  288.         printf(" \n輸入你要查詢(xún)的生產(chǎn)日期:");
  289.         scanf("%s", find);
  290.         while (p!=NULL)
  291.         {
  292.             if (strcmp(p->data.date , find) == 0)
  293.             {
  294.                 printf(" 編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n ");
  295.                 printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.identifier, p->data.type,p->data.model,
  296.                     p->data.number, p->data.enclosure, p->data.factory,    p->data.money, p->data.date);
  297.                 i++;
  298.             }
  299.             p = p->next;
  300.         
  301.         }
  302.             if(i==0)
  303.             printf("查找的信息有誤\n");
  304.     }
  305.    
  306.     else if (sel == 0)
  307.         return 0;   
  308. }
  309. int Tong_ji(Node *worker)//統(tǒng)計(jì)元件信息
  310. {
  311.     Node *p;
  312.     int sel;
  313.     char find[20];   
  314.     p = worker->next;   
  315.     if (p==NULL)
  316.     {
  317.         printf(" \n提示:沒(méi)有資料可以查詢(xún)!\n ");
  318.         return 0;
  319.     }
  320.     printf("\n提示:\n輸入 0---- 退出\n輸入 1----按型號(hào)查詢(xún)\n輸入 2-----按元件類(lèi)型 \n3 元件型號(hào)\n4 元件數(shù)目\n5 元件封裝\n6 元件廠(chǎng)家\n7 元件價(jià)格\n8 元件生廠(chǎng)日期");
  321.     printf("\n請(qǐng)選擇:");
  322.     scanf("%d", &sel);
  323.     if (sel == 1)
  324.     {
  325.         int i=1;
  326.         while (p->next!=NULL)  
  327.         {   
  328.             i++;
  329.             if(strcmp(p->data.identifier,p->next->data.identifier )==0)
  330.                 i--;
  331.             p = p->next;   
  332.         }
  333.         printf("共有%d種編號(hào)的元件\n",i);
  334.     }
  335.     else if (sel == 2)
  336.     {
  337.         int i=1;
  338.         while (p->next!=NULL)  
  339.         {   
  340.             i++;
  341.             if(strcmp(p->data.type,p->next->data.type )==0)
  342.                 i--;
  343.             p = p->next;   
  344.         }
  345.         printf("共有%d種類(lèi)型的元件\n",i);
  346.     }
  347.     else if (sel == 3)
  348.     {
  349.         int i=1;
  350.         while (p->next!=NULL)  
  351.         {   
  352.             i++;
  353.             if(strcmp(p->data.model,p->next->data.model )==0)
  354.                 i--;
  355.             p = p->next;   
  356.         }
  357.         printf("共有%d種型號(hào)的元件\n",i);
  358.     }
  359.     else if (sel == 4)
  360.     {
  361.         int i=1;
  362.         while (p->next!=NULL)  
  363.         {   
  364.             i++;
  365.             if(strcmp(p->data.number,p->next->data.number )==0)
  366.                 i--;
  367.             p = p->next;   
  368.         }
  369.         printf("共有%d種數(shù)目的元件\n",i);
  370.     }
  371.     else if (sel == 5)
  372.     {
  373.         int i=1;
  374.         while (p->next!=NULL)  
  375.         {   
  376.             i++;
  377.             if(strcmp(p->data.enclosure,p->next->data.enclosure )==0)
  378.                 i--;
  379.             p = p->next;   
  380.         }
  381.         printf("共有%d種封裝的元件\n",i);
  382.     }
  383.     else if (sel == 6)
  384.     {
  385.         int i=1;
  386.         while (p->next!=NULL)  
  387.         {   
  388.             i++;
  389.             if(strcmp(p->data.factory,p->next->data.factory )==0)
  390.                 i--;
  391.             p = p->next;   
  392.         }
  393.         printf("共有%d種廠(chǎng)家的元件\n",i);
  394.     }
  395.     else if (sel == 7)
  396.     {
  397.         int i=1;
  398.         while (p->next!=NULL)  
  399.         {   
  400.             i++;
  401.             if(strcmp(p->data.money,p->next->data.money )==0)
  402.                 i--;
  403.             p = p->next;   
  404.         }
  405.         printf("共有%d種價(jià)格的元件\n",i);
  406.     }
  407.     else if (sel == 8)
  408.     {
  409.         int i=1;
  410.         while (p->next!=NULL)  
  411.         {   
  412.             i++;
  413.             if(strcmp(p->data.date,p->next->data.date)==0)
  414.                 i--;
  415.             p = p->next;   
  416.         }
  417.         printf("共有%d種生產(chǎn)日期的元件\n",i);
  418.     }
  419.     else if (sel == 0)
  420.         return 0;   
  421.    
  422. }

  423. //刪除元件信息函數(shù)
  424. int  Delete(Node *worker)
  425. {
  426.     Node *p, *r;
  427.     char find[10];
  428.     p = worker->next;
  429.     if (p == NULL)
  430.     {
  431.         printf("提示:沒(méi)有元件信息可以刪除!\n ");
  432.         return 0;
  433.     }
  434.     printf(" \n提示:請(qǐng)輸入你要?jiǎng)h除的元件編號(hào)!\n ");
  435.     scanf("%s", find);
  436.     while (p != NULL)
  437.     {
  438.         if (strcmp(p->data.identifier, find) == 0)
  439.         {
  440.             break;
  441.         }
  442.         p = p->next;
  443.     }
  444.     if (p!=NULL)
  445.     {
  446.         r = worker;
  447.         while (r->next != p)
  448.         {
  449.             r = r->next;
  450.         }
  451.         r->next = r->next->next;   
  452.         printf("已成功刪除\n");
  453.     } else
  454.         printf("系統(tǒng)中沒(méi)有該信息\n");

  455. }

  456. //將職工信息保存到文件中
  457. void save(Node *worker)
  458. {
  459.     int n;
  460.     Node *p = NULL;   
  461.     char filename[16];
  462.     FILE *fp;   
  463.     printf("是否保存到文件?( 1-----保存!,0-----不保存! )");
  464.     scanf("%d", &n);
  465.     if (n == 1)
  466.     {
  467.         if (worker->next == NULL)
  468.         {
  469.             printf(" 沒(méi)有記錄!");
  470.         }
  471.         else
  472.         {
  473.             p = worker->next;
  474.         }
  475.         
  476.         printf("請(qǐng)輸入要保存該信息的文件名:\n");      /*輸入要保存的文件的名字*/
  477.         scanf("%s",filename);
  478.         fp=fopen(filename,"w");
  479.         while (p != NULL)   
  480.         {
  481.             fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t  ", p->data.identifier, p->data.type, p->data.model,
  482.                 p->data.number, p->data.enclosure, p->data.factory, p->data.money,p->data.date);        
  483.             p = p->next;
  484.         }
  485.         fclose(fp);  
  486.     }
  487. }

  488. //讀取元件信息
  489. void Du_qu(Node *worker)
  490. {
  491.     int a;
  492.     char filename[16];
  493.     Node *p;
  494.     FILE *fp;
  495.     char str[1000]={0};
  496.     printf("請(qǐng)輸入存有元件信息的文件名:\n");   
  497.     scanf("%s",filename);
  498.     if((fp=fopen(filename,"r"))==NULL)   
  499.     {
  500.         printf("文件名錯(cuò)誤!\n ");
  501.     }
  502.     fgets(str,1000,fp);
  503.     printf("編號(hào)\t類(lèi)型\t型號(hào)\t數(shù)目\t封裝\t廠(chǎng)家\t價(jià)格\t生產(chǎn)日期\n");
  504.     for(a=1;a<(strlen(str)+1);a++)
  505.     {
  506.         printf("%c",str[a-1]);
  507.         if(a%25==0)
  508.             printf("\n");
  509.     }
  510.     fclose(fp);    printf("\n");
  511.     return 0;

  512. }
  513. //主函數(shù)實(shí)現(xiàn)
  514. int main()
  515. {
  516.     Node *worker;
  517.     int flag=1;
  518.     worker = (Node*)malloc(sizeof(Node));
  519.     worker->next = NULL;
  520.     while(flag)
  521.     {
  522.         printf("\t元 件 信 息 管 理 系 統(tǒng)\n");
  523.         printf("=================菜 單==================\n ");
  524.         printf("|            1.添加元件信息             |\n ");
  525.         printf("|            2.修改元件信息             |\n ");
  526.         printf("|            3.顯示元件信息             |\n ");
  527.         printf("|            4.查找元件信息             |\n ");
  528.         printf("|            5.刪除元件信息             |\n ");
  529.         printf("|            6.讀取元件信息             |\n ");
  530.         printf("|            7.統(tǒng)計(jì)元件信息             |\n ");
  531.         printf("|            0.退出                     |\n ");
  532.         printf("========================================\n ");
  533.         printf("輸入你選擇的序號(hào):");
  534.         scanf("%d", &flag);
  535.         switch (flag)
  536.         {
  537.         case 0:  printf(" \n提示:退出系統(tǒng)!\n ");  break;
  538.         case 1:     Add(worker); save(worker);  break;           //添加元件信息,保存到文件中
  539.         case 2:  change(worker);  break;                      //修改元件信息
  540.         case 3:  Disp(worker);  break;                        //顯示元件信息
  541.         case 4:  Cha_xun(worker);  break;                     //查詢(xún)?cè)畔?
  542.         case 5:  Delete(worker);  break;                      //刪除元件信息
  543.         case 6:  Du_qu(worker);  break;                       //讀取元件信息
  544.         case 7:  Tong_ji(worker);  break;                     //統(tǒng)計(jì)元件信息        
  545. ……………………

  546. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
元器件信息管理系統(tǒng).zip (302.62 KB, 下載次數(shù): 18)




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表