java+SQL做學生資訊管理系統(增刪改查)學生新作

悠然青年帥發表於2018-10-13

java+SQL做學生資訊管理系統(增刪改查)

過程中需要用到的所有工具資料庫以及資料庫管理器等等
密碼:q80t
在這裡插入圖片描述
大學學習java後做的第一個小專案忍不住分享一下,也是我自己的物件導向程式設計的實踐作業啦,有點水,不是很優。廢話不多數,下面進入正題

介面的編寫是非常簡單的,直接貼程式碼了,首先看新增功能

Add.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Add extends JFrame implements ActionListener{
	private static final Statement PraparedStatement = null;
 	Connection con;
 	
	JLabel id = new JLabel("Id");
	JLabel name = new JLabel("Name");
	JLabel sex = new JLabel("sex");
	JLabel tel = new JLabel("Tel");
	JLabel grade = new JLabel("Grade");
	JLabel address = new JLabel("Address");
	JLabel birthday = new JLabel("Birthday");
	
	JTextField id1 = new JTextField(10);
	JTextField name1 = new JTextField(10);
	JTextField sex1 = new JTextField(10);
	JTextField tel1 = new JTextField(10);
	JTextField grade1 = new JTextField(10);
	JTextField address1 = new JTextField(10);
	JTextField birthday1 = new JTextField(8);
	
	JButton yes = new JButton("確認");
	JButton no  = new JButton("取消");	
	
		public Add() {
			setTitle("新增學生資訊");
			setLayout(null);
			
			id.setBounds(100,90,100,50);
			id1.setBounds(300,100,200,30);
			name.setBounds(100,140,100,50);
			name1.setBounds(300,150,200,30);
			sex.setBounds(100,190,100,50);
			sex1.setBounds(300,200,200,30);
			tel.setBounds(100,240,100,50);
			tel1.setBounds(300,250,200,30);
			grade.setBounds(100, 290, 100, 50);
			grade1.setBounds(300, 300, 200, 30);
			address.setBounds(100, 340, 100, 50);
			address1.setBounds(300,350,200,30);
			birthday.setBounds(100, 390, 100, 50);
			birthday1.setBounds(300, 400, 200, 30);
			
			yes.setBounds(100,450, 100, 60);
			no.setBounds(400, 450, 100,60);
			
			add(id);
			add(id1);
			add(name);
			add(name1);
			add(sex);
			add(sex1);
			add(tel);
			add(tel1);
			add(grade);
			add(grade1);
			add(address);
			add(address1);
			add(birthday);
			add(birthday1);
			
			add(yes);
			add(no);
			
			yes.addActionListener(this);
			no.addActionListener(this);
			
			setVisible(true);
			setBounds(600,300,600,600);
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
		}
		public static void main(String args[]){
		new Add();
		}
		}
		

執行以後的介面
這就是執行以後的介面
下面就是按鈕功能的實現,同時包含了資料庫的操作

將下面的程式碼直接加在上面的程式碼的主函式上面就可以,這是上面的按鈕的監聽器方法

		public void actionPerformed(ActionEvent e) {
					 
		 if(e.getSource()==yes) {								//如果你點選的是確認按鈕
			 String s1=id1.getText();   					//獲取文字框中的資訊
	    	 String s2=name1.getText(); 
	    	 String s3=sex1.getText();
	    	 String s4=tel1.getText();
	    	 String s5=grade1.getText();
	    	 String s6=address1.getText();
	    	 String s7=birthday1.getText();	 
	    	 
	    	 int  num  = Integer.parseInt(s7);					//將獲得的日期轉換為整數型別
	    	
	    	 //載入資料庫驅動
		  	 try {					
		    		  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDrive");
		    	  }
		    	  catch(Exception e1) {
		    		  
		    	  }	    	
		    	 //連線資料庫
		    		  String uri ="jdbc:sqlserver://172.16.8.54:1433;DatebaseName=Stu";			//ip改為自己的ip,“Stu”資料庫中自己新建的資料庫名
		    		  String user = "sa";															//sa為自己的資料庫使用者名稱
		    		  String password = "962464";											//自己的資料庫密碼
		    		 
					try {
						con = DriverManager.getConnection(uri,user,password);
					} catch (SQLException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					}
		  
		    	 
		    	  JOptionPane.showMessageDialog(null, "資料庫連線成功", "連線資料庫",
		    			   JOptionPane.INFORMATION_MESSAGE);
		    	  			
			try {
				if(init()==true) {							//假如新增的id資料庫中已經存在,則不新增
						JOptionPane.showMessageDialog(null, "資料庫中此 Id 已存在,不可新增", "提示",
						JOptionPane.INFORMATION_MESSAGE);
						dispose();
					}
				else if(init()==false){					//如果沒有,則執行新增
						String sql="insert into Students(Id,Name,Sex,Tel,Grade,Address,Birth)"+"values('"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+s5+"','"+s6+"','"+num+"')";											//建立sql語句
						
						 Statement statement = null;
			
					try {
						statement = con.createStatement();
					} catch (SQLException e2) {
						e2.printStackTrace();
					}
						try {
								int result = statement.executeUpdate(sql);				//執行sql語句
							} catch (SQLException e1) {
								e1.printStackTrace();
							}
					    	 
							JOptionPane.showMessageDialog(null, "新增學生資訊成功", "完成",
									   JOptionPane.INFORMATION_MESSAGE);
						dispose();
												
					}
			} catch (HeadlessException | SQLException e2) {
				// TODO Auto-generated catch block
				e2.printStackTrace();
			}
			
			}
		 else if(e.getSource()==no) {
				dispose();
		 }
			}

