资源简介
CD租售店
请实现一个CD出租销售店的模拟程序,该CD租售店,具有可租cd列表,可售cd列表。并具有租、还cd,销售、进货CD方法。假设cd店中可租CD列表5张,可售CD列表5种,每种10张,请实现以下线程
进货线程:只有一个,固定的每1秒启动一次,但是如果临时缺货则购买线程发送消息紧急启动一次,每次补齐可售CD列表。
销售线程:可以有两个或两个以上,启动的时间为500ms以内的随机数。购买数量为5以内的随机数。如果cd数量不足则随机选择等候或放弃。
租借线程:租借CD店的可租借CD,启动时间为300ms以内的随机数。租借序号为1-5随机序号的CD,如果该CD已经出租则随机选择等候或者放弃。如果可以借到CD则随机等候200~300ms然后归还。
程序运行2分钟以后停止。最后列出购买、进货、租借还的纪录(时间及行为)。
程序运行两次,以record.txt方式提交两次的程序输出。
提交源程序。

代码片段和文件信息
package lab4;
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
class SaleCD
{
int cdid;
String name;
int count;
public SaleCD(int cdid String name int count) {
super();
this.cdid = cdid;
this.name = name;
this.count = count;
}
}
class RentCD
{
int cdid;
String name;
boolean isRent;
public RentCD(int cdid String name boolean isRent) {
super();
this.cdid = cdid;
this.name = name;
this.isRent = false;
}
}
class InputThread extends Thread{
ArrayList SaleList;
MyCDshop cdshop;
public InputThread(MyCDshop cdshop){
super();
this.cdshop = cdshop;
}
}
class SaleThread extends Thread
{
ArrayList SaleList;
MyCDshop cdshop;
public SaleThread(MyCDshop cdshop) {
super();
this.cdshop = cdshop;
}
@Override
public void run() {
while(true)
{
try {
sleep((int)(Math.random()*500));
} catch (InterruptedException e) {
e.printStackTrace();
}
int cdid=(int)(Math.random()*5)+1;
int cdcount=(int)(Math.random()*5)+1;
synchronized (cdshop.SaleList) {
if (cdshop.saleCD(cdid cdcount)) {
System.out.println(new Date()+“成功销售“ + cdid + “数量“ + cdcount);
} else {
Random r = new Random();
if (r.nextBoolean()) {
System.out.println(new Date()+“数量不足,等候“);
cdshop.SaleList.notify();
do
{
try {
cdshop.SaleList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while(!cdshop.saleCD(cdid cdcount));
System.out.println(new Date()+“等候以后“+“成功销售“ + cdid + “数量“ + cdcount);
}
else
{
System.out.println(new Date()+“放弃销售“);
cdshop.SaleList.notify();
}
}
}
}
}
}
class RentThread extends Thread
{
MyCDshop cdshop;
public RentThread(MyCDshop cdshop) {
super();
this.cdshop = cdshop;
}
@Override
public void run() {
while(true)
{
try {
sleep((int)(Math.random()*300));
} catch (InterruptedException e) {
e.printStackTrace();
}
int cdid=(int)(Math.random()*5+1);
int times=(int)(Math.random()*100)+200;
synchronized (cdshop.RentList) {
if (cdshop.rentCD(cdid-1)) {
System.out.println(new Date()+“成功租到“ + “编号“+ cdid );
try{
Thread.sleep(times);
}catch(InterruptedException e) {
e.printStackTrace();
}
cdshop.backCD(cdid);
System.out.println(new Date()+“归还“ +cdid);
}
else {
Random r = new Random();
if (r.nextBoolean()) {
System.out.println(new Date()+“已租出,等候“);
cdshop.RentList.notify();
do
{
try {
cdshop.RentList.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while(cdshop.rentCD(cdid-1));
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-22 19:47 Cd\
文件 301 2015-12-06 10:30 Cd\.classpath
文件 378 2015-12-06 10:30 Cd\.project
目录 0 2015-12-22 19:45 Cd\.settings\
文件 598 2015-12-06 10:30 Cd\.settings\org.eclipse.jdt.core.prefs
目录 0 2015-12-22 19:45 Cd\bin\
目录 0 2015-12-22 19:45 Cd\bin\lab4\
文件 811 2015-12-22 19:36 Cd\bin\lab4\ControlThread.class
文件 1299 2015-12-22 19:36 Cd\bin\lab4\GetInThread.class
文件 456 2015-12-22 19:36 Cd\bin\lab4\InputThread.class
文件 3183 2015-12-22 19:36 Cd\bin\lab4\MyCDshop.class
文件 448 2015-12-22 19:36 Cd\bin\lab4\RentCD.class
文件 2184 2015-12-22 19:36 Cd\bin\lab4\RentThread.class
文件 443 2015-12-22 19:36 Cd\bin\lab4\SaleCD.class
文件 1992 2015-12-22 19:36 Cd\bin\lab4\SaleThread.class
文件 6907 2015-12-22 19:33 Cd\record.txt
目录 0 2015-12-22 19:45 Cd\src\
目录 0 2015-12-22 19:45 Cd\src\lab4\
文件 6427 2015-12-22 19:36 Cd\src\lab4\MyCDshop.java
文件 23872 2016-11-25 16:16 CD租售店.docx
- 上一篇:Java 动态规划求解TSP问题
- 下一篇:JAVA-画笔小程序
相关资源
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
- java软件工程师简历模板——应届生
- DES(CFB) JAVA
评论
共有 条评论