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

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

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

1、支松波:郑州公交查询系统 I .中中 原原 工工 学学 院院 二级课题实训任务书二级课题实训任务书 2011 年 6 月 13 日 学生姓名学生姓名支松波支松波学号学号201007042137 专专 业业软件开发软件开发(日文方向日文方向)班级班级日文日文 101 课题名称课题名称郑州公交查询系统郑州公交查询系统 课题来源课题来源河南省大学生就业创业基地河南省大学生就业创业基地 指导教师指导教师杜远坤杜远坤专业专业计算机科学与技术计算机科学与技术职称职称集成项目经理集成项目经理 课题说明:课题说明:用户通过站点换乘,可得到从一地到另一地不同路线及换乘公交车的 方法,该查询支持模糊查询.通过站点

2、查询,可得到经过该点的详细车次。线路查询, 用户可通过线路查询的到各线路经过的详细站点(包括上线下线) 。该系统主要用到 SQLserver 2005 数据库 公交查询算法 java 连接数据库等知识点。希望该系统能 够给出行的人们带来便捷的交通路线! 承担的任务:承担的任务: 1用户界面设计(参与)用户界面设计(参与) 2Java 代码实现(独立)代码实现(独立) 3. 数据库连接(参与)数据库连接(参与) 4. 数据库结构设计(独立)数据库结构设计(独立) 中中 原原 工工 学学 院院 支松波:郑州公交查询系统 II 二二 级级 课课 题题 任任 务务 书书 2011 年 6 月 14 日

3、 工作进度安排:工作进度安排: 时间轴时间轴 2011-6-13 至至 2011-6-28(除周(除周 日)日)负责人负责人 审审 核核 人人 任务名称任务名称 123456789 10 1 1 12 总体进度30%62%8%支松波 整理资料支松波 付小兵 编写代码支松波 马啸伟 付小兵 代码测试马啸伟 支松波 付小兵 整理文档支松波 杜 远 坤 指导教师签字:指导教师签字: 2011 年年 6 月月 28 日日 实训单位意见实训单位意见 签章:签章: 年年 月月 日日 学学院院意意见见 签章:签章: 年年 月月 日日 中中 原原 工工 学学 院院 支松波:郑州公交查询系统 III 二二 级级

4、 课课 题题 评评 审审 表表 学号学号201007042137姓名姓名支松波专业专业软件开发(日文) 班班 级级 日文 101 题目题目郑州公交查询系统 指指 导导 教教 师师 评评 语语 成绩(百分制):成绩(百分制): 指导教师签名:指导教师签名: 2011 年年 6 月月 28 日日 支松波:郑州公交查询系统 IV 软软软软 件件件件 学学学学 院院院院 二级课题报告二级课题报告 课题名称:课题名称: 郑州公交查询系统郑州公交查询系统 专专 业:业: 软件开发(日文方向) 班班 级:级: 日文 101 学学 号:号: 201007042137 学生姓名:学生姓名: 支松波 指导教师:指

5、导教师: 杜远坤 2011 年年 6 月月 28 日日 支松波:郑州公交查询系统 II 摘 要 我国城市公交查询系统的发展处于一个落后的水平,广大乘客可以获得的信息的方 式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发 布和管理。我国公交查询系统现状如下: (1) 乘客可以获得的信息很少,方式主要为常规手段。局限于电话,交通图,想 熟人闻讯等常规手段。因此,获得的信息很少,除去线路,站点等基本信息 意外,有关车次,时间的信息基本没有。 (2) 乘客出行中获得信息困难,本上没有实时信息。乘客在一些大城市中可以通 过电子站牌获得一些基本信息外,在我国的大部分城市中基本获

