利用Unix/Linux的IPC机制仿真一个音乐厅门票订售系统

求这样一个程序!跨专业考研学渣伤不起


利用Unix/Linux的IPC机制仿真一个音乐厅门票订售系统。

具体要求:

该系统包含若干售票代理,这些代理连接到一个票务中心计算机。

每个代理可以看成是一个可并发执行的进程。因此,对同一个座位的订/售动作显然是需要采用互斥操作的。如果某个代理企图订/售一个已被占用的座位,系统应该禁止该操作并打印“座位已占用”的信息。如果某交易涉及对不存在的座位进行操作,则系统也应该打印出错信息。

很显然,为了保证并发操作正确运行,应该使用Unix/Linux的IPC机制的相关调用。

设音乐厅有n排座位(A,B,C…),每排则包含m个座位(编号1~m)。

为模拟代理和票务中心计算机之间的通信延迟以及每个交易的执行时间,可使用sleep()调用。

系统的输入格式如下

n     //  音乐厅座位排数
m     //  每排座位数
k     //  代理个数
agent 1
reserve reserve_time (单位秒)
ticket ticket_time   (单位秒)
cancel cancel_time   (单位秒)
check_customer check_time (单位秒)

  :
有效的交易列表
  :
end
  :
  :
  :
agent k
reserve reserve_time (单位秒)
ticket ticket_time   (单位秒)
cancel cancel_time   (单位秒)
check_customer check_time (单位秒)
  :
有效的交易列表
  :
end

有效的交易如下

reserve <座位描述> name_of_customer  // 为某客户预订指定座位的票
ticket <座位描述> name_of_customer   // 为某客户购买指定座位的票
cancel <座位描述> name_of_customer   // 为某客户取消指定座位的预订
show all name_of_customer            // 显示某客户的预订或购票情况

其中,<座位描述>可以表示一个座位也可以是多个座位,例如:

A 2 // 第A行,第2座
E 4 7 // 第E行,第4到7座

而客户姓名不包含任何空格。

需要注意的是:购票之前无需先预订,而取消操作只有到涉及的作为被预订但尚未售出时候才有效。

为使结果显示更明晰,系统在每个交易完成后都应该给出交易的信息摘要,而在系统结束后则应该显示出座位的订售情况(包含客户信息)。

你可能感兴趣的:(利用Unix/Linux的IPC机制仿真一个音乐厅门票订售系统)