郑州公交查询系统课题设计.doc

上传人:laozhun 文档编号:3994488 上传时间:2023-03-30 格式:DOC 页数:47 大小:379KB
返回 下载 相关 举报
郑州公交查询系统课题设计.doc_第1页
第1页 / 共47页
郑州公交查询系统课题设计.doc_第2页
第2页 / 共47页
郑州公交查询系统课题设计.doc_第3页
第3页 / 共47页
郑州公交查询系统课题设计.doc_第4页
第4页 / 共47页
郑州公交查询系统课题设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《郑州公交查询系统课题设计.doc》由会员分享,可在线阅读,更多相关《郑州公交查询系统课题设计.doc(47页珍藏版)》请在三一办公上搜索。

1、.中 原 工 学 院二级课题实训任务书 2011年6月13日学生姓名支松波学号201007042137专 业软件开发(日文方向)班级日文101课题名称郑州公交查询系统课题来源河南省大学生就业创业基地指导教师杜远坤专业计算机科学与技术职称集成项目经理课题说明:用户通过站点换乘,可得到从一地到另一地不同路线及换乘公交车的方法,该查询支持模糊查询.通过站点查询,可得到经过该点的详细车次。线路查询,用户可通过线路查询的到各线路经过的详细站点(包括上线下线)。该系统主要用到SQLserver 2005 数据库 公交查询算法 java连接数据库等知识点。希望该系统能够给出行的人们带来便捷的交通路线!承担的

2、任务:1用户界面设计(参与)2Java代码实现(独立)3. 数据库连接(参与)4. 数据库结构设计(独立)中 原 工 学 院二 级 课 题 任 务 书 2011年6月14日工作进度安排:任务名称时间轴2011-6-13至2011-6-28(除周日)负责人审核人123456789 10 11 12 杜远坤总体进度30%62%8%支松波整理资料支松波付小兵编写代码支松波马啸伟付小兵代码测试马啸伟支松波付小兵整理文档支松波指导教师签字: 2011年 6 月 28 日实训单位意见签章: 年 月 日学院意见 签章: 年 月 日中 原 工 学 院二 级 课 题 评 审 表学号201007042137姓名支

3、松波专业软件开发(日文)班级日文101题目郑州公交查询系统指导教师评语成绩(百分制): 指导教师签名: 2011年 6 月 28日软 件 学 院二级课题报告课题名称: 郑州公交查询系统 专 业: 软件开发(日文方向) 班 级: 日文101 学 号: 201007042137 学生姓名: 支松波 指导教师: 杜远坤 2011年 6 月 28 日摘 要我国城市公交查询系统的发展处于一个落后的水平,广大乘客可以获得的信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。我国公交查询系统现状如下:(1) 乘客可以获得的信息很少,方式主要为常规手段。局限于电话,交

4、通图,想熟人闻讯等常规手段。因此,获得的信息很少,除去线路,站点等基本信息意外,有关车次,时间的信息基本没有。(2) 乘客出行中获得信息困难,本上没有实时信息。乘客在一些大城市中可以通过电子站牌获得一些基本信息外,在我国的大部分城市中基本获到公交信息。(3) 缺乏专门的交通信息发布管理机构,乘客获得的信息准确性得不到保证。但随着城市交通信息服务需求的发展,需要有专门的管理机构和制度。当前,城市交通信息服务存在混乱和低效的问题,有些甚至误导乘客。随着人民生活水平的提高和社会的发展,人们出行的次数和范围都在增加,共交通承担着越来越繁重的运输任务也要与此相对应,公交的线路数量和投入运营的车辆数量也在

5、迅猛发展,公交的服务时间延长,服务范围扩大。服务质量提高,对人们的吸引力也在增强。人们出行将越来越依赖公共交通。一般意义上,完整的出行问题是解决出发点到目的的路径选优问题随着人们活动的范围的扩大,乘公交出行往往也不能一车到达,乘客从某一起点,可能需要一次或多次换成才能到达目的地。因此,如何选择最优的出行路线,即如何换乘,换乘几次,成为人们出行首要考虑的问题。 随着计算机的发展,计算机软件技术应用与信息管理是必然的趋势。用计算机管理和处理信息,有着人工管理所无法比拟的优点。如:查找方便,可靠性高,存储量大,保密性好,寿命长,成本低,更新信息快等。在这样的背景下,我们决定做公交查询系统,并以郑州市

6、公交数据为例,设计了公交查询系统。关键词: SQL sever2005 sqljdbc Swing GUI 等等 目 录摘 要I第1章 项目分析11.1 问题描述11.2技术分析11.3工程进度计划1第2章 系统分析与设计22.1系统分析22.1.1 参与者22.1.2 用例及用例规约22.1.3 用例图22.2 系统设计32.2.1顺序图32.2.2类图32.2.3系统体系结构设计42.3 数据库设计42.3.1E-R图42.3.2关系模式42.3.3表的设计4第3章 实现与测试63.1 功能模块163.1.1活动图63.1.2界面63.1.3代码63.1.4测试用例73.2 功能模块273

