C語言編程練習題目: A出版社、B出版社是圖書出版發行領域的巨頭,A出版社出版的書籍種類涉及科技、外文、社科、衛生、生活、體育等方面;B 出版社出版的書籍種類涉及科技、社科、衛生、生活、體育、教育等方面。 C 書店、D書店、E 書店是 3 家著名的圖書銷售商,C 書店以銷售科技類書圖書聞名,同時也銷售外文、教育類書籍;D書店以銷售外文書籍店聞名,同時兼營科技、社科、教育類書籍;E 書店為銷售圖書種類最完全而著名,書籍種類包括科技、外文、社科、衛生、生活、體育、教育等方面。 F、G是兩個典型的圖書購買者(圖書用戶),定期或不定期的去 E 書店買書;其中 F 是一個個人用戶,對科技、體育、生活類圖書非常感興趣,對這 3 類圖書是逢書必買;G是一個單位用戶,它對所有類的圖書都感興趣。 實體 A、B、C、D、E、F、G工作過程參見附一。 各個實體的初始化描述參見附二 題目要求: 請在Window下的VC6.0環境下,使用Win32 Console Application方式并采用多線程編程方式來模擬實體 A、B、C、D、E 之間的工作過程。 具體要求: 1.出版社、書店、圖書用戶作為獨立的單位,各自內部信息相互保密,一般不隨意暴露: 2.出版社給書店提供以下接口: 注冊接口: 供書店用戶登陸注冊自己的信息,便于發定購通知; 參數信息: 書店 ID、 書店經營圖書的種類、 通知的 Callback 函數 等等 查詢接口: 供書店用戶定購前查詢; 參數信息: 圖書種類 查詢種類(全部、新書、再版) 查詢結果返回 等等 定購接口: 供書店來定購書籍; 參數信息: 書店 ID 圖書名 購買數量 聯絡方式的 Callback(上次不足圖書的再版通知) 等等 3.書店(特別是 E 書店)給圖書購買者提供以下接口:查詢接口: 供圖書購買者購買前進行查詢; 參數信息: 圖書種類查詢種類(全部、新書、再版) 查詢結果返回 等等 購買接口: 供圖書購買者進行購買; 參數信息: 購買者ID 圖書名稱 購買數量 聯絡方式的Callback(上次不足圖書的到貨通知) 等等 4.在主線程中,控制各個實體的初始化、上述模擬活動的開始和停止; 5.出版社、書店、圖書購買的工作活動按照時間順序輸出到文件work.txt中; 6.為了驗證程序執行的正確性,各個實體(A、B、C、D、E、F、G)都應記載數據, 出版社應記錄: 出版(再版)書目、 庫存量、銷售量、銷售明細(每次銷售給那個書店多少冊)、定購書目數量以及明細(每次向誰定購了什么書、多少本)、銷售書目數量以及明細 圖書購買者:記錄購買書目數量以及明細。以上信息每隔30秒輸出一次,以便于核對程序執行的正確性。 7.程序要考慮使用良好的程序結構和數據結構、程序講求效率。 附一A、B、C、D、E的工作描述 一、關于出版社工作 1.1出版 出版類型: 出版圖書類型:新書、再版(主要是由于銷售好而再版); 出版數量:新書出版的數量 A、B出版社:每隔10秒出版一種新圖書,每次1000冊,即 A出版圖書的順序為:科技(1000)->外文(1000)->社科(1000)->衛生(1000)->生活(1000)->體育(1000)->科技(1000); B出版圖書的順序為:科技(1000)->社科(1000)->衛生(1000)->生活(1000)->體育(1000)->教育(1000)->科技(1000) 再版圖書的數量以及再版 當出現缺貨時進行再版,每個書再版的數量為 (1)再版500冊(當缺貨數量<=500冊時); (2)大于缺貨數量并為1000的整數倍(當缺貨數量>500冊時); 再版請求要進行管理,每次再版不花時間。 出版書目相關信息 書目信息包括:編號、書名、種類、出版社等。 1.2發行(銷售) 具體工作包括: 發行通知: 出版新書,向所有訂閱此分類的書店通知, 再版,只通知訂購此種圖書但因缺貨沒買到書的書店。接受書店定購:如有貨,則發貨 否則,存貨部分進行銷售(同步完成),剩余部分轉再版處理(異步完成); 并且定購接口中,要有書店的信息,以便于再版后的通知(對上次購買不足的書店)。 1.3提供書目查詢服務提供向書店提供書目查詢服務,查詢分類查書目、庫存等。 提供查詢希望能夠講求效率。 二、關于書店工作 2.1定購工作 定購分類兩類:一類是主動定購、另一類是被動定購; 被動定購:接到書店定購通知后去定購; 主動定購:當前書店銷售庫存為0,而發生的定購; 每次定購不限于一種圖書。 定購前,應該進行相關書目信息的查詢。 E書店接到新書通知后每次訂購200冊 如果書店定購的圖書,出版社貨不足,則庫存有多少購買多少,不足部分等到圖書再版后通知再購買。(例如要購買500本,而庫存只有300本,則先購300本,剩下200本等到再版后再購買) 三、關于圖書購買者 G是一個單位用戶,對科技、外文、社科、衛生、生活、體育、教育類圖書都感興趣,不定期從E書店購買新書,每次購買的數量是一個隨機數(小于500); 這里的不定期可以認為G每隔幾秒(小于8的隨機數)到E書店查詢一次,看看是否有新書,如果有新書則一定購買新書,否則隨機購買一種原有的書,如果貨物不足,則庫存有多少購買多少,不足部分等到書店通知到貨后再購買。(例如要購買50本,而庫存只有30本,則先購30本,剩下20本等到書店到貨后再購買) 附二 系統的初始化描述 A出版社、B出版社、 C書店、 D書店、 E書店、F圖書購買者、G圖書購買者初始的數據都為空。 活動開始的順序為: 1. A、B出版社開始出書 2. 出版后,出版社通知注冊的書店(C、D、E),來定購; 3. 書店定購后,開始圖書銷售; 4. 圖書購買者(G)定期到書店買書; 練習要求:先模擬出版社A,書商E,圖書購買者G的交易過程,其余待完善
posted on 2009-08-03 17:10
人生在于攀登! 閱讀(270)
評論(2) 編輯 收藏 引用