1、数据结构课程设计仓库管理系统源程序#includeusing namespace std;typedef struct char no10; char name30; int count;DataType;struct Node DataType data; Node *next;class Linkpublic: Link(); /构造函数,建立单链表 int Insert(); /插入节点,即添加货物 Node * Search(); /查找某个节点 void Delete(); /删除节点或更改节点的数据 void show(); /输出节点信息 char Yn(); /输入(y/n)函
2、数 char * No(); /输入货物编号函数 void Fprintf(); /将单链表数据写到文件中 void Fscanf(); /读取文件中的数据private: Node *first,*real,*p,*q;int main() int t=1,flag=1,f=1; char n; Node * p; Link Ku; while(t) printf(nnnnn); printf(nttt*); printf(nttt* XXX仓库管理系统*); printf(nttt* 1- 存储货物 *); printf(nttt* 2- 查询货物信息 *); printf(nttt* 3
3、- 取出货物 *); printf(nttt* 4- 显示仓库内所有货物信息 *); printf(nttt* 0- 退出仓库管理系统 *); printf(nttt*); printf(nttt请选择菜单号(0-4):); f=1; while(f=1) cinn; if(n4) printf(输入有误,请重新输入(0-4):); f=1; else f=0; printf(nn); switch(n) case 1: printf(*n); printf(* 存储货物 *n); printf(*n); /printf( 货物编号 货物名称 货物数量n); /printf(*n); int
4、a=1; while(a=1) a=Ku.Insert(); Ku.Fprintf();/将单链表里的数据写入文件。 break; case 2: printf(*n); printf(* 查询货物信息 *n); printf(*n); flag=1; char yn; while(flag=1) p=Ku.Search(); if(p) printf(n货物编号 货物名称 货物数量 n); printf(-n); printf(%5s%9s%8dn,p-data.no,p-data.name,p-data.count); printf(-n); else printf(仓库中没有该货物!n)
5、; printf(是否继续查询?(y/n):); yn=Ku.Yn(); if(yn=y|yn=Y) flag=1; if(yn=n|yn=N) flag=0; break; case 3: printf(*n); printf(* 取出货物 *n); printf(*n); flag=1; char yn; while(flag=1) Ku.Delete(); printf(是否继续取货?(y/n):); yn=Ku.Yn();/调用输入y/n函数 if(yn=y|yn=Y) flag=1; if(yn=n|yn=N) flag=0; break; case 4: Ku.show(); br
6、eak; case 0: char yn; printf(确定退出仓库管理系统吗?(y/n):); yn=Ku.Yn();/调用输入y/n函数 if(yn=y|yn=Y) printf(谢谢使用.n); t=0; if(yn=n|yn=N) t=1; break; return 0;Link:Link() first=new Node; first-next=NULL; real=first; FILE *fp=NULL; fp=fopen(d:file01.txt,a); fclose(fp); /Fprintf(); Fscanf();int Link:Insert() char yn;
7、char no10,name30; int count,t; printf(n 货物编号 货物名称(30) 货物数量(5) n); printf(-n); printf(n请输入货物编号(10个字符以内):n); strcpy(no,No(); printf(n输入货物名称(30个字符以内):n); cinname; t=1; while(t) printf(输入货物数量(整数): ); cincount; if(countnext; while(p) if(strcmp(p-data.no,no)=0&strcmp(p-data.name,name)=0) /printf(仓库中已有该货物%
8、d件n,p-data.count); p-data.count=p-data.count+count; printf(添加成功!仓库中现有该货物%d件n是否继续存货?(y/n):,p-data.count); yn=Yn(); if(yn=y|yn=Y) return 1; if(yn=n|yn=N) return 0; if(strcmp(p-data.no,no)=0&strcmp(p-data.name,name)!=0) printf(该货物的名称输入有误,应为 %sn请重新输入(y)或取消存货(n): ,p-data.name); yn=Yn(); if(yn=y|yn=Y) ret
9、urn 1; if(yn=n|yn=N) return 0; if(strcmp(p-data.no,no)!=0&strcmp(p-data.name,name)=0) printf(该货物的编号输入有误,应为 %sn请重新输入(y)或取消存货(n): ,p-data.no); yn=Yn(); if(yn=y|yn=Y) return 1; if(yn=n|yn=N) return 0; real=p; p=p-next; if(p=NULL) Node *s=new Node; strcpy(s-data.no,no); strcpy(s-data.name,name); s-data.
10、count=count; s-next=NULL; real-next=s; real=s; printf(添加成功!仓库中现有该货物%d件n是否继续存货?(y/n):,real-data.count); yn=Yn(); if(yn=y|yn=Y) return 1; if(yn=n|yn=N) return 0; return 0;Node * Link:Search() char ab; char no10,name30; int f; p=first; printf(=n); printf( a. 按货物编号查询 n); printf( b. 按货物名称查询 n); printf(=n
11、); printf( 请 选 择(a/b): ); f=1; while(f=1) cinab; if(ab=a|ab=A|ab=b|ab=B) f=0; if(ab=a|ab=A) printf(n请输入货物编号(10个字符内):n); strcpy(no,No(); while(p&strcmp(p-data.no,no)!=0) p=p-next; if(ab=b|ab=B) printf(n请输入货物名称(30个字符内):); cinname; while(p&strcmp(p-data.name,name)!=0) p=p-next; else f=1; printf(输入有误,请重
12、新输入(a/b):); return p;void Link:Delete() Node *q,*p; int count,t; char yn; p=Search(); if(p=NULL) printf(仓库中没有该货物!n); else printf(n仓库中有该货物 %d件。,p-data.count); int flag=1; while(flag=1) printf(n请输入要取出的货物数量(整数):); t=1; while(t=1) cincount; if(countp-data.count) printf(n输入的取货数量超过库存,是否要重新输入取货数量?(y/n):);
13、yn=Yn(); if(yn=y|yn=Y) flag=1; if(yn=n|yn=N) flag=0; else flag=0; if(countdata.count) p-data.count=p-data.count-count; Fprintf();/修改文件里的数据。 printf(n取货成功!仓库中还有该货物%d件n,p-data.count); printf(n是否继续取出该货物?(y/n):); yn=Yn(); if(yn=y|yn=Y) flag=1; if(yn=n|yn=N) flag=0; else q=first; while(q!=NULL&q-next!=p)
14、q=q-next; q-next=p-next; delete p; Fprintf();/将单链表里的数据写入文件。 printf(n取货成功!该货物已被全部取出!n); void Link:show() if(first-next=NULL) printf(仓库内没有货物!); else printf( 货物编号 货物名称 货物数量 n); printf(-n); p=first-next; while(p) printf(%15s%23s%23dn,p-data.no,p-data.name,p-data.count); p=p-next; printf(-n); char Link:Y
15、n() int f=1; char yn; while(f=1) cinyn; if(yn=y|yn=Y|yn=n|yn=N) f=0; return yn; else f=1; printf(输入有误,请重新输入(y/n):); char * Link:No() int t=1,i; char *no=NULL,no110; while(t) t=0; cinno1; no=no1; for(i=0;noi;i+) if(noi9) t=1; printf(货物编号只能由0-9的字符组成,请重新输入货物编号(10个字符内):); break; return no1;void Link:Fpr
16、intf() FILE *fp=NULL; fp=fopen(d:file01.txt,w); p=first-next; while(p!=NULL) fprintf(fp,%10s%30s%10dn,p-data.no,p-data.name,p-data.count); p=p-next; fclose(fp);void Link:Fscanf() FILE *fp=NULL; p=first; Node *s; fp=fopen(d:file01.txt,r); if(fp=NULL) cout不能打开文件!data.no,s-data.name,&s-data.count); if(s-data.count0) p-next=s; p=s; p-next=NULL; fclose(fp);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1