7、.2.1活动图73.2.2界面73.2.3代码83.2.4测试用例8第4章 结束语9附录A: 附加图、表11附录B: 主要源程序11第1章 项目分析1)操作可行性:只要一台以上计算机连接在同一个局域网内,本系统就可以使用,所以操作上可行。2)技术可行性:本系统采用Java语言,主要运用工开发具eclipse,以及eclipse的插件visual editor。开发这个系统需要开发者对网络编程和java Swing等知识的掌握,本项目采用的数据库为mysql,需掌握对mysql数据库的基本操作,因平时用的工具就是eclipse,以及其VE插件,数据库用的是mysql,因此技术可行。3)功能分析:

8、此项目主要实现乘客对公交站点,公交车次,公交线路等的查询。1.1 问题描述通过对显示中的城市公交系统(郑州市城市公交系统)的考察,得到第一手的资料。人们在面对选择众多的公交车以及公交线路的问题上的需要,公交查询系统主要解决的问题是人们在城市中不熟悉公交系统的问题。通过调查得出:设计一个公交查询系统需要解决人们对一个城市公交系统的整个查询问题:如:站点换乘查询、公交下路查询、公交站点查询等功能。1.2技术分析对于一个用来实现公交查询的程序,其最低要求必须是知道站点名,通过已知站点名,来确定经过该站点的车次(含上线和下线)。1.3工程进度计划 6月13日14日进行项目策划,进行系统分析,材料准备6

9、月15日18日进行项目的代码实现6月19日22日対项目进行调试,测试6月23日24日撰写实验论文6月25日26日验收系统6月27日29日完善系统并修改论文第2章 系统分析与设计要解决一个问题,首先应对问题加以分析,有一个明确的目的以及正确的思路。想法决定做法。要是一个项目有序的进行,必须先进行分析与设计!分析与设计是项目往下进行的基础。必须考虑其操作可行性,用户环境可行性,工具可行性!2.1系统分析要设计一个良好的公交查询系统,就必须首先明确应用环境对系统的要求。城市公交查询系统是为了方便乘客出行而设计的,因此,该系统满足以下几方面需求:1)站点换乘查询功能: 能面向普通乘客,通过普通的浏览器

10、提供按照站点名查询的方式,给出起始点至目的站点的换乘方案。2)公交线路查询功能: 通过普通的浏览器提供按照站点名查询的方式,给出该线路按顺序经过的所有站点名称3)公交站点查询功能: 通过普通的浏览器提供按照站点名查询的方式,输出经过该站点的所有公交线路名称。结合上述需求对系统功能设计的要求分析及对功能模块的划分,从而分析出数据库的数据项。2.1.1 参与者支松波,付小兵,马啸伟。2.1.2 用例及用例规约由于该程序是一个示例程序,其中采用的是中,小型数据库,其中储存的车次,站点名,公交路线等仅为一小部分,因此,在测试该程序时只能查询已储存在数据库中的信息。2.1.3 用例图乘客站点车次该车次路

11、线2.2 系统设计 公交查询系统程序乘 客站 点车 次车次路线2.2.1顺序图乘客登陆界面输入站点不存在车 次路 线 2.2.2类图2.2.3系统体系结构设计系统体系结构图: 视图层 控制层 逻辑层 数据库层 表2-1 体系结构说明图1)视图层:用户界面,通过界面进行查找。2)控制层(Action):负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业务数据返回给表现层显示。3)逻辑层:数据访问对象层,负责与数据库服务层交互,封装增、删、查、改操作。4)数据服务层:采用主流数据库SQL server 2005,存放数据。2.3 数据库设计数据库结构设计的好坏将直接对程序的运行效率产生影响,好的

12、数据库结构设计会减少数据的储存量,数据的完整性和一致性好,具有比较快的响应速度。基于J2EE的课程管理网站在数据库设计之初尽量考虑全面,仔细考虑乘客的各种需求,避免浪费人力物力。基于此,进行如下设计。在设计中通过实体-关系图的方法分析系统的数据库各实体的关系,推导出相关表结构和相应的内、外主键,并可结合业务进一步设计相关存储过程和约束条件等实现方法。2.3.1E-R图 StopStop_idStop_name 站点作为一个实体lineLine_idLine_name 线路作为一个实体StopLineStop_idLine_idsqe 站点线路作为一个实体连接两个表2.3.2关系模式StopLi