//判斷新增的Id在資料庫中是否存在的方法
		public boolean init() throws SQLException {
			
			String sql1="select Id FROM Students where Id='"+s1+"'";	
			
			PreparedStatement pstm = con.prepareStatement(sql1);// 執行查詢
			
			ResultSet rs = pstm.executeQuery();			
			
			boolean result = false;
			
			while(rs.next()) {
				
				result = true;				
			}			
			rs = pstm.executeQuery();
			return result;
		}
	}

新增功能就完成了,大功告成

刪除功能,介面百年不變,所以我就只寫按鈕監聽器裡面的方法了,直接寫個介面加到裡面就可以了。

刪除功能是按照id刪除,需要輸入要刪除的id
下面是執行刪除功能的核心程式碼,資料庫連線等程式碼都是恆定不變的,就不貼了,學程式設計絕對不能一味的Ctrl+c;Ctrl+v;一定要自己的思考,親手敲一遍

Delete.java

String sql="delete Students where Id ='"+s1+"'";
	    	  
	    	  Statement statement = null;
				
	    	  try {
					statement = con.createStatement();
				} catch (SQLException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}
		    try {
			     
				 int resultset = statement.executeUpdate(sql);
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}	    	  	    	   
		    
		    JOptionPane.showMessageDialog(null, "刪除學生資訊成功", "完成",
	    			   JOptionPane.INFORMATION_MESSAGE);
	    	  
					}	    
	    	  }catch (HeadlessException | SQLException e2) {
					// TODO Auto-generated catch block
					e2.printStackTrace();
				}

更新功能

更新功能的實現,我用到了sql中if語句的拼接,從而實現,更新指定標籤的內容

Update.java

String sql = "update Students set Id = '"+s1+"'";   	    	 
            String sql1="where Id='"+s1+"'";
            
            
            
    		if(s2!= null&&!s2.equals("")) sql+=",Name ='"+s2+"'";
    				
    		if(s3!= null&&!s3.equals("")) sql +=",Sex ='"+s3+"'";	
    		
    		if(s4!= null&&!s4.equals("")) sql +=",Tel ='"+s4+"'"; 
    					 
    		if(s5!= null&&!s5.equals("")) sql += ",Grade ='"+s5+"'";
    						
    		if(s6!= null&&!s6.equals("")) sql +=",Address ='"+s6+"'";
    			 
    		if(s7!= null&&!s7.equals("")) sql +=",Birth ='"+s7+"'";
    		
       		String sql3= sql+sql1;
    		Statement statement=null;
    		try {
				statement = con.createStatement();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
    		try {
				int result = statement.executeUpdate(sql3);
			} catch (SQLException e1) {				
				e1.printStackTrace();
			}
    		
    		JOptionPane.showMessageDialog(null, "更新學生資訊成功", "完成",
    				   JOptionPane.INFORMATION_MESSAGE);

查詢功能

Select.java

String sql="select Id,Name,Sex,Tel,Grade,Address,Birth from Stu.Students where ID ='"+Select.id1.getText()+"'";		    	
PreparedStatement pstm = con.prepareStatement(sql);// 執行查詢
ResultSet rs = pstm.executeQuery();
// 計算有多少條記錄
int count = 0;
while(rs.next()){
count++;
}
rs=pstm.executeQuery();

查詢還涉及到最後是用文字區顯示還是使用表格顯示,這個就需要自己設計了

一定要注意,程式碼中凡是涉及資料庫名,和資料表名字的一定要改成自己的

好了,就分享到這裡,歡迎留言,大家探討。

相關文章