网络编程课程设计报告--模拟火车售票退票系统

网络编程课程设计报告--模拟火车售票退票系统

ID:9816774

大小:358.00 KB

页数:21页

时间:2018-05-10

网络编程课程设计报告--模拟火车售票退票系统_第1页
网络编程课程设计报告--模拟火车售票退票系统_第2页
网络编程课程设计报告--模拟火车售票退票系统_第3页
网络编程课程设计报告--模拟火车售票退票系统_第4页
网络编程课程设计报告--模拟火车售票退票系统_第5页
资源描述:

《网络编程课程设计报告--模拟火车售票退票系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Java网络编程报告姓名:蒋怡学号:题目:模拟火车售票退票系统一、作业要求:模拟火车售票退票系统实现一个服务器为多个客户服务,要求1、服务器用线程池,线程容量为4,座位数为60个,即01-60号座.2、客户通过网络发送请求可以退票可以买票,先来先服务,买票还是退票由随机数决定,退票必须是该用户买过的有效票,先买的票先退。若退票时该用户已没有买到的票,则改为买票。若服务器票已售完,则需等待,先来先服务,哪个客户先来,服务器将先为哪个客户服务。3、服务器每次接收一个客户请求需打印该客户的端口号、IP和该用户是买票还是退票,处理该请求之

2、前目前剩余的票所有座号,处理之后剩余的座号也要打印出来,并延迟一个随机处理时间,以模拟对每个客户处理的时间不同。将处理结果发给客户。4、客户收到结果后打印到屏幕。5、注意资源共享的问题,适当时可用同步代码,不允许用同步方法。注意线程之间的协作。演示时开放4-5个用户,并演示一次退票无效的情况(即要退的票在服务器中还没有卖出去,要求2是正常情况)二、主要设计思路:1、该程序包括以下几个类:1)、EchoClient.java2)、EchoServer.java3)、Node.java定义了线性表的一个节点的结构,并对节点进行初始化4

3、)、LList.java接口类,包含以下几个方法:booleanisEmpty();//判断线性表是否为空intlength();//返回线性表长度Tget(inti);//返回第i(i>0)个元素voidinsert(inti,Tx);//插入x作为第i个元素voidinsert1(Tx);//按顺序插入一个数到链表中Tremove(inti);//删除第i个元素并返回被删对象voidappend(Tx);//在线性表最后插入x元素5)、SingleLinkList.java实现接口LList。6)、Customer.java定

4、义了choise,cus_tickets两个属性和choice()方法,其中choise是一个随机产生的0或1,用来决定客户买票或退票。cus_list是一个线性表,用来存储客户所买到的所有票。7)、Tickets.java定义了number和list两个属性,其中number用来表示服务器售出的票号,list是一个线性表,用来存储剩余火车票。包含了售票票方法sell()和退票方法return_ticket()。2、思路及流程图1)、首先客户端通过调用Customer类的choice()方法,由choice()方法来决定客户是买票

5、还是退票。若choise==1,则客户买票,若choise==0,则客户退票。流程图如下:客户买票choice=(int)(Math.random()*2)choise==1客户退票票是否2)、若客户买票,则通过输出流将买票信息发送给服务器端。若客户退票,则通过“customer.cus_list.isEmpty()”这个语句判断客户是否有票可退,若客户有票可退,则通过输出流将退票信息及所退票号发送给服务器端;若客户无票可退,则改为买票,通过输出流将信息发送给服务器端。流程图如下:否是客户退票客户拥有的票是否为空发送退票信息给服务

6、器端发送买票信息给服务器端客户买票发送买票信息给服务器端3)、服务器端通过输入流接收客户端的信息,接收信息后,随机产生一个时间,线程休眠,模拟网络延迟。然后判断客户是买票还是退票,若是买票,则调用Tickets类中的sell()方法进行售票处理;若是退票,则调用Tickets类中的return_ticket()方法进行退票处理。流程图如下:接收客户端的信息线程休眠一段时间客户是否买票tickets.sell()Tickets.return_ticket()否是4)、若客户是买票的,则通过“list.isEmpty()”判断是否有票

7、可售,若有票可售,则进行售票处理(即将list线性表中的第一个节点删除,表示此票已售出),处理后将信息反馈给客户;客户收到服务器端的信息后,将反馈信息打印输出,同时将所买到的票添加到cus_list线性表的最后。若无票可售,则线程等待,将线程加入等待队列,当线程被唤醒后,进行售票处理,处理后将信息反馈给客户。客户收到服务器端的信息后,输出反馈的信息,同时,将所买到的票添加到cus_list线性表的最后。客户收到服务器端反馈信息打印输出信息cus_list.append()否是否有票可售售票处理是售票线程等待线程被唤醒后进行售票处理

8、将线程加入等待队列将反馈信息发送到客户端5)、若客户是退票的,首先判断客户所退的票是否是已售出的票,若不是,则非法退票,退票失败,将反馈信息发送给客户端;若是,则进行退票处理(将所要退的票按大小添加到线性表list中),退票处理后,将反馈信息发送给

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。