--选择状态
--表示尚未选择出站口
end if;
when select_state=>
if(type_temp='0') then
if((ticket_stop>="0001")and(ticket_stop<="1000"))then
--乘坐站数不超过8站
--由于整个系统中涉及的最小金额为5角,为表示方便,有关金额的量统一以“角”为单位--即5角为“5”,1元为“10”,2元为“20”,5元为“50”,10元为“100”
price:="00010100";
--票价为2元
--用5位逻辑矢量表示票种和数量
--其中前2位表示票种:10000表示4元票,01000表示2元票 --后3位表示数量:10000表示3张,01000表示2张,00100表示1张 --二者相加即可同时表示购买的票种和张数信息
temp_type:="01000"; type_temp:='1';
--表示2元票 --记录已选择出站口
elsif((ticket_stop>="1001")and(ticket_stop<="1111"))then
--乘坐站数超过8站 --票价为4元 --表示4元票 --记录已选择出站口
price:="00101000"; temp_type:="10000"; type_temp:='1';
end if;
then
end if;
if((account_temp='0')and(type_temp='1'))
--表示已选择出站口但尚未选择购票张数
case ticket_account is
when "11"=>
--选择3张票
temp_account:="00100";--表示3张票 number:="11";
--购票张数为3
total_price:=price+price+price; --计算总票价 account_temp:='1'; --记录已选择购票张数
--选择2张票
when "10"=>
temp_account:="00010"; number:="10";