⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stocklist.cpp

📁 C++作业 完成一些简单的图形及其输入输出的功能 对于大学本科生做课程设计又很大帮助
💻 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 + -