C语言项目练习

C语言项目练习

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的交易过程,其余待完善

你可能感兴趣的:(C语言项目练习)