6、到公交信息。 (3) 缺乏专门的交通信息发布管理机构,乘客获得的信息准确性得不到保证。但 随着城市交通信息服务需求的发展,需要有专门的管理机构和制度。当前, 城市交通信息服务存在混乱和低效的问题,有些甚至误导乘客。 随着人民生活水平的提高和社会的发展,人们出行的次数和范围都在增加,共交通 承担着越来越繁重的运输任务也要与此相对应,公交的线路数量和投入运营的车辆数量 也在迅猛发展,公交的服务时间延长,服务范围扩大。服务质量提高,对人们的吸引力 也在增强。人们出行将越来越依赖公共交通。 一般意义上,完整的出行问题是解决出发点到目的的路径选优问题随着人们活动的 范围的扩大,乘公交出行往往也不能一车到

7、达,乘客从某一起点,可能需要一次或多次 换成才能到达目的地。因此,如何选择最优的出行路线,即如何换乘,换乘几次,成为 人们出行首要考虑的问题。 随着计算机的发展,计算机软件技术应用与信息管理是必然的趋势。用计算机管 理和处理信息,有着人工管理所无法比拟的优点。如:查找方便,可靠性高,存储量大, 保密性好,寿命长,成本低,更新信息快等。在这样的背景下,我们决定做公交查询系 统,并以郑州市公交数据为例,设计了公交查询系统。 关键词: SQL sever2005 sqljdbc Swing GUI 等等 目 录 摘摘 要要I 第第 1 章章 项目分析项目分析.1 1.1 问题描述.1 1.2 技术分

8、析.1 1.3 工程进度计划.1 第第 2 章章 系统分析与设计系统分析与设计.2 2.1 系统分析.2 2.1.1 参与者2 2.1.2 用例及用例规约2 2.1.3 用例图2 2.2 系统设计.3 2.2.1 顺序图.3 2.2.2 类图.3 2.2.3 系统体系结构设计.4 2.3 数据库设计.4 2.3.1E-R 图4 2.3.2 关系模式.4 2.3.3 表的设计.4 第第 3 章章 实现与测试实现与测试.6 3.1 功能模块 16 3.1.1 活动图.6 3.1.2 界面.6 3.1.3 代码.6 3.1.4 测试用例.7 3.2 功能模块 27 3.2.1 活动图.7 3.2.2

9、 界面.7 3.2.3 代码.8 3.2.4 测试用例.8 第第 4 章章 结束语结束语.9 附录附录 A: 附加图、表附加图、表11 附录附录 B: 主要源程序主要源程序11 支松波:郑州公交查询系统 1 第 1 章 项目分析 1)操作可行性:只要一台以上计算机连接在同一个局域网内,本系统就可以使用, 所以操作上可行。 2)技术可行性:本系统采用 Java 语言,主要运用工开发具 eclipse,以及 eclipse 的插件 visual editor。开发这个系统需要开发者对网络编程和 java Swing 等知识的掌 握,本项目采用的数据库为 mysql,需掌握对 mysql 数据库的基

10、本操作,因平时用的工具 就是 eclipse,以及其 VE 插件,数据库用的是 mysql,因此技术可行。 3)功能分析:此项目主要实现乘客对公交站点,公交车次,公交线路等的查询。 1.1 问题描述 通过对显示中的城市公交系统(郑州市城市公交系统)的考察,得到第一手的资料。 人们在面对选择众多的公交车以及公交线路的问题上的需要,公交查询系统主要解决的 问题是人们在城市中不熟悉公交系统的问题。通过调查得出:设计一个公交查询系统需 要解决人们对一个城市公交系统的整个查询问题:如:站点换乘查询、公交下路查询、公 交站点查询等功能。 1.2 技术分析 对于一个用来实现公交查询的程序,其最低要求必须是知

11、道站点名,通过已知站点 名,来确定经过该站点的车次(含上线和下线) 。 1.3 工程进度计划 6 月 13 日14 日进行项目策划,进行系统分析,材料准备 6 月 15 日18 日进行项目的代码实现 6 月 19 日22 日対项目进行调试,测试 6 月 23 日24 日撰写实验论文 6 月 25 日26 日验收系统 6 月 27 日29 日完善系统并修改论文 支松波:郑州公交查询系统 2 第 2 章 系统分析与设计 要解决一个问题,首先应对问题加以分析,有一个明确的目的以及正确的思路。想 法决定做法。要是一个项目有序的进行,必须先进行分析与设计!分析与设计是项目往 下进行的基础。必须考虑其操作

