数据结构课程设计仓库管理系统源程序.docx

上传人:b****7 文档编号:11306095 上传时间:2023-02-26 格式:DOCX 页数:17 大小:17.34KB
下载 相关 举报
数据结构课程设计仓库管理系统源程序.docx_第1页
第1页 / 共17页
数据结构课程设计仓库管理系统源程序.docx_第2页
第2页 / 共17页
数据结构课程设计仓库管理系统源程序.docx_第3页
第3页 / 共17页
数据结构课程设计仓库管理系统源程序.docx_第4页
第4页 / 共17页
数据结构课程设计仓库管理系统源程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构课程设计仓库管理系统源程序.docx

《数据结构课程设计仓库管理系统源程序.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计仓库管理系统源程序.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构课程设计仓库管理系统源程序.docx

数据结构课程设计仓库管理系统源程序

#include

usingnamespacestd;

typedefstruct{

charno[10];

charname[30];

intcount;

}DataType;

structNode{

DataTypedata;

Node*next;

};

classLink{

public:

Link();//构造函数,建立单链表

intInsert();//插入节点,即添加货物

Node*Search();//查找某个节点

voidDelete();//删除节点或更改节点的数据

voidshow();//输出节点信息

charYn();//输入(y/n)函数

char*No();//输入货物编号函数

voidFprintf();//将单链表数据写到文件中

voidFscanf();//读取文件中的数据

private:

Node*first,*real,*p,*q;

};

intmain()