13、nePk.fk1Pk.fk2PkStop_idLine_idseqStopPkStop_idLinePkLine_id2.3.3表的设计第3章 实现与测试该程序主要用数据库查询语句,查询线路、站点、换乘。数据库主要用到表结构的设计和实现。Java窗体中运用addWindowListener 实现窗口关闭,同时又弹出窗体。用Select 类中get_#方法实现整个系统对数据库的调用。3.1 功能模块1换乘查询3.1.1活动图用户查询输出结果不存在3.1.2界面3.1.3代码package bus_1;import javax.swing.SwingUtilities;import java.aw

14、t.BorderLayout;import javax.swing.JPanel;import javax.swing.JFrame;import java.awt.Dimension;import java.awt.Rectangle;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.JButton;import java.awt.Font;import java.awt.Color;import java.awt.event.Wi

15、ndowAdapter;import java.awt.event.WindowEvent;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;public class Line_Window extends JFrame private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JLabel jLabel = null;private JLabel jLabe

16、l1 = null;private JTextField jTextField = null;private JButton jButton = null;private JLabel jLabel2 = null;/* * This method initializes jTextField * * return javax.swing.JTextField */private JTextField getJTextField() if (jTextField = null) jTextField = new JTextField();jTextField.setBounds(new Rec

17、tangle(79, 46, 135, 21);return jTextField;/* * This method initializes jButton * * return javax.swing.JButton */private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(222, 47, 61, 20);jButton.setForeground(Color.blue);jButton.setText(搜索);jButton.addA

18、ctionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) /System.out.println(actionPerformed(); / TODO Auto-generated Event stub actionPerformed()Line_Window.this.setVisible(false);String string=jTextField.getText();Change_Window change=new Change_W

19、indow();change.setLocationRelativeTo(null);change.setResizable(false);Main_Window main=new Main_Window();main.setLocationRelativeTo(null);main.setVisible(true);Select select=new Select();if(string.equals()JOptionPane.showMessageDialog(null,线路名称不能为空!);elseif(select.getLineU(string).isEmpty()JOptionPa

20、ne.showMessageDialog(null,无该路车或输入有误!);elseJOptionPane.showMessageDialog(null,string+路n+select.getLineU(string)+n+string+路n+select.getLineD(string););return jButton;/* * param args */public static void main(String args) / TODO Auto-generated method stubSwingUtilities.invokeLater(new Runnable() public

21、 void run() Line_Window thisClass = new Line_Window();thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(false);thisClass.setResizable(false););/* * This is the default constructor */public Line_Window() super();initialize();/* * This method initializes this * * return voi

22、d */private void initialize() this.setContentPane(getJContentPane();this.setTitle(公交线路查询);this.setBounds(new Rectangle(0, 0, 307, 146);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)Main_Window main=new Main_Window();main.setLocationRelativeTo(null);main.setVisibl

23、e(true););/* * This method initializes jContentPane * * return javax.swing.JPanel */private JPanel getJContentPane() if (jContentPane = null) jLabel2 = new JLabel();jLabel2.setBounds(new Rectangle(79, 79, 136, 18);jLabel2.setForeground(Color.blue);jLabel2.setText(eg:1路公交车输入1);jLabel1 = new JLabel();

24、jLabel1.setBounds(new Rectangle(16, 46, 65, 20);jLabel1.setForeground(Color.blue);jLabel1.setText(线路名称:);jLabel = new JLabel();jLabel.setText(公交线路);jLabel.setFont(new Font(宋体, Font.BOLD, 18);jLabel.setForeground(Color.blue);jLabel.setBounds(new Rectangle(108, 9, 85, 29);jContentPane = new JPanel();j

25、ContentPane.setLayout(null);jContentPane.add(jLabel, null);jContentPane.add(jLabel1, null);jContentPane.add(getJTextField(), null);jContentPane.add(getJButton(), null);jContentPane.add(jLabel2, null);return jContentPane; / jve:decl-index=0:visual-constraint=245,53.1.4测试用例44路公交车3.2 功能模块2站点查询3.2.1活动图用

26、户查询输出结果不存在3.2.2界面3.2.3代码package bus_1;import javax.swing.SwingUtilities;import javax.swing.JPanel;import javax.swing.JFrame;import java.awt.Rectangle;import javax.swing.JButton;import javax.swing.JLabel;import java.awt.Color;import java.awt.Font;import java.awt.event.WindowAdapter;import java.awt.ev

27、ent.WindowEvent;import javax.swing.JTextField;public class Stop_Window extends JFrame private static final long serialVersionUID = 1L;private JPanel jContentPane = null;private JButton jButton = null;private JLabel jLabel = null;private JLabel jLabel1 = null;private JTextField jTextField = null;priv

28、ate JLabel jLabel2 = null;/* * This method initializes jButton * * return javax.swing.JButton */private JButton getJButton() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(217, 45, 63, 22);jButton.setForeground(Color.blue);jButton.setText(搜索);jButton.addActionListener(ne

29、w java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) Stop_Window.this.setVisible(false);Main_Window main=new Main_Window();main.setLocationRelativeTo(null);main.setVisible(true);String string=jTextField.getText();Select select=new Select();select.getStop(string

30、););return jButton;/* * This method initializes jTextField * * return javax.swing.JTextField */private JTextField getJTextField() if (jTextField = null) jTextField = new JTextField();jTextField.setBounds(new Rectangle(98, 45, 105, 22);return jTextField;/* * param args */public static void main(Strin

31、g args) / TODO Auto-generated method stubSwingUtilities.invokeLater(new Runnable() public void run() Stop_Window thisClass = new Stop_Window(); /thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);thisClass.setVisible(false);thisClass.setResizable(false););/* * This is the default constructor *

32、/public Stop_Window() super();initialize();/* * This method initializes this * * return void */private void initialize() this.setContentPane(getJContentPane();this.setTitle(公交站点查询);this.setBounds(new Rectangle(0, 0, 307, 146);this.addWindowListener(new WindowAdapter() public void windowClosing(Windo

33、wEvent e)Main_Window main=new Main_Window();main.setLocationRelativeTo(null);main.setVisible(true););/* * This method initializes jContentPane * * return javax.swing.JPanel */private JPanel getJContentPane() if (jContentPane = null) jLabel2 = new JLabel();jLabel2.setBounds(new Rectangle(98, 79, 130,

34、 18);jLabel2.setForeground(Color.blue);jLabel2.setText(输入站点 eg:火车站);jLabel1 = new JLabel();jLabel1.setBounds(new Rectangle(28, 45, 70, 21);jLabel1.setForeground(Color.blue);jLabel1.setText(站点名称:);jLabel = new JLabel();jLabel.setBounds(new Rectangle(108, 11, 84, 25);jLabel.setForeground(Color.blue);j

35、Label.setFont(new Font(宋体, Font.BOLD, 18);jLabel.setText(公交站点);jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(getJButton(), null);jContentPane.add(jLabel, null);jContentPane.add(jLabel1, null);jContentPane.add(getJTextField(), null);jContentPane.add(jLabel2, null);return j

36、ContentPane; / jve:decl-index=0:visual-constraint=164,93.2.4测试用例火车站第4章 结束语这次软件技术实验,我们小组做的是“公交查询系统”。系统以整个郑州市区的公交路线为数据来源,实现了对郑州市区公交系统的站带你换乘查询,公交线路查询、公交站点查询等功能。提前我写这个程序时,如果多数据库进行操作,都是通过将数据库查询语句传递给PHP语言自带的函数对数据库进行操作,但这次程序设计,数据库存储了郑州市区的公交路线信息量大,且多次对数据库进行多次操作,所以执行效率需要重点考虑,由此我想到了存储过程在运行存储过程前,数据库已对其进行了语法和句法

37、分析,并给出了优化执行方案。这种以经编译好的过程可极大地改善SQL server 语句的性能。由于执行SQL server语句的大部分工作已经完成,所以存储过程能以极快的速度执行。只是这点,就让我从这次课程设计中受益匪浅。通过这次课程设计,是我么加深了对数据库的理论的理解和数据库实现的方法的应用一级软件工程知识的理解。掌握了数据库应用系统的设计和实现方法。提高了数据库应用系统的设计水平,以及分析问题和解决实际问题的能力。实验中我们进一步巩固了对数据模型,ER图的设计与实现,视图、索引等概念的掌握,加深了对范式的理解,熟练了对SQL语言的应用。通过与指导老师的交流,接纳碍事的意见对系统惊醒了反复

38、测试与修改,让其更加完善。通过这个反复的过程,是我在关系型数据库理论方面有了崭新的认识和深刻的体会,为以后的开发积累了更多的经验。参考文献【1】数据库系统概论(第四版) 王珊、萨师煊 高等教育出版社,2006.5.【2】SQL sever 2005 程序设计 W.Jason Gilmori 译者:朱涛江 人民邮电出版社 2009.6【3】公共交通线路网多条最短路径算法 张国伍,钱大琳。附录: 主要源程序package bus_1;import javax.swing.SwingUtilities;import javax.swing.JOptionPane;import javax.swing

39、.JPanel;import javax.swing.JFrame;import javax.swing.JButton;import java.awt.Rectangle;import javax.swing.JLabel;import javax.swing.JComboBox;import java.awt.Color;import java.awt.Font;public class Main_Window extends JFrame private static final long serialVersionUID = 1L;private JPanel jContentPane = null;JButton jButton = null;JButton jButton1 = null;private JButton jButton2 = null;private JLabel jLabel = null;private JLabel jLabel1 = null;private JComboBox jComboBox = null;/* * This method initializes jButton * * return javax.swing.JButton

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号