標(biāo)題:
C語言元器件信息管理系統(tǒng)源程序設(shè)計(jì)
[打印本頁]
作者:
954544619
時(shí)間:
2019-9-3 14:01
標(biāo)題:
C語言元器件信息管理系統(tǒng)源程序設(shè)計(jì)
元器件信息管理系統(tǒng)
單片機(jī)源程序如下:
#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、價(jià)格
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("請輸入價(jià)格:");
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(" 請輸入新的元件價(jià)格: ");
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價(jià)格\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 元件價(jià)格\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價(jià)格\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價(jià)格\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價(jià)格\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價(jià)格\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價(jià)格\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價(jià)格\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輸入你要查詢的價(jià)格:");
scanf("%s", find);
while (p!=NULL)
{
if (strcmp(p->data. money, find) == 0)
{
printf(" 編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價(jià)格\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價(jià)格\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)計(jì)元件信息
{
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 元件價(jià)格\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種價(jià)格的元件\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提示:請輸入你要?jiǎng)h除的元件編號!\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("文件名錯(cuò)誤!\n ");
}
fgets(str,1000,fp);
printf("編號\t類型\t型號\t數(shù)目\t封裝\t廠家\t價(jià)格\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ù)實(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)計(jì)元件信息 |\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)計(jì)元件信息
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
元器件信息管理系統(tǒng).zip
(302.62 KB, 下載次數(shù): 18)
2019-9-3 14:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1