学院
课程设计报告
课程名称: 数据库系统原理与设计 设计题目: 长途汽车管理系统
系 别: 计算机科学与技术系
专 业: 计算机科学与计算专业 组 别: 第二组 起止日期: 2010年12月7日 ~ 2010 年 12月28日 指导教师: 周强
计算机科学与技术系二○一○年制
课程设计题目 组长 粱炎光 长途汽车信息管理系统 学号 2008210768 班级 08计科 系别 计算机科学与技术系 专业 计算机科学与技术专业 远军、王超、熊国富、雷 组员 指导教师 课程设计目的 课程设计所需环境 课程设计任务要求 周强 实现长途汽车管理系统的一些基本的功能,能够熟练地掌握SQL语句的用法,并且懂得如何团队协作开发程序 Windows xp系统、SQL server 2000、JDK和JCreator 要求包括汽车信息管理系统、票价信息管理系统、线路信息管理系统 课程设计工作进度计划及分工情况 序号 1 2 3 4 起止日期 工 作 容 分工情况 组长和组员共同完成 熊国富、远军负责此项 粱炎光负责此项 王超负责查询等操作界面,粱炎光负责系统登陆界面 雷,熊国富负责此项 所有人共同完成 远军负责此项 11 月29日—12月1日 确定组员分工情况、阐明系统的开发背景 12 月2日—12月3日 确定系统功能的基本描述以及需求分析 12 月4日—12月9日 ER图的设计、完成数据库创建 12 月10日—12月13日 12 月14日—12月17日 12 月18日—12月20日 12 月21日—12月26日 汽车管理系统系统的界面代码设计 汽车管理系统系统的功能代码设计 连接数据库、测试程序、以及调试程序 完成课程设计报告的填写与设计 5 6 7 教研室审核意见: 教研室主任签字: 年 月 日
目录
1 需求分析 ....................................................................... 4 1.1课程设计任务及要求 ........................................................................................................................... 4 1.2 课程设计思想 ...................................................................................................................................... 4 2 概念模型设计 ................................................................... 5 2.1 功能设计 ............................................................................................................................................... 5 2.2 长途汽车信息系统功能模块 .............................................................................................................. 6 2.3系统E_R图 ............................................................................................................................................ 7 3逻辑模型设计与优化 .............................................................. 7 4物理设计与实施 .................................................................. 8 5详细设计 ........................................................................ 8 5.1 登陆界面代码 ...................................................................................................................................... 8 5.2 主操作界面......................................................................................................................................... 11 5.3 汽车查询代码 .................................................................................................................................... 14 5.4 汽车插入、修改等代码 .................................................................................................................... 17 5.5 车票删除代码 .................................................................................................................................... 21 6 调试与操作说明 ................................................................ 23 6.1 登陆界面 ............................................................................................................................................. 23 6.2 选择操作界面 .................................................................................................................................... 23 6.3 选择表界面......................................................................................................................................... 24 6.4 查询界面 ............................................................................................................................................. 25 6.5 部分查询界面 .................................................................................................................................... 25 6.6 修改、插入界面 ................................................................................................................................ 25 6.7 删除界面 ............................................................................................................................................. 26 7设计心得 ....................................................................... 26 致 .............................................................................. 28 参考文献 ........................................................................ 28
1 需求分析
1.1课程设计任务及要求
长途汽车信息管理系统运用在汽车站部门的系统工具,方便此系统部门的工作人员的工作,该系统主要根据此部门的特点建立的,是记录和查询汽车站信息的的依据。早期的长途汽车站信息主要是人工记录和人工管理的,不仅不容易记录,而且还不容易保存。随着计算机的不断普及和软件系统的不断发展加上信息系统开发的迫切需求,计算机长途汽车站信息管理系统应运而生了。
随着市场经济的不断飞速发展,交通道路环境的不断改善,人们的出行次数不断增多,人口流动频繁,数量不断加大,车站信息量迅猛增长,长途汽车站信息管理系统在人们的日常生活中发挥着越来越重要的作用。本系统实现了汽车线路信息,汽车信息,票务信息的查询和管理,以满足人们的需求。 线路信息管理:
车站管理员可以在线路信息管理模块对车站线路信息进行管理。管理员首先建立汽车线路信息数据库,输入原始的线路信息,当有新的线路需要添加或者需要对已有的线路信息进行修改,删除的时候,管理员就可以进行相应的操作。管理员也可以通过本模块查询到所有需要查询的线路的详细信息。 汽车信息管理:
管理员可以在汽车信息管理模块实现对汽车信息的管理。管理员首先应该建立汽车信息数据库,输入原始的数据信息,当有新的汽车信息的时候或者管理员需要修改某个汽车的相关信息以及想要删除某个汽车信息的时候,就可以完成相应的操作。管理员也可以在整个数据库中查寻相关汽车信息。
车票信息管理:
管理员可以在车票管理模块实现对线路车票信息的管理。管理员根据相应的汽车线路信息来设置相应的车票详细信息。当有新的线路添加的时候,要把相应的车票信息添加到数据库中,管理员还可以对某条线路的车票信息进行修改,删除和查询操作。
1.2 课程设计思想
(1)充分利用所学过的数据库的相关知识建立长途汽车管理系统所需的数据库。
(2)进行详细的功能设计,在Java中利用ODBC连接数据库技术对数据库中数据进行操作,并能进行多表之间的与查询操作。
2 概念模型设计
2.1 功能设计
在Java中利用ODBC访问技术操作数据库,建立到数据库中的映射类,在对话框类过引用映射类完成对数据库的操作。
程序分为登陆界面,选择界面,线路信息界面,汽车信息界面,车票信息这几个主体界面。使用时应先知道管理员和密码,登陆进入系统主菜单界面,里面包括线路信息,汽车信息,车票信息,退出程序菜单选项。所需时间等,可以对它们进行添加,查询,删除,其中线路信息界面包括包括出发地、目的地、出发时间、修改,返回主菜单的操作;汽车信息和车票信息的界面与其类似。
需要特别说明的是,当对数据进行操作时,在查询框输入提示数据容,对话框的表中和提示栏中都会出现所查询的数据,我们可以在提示栏中对数据进行删除和修改操作。
2.2 长途汽车信息系统功能模块
图 2-1
2.3系统E_R图
图 2-2
3逻辑模型设计与优化
管理员登陆:
Manager(username,passwd) 汽车表:
Qiche(busno,zhonglei,zaike) 车票表:
Chepiao(ticketno,shoupiao,busno,shengyu,yishou,piaojia) 线路表:
Xianlu(mudidi,chufadi,chushi,yongshi) 行驶表:
Xingshi(mudidi,busno,licheng)
4物理设计与实施
表1: 管理员登陆表 字段 Username Passwd 表2: 路线表 字段 chufadi mudidi shijian busno 表3: 汽车表 字段 busno zhonglei zaike 表4: 行驶表 字段 busno chufadi mudidi licheng 字段 busno ticketno shoupiao yishou shengyu piaojia 字段名称 汽车号 出发地 目的地 里程 字段名称 汽车号 车票号 售票 已售 剩余 票价 数据类型 Char(20) Char(20) Char(20) Char(20) 数据类型 Char(20) Char(20) Char(20) Char(20) Char(20) Char(20) 是否为空 Not null Not null Not null Not null 是否为空 Not null Not null Not null Not null Not null Not null 主码 主码 是 外码 外码 是 备注 备注 字段名称 汽车号 类别 载客 数据类型 Char(20) Char(20) Char(20) 是否为空 Not null Not null Not null 主码 是 外码 备注 字段名称 出发地 目的地 时间 汽车号 数据类型 Char(20) Char(20) time Char(20) 是否为空 Not null Not null Not null Not null 主码 是 是 外码 是 备注 字段名称 用户名 密码 数据类型 是否为空 主码 是 外码 备注 Varchar(20) Not null Varchar(20) Not null 表5: 车票表
5详细设计
5.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 ActionListener { static 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);
public static void main(String args[]) { }
public void actionPerformed(ActionEvent e)
if(s.equals(jb1)) {
Object s=e.getSource(); ResultSet rs; try{ }
catch(Exception e){ }
{
Connection
con=DriverManager.getConnection(\"jdbc:odbc:changtu\
try
System.out.println(\"连接失败!\"); return;
Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
\"sa\
Statement stmt=con.createStatement();
new denglu().Dl(stmt); }
catch(Exception e){
System.out.println(e); }
{ }
if(s.equals(jb2)) { } } }
System.exit(0); try{
rs=st.executeQuery(\"select xingmin,mima from manager\"); {
String a=rs.getString(\"xingmin\"); String b=rs.getString(\"mima\");
if(a.equals(jt1.getText())&&b.equals(jt2.getText())) { }
jl2.setText(\"或密码错误!\"); jl2.setForeground(Color.red); }
catch(Exception e1){
System.out.println(e); }
dispose(); op.opration();
while(rs.next())
}
5.2 主操作界面
在此模式下,可以实现查询,插入,删除,及总查询等诸多功能。 package changtu; import java.awt.*; import javax.swing.*; import java.awt.event.*;
public class Opration extends JFrame implements ActionListener
{
static 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);
public int getState(){ }
public static void opration() { }
public void actionPerformed(ActionEvent e) {
Object s=e.getSource();//事件源 if(s.equals(jb1)) {
if(jc1.isSelected()){ }
else if(jc2.isSelected()){
flag=2; setVisible(false); flag=1; setVisible(false); ch.ch();
new Opration().xuanze();
return flag;
}
} { } }
}
ch.ch();
else if(jc3.isSelected()){ }
else if(jc4.isSelected()){ }
flag=4; setVisible(false); flag=3; setVisible(false);
ch.ch();
ch.ch();
if(s.equals(jb2))
System.exit(0);
5.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\");
{
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); 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)
}
jb2.addActionListener(this); jb3.addActionListener(this);
public void actionPerformed(ActionEvent e)
{
Object s=e.getSource(); ResultSet rs=null; String a1; if(s.equals(jb1)) {
if(jc1.isSelected()) {
try{
rs=st.executeQuery(\"select
bianhao,shoupiao,shengyu,yishou
from chepiao\");
ja.setText(\"\");
ja.setText(\"编号 售票 剩余
while(rs.next()){
String a=rs.getString(\"bianhao\"); String b=rs.getString(\"shoupiao\"); String c=rs.getString(\"shengyu\"); String d=rs.getString(\"yishou\");
已售\\n\");
ja.append(a+\"\"+b+\"\"+c+\"\"+d+\"\\n\"); } }
catch(Exception e1){
System.out.println(e); } {
try{
ja.setText(\"\"); }
if(jc2.isSelected())
ja.setText(\"编号 售票
剩余 已售\\n\");
rs=st.executeQuery(\"select
shengyu='\"+jt.getText()+\"'or
while(rs.next()){
String a=rs.getString(\"bianhao\"); String b=rs.getString(\"shoupiao\"); String c=rs.getString(\"shengyu\"); String d=rs.getString(\"yishou\");
bianhao,shoupiao,shengyu,yishou from chepiao where bianhao='\"+jt.getText()+\"' or shoupiao='\"+jt.getText()+\"'or yishou='\"+jt.getText()+\"'\");
}
if(s.equals(jb2)) { }
if(s.equals(jb3)) { } } }
System.exit(0); dispose(); op.xuanze();
ja.append(a+\"\"+b+\"\"+c+\"\"+d+\"\\n\"); }
catch(Exception e1){
} } }
System.out.println(e);
5.4 汽车插入、修改等代码
在此模式下,我们可以轻松的实现对汽车的信息的修改,以及在增加班车后,实现插入该车的信息。
package changtu; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*;
public class Ichepiao extends JFrame implements ActionListener {
Statement 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(\"修改\"); 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);
static Opration op=new Opration();
}
jt4.setBounds(100,140,40,20); jl5.setBounds(100,180,100,20); jb1.setBounds(200,100,60,20); jb2.setBounds(200,140,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);
jb3.setBounds(200,60,60,20);
public void actionPerformed(ActionEvent e)
{
Object s=e.getSource(); if(s.equals(jb1)) { try { }
String
st1=\"insert
into
chepiao
values('\"+jt1.getText()+\"','\"+jt2.getText()+\"','\"+jt3.getText()+\"','\"+jt4.getText()+\"')\";
st.executeUpdate(st1); jl5.setText(\"插入成功\"); jl5.setForeground(Color.red);
catch(Exception e1){
System.out.println(e); } }
if(s.equals(jb2)) { dispose(); }
if(s.equals(jb3)) {
if(jt2.getText()!=null&&!\"\".equals(jt2.getText()))//判断文本非空 try {
String str2=\"update chepiao set shoupiao='\"+jt2.getText()+\"'
op.xuanze();
where bianhao='\"+jt1.getText()+\"'\";
st.executeUpdate(str2);//更新数据库 }
catch(Exception e1){
System.out.println(e); }
if(jt3.getText()!=null&&!\"\".equals(jt3.getText()))
try {
String str2=\"update chepiao set shengyu='\"+jt3.getText()+\"'
where bianhao='\"+jt1.getText()+\"'\";
st.executeUpdate(str2); }
catch(Exception e1){
System.out.println(e); }
if(jt4.getText()!=null&&!\"\".equals(jt4.getText()))
try {
} }
String str2=\"update chepiao set yishou='\"+jt4.getText()+\"'
where bianhao='\"+jt1.getText()+\"'\";
st.executeUpdate(str2); }
catch(Exception e1){
System.out.println(e); } }
jl5.setText(\"修改车票信息成功\");
jl5.setForeground(Color.blue);//设置字体颜色 this.dispose();
5.5 车票删除代码
在此模式下,我们可以删除指定的无用的汽车信息,以便汽车信息的更新。 package changtu; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*;
public class Dchepiao extends JFrame implements ActionListener {
Statement 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) {
try {
String st1=\"delete from chepiao where bianhao='\"+jt1.getText()+\"'or
shengyu='\"+jt1.getText()+\"'or
shoupiao='\"+jt1.getText()+\"'or yishou='\"+jt1.getText()+\"'\";
}
st.executeUpdate(st1); jl2.setText(\"删除车票信息成功\") ; }
catch(Exception e1){
System.out.println(e); }
jl2.setForeground(Color.red);
} }
if(jb==jb2) { }
dispose();//释放存
op.xuanze();//调用Opration中xuanze方法
6 调试与操作说明
6.1 登陆界面
编译程序,会出现如图5-1的登陆界面,管理员通过输入管理员和密码,可以登录汽车管理系统。
图5-1:登陆界面
6.2 选择操作界面
管理员通过此操作界面可以选择要实现的操作。
图5-2:操作界面
6.3 选择表界面
通过单击查询操作进入这个界面,来选择要查询的信息。
图5-3:选择表界面
6.4 查询界面
图5-4:查询界面
6.5 部分查询界面
图5-5:部分查询界面
6.6 修改、插入界面
管理员可以通过该界面来实现插入,修改该系统的信息,如图5-6为插入汽车信息界面。
图5-6:修改、插入界面
6.7 删除界面
管理员可以通过该界面,删除无用的信息。
图5-7:删除界面
7设计心得
这学期刚开学学校就特安排我们进行为期二周的数据库的课程设计实习,并安排了指导老师帮助辅导,让我们在规化、严谨化、实用化上面有了很大进展。
在此次长途汽车信息管理系统的开发过程中,遇到了许多的问题比如:数据库连接错误,代码,对象方法名搞不清,但经过认真思考并在老师和同学的帮助下顺利完成了本次设计,这次设计有很多东西值得我们思考并总结。
开发过程大体可分为以下几个步骤:
(1)了解长途车站信息系统分析:如需求分析和开发工具选择,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的Java基本操作符、语句
等。
(2)画设计方案流程图并具体化:用流程图的形式展现基本编程思想。将流图中的大模块的具体实现思考清楚,并想好实现的代码。
(3)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。
(4)代码的调试:在Java环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。
(5)最后修饰:程序可以正确运行之后,在不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化,增强程序的新意与可行性。
以前虽然学过Java语言,但通过这次课程设计,使我更加熟悉的掌握了Java语言的运用。帮助我熟悉了更多Java语言的功能(连接数据库),提高了我的动手能力,从中学到了许多解决实际问题的宝贵经验.使我对自己更有自信,对编程的兴趣更深了。
通过这次课程设计,使我们更加成熟的掌握了Java语言的运行。帮助我们熟悉了更多的Java语言功能,提高了我们的动手能力。
最后,在这里重的感指导老师的帮助,让我得到了许多意想不到的收获。也感学校提供给我们这次宝贵的实践机会,让我们可以动手动脑,大大提高了个人的能力和素质。
致
经过这一学期的系统学习,我们对数据库有了一定的了解,并且学会了一些常用的操作方法以及熟练应用SQL语言。在这次的课程设计中,我们都有很大的收益但同时也遇到了很多的困难,不过最后我们还是完成了任务。这当中与我们团队的努力与老师的耐心指导是分不开的。由于我们本身知识的有限性,在遇到困难时,我们不得不上网搜索相关知识点,解决我们的困难。老师的讲解与建议,也给了我们不少的帮助。我们课程设计的完成,主要归功于我们团队的不断努力以及老师的耐心指导。所以我们在这儿要感给我们帮助的同学及我们团队的每个成员和老师。
参考文献
[1]万常选 廖国琼 吴京慧 喜平,《数据库系统原理与设计》:清华大学, 2009
[2]王珊 萨师煊,《数据库系统概论》:高等教育 [3]黄晓东等,《Java课程设计案例精编》中国水利水电
指导教师评语: 指导教师签名: 年 月 日 成 绩
教研室审核意见: 教研室主任签字: 年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务