版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD格式#include<iostream> usingnamespacestd; typedefstruct charnoflO; charname30; intcount;DataType;struetNodeDataTypedata;Node*next;; classLink public:LinkO;/构造函数,建立单链表 intlnsert () ;/插入节点,即添加货物 NodeSearchO ;/查找某个节点 voidDeleteO ;/删除节点或更改节点的数据 voidshow();/输出节点信息 charYnO :/输入(y/n)函数 charNo();输入货
2、物编号函数 voidFprintf ();将单链表数据写到文件中 voidFscanf () ;/读取文件中的数据private:Node*fitst, *real, *p, *q;;int main()intt二 1, flag=l, f=l;charn;Node*p;LinkKu;while (t)printfCnnnnnz/);printf (nttt*XXX 仓库管理系统*); printf(z,nttt*l-存储货物*);printf (nttt*2-查询货物信息*); printf (nttt*3-取岀货物*);printf (z/ntttM 显示仓库内所有货物信息*);print
3、f Cnttt*0-退出仓库管理系统*);printf (z/nttt 请选择菜单号(04):);while (f=l)cin»n;if(n<,0J | |n>,4,)printf (z/输入有误,请重新输入(0-4): ); f=l;elsef=0;printf Cnnz/); switch(n)case'l':printf(*n) printf C* 存储货物 *n);printf(*n)/printf (z,货物编号货物名称货物数量);/printf(" #7% |inta=l;while (a=l)a=Ku. Insert ();Ku.
4、FprintfO ;/将单链表里的数据写入文件。break; case" 2":printf(*n) printf (z/*查询货物信息*rT);printf(*n) flag=l;charyn;while(flag=l)p=Ku> Search ();if(p)printfCAn货物编号货物名称货物数量n);printf (n);printf(5s%9s%8dn,p->data. no, p->data. name, p->data.count);专业资料整理printf (elseprintfC仓库中没有该货物! n); printfC是否继续查
5、询? (y/n):); yn二Ku. Yn ();if(yn='yT|yn='Y')flag=l;if (yn= nyn二二'N')flag=0;break;case' 3':printf(*n") printfC*取出货物*);printf(*n") flag=l;charyn;while (flag=l)Ku. Delete ();printfC是否继续取货? (y/n):); yn=Ku. Yn() ;/调用输入y/n函数 if(yn='y'|yn='Y')flag=l;if (y
6、n=n | |yn=,N,)flag=0;break;case' 4':Ku. show();break;case' 0,:chatyn;printfC确定退出仓库管理系统吗?(y/n):); yn二Ku. Yn () ;/调用输入y/n函数if(yn='y' yn二二'Y')printf (z/谢谢使用n);t 二0;if(yn二二'n,| | yn=,N,)t二1;break;:returnO;Link: :Link()first二newNode;first-next二NULL;real=first;FILE*fp二NULL;
7、 fp=fopen(z,d: WfileO 1. txt,); fclose (fp);/FprintfO;Fscanf ();intLink: : Insert ()chatyn;charno10, name30;intcount, t;printf fn货物编号货物名称(30)货物数量(5) );printf Cn);printf (/zn请输入货物编号(10个字符以内):);strcpy (no, No();printf (/zn输入货物名称(30个字符以内):n);cin»name;t二 1;while (t)printfC输入货物数量(整数):);cin>>co
8、unt;if (count二0)t二 1;printf C货物数量必须大于0,请重新);elset 二0;p二fitst;real=first;p=p->next;while (p)if(strcmp(p->data no, no)二二0&&strcmp(p->data. name, name)=0)/printf (/z仓库中己有该货物d件,p->data. count); p->data. count二p->data. count+count;printf (添加成功!仓库中现有该货物%d件11是否继续存货?(y/n):”,p->d
9、ata count);yn=Yn ();if (yn二二'y' | | yn=,Y') teturnl;if (yn=,n | | yn=,N') returnO;if(strcmp(p>data no, no)二二0&&strcmp(p->data. name,name)!=0)printf C该货物的名称输入有误,应为%sn请重新输入(y)或取消存货(n): 气 p->data. name);yn=Yn ();if (yn=,y' | | yn=,Y') returnl;if (yn二二'n yn N
10、') returnO;if(strcmp(p>data. no, no)!二0&&strcmp(p->data. name,name)=0)printf C该货物的编号输入有误,应为%sn请重新输入(y)或取消存货(n):“,p->data. no);yn=Yn ();if (yn二二'y' | | yn二二'Y') returnl;if (yn二二'n yn=,N'):returnO;real=p;p=p->next;if(p 二二 NULL)Node*s=newNode;strcpy (s-&g
11、t;data no,no);strcpy(s->data name, name);s->data count二count;s->next二NULL;real->next二s;real=s;printfC添加成功!仓库中现有该货物%d件11是否继续存货? (y/n):“,real->data count);yn=Yn();if (yn=,y' yn二二'Y') returnl;if (yn二二'n, yn二二'N') returnO;returnO;Node*Link:Search()charab;charno10,
12、name30;intf;p二first;printf (二二二二二二二二二二二二二二二二二二);printf (z,a.按货物编号查询n);printf Cb.按货物名称查询n);printf (二二二二二二二二二二二二二二二二二二);printf (请选择(a/b):);f 二1;whil e(f=l)cin>>ab;if (ab=,& | | ab=,A' | | ab=,b,| | ab=,B,)f=0;if (ab=,af | | ab=,A,)printf (/zn请输入货物编号(10个字符内):n); strcpy (no, No ();while(p&
13、amp;&strcmp(p->data no,no)!二0)p=p->next;if (ab=,b' | | ab二二'B')printf (/zn请输入货物名称(30个字符内):); cin>>name;while (p&&strcmp(p->data name, name) !=0)p=p->next;elsef 二1;printf (/z输入有误,请重新输入(a/b): “);:returnp;voidLink:Delete ()Node*q,*p;intcount, t;charyn;p=Search(
14、);if(p 二二 NULL)printfC仓库中没有该货物! );elseprintf (n 仓库中有该货物d 件。",p->data. count);intflag二1;while (flag=l)printf Cn请输入要取岀的货物数量(整数):);t二 1;while(t=l)cin>>count;if (count<0)t二 1;printfC取货数量不能为负数,请重新输入取货数量(整数):);elset 二0;if (count>p->data count)printfCAn输入的取货数量超过库存,是否要重新输入取货数量?(y/n):)
15、; yn=Yn ();if(yn二二'y' | |yn= Y,)flag=l;if(yn二二'n,| | yn二二'N') f lag二0;elseflag=0;if (count<p->data count)p->data count二p->data count-count;Fprintf () ;/修改文件里的数据。printf (n取货成功!仓库中还有该货物%d件,p->data. count); printfCAn是否继续取出该货物? (y/n):);yn=Yn ();if(yn=y yn二二'Y')
16、flag=l;if (yn= n yn 二二'N')flag=0;elseq=first;while (q!二NULL&&q-next!=p)q=q->next;q->next二p->next;deletep;Fprintf 0 ;/将单链表里的数据写入文件。printf Cn取货成功!该货物己被全部取出! n);voidLink: :show()if(first->next二二NULL)printfC仓库内没有货物! );elseprintfC货物编号货物名称货物数量);printf Cn);p=first->next;while
17、 (p)printf(%15s%23s%23dn, p->data. no, p->data. name, p->data. count);p=p->next;printf (n);charLink: : Yn ()intf=l;charyn;whil e(f=l)cin>>yn;if (yn=' y' yn 二二'Y' | | yn 二二'n'| | yn 二二'N,)f=0;returnyn;elsef=l;printf (/z输入有误,请重新输入(y/n): );charLink:No()intt
18、二 1, i ;char*no=NULL, nol10;while (t)t 二0;cin>>nol;no=nol;for (i=0;noi;i+)if(noi'0 |noi>'9)t二 1;printf f货物编号只能由0-9的字符组成,请重新输入货物编号(10个字符 内):);break;returnnol;voidLink:Fprintf ()FILE*fp二NULL;fp=fopen(z/d: WfileO 1 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);voidLink:Fscanf()FILE*fp二NULL;p二first
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论