- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java网络编程报告
姓名: 蒋怡
学号: 1107300134
题目: 模拟火车售票退票系统
一、作业要求:
模拟火车售票退票系统实现一个服务器为多个客户服务,要求
服务器用线程池,线程容量为4,座位数为60个,即01-60号座.
客户通过网络发送请求可以退票可以买票,先来先服务,买票还是退票由随机数决定,退票必须是该用户买过的有效票,先买的票先退。若退票时该用户已没有买到的票,则改为买票。若服务器票已售完,则需等待,先来先服务,哪个客户先来,服务器将先为哪个客户服务。
服务器每次接收一个客户请求需打印该客户的端口号、IP和该用户是买票还是退票,处理该请求之前目前剩余的票所有座号,处理之后剩余的座号也要打印出来,并延迟一个随机处理时间,以模拟对每个客户处理的时间不同。将处理结果发给客户。
客户收到结果后打印到屏幕。
注意资源共享的问题,适当时可用同步代码,不允许用同步方法。注意线程之间的协作。
演示时开放4-5个用户,并演示一次退票无效的情况(即要退的票在服务器中还没有卖出去,要求2是正常情况)
主要设计思路:
1、该程序包括以下几个类:
1)、EchoClient.java
2)、EchoServer.java
3)、Node.java
定义了线性表的一个节点的结构,并对节点进行初始化
4)、LList.java
接口类,包含以下几个方法:
boolean isEmpty(); // 判断线性表是否为空
int length(); // 返回线性表长度
T get(int i); // 返回第i(i0)个元素
void insert(int i,T x); // 插入x作为第i个元素
void insert1(T x); //按顺序插入一个数到链表中
T remove(int i); // 删除第i个元素并返回被删对象
void append(T x); // 在线性表最后插入x元素
5)、SingleLinkList.java
实现接口LList。
6)、Customer.java
定义了choise,cus_tickets两个属性和choice()方法,其中
choise是一个随机产生的0或1,用来决定客户买票或退票。
cus_list是一个线性表,用来存储客户所买到的所有票。
7)、Tickets.java
定义了number和list两个属性,其中number用来表示服务器售出的票号,list是一个线性表,用来存储剩余火车票。包含了售票票方法sell()和退票方法return_ticket()。
思路及流程图
1)、首先客户端通过调用Customer类的choice()方法,由choice()方法来决定客户是买票还是退票。若choise==1,则客户买票,若choise==0,则客户退票。流程图如下:
、若客户买票,则通过输出流将买票信息发送给服务器端。若客户退票,则通过“customer.cus_list.isEmpty()”这个语句判断客户是否有票可退,若客户有票可退,则通过输出流将退票信息及所退票号发送给服务器端;若客户无票可退,则改为买票,通过输出流将信息发送给服务器端。流程图如下:
、服务器端通过输入流接收客户端的信息,接收信息后,随机产生一个时间,线程休眠,模拟网络延迟。然后判断客户是买票还是退票,若是买票,则调用Tickets类中的sell()方法进行售票处理;若是退票,则调用Tickets类中的return_ticket()方法进行退票处理。流程图如下:
4)、若客户是买票的,则通过“list.isEmpty()”判断是否有票可售,若有票可售,则进行售票处理(即将list线性表中的第一个节点删除,表示此票已售出),处理后将信息反馈给客户;客户收到服务器端的信息后,将反馈信息打印输出,同时将所买到的票添加到cus_list线性表的最后。
若无票可售,则线程等待,将线程加入等待队列,当线程被唤醒后,进行售票处理,处理后将信息反馈给客户。客户收到服务器端的信息后,输出反馈的信息,同时,将所买到的票添加到cus_list线性表的最后。
、若客户是退票的,首先判断客户所退的票是否是已售出的票,若不是,则非法退票,退票失败,将反馈信息发送给客户端;若是,则进行退票
您可能关注的文档
- (网上作业-运营管理1.docx
- (网件系列无线路由器设置.doc
- (网吧管理系统数据库设计报告.doc
- (网上选课操作步骤及说明.doc
- (网报系统操作说明.doc
- (网格化管理中心工作流程.doc
- (网络上的人际交往.doc
- (网管培训教程1.doc
- (网络与通信小型网络.doc
- (网络信息采集课程教学大纲.doc
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
最近下载
- 2024年高考语文复习:修改病句 专项练习题(含答案解析).pdf VIP
- 第1章 勾股定理 大单元教学设计 【 学情分析指导 】 北师大版八年级数学上册.docx VIP
- 2024年全国职业院校技能大赛高职组(烹饪赛项)备赛试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛中职组“导游服务组”赛项考试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛高职组“导游服务组”赛项参考试题库(含答案).pdf VIP
- 2024年世界职业院校技能大赛高职组“研学旅行组”赛项参考试题库(含答案).pdf VIP
- 涡喷发动机及其油路结构.pdf VIP
- (一模)临汾市2025年高考考前适应性训练考试(一) 化学试卷(含答案).pdf
- 山西省大同市云冈区重点名校2024届中考冲刺卷数学试题含解析.doc VIP
- 2024年《药物临床试验质量管理规范》(GCP)网络培训题库及答案完整版.pdf VIP
文档评论(0)