车辆管理信息系统Java课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院
计算机科学与技术系
课程设计任务书
2011~2012学年第一学期
课程JAVA语言课程设计
课程设计名称车辆管理信息系统
专业班级
指导教师
2011年9月
一、需求分析
车辆管理信息系统这一软件的设计主要是针对我们日常生活中车辆以及与车辆相关的信息的管理与查询和修改。
本软件所要做的就是对与车辆有关的信息包括司机信息的管理、车辆信息的管理、运营信息的管理、车辆维修信息的管理、事故信息的管理。
软件在功能上需实现:
1-1功能分析图
1)
有关司机信息的管理,有信息的新增,修改及查询功能。
司机基本信息包括的数据项有:司机姓名、司机性别、出生日期、家庭住址、初次领证时间、执照号码、准驾车型、有效期起始时间、有效期结束时间等等。
2)车辆信息的管理,有信息的新增,查询及修改功能。
车辆基本信息包括的数据项有:车号、类型、车主、发动机号、车驾号、厂牌型号、车辆总质量、核定载客、登记时间、发证时间、颜色、主要司机等等。
3)运营信息的管理,有输录,查询与修改功能。
运营信息包括的数据项有:车号、司机姓名、运营开始时间、运营结束时间、运营公里、耗油量等等。
4)车辆维修信息的管理,有输入,查询及修改功能。
车辆维修信息包括的数据项有:车牌号、维修时间、维修单位、维修内容、维修费用、配件、备注等等。
5)事故信息的管理,有输入,查询功能。
事故信息包括的数据项有:车牌号、司机姓名、事故时间、事故地点、事故原因、对方车号、对方单位、处理方式、处理金额、备注等
二、设计
1-2功能设计图
1.功能设计
本软件的要求的功能为:
1)有关司机各种信息的新增,修改及查询。
2)车辆信息的新增,查询及修改。
3)运营信息的输录,查询与修改。
4)车辆维修信息的输入,查询及修改。
5)事故信息的输入,查询。
编写软件对以上的功能有着较好的实现。
除此之外我们还增加了用户登录和帮助模块,必须在登录状态下才可以进行操作,用来解决对信息的保护等相关方面的问题,帮助模块主要提示程序的功能。
在其他的附加功能方面提供了在软件运行的同时显示了当前的时间。
2. 数据库设计
数据库方面使用的是Sql Server 2000,在数据库的相关功能方面主要通过Sql语言实现的主要是数据的录入、查询和修改。
3.详细设计
车辆管理信息系统主要是对信息数据实现管理的一款软件,所以本软件的算法较为简单,主要是界面的制作以及数据库方面的相关操作。
软件设计的重要之
处在于对软件模型的分析与设计。
这次的设计我们采用的是分层的设计,即本软件我们共设计为三层,第一层为登陆界面,是用户打开软件的第一个界面;第二层为系统界面,用户可以在此选择自己的希望处理的信息种类;第三层则为功能实现层,用户选择对信息进行何种处理。
软件共有17个类,相关的类名和实现的功能如下:
Control:系统的主类,车辆管理系统的主界面
enter:登录界面的类,包括用户名和密码的输入,登录后拥有管理员权限Dao:实现对数据库的语言操作
Driver: 司机基本信息界面的设计及添加、修改、查询功能的调用
Carmessage:车辆信息界面的设计及添加、修改、查询功能的调用
Carbusiness:运营信息界面的设计及添加、修改、查询功能的调用
carrepair :车辆维修信息界面的设计及添加、修改、查询功能的调用
caraccident:事故信息界面的设计及输入、查询操作的调用
BaseDao:通过longHaul方法进行数据库的修改,插入
Help:帮助界面的设计
Today:获取当前系统时间并输出
JDBC:数据库驱动
Resultdriver:司机信息查询结果的输出
Resultcarmess:车辆信息查询结果的输出
Resultbusi: 运营信息查询结果的输出
Resultrepair:车辆维修信息查询结果的输出
resultacc:事故信息查询结果的输出
4.技术支持
本软件的设计主要是界面的规划与设计和各个类的实现与连接(如上图)。
在数据的录入与查询方面还有与数据库的连接以及相关功能的实现。
在界面的规划上主要采用的是BorderLayout布局以及GridBagLayout布局,这是因为本软件涉及到得数据种类和数据类型较多,采用上述两种界面可以使数据的录入及查询得到很好的排列,从而方便用户使用。
在类的连接方面主要是对按钮组件添加监视器,经过对相关事件源以及触发事件的实现,从而对类实现调用及连接。
数
据库方面本软件使用的是sql server2000,在数据库的相关功能方面本软件实现的主要是数据的录入、查询和修改。
1-3Swing中JButton的使用
与之前学习Java时不一样的是,课程设计中用到了Swing。
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
工具包中所有都是以swing作为名称,例如javax.swing,。
Swing允许选择程序的图形界面风格常用的有java风格,windows风格等。
下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。
try { UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName( )); }
catch (Exception e) { }
常用的顶级容器:
JFrame(框架):表示主程序窗口
JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口JApplet(小程序):在浏览器内显示一个小程序界面
一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格。
窗格也可以看作是一种面板,但它是框架的一个组成部分。
组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板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)在运行程序时遇到过很多问题,例如图片的加载有问题。
主要是图片的
名称以及图片的格式问题。
2)在程序遇到的问题是对JAVA的数据库操作了解不够,通过参考书籍编写
了BASEDAO这个类并调用了里面的longHaul方法来实现了数据的修改
和插入。
在对各项信息进行添加、修改时,是通过“确定”按钮来判别
是否对数据库进行操作的,系统无法识别确定后进行的操作时添加或是
修改,因此,通过定义一个标志并对标志赋不同的值来识别“确定”的
操作时添加还是修改。
3)还有的问题就是在数据库连接时出现的问题,出现的问题主要有数据库
建立的失败,还有就是在数据库连接的时候,加载驱动的失败等。
例如
出现数据库加载失败的有一个原因就是,在建立的数据库用户登陆时,
拥有个用户安全性问题,我们就需要对其验证密码进行设置,可以为空,
也可以不为空。
在Java程序中一定要保证用数据库户名及其用户密码
是一致的。
那样就不容易出错了。
2、对程序及所完成系统进行测试
本软件使用前需先配置环境变量,我们主要使用的环境是在eclipse
下执行,需要在电脑上安装jdk-6u1-windows-i586-p并设置相应的路径。
由于编写时间较短,未对用户输入格式进行相关限制。
所以在输入信
息时建议用户按正确的方式输入。
1)运行control后出现的主界面
2)点击登录并输入密码
3)分别点击注销和退出
4)司机信息的添加和查询
5)车辆信息的添加和查询
6)运营信息的添加和查询
7)车辆维修信息的添加和查询
8)车辆事故的添加和查询
四、总结和体会
这次课程设计我做的是章节自测系统,主要是服务于学生进行阶段性自测和练习。
系统分为练习和测试两部分,每一部分又各分若干专题。
系统中采用的技术主要有:JDBC数据库连接技术、和MVC三层架构利用MyEclipse集成开发环境。
虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决。
这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。
我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。
事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。
开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。
所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。
我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。
通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。
五、参考文献
[1] 吕凤羽、马皓《JAVA程序设计》清华大学出版社
[2] 耿祥义《JAVA课程设计》清华大学出版
[3] 黄小东《Java课程设计案例精编》中国水利水电出版社
[4] 印旻《Java与面向对象程序设计》清华大学出版社
六、 附录
主要源程序: 主程序control :import java.awt.*; import javax.swing.*; import java.io.*; import .*; import java.util.*; import java.sql.*; 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,time2,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("运营信息管理"); 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; //框架的大小 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.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=new
JLabel("WELCOME");
status.setFont(new Font("宋体", Font.BOLD, 20));// 设置标签中的文字为宋体、粗体、14号
status.setForeground(new Color(100, 0, 255));// 设置标签中的文字为红色
status.setHorizontalAlignment(Sw ingConstants.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("注销");
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(Swi ngConstants.CENTER);// 设置标签中的文字居中显示
time1.setText(Today.getDateOfSho w());
time2=new JLabel();
time2.setFont(new Font("宋体", Font.BOLD, 12));
time2.setForeground(new Color(120, 1, 120));// 设置标签中的文字颜色
time2.setHorizontalAlignment(Swi ngConstants.CENTER);// 设置标签中的文字居中显示
time2.setText(Today.getDayOfWeek ());
time3=new JLabel();
time3.setFont(new Font("宋体
", Font.BOLD, 14));// 设置标签中的文字为宋体、粗体、14号
time3.setForeground(new Color(120, 1, 120));// 设置标签中的文字颜色
time3.setHorizontalAlignment(Swi ngConstants.CENTER);// 设置标签中的文字居中显示
new Time().start();// 开启线程
Calendar now;
int hour;
int minute;
int second;
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); //添加系统的背景图案
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 Dimension(0, 100));
topLabel.setHorizontalAlignment( SwingConstants.CENTER);
URL topUrl = this.getClass().getResource("ent er1.gif");
ImageIcon topIcon = new ImageIcon(topUrl);
topLabel.setIcon(topIcon);
getContentPane().add(topLabel, BorderLayout.CENTER);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=0;
gridbagcon.gridy=0;
gridbagcon.insets=new
Insets(2,2,2,2);
gridbagcon.ipadx=80;
gridbagcon.ipady=40;
gridbag.setConstraints(b1,gridba gcon);
downpanel.add(b1);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=0;
gridbagcon.gridy=1;
gridbagcon.insets=new
Insets(2,2,2,2);
gridbagcon.ipadx=80;
gridbagcon.ipady=40;
gridbag.setConstraints(b2,gridba gcon);
downpanel.add(b2);
gridbagcon=new
gridbagcon.gridx=0;
gridbagcon.gridy=2;
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.ipadx=80;
gridbagcon.ipady=40;
gridbag.setConstraints(b3,gridba gcon);
downpanel.add(b3);
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,gridba gcon);
downpanel.add(b4);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=0;
gridbagcon.gridy=4;
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.ipadx=80;
gridbagcon.ipady=40;
gridbag.setConstraints(b5,gridba gcon);
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; gcon);
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,gridba gcon);
downpanel.add(b7);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=0;
gridbagcon.gridy=5;
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.ipadx=120;
gridbagcon.ipady=40;
gridbag.setConstraints(b8,gridba gcon);
downpanel.add(b8);
gridbagcon=new GridBagConstraints();
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.fill=GridBagConstrain ts.HORIZONTAL;
gridbagcon.anchor=GridBagConstra ints.SOUTHWEST;
gridbagcon.ipadx=20;
gridbagcon.ipady=20;
gridbag.setConstraints(time0,gri dbagcon);
timepanel.add(time0);
gridbagcon=new
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.fill=GridBagConstrain ts.HORIZONTAL;
gridbagcon.anchor=GridBagConstra ints.SOUTHWEST;
gridbagcon.ipadx=20;
gridbagcon.ipady=20;
gridbag.setConstraints(time1,gri dbagcon);
timepanel.add(time1);
gridbagcon=new GridBagConstraints();
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.fill=GridBagConstrain ts.HORIZONTAL;
gridbagcon.anchor=GridBagConstra ints.SOUTHWEST;
gridbagcon.ipadx=20;
gridbagcon.ipady=20;
gridbag.setConstraints(time2,gri dbagcon);
timepanel.add(time2);
gridbagcon=new GridBagConstraints();
gridbagcon.insets=new Insets(2,2,2,2);
gridbagcon.fill=GridBagConstrain ts.HORIZONTAL;
gridbagcon.anchor=GridBagConstra ints.SOUTHWEST;
gridbagcon.ipadx=20;
gridbagcon.ipady=20; dbagcon);
timepanel.add(time3);
contentpane.add(status,BorderLay out.NORTH);
contentpane.add(downpanel,Border Layout.WEST);
contentpane.add(timepanel,Border Layout.SOUTH);
//添加框架的关闭事件处理
this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
this.pack();
//设置窗口属性
this.setCursor(Cursor.getPred efinedCursor(Cursor.CROSSHAIR_CU RSOR));
//设置框架的大小
this.setSize(facesize);
//设置程序窗口的位置
Dimension
screensize=Toolkit.getDefaultToo lkit().getScreenSize();
this.setLocation((int)(screensiz e.width-facesize.getWidth())/2,
(int)(screensize.height-facesize .getHeight())/2);
this.setResizable(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.getSource();
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 carrepair(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_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);
b2.setEnabled(false);
b3.setEnabled(false);
b4.setEnabled(false);
b5.setEnabled(false);
b6.setEnabled(false);
b7.setEnabled(true);
b8.setEnabled(true);
}
else
{
JOptionPane.showMessageDialog(nu ll, "注销失败,请检查原因!",
"友情提示", RMATION_MESSAGE) ;
return;
}
}
}
else if(obj==helpitem)
{
//菜单栏中的帮助
//调出帮助对话框
Help helpDialog=new Help(this);
helpDialog.show();
}
else if(obj==b7||obj==b8item) {
//退出程序
int
j=JOptionPane.showConfirmDialog(
this,"真的要退出吗?","退出",JOptionPane.YES_OPTION,
JOptionPane.QUESTION_MESSAGE) ;
if(j==JOptionPane.YES_OPTION)
{
boolean
closing=JDBC.closeConnection();
System.exit(0);
}
}
}
//通过给定的文件名获得图像
Image getImage(String filename)
{
URLClassLoader
urlloader=(URLClassLoader)this.g etClass().getClassLoader();
URL url=null;
Image image=null;
url=urlloader.findResource(fi lename);
image=Toolkit.getDefaultToolk it().getImage(url);
MediaTracker mediatracker=new MediaTracker(this);
try
{
mediatracker.addImage(image,0);
mediatracker.waitForID(0);
}
catch(InterruptedException _ex)
{image=null;}
if(mediatracker.isErrorID(0)) { image=null;
}
return image;}
class Time extends Thread
{// 创建内部类
public void run()
{// 重构父类的方法
while (true)
{
Date date = new Date();// 创建日期对象
time3.setText(date.toString() .substring(11, 19));// 获取当前时间,并显示到时间标签中
try
{
Thread.sleep(1000);// 令线程休眠1秒}
catch (InterruptedException e)
{e.printStackTrace();}
}
}
}
public static void main(String[] args)
{control aww=new control();
} }
登录程序enter:
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.io.*;
import .*;
import java.*;
public class enter extends JDialog {
public static JLabel j1,j2,j3;//地址,用户名,密码
public static JTextField t1,t2; public static JPasswordField t3;//密码输入框
public static String logip;
public static String loguser;
public static String logpass;
Dao dao=Dao.getInstance();
JButton log,esc;//登录、取消按钮 //框架的大小
Dimension facesize=new Dimension(400,200);
//布局管理器
JPanel downpanel;
GridBagLayout gridbag;
GridBagConstraints gridbagcon; public enter(JFrame frame)
{super(frame,true);
try{jbInit(); } catch(Exception e)
{e.printStackTrace();
}
//设置运行位置
this.setCursor(Cursor.getPredefi nedCursor(Cursor.CROSSHAIR_CURSO R));
Dimension
screensize=Toolkit.getDefaultToo lkit().getScreenSize();
this.setLocation((int)(screensiz e.width-400)/2+50,
(int)(screensize.height-320)/2+1 50);
this.setResizable(false);}
private void jbInit()throws Exception
{this.setSize(new
Dimension(300,200));
this.setTitle("登录");
Container
contentpane=getContentPane();
contentpane.setLayout(new BorderLayout());
//登录界面
t1.setEditable(true);
t2=new JTextField("kokone");
t2.setEditable(true);
// 创建并设置密码框
t3 = new JPasswordField();// 创建密码框组件对象
t3.setColumns(24);// 设置密码框可显示的字符数
t3.setText("");// 设置密码框默认显示6个空格
log=new JButton("登录");
esc=new JButton("取消");
j1=new JLabel("连接地址:"); j2=new JLabel("用户名:");
j3=new JLabel("密码:");
JPanel downpanel=new JPanel();
GridBagLayout gridbag=new GridBagLayout();
downpanel.setLayout(gridbag);
//规划性添加组件
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=2;
gridbagcon.gridy=2;
gridbagcon.insets=new
Insets(2,2,2,2);
gridbagcon.ipadx=5;
gridbagcon.ipady=5; gridbag.setConstraints(j1,gridba gcon);
downpanel.add(j1);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=3;
gridbagcon.gridy=2;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=150;
gridbagcon.ipady=5;
gridbag.setConstraints(t1,gridba gcon);
downpanel.add(t1);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=2;
gridbagcon.gridy=3;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=5;
gridbagcon.ipady=5;
gridbag.setConstraints(j2,gridba gcon);
downpanel.add(j2);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=3;
gridbagcon.gridy=3;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=150;
gridbagcon.ipady=5; gridbag.setConstraints(t2,gridba gcon);
downpanel.add(t2);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=2;
gridbagcon.gridy=4;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=5;
gridbagcon.ipady=5; gridbag.setConstraints(j3,gridba gcon);
downpanel.add(j3);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=3;
gridbagcon.gridy=4;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=150;
gridbagcon.ipady=5; gridbag.setConstraints(t3,gridba gcon);
downpanel.add(t3);
gridbagcon=new
GridBagConstraints();
gridbagcon.gridx=3;
gridbagcon.gridy=5;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=5;
gridbagcon.ipady=5; gridbag.setConstraints(log,gridb agcon);
downpanel.add(log);
gridbagcon=new GridBagConstraints();
gridbagcon.gridx=4;
gridbagcon.gridy=5;
gridbagcon.insets=new
Insets(1,1,1,1);
gridbagcon.ipadx=5;
gridbagcon.ipady=5; gridbag.setConstraints(esc,gridb agcon);
downpanel.add(esc); contentpane.add(downpanel,Border Layout.CENTER);
//登录按钮的事件处理
log.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent a)
{
enter.logpass
=new String(passwords);// 将密码从char型数组转换成字符串
JDBC. USERNAME = "sa";
JDBC.PASSWORD ="";
JDBC.download();
Connection conn =JDBC.getConnection();// 获得数据库连接
if(JDBC.logsign==1){
{
dispose(); }
else{ JOptionPane.showMessageDialog(nu ll, "密码不正确,请重新输入!",
"友情提示", RMATION_MESSAGE) ;
dispose();
} }
else{ JOptionPane.showMessageDialog(nu ll, "登录失败,请检查原因!",
"友情提示", RMATION_MESSAGE) ;
dispose(); }}} );
//关闭对话框按钮
this.addWindowListener
( new WindowAdapter()
{public void windowCloseing(WindowEvent e)
{
System.exit(0); }} );
//取消按钮的事件处理
esc.addActionListener
(new ActionListener(){ public void actionPerformed(ActionEvent e)
{dispose();
} });}}
JDBC程序-数据库连接程序
import java.sql.*;
import java.*;
public class JDBC {
public static String DRIVERCLASS ;
public static String URL ;
public static String USERNAME ;
public static String PASSWORD;
public static int logsign=0;//连接标志 private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); public static void download() {// 通过静态方法加载数据库驱动 try { Class.forName(DRIVERCLASS).ne wInstance();// 加载数据库驱动 } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection() {// 创建数据库连接的方法 Connection conn = threadLocal.get();// 从线程中获得数据库连接
if (conn == null) {// 没有可用的数据库连接 try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);// 创建新的数据库连接
threadLocal.set(conn);// 将数据库连接保存到线程中 logsign=1;
} catch (SQLException e) {
e.printStackTrace(); }}
return conn;} public static boolean closeConnection() {// 关闭数据库连接的方法
boolean isClosed = true; Connection conn =
threadLocal.get();// 从线程中获得数据库连接 threadLocal.set(null);// 清空线程中的数据库连接 if (conn != null) {// 数据库连接可用
try { conn.close();// 关闭数据库连接 logsign=0; } catch (SQLException e) { isClosed = false; e.printStackTrace(); } } return isClosed; } }。