利用Unix/Linux的IPC机制仿真一个音乐厅门票订售系统
2015-07-05 16:44
337 查看
求这样一个程序!跨专业考研学渣伤不起
利用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机制仿真一个音乐厅门票订售系统。
具体要求:
该系统包含若干售票代理,这些代理连接到一个票务中心计算机。每个代理可以看成是一个可并发执行的进程。因此,对同一个座位的订/售动作显然是需要采用互斥操作的。如果某个代理企图订/售一个已被占用的座位,系统应该禁止该操作并打印“座位已占用”的信息。如果某交易涉及对不存在的座位进行操作,则系统也应该打印出错信息。
很显然,为了保证并发操作正确运行,应该使用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座
而客户姓名不包含任何空格。
需要注意的是:购票之前无需先预订,而取消操作只有到涉及的作为被预订但尚未售出时候才有效。
为使结果显示更明晰,系统在每个交易完成后都应该给出交易的信息摘要,而在系统结束后则应该显示出座位的订售情况(包含客户信息)。
相关文章推荐
- CentOS6.x 升级 CentOS7.1
- linux块设备驱动之相关结构体
- Linux 基础命令知识1
- centos 扩展root根分区的大小
- linux下安装mysql
- ubuntu常用文件搜索命令 分类: linux 学习笔记 ubuntu 2015-07-05 15:40 84人阅读 评论(0) 收藏
- 《鸟哥的Linux私房菜》第五章 首次登录与在线求助man page
- Linux C single linked for any data type
- Linux C socket 封装
- kali linux虚拟wifi搭建
- linux下查看已经安装的jdk 并卸载jdk
- linux查看java jdk安装路径和设置环境变量
- Linux磁盘使用
- LINUX下JBOSS的安装及配置
- CentOS里alias命令详解
- Linux远程终端工具之Xmanager
- ubuntu权限管理常用命令 分类: linux ubuntu 学习笔记 2015-07-05 14:15 77人阅读 评论(0) 收藏
- linux驱动之按键
- linux程序设计——同时执行的线程(第十二章)
- 经验分享:在mint-linux 下进行 PHP源代码编译