12、可行性,用户环境可行性,工具可行性! 2.1 系统分析 要设计一个良好的公交查询系统,就必须首先明确应用环境对系统的要求。城市公 交查询系统是为了方便乘客出行而设计的,因此,该系统满足以下几方面需求: 1)站点换乘查询功能: 能面向普通乘客,通过普通的浏览器提供按照站点名查询的方式,给出起始点至 目的站点的换乘方案。 2)公交线路查询功能: 通过普通的浏览器提供按照站点名查询的方式,给出该线路按顺序经过的所有站 点名称 3)公交站点查询功能: 通过普通的浏览器提供按照站点名查询的方式,输出经过该站点的所有公交线路 名称。 结合上述需求对系统功能设计的要求分析及对功能模块的划分,从而分析出数据库

13、 的数据项。 2.1.1 参与者 支松波,付小兵,马啸伟。 2.1.2 用例及用例规约 由于该程序是一个示例程序,其中采用的是中,小型数据库,其中储存的车次,站 点名,公交路线等仅为一小部分,因此,在测试该程序时只能查询已储存在数据库中的 信息。 支松波:郑州公交查询系统 3 2.1.3 用例图 乘 客 站点 车次 该车次路线 2.2 系统设计 公交查询系统程序 乘 客 站 点 车 次 车次路线 支松波:郑州公交查询系统 4 2.2.1 顺序图 乘客登陆界面 输入站点 不存在 车 次 路 线 2.2.2 类图 2.2.3 系统体系结构设计 系统体系结构图: 支松波:郑州公交查询系统 5 视图层

14、 控制层 逻辑层 数据库层 表 2-1 体系结构说明图 1)视图层:)视图层:用户界面,通过界面进行查找。 2)控制层()控制层(Action):):负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业 务数据返回给表现层显示。 3)逻辑层:)逻辑层:数据访问对象层,负责与数据库服务层交互,封装增、删、查、改操作。 4)数据服务层:数据服务层:采用主流数据库 SQL server 2005,存放数据。 2.3 数据库设计 数据库结构设计的好坏将直接对程序的运行效率产生影响,好的数据库结构设计会 减少数据的储存量,数据的完整性和一致性好,具有比较快的响应速度。基于 J2EE 的课 程管理网站在数

15、据库设计之初尽量考虑全面,仔细考虑乘客的各种需求,避免浪费人力 物力。基于此,进行如下设计。 在设计中通过实体-关系图的方法分析系统的数据库各实体的关系,推导出相关表结 构和相应的内、外主键,并可结合业务进一步设计相关存储过程和约束条件等实现方法。 2.3.1E-R 图 Stop Stop_i d Stop_ name 站点作为一个实体 支松波:郑州公交查询系统 6 line Line_i d Line_n ame 线路作为一个实体 StopLine Stop_i d Line_i d sqe 站点线路作为一个实体连接两个表 2.3.2 关系模式 StopLine Pk.fk1 Pk.fk2

16、Pk Stop_id Line_id seq Stop PkStop_id Line PkLine_id 支松波:郑州公交查询系统 7 2.3.3 表的设计 第 3 章 实现与测试 该程序主要用数据库查询语句,查询线路、站点、换乘。数据库主要用到表结构的设 计和实现。Java 窗体中运用addWindowListener 实现窗口关闭,同时又弹出窗体。用 Select 类 中 get_#方法实现整个系统对数据库的调用。 3.1 功能模块 1 换乘查询 3.1.1 活动图 用户 查询 输出结果 不存在 支松波:郑州公交查询系统 8 3.1.2 界面 支松波:郑州公交查询系统 9 支松波:郑州公交

17、查询系统 10 3.1.3 代码 package bus_1; import javax.swing.SwingUtilities; import java.awt.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; impor

