基于Java火车旅客信息网上管理系统(含源文件)_第1页
基于Java火车旅客信息网上管理系统(含源文件)_第2页
基于Java火车旅客信息网上管理系统(含源文件)_第3页
基于Java火车旅客信息网上管理系统(含源文件)_第4页
基于Java火车旅客信息网上管理系统(含源文件)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE1湖北轻工职业技术学院PAGE毕业设计(论文)火车旅客信息管理系统姓名:xxxx系部:信息工程系专业: 第1页目录引言随着人类文明的飞速发展,人类的活动不仅仅局限在一个小的圈子里。而且物品也越来越丰富,致使铁路运输企业有了很大的发展。与之俱来的是对旅客信息的管理。如果单凭人力,根本跟不上环境的要求,不但工作量大而且容易出错。随着科技的发展,计算机软硬件技术已经达到了相当高的水平。于是,火车旅客信息网上管理软件迎合了市场,为企业创造了不少价值。火车旅客信息网上管理,不仅仅是对旅客信息的简单管理,它包括火车时刻表、车次查询、紧急通知、乘车小常识等信息的发布和相关管理。这是对旅客的热情服务也是人性化关怀的充分展现。这套系统分二部分进行信息管理:管理员管理,是最为重要的一部分,它包括售票订票系统的权限设置,旅客意见的采纳与回复;火车时刻表管理,是对车辆信息的管理,包括车辆的车次,始发站与终点站,快慢等级,发车时间与到达时间,及中途站点停车时间等;紧急通知编辑,是当火车在行车过程中遇到紧急突发事件,如道路受损、让车、技术停车等情况下对旅客进行及时通知;乘车小常识管理,包括沿途风光介绍,沿线土特产介绍,防盗与安全意识介绍等,是人性化服务很重要的一个组成部分。本系统采用Web模式来设计,服务器端我们采用Oracle数据库Jsp+servlet组件来构成服务系统;客户端采用浏览器来完成查询,修改,删除全过程,同时可进行远程系统维护和治理。

第一章需求分析1.1任务需求分析系统任务主要包括:1)时刻信息:时刻信息的输入、查询、修改;2)车次信息:车次信息的输入、查询、修改;3)售票信息:售票信息的输入、查询、修改;4)订票信息:订票信息的输入、查询、修改;5)通知、常识等信息:通知、乘车常识信息的输入、查询、修改;6)用户注册,用户信息的输入等等;7)用户登陆,用户登录时查询,进入后进行购票;8)管理员信息:初始化管理员,对其他管理员的增加,删除,查询1.2数据流图、数据字典及实体联系图1.2.1数据流图系统管理员处理事务系统管理员处理事务旅客基本信息管理员信息处理结果相关人或部门图3-1数据流图数据流图由四种基本的元素构成:数据流(DataFlow),处理(Process),数据存储和数据源(数据终点)。数据流(DataFlow):为具有名称且有流向的数据,用标有名称的箭头表示,一个数据可以是记录、组合项或基本项。处理(Process):表示对数据所进行的加工和变换,在图中用矩形框表示。指向处理数据流为该处理的输入数据,离开处理的数据为处理的输出数据。数据存储:表示用文件方式或数据库形式所存储的数据,堆砌进行的存取分别以指向或离开数据存储的箭头表示。数据源及数据终点:表示数据的来源或数据的去向,可以是一个组织或人员,它处于系统范围之外,所以又称它为外部实体,它是为了帮助理解系统界面而引入的,一般只出现在数据流图的起点和终点。1.2.2数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。名字:时刻信息名字:时刻信息别名:时刻信息描述:列车时刻表定义:时刻信息=车次号+发车时刻+停靠时间+到达时刻+误差时间位置:存储设备名字:车次信息名字:车次信息别名:车次信息描述:每辆车的详细信息定义:车次信息=车型+车次+车厢数+始发站+沿途车站+终点站位置;存储设备(a)(b)