{

intt=1,flag=1,f=1;

charn;

Node*p;

LinkKu;

while(t)

{

printf("\n\n\n\n\n");

printf("\n\t\t\t**********************************");

printf("\n\t\t\t* XXX仓库管理系统     *");

printf("\n\t\t\t*1---存储货物*");

printf("\n\t\t\t*2---查询货物信息*");

printf("\n\t\t\t*3---取出货物*");

printf("\n\t\t\t*4---显示仓库所有货物信息*");

printf("\n\t\t\t*0---退出仓库管理系统*");

printf("\n\t\t\t**********************************");

printf("\n\t\t\t请选择菜单号(0--4):

");

f=1;

while(f==1)

{

cin>>n;

if(n<'0'||n>'4')

{

printf("输入有误,请重新输入(0--4):

");

f=1;

}

else

f=0;

}

printf("\n\n");

switch(n)

{

case'1':

{

printf("**********************************\n");

printf("*存储货物*\n");

printf("**********************************\n");

//printf("货物编号货物名称货物数量\n");

//printf("**********************************\n");

inta=1;

while(a==1)

{

a=Ku.Insert();

Ku.Fprintf();//将单链表里的数据写入文件。

}

break;

}

case'2':

{

printf("***********************************\n");

printf("*查询货物信息*\n");

printf("***********************************\n");

flag=1;

charyn;

while(flag==1)

{

p=Ku.Search();

if(p)

{

printf("\n货物编号货物名称货物数量\n");

printf("---------------------------\n");

printf("%5s%9s%8d\n",p->data.no,p->data.name,p->data.count);

printf("---------------------------\n");

}

else

printf("仓库中没有该货物!

\n");

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;

charyn;

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();

break;

}

case'0':

{

charyn;

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;

}

}

}

return0;

}

Link:

:

Link()

{

first=newNode;

first->next=NULL;

real=first;

FILE*fp=NULL;

fp=fopen("d:

\\file01.txt","a");

fclose(fp);

//Fprintf();

Fscanf();

}

intLink:

:

Insert()

{

charyn;

charno[10],name[30];

intcount,t;

printf("\n货物编号货物名称(30)货物数量(5)\n");

printf("-----------------------------------------------\n");

printf("\n请输入货物编号(10个字符以):

\n");

strcpy(no,No());

printf("\n输入货物名称(30个字符以):

\n");

cin>>name;

t=1;

while(t)

{

printf("输入货物数量(整数):

");

cin>>count;

if(count<=0)

{

t=1;

printf("货物数量必须大于0,请重新");

}

else

t=0;

}

p=first;real=first;

p=p->next;

while(p)

{

if(strcmp(p->data.no,no)==0&&strcmp(p->data.name,name)==0)

{

//printf("仓库中已有该货物%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')return1;

if(yn=='n'||yn=='N')return0;

}

if(strcmp(p->data.no,no)==0&&strcmp(p->data.name,name)!

=0)

{

printf("该货物的名称输入有误,应为%s\n请重新输入(y)或取消存货(n):

",p->data.name);

yn=Yn();

if(yn=='y'||yn=='Y')return1;

if(yn=='n'||yn=='N')return0;

}

if(strcmp(p->data.no,no)!

=0&&strcmp(p->data.name,name)==0)

{

printf("该货物的编号输入有误,应为%s\n请重新输入(y)或取消存货(n):

",p->data.no);

yn=Yn();

if(yn=='y'||yn=='Y')return1;

if(yn=='n'||yn=='N')return0;

}

real=p;

p=p->next;

}

if(p==NULL)

{

Node*s=newNode;

strcpy(s->data.no,no);

strcpy(s->data.name,name);

s->data.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')return1;

if(yn=='n'||yn=='N')return0;

}

return0;

}

Node*Link:

:

Search()

{

charab;

charno[10],name[30];

intf;

p=first;

printf("==================\n");

printf("a.按货物编号查询\n");

printf("b.按货物名称查询\n");

printf("==================\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->next;

}

if(ab=='b'||ab=='B')

{

printf("\n请输入货物名称(30个字符):

");

cin>>name;

while(p&&strcmp(p->data.name,name)!

=0)

p=p->next;

}

}

else

{

f=1;

printf("输入有误,请重新输入(a/b):

");

}

}

returnp;

}

voidLink:

:

Delete()

{

Node*q,*p;

intcount,t;

charyn;

p=Search();

if(p==NULL)

{

printf("仓库中没有该货物!

\n");

}

else

{

printf("\n仓库中有该货物%d件。

",p->data.count);

intflag=1;

while(flag==1)

{

printf("\n请输入要取出的货物数量(整数):

");

t=1;

while(t==1)

{

cin>>count;

if(count<0)

{

t=1;

printf("取货数量不能为负数,请重新输入取货数量(整数):

");

}

else

t=0;

}

if(count>p->data.count)

{

printf("\n输入的取货数量超过库存,是否要重新输入取货数量?

(y/n):

");

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)

q=q->next;

q->next=p->next;

deletep;

Fprintf();//将单链表里的数据写入文件。

printf("\n取货成功!

该货物已被全部取出!

\n");

}

}

}

}

}

voidLink:

:

show()

{

if(first->next==NULL)

printf("仓库没有货物!

");

else

{

printf("货物编号货物名称货物数量\n");

printf("-----------------------------------------------------------------------------\n");

p=first->next;

while(p)

{

printf("%15s%23s%23d\n",p->data.no,p->data.name,p->data.count);

p=p->next;

printf("-----------------------------------------------------------------------------\n");

}

}

}

charLink:

:

Yn()

{

intf=1;

charyn;

while(f==1)

{

cin>>yn;

if(yn=='y'||yn=='Y'||yn=='n'||yn=='N')

{

f=0;

returnyn;

}

else

{

f=1;

printf("输入有误,请重新输入(y/n):

");

}

}

}

char*Link:

:

No()

{

intt=1,i;

char*no=NULL,no1[10];

while(t)

{

t=0;

cin>>no1;

no=no1;

for(i=0;no[i];i++)

{

if(no[i]<'0'||no[i]>'9')

{

t=1;

printf("货物编号只能由0-9的字符组成,请重新输入货物编号(10个字符):

");

break;

}

}

}

returnno1;

}

voidLink:

:

Fprintf()

{

FILE*fp=NULL;

fp=fopen("d:

\\file01.txt","w");

p=first->next;

while(p!

=NULL)

{

fprintf(fp,"%10s%30s%10d\n",p->data.no,p->data.name,p->data.count);

p=p->next;

}

fclose(fp);

}

voidLink:

:

Fscanf()

{

FILE*fp=NULL;

p=first;

Node*s;

fp=fopen("d:

\\file01.txt","r");

if(fp==NULL)

{

cout<<"不能打开文件!

"<

exit(0);

}

while(feof(fp)==0)

{

s=newNode;

fscanf(fp,"%s%s%d\n",s->data.no,s->data.name,&s->data.count);

if(s->data.count>0)

{

p->next=s;

p=s;

}

}

p->next=NULL;

fclose(fp);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1