长途汽车信息管理系统-课程设计报告(共50页).doc
精选优质文档-倾情为你奉上学号2014-2015学年 第一学期120数据库系统概论课程设计报告题目:长途汽车信息管理系统专业:计算机科学与技术班级:班姓名:指导教师:成绩:计算机与信息工程系2014年 10月 12 日目录专心-专注-专业1设计内容及要求1.1设计内容本次课程设计名称为长途汽车信息管理系统,用户登录后主要实现对线路信息,汽车信息,售票信息,乘客信息进行基本操作的功能。该系统功能主要包括以下几个模块:(1)充分利用所学过的数据库的相关知识建立长途汽车信息管理系统所需的数据库。(2)对线路信息(包括出发地、目的地、出发时间、所需时间等)汽车信息(最大载客量、汽车类型、剩余座位等)售票信息(包括售票情况、票价)乘客信息(包括姓名、年龄、性别等)的查询、添加和删除操作。(3)进行详细的功能设计后,在Java中利用JDBC连接数据库技术对数据库中数据进行操作,并能进行多表之间的链接与查询操作。1.2设计任务及具体要求(1)设计任务:长途汽车信息管理系统运用在汽车站部门的系统工具,方便此系统部门的工作人员的工作,该系统主要根据此部门的特点建立的,是记录和查询汽车站信息的的依据。随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,长途汽车站信息管理系统在人们的日常生活中发挥着越来越重要的作用。本系统实现了汽车线路信息,汽车信息,票务信息的查询和管理,以满足人们的需求。(2)具体要求:车站管理员可以在线路信息管理、汽车信息管理等模块对车站线路信息、票价信息、乘客信息等进行管理。管理员首先建立相应模块的信息数据库,输入原始的线路、汽车、车票、乘客信息,当有新数据需要添加或者需要对已有的信息进行修改,删除的时候,管理员就可以进行相应的操作。管理员也可以通过本模块查询到所有需要查询的线路、汽车、车票、乘客的详细信息。2原理及分析2.1需求分析长途汽车信息管理数据库系统是面向所有汽车的数据管理系统,其目的是使乘车有序化,规范化,简单化,易于车站人员的管理,查询。本系统主要包括以下几个模块:乘客信息、汽车信息、线路以及车票的信息这四个功能模块基本实现设计本系统的目的,从而可以进一步满足车站对乘客乘车管理的要求。长途汽车信息管理系统运用在汽车站和火车站等车站部门的系统工具,方便此系统部门的工作人员的工作,该系统主要根据此部门的特点建立的,是记录和查询汽车站信息的的依据。早期的长途汽车站信息主要是人工记录和人工管理的,不仅不容易记录,而且还不容易保存。随着计算机的不断普及和软件系统的不断发展加上信息系统开发的迫切需求,计算机长途汽车站信息管理系统应运而生了。随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,长途汽车站信息管理系统在人们的日常生活中发挥着越来越重要的作用。本系统实现了汽车线路信息,汽车信息,票价信息的查询和管理,满足人们的需求。2.2系统功能简介在Java中利用ODBC访问技术操作数据库,建立到数据库中的映射类,在对话框类中通过引用映射类完成对数据库的操作。程序分为登陆界面,选择界面,线路信息界面,汽车信息界面,车票信息这几个主体界面。使用时应先知道管理员帐号和密码,登陆进入系统主菜单界面,里面包括线路信息,汽车信息,车票信息,退出程序菜单选项。所需时间等,可以对它们进行添加,查询,删除,其中线路信息界面包括包括出发地、目的地、出发时间、修改,返回主菜单的操作;汽车信息和车票信息的界面与其类似。需要特别说明的是,当对数据进行操作时,在查询框内输入提示数据内容,对话框的表中和提示栏中都会出现所查询的数据,我们可以在提示栏中对数据进行删除和修改操作。2.3程序框图(1)数据库ER图线路信息图:线路信息出发地出发时间行驶总的总时间目的地图1-1 线路信息图汽车信息图:汽车信息最大的载客量汽车的类型剩余座位班次编号图1-2 汽车信息图车票信息图:车票信息售票情况车票查询打印相应的车票图1-3 车票信息图乘客信息图:乘客信息姓名年龄民族性别图1-4 乘客信息图(2)长途汽车信息管理系统功能模块图 图1-5 系统功能模块图 3设计过程和程序代码3.1数据库表格的设计概述1实体类型结构汽车线路(出发地,目的地,出发时间,行驶的总时间)汽车(汽车类型,班次,最大载客数,剩余座位)车票(已买票数,剩余票数,票价)乘客(姓名,年龄,性别,民族)2联系类型结构乘坐(汽车班次,类型)供应(数量)行驶(线路)3逻辑设计阶段根据ER模型转换成关系模型的规则,可把上述ER图转换成5个关系模式,从而实现对乘客验证ER模型向关系数据模型的转换,具体如下:汽车线路(出发地,目的地,出发时间,行驶的总时间)汽车(汽车类型,汽车班次,最大载客数,剩余座位数)车票(已买票数,剩余票数,票价)乘客(姓名,年龄,性别,民族)乘坐(所需时间,汽车班次,票价,乘客姓名)冗余问题检查:在各关系模式中,可得出每个关系的属性值都是不可分的,因此各关系模式都是规范化关系;又可从以上各关系模式中可得每个属性都不传递依赖于各关系模式的候选键,且转换后各个属性值的数据并没有丢失,数据共享率高,所以在ER模型向关系模式转化时不存在冗余问题。3.2数据库表格的实现过程1. 创建汽车线路表用Microsoft SQL 2000 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Busline( Source char(20) , Destination char(20) , Start char(15), Alltime smallint primary key, );将代码写入SQL查询分析器的SQL编辑窗体中,并运行可得创建的Busline表及其属性如图1-6:图1-6 Busline表格属性往表中加数据语句如下:insert into Buslinevalues('淮南','合肥','8:00','50');insert into Buslinevalues('淮南','蚌埠','8:30','59');insert into Buslinevalues('淮南','阜阳','7:30','60');insert into Buslinevalues('淮南','宿州','8:10','65');insert into Buslinevalues('淮南','芜湖','7:00','70');insert into Buslinevalues('淮南','安庆','9:00','71');insert into Buslinevalues('淮南','桐城','9:50','78');insert into Buslinevalues('淮南','亳州','8:50','80');insert into Buslinevalues('淮南','黄山','9:00','100');由以上可得一个表名为”Busline”的数据表就建成了如图1-7:2. 创建汽车表用Microsoft SQL 2000 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Bus(Type char(20), Maxpassenger smallint, Turn char (20) primary key, Remainder smallint, );将代码写入SQL查询分析器的SQL编辑窗体中,并运行可得数据空表如图1-8所示:创建的Bus表及其属性如下:往表中加数据语句如下:insert into Busvalues('大','50','0001','20')insert into Busvalues('大','50','0002','30') insert into Busvalues('大','45','0003','15')insert into Busvalues('中','35','0004','21')insert into Busvalues('中','35','0005','16')insert into Busvalues('小','25','0006','5')insert into Busvalues('小','25','0007','7')insert into Busvalues('小','25','0008','11')由以上可得一个表名为”Bus”的数据表就建成了如图1-9:3. 创建车票表用Microsoft SQL 2000 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Ticket(Sold smallint, Remainder smallint, Price smallint primary key, );将代码写入SQL查询分析器的SQL编辑窗体中,并运行可得数据空表如图2所示:创建的Ticket表及其属性如下图1-10:往表中加数据语句如下:insert into Ticketvalues('22','3','15')insert into Ticketvalues('19','6','16')insert into Ticketvalues('20','5','18')insert into Ticketvalues('30','15','26')insert into Ticketvalues('20','30','27')insert into Ticketvalues('28','6','15')insert into Ticketvalues('26','4','17')继续添加数据由以上可得一个表名为”Ticket”的数据表就建成了如图1-11:4. 创建乘客表用Microsoft SQL 2000 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Passenger(Pname char(10) primary key, Psex char(2), Pracial char(5), Psage smallint,);将代码写入SQL查询分析器的SQL编辑窗体中,并运行可得数据空表如图2所示:创建的Passenger表及其属性如下图1-12:往表中加数据语句如下:insert into Passengervalues('高健','男','汉','23')insert into Passengervalues('王小明','男','汉','21') insert into Passengervalues('安妮','女','汉','19')insert into Passengervalues('张凯','男','汉','21')insert into Passengervalues('王睿','女','汉','21')insert into Passengervalues('姚洁','女','汉','20')insert into Passengervalues('刘佳','女','汉','28')insert into Passengervalues('杨枫','男','汉','33')insert into Passengervalues('李勇','男','汉','29')insert into Passengervalues('王妮','女','汉','25')insert into Passengervalues('张云','男','汉','37')insert into Passengervalues('李露','女','汉','23')由以上可得一个表名为”Passenger”的数据表就建成了如图1-13:5创建Bbtp表用Microsoft SQL 2000 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Bbtp( Alltime smallint, Turn char (20), Price smallint, Pname char(10) primary key, foreign key (Alltime) references Busline(Alltime), foreign key (Price) references Ticket(Price), foreign key (Turn) references Bus(Turn),);将代码写入SQL查询分析器的SQL编辑窗体中,并运行可得数据空表如图2所示:创建的Bbtp表及其属性如下图1-14:往表中加数据语句如下:insert into Bbtpvalues('60','0004','15','高健')insert into Bbtpvalues('50','0005','16','王小明')insert into Bbtpvalues('70','0001','18','安妮')insert into Bbtpvalues('71','0007','15','张凯')insert into Bbtpvalues('78','0003','15','王睿')insert into Bbtpvalues('60','0006','16','姚洁')insert into Bbtpvalues('650','0002','16','刘佳')insert into Bbtpvalues('70','0004','18','杨枫')insert into Bbtpvalues('80','0001','18','李勇')insert into Bbtpvalues('65','0005','18','王妮')insert into Bbtpvalues('100','0004','18','张云')insert into Bbtpvalues('70','0001','16','李露')由以上可得一个表名为”Bbtp”的数据表就建成了如图1-15:3.3程序的构造方法及其实现因为长途汽车信息管理系统可以实现对不同信息的不同操作,程序中分别构造各个功能模块供信息操作使用,详细设计及主要代码如下:(1)登陆界面代码在此模式下通过输入管理员名及密码,以获取权限,进入各项操作的界面。package changtu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.io.*;public class denglu extends JFrame implements ActionListenerstatic JLabel jl=new JLabel("欢迎登陆汽车管理系统");static JLabel jl2=new JLabel();static JLabel jl3=new JLabel("姓名");static JLabel jl4=new JLabel("密码");static JButton jb1=new JButton("确定");static JButton jb2=new JButton("返回");static JTextField jt1=new JTextField();static JTextField jt2=new JTextField();static Opration op=new Opration();Statement st;public void Dl(Statement sta)this.st=sta;setSize(300,250);setVisible(true);setLayout(null);jl.setBounds(80,20,200,20);jl3.setBounds(60,60,50,20);jl4.setBounds(60,100,50,20);jl2.setBounds(100,140,200,20);jb1.setBounds(80,180,60,30);jb2.setBounds(160,180,60,30);jt1.setBounds(100,60,100,20);jt2.setBounds(100,100,100,20);add(jl);add(jl2);add(jl3);add(jl4);add(jt1);add(jt2);add(jb1);add(jb2);jb1.addActionListener(this);jb2.addActionListener(this);(2)主操作界面在此模式下,可以实现查询,插入,删除,及总查询等诸多功能。package changtu;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Opration extends JFrame implements ActionListenerstatic JLabel jl=new JLabel("请选择一种操作:");/定义标签static JRadioButton jc1=new JRadioButton("查询操作");/单选按钮static JRadioButton jc2=new JRadioButton("插入操作");static JRadioButton jc3=new JRadioButton("删除操作");static JRadioButton jc4=new JRadioButton("修改操作");static JButton jb1=new JButton("确定");/按钮static JButton jb2=new JButton("返回");static ButtonGroup bg=new ButtonGroup();public static int flag;static Check ch=new Check();public void xuanze()setTitle("操作选择");/设置界面内容setSize(300,270);/界面大小setLayout(null);/界面布局jl.setBounds(70,10,150,20);/设置位置大小jc1.setBounds(60,50,150,20);jc2.setBounds(60,90,150,20);jc3.setBounds(60,130,150,20);jc4.setBounds(60,170,150,20);jb1.setBounds(80,210,60,20);jb2.setBounds(160,210,60,20);jc1.setSelected(true);/设为选中bg.add(jc1);bg.add(jc2);bg.add(jc3);bg.add(jc4);add(jl);add(jc1);add(jc2);add(jc3);add(jc4);add(jb1);add(jb2);jc1.addActionListener(this);/加入事件监听jc2.addActionListener(this);jc3.addActionListener(this);jc4.addActionListener(this);jb1.addActionListener(this);jb2.addActionListener(this);setVisible(true);(3)汽车查询代码在此模式下输入汽车的某一项信息,可以获得汽车编号、汽车种类、载客量等信息,如输入汽车编号01,便可以显示01车的其他信息。package changtu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;import java.io.*;public class Qchepiao extends JFrame implements ActionListener Statement st=null;JTextArea ja=new JTextArea("编号 售票 剩余 已售n");JTextField jt=new JTextField();JRadioButton jc1=new JRadioButton("查询全部");JRadioButton jc2=new JRadioButton("部分查询");ButtonGroup bg=new ButtonGroup();JButton jb1=new JButton("查询");JButton jb2=new JButton("返回");JButton jb3=new JButton("退出");static Opration op=new Opration();public void Qcp(Statement sta) this.st=sta;/Statement语句传输setSize(400,300);setLayout(null);setVisible(true);/设置界面可见jc1.setBounds(20,20,80,20);jc2.setBounds(20,60,80,20);jt.setBounds(20,100,80,30);jb1.setBounds(30,150,60,30);jb2.setBounds(120,220,60,30);jb3.setBounds(230,220,60,30);ja.setBounds(120,20,250,200);bg.add(jc1);bg.add(jc2);add(jc1);add(jc2);add(jt);add(jb1);add(jb2);add(jb3);add(ja);jc1.addActionListener(this);jc2.addActionListener(this);jb1.addActionListener(this);jb2.addActionListener(this);jb3.addActionListener(this);(4)汽车插入、修改等代码在此模式下,我们可以轻松的实现对汽车的信息的修改,以及在增加班车后,实现插入该车的信息。package changtu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Ichepiao extends JFrame implements ActionListenerStatement st=null;JLabel jl1=new JLabel("编号");JLabel jl2=new JLabel("售票");JLabel jl3=new JLabel("剩余");JLabel jl4=new JLabel("已售");JLabel jl5=new JLabel();JTextField jt1=new JTextField();JTextField jt2=new JTextField();JTextField jt3=new JTextField();JTextField jt4=new JTextField();JButton jb1=new JButton("插入");JButton jb2=new JButton("返回");JButton jb3=new JButton("修改"); static Opration op=new Opration();public void Icp(Statement sta)this.st=sta;setLayout(null);setSize(300,300);setVisible(true);jl1.setBounds(20,20,80,20);jl2.setBounds(20,60,80,20);jl3.setBounds(20,100,80,20);jl4.setBounds(20,140,80,20);jt1.setBounds(100,20,40,20);jt2.setBounds(100,60,40,20);jt3.setBounds(100,100,40,20);jt4.setBounds(100,140,40,20);jl5.setBounds(100,180,100,20);jb1.setBounds(200,100,60,20);jb2.setBounds(200,140,60,20); jb3.setBounds(200,60,60,20);add(jl1);add(jl2);add(jl3);add(jl4);add(jl5);add(jt1);add(jt2);add(jt3);add(jt4);add(jb1);add(jb2);add(jb3);jb1.addActionListener(this);jb2.addActionListener(this);jb3.addActionListener(this);(5) 车票删除代码在此模式下,我们可以删除指定的无用的汽车信息,以便汽车信息的更新。package changtu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Dchepiao extends JFrame implements ActionListenerStatement st=null;JTextField jt1=new JTextField();JLabel jl1=new JLabel("删除的信息");JLabel jl2=new JLabel();JButton jb1=new JButton("删除");JButton jb2=new JButton("返回");static Opration op=new Opration();public void Dcp(Statement sta)this.st=sta;setSize(200,200);setLayout(null);setVisible(true);jl1.setBounds(60,20,100,20);jt1.setBounds(70,40,40,20);jl2.setBounds(40,80,140,20);jb1.setBounds(40,120,60,20);jb2.setBounds(110,120,60,20);add(jl1);add(jl2);add(jb1);add(jb2);add(jt1);jb1.addActionListener(this);jb2.addActionListener(this);public void actionPerformed(ActionEvent e)JButton jb=(JButton)e.getSource();ResultSet rs=null;if(jb=jb1)tryString st1="delete from chepiao where bianhao='"+jt1.getText()+"'or shoupiao='"+jt1.getText()+"'or shengyu='"+jt1.getText()+"'or yishou='"+jt1.getText()+"'"st.executeUpdate(st1); jl2.setText("删除车票信息成功"); jl2.setForeground(Color.red);catch(Exception e1) System.out.println(e); if(jb=jb2)dispose();/释放内存 op.xuanze();/调用Opration中xuanze方法3.4 数据库与Java程序的链接图1-16 数据库链接4设计结果与分析4.1设计结果截图(1)长途汽车信息管理系统登录界面编译程序,会出现如图5-1的登陆界面,管理员通过输入管理员姓名和密码,可以登录汽车管理系统。 图1-17 登陆界面(2)选择操作界面管理员通过此操作界面可以选择要实现的操作。 图1-18 操作界面(3)选择表界面通过单击查询操作进入这个界面,来选择要查询的信息。 图1-19选择表界面(4)查询界面 图1-20 查询界面(5) 部分查询界面 图1-21部分查询界面(6)修改、插入界面管理员可以通过该界面来实现插入,修改该系统的信息,如图5-6为插入汽车信息界面。 图1-22 修改、插入界面(7)删除界面管理员可以通过该界面,删除无用的信息。 图1-23删除界面4.2 设计结果分析(1)了解长途车站信息系统分析:如需求分析和开发工具选择,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的Java基本操作符、语句等。(2)画设计方案流程图并具体化:用流程图的形式展现基本编程思想。将流图中的大模块的具体实现思考清楚,并想好实现的代码。(3)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中将发现总体设计和模块思想会存在很多问题,需不断改进如何实现各函数功能,达到预期效果也将是一项繁复的工作。(4)代码的调试:在Java环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。(5)最后修饰:程序可以正确运行之后,在不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化,增强程序的新意与可行性。5小结这学期期中学校就特安排我们进行为期二周的数据库的课程设计制作,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。在此次长途汽车信息管理系统的开发过程中,遇到了许多的问题比如:数据库连接错误,代码、对象方法名错误等,但经过认真思考并在老师和同学的帮助下顺利完成了本次设计,本次课程设计有很多东西值得我思考并总结。通过本次课程设计,使我在制作过程中更加熟练的掌握数据库语言的构造方法及技巧,并且使我更加熟悉的掌握了Java语言的运用,帮助我复习巩固了Java语言及其功能,提高了我的动手能力和思维能力。并且从中学会了将数据库导入到程序系统中的方法,积攒了许多解决实际问题的宝贵经验长途汽车信息管理系统主要的实现了对线路信息、汽车信息、车票信息的查询删除和添加功能,用户在登陆界面后可以对其信息进行简单的操作,快速高效的完成人们乘车出行信息的记录,方便了人们的日常生活,这也是我本次课程设计制作的主要目的。最后,在这里郑重的感谢指导老师的帮助,让我得到了许多精彩的收获,也感谢学校提供给我们这次宝贵的实践机会,让我们可以在实践中充分锻炼逻辑思维、动手制作、查漏补缺的能力,理论与实践相结合,以此来提高自己的编程能