车辆管理信息系统Java课程设计.docx
《车辆管理信息系统Java课程设计.docx》由会员分享,可在线阅读,更多相关《车辆管理信息系统Java课程设计.docx(40页珍藏版)》请在冰豆网上搜索。
车辆管理信息系统Java课程设计
合肥学院
计算机科学与技术系
课程设计任务书
2011~2012学年第一学期
课程
JAVA语言课程设计
课程设计名称
车辆管理信息系统
专业班级
指导教师
2011年9月
一、需求分析
车辆管理信息系统这一软件的设计主要是针对我们日常生活中车辆以及与车辆相关的信息的管理与查询和修改。
本软件所要做的就是对与车辆有关的信息包括司机信息的管理、车辆信息的管理、运营信息的管理、车辆维修信息的管理、事故信息的管理.
软件在功能上需实现:
1-1功能分析图
1)有关司机信息的管理,有信息的新增,修改及查询功能。
司机基本信息包括的数据项有:
司机姓名、司机性别、出生日期、家庭住址、初次领证时间、执照号码、准驾车型、有效期起始时间、有效期结束时间等等。
2)车辆信息的管理,有信息的新增,查询及修改功能。
车辆基本信息包括的数据项有:
车号、类型、车主、发动机号、车驾号、厂牌型号、车辆总质量、核定载客、登记时间、发证时间、颜色、主要司机等等。
3)运营信息的管理,有输录,查询与修改功能。
运营信息包括的数据项有:
车号、司机姓名、运营开始时间、运营结束时间、运营公里、耗油量等等.
4)车辆维修信息的管理,有输入,查询及修改功能。
车辆维修信息包括的数据项有:
车牌号、维修时间、维修单位、维修内容、维修费用、配件、备注等等。
5)事故信息的管理,有输入,查询功能。
事故信息包括的数据项有:
车牌号、司机姓名、事故时间、事故地点、事故原因、对方车号、对方单位、处理方式、处理金额、备注等
二、设计
1—2功能设计图
1.功能设计
本软件的要求的功能为:
1)有关司机各种信息的新增,修改及查询。
2)车辆信息的新增,查询及修改。
3)运营信息的输录,查询与修改。
4)车辆维修信息的输入,查询及修改。
5)事故信息的输入,查询。
编写软件对以上的功能有着较好的实现.除此之外我们还增加了用户登录和帮助模块,必须在登录状态下才可以进行操作,用来解决对信息的保护等相关方面的问题,帮助模块主要提示程序的功能。
在其他的附加功能方面提供了在软件运行的同时显示了当前的时间。
2.数据库设计
数据库方面使用的是SqlServer2000,在数据库的相关功能方面主要通过Sql语言实现的主要是数据的录入、查询和修改。
3.详细设计
车辆管理信息系统主要是对信息数据实现管理的一款软件,所以本软件的算法较为简单,主要是界面的制作以及数据库方面的相关操作。
软件设计的重要之处在于对软件模型的分析与设计.这次的设计我们采用的是分层的设计,即本软件我们共设计为三层,第一层为登陆界面,是用户打开软件的第一个界面;第二层为系统界面,用户可以在此选择自己的希望处理的信息种类;第三层则为功能实现层,用户选择对信息进行何种处理.
软件共有17个类,相关的类名和实现的功能如下:
Control:
系统的主类,车辆管理系统的主界面
enter:
登录界面的类,包括用户名和密码的输入,登录后拥有管理员权限
Dao:
实现对数据库的语言操作
Driver:
司机基本信息界面的设计及添加、修改、查询功能的调用
Carmessage:
车辆信息界面的设计及添加、修改、查询功能的调用
Carbusiness:
运营信息界面的设计及添加、修改、查询功能的调用
carrepair:
车辆维修信息界面的设计及添加、修改、查询功能的调用
caraccident:
事故信息界面的设计及输入、查询操作的调用
BaseDao:
通过longHaul方法进行数据库的修改,插入
Help:
帮助界面的设计
Today:
获取当前系统时间并输出
JDBC:
数据库驱动
Resultdriver:
司机信息查询结果的输出
Resultcarmess:
车辆信息查询结果的输出
Resultbusi:
运营信息查询结果的输出
Resultrepair:
车辆维修信息查询结果的输出
resultacc:
事故信息查询结果的输出
4.技术支持
本软件的设计主要是界面的规划与设计和各个类的实现与连接(如上图)。
在数据的录入与查询方面还有与数据库的连接以及相关功能的实现.在界面的规划上主要采用的是BorderLayout布局以及GridBagLayout布局,这是因为本软件涉及到得数据种类和数据类型较多,采用上述两种界面可以使数据的录入及查询得到很好的排列,从而方便用户使用。
在类的连接方面主要是对按钮组件添加监视器,经过对相关事件源以及触发事件的实现,从而对类实现调用及连接.数据库方面本软件使用的是sqlserver2000,在数据库的相关功能方面本软件实现的主要是数据的录入、查询和修改。
1—3Swing中JButton的使用
与之前学习Java时不一样的是,课程设计中用到了Swing。
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面.工具包中所有都是以swing作为名称,例如javax。
swing,javax.swing。
event。
Swing允许选择程序的图形界面风格常用的有java风格,windows风格等.下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。
try{UIManager.setLookAndFeel(
UIManager。
getCrossPlatformLookAndFeelClassName());}
catch(Exceptione){}
常用的顶级容器:
JFrame(框架):
表示主程序窗口
JDialog(对话框):
每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):
在浏览器内显示一个小程序界面
一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格。
窗格也可以看作是一种面板,但它是框架的一个组成部分。
组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板
publicstaticvoidmain(String[]args){JFrameframe=newJFrame(”SwingApplication");
JPanelpanel1=newJPanel();
frame。
getContentPane()。
add(panel1,BorderLayout.CENTER);
.。
。
..。
//
添加其他组件frame。
pack();frame。
setVisible(true);}
三、调试及测试
1、调试过程中遇到的主要问题及解决方法
我们这次课程设计最主要的问题是做界面的美化,主要用到网格布局和边界布局,除此之外因为是做一个系统所以还要求与数据库进行连接。
1)在运行程序时遇到过很多问题,例如图片的加载有问题.主要是图片的名称以及图片的格式问题。
2)在程序遇到的问题是对JAVA的数据库操作了解不够,通过参考书籍编写了BASEDAO这个类并调用了里面的longHaul方法来实现了数据的修改和插入。
在对各项信息进行添加、修改时,是通过“确定”按钮来判别是否对数据库进行操作的,系统无法识别确定后进行的操作时添加或是修改,因此,通过定义一个标志并对标志赋不同的值来识别“确定"的操作时添加还是修改.
3)还有的问题就是在数据库连接时出现的问题,出现的问题主要有数据库建立的失败,还有就是在数据库连接的时候,加载驱动的失败等。
例如出现数据库加载失败的有一个原因就是,在建立的数据库用户登陆时,拥有个用户安全性问题,我们就需要对其验证密码进行设置,可以为空,也可以不为空。
在Java程序中一定要保证用数据库户名及其用户密码是一致的。
那样就不容易出错了。
2、对程序及所完成系统进行测试
本软件使用前需先配置环境变量,我们主要使用的环境是在eclipse下执行,需要在电脑上安装jdk—6u1-windows-i586-p并设置相应的路径。
在classpath中设置JDBC驱动的路径和程序的路径,并在数据库中新建与程序中允许登陆的用户名相同的用户,该用户需具有所有权限。
运行主类control即可进入主界面,地址是127。
0.0.1,用户名是kokone,这两者是默认的。
登陆密码为123456,登陆后用户可根据自己需要进行各项操作.由于编写时间较短,未对用户输入格式进行相关限制。
所以在输入信息时建议用户按正确的方式输入。
1)运行control后出现的主界面
2)点击登录并输入密码
3)分别点击注销和退出
4)司机信息的添加和查询
5)车辆信息的添加和查询
6)运营信息的添加和查询
7)车辆维修信息的添加和查询
8)车辆事故的添加和查询
四、总结和体会
这次课程设计我做的是章节自测系统,主要是服务于学生进行阶段性自测和练习。
系统分为练习和测试两部分,每一部分又各分若干专题。
系统中采用的技术主要有:
JDBC数据库连接技术、和MVC三层架构利用MyEclipse集成开发环境。
虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决.这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。
我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。
事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。
开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。
所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化.我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。
通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程.
五、参考文献
[1]吕凤羽、马皓《JAVA程序设计》清华大学出版社
[2]耿祥义《JAVA课程设计》清华大学出版
[3]黄小东《Java课程设计案例精编》中国水利水电出版社
[4]印旻《Java与面向对象程序设计》清华大学出版社
六、附录
主要源程序:
主程序control:
importjava。
awt.*;
importjava.awt.event。
*;
importjavax。
swing。
*;
importjavax。
swing。
event。
*;
importjava。
io。
*;
import。
*;
importjava.util.*;
importjava。
util.Date;
importjava。
sql.*;
importjava.applet。
Applet;
importjava。
*;
publicclasscontrolextendsJFrameimplementsActionListener
{
publicstaticImageicon;//程序图标
publicstaticJLabelstatus;
publicstaticJButtonb1,b2,b3,b4,b5,b6,b7,b8;
JLabeltime0,time1,time2,time3;
//建立菜单
JMenuBarjmenubar=newJMenuBar();
//建立菜单组
JMenustartmenu=newJMenu(”开始");
//建立菜单项
publicstaticJMenuItemb7item=newJMenuItem("登录");
publicstaticJMenuItemb1item=newJMenuItem("司机信息管理”);
publicstaticJMenuItemb2item=newJMenuItem(”车辆信息管理");
publicstaticJMenuItemb3item=newJMenuItem(”运营信息管理”);
publicstaticJMenuItemb4item=newJMenuItem(”车辆维修信息管理”);
publicstaticJMenuItemb5item=newJMenuItem(”事故信息管理”);
publicstaticJMenuItemb6item=newJMenuItem("注销");
publicstaticJMenuItemb8item=newJMenuItem(”退出");
JMenuhelpmenu=newJMenu("帮助”);
JMenuItemhelpitem=newJMenuItem(”帮助”);
//Graphicsg;
//框架的大小
Dimensionfacesize=newDimension(1000,700);
JPaneldownpanel,timepanel;
GridBagLayoutgridbag;
GridBagConstraintsgridbagcon;
publiccontrol()
{
Containercontentpane=getContentPane();//一般的AbstractWindowToolkit(AWT)
//容器对象是一个可包含其他AWT组件的组件。
contentpane。
setLayout(newBorderLayout());
//添加菜单栏
startmenu。
add(b7item);
startmenu。
add(b1item);
startmenu.add(b2item);
startmenu。
add(b3item);
startmenu.add(b4item);
startmenu。
add(b5item);
startmenu。
add(b6item);
startmenu。
add(b8item);
jmenubar.add(startmenu);
helpmenu。
add(helpitem);
jmenubar。
add(helpmenu);
setJMenuBar(jmenubar);
//初始化时令停止服务按钮不可用
b1item。
setEnabled(false);
b2item.setEnabled(false);
b3item。
setEnabled(false);
b4item.setEnabled(false);
b5item。
setEnabled(false);
//为菜单栏添加事件监听
b7item。
addActionListener(this);
b1item.addActionListener(this);
b2item。
addActionListener(this);
b3item。
addActionListener(this);
b4item.addActionListener(this);
b5item.addActionListener(this);
b6item.addActionListener(this);
b8item。
addActionListener(this);
helpitem.addActionListener(this);
status=newJLabel(”WELCOME”);
status。
setFont(newFont(”宋体",Font。
BOLD,20));//设置标签中的文字为宋体、粗体、14号
status。
setForeground(newColor(100,0,255));//设置标签中的文字为红色
status.setHorizontalAlignment(SwingConstants.CENTER);//设置标签中的文字居中显示
b1=newJButton("司机信息管理”);
b1。
setEnabled(false);
b2=newJButton(”车辆信息管理”);
b2.setEnabled(false);
b3=newJButton("运营信息管理");
b3。
setEnabled(false);
b4=newJButton("车辆维修信息管理”);
b4。
setEnabled(false);
b5=newJButton(”事故信息管理");
b5.setEnabled(false);
b8=newJButton(”登录”);
b6=newJButton("注销”);
b6。
setEnabled(false);
b7=newJButton("退出");
time0=newJLabel();
time0.setFont(newFont(”宋体”,Font.BOLD,12));
time0.setText("今天是:
");
time1=newJLabel();
time1。
setFont(newFont(”宋体”,Font。
BOLD,12));
time1。
setForeground(newColor(120,1,120));//设置标签中的文字颜色
time1。
setHorizontalAlignment(SwingConstants。
CENTER);//设置标签中的文字居中显示
time1。
setText(Today.getDateOfShow());
time2=newJLabel();
time2。
setFont(newFont(”宋体”,Font.BOLD,12));
time2。
setForeground(newColor(120,1,120));//设置标签中的文字颜色
time2。
setHorizontalAlignment(SwingConstants。
CENTER);//设置标签中的文字居中显示
time2。
setText(Today.getDayOfWeek());
time3=newJLabel();
time3.setFont(newFont(”宋体",Font。
BOLD,14));//设置标签中的文字为宋体、粗体、14号
time3。
setForeground(newColor(120,1,120));//设置标签中的文字颜色
time3.setHorizontalAlignment(SwingConstants。
CENTER);//设置标签中的文字居中显示
newTime().start();//开启线程
Calendarnow;
inthour;
intminute;
intsecond;
now=Calendar.getInstance();
hour=now.get(Calendar.HOUR_OF_DAY);
minute=now.get(Calendar.MINUTE);
second=now。
get(Calendar.SECOND);
time3.setText(hour+":
"+minute+”:
"+second);
//添加按钮时间的监听
b1.addActionListener(this);
b2。
addActionListener(this);
b3。
addActionListener(this);
b4.addActionListener(this);
b5。
addActionListener(this);
b6。
addActionListener(this);
b7。
addActionListener(this);
b8。
addActionListener(this);
//添加系统的背景图案
JPaneldownpanel=newJPanel();
JPaneltimepanel=newJPanel();
GridBagLayoutgridbag=newGridBagLayout();
downpanel.setLayout(gridbag);
timepanel。
setLayout(gridbag);
JLabeltopLabel=newJLabel();
topLabel.setPreferredSize(newDimension(0,100));
topLabel。
setHorizontalAlignment(SwingConstants.CENTER);
URLtopUrl=this.getClass().getResource("enter1.gif");
ImageIcontopIcon=newImageIcon(topUrl);
topLabel.setIcon(topIcon);
getContentPane().add(topLabel,BorderLayout。
CENTER);
gridbagcon=newGridBagConstraints();
gridbagcon.gridx=0;
gridbagcon。
gridy=0;
gridbagcon。
insets=newInsets(2,2,2,2);
gridbagcon。
ipadx=80;
gridbagcon.ipady=40;
gridbag。
setConstraints(b1,gridbagcon);
downpanel。
add(b1);
gridbagcon=newGridBagConstraints();
gridbagcon.gridx=0;
gridbagcon.gridy=1;
gridbagcon.insets=newInsets(2,2,2,2);
gridbagcon.ipadx=80;
gridbagcon.ipady=40;
gridbag。
setConstraints(b2,gridbagcon);
downpanel。
add(b2);
gridbagcon=newGridBagConstraints();
gridbagcon.gridx=0;
gridbagcon。
gridy=2;
gridbagcon。
insets=newInsets(2,2,2,2);
gridbagcon。
ipadx=80;
gridbagcon。
ipady=40;
gridbag。
setConstraints(b3,gridbagcon);
downpanel.add(b3);
gridbagcon=newGridBagConstraints();
gridbagcon。
gridx=0;
gridba