1、学号2023-2023学年 第一学期120数据库系统概论课程设计报告题目:长途汽车信息管理系统专业:计算机科学与技术班级:班姓名:指导教师:成绩:计算机与信息工程系2023年 10月 12 日目录1设计内容及规定11.1设计内容11.2设计任务及具体规定12原理及分析22.1需求分析22.2系统功能简介22.3程序框图33设计过程和程序代码53.1数据库表格的设计概述53.2数据库表格的实现过程63.3程序的构造方法及其实现153.4 数据库与Java程序的链接244设计结果与分析254.1设计结果截图254.2 设计结果分析285小结29参考文献30致谢31附录:源程序321设计内容及规定1
2、.1设计内容本次课程设计名称为长途汽车信息管理系统,用户登录后重要实现对线路信息,汽车信息,售票信息,乘客信息进行基本操作的功能。该系统功能重要涉及以下几个模块:(1)充足运用所学过的数据库的相关知识建立长途汽车信息管理系统所需的数据库。(2)对线路信息(涉及出发地、目的地、出发时间、所需时间等)汽车信息(最大载客量、汽车类型、剩余座位等)售票信息(涉及售票情况、票价)乘客信息(涉及姓名、年龄、性别等)的查询、添加和删除操作。(3)进行具体的功能设计后,在Java中运用JDBC连接数据库技术对数据库中数据进行操作,并能进行多表之间的链接与查询操作。1.2设计任务及具体规定(1)设计任务:长途汽
3、车信息管理系统运用在汽车站部门的系统工具,方便此系统部门的工作人员的工作,该系统重要根据此部门的特点建立的,是记录和查询汽车站信息的的依据。随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,长途汽车站信息管理系统在人们的平常生活中发挥着越来越重要的作用。本系统实现了汽车线路信息,汽车信息,票务信息的查询和管理,以满足人们的需求。(2)具体规定:车站管理员可以在线路信息管理、汽车信息管理等模块对车站线路信息、票价信息、乘客信息等进行管理。管理员一方面建立相应模块的信息数据库,输入原始的线路、汽车、车票、乘客信息,当有新数据
4、需要添加或者需要对已有的信息进行修改,删除的时候,管理员就可以进行相应的操作。管理员也可以通过本模块查询到所有需要查询的线路、汽车、车票、乘客的具体信息。2原理及分析2.1需求分析长途汽车信息管理数据库系统是面向所有汽车的数据管理系统,其目的是使乘车有序化,规范化,简朴化,易于车站人员的管理,查询。本系统重要涉及以下几个模块:乘客信息、汽车信息、线路以及车票的信息这四个功能模块基本实现设计本系统的目的,从而可以进一步满足车站对乘客乘车管理的规定。长途汽车信息管理系统运用在汽车站和火车站等车站部门的系统工具,方便此系统部门的工作人员的工作,该系统重要根据此部门的特点建立的,是记录和查询汽车站信息
5、的的依据。初期的长途汽车站信息重要是人工记录和人工管理的,不仅不容易记录,并且还不容易保存。随着计算机的不断普及和软件系统的不断发展加上信息系统开发的迫切需求,计算机长途汽车站信息管理系统应运而生了。随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,长途汽车站信息管理系统在人们的平常生活中发挥着越来越重要的作用。本系统实现了汽车线路信息,汽车信息,票价信息的查询和管理,满足人们的需求。2.2系统功能简介在Java中运用ODBC访问技术操作数据库,建立到数据库中的映射类,在对话框类中通过引用映射类完毕对数据库的操作。程序分
6、为登陆界面,选择界面,线路信息界面,汽车信息界面,车票信息这几个主体界面。使用时应先知道管理员帐号和密码,登陆进入系统主菜单界面,里面涉及线路信息,汽车信息,车票信息,退出程序菜单选项。所需时间等,可以对它们进行添加,查询,删除,其中线路信息界面涉及涉及出发地、目的地、出发时间、修改,返回主菜单的操作;汽车信息和车票信息的界面与其类似。需要特别说明的是,当对数据进行操作时,在查询框内输入提醒数据内容,对话框的表中和提醒栏中都会出现所查询的数据,我们可以在提醒栏中对数据进行删除和修改操作。2.3程序框图(1)数据库ER图线路信息图:线路信息出发地出发时间行驶总的总时间目的地图1-1 线路信息图汽
7、车信息图:汽车信息最大的载客量汽车的类型剩余座位班次编号图1-2 汽车信息图车票信息图:车票信息售票情况车票查询打印相应的车票图1-3 车票信息图乘客信息图:乘客信息姓名年龄民族性别图1-4 乘客信息图(2)长途汽车信息管理系统功能模块图 图1-5 系统功能模块图 3设计过程和程序代码3.1数据库表格的设计概述1实体类型结构汽车线路(出发地,目的地,出发时间,行驶的总时间)汽车(汽车类型,班次,最大载客数,剩余座位)车票(已买票数,剩余票数,票价)乘客(姓名,年龄,性别,民族)2联系类型结构乘坐(汽车班次,类型)供应(数量)行驶(线路)3逻辑设计阶段根据ER模型转换成关系模型的规则,可把上述E
8、R图转换成5个关系模式,从而实现对乘客验证ER模型向关系数据模型的转换,具体如下:汽车线路(出发地,目的地,出发时间,行驶的总时间)汽车(汽车类型,汽车班次,最大载客数,剩余座位数)车票(已买票数,剩余票数,票价)乘客(姓名,年龄,性别,民族)乘坐(所需时间,汽车班次,票价,乘客姓名)冗余问题检查:在各关系模式中,可得出每个关系的属性值都是不可分的,因此各关系模式都是规范化关系;又可从以上各关系模式中可得每个属性都不传递依赖于各关系模式的候选键,且转换后各个属性值的数据并没有丢失,数据共享率高,所以在ER模型向关系模式转化时不存在冗余问题。3.2数据库表格的实现过程1. 创建汽车线路表用Mic
9、rosoft SQL 2023 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 Busli
10、nevalues(淮南,蚌埠,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(淮南,黄
11、山,9:00,100);由以上可得一个表名为”Busline”的数据表就建成了如图1-7:2. 创建汽车表用Microsoft SQL 2023 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 Busval
12、ues(大,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. 创建车票表用M
13、icrosoft SQL 2023 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 Ticketval
14、ues(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 2023 Server数据库系统的Transact-SQL语句定义创建这个表,程序如下:create table Passenger(Pname char(10) primary ke
15、y, 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 Passenger
16、values(王睿,女,汉,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)由以上可得一个表名为”Passen
17、ger”的数据表就建成了如图1-13:5创建Bbtp表用Microsoft SQL 2023 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) r
18、eferences 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(
19、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程序的构造方法及其实现由于长途汽车信息管理系统可以实现对
20、不同信息的不同操作,程序中分别构造各个功能模块供信息操作使用,具体设计及重要代码如下:(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(欢迎登陆汽车管理系统);s
21、tatic 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 vo
22、id 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,10
23、0,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
24、 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 JBut
25、ton 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.setBou
26、nds(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(t
27、his);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.*
28、;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
29、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
30、.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.addActionListen
31、er(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(编号);JLa
32、bel 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 J
33、Button(修改); 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,
34、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.addAction
35、Listener(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;JTextFiel
36、d 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(
37、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=j
38、b1)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()
39、;/调用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)修改、插入界面管理员可以通过该界面来实现插入,修改该系统的信息,
40、如图5-6为插入汽车信息界面。 图1-22 修改、插入界面(7)删除界面管理员可以通过该界面,删除无用的信息。 图1-23删除界面4.2 设计结果分析(1)了解长途车站信息系统分析:如需求分析和开发工具选择,功能分派。思考要实现整个程序大体需要的几个模块和其中用到的Java基本操作符、语句等。(2)画设计方案流程图并具体化:用流程图的形式展现基本编程思想。将流图中的大模块的具体实现思考清楚,并想好实现的代码。(3)编辑程序代码:这是一个至关重要复杂并且需要反复修改的环节,在此环节中将发现总体设计和模块思想会存在很多问题,需不断改善如何实现各函数功能,达成预期效果也将是一项繁复的工作。(4)代码
41、的调试:在Java环境下输入代码并进行调试和对的运营。在调试过程中会碰到很多需要精化的地方,需要十足的耐心与细心,不断改善完善程序。(5)最后修饰:程序可以对的运营之后,在不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观美丽,操作更人性化,增强程序的新意与可行性。5小结这学期期中学校就特安排我们进行为期二周的数据库的课程设计制作,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。在本次长途汽车信息管理系统的开发过程中,碰到了许多的问题比如:数据库连接错误,代码、对象方法名错误等,但通过认真思考并在老师和同学的帮助下顺利完毕了本次设计,本次课程设计有很多东西值得我思考并总结。通过本次课程设计,使我在制作过程中更加纯熟的掌握数据库语言的构造方法及技巧,并且使我更加熟悉的掌握了Java语言的运用,帮助我复习巩固了Java语言及其功能,提高了我的动手能力和思维能力。并且从中学会了将数据库导入到程序系统中的方法,积攒了许多解决实际问题的宝贵经验长途汽车信息管理系统重要的实现了对线路信息、汽车信息、车票信息的查询删