|
元器件信息管理系統(tǒng)
     
單片機源程序如下:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- struct component
- {
- char identifier[15]; // 1、編號
- char type[15]; // 2、類型
- char model[15]; // 3、型號
- char number[15]; // 4、數(shù)目
- char enclosure[15]; // 5、封裝
- char factory[15]; // 6、廠家
- char money[15]; // 7、價格
- char date[15]; // 8、生產(chǎn)日期
- };
- //類型定義語句
- typedef struct node
- {
- struct component data;
- struct node *next;
- }Node;
- //添加信息函數(shù)
- void Add(Node *worker)
- {
- Node *p, *q;
- char n[10];
- q = worker;
- while (q->next != NULL)
- {
- q = q->next;
- }
- while (1)
- {
- printf("提示:輸入0返回主菜單!\n");
- printf("請輸入編號:");
- scanf("%s", n);
- if (strcmp(n, "0") == 0)
- {
- break;
- }
- p = (Node *)malloc(sizeof(Node));
- strcpy(p->data.identifier, n);
-
- printf("請輸入類型:");
- scanf("%s", p->data.type);
- printf("請輸入型號:");
- scanf("%s", p->data.model);
- printf("請輸入數(shù)目:");
- scanf("%s", p->data.number);
- printf("請輸入封裝:");
- scanf("%s", p->data.enclosure);
- printf("請輸入廠家:");
- scanf("%s", p->data.factory);
- printf("請輸入價格:");
- scanf("%s", p->data.money);
- printf("請輸入生產(chǎn)日期:");
- scanf("%s", p->data.date);
- printf("提示:已經(jīng)完成一條記錄的添加!");
- p->next = NULL;
- q->next = p;
- q = p;
- }
- }
- //修改元件信息函數(shù)
- int change(Node *worker)
- {
- Node *p;
- char find[20];
- p = worker->next;
- if (p == NULL)
- {
- printf("\n提示:沒有元件可以修改!\n");
- return 0;
- }
- printf("請輸入要修改的編號");
- scanf("%s", find);
- while (p != NULL)
- {
- if (strcmp(p->data.identifier, find) == 0)
- {
- break;
- }
- p = p->next;
- }
- if(p!=NULL)
- {
- int x;
- while (1)
- {
- printf("完成修改請輸入0,否則輸入非0數(shù)字進(jìn)行修改!");
- scanf("%d", &x);
- if (x == 0)
- {
- break;
- }
- printf(" 請輸入新的編號: ");
- scanf("%s", p->data.identifier);
- printf(" 請輸入新的元件類型: ");
- scanf("%s", p->data.type);
- printf(" 請輸入新的元件型號: ");
- scanf("%s", p->data.model);
- printf(" 請輸入新的元件數(shù)目: ");
- scanf("%s", p->data.number);
- printf(" 請輸入新的元件封裝: ");
- scanf("%s", p->data.enclosure);
- printf(" 請輸入新的元件廠家: ");
- scanf("%s", p->data.factory);
- printf(" 請輸入新的元件價格: ");
- scanf("%s", p->data.money);
- printf(" 請輸入新的元件生產(chǎn)日期: ");
- scanf("%s", p->data.date);
- printf(" \n提示:該元器件資料已經(jīng)修改!\n ");
- }
- }
- else
- printf("\n提示:沒有你要修改的資料!\n ");
- }
- //顯示元件信息函數(shù)
- int Disp(Node *worker)
- {
- Node *p;
- p = worker->next;
- if (p == NULL)
- {
- printf(" \n提示:沒有信息可以顯示!\n ");
- return 0;
- }
- printf("\t\t\t\t顯示結(jié)果\n");
- printf(" \n編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- while (p!=NULL)
- {
- 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, p->data.number, p->data.enclosure, p->data.factory,
- p->data.money, p->data.date);
- p = p->next;
- }
- }
- //查詢元件信息函數(shù): 按職元件編號查詢或按元件類型查詢
- int Cha_xun(Node *worker)
- {
- Node *p;
- int sel,i=0;
- char find[20];
- p = worker->next;
- if (p==NULL)
- {
- printf(" \n提示:沒有資料可以查詢!\n ");
- return 0;
- }
- printf("\n提示:\n 0 退出\n1 按編號查詢\n2 按元件類型 \n3 元件型號\n4 元件數(shù)目\n5 元件封裝\n6 元件廠家\n7 元件價格\n8 元件生廠日期\n ");
- printf("請選擇:");
- scanf("%d", &sel);
- if (sel == 1)
- {
- printf("\n請輸入你要查詢分類的編號:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data.identifier, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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, p->data.number, p->data.enclosure, p->data.factory,
- p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 2)
- {
- printf(" \n輸入你要查詢分類的元件編號:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data.type, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 3)
- {
- printf(" \n輸入你要查詢型號編號:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data.model, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 4)
- {
- printf(" \n輸入你要查詢的數(shù)目:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data. number, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 5)
- {
- printf(" \n輸入你要查詢的封裝:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data. enclosure, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 6)
- {
- printf(" \n輸入你要查詢的廠家:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data. factory, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 7)
- {
- printf(" \n輸入你要查詢的價格:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data. money, find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
- else if (sel == 8)
- {
- printf(" \n輸入你要查詢的生產(chǎn)日期:");
- scanf("%s", find);
- while (p!=NULL)
- {
- if (strcmp(p->data.date , find) == 0)
- {
- printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n ");
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money, p->data.date);
- i++;
- }
- p = p->next;
-
- }
- if(i==0)
- printf("查找的信息有誤\n");
- }
-
- else if (sel == 0)
- return 0;
- }
- int Tong_ji(Node *worker)//統(tǒng)計元件信息
- {
- Node *p;
- int sel;
- char find[20];
- p = worker->next;
- if (p==NULL)
- {
- printf(" \n提示:沒有資料可以查詢!\n ");
- return 0;
- }
- printf("\n提示:\n輸入 0---- 退出\n輸入 1----按型號查詢\n輸入 2-----按元件類型 \n3 元件型號\n4 元件數(shù)目\n5 元件封裝\n6 元件廠家\n7 元件價格\n8 元件生廠日期");
- printf("\n請選擇:");
- scanf("%d", &sel);
- if (sel == 1)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.identifier,p->next->data.identifier )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種編號的元件\n",i);
- }
- else if (sel == 2)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.type,p->next->data.type )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種類型的元件\n",i);
- }
- else if (sel == 3)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.model,p->next->data.model )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種型號的元件\n",i);
- }
- else if (sel == 4)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.number,p->next->data.number )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種數(shù)目的元件\n",i);
- }
- else if (sel == 5)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.enclosure,p->next->data.enclosure )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種封裝的元件\n",i);
- }
- else if (sel == 6)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.factory,p->next->data.factory )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種廠家的元件\n",i);
- }
- else if (sel == 7)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.money,p->next->data.money )==0)
- i--;
- p = p->next;
- }
- printf("共有%d種價格的元件\n",i);
- }
- else if (sel == 8)
- {
- int i=1;
- while (p->next!=NULL)
- {
- i++;
- if(strcmp(p->data.date,p->next->data.date)==0)
- i--;
- p = p->next;
- }
- printf("共有%d種生產(chǎn)日期的元件\n",i);
- }
- else if (sel == 0)
- return 0;
-
- }
- //刪除元件信息函數(shù)
- int Delete(Node *worker)
- {
- Node *p, *r;
- char find[10];
- p = worker->next;
- if (p == NULL)
- {
- printf("提示:沒有元件信息可以刪除!\n ");
- return 0;
- }
- printf(" \n提示:請輸入你要刪除的元件編號!\n ");
- scanf("%s", find);
- while (p != NULL)
- {
- if (strcmp(p->data.identifier, find) == 0)
- {
- break;
- }
- p = p->next;
- }
- if (p!=NULL)
- {
- r = worker;
- while (r->next != p)
- {
- r = r->next;
- }
- r->next = r->next->next;
- printf("已成功刪除\n");
- } else
- printf("系統(tǒng)中沒有該信息\n");
- }
- //將職工信息保存到文件中
- void save(Node *worker)
- {
- int n;
- Node *p = NULL;
- char filename[16];
- FILE *fp;
- printf("是否保存到文件?( 1-----保存!,0-----不保存! )");
- scanf("%d", &n);
- if (n == 1)
- {
- if (worker->next == NULL)
- {
- printf(" 沒有記錄!");
- }
- else
- {
- p = worker->next;
- }
-
- printf("請輸入要保存該信息的文件名:\n"); /*輸入要保存的文件的名字*/
- scanf("%s",filename);
- fp=fopen(filename,"w");
- while (p != NULL)
- {
- 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,
- p->data.number, p->data.enclosure, p->data.factory, p->data.money,p->data.date);
- p = p->next;
- }
- fclose(fp);
- }
- }
- //讀取元件信息
- void Du_qu(Node *worker)
- {
- int a;
- char filename[16];
- Node *p;
- FILE *fp;
- char str[1000]={0};
- printf("請輸入存有元件信息的文件名:\n");
- scanf("%s",filename);
- if((fp=fopen(filename,"r"))==NULL)
- {
- printf("文件名錯誤!\n ");
- }
- fgets(str,1000,fp);
- printf("編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價格\t生產(chǎn)日期\n");
- for(a=1;a<(strlen(str)+1);a++)
- {
- printf("%c",str[a-1]);
- if(a%25==0)
- printf("\n");
- }
- fclose(fp); printf("\n");
- return 0;
- }
- //主函數(shù)實現(xiàn)
- int main()
- {
- Node *worker;
- int flag=1;
- worker = (Node*)malloc(sizeof(Node));
- worker->next = NULL;
- while(flag)
- {
- printf("\t元 件 信 息 管 理 系 統(tǒng)\n");
- printf("=================菜 單==================\n ");
- printf("| 1.添加元件信息 |\n ");
- printf("| 2.修改元件信息 |\n ");
- printf("| 3.顯示元件信息 |\n ");
- printf("| 4.查找元件信息 |\n ");
- printf("| 5.刪除元件信息 |\n ");
- printf("| 6.讀取元件信息 |\n ");
- printf("| 7.統(tǒng)計元件信息 |\n ");
- printf("| 0.退出 |\n ");
- printf("========================================\n ");
- printf("輸入你選擇的序號:");
- scanf("%d", &flag);
- switch (flag)
- {
- case 0: printf(" \n提示:退出系統(tǒng)!\n "); break;
- case 1: Add(worker); save(worker); break; //添加元件信息,保存到文件中
- case 2: change(worker); break; //修改元件信息
- case 3: Disp(worker); break; //顯示元件信息
- case 4: Cha_xun(worker); break; //查詢元件信息
- case 5: Delete(worker); break; //刪除元件信息
- case 6: Du_qu(worker); break; //讀取元件信息
- case 7: Tong_ji(worker); break; //統(tǒng)計元件信息
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
元器件信息管理系統(tǒng).zip
(302.62 KB, 下載次數(shù): 18)
2019-9-3 14:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|