汽车零件采购管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Data
{
char no[20];
char pname[20];
int year,month,day;
char name[20];
int amount;
float price;
char place[30];
}Da;
typedef struct Node
{
Da data;
struct Node *next;
}NO;
NO *list;
NO *createHead()
{
NO *headNode = (NO *)malloc(sizeof(NO));
if(headNode==NULL)
{
printf("申请内存失败..!!\n");
return NULL;
}
headNode->next=NULL;
return headNode;
}
NO *createNode(Da data)
{
NO *newNode = (NO *)malloc(sizeof(NO));
if(newNode==NULL)
{
printf("申请内存失败..!!\n");
return NULL;
}
newNode->data=data;
newNode->next=NULL;
return newNode;
}
void insertData(NO *headNode,Da data)
{
NO *newNode = createNode(data);
newNode->next=headNode->next;
headNode->next=newNode;
}
NO *chazhaoDatano(NO *headNode,const char *no)
{
NO *pmove=headNode->next;
while(pmove!=NULL&&strcmp(pmove->data.no,no))
{
pmove=pmove->next;
}
return pmove;
}
NO *chazhaoDatapname(NO *headNode,const char *pname)
{
NO *pmove=headNode->next;
while(pmove!=NULL&&strcmp(pmove->data.pname,pname))
{
pmove=pmove->next;
}
return pmove;
}
void deleteDatano(NO *headNode,const char *no)
{
NO *preNode=headNode;
NO *curNode=headNode->next;
while(curNode!=NULL && strcmp(curNode->data.no,no))
{
preNode=curNode;
curNode=preNode->next;
}
if(curNode==NULL)
{
printf("删除失败,没有找到指定数据..!\n");
}else{
preNode->next=curNode->next;
free(curNode);
}
}
void printList(NO *headNode)
{
NO *pmove=headNode->next;
printf("编号\t零件名称\t采购日期\t采购员\t采购数量\t零件单价\t零件单价\n");
while(pmove!=NULL)
{
printf("%s\t%s\t\t%d-%d-%d\t%s\t%d\t\t%f\t%s\n",
pmove->data.no,
pmove->data.pname,
pmove->data.year,pmove->data.month,pmove->data.day,
pmove->data.name,
pmove->data.amount,
pmove->data.price,
pmove->data.place);
pmove=pmove->next;
}
}
void makeMenu()
{
printf("*******************汽车零部件采购管理系统*************************\n\n");
printf("\t\t【1】输入采购信息\n");
printf("\t\t【2】根据采购编号显示采购的零部件信息\n");
printf("\t\t【3】根据零部件名称显示该部件的所有采购信息\n");
printf("\t\t【4】根据采购编号修改采购信息\n");
printf("\t\t【5】根据采购编号删除采购信息\n");
printf("\t\t【6】显示所有采购信息\n");
printf("\t\t【0】退出系统\n");
printf("******************************************************************\n");
printf ("请输入(0 - 6)\n\n");
}
void keyDown()
{
int userkey=0;
Da temp;
NO *result;
NO *pnames;
scanf("%d",&userkey);
switch(userkey)
{
case 0:
printf("******【退出模块】******\n");
exit(0);
break;
case 1:
printf("******【录入模块】******\n\n");
printf("请输入零件编号:");
scanf("%s",temp.no);
printf("请输入零件名称:");
scanf("%s",temp.pname);
printf("请输入采购日期:");
scanf("%d-%d-%d",&temp.year,&temp.month,&temp.day);
printf("请输入采购员姓名:");
scanf("%s",temp.name);
printf("请输入采购数量:");
scanf("%d",&temp.amount);
printf("请输入零件单价:");
scanf("%f",&temp.price);
printf("请输入供货单位:");
scanf("%s",temp.place);
insertData(list,temp);
break;
case 2:
printf("******【编号查找模块】******\n\n");
printf("请输入要查找的零件编号\n");
scanf("%s",temp.no);
result=chazhaoDatano(list,temp.no);
if(result==NULL)
{
printf("未找到结果...!");
}else{
printf("编号\t零件名称\t采购日期\t采购员\t采购数量\t零件单价\t零件单价\n");
printf("%s\t%s\t\t%d-%d-%d\t%s\t%d\t\t%f\t%s\n",
result->data.no,
result->data.pname,
result->data.year,result->data.month,result->data.day,
result->data.name,
result->data.amount,
result->data.price,
result->data.place);
}
break;
case 3:
printf("******【零件名称查找模块】******\n\n");
printf("请输入要查找的零件名称\n");
scanf("%s",temp.pname);
pnames=chazhaoDatapname(list,temp.pname);
if(pnames==NULL)
{
printf("未找到结果...!");
}else{
printf("编号\t零件名称\t采购日期\t采购员\t采购数量\t零件单价\t零件单价\n");
printf("%s\t%s\t\t%d-%d-%d\t%s\t%d\t\t%f\t%s\n",
pnames->data.no,
pnames->data.pname,
pnames->data.year,pnames->data.month,pnames->data.day,
pnames->data.name,
pnames->data.amount,
pnames->data.price,
pnames->data.place);
}
break;
case 4:
printf("******【根据编号修改模块】******\n\n");
printf("请输入要修改的编号:\n");
scanf("%s",temp.no);
result=chazhaoDatano(list,temp.no);
if(result==NULL)
{
printf("未找到结果...!");
}else{
printf("请输入新的零件编号:");
scanf("%s",result->data.no);
printf("请输入新的零件名称:");
scanf("%s",result->data.pname);
printf("请输入新的采购日期:");
scanf("%d-%d-%d",&result->data.year,&result->data.month,&result->data.day);
printf("请输入新的采购员姓名:");
scanf("%s",result->data.name);
printf("请输入新的采购数量:");
scanf("%d",&result->data.amount);
printf("请输入新的零件单价:");
scanf("%f",&result->data.price);
printf("请输入新的供货单位:");
scanf("%s",result->data.place);
}
break;
case 5:
printf("******【根据编号删除模块】******\n\n");
printf("请输入要删除的编号:\n");
scanf("%s",temp.no);
deleteDatano(list,temp.no);
break;
case 6:
printf("******【显示所有信息模块】******\n\n");
printList(list);
break;
default:
printf("输入错误,请重新输入...!\n");
break;
}
}
int main()
{
list=createHead();
while(1)
{
makeMenu();
keyDown();
system("pause");
system("cls");
}
return 0;
}