📄 stocklist.cpp
字号:
// stocklist.cpp
# include<iostream.h>
# include"stocklist.h"
void stock_list::insert_stock(stock_node *& new_node)
{
new_node->next_node=head_ptr; // 首地址指向新建立地址的下一个地址。
head_ptr=new_node; // 校正首地址。
}
void stock_list::display_list()//显示库存清单。
{
if (head_ptr==NULL)
{
cout<<"\n *****清单为空! ***** \n";
return;
}//无库存时清单为空。
stock_node*current_node=head_ptr;
part*part_ptr;//建立零件指针。
ship*ship_ptr;//建立船指针。
cout<<"项目(船/零件) 库存量 \n"
<<"------------------------------------ \n";
do
{
cout<<setw(15)<<setiosflags(ios::left);
cout<<setw(28);
if(current_node->stock_type=='p')
{
part_ptr=(part*)(current_node->stock_ptr);
cout<<part_ptr->get_partnum();
}
else
{
ship_ptr=(ship*)(current_node->stock_ptr);
cout<<ship_ptr->get_model();
}
cout<<setw(8)<<setiosflags(ios::right)
<<current_node->stock_ptr->get_level()<<endl;
current_node=current_node->next_node;//指针指向下一个地址。
}while (current_node!=NULL);
}
stock_list::~stock_list()
{
stock_node * old_head;
while(head_ptr!=NULL)
{
old_head=head_ptr;
head_ptr=head_ptr->next_node;//校正首地址。
delete old_head;//释放旧指针占用空间。
}
}
void insert_part(stock_list& slist)//添加零件数据。
{
char part_num[4];
unsigned int current_level,reorder_level;
float price;
cout<<"\n 请输入零件型号(1字母+2数字):";//输入零件型号。
cin>>part_num;
cout<<"\n 请输入其价格:";//输入零件价格。
cin>>price;
cout<<"\n 请输入当前库存量:";//输入零件库存量。
cin>>current_level;
cout<<"\n 请输入定货量:";//输入定货量。
cin>>reorder_level;
part*new_part=new part(current_level,price,reorder_level,part_num);
stock_node* new_node=new stock_node;
new_node->stock_ptr=new_part;
new_node->stock_type='p';
slist.insert_stock(new_node);
}
enum boolean{FALSE,TRUE};
stock_node*stock_list :: find_part(char part_num[])
{
stock_node*snode_ptr = head_ptr;
part*part_ptr;
boolean found = FALSE;
while((snode_ptr!=NULL)&&(!found))
{
if(snode_ptr->stock_type == 'p')
{
part_ptr=(part*)(snode_ptr->stock_ptr);
if(strcmp(part_ptr->get_partnum(),part_num)==0)
{
return snode_ptr;
}
}
snode_ptr=snode_ptr->next_node;
}
return NULL;
}
stock_node*stock_list :: find_ship(char model[])
{
stock_node*snode_ptr = head_ptr;
ship*ship_ptr;
boolean found = FALSE;
while((snode_ptr!=NULL)&&(!found))
{
if(snode_ptr->stock_type == 's')
{
ship_ptr=(ship*)(snode_ptr->stock_ptr);
if(strcmp(ship_ptr->get_model(),model)==0)
{
return snode_ptr;
}
}
snode_ptr=snode_ptr->next_node;
}
return NULL;
}
void insert_ship(stock_list&slist)//建立船的库存数据。
{
char model[MAX_MODEL+1];
float engine_size;
unsigned short int max_speed;
unsigned int current_level;
float price;
cout<<"\n请用字母输入船的型号:";
cin>>model;
cout<<"\n 请输入其价格:";
cin>>price;
cout<<"\n 请输入当前库存量 :";
cin>> current_level;
cout<<"\n 请输入引擎规格 :";
cin>> engine_size;
cout<<"\n 请输入船的最高速度:";
cin>>max_speed;
ship*new_ship = new ship(current_level,price,model,engine_size,max_speed);
stock_node* new_node = new stock_node;
new_node->stock_ptr=new_ship;
new_node->stock_type='s';
slist.insert_stock(new_node);
}
void change_stock_level(stock_list&slist,char part_ship)//改变库存数量。
{
stock_node * snode_ptr;
char part_num[4];
unsigned level;
char model[MAX_MODEL+1];
if(part_ship == 'p')
{
cout<<"\n 请输入零件型号(1字母+2数字) :";
cin>> part_num;
snode_ptr=slist.find_part(part_num);
}
else
{
cout<<"\n 请用字母输入船的型号:";
cin>> model;
snode_ptr=slist.find_ship(model);
}
if(snode_ptr == NULL)
{
generate_part_error();
}
else
{
cout << "\n 请输入现在的库存量 :";
cin >> level;
snode_ptr->stock_ptr->change_level(level);
}
}
void query_part_level (stock_list& slist)//查询某型号零件的库存。
{
stock_node * snode_ptr;
char part_num[4];
char any_key;
cout <<"\n 请输入零件型号(1字母+2数字) :";
cin>> part_num;
snode_ptr = slist.find_part (part_num);
if(snode_ptr==NULL)
{
generate_part_error();
}
else
{
cout<<"\n current level :"
<<snode_ptr->stock_ptr->get_level()
<<"\n ......按任意键继续......";
cin>> any_key;
}
}
void generate_part_error()
{
cout<<"\n\n\n\a ***** 无此类型! *****";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -