#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<<"入库失败,产品"< } 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<<"出库失败,产品"< } 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<<"借出失败,产品"< } 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<<"你应还的产品是"< 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<<"入库单编号;"< 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<<"出库单编号;"< 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<<"借单编号;"< str<<",借出产品:"< p = p->next; } } void producelook() { prodect *tp = new prodect; tp = p_head->next; while (tp) { cout<<"产品名字:"< 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< p1 = p1->next; } file<<" "< file<<" "< file< list *p2 = new list; p2 = i_head->next; while (p2 != NULL) { file< p2 = p2->next; } file<<" "< file<<" "< file< list *p3 = new list; p3 = o_head->next; while (p3 != NULL) { file< p3 = p3->next; } file<<" "< file<<" "< file< borlist *p4 = new borlist ; p4 = b_head->next; while ( p4!=NULL ) { file< <<" "< 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<<"输入错误请重新输入!" < } } }