文档库 最新最全的文档下载
当前位置:文档库 › 数据结构仓库管理系统c++

数据结构仓库管理系统c++

#include

#include

#include

#include

using namespace std;

struct prodect

{

string name;//产品名字

int num;// 产品数量

int maxnumber;//最大值

int minnumber;//最小值

prodect *next;

};

struct list

{

int no;//库单编号

string name;//填单人

string proname;//产品名字

int pronum;//产品数量

int year;//填单年

int month;//填单月

list *next;

};

struct borlist

{

int no;//借单编号

string name;//借单填写人

int year;//借单填写时间

int month;

string proname;//借出产品

int number;//借出数量

int tyear;

int tmonth;

borlist *next;

};

prodect *p_head;

list *i_head;

list *o_head;

borlist *b_head;

int count = 3;

int i_number = 0;

int o_number = 0;

int b_number = 0;

void init()

{

p_head = new prodect;

p_head->next = NULL;

i_head = new list;

i_head->next = NULL;

o_head = new list;

o_head->next = NULL;

b_head = new borlist;

b_head->next = NULL;

}

void initproduce()

{

for (int i=0;i

{

prodect *p = new prodect;

cout<<"一共"<

cout<<"请输入产品名字:";

cin>>p->name;

cout<<"请输入产品数量:";

cin>>p->num;

cout<<"请输入产品最大值:";

cin>>p->maxnumber;

cout<<"请输入产品最小值:";

cin>>p->minnumber;

p->next = p_head->next;

p_head->next = p;

}

}

void input()

{

list *sp = new list;

cout<<"请填写入库单信息。"<

cout<<"请输入库单的编号:";

cin>>sp->no;

cout<<"产品入库人:";

cin>>sp->name;

cout<<"入库产品名字:";

cin>>sp->proname;

cout<<"入库产品数量:";

cin>>sp->pronum;

cout<<"入库的年:";

cin>>sp->year;

cout<<"入库的月:";

cin>>sp->month;

prodect *tp = new prodect;

tp = p_head->next;

int k = 0;

while (tp)

{

if (tp->name == sp->proname)

{

int m_max = sp->pronum + tp->num;

if (m_max > tp->maxnumber)

{

k = 1;

break;

}

k = 2;

tp->num = m_max;

sp->next = i_head->next;

i_head->next = sp;

break;

}

tp = tp->next;

}

if ( k ==0 )

{

cout<<"没有你输入的产品信息。"<

}

if ( k == 1)

{

cout<<"入库失败,产品"<name<<"已达上限。"<

}

if ( k == 2 )

{

i_number = i_number + 1;

cout<<"产品入库成功。"<

}

}

void output()

{

list *sp = new list;

cout<<"请填写出库单信息。"<

cout<<"请输出库单的编号:";

cin>>sp->no;

cout<<"产品出库人:";

cin>>sp->name;

cout<<"出库产品名字:";

cin>>sp->proname;

cout<<"出库产品数量:";

cin>>sp->pronum;

cout<<"出库的年:";

cin>>sp->year;

cout<<"出库的月:";

cin>>sp->month;

prodect *tp = new prodect;

tp = p_head->next;

int k = 0;

while (tp)

{

if (tp->name == sp->proname)

{

int m_min = tp->num - sp->pronum;

if (m_min < tp->minnumber)

{

k = 1;

break;

}

k = 2;

tp->num = m_min;

sp->next = o_head->next;

o_head->next = sp;

break;

}

tp = tp->next;

}

if ( k ==0 )

{

cout<<"没有你输入的产品信息。"<

}

if ( k == 1)

{

cout<<"出库失败,产品"<name<<"已达下限。"<

}

if ( k == 2 )

{

o_number = o_number + 1;

cout<<"产品出库成功。"<

}

}

void brow()

{

borlist *sp = new borlist;

cout<<"请填写借单信息。"<

cout<<"请输出借单的编号:";

cin>>sp->no;

cout<<"借单填写人:";

cin>>sp->name;

cout<<"借单的年:";

cin>>sp->year;

cout<<"借单的月:";

cin>>sp->month;

cout<<"借出产品的名字:";

cin>>sp->proname;

cout<<"借出产品的数量:";

cin>>sp->number;

cout<<"应还的年:";

cin>>sp->tyear;

cout<<"应还的月:";

cin>>sp->tmonth;

prodect *tp = new prodect;

tp = p_head->next;

int k = 0;

while (tp)

{

if (tp->name == sp->proname)

{

int m_min = tp->num - sp->number;

if (m_min < tp->minnumber)

{

k = 1;

break;

}

k = 2;

tp->num = m_min;

sp->next = b_head->next;

b_head->next = sp;

break;

}

tp = tp->next;

}

if ( k ==0 )

{

cout<<"没有你输入的产品信息。"<

}

if ( k == 1)

{

cout<<"借出失败,产品"<name<<"已达下限。"<

}

if ( k == 2 )

{

b_number = b_number + 1;

cout<<"产品借出成功。"<

}

}

void takein()

{

int m_no;

string m_name;

int m_count;

cout<<"请输入借单的编号:";

cin>>m_no;

borlist *sp = new borlist;

borlist *mp = new borlist;

sp = b_head->next;

mp = b_head;

int mm = 0;

while (sp)

{

if (sp->no == m_no)

{

mm = 1;

break;

}

mp = sp;

sp = sp->next;

}

if (mm == 0)

{

cout<<"你输入的借单编号不存在。"<

}

if ( mm == 1 )

{

prodect *tp = new prodect;

tp = p_head->next;

while (tp)

{

if (tp->name == sp->proname)

{

m_name = tp->name;

m_count = tp->num;

break;

}

tp = tp->next;

}

cout<<"你应还的产品是"<number<

int t_number;

cout<<"请输入你要还的产品的数量:";

cin>>t_number;

int m_maxnumber = t_number + m_count;

if (m_maxnumber > tp->maxnumber)

{

cout<<"还产品失败,产品已达上限。"<

}

else

{

int ss = sp->number - t_number;

if (ss>0)

{

tp->num = m_maxnumber;

cout<<"产品归还成功,还欠数量为"<

sp->number = ss;

}

else

{

tp->num = m_maxnumber;

mp->next = sp->next;

cout<<"产品归还成功,产品已还清。"<

b_number = b_number - 1;

}

}

}

}

void inputlook()

{

list *rp = new list;

rp = i_head->next;

if (rp == NULL)

{

cout<<"没有入库信息"<

return;

}

while (rp)

{

char str[128];

sprintf(str,"%d年%d月",rp->year,rp->month);

cout<<"入库单编号;"<no<<",入库人:"<name<<",入库产品:"<< rp->proname<<",入库数量:"<pronum<<",入库时间:"<

rp = rp->next;

}

}

void outputlook()

{

list *rp = new list;

rp = o_head->next;

if (rp == NULL)

{

cout<<"没有出库信息"<

return;

}

while (rp)

{

char str[128];

sprintf(str,"%d年%d月",rp->year,rp->month);

cout<<"出库单编号;"<no<<",出库人:"<name<<",出库产品:"<< rp->proname<<",出库数量:"<pronum<<",出库时间:"<

rp = rp->next;

}

void browlook()

{

borlist *p = new borlist;

p = b_head->next;

if (p == NULL)

{

cout<<"没有借出产品信息"<

return;

}

while (p)

{

char str[128];

sprintf(str,"%d年%d月",p->year,p->month);

char str1[128];

sprintf(str1,"%d年%d月",p->tyear,p->tmonth);

cout<<"借单编号;"<no<<",借出人:"<name<<",借出时间:"<<

str<<",借出产品:"<proname<<",借出数量:"<number<<"应还时间"<

p = p->next;

}

}

void producelook()

{

prodect *tp = new prodect;

tp = p_head->next;

while (tp)

{

cout<<"产品名字:"<name<<",当前数量"<num<<",产品上限:"<maxnumber<<",产品下限:"<minnumber<

tp = tp->next;

}

}

void look()

{

int flag =true;

while (flag)

cout<<"1、查看入库情况。"<

cout<<"2、查看出库情况。"<

cout<<"3、查看借出情况。"<

cout<<"4、查看当前仓库情况。"<

cout<<"5、返回主菜单。"<

cout<<"请选择功能:";

char mm;

cin>>mm;

int tt = mm - 48;

switch (tt)

{

case 1:

inputlook();

break;

case 2:

outputlook();

break;

case 3:

browlook();

break;

case 4:

producelook();

break;

case 5:

flag = false;

break;

}

}

}

void savefile() //保存文件

{

ofstream file("factory.txt");

file<

prodect * p1 = new prodect;

p1 = p_head->next;

while(p1 != NULL )

{

file<name<<" "<num<<" "<maxnumber<<" "<minnumber<

p1 = p1->next;

}

file<<" "<

file<<" "<

file<

list *p2 = new list;

p2 = i_head->next;

while (p2 != NULL)

{

file<no<<" "<name<<" "<proname<<" "<pronum<<" "<year<<" "<month<

p2 = p2->next;

}

file<<" "<

file<<" "<

file<

list *p3 = new list;

p3 = o_head->next;

while (p3 != NULL)

{

file<no<<" "<name<<" "<proname<<" "<pronum<<" "<year<<" "<month<

p3 = p3->next;

}

file<<" "<

file<<" "<

file<

borlist *p4 = new borlist ;

p4 = b_head->next;

while ( p4!=NULL )

{

file<no<<" "<name<<" "<year<<" "<month<<" "<proname<<" "<number

<<" "<tyear<<" "<tmonth<

p4 = p4->next;

}

}

bool readfile()

{

ifstream file;

file.open("factory.txt");

if(!file)

{

cout<<"仓库文件不存在,进行初始化。" <

return false;

}

file>>count;

for (int i=0;i

{

prodect *s1 = new prodect;

file>>s1->name>>s1->num>>s1->maxnumber>>s1->minnumber;

s1->next = p_head->next;

p_head->next =s1;

}

file>>i_number;

for (int j=0;j

{

list *s2 = new list;

file>>s2->no>>s2->name>>s2->proname>>s2->pronum>>s2->year>>s2->month;

s2->next = i_head->next;

i_head->next = s2;

}

file>>o_number;

for (int k=0;k

{

list *s2 = new list;

file>>s2->no>>s2->name>>s2->proname>>s2->pronum>>s2->year>>s2->month;

s2->next = o_head->next;

o_head->next = s2;

}

file>>b_number;

for (int m=0;m

{

borlist *s3 = new borlist ;

file>>s3->no>>s3->name>>s3->year>>s3->month>>s3->proname>>s3->number >>s3->tyear>>s3->tmonth;

}

return true;

}

void main()

{

init();

if (!readfile())

{

initproduce();

}

bool index = true;

while(index)

{

cout<<"*********仓库管理系统********"<

cout<<" 1、产品入库。"<

cout<<" 2、产品出库。"<

cout<<" 3、借出产品。"<

cout<<" 4、归还产品。"<

cout<<" 5、查看信息"<

cout<<" 6、保存并退出系统"<

cout<<"*********************************"<

cout<<" 请选择功能:";

char tt;

cin>>tt;

int gg = tt -48;

if (gg<1||gg>6)

{

cout<<"输入选择错误。"<

break;

}

switch(gg)

{

case 1: input();break;

case 2: output();break;

case 3: brow();break;

case 4: takein();break;

case 5: look();break;

case 6: savefile();index = false ;break;

default : cout<<"输入错误请重新输入!" <

}

}

}

相关文档
相关文档 最新文档