货物管理系统(数据结构链式表)
2013-11-25 13:34
162 查看
/*货物管理系统(数据结构链式表)*/ #include<string.h> #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 typedef struct { char name[11],no[11]; int num; }goods; typedef struct node { goods data; struct node *next; }LNode; /*录入货物信息*/ void input(LNode *L) { int i,n; LNode *r=L,*s; goods x; printf("\n请输入货物的种数:"); scanf("%d",&n); printf("\n请输入货物的名称、代号、数量:\n"); printf("例:aaa 100 100\n"); printf("货物名称 货物代号 货物数量\n"); for(i=1;i<=n;i++) { scanf("%s%s%d",x.name,x.no,&x.num); s=(LNode*)malloc(sizeof(LNode)); s->data=x; s->next=NULL; r->next=s; r=s; } } /*浏览货物清单*/ void run_over(LNode *L) { LNode *p=L->next; printf("\n-----------货物清单-----------\n"); printf("货物名称 货物代号 货物数量\n"); while(p!=NULL) { printf("%5s%5s%4d\n",p->data.name,p->data.no,p->data.num); p=p->next; } printf("--------------------------------\n"); } /*查找货物*/ LNode* search(LNode *L,goods x) { LNode *p=L->next; while(p!=NULL&&(strcmp(p->data.no,x.no)<0)) { p=p->next; } if(p!=NULL&&(strcmp(p->data.no,x.no)==0)) { return p; } else { return NULL; } } /*插入货物信息*/ void insert(LNode *L,goods x) { LNode *p=L,*s; while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0)) { p=p->next; } s=(LNode*)malloc(sizeof(LNode)); s->data=x; s->next=p->next; p->next=s; } /*货物入库*/ void storage(LNode *L,goods x) { LNode *p; p=search(L,x); if(p==NULL) { insert(L,x); } else { p->data.num=p->data.num+x.num; } } /*删除货物信息*/ void del(LNode *L,goods x) { LNode *p=L,*s; while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)<0)) { p=p->next; } while(p->next!=NULL&&(strcmp(p->next->data.no,x.no)==0)) { s=p->next; p->next=s->next; free(s); } } /*货物出库*/ void out(LNode *L,goods x) { int j; LNode *p; p=search(L,x); if(p==NULL) { printf("\n仓库中无此货物!\n"); } else if(p->data.num>x.num) { p->data.num=p->data.num-x.num; } else if(p->data.num==x.num) { del(L,x); } else if(p->data.num<x.num) { printf("\n该货物数量不足,仅剩%d。是否购买\n",p->data.num); printf("(购买请按1,不购买请按0。)\n"); printf("你的选择:"); scanf("%d",&j); if(j==1) { del(L,x); printf("\n购买成功!欢迎下次光临!\n"); } else { printf("\n欢迎下次光临!\n"); } } } void menu() { printf("**********************************\n"); printf("* 货物管理系统 *\n"); printf("* 1-----------------录入货物信息 *\n"); printf("* 2-----------------浏览货物清单 *\n"); printf("* 3-----------------查找货物信息 *\n"); printf("* 4---------------------货物入库 *\n"); printf("* 5---------------------货物出库 *\n"); printf("* 0-------------------------退出 *\n"); printf("**********************************\n"); } int main() { goods x; int sel; LNode *L,*p; L=(LNode *)malloc(sizeof(LNode)); do { menu(); printf("请输入你的选择(例:1):\n"); scanf("%d",&sel); switch(sel) { case 1:printf("\n你选择了录入货物信息!\n\n"); input(L); break; case 2:printf("\n你选择了浏览货物清单!\n\n"); run_over(L); break; case 3:printf("\n你选择了查找货物信息!\n\n"); printf("\n请输入要查找的货物的代号:\n"); printf("代号为:"); scanf("%s",x.no); p=search(L,x); if(p==NULL) { printf("\n该货物不存在。\n"); } else { printf("\n货物名称 货物代号 货物数量\n"); printf("%5s%5s%4d\n",p->data.name,p->data.no,p->data.num); } break; case 4:printf("\n你选择了货物入库!\n\n"); printf("\n请输入要入库的货物的名称、代号、数量:\n"); printf("货物名称 货物代号 货物数量\n"); scanf("%s%s%d",x.name,x.no,&x.num); storage(L,x); break; case 5:printf("\n你选择了货物出库!\n\n"); printf("\n请输入要出库的货物的名称、代号、数量\n"); printf("货物名称 货物代号 货物数量\n"); scanf("%s%s%d",x.name,x.no,&x.num); out(L,x); break; } }while(sel!=0); printf("感谢您的使用,再见!\n"); return 0; }
相关文章推荐
- 货物管理系统(数据结构链式表)
- <数据结构>链式成绩管理系统
- 数据结构第一次作业(学生信息管理系统-顺序表&&链表)
- 学生信息管理系统-顺序表&&链表(数据结构第一次作业)
- 数据结构实训之学生信息管理系统
- 数据结构-链表的简实现->学生管理系统
- 商店货物管理系统
- 数据结构实训——图书管理系统
- 数据结构 课程设计 学生成绩管理系统
- 数据结构示例之简单薪资管理系统
- 大连理工大学数据结构上机第三章医院设备管理系统
- c实训设计——货物管理系统
- [原创]为单位编写的航空货物进港管理系统(VB6.0)
- 数据结构设计——班级个人信息管理系统
- 数据结构实训——图书管理系统
- 线性表的链式实现应用----学生信息管理系统
- [原创]为单位编写的航空货物进港管理系统(VB6.0)
- 初学构建小项目之仓库管理系统货物管理功能实现(四)
- [原创]为单位编写的航空货物进港管理系统(VB6.0)
- c/c++ 数据结构-线性表(线性表定义 企业工程项目:图书管理系统)