名字:售票信息别名:售票信息名字:售票信息别名:售票信息描述:火车票售出信息定义:售票信息=售票时间+车次+发车时间+起始站+终点站+票价+备注位置:存储设备名字:订票信息别名:订票信息描述:火车票预先售出的信息定义:订票信息=订票时间+订票人+车次+发车时间+起始站+终点站+票价+支付手段位置:存储设备(c)(d)(c)(d)名字:通知、乘车常识等信息名字:通知、乘车常识等信息别名:通知、常识等信息描述:其他人性化服务信息定义:通知、常识等信息=通知播报时间+通知事件内容+播报员+乘客反映+紧急程度(等级制)位置:存储设备(e)图3-2火车旅客信息网上管理系统的数据字典1.2.3数据库的具体设计如下A.管理员管理信息表B.订票管理信息表C.货物托运管理信息表D.时刻信息管理表E.站内新闻管理信息表F.车次信息通知管理信息表G.售票信息管理信息表H.车次信息管理表用户信息管理表1.2.4实体联系E-R图根据对数据流图和数据字典的分析,我们可以确定该应用中的实体,属性和实体之间的关系,并画出如下所示的E-R图。火车旅客信息网上管理系统E-R模型,如图所示:前台操作流程:进入index.jsp进入index.jsp主页用户注册用户注册用户登录false用户登录false密码或用户名错误重新登录密码或用户名错误重新登录true登录判断true登录判断如果用户名和密码正确如果用户名和密码正确进入index.jsp进入index.jsp主页,欢迎某用户登录成功可以进行其他的操作,购票,退票,修改个人信息等等后台操作流程:输入输入http://localhost:8080/login.jsp 进入登录后台页面false密码或用户名错误重新登录密码或用户名错误重新登录后台登录判断后台登录判断truetrue如果用户名和密码正确如果用户名和密码正确welcome.jspwelcome.jsp主页进行其他的操作进行其他的操作订票信息发车时间订票人订票时间票价车次终点起点图3-3订票管理E-R图车次车次信息号到达时刻信息号到达时刻时刻信息时刻信息发车时刻中途停车发车时刻中途停车图3-4时刻管理E-R图车次信息沿途站发车时刻起点车次终点票价火车编号图3-5车次管理E-R图

售票信息售票信息售票时间客票类别起点站车次终点站售票员工号车票价格售票单号图3-6售票管理E-R图车次车次播报人通知时间播报人通知时间通知信息通知信息通知编号通知事件通知编号通知事件图3-7通知管理E-R图订票信息订票人订票信息订票人终点起始与终点票价发车时间售票时间售票信息预定车次车型始发终点车次订票时间起始沿途站点1nn1车次票价发车时间时刻表决定车号发车到达1产生产生车次111图3-8系统后台ER图系统ER图说明售票过程中一个售票员可以售出多车票,一个乘客只能乘坐一辆车。一次订票可能会定出多张车票。通知常识等信息等的紧急程度可以采用等级制。视图设计:查询视图:可以查询订票信息,时刻信息,售票信息和订票信息。输入视图:当售出车票时,可以添加信息,每次的存储信息发生改变时可以进行输入。修改视图:可以很方便的在一定权力下对系统信息进行修改,比如售票订票信息等。

第二章系统概要设计2.1总体设计总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体设计方案。结构设计阶段,确定软件结构。系统概要设计的基本目的是用比较抽象的概括方式确定系统如何完成预定的任务,也就是要确定系统的配置物理方案。软件结构设计时应该遵循的最主要的原理是模块独立,让模块彼此间的接口关系应该尽量简单。2.2系统功能模块图可以根据模块独立原理对软件结构进行精化。为了合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最终要的是,为了得到一个易于实现、易于测试和易于维护的软件结构,应该对模块进行再分解或合并。系统功能模块图如下图所示:

火车旅客信息管理火车旅客信息管理系统后台管理系统前台操作管理系统通知乘车常识售票子系统运货服务在线客服火车时刻表车次查询信息管理员信息管理火车时刻表管理紧急通知编辑乘车小常识管理乘车小常识管理用户登录订单查询站内新闻管理货物信息管理图4-1系统功能模块图本系统共包括五大模块,分别是时刻信息管理模块,车次信息管理模块,售票信息管理模块,订票信息管理模块和通知乘车常识信息管理模块。每个模块的功能如下:1.时刻信息管理模块功能:(1)实现时刻表相关信息的查询;(2)实现时刻表信息的更新,包括增加、删除、修改功能。2.车次管理模块功能:(1)实现车次信息的查询;(2)实现车次信息的修改,添加,删除。3.售票信息管理模块功能:(1)实现售票信息的查询;(2)实现售票信息的适时更新,包括增加、删除、修改功能。4.订票信息管理模块(1)实现订票信息的查询;(2)实现订票信息的增加,修改功能。5.通知乘车常识等信息的管理模块(1)实现通知乘车常识等信息的查询;(2)实现信息通知乘车常识等的增加和修改功能。6.站内新闻信息管理等模块(1)实现站内新闻信息的增加删除修改;(2)实现站内新闻信息的查询和分页2.3数据库概念设计数据库一般分为三级模式:外模式、概念模式和内模式。外模式也就是不同用户所对的数据视图,它将数据库内部抽象的数据及其互相之间的关系表示为简单、直观的应用界面。概念模式是数据库中全部数据的逻辑结构和特征描述,通常以某种数据模型为基础。内模式是对数据的物理结构和存储方式的描述。在这里我们将要设计的是数据库的概念模式,通过对火车旅客信息网上管理系统的内容和数据流程分析及E-R图,设计如下数据项和数据结构。订票信息表(订票单号,订票时间,订单总价,车票价格,订票人,车次,起始站点,终点站点,发车时间,购买的票数,付款状态,退订事宜)时刻信息表(时刻编号,车次,发车时刻,中途停车时间,到达时刻)车次信息表(火车编号,车次,列车类别,起始站,终点站,)售票信息表(售票单号,售票时间,车票价格,客票类别,车次,起始站点,终点站点)通知乘车常识等信息表(通知编号,通知时间,通知事件,播报人,车次)用户信息表(用户编号,用户名,用户真实名字,用户密码,用户邮箱,用户电话,证件类型,身份证号码)站内新闻表(新闻编号,新闻标题,新闻内容,新闻图片,发布新闻时间)托运货物表(托运货物订单表,托运人名字,货物名字,托运货物价钱,托运人的目的地,托运人电话,接货人名字,接货人电话,接货人地址,货物描述,托运时间)2.4数据库逻辑结构设计在数据库设计中相当重要的一步就是将概念模型转化为计算机上DBMS所支持的数据模型,例如,将E-R图模型转化为关系模型,道理很简单,我们设计概念模型基本上都是一些抽象的关系,在再数据库设计的实现过程中,在计算机上有效地表示出这些关系就成了数据库设计的关键。根据运输企业信息管理系统的功能要求,选取Oracle库。一、在上面的实体和实体之间的E-R图设计基础上,形成数据库中的表格及表格之间的关系。表4-1订票信息表(A)字段名字段类型长度主/外键字段值约束对应中文名AIDInteger20PKNotnull订票单号ATIME1VARCHAR26Notnull订票时间TICKETVALUEFLOATNotnull车票价格ANAMEVARCHAR210Notnull总价格ANOInteger28Notnull车次BFROMVARCHAR210Notnull起始站BTOVARCHAR210Notnull终点站ATIME2VARCHAR218Notnull发车时间NUMBEREDNUMBER50Notnull订票数量MONEYSTATUSVARCHAR210Notnull付款状态AOTHERSVARCHAR250Notnull退票事宜USERNAMEVARCHAR220Notnull订票人表4-2车次信息表(B)字段名字段类型长度主/外键字段值约束对应中文名BIDInteger10PKNotnull火车编号ANOInteger6Notnull车次BLEVELVARCHAR210Notnull列车类别BFROMVARCHAR210Notnull起始站BTOVARCHAR210Notnull终点站TICKETNUMBERNUMBERNotnull车票数量SALETIMEVARCHAR2Notnull买票时间表4-3时刻信息表(C)字段名字段类型长度主/外键字段值约束对应中文名CNOInteger10PKNotnull车次ANOInteger20NotnullDEPTIMEVARCHAR220Notnull发车时刻MIDWAYSTOPVARCHAR220Notnull中途停车时间REACHTIMEVARCHAR220到达时刻表4-4售票信息表(D)字段名字段类型长度主/外键字段值约束对应中文名IDInteger10PKNotnull售票单号SALETIMEVARCHAR210Notnull售票时间TICKETVALUEVARCHAR28Notnull车票价格TICKETLEVELVARCHAR214Notnull客票类别ANOInteger8Notnull车次BFROMVARCHAR220Notnull起点站BTOVARCHAR220Notnull终点站表4-5通知乘车常识等信息表(E)字段名字段类型长度主/外键字段值约束对应中文名CNOInteger10PKNotnull通知编号ANOVARCHAR224Notnull车次DEPTIMEVARCHAR220Notnull通知时间MIDWAYSTOPVARCHAR220Notnull播报人REACHTIMEVARCHAR220Notnull通知事件表4-6管理员信息表(F)字段名字段类型长度主/外键字段值约束对应中文名IDInteger10PKNotnull管理员编号ADMINNAMEVARCHAR224Notnull管理员名称ADMINPASSVARCHAR220Notnull管理员密码表4-7用户信息表(F)字段名字段类型长度主/外键字段值约束对应中文名USERIDInteger10PKNotnull管理员编号USERNAMEVARCHAR224Notnull管理员名称REALNAMEVARCHAR220Notnull真实姓名PASSWORDVARCHAR220Notnull用户密码USEREMAILVARCHAR220Notnull用户邮箱USERPHONEVARCHAR220Notnull用户电话CARDLEVELVARCHAR220Notnull证件类型USERCARDVARCHAR220Notnull身份证号码表4-8新闻表(F)字段名字段类型长度主/外键字段值约束对应中文名NEWSIDInteger10PKNotnull新闻编号TITLEVARCHAR224Notnull新闻标题CONTENTVARCHAR220Notnull新闻内容IMAGEVARCHAR2Notnull新闻图片TIMESVARCHAR2Notnull新闻时间表4-9用户注意信息表(F)字段名字段类型长度主/外键字段值约束对应中文名INFORMIDInteger10PKNotnull通知编号ANOInteger24Notnull车次EVENTSVARCHAR2500Notnull通知事件INFORMTIMEVARCHAR220Notnull通知时间BOBAONAMEVARCHAR220Notnull播报人2.5连接数据库的特点当开发环境通过连接到数据库上之后,在设计中使用数据库画笔可实现对该数据库中表格,视图等的操作,如创建表空间,创建用户,创建表,修改表,删除表,增加/删除记录。设计中设计数据窗口的时候,通过对话框实现与数据的连接。在应用程序中则一般是在应用程序对象中书写连接数据库的程序代码,使得应用程序开始运行并实现与数据库的连接,此时采用的是最基础是JDBC的方式连接数据库,并对其数据库进行操作。

