下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#模拟银⾏窗⼝模拟系统(控制台)⽬录模拟内容模拟银⾏的业务处理过程,银⾏有三个窗⼝,每天8点开门,12点关门,银⾏业务主要包括两种:存钱和取钱,每件业务的处理时间为3~5分钟。分析银⾏的具体业务办理情况,通过随机数⽣成并模拟银⾏业务办理事件处理过程,分析各个窗⼝的排队长短,编写程序最终实现完整处理过程,建⽴“银⾏窗⼝模拟系统”。1.如果程序开始运⾏时产⽣的随机时间在8-12点之间,则运⾏该程序,否则提⽰银⾏已关门;2.程序开始运⾏时,随机产⽣当时银⾏存在的⼈数,及三个窗⼝的排列情况,并按其先后顺序排序1,2,3……;3.随机产⽣每个窗⼝正在办理业务的情况,包括存钱和取钱,及其每个窗⼝正在办理业务所剩余的时间,并表⽰出来;4.程序运⾏中随机产⽣每个时刻进来的⼈数,并进⾏排列;5.假如第⼀个⼈处理完业务,则队列依次前移;6.假如到了12点,系统提⽰银⾏停⽌办理业务。模拟思路使⽤数据结构中的队列存放银⾏的所有客户,使⽤c#中的random类的对象⽣成随机数产⽣随机时间,使⽤c#中的Datetime类进⾏时间与字符串之间的转换和时间的⽐较和运算,只有产⽣的随机时间在8:00-12:00之间才能进⼊系统,使⽤c#中的System.Threading.Timer线程计时器实现定时执⾏三个窗⼝的处理业务的过程,最后使⽤c#的StreamWriter类将业务的具体信息写⼊到⽂件。编程实现⾸先定义⼏个全局变量,分别为银⾏初始⼈数,初始⽣成的随机时间,之后的时间都在次基础上增加,直到银⾏的关门时间12:00,⼀个队列模拟银⾏的排队队列,⼀个定时器对象定时执⾏三个窗⼝的函数。publicstaticintpeoplenum=30;//银⾏初始⼈数publicstaticstringtime;//⽣成的初始随机时间publicstaticQueue<string>queue=newQueue<string>();//排队队列publicstaticTimermyTimer;//定时器对象编些⼀个函数模拟银⾏的欢迎界⾯。//欢迎界⾯publicstaticvoidwelcome(){Console.WriteLine("\t\t银⾏业务模拟与离散事件模拟程序系统");Console.WriteLine("------------------------------------------------");Console.WriteLine("温馨提⽰:");Console.WriteLine("开门时间:早上8点,关门时间:早上12点");Console.WriteLine("------------------------------------------------");}编写函数⽤于⽐较当前随机⽣成的时间是否在银⾏的上班时间,如果在就询问⽤户是否需要进⼊系统,如果⽤户选择是则开始模拟银⾏的业务处理流程。//⽐较随机时间是否在8:00-12:00publicstaticvoidcmpTime(){time=getDate();stringstarttime="08:00:00";stringendtime="12:00:00";DateTimerantime=Convert.ToDateTime(time);DateTimestime=Convert.ToDateTime(starttime);DateTimeetime=Convert.ToDateTime(endtime);Console.Write("当前时间是:"+time);if(rantime>stime&&rantime<etime){Console.WriteLine("是否要进⼊系统?(输⼊yes进⼊系统,输⼊其他内容退出系统)");stringstr=System.Console.ReadLine();if(str=="yes"){Console.WriteLine("你已进⼊系统,下⾯是当前业务处理情况:");Console.WriteLine("------------------------------------------------");}else{Console.WriteLine("欢迎下次光临!\n");System.Environment.Exit(0);}}else{Console.WriteLine(",银⾏已关门\n");System.Environment.Exit(0);}}1号窗⼝窗⼝处理业务的的代码实现,⽣成⼀个2-4的随机数模拟办理业务的分钟数,⽣成⼀个0-59的随机数⽤于模拟办理业务的秒数。将⽣成的分秒数转换成datetime对象,拿初始时间加上办理业务时间得到当前时间。将银⾏下班时间与当前时间⽐较,如果当前时间⼤于下班时间则提⽰银⾏已办理业务。之后再⽤字符串拼接⽤户办理业务的信息。打印并写⼊⽂件。其余两个窗⼝与该窗⼝类似。publicstaticvoidwindows1(objectstate){Randomra=newRandom();intoption=ra.Next(0,2);//⽤于随机存款和取款业务intminite=ra.Next(2,5);//⽣成每位客户办理业务的分钟数intsecond=ra.Next(0,59);//⽣成每位客户办理的秒数stringcosttime="00:"+itos((int)minite)+":"+itos((int)second);stringpretime=time;DateTimecurtime=Convert.ToDateTime(time);DateTimetime1=curtime.AddMinutes(minite);time=time1.AddSeconds(second).ToLongTimeString();stringmassage,massage1;DateTimectime=Convert.ToDateTime(time);DateTimetime2=Convert.ToDateTime("12:00:00");if(ctime>=time2){Console.WriteLine("银⾏已停⽌办理业务");System.Environment.Exit(0);}if(option==1){//存钱业务stringpos=queue.Dequeue();massage=pretime+","+pos+"号客户在1号窗⼝办理存款业务,"+time+"该客户离开"+",花费了"+costtime+"秒";massage1="第"+pos+"号客⼈信息:\n"+"到达银⾏时间:"+pretime+"\n离开银⾏时间:"+time+"\n所花费的时间:"+costtime+"\n办理存款的窗⼝:1";}else{//取钱业务stringpos=queue.Dequeue();massage=pretime+","+pos+"号客户在1号窗⼝办理取款业务,"+time+"该客户离开"+",花费了"+costtime+"秒";massage1="第"+pos+"位客户信息:\n"+"到达银⾏时间:"+pretime+"\n离开银⾏时间:"+time+"\n所花费的时间:"+costtime+"\n办理取款的窗⼝:1";}Console.WriteLine(massage);try{write1(massage1);}catch(System.IO.IOExceptione){Console.WriteLine("读写异常");}}编写函数模拟银⾏某时刻随机进⼊10-20⼈,往排队队列中随机添加10-20个数。publicstaticvoidaddpeople(objectstate){Randomra=newRandom();intcomepeople=ra.Next(10,20);for(inti=0;i<comepeople;i++){queue.Enqueue(i+peoplenum+"");}Console.WriteLine(time+"进⼊了"+comepeople+"⼈");peoplenum+=comepeople;}系统主函数。将初始的30个⼈放⼊队列,定时器设定⼀定的延时和时间间隔执⾏三个窗⼝办理业务的函数。staticvoidMain(string[]args){welcome();cmpTime();for(inti=0;i<peoplenum;i++)//将初始的30⼈加⼊队列{queue.Enqueue(i+"");}myTimer=newSystem.Threading.Timer(newTimerCallback(windows1),null,1500,2000);myTimer=newSystem.Threading.Timer(newTimerCallback(windows2),null,1000,3000);myTimer=newSystem.Threading.Timer(windows3,null,500,5000);myTimer=newSystem.Threading.Timer(addpeople,null,1000,8000);while(myTimer!=null){Thread.Sleep(0);Console.ReadLine();}编写函数返回字符串拼接的随机⽣成的时间。publicstaticstringgetDate(){Randomra=newRandom();inthour=ra.Next(23);//随机⽣成⼩时intminute=ra.Next(60);//随机⽣成分钟intsecond=ra.Next(60);//随机⽣成秒returnitos(hour)+":"+itos(minute)+":"+itos(second);}时分秒不够两位的补0,转换成字符串。publicstaticstringitos(intnum){stringNum=num+"";if(Num.Length==1){return"0"+Num;}else{returnNum;}}将拼接的字符串写⼊txt⽂件。publicstaticvoidwrite1(stringstr){using(System.IO.StreamWriterfile=newSystem.IO.StreamWriter(@"H:Bank1.txt",true)){file.WriteLine(str);}}publicstaticvoidwrite2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度化验员通关题库及完整答案详解【历年真题】
- 2024-2025学年度施工员考前冲刺练习题及答案详解【夺冠系列】
- 2024-2025学年度扬州工业职业技术学院单招数学模拟试题及完整答案详解【有一套】
- 2024-2025学年度医学检验(师)过关检测试卷附参考答案详解(研优卷)
- 2024-2025学年度河北省单招考试一类 《文化素质数学》自我提分评估完整答案详解
- 2025年河南省专升本中医基础真题及答案解析
- 2026七年级下新课标不等式与不等式组
- 斯伦贝谢(中国)招聘面试题及答案
- 收银员招聘面试题及答案
- 2026九年级下新课标中考英语核心词汇
- 山西省煤矿建设施工管理标准
- 220kV输电线路220kV间隔扩建工程施工组织设计(定稿)
- 四川省达州市教育专业能力测验教师招聘考试
- LY/T 2899-2017湿地生态系统服务评估规范
- GB/T 19092-2003煤粉浮沉试验方法
- 古诗词诵读《江城子 乙卯正月二十日夜记梦》课件(19张PPT)
- 20世纪世界文学思潮 外国文学史
- MCC码总览对照表(全)
- 施工安全风险告知牌
- 公共关系的产生及其发展课件
- 《建筑环境与能源应用工程专业概论》配套教学课件
评论
0/150
提交评论