《车辆管理信息系统Java课程设计.doc》由会员分享,可在线阅读,更多相关《车辆管理信息系统Java课程设计.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、合肥学院计算机科学及技术系课程设计任务书20112012学年第一学期课程JAVA语言课程设计课程设计名称车辆管理信息系统专业班级指导教师2011年9月一、 需求分析车辆管理信息系统这一软件设计主要是针对我们日常生活中车辆以及及车辆相关信息管理及查询与修改。本软件所要做就是对及车辆有关信息包括司机信息管理、车辆信息管理、运营信息管理、车辆维修信息管理、事故信息管理。软件在功能上需实现:车辆管理系统司机信息运营信息车辆维修信息车辆信息事故信息新增修改查询新增修改查询新增查询新增修改查询新增查询1-1功能分析图1) 有关司机信息管理,有信息新增,修改及查询功能。司机基本信息包括数据项有:司机姓名、司
2、机性别、出生日期、家庭住址、初次领证时间、执照号码、准驾车型、有效期起始时间、有效期结束时间等等。第 35 页有效结束时间有效起始时间准驾车型执照号码初次领证时间家庭住址出生日期性别姓名司机主要司机颜色发证时间登记时间核定载客车辆总质量厂牌型号车驾号发动机号车主类型车号车辆2)车辆信息管理,有信息新增,查询及修改功能。车辆基本信息包括数据项有:车号、类型、车主、发动机号、车驾号、厂牌型号、车辆总质量、核定载客、登记时间、发证时间、颜色、主要司机等等。3)运营信息管理,有输录,查询及修改功能。运营信息包括数据项有:车号、司机姓名、运营开始时间、运营结束时间、运营公里、耗油量等等。耗油量运营公里运
3、营结束时间运营开始时间司机姓名车号运营信息备注配件维修费用维修内容维修单位维修时间车牌号车辆维修4)车辆维修信息管理,有输入,查询及修改功能。车辆维修信息包括数据项有:车牌号、维修时间、维修单位、维修内容、维修费用、配件、备注等等。备注处理金额处理方式对方单位对方车号事故原因事故地点事故时间司机姓名车牌号事故信息5)事故信息管理,有输入,查询功能。事故信息包括数据项有:车牌号、司机姓名、事故时间、事故地点、事故原因、对方车号、对方单位、处理方式、处理金额、备注等二、 设计登陆主界面司机信息事故信息车辆信息运营信息维修信息司机新增、查询、修改车辆新增、查询、修改运营新增、查询、修改维修新增、查询
4、、修改事故新增、查询、修改地址,用户名,密码的验证1-2功能设计图1.功能设计本软件要求功能为:1)有关司机各种信息新增,修改及查询。2)车辆信息新增,查询及修改。3)运营信息输录,查询及修改。4)车辆维修信息输入,查询及修改。5)事故信息输入,查询。编写软件对以上功能有着较好实现。除此之外我们还增加了用户登录与帮助模块,必须在登录状态下才可以进行操作,用来解决对信息保护等相关方面问题,帮助模块主要提示程序功能。在其他附加功能方面提供了在软件运行同时显示了当前时间。2. 数据库设计数据库方面使用是Sql Server 2000,在数据库相关功能方面主要通过Sql语言实现主要是数据录入、查询与修
5、改。3.详细设计车辆管理信息系统主要是对信息数据实现管理一款软件,所以本软件算法较为简单,主要是界面制作以及数据库方面相关操作。软件设计重要之处在于对软件模型分析及设计。这次设计我们采用是分层设计,即本软件我们共设计为三层,第一层为登陆界面,是用户打开软件第一个界面;第二层为系统界面,用户可以在此选择自己希望处理信息种类;第三层则为功能实现层,用户选择对信息进行何种处理。软件共有17个类,相关类名与实现功能如下:Control:系统主类,车辆管理系统主界面enter:登录界面类,包括用户名与密码输入,登录后拥有管理员权限Dao:实现对数据库语言操作Driver: 司机基本信息界面设计及添加、修
6、改、查询功能调用Carmessage:车辆信息界面设计及添加、修改、查询功能调用Carbusiness:运营信息界面设计及添加、修改、查询功能调用carrepair :车辆维修信息界面设计及添加、修改、查询功能调用caraccident:事故信息界面设计及输入、查询操作调用BaseDao:通过longHaul方法进行数据库修改,插入Help:帮助界面设计Today:获取当前系统时间并输出JDBC:数据库驱动Resultdriver:司机信息查询结果输出Resultcarmess:车辆信息查询结果输出Resultbusi: 运营信息查询结果输出Resultrepair:车辆维修信息查询结果输出r
7、esultacc:事故信息查询结果输出4.技术支持本软件设计主要是界面规划及设计与各个类实现及连接(如上图)。在数据录入及查询方面还有及数据库连接以及相关功能实现。在界面规划上主要采用是BorderLayout布局以及GridBagLayout布局,这是因为本软件涉及到得数据种类与数据类型较多,采用上述两种界面可以使数据录入及查询得到很好排列,从而方便用户使用。在类连接方面主要是对按钮组件添加监视器,经过对相关事件源以及触发事件实现,从而对类实现调用及连接。数据库方面本软件使用是sql server2000,在数据库相关功能方面本软件实现主要是数据录入、查询与修改。1-3Swing中JButt
8、on使用及之前学习Java时不一样是,课程设计中用到了Swing。Swing是一个用于开发Java应用程序用户界面开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔外观风格。Swing开发人员只用很少代码就可以利用Swing丰富、灵活功能与模块化组件来创建优雅用户界面。 工具包中所有都是以swing作为名称,例如javax.swing,javax.swing.event。Swing允许选择程序图形界面风格常用有java风格,windows风格等。下面代码用于选择图形界面风格,这里选择是跨平台Java界面风格。 try UIManager.setLookAndFee
9、l( UIManager.getCrossPlatformLookAndFeelClassName( ); catch (Exception e) 常用顶级容器: JFrame(框架):表示主程序窗口 JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口 JApplet(小程序):在浏览器内显示一个小程序界面 一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分窗格。窗格也可以看作是一种面板,但它是框架一个组成部分。组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上 用框架对象getContentPane()函数来获得窗格,再调用窗格add
10、()函数放置面板public static void main(String args)JFrame frame=new JFrame(SwingApplication); JPanel panel1=new JPanel(); frame.getContentPane().add(panel1,BorderLayout.CENTER); 添加其他组件frame.pack();frame.setVisible(true);三、 调试及测试1、调试过程中遇到主要问题及解决方法我们这次课程设计最主要问题是做界面美化,主要用到网格布局与边界布局,除此之外因为是做一个系统所以还要求及数据库进行连接。1
11、) 在运行程序时遇到过很多问题,例如图片加载有问题。主要是图片名称以及图片格式问题。2) 在程序遇到问题是对JAVA数据库操作了解不够,通过参考书籍编写了BASEDAO这个类并调用了里面longHaul方法来实现了数据修改与插入。在对各项信息进行添加、修改时,是通过“确定”按钮来判别是否对数据库进行操作,系统无法识别确定后进行操作时添加或是修改,因此,通过定义一个标志并对标志赋不同值来识别“确定”操作时添加还是修改。3) 还有问题就是在数据库连接时出现问题,出现问题主要有数据库建立失败,还有就是在数据库连接时候,加载驱动失败等。例如出现数据库加载失败有一个原因就是,在建立数据库用户登陆时,拥有
12、个用户安全性问题,我们就需要对其验证密码进行设置,可以为空,也可以不为空。在Java程序中一定要保证用数据库户名及其用户密码是一致。那样就不容易出错了。2、对程序及所完成系统进行测试本软件使用前需先配置环境变量,我们主要使用环境是在eclipse下执行,需要在电脑上安装jdk-6u1-windows-i586-p并设置相应路径。在classpath中设置JDBC驱动路径与程序路径,并在数据库中新建及程序中允许登陆用户名相同用户,该用户需具有所有权限。运行主类control即可进入主界面,地址是127.0.0.1,用户名是kokone,这两者是默认。登陆密码为123456,登陆后用户可根据自己需
13、要进行各项操作。由于编写时间较短,未对用户输入格式进行相关限制。所以在输入信息时建议用户按正确方式输入。1) 运行control后出现主界面2) 点击登录并输入密码3) 分别点击注销与退出4) 司机信息添加与查询5) 车辆信息添加与查询6) 运营信息添加与查询7) 车辆维修信息添加与查询8) 车辆事故添加与查询四、 总结与体会这次课程设计我做是章节自测系统, 主要是服务于学生进行阶段性自测与练习。系统分为练习与测试两部分,每一部分又各分若干专题。系统中采用技术主要有:JDBC数据库连接技术、与MVC三层架构利用MyEclipse集成开发环境。虽然系统基本功能都已实现,但还是存在系统不稳定等多个
14、问题尚待解决。这个系统主要是我自己开发,但也得到了教师与同学很大帮助。我正在做系统过程中遇到了很多问题,有是知识存储不足,有是考虑不够周全,之所以能够顺利实现基本功功能,离不开教师与同学大力相助。事实证明,只靠自己是不能顺利完成一套功能完整系统,必须充分利用团队力量。开发一套系统,最重要是细心,并不是一定要做到面面俱到,但也要充分考虑到客户需求与现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒头脑,以现实为依据
15、,让自己每一行代码都能实现自己意义。通过这次课程设计,我收获不仅仅是课程上知识得到实际应用,还有编程基本习惯与开发系统时应注意流程。五、 参考文献1 吕凤羽、马皓JAVA程序设计清华大学出版社2 耿祥义 JAVA课程设计 清华大学出版3 黄小东 Java课程设计案例精编中国水利水电出版社4 印旻 Java及面向对象程序设计清华大学出版社六、 附录主要源程序:主程序control:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.io.*;im
16、port java.*;import java.util.*;import java.util.Date;import java.sql.*;import java.applet.Applet;import java.*;public class control extends JFrame implements ActionListener public static Image icon;/程序图标 public static JLabel status; public static JButton b1,b2,b3,b4,b5,b6,b7,b8; JLabel time0,time1,t
17、ime2,time3;/建立菜单 JMenuBar jmenubar=new JMenuBar();/建立菜单组 JMenu startmenu=new JMenu(开始);/建立菜单项 public static JMenuItem b7item=new JMenuItem(登录); public static JMenuItem b1item=new JMenuItem(司机信息管理); public static JMenuItem b2item=new JMenuItem(车辆信息管理); public static JMenuItem b3item=new JMenuItem(运营信
18、息管理); public static JMenuItem b4item=new JMenuItem(车辆维修信息管理); public static JMenuItem b5item=new JMenuItem(事故信息管理); public static JMenuItem b6item=new JMenuItem(注销); public static JMenuItem b8item=new JMenuItem(退出); JMenu helpmenu=new JMenu(帮助); JMenuItem helpitem=new JMenuItem(帮助);/ Graphics g; /框架
19、大小 Dimension facesize=new Dimension(1000,700); JPanel downpanel,timepanel; GridBagLayout gridbag; GridBagConstraints gridbagcon; public control() Container contentpane=getContentPane();/一般 Abstract Window Toolkit(AWT) /容器对象是一个可包含其他 AWT 组件组件。contentpane.setLayout(new BorderLayout(); /添加菜单栏 startmenu.
20、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.setEnab
21、led(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.addAc
22、tionListener(this); b6item.addActionListener(this); b8item.addActionListener(this); helpitem.addActionListener(this); status=new JLabel(WELCOME); status.setFont(new Font(宋体, Font.BOLD, 20);/ 设置标签中文字为宋体、粗体、14号 status.setForeground(new Color(100, 0, 255);/ 设置标签中文字为红色 status.setHorizontalAlignment(Swin
23、gConstants.CENTER);/ 设置标签中文字居中显示 b1=new JButton(司机信息管理); b1.setEnabled(false); b2=new JButton(车辆信息管理); b2.setEnabled(false); b3=new JButton(运营信息管理); b3.setEnabled(false); b4=new JButton(车辆维修信息管理); b4.setEnabled(false); b5=new JButton(事故信息管理); b5.setEnabled(false); b8=new JButton(登录); b6=new JButton(
24、注销); b6.setEnabled(false); b7=new JButton(退出); time0=new JLabel(); time0.setFont(new Font(宋体, Font.BOLD, 12); time0.setText( 今天是:); time1=new JLabel(); time1.setFont(new Font(宋体, Font.BOLD, 12); time1.setForeground(new Color(120, 1, 120);/ 设置标签中文字颜色 time1.setHorizontalAlignment(SwingConstants.CENTER
25、);/ 设置标签中文字居中显示 time1.setText(Today.getDateOfShow(); time2=new JLabel(); time2.setFont(new Font(宋体, Font.BOLD, 12); time2.setForeground(new Color(120, 1, 120);/ 设置标签中文字颜色 time2.setHorizontalAlignment(SwingConstants.CENTER);/ 设置标签中文字居中显示 time2.setText(Today.getDayOfWeek(); time3=new JLabel(); time3.s
26、etFont(new Font(宋体, Font.BOLD, 14);/ 设置标签中文字为宋体、粗体、14号 time3.setForeground(new Color(120, 1, 120);/ 设置标签中文字颜色 time3.setHorizontalAlignment(SwingConstants.CENTER);/ 设置标签中文字居中显示 new Time().start();/ 开启线程 Calendar now; int hour; int minute; int second;now = Calendar.getInstance();hour = now.get(Calenda
27、r.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
28、(this); b7.addActionListener(this); b8.addActionListener(this);/添加系统背景图案 JPanel downpanel=new JPanel(); JPanel timepanel=new JPanel(); GridBagLayout gridbag=new GridBagLayout(); downpanel.setLayout(gridbag); timepanel.setLayout(gridbag); JLabel topLabel = new JLabel(); topLabel.setPreferredSize(new
29、Dimension(0, 100); topLabel.setHorizontalAlignment(SwingConstants.CENTER); URL topUrl = this.getClass().getResource(enter1.gif); ImageIcon topIcon = new ImageIcon(topUrl); topLabel.setIcon(topIcon); getContentPane().add(topLabel, BorderLayout.CENTER); gridbagcon=new GridBagConstraints(); gridbagcon.
30、gridx=0; gridbagcon.gridy=0; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=80; gridbagcon.ipady=40; gridbag.setConstraints(b1,gridbagcon); downpanel.add(b1); gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=1; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx
31、=80; gridbagcon.ipady=40; gridbag.setConstraints(b2,gridbagcon); downpanel.add(b2); gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=2; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=80; gridbagcon.ipady=40; gridbag.setConstraints(b3,gridbagcon); downpanel.add(b3);
32、gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=3; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=55; gridbagcon.ipady=40; gridbag.setConstraints(b4,gridbagcon); downpanel.add(b4); gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=4; gridbag
33、con.insets=new Insets(2,2,2,2); gridbagcon.ipadx=80; gridbagcon.ipady=40; gridbag.setConstraints(b5,gridbagcon); downpanel.add(b5); gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=6; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=120; gridbagcon.ipady=40; gridbag.s
34、etConstraints(b6,gridbagcon); downpanel.add(b6); gridbagcon=new GridBagConstraints(); gridbagcon.gridx=0; gridbagcon.gridy=7; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=120; gridbagcon.ipady=40; gridbag.setConstraints(b7,gridbagcon); downpanel.add(b7); gridbagcon=new GridBagConstraints(
35、); gridbagcon.gridx=0; gridbagcon.gridy=5; gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.ipadx=120; gridbagcon.ipady=40; gridbag.setConstraints(b8,gridbagcon); downpanel.add(b8); gridbagcon=new GridBagConstraints(); gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.fill=GridBagConstraints.HORIZO
36、NTAL; gridbagcon.anchor=GridBagConstraints.SOUTHWEST; gridbagcon.ipadx=20; gridbagcon.ipady=20; gridbag.setConstraints(time0,gridbagcon); timepanel.add(time0); gridbagcon=new GridBagConstraints(); gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.fill=GridBagConstraints.HORIZONTAL; gridbagcon.anchor
37、=GridBagConstraints.SOUTHWEST; gridbagcon.ipadx=20; gridbagcon.ipady=20; gridbag.setConstraints(time1,gridbagcon); timepanel.add(time1); gridbagcon=new GridBagConstraints(); gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.fill=GridBagConstraints.HORIZONTAL; gridbagcon.anchor=GridBagConstraints.SOU
38、THWEST; gridbagcon.ipadx=20; gridbagcon.ipady=20; gridbag.setConstraints(time2,gridbagcon); timepanel.add(time2); gridbagcon=new GridBagConstraints(); gridbagcon.insets=new Insets(2,2,2,2); gridbagcon.fill=GridBagConstraints.HORIZONTAL; gridbagcon.anchor=GridBagConstraints.SOUTHWEST; gridbagcon.ipad
39、x=20; gridbagcon.ipady=20; gridbag.setConstraints(time3,gridbagcon); timepanel.add(time3); contentpane.add(status,BorderLayout.NORTH); contentpane.add(downpanel,BorderLayout.WEST); contentpane.add(timepanel,BorderLayout.SOUTH); /添加框架关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack
40、();/设置窗口属性this.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);/设置框架大小 this.setSize(facesize);/设置程序窗口位置Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(int)(screensize.width-facesize.getWidth()/2, (int)(screensize.height-facesize.getHeight()/2); this.s
41、etResizable(true); this.setTitle(车辆管理信息系统);this.show(); /程序图标icon=getImage(note1.jpg);this.setIconImage(icon);/设置程序图标show();/关闭程序时操作this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent i)System.exit(0); /事件处理 public void actionPerformed(ActionEvent e) Object obj=e.getSour
42、ce(); if(obj=b1|obj=b1item) /司机管理 driver d1=new driver(this); d1.show(); else if(obj=b2|obj=b2item) /车辆信息管理 carmessage d2=new carmessage(this); d2.show(); else if(obj=b3|obj=b3item) /运营信息管理 carbusiness d3=new carbusiness(this); d3.show(); else if(obj=b4|obj=b4item) /车辆维修信息管理 carrepair d4=new carrepa
43、ir(this); d4.show();else if(obj=b5|obj=b5item) /事故信息管理 caraccident d4=new caraccident(this); d4.show(); else if(obj=b8|obj=b7item) /调出登录设置对话框enter d7=new enter(this);d7.show();else if(obj=b6|obj=b6item) /注销int j=JOptionPane.showConfirmDialog(this,真注销吗?,注销,JOptionPane.YES_OPTION,JOptionPane.QUESTION_
44、MESSAGE); if(j=JOptionPane.YES_OPTION) /注销 boolean closing=JDBC.closeConnection(); if(closing=true) b1item.setEnabled(false); b2item.setEnabled(false); b3item.setEnabled(false); b4item.setEnabled(false); b5item.setEnabled(false); b6item.setEnabled(false); b8item.setEnabled(true); b7item.setEnabled(true); b1.setEnabled(false);