
基于windows系统的JAVA语言订票系统实现课程设计说明书(含源程序).doc
16页操作系统课程设计实验报告基于windows系统的JAVA语言订票系统实现课程设计课程设计要求:基于Windows的课程设计,任务要求为2个Projects,完成一下两个任务及要求:(1):进程间的通信、并发(同步或者互斥)、文件读写等要求(2):内存管理、DLL、Windows消息机制、IO等等问题简要描述和设计要求:(1):多个进程之间的相互通信 ①:其中一组进程(生产者)从外部获取数据②:另外一组进程(消费者)接受并显示数据 (2):设计并实现这样一个系统两组进程的数目自定问题具体描述和设计要求: (1):完成N个生产者和M个消费者之间的并发控制,N、M不低于5,数据发送和接收缓冲区大小不小于10个 (2):某个生产者进程生产的消息供K个消费者进程消费K《=M某些消费进程消费多个生产者生产的消息生产者和消费者之间的对应关系可以在程序开始有一个文件中读入,也可以动态调整 课程设计目的:(1)掌握并能够灵活使用进程间通信机制(2)掌握并能够灵活使用同步互斥机制(3)掌握并能够灵活使用IO技术 课程设计分析:多个进程之间的相互通信:(1):其中一组进程(生产者)从外部获取数据(2):另外一组进程(消费者)接收并显示数据 已实现的功能:1. 设计实现基于线程的多任务程序2. 完成生产者消费者程序设计3. 实现线程之间的消息通信程序 未实现的功能: DLL的功能:动态链接库的实现,DLL是一个包含可由多个程序同时使用的代码和数据库,DLL不是可执行文件。
动态链接库提供了一种方法使进程可以调用不属于其可执行代码的函数函数的可执行代码位于DLL中,该DLL包含一个或多个已被编译、链接并使用他们的进程分开存储的函数DLL还有助于共享数据和资源多个应用程序可同时访问内存中单个DLL副本的内容DLL是一个包含可由多个程序同时使用的代码和数据库DLL未实现的原因:动态链接库虽然跟容易地将更新应用于各个模块,不影响该程序的其他部分,但利用JAVA实现起来难度有点大,而且不会利用JAVA实现动态链接库对于当前Windows程序设计的详细分析: 在window课程设计中利用JAVA语言实现一个简单的订票系统对于订票系统的详细分析;(1)需求分析:需求分析是软件设计的一个重要的环节本阶段对订票系统的应用情况作全面调查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确定用户的需求用户对系统的需求我们从以下几方面进行分析①功能需求:售票系统实现一下功能:a:查询:分为对车次信息的查询和客户对已订车票信息的查询要求:1)对车次的查询,可以按照发车车次进行查询; 2)车次信息包括:车号、出发地、目的地、发车日期、开出时刻、票价3)车次信息只能查询不能修改。
b:添加车票:通过查询系统,客户根据自己的需求找到满意的车次,再次输入个人信息后直接通过订票系统预定以选中的车票要求:售票记录应包括:会员名、车号、发车日期、订票数量、总价 c:退票:可退票,通过查询系统,客户可根据自己的车号找到自己订票信息,通过退票模块退去已购车票②数据需求:信息需求,即在系统中需要处理拿些数据根据车站订票系统的分析,本系统的信息需求如表所示:信息输入输出信息输入信息处理信息输出用户输入所需车次检索系统文件符合用户需求的车次及相关信息用户输入个人信息及所需购的车票信息更新系统中的订票信息,将新信息存入文件操作反馈(如找零)对于系统总体设计: a: 系统软件结构设计:本订票系统可分为信息查询、网上订票、退票三部分其中查询信息又可分为车次查询和订票查询两个部分层次图如图所示:售票系统信息查询车次查询车票查询 售票退出订票系统的层次图b:系统流程图: 系统顶层流程图如图所示:查询程序订票程序 退票程序订票系统文件系统事务相应信息操作反馈系统流程输入所需车次的重要信息查询程序文件系统符合用户需求的车次信息事务车次信息查询系统流程图售票程序文件系统操作反馈事务输入售票信息订单信息查询系统流程图退票程序文件系统操作反馈事务输入退票信息退票系统流程图c.程序流程图本系统主界面为用户设计了三个功能操作以供选择:查询,订票,退票。
另外,为方便用户,还将“退出系统”也单另列了出来,用户可以根据需要触发不同事件其处理流程如图所示1).售票的系统主处理流程售票员系统主程序流程图NNNYYYNNYY查询界面用户输入要查询条件查询读数据文件输出查询结果关闭窗口结束开始售票售票界面继续查询车次信息查询车次信息售票返回主页(2).车次信息查询处理流程车次信息查询程序流程图(3). 车票处理流程NNYYNYNY开始添加界面添加改输入添加信息N返回主页继续售票提交信息有效性修改数据文件Y关闭窗口结束错误提示售票程序流程图(4). 车票信息查询处理流程NNNYYYNY查询界面读数据文件输出查询结果关闭窗口结束开始Y返回主页主界面退票退票界面继续查询订票信息查询订票信息退票订票信息查询模块程序流程图(5). 退票模块处理流程NNYYNYNY开始退票界面退票N返回主页继续退票提交信息有效性Y关闭窗口结束错误提示输入退票信息退票模块程序流程图详细的代码分析:主页面:代码: final display dis=new display();final Tuipiao tui=new Tuipiao(); JFrame frame; Button b1,b2,b3; Panel p1; frame=new JFrame("订票系统启动:"); frame.setSize(500,400);frame.setLocation(480,380); //frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBackground(Color.LIGHT_GRAY);frame.setResizable(false); frame.setLayout(new BorderLayout(5,5)); p1=new Panel(new GridLayout(5,5,35,15)); frame.add(p1,BorderLayout.CENTER); b1=new Button("订票"); b2=new Button("退票"); b3=new Button("查询"); p1.add(b1); p1.add(b2); p1.add(b3);订票页面:对车次信息的查询,系统提供了车次信息,进行精确的查询,系统经过检索,返回符合用户要求的车次,再由用户自行选择满意的车次。
代码:this.dingpiao=true;//创建窗体和容器 final JFrame jf = new JFrame("dingpiao");JPanel jp = new JPanel();//创建组件final Choice city = new Choice();final Choice city1 = new Choice();city.add("北京"); city.add("上海"); city.add("广州");city1.add("北京"); city1.add("上海");city1.add("广州");JButton but = new JButton("确定"); JLabel j1 = new JLabel("起始站:");JLabel j2 = new JLabel("终点站:"); JLabel j3 = new JLabel("剩余票数:");JLabel j4 = new JLabel("单价:") ;JLabel j5 = new JLabel("购买数量:");JLabel j6 = new JLabel("合计:"); JLabel j7 = new JLabel("付款:");JLabel j8 = new JLabel("找零:"); final JTextField jtf1 = new JTextField();final JTextField jtf2 = new JTextField();final JTextField jtf3 = new JTextField();final JTextField jtf4 = new JTextField();final JTextField jtf5 = new JTextField();final JTextField jtf6 = new JTextField();//布局jp.setLayout(null); j1.setBounds(0,0,80,30);city.setBounds(80,0,80,30); j2.setBounds(160,0,80,30);city1.setBounds(240,0,80,30); j3.setBounds(320,0,80,30);jtf1.setBounds(400,0,80,30); j4.setBounds(0,40,80,30);jtf2.setBounds(80,40,80,30); j5.setBounds(160,40,80,30);jtf3.setBounds(240,40,80,30); j6.setBounds(320,40,80,30);jtf4.setBounds(400,40,80,30); j7.setBounds(0,80,80,30);jtf5.setBounds(80,80,80,30); j8.setBounds(160,80,80,30);jtf6.setBounds(240,80,80,30); but.setBounds(400,80,80,30);//将组件添加到容器jp.add(j1); jp.add(j2); jp.add(j3); jp.add(j4);jp.add(j5); 。
