1、数据结构课程设计仓库管理系统源程序#in cludeusing n amespace std;typedef structchar no10;char n ame30;int count;DataType;struct NodeDataType data;Node *n ext;class Linkpublic:Link(); /构造函数,建立单链表intlnsert(); /插入节点,即添加货物Node * Search。; /查找某个节点void Delete(); /删除节点或更改节点的数据 void show(); /输出节点信息 char Yn(); / 输入(y/n )函数char
2、 * No(); /输入货物编号函数void Fprintf(); /将单链表数据写到文件中void Fscanf(); /读取文件中的数据private:Node *first,*real,*p,*q;int mai n()int t=1,flag=1,f=1;char n;Node * p;Li nk Ku;while(t)prin tf(nnnnn);printf(nttt*);prin tf(nttt*XXX仓库管理系统*prin tf(nttt*1-存储货物*);prin tf(nttt*2-查询货物信息*);prin tf(nttt*3-取出货物*);prin tf(nttt*4
3、显示仓库所有货物信息*);prin tf(nttt*0-退出仓库管理系统*);printf(nttt*);prin tf(nttt请选择菜单号(0-4):);f=1;while(f=1)cinn;if(n4)printf(”输入有误,请重新输入(0-4):); f=1;elsef=0;prin tf(nn ”);switch( n)case 1:prin tf(* n);prin tf(* n);/printf( i*n);int a=1; while(a=1) a=K u.ln sert();Ku.Fpri ntf(); 将单链表里的数据写入文件。break;case 2:flag=1; c
4、har yn;while(flag=1)p=Ku.Search(); if(p)printf(n 货物编号货物名称货物数量n);n);printf(”prin tf(%5s%9s%8dn,p-data .no ,p-data .n ame,p-data.co un t); printf( n);elseprintf(仓库中没有该货物! n);printf(是否继续查询? (y/n):);yn=Ku.Y n();if(y n=y|y n=Y)flag=1;if(y n= n|y n=N)flag=0;break;case 3:flag=1;char yn; while(flag=1) Ku.De
5、lete();printf(是否继续取货? (y/n):);yn=Ku.Yn(); 调用输入 y/n函数 if(y n=y|y n=Y)flag=1;if(y n= n|y n=N)flag=0;break;case 4:Ku.show();break;case O:char yn;printf(”确定退出仓库管理系统吗? (y/n):”);yn=Ku.Yn(); 调用输入 y/n函数if(y n=y|y n=Y)printf(谢谢使用.n);t=0;if(y n= n|y n=N)t=1;break;return 0;Li nk:Li nk()first =new Node;first- n
6、 ext=NULL;real=first;FILE *fp=NULL;fp=fope n( d:fileO1.txt,a);fclose(fp);/Fpri ntf();Fsca nf();int Lin k:I nsert()char yn;char no10, name30;int coun t,t;n);printf(n 货物编号 货物名称(30) 货物数量printf( n);printf(n 请输入货物编号(10个字符以):n);strcpy( no,No();printf(n 输入货物名称(30个字符以):n);cinn ame;t=1;while(t)printf(”输入货物数量
7、(整数):);是否继续存货?(y)或取消存货(n):(y)或取消存货(n):cin co unt;if(co un tn ext;while(p)if(strcmp(p-data .no,no)=0&strcmp(p-data .n ame ,n ame)=0)printf(仓库中已有该货物 %d 件n”,p-data.count); p-data.co un t=p-data.co un t+co unt;printf(添加成功!仓库中现有该货物%d件n(y/n):,p_data.co un t);yn=Y n();if(yn=y| yn=Y) retur n 1;if(yn=n|yn=N)
8、 return 0;if(strcmp(p-data .no,no)=0&strcmp(p-data .n ame ,n ame)!=0)printf(该货物的名称输入有误,应为 %sn请重新输入,p-data .n ame);yn=Y n();if(yn=y| yn=Y) retur n 1;if(yn=n|yn=N) return 0;if(strcmp(p-data .no,no )!=0&strcmp(p-data .n ame ,n ame)=0)printf(该货物的编号输入有误,应为 %sn请重新输入,p-data .no);yn=Y n();if(yn=y| yn=Y) ret
9、ur n 1;if(yn=n|yn=N) return 0;real=p;p=p-n ext;if(p=NULL)Node *s=new Node;strcpy(s-data .no,no);strcpy(s-data .n ame ,n ame);s-data.co un t=co unt;s- next=NULL;real-n ext=s;real=s;prin tf(添加成功!仓库中现有该货物%d件n 是否继续存货?(y/n):,real-data.co un t);yn=Y n();if(yn=y| yn=Y) retur n 1;if(yn=n|yn=N) return 0;retu
10、rn 0;Node * Lin k:Search()char ab;char no10, name30;int f;p=first;prin tf(=n);printf( a.按货物编号查询 n);printf( b.按货物名称查询 n);prin tf(=n);printf( 请选择(a/b):);f=1;while(f=1)cin ab;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-n ext;i
11、f(ab=b|ab=B)printf(n 请输入货物名称(30个字符):”);cinn ame;while(p&strcmp(p-data .n ame ,n ame)!=0) p=p-n ext;elsef=1;printf(输入有误,请重新输入 (a/b):);return p;void Lin k:Delete()Node *q,*p;int coun t,t;char yn;p=Search();if(p=NULL)printf(仓库中没有该货物! n);elseprintf(n 仓库中有该货物 %d 件。”,p-data.count);int flag=1;while(flag=1)
12、printf(n 请输入要取出的货物数量 (整数):);t=1;while(t=1)cin co unt;if(cou ntp-data.co unt)prin tf(n 输入的取货数量超过库存,是否要重新输入取货数量? (y/n):);yn=Y n();if(yn=y|yn=Y) flag=1;if(yn=n|yn=N) flag=0;elseflag=0;if(co un tdata.co unt)p-data.co un t=p-data.co un t-co unt;Fpri ntf();/修改文件里的数据。printf(n 取货成功!仓库中还有该货物 %d件n,p-data.coun
13、t);prin tf(n 是否继续取出该货物? (y/n):”);yn=Y n();if(y n=y|y n=Y)flag=1;if(y n= n|y n=N)flag=0;elseq=first;while(q!=NULL&q- next!=p)q=q_n ext;q_n ext=p-n ext;delete p;Fpri ntf();/将单链表里的数据写入文件。prin tf(n 取货成功!该货物已被全部取出! n ”);void Lin k:show()if(first- n ext=NULL)printf(仓库没有货物! ”);elseprin tf(” 货物编号 货物名称 货物数量n
14、);printf(” n);p=first- n ext;while(p)prin tf(%15s%23s%23dn,p-data .n o,p-data. name,p-data.cou nt); p=p-n ext;printf(” n);char Lin k: Yn()int f=1;char yn;while(f=1)cinyn;if(y n=y|y n=Y|y n= n|y n=N)f=0;return yn;elsef=1;printf(输入有误,请重新输入 (y/n):);char * Lin k:No()int t=1,i;char *n o=NULL, no110;while
15、(t)t=0;cinn o1;no=no1;for(i=0; noi;i+) if(no i9)t=1;printf(货物编号只能由 0-9的字符组成,请重新输入货物编号 (10个字符):”);break;return n o1;void Lin k:Fpri ntf()FILE *fp=NULL;fp=fope n( d:file01.txt,w);p=first-n ext;while(p!=NULL)fprin tf(fp,%10s%30s%10dn,p-data .n o,p-data. name,p-data.cou nt);p=p-n ext;fclose(fp);void Lin k:Fsca nf()FILE *fp=NULL;p=first;Node *s;fp=fope n( d:file01.txt,r);if(fp=NULL)cout不能打开文件! data .no ,s-data .n ame, &s-data.co un t);if(s-data.co un t0)p-n ext=s;p=s;p- next=NULL; fclose(fp);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2