最近写完了数据库的课程设计,想把整个源码的编辑过程发出来。程序很简单,需要有很多完善的地方,在这里,我想和大家分享写这个程序的心路历程。
首先,在开始写程序之前。我们需要先写一些工具类,来辅助完成整个程序的构建,在这里我把连接jdbc的代码放在了一个包下面。
如下图:
在这里我们先来写最基本的类,jdbcDrive,这是负责和数据库进行连接,并且执行语句的类
public class jdbcDrive {
public static Connection connection;
public static Statement statement;
public static ResultSet resultset;
public static void jdbcConnection(){
try {
connection = DriverManager.getConnection(jdbc.dbURL, jdbc.userName,jdbc.userPwd);
System.out.println("连接数据库成功!");
} catch (Exception e) {
System.out.print("SQL Server连接失败!");
}
}
public static void jdbcConnectionClose(){
try {
connection.close();
System.out.println("数据库连接成功关闭");
} catch (SQLException e) {
System.out.println("数据库连接关闭失败");
}
}
public static void jdbcExecuteUpdate(String s) throws SQLException{
jdbcConnection();
statement=connection.createStatement();
statement.executeUpdate(s);
}
public static void jdbcExecuteQuery(String s) throws SQLException{
jdbcConnection();
statement=connection.createStatement();
resultset=statement.executeQuery(s);
}
public static void main(String [] args) {
}
}
在这里我选择的是SQL SERVER 2014,它的jdbc版本已经不需要加载数据库了,可以直接进行连接,在这里分为四个方法。其中两个是负责,数据库的连接和释放。jdbcExecuteUpdate负责传递SQL的增加,修改,删除,不需要有结果集的语句。jdbcExecuteQuery负责进行jdbc的查询,将查询的结果放在resultset里面。Connection类是负责进行数据库的连接,Statement 负责传递查询语句。resultset是结果集,负责保存储存的信息。
在进行数据的连接的时候,需要向数据库传递参数。我把参数放在了一个接口里面。
public interface jdbc {
String dbURL = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Dormitory";
String userName = "sa";
String userPwd = "123456";
}
写完基本的jdbc类之后,我们在进行整个系统的界面搭建。
设计主界面的时候,用到以下几个类,第一个是用于放置菜单选项的JMenuBar,它是放置JMenu的容器,而JMenu是房子JMenuItem的容器。具体的构建过程就是,在JFrame里添加JMenu,用来表示要放置的菜单选项,在JMenu里面放置JMeunItem用来表示菜单的子选项。其中,用了JLabel来存放图片。各个JMenuItem的监听事件放在了一个单独的包里面。具体的搭建界面如下:
public class Login extends JFrame {
private JButton loginButton,exitButton;
private JLabel userNameLabel,passwordLabel;
private JTextField userNameText;
private JPasswordField passwordText;
private HandleAction handleAction;
private static JPanel loginPanel;
private ManagementUi MainUi;
private Toolkit toolKit=null;
private Dimension screenSize=null;
public static personManage nowPeople;
public Login(){
Init();
}
public void Init(){
//获取当前窗口,并且获取屏幕的尺寸
toolKit=Toolkit.getDefaultToolkit();
screenSize=toolKit.getScreenSize();
//加载封装了图片的Panel子类,并添加到当前JFrame容器里面
loginPanel=new LoginPanel();
loginPanel.setLayout(null);
add(loginPanel);
//将整个图框居中
setBounds(screenSize.width/2-loginPanel.getWidth()/2
,screenSize.height/2-loginPanel.getHeight()/2
,loginPanel.getWidth(),loginPanel.getHeight());
handleAction=new HandleAction();
this.setIconImage(new ImageIcon("resource/picture.png").getImage());
//向loginPanel容器加入两个Jlabel,两个按钮,一个文本框,一个密码框
userNameLabel=new JLabel("用户名");
userNameLabel.setBounds(100, 120, 200, 18);
loginPanel.add(userNameLabel);
userNameText=new JTextField();
userNameText.setBounds(150, 120, 150, 18);
loginPanel.add(userNameText);
passwordLabel=new JLabel("密码");
passwordLabel.setBounds(100, 180, 200, 18);
loginPanel.add(passwordLabel);
passwordText=new JPasswordField();
passwordText.setBounds(150, 180, 150, 18);
loginPanel.add(passwordText);
loginButton=new JButton("登录");
loginButton.setBounds(150, 230, 60, 18);
loginPanel.add(loginButton);
exitButton=new JButton("退出");
exitButton.setBounds(230, 230, 60, 18);
loginPanel.add(exitButton);
exitButton.addActionListener(handleAction);
loginButton.addActionListener(handleAction);
setTitle("宁悦宿舍管理系统");
this.setResizable(false);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
private class HandleAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==loginButton){
String pass=new String(passwordText.getPassword());
if(jdbcLogin.Judge(userNameText.getText(),pass)){
nowPeople=new personManage(userNameText.getText(),null,null,pass);
MainUi=new ManagementUi();
Login.this.setVisible(false);
}else{
JOptionPane.showMessageDialog(Login.this,"不是系统的合法用户或密码错误" );
}
}else if(e.getSource()==exitButton) {
Login.this.dispose();
}
}
}
public static void main(String [] args){
Login in=new Login();
}
}
class LoginPanel extends JPanel {
protected I