18、t javax.swing.JButton; import java.awt.Font; import java.awt.Color; import java.awt.event.WindowAdapter; 支松波:郑州公交查询系统 11 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 fina

19、l long serialVersionUID = 1L; private JPanel jContentPane = null; private JLabel jLabel = null; private JLabel jLabel1 = null; private JTextField jTextField = null; private JButton jButton = null; private JLabel jLabel2 = null; /* * This method initializes jTextField * 支松波:郑州公交查询系统 12 * return javax

20、.swing.JTextField */ private JTextField getJTextField() if (jTextField = null) jTextField = new JTextField(); jTextField.setBounds(new Rectangle(79, 46, 135, 21); return jTextField; /* * This method initializes jButton * * return javax.swing.JButton */ private JButton getJButton() if (jButton = null

21、) jButton = new JButton(); 支松波:郑州公交查询系统 13 jButton.setBounds(new Rectangle(222, 47, 61, 20); jButton.setForeground(Color.blue); jButton.setText(“搜索“); jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) /System.out.println(“actionPe

22、rformed()“); / TODO Auto-generated Event stub actionPerformed() Line_Window.this.setVisible(false); String string=jTextField.getText(); Change_Window change=new Change_Window(); change.setLocationRelativeTo(null); change.setResizable(false); Main_Window main=new Main_Window(); main.setLocationRelati

23、veTo(null); main.setVisible(true); Select select=new Select(); if(string.equals(“) JOptionPane.showMessageDialog(null,“线路名称不能为空!“); 支松波:郑州公交查询系统 14 else if(select.getLineU(string).isEmpty() JOptionPane.showMessageDialog(null,“无该路车或输入有误! “); else JOptionPane.showMessageDialog(null,string+“路 n“+select

24、.getLineU(string)+“n“+string+“路n“+select.getLineD(string); ); return jButton; /* 支松波:郑州公交查询系统 15 * param args */ public static void main(String args) / TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() public void run() Line_Window thisClass = new Line_Window(); thisClass.set

25、DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setVisible(false); thisClass.setResizable(false); ); /* * This is the default constructor */ public Line_Window() 支松波:郑州公交查询系统 16 super(); initialize(); /* * This method initializes this * * return void */ private void initialize() this.setConte

26、ntPane(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.setVisible(true); 支松波:郑州公交查询系统 17 ); /* * Th

27、is 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(); jLabel

28、1.setBounds(new Rectangle(16, 46, 65, 20); jLabel1.setForeground(Color.blue); 支松波:郑州公交查询系统 18 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); jCont

29、entPane = new JPanel(); jContentPane.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,5“3.1.

30、4 支松波:郑州公交查询系统 19 测试用例 44 路公交车 3.2 功能模块 2 站点查询 3.2.1 活动图 用户 查询 输出结果 不存在 3.2.2 界面 支松波:郑州公交查询系统 20 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 j

31、ava.awt.Color; import java.awt.Font; import java.awt.event.WindowAdapter; import java.awt.event.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; pri

32、vate JLabel jLabel = null; private JLabel jLabel1 = null; private JTextField jTextField = null; private JLabel jLabel2 = null; /* * This method initializes jButton * * return javax.swing.JButton */ private JButton getJButton() if (jButton = null) jButton = new JButton(); jButton.setBounds(new Rectan

33、gle(217, 45, 63, 22); jButton.setForeground(Color.blue); jButton.setText(“搜索“); jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) Stop_Window.this.setVisible(false); 支松波:郑州公交查询系统 21 Main_Window main=new Main_Window(); main.setLoca

34、tionRelativeTo(null); main.setVisible(true); String string=jTextField.getText(); Select select=new Select(); select.getStop(string); ); return jButton; /* * This method initializes jTextField * * return javax.swing.JTextField */ private JTextField getJTextField() if (jTextField = null) jTextField =

35、new JTextField(); jTextField.setBounds(new Rectangle(98, 45, 105, 22); return jTextField; /* * param args */ public static void main(String args) / TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() public void run() Stop_Window thisClass = new Stop_Window(); /thisClass.setDef

36、aultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setVisible(false); thisClass.setResizable(false); ); /* * This is the default constructor */ public Stop_Window() super(); initialize(); /* * This method initializes this 支松波:郑州公交查询系统 22 * * return void */ private void initialize() this.setContentP

37、ane(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.setVisible(true); ); /* * This method initializ

38、es jContentPane * * return javax.swing.JPanel */ private JPanel getJContentPane() if (jContentPane = null) jLabel2 = new JLabel(); jLabel2.setBounds(new Rectangle(98, 79, 130, 18); jLabel2.setForeground(Color.blue); jLabel2.setText(“(输入站点 eg:火车站)“); jLabel1 = new JLabel(); jLabel1.setBounds(new Rect

39、angle(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); jLabel.setFont(new Font(“宋体“, Font.BOLD, 18); jLabel.setText(“公交站点“); jContentPane = new JPanel(); jContentPan

40、e.setLayout(null); jContentPane.add(getJButton(), null); jContentPane.add(jLabel, null); jContentPane.add(jLabel1, null); jContentPane.add(getJTextField(), null); jContentPane.add(jLabel2, null); return jContentPane; / jve:decl-index=0:visual-constraint=“164,9“ 支松波:郑州公交查询系统 23 3.2.4 测试用例 火车站 支松波:郑州公

41、交查询系统 24 第 4 章 结束语 这次软件技术实验,我们小组做的是“公交查询系统” 。系统以整个郑州市区的公 交路线为数据来源,实现了对郑州市区公交系统的站带你换乘查询,公交线路查询、公 交站点查询等功能。 提前我写这个程序时,如果多数据库进行操作,都是通过将数据库查询语句传递给 PHP 语言自带的函数对数据库进行操作,但这次程序设计,数据库存储了郑州市区的公交路 线信息量大,且多次对数据库进行多次操作,所以执行效率需要重点考虑,由此我想到 了存储过程在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执 行方案。这种以经编译好的过程可极大地改善 SQL server 语句的性

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

43、理论方面有了崭新的认识和深刻的体 会,为以后的开发积累了更多的经验。 参考文献 【1】数据库系统概论(第四版) 王珊、萨师煊 高等教育出版社,2006.5. 【2】 SQL sever 2005 程序设计 W.Jason Gilmori 译者:朱涛江 人民邮电出版社 2009.6 【3】 公共交通线路网多条最短路径算法 张国伍,钱大琳。 支松波:郑州公交查询系统 25 附录: 主要源程序 package bus_1; import javax.swing.SwingUtilities; import javax.swing.JOptionPane; import javax.swing.JPa

44、nel; 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 jConten

45、tPane = 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 */ private JButton getJButton() if (jBu

46、tton = null) jButton = new JButton(); jButton.setBounds(new Rectangle(61, 105, 119, 30); jButton.setFont(new Font(“Dialog“, Font.BOLD, 18); jButton.setForeground(Color.black); jButton.setText(“站点换乘“); jButton.setEnabled(true); jButton.addActionListener(new java.awt.event.ActionListener() public void

47、 actionPerformed(java.awt.event.ActionEvent e) Change_Window change=new Change_Window(); change.setLocationRelativeTo(null); change.setResizable(false); Main_Window.this.setVisible(false); change.setVisible(true); ); 支松波:郑州公交查询系统 26 return jButton; /* * This method initializes jButton1 * * return ja

48、vax.swing.JButton */ private JButton getJButton1() if (jButton1 = null) jButton1 = new JButton(); jButton1.setBounds(new Rectangle(61, 211, 119, 30); jButton1.setFont(new Font(“Dialog“, Font.BOLD, 18); jButton1.setForeground(Color.black); jButton1.setText(“公交线路“); jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) Line_Window line=new Line_Window(); line.setLocationRelativeTo(null); line.setResizable(false); Main

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

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1