第三章详细设计3.1系统的主要功能及实现根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑的窗体的系统,每一个窗体实现不同的功能,可以设计下面的几个模块。3.1.1系统登陆管理模块功能:本模块的主要功能是对用户身份进行,验证只有系统的合法用户才能进入系统。并且不同的用户具有不同的权限,权限低的用户对有的功能将不可用。详细设计如下:publicclassUserLoginServletextendsHttpServlet{ privatestaticfinallongserialVersionUID=-35371583551546599L; publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ this.doPost(request,response); } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ try{ StringuserName=request.getParameter("userName"); StringpassWord=request.getParameter("passWord"); CheckDaod=newCheckDao(); UsersModelusers=newUsersModel(); users.setUserName(userName); users.setPassWord(passWord); //根据userName,passWord判断userName是否存在这样的信息返回boolean//为真则存在,不为真则不存在 booleanf=d.checkLoginUsers(users); List<NewsModel>listNews=newArrayList<NewsModel>(); //创建数据库链接 Connectionconn=DBConnection.getConnection(); //随机产生6条最新新闻信息 Stringsql="selectrownumrs,n.*fromnewsnwhererownum<=6orderbytimesdesc"; PreparedStatementps=conn.prepareStatement(sql); //执行查询操作 ResultSetrs=ps.executeQuery(); //进行遍历取值 while(rs.next()){ NewsModelnews=newNewsModel(); news.setNewsId(rs.getInt("newsId")); news.setTitle(rs.getString("title")); listNews.add(news); } request.setAttribute("listNews",listNews); FindAllDaoda=newFindAllDao(); List<NoticeInfoModel>list=da.findAllNoticeInfoModel(); request.setAttribute("list",list); FindAllDaofd=newFindAllDao(); List<NewsModel>listnews=fd.findAllRandom(); request.setAttribute("listnews",listnews); if(f){ HttpSessionsession=request.getSession(); session.setAttribute("userName",userName); request.getRequestDispatcher("/WEB-INF/view/index.jsp") .forward(request,response); }else{ //不存在则返回到登录页面返回提示信息msg Stringmsg="用户名或密码错误"; request.setAttribute("msg1",msg); request.getRequestDispatcher( "/WEB-INF/view/users/userLogin.jsp?msg=300").forward( request,response); } }catch(SQLExceptione){ e.printStackTrace(); } }}3.1.2时刻信息管理模块功能:该模块主要是实现时刻的信息查询、修改,删除等几个功能。旅客信息查询:该模块为所有旅客提供查询功能,查询其详细信息,但是对于信息没有修改权限。具体实现:管理员(有操作此系统权限的任何人)对信息具有修改删除等权限,并允许每位旅客查询,当列车时刻信息有变化时通过管理员对信息进行修改。3.1.3车次信息管理模块功能:本模块的主要功能是把车次信息写入存储器,同时对数据库中的信息进行更新,以备用户将来对存储的信息进行查询和打印,此外还可以对车次信息进行查询和删除功能。具体实现:提供车次查询、信息修改、信息删除等功能。当有新的车次安排时,将车次的详细信息输入并保存,当线路取消或变更时进行修改或删除。增加信息具体实现如下:publicbooleaninsertTrainInfo(TrainInfoModeltrainInfo){ booleanflag=false; try{ conn=DBConnection.getConnection(); ps=conn.prepareStatement(TrainInfoCommons.SqlInsertTrainInfo); ps.setInt(1,trainInfo.getaNo()); ps.setString(2,trainInfo.getTicketValue()); ps.setString(3,trainInfo.getbLevel()); ps.setString(4,trainInfo.getbFrom()); ps.setString(5,trainInfo.getbTo()); ps.setInt(6,trainInfo.getTicketNumber()); ps.setString(7,trainInfo.getSaleTime()); intn=ps.executeUpdate(); if(n!=0){ flag=true; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ DBConnection.closeAllConnection(conn,ps,null); } returnflag; }3.1.4售票订票信息管理模块当列车已经开始运营,旅客需要订票或购票来登上火车。此时售票订票信息显得尤为重要。所以此模块必须可以满足旅客查询、登陆、订票购票以及重要信息安全保密以确保客户的要求最大限度的得以满足。具体实现:可以定义两个标志变量,来表示车票是否售出和是否预定,当已经有新任务时,如果客户愿意等待此项任务完成则将预约项做标志。根据每次售票订票的情况,随时更新各线路车票的剩余状况。publicclassInsertBookingTicketServletextendsHttpServlet{ ……. @SuppressWarnings("deprecation") publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{//随机产生订单号 doubledl=Math.random()*1000000000; //转化成整数 doublei=Math.floor(dl); intaid=(int)i; //转化成数值类型Integer.parseInt(request.getParameter("aNo")) IntegeraNo=Integer.parseInt(request.getParameter("aNo")); IntegerticketNumber=Integer.parseInt(request .getParameter("ticketNumber")); floatticketValue=Float.parseFloat(request .getParameter("ticketValue")); StringbLevel=request.getParameter("bLevel"); //将bLevel,bFrom,bTo,aOthers转换成utf-8类型的中文编码,以防插入时出现中午乱码 bLevel=newString(bLevel.getBytes("iso-8859-1"),"utf-8"); StringbFrom=request.getParameter("bFrom"); bFrom=newString(bFrom.getBytes("iso-8859-1"),"utf-8"); floattotalMoney=ticketValue*ticketNumber; StringuserName=request.getParameter("username"); StringbTo=request.getParameter("bTo"); bTo=newString(bTo.getBytes("iso-8859-1"),"utf-8"); StringaOthers=request.getParameter("aTime2");//发车时间 StringaTime2=request.getParameter("aOthers"); aOthers=newString(aOthers.getBytes("iso-8859-1"),"utf-8"); intmoneyStatus=0;//0表示未付款,1表示已付款 Datedate=newDate(); inty=date.getYear()+1900; intM=date.getMonth()+1; intd=date.getDate(); inth=date.getHours(); intm=date.getMinutes(); ints=date.getSeconds(); //获取系统的时间进行拼接成我们自身需要的时间 Stringtime=y+"-"+M+"-"+d+""+h+":"+m+":"+s; BookingModelbookingModel=newBookingModel(); bookingModel.setaId(aid); bookingModel.setaName(totalMoney);//应付款金额 bookingModel.setaTime1(time);//买票时间 bookingModel.setaTime2(aTime2);//发车时间 bookingModel.setbFrom(bFrom);//起点站 bookingModel.setbTo(bTo);//终点站 …………….. FindByIdDaofd=newFindByIdDao(); TrainInfoModeltrainInfoModel=fd.findTrainInfoByIdAno(aNo); //计算剩余的票数 Integernumber=trainInfoModel.getTicketNumber()-ticketNumber; InsertDaoid=newInsertDao(); //更新系统剩余的票数,更新成功后才操作插入用户所购票的信息 booleanflag=id.insertBooking(bookingModel); if(flag){ TrainInfoModelinfoModel=newTrainInfoModel(); infoModel.setaNo(aNo); infoModel.setTicketNumber(number); UpdateDaoud=newUpdateDao(); ud.updateTrainInfoByaNo(infoModel); …….. request.getRequestDispatcher( "/WEB-INF/view/booking/updateBooking.jsp").forward(request, response); }else{ request.getRequestDispatcher("/WEB-INF/view/booking/error.jsp") .forward(request,response); } }}31.5新用户注册模块 当一个新用户登录本网站的时候,进行购票业务是,必须进行实名的注册才进行购票,方便用户信息的管理,也方便用户对自己的信息的维护具体实现如下:用户注册源代码 publicclassInsertUserResigerServletextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ StringuserName=request.getParameter("userName"); StringrealName=request.getParameter("realName");//对输入的中文信息进行转码,防止出现插入的时候出现中文乱码 realName=newString(realName.getBytes("iso-8859-1"),"utf-8"); StringpassWord=request.getParameter("passWord"); StringuserEmail=request.getParameter("userEmail"); Stringemail=""; Stringphone=""; if(userEmail==""){ //对插入的空信息进行初始化 email="aa@"; } StringuserPhone=request.getParameter("userPhone"); StringcardLevel=request.getParameter("cardLevel"); StringuserCard=request.getParameter("userCard"); if(userPhone==""){ phone="12345678900"; } //对插入时的信息进行设置 UsersModelusersModel=newUsersModel(); CheckDaod=newCheckDao(); UsersModelusers=newUsersModel(); users.setUserName(userName);//判断该userName的值是否存在返回boolean booleanf=d.CheckUsersByUserName(users);//判断该userCard的值是否存在返回boolean UsersModelf1=newUsersModel(); f1.setUserCard(userCard); booleanb=d.CheckUsersByUserCard(f1); if(f&&b){ request.setAttribute("userCard",userCard); Stringmsg="该证件号已经存在"; request.setAttribute("msg",msg); Stringusername=userName+"该用户已经存在"; request.setAttribute("usernamemsg",username); request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp") .forward(request,response); }elseif(f){ request.setAttribute("userCard",userCard); Stringusername=userName+"该用户已经存在"; request.setAttribute("usernamemsg",username); request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp") .forward(request,response); }elseif(b){ Stringmsg="该证件号已经存在"; request.setAttribute("msg",msg); request.getRequestDispatcher("/WEB-INF/view/users/userAdd.jsp") .forward(request,response); }else{ InsertDaodao=newInsertDao(); booleanflag=dao.insertUsers(usersModel); if(flag){ request.getRequestDispatcher("/WEB-INF/view/users/ok.jsp") .forward(request,response); }else{ request.getRequestDispatcher("/WEB-INF/view/users/error.jsp") .forward(request,response); } } }}3.1.6通知乘车常识等信息管理模块当列车在行驶途中,车组人员有紧急状况需要通知或根据沿途风光向旅客介绍乘车常识等都需要做记录。方便以后管理人员查询。具体实现:对每一次播报进行统一,唯一的编号,作为搜索查找的关键字,允许编号中出现字符,以方便查找。具体实现如下:StringaNo=request.getParameter("aNo"); StringcurrentPage=request.getParameter("currentPage"); //创建一个缓冲字符数组,存放信息 StringBufferparas=newStringBuffer(); if(aNo!=null&&!aNo.equals("")){ //查询条件的拼接 paras.append("andaNolike'%"+aNo.toLowerCase().trim()+"%'"); } request.setAttribute("aNo",aNo); if(currentPage==null||"".equals(currentPage)){ currentPage="1"; } //设置当前页码 Integercurrentpage=Integer.parseInt(currentPage); PageInfopage=newPageInfo(); FenyeMomentf=newFenyeMoment(); //设置初始开始位置 intstart=(current1)*page.getPageSize()+1; //设置结束位置 intend=currentpage*page.getPageSize(); page.setCurrentPage(currentpage); request.setAttribute("page",page); List<MomentModel>list=f.findByPage(page,paras.toString(),start,end); request.setAttribute("currentPage",currentpage); request.setAttribute("listMoment",list); request.getRequestDispatcher("/WEB-INF/view/moment/listMoment.jsp") .forward(request,response);3.2程序流程图程序流程图的优点是对控制流程的描绘很直观,易于掌握。通过对系统的调查和可行性分析,画出程序的流程图如下所示,程序过程设计主要是在借助过程设计工具的情况下,对程序的具体实现过程进行设计。程序的主要部分设计在这个环节完成。其主要包括以下几个部分:

登登录输入密码和车次信息输入密码和车次信息是否管理员N是否管理员N查询信息Y查询信息Y修改或查询修改或查询售票信息订票信息通知乘车须知售票信息订票信息通知乘车须知车次信息时刻信息车次信息时刻信息司机信息结结束图5-1程序流程图3.3用户界面设计3.3.1一般交互设计一般交互涉及信息显示、数据输入、和系统整体控制等方面。1、一致性为客户交互界面中的菜单选择、命令输入、数据显示以及众多的其他功能,使用一致的格式。在设计的过程中,基本上保持了系统的格式一致。2、在有较大影响的操作前提示用户确认在设计过程中,如果用户要执行删除操作,以及对数据库的读写操作时,都会有窗体弹出询问继续操作或者予以提示。3、允许错误允许用户的失误操作,尽量不对系统造成伤害。3.3.2信息显示设计应当尽量为用户提供的界面显示时完整的、明确的和容易理解的。这样才能满足用户的需求。使用不同的方式显示信息:用文字、图形、声音,按位置、移动和大小,使用颜色和省略等方式传达信息。1、只显示与当前工作有关的信息在用户操作有关系统的特定功能的信息时,不必看到与之无关的数据、菜单和图形。2、使用便于用户迅速吸收数据的方式来表示数据在系统设计的过程中,较多地使用了图表的形式表示数据,例如在分析中就使用了柱状图的形式表现了复杂的数据。这样,用户可以直观的体会到图表所表示的含义。3、使用一致的标记、标准的缩写和可预知的颜色为了使系统所表达的含义准确、无误,就必须适用一致的标记、标准的缩写和可以预知的缩写,这样用户就无需参照其他信息源就能理解,而正确地适用软件。4、产生有意义的错误信息对于系统在运行过程中产生的错误尽量给用户返回一个容易理解的错误信息,以使用户保持对系统的信任,和系统的可用性。5、使用窗口分隔不同类型的信息 使用不同的窗口显示、保存不同类型的信息。3.3.3输入界面设计用户的大部分时间用在选择菜单命令、键入数据和向系统提供输入。在系统中,键盘是主要的输入介质,但是鼠标等设备的也是重要的输入手段,所以,对于他们的数据输入操作有如下约定:1、保持信息显示和数据输入间的一致性为了方便用户的使用,鼠标应当尽量减少操作的幅度。2、保持显示信息和输入信息之间的一致性对于用户来说,要保证其输入的数据在显示上与其他显示的视觉特征(例如:文字大小、颜色、位置等)要一致。对于不同类型的用户在登录到系统后,由于有不同的权限,所以在主界面中会有一些项目受到限制而无法使用,所以要使这些项目不发生作用,以保证系统安全。3.4软件测试3.4.1测试的方法和步骤软件的测试方法有两种,一种是黑盒测试(功能测试),另外一种是白盒测试(结构测试)。黑盒测试把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接受输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。白盒测试的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否能按预定的要求正确工作。在本次软件的测试工作中,由于水平的限制,仅仅对软件的各个功能模块进行了测试,并对各个模块之间的接口进行了详细的测试(用黑盒测试法)。测试的步骤由于该系统是一个小系统,可以把整个系统作为一个单独的实体来测试。当然,在测试的过程中可以分模块、分阶段来进行。5.4.2测试用例测试用例是指对一向特定的软件产品进行测试任务的描述,体现测试方案,方式,方法和技术。1.登录测试:分普通用户和管理员两种用户,登录时可以选择登录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论