学生体温打卡系统Java+MySQL
生活随笔
收集整理的這篇文章主要介紹了
学生体温打卡系统Java+MySQL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學生體溫打卡系統
//寫的很丑,方便給一個小朋友!
//去年寫的,自己也看不懂了,輕點罵
任務要求:
基本功能:
1、采用JAVA和數據庫知識完成此次實驗
2、實現學生的登錄
3、實現實時打卡檢測體溫
4、可保存體溫打卡記錄
5、可查看體溫打卡記錄
擴展功能:
1、用戶登錄后可查看打卡體溫和時間繪制成一條曲線
2、打卡時,自動獲取當前地理位置,使打卡體溫的表格信息更完善 package work;//LoginListener的類 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;import javax.swing.JTextField;import java.awt.FlowLayout; import java.awt.event.ActionEvent;//監聽事件 //實現界面二,驗證用戶是否登錄成功,并自定義選擇打卡或者是查看 public class LoginListener implements ActionListener{String Stu_Id;Connection conn = null;Statement st=null;ResultSet rs = null;PreparedStatement ps=null;String url = "jdbc:mysql://localhost:3306/my1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8";//確定用哪一個數據庫,此處我用的是my1String user = "root";String passwd = "wf@0819";//輸入我的MySQL賬號和密碼private javax.swing.JTextField number;//賬號輸入框對象private javax.swing.JTextField pswd;//密碼輸入框對象private javax.swing.JFrame login;//定義一個窗體對象public LoginListener(javax.swing.JFrame login,javax.swing.JTextField jt,JTextField textpass) {this.login=login;//獲取登錄界面this.number=jt;//獲取登錄界面中的賬號輸入框對象this.pswd=textpass;//獲取登錄界面中的密碼輸入框對象}public void actionPerformed(ActionEvent e) {String op1=null, op2=null;try {conn = DriverManager.getConnection(url, user, passwd);op1=number.getText();op2=pswd.getText();Stu_Id=number.getText(); String sql = "select * from student where stu_id =? and stu_pass=?";//查看表bodyclockps=conn.prepareStatement(sql);ps.setString(1, op1);ps.setString(2, op2);rs = ps.executeQuery();if(rs.next()){System.out.println("歡迎"+op1+",登錄成功!");javax.swing.JFrame jf=new javax.swing.JFrame();jf.setTitle("歡迎登錄學生打卡系統");jf.setSize(380,120);//只對頂級容器有效java.awt.FlowLayout fl=new java.awt.FlowLayout(FlowLayout.CENTER,1,2);jf.setLayout(fl);//設置頂級容器的布局為流式布局jf.setLocationRelativeTo(null);//居中jf.setResizable(false);java.awt.Dimension dim4=new java.awt.Dimension(100, 40);//按鈕的//大小 javax.swing.JButton button1=new javax.swing.JButton();javax.swing.JButton button2=new javax.swing.JButton();button1.setText("打卡");button2.setText("查看");button1.setPreferredSize(dim4);button2.setPreferredSize(dim4);jf.add(button1);jf.add(button2);button1.addActionListener(new ButtonAct1(Stu_Id));// 注冊給ButtonAct對象button2.addActionListener(new ButtonAct2(Stu_Id));// 注冊給//ButtonAct對象jf.setVisible(true);// 通過我們獲取的登錄界面對象,用dispose方法關閉它login.dispose();}else {System.out.println("學號或密碼輸入錯誤,登錄失敗!");javax.swing.JFrame jf=new javax.swing.JFrame();jf.setTitle("登陸失敗");jf.setSize(340,200);//只對頂級容器有效jf.setLocationRelativeTo(null);//居中jf.setResizable(false);jf.setVisible(true);}} catch (SQLException q) {q.printStackTrace();}finally{try{if(rs!= null){rs.close();rs = null;}if(ps!= null){ps.close();ps = null;}if(conn != null){conn.close();conn = null;}} catch(Exception w){w.printStackTrace();}}} } package work;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp;import javax.swing.JLabel; import javax.swing.JTextField; //點擊確認·按鈕,將輸入的體溫和時間等信息存入到數據庫表中 class ButtonAct3 implements ActionListener {// 內部類2,按鈕處理String urlstr=null;String Stu_Id=null;String Loction=null;Connection conn = null;Statement st=null;ResultSet rs = null;PreparedStatement ps=null;String url = "jdbc:mysql://localhost:3306/my1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8";//確定用哪一個數據庫,此處我用的是my1String user = "root";String passwd = "wf@0819";//輸入我的MySQL賬號和密碼private javax.swing.JTextField temp;//賬號輸入框對象private javax.swing.JTextField time;//密碼輸入框對象private javax.swing.JFrame login;//定義一個窗體對象public ButtonAct3(javax.swing.JFrame login,javax.swing.JTextField jt,JTextField textpass,String str) {this.login=login;//獲取登錄界面this.temp=jt;//獲取登錄界面中的賬號輸入框對象this.time=textpass;//獲取登錄界面中輸入框對象Stu_Id=str;}public void actionPerformed(ActionEvent e) {InetAddress addr = null;try {addr = InetAddress.getLocalHost();//獲取當前IP地址addr;} catch (UnknownHostException q) {// TODO 自動生成的 catch 塊q.printStackTrace();}String urlStr = "http://pv.sohu.com/cityjson?ie=utf-8&ip=addr.getHostAddress()"; String returnStr = getResult(urlStr, addr.getHostAddress(), "utf-8");if (returnStr != null) { int index ;for(int i=3;i>0;i--){index = returnStr.indexOf(":");returnStr = returnStr.substring(index + 1);}int leth=returnStr.length();returnStr = returnStr.substring(2,leth-3);Loction=returnStr;System.out.println("地址獲取成功!"); //獲取我的打卡地址}//獲取當前地址信息try {conn = DriverManager.getConnection(url, user, passwd);String sql = "insert into stuinfor values(null,?,?,?,?)";//注意這里的列的數量必須和我的表對應//影響的行數, ,如果大于0 表明操作成功。 否則失敗ps=conn.prepareStatement(sql);ps.setString(1, Stu_Id);ps.setBigDecimal(2,new BigDecimal(temp.getText()));ps.setTimestamp(3, Timestamp.valueOf(time.getText()));ps.setString(4, Loction);// System.out.println(Loction);int result;result = ps.executeUpdate();if(result >0 ){javax.swing.JFrame jf=new javax.swing.JFrame();jf.setTitle("打卡成功");jf.setSize(340,200);//只對頂級容器有效jf.setLocationRelativeTo(null);//居中JLabel labname=new JLabel();labname.setText("打卡成功了哦");jf.add(labname);jf.setResizable(false);jf.setVisible(true);//彈出小窗口,提示打卡成功了}else{javax.swing.JFrame jf=new javax.swing.JFrame();jf.setTitle("打卡失敗");jf.setSize(340,200);//只對頂級容器有效jf.setLocationRelativeTo(null);//居中jf.setResizable(false);jf.setVisible(true);//彈出小窗口,提示打卡失敗了}// TODO 自動生成的方法存根} catch (SQLException t) {// TODO 自動生成的 catch 塊t.printStackTrace();}finally{try{if(rs!= null){rs.close();rs = null;}if(ps!= null){ps.close();ps = null;}if(conn != null){conn.close();conn = null;}} catch(Exception u){u.printStackTrace();}}}private static String getResult(String urlStr, String content, String encoding) {// TODO 自動生成的方法存根URL url = null; HttpURLConnection connection = null; try { url = new URL(urlStr); connection = (HttpURLConnection) url.openConnection();// 新建連接實例 connection.setConnectTimeout(2000);// 設置連接超時時間,單位毫秒 connection.setReadTimeout(2000);// 設置讀取數據超時時間,單位毫秒 connection.setDoOutput(true);// 是否打開輸出流 true|false connection.setDoInput(true);// 是否打開輸入流true|false connection.setRequestMethod("POST");// 提交方法POST|GET connection.setUseCaches(false);// 是否緩存true|false connection.connect();// 打開連接端口 DataOutputStream out = new DataOutputStream(connection.getOutputStream());// 打開輸出流往對端服務器寫數據 out.writeBytes(content);// 寫數據,也就是提交你的表單 name=xxx&pwd=xxx out.flush();// 刷新 out.close();// 關閉輸出流 BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), encoding));// 往對端寫完數據對端服務器返回數據 // ,以BufferedReader流來讀取 StringBuffer buffer = new StringBuffer(); String line = null; while ((line = reader.readLine()) != null) { buffer.append(line); } reader.close(); return buffer.toString(); } catch (IOException e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect();// 關閉連接 } } return null; }} package work; //點擊查看按鈕監聽,將學生體溫-時間繪制成一條折線圖輸出 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; import java.sql.Time; import java.awt.Color; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; //點擊查看按鈕,將學生個人體溫信息用曲線圖描繪出來,加油!!!文鳳 package work; 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; import java.sql.Time; import java.awt.Color; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset;//點擊查看按鈕,將學生個人體溫信息用曲線圖描繪出來,加油!!!文鳳 public class ButtonAct2 implements ActionListener { static String Stu=null; static Connection conn = null; static Statement st=null; static ResultSet rs = null; static PreparedStatement ps=null; static String url = "jdbc:mysql://localhost:3306/my1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8";//確定用哪一個數據庫,此處我用的是my1 static String user = "root"; static String passwd = "wf@0819";//輸入我的MySQL賬號和密碼public ButtonAct2(String stu_Id) {// TODO 自動生成的構造函數存根Stu=stu_Id;}@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根CategoryDataset mDataset = GetDataset();JFreeChart mChart = ChartFactory.createLineChart("Temperature clock in curve",//圖名字"time",//橫坐標"temp",//縱坐標mDataset,//數據集PlotOrientation.VERTICAL,true, // 顯示圖例true, // 采用標準生成器false);// 是否生成超鏈接CategoryPlot mPlot = (CategoryPlot)mChart.getPlot();mPlot.setBackgroundPaint(Color.LIGHT_GRAY);mPlot.setRangeGridlinePaint(Color.BLUE);//背景底部橫虛線mPlot.setOutlinePaint(Color.RED);//邊界線ChartFrame mChartFrame = new ChartFrame("您的體溫打卡折線圖", mChart);mChartFrame.pack();mChartFrame.setVisible(true);}public static CategoryDataset GetDataset(){try {conn = DriverManager.getConnection(url, user, passwd);String sql = "select * from stuinfor where stu_id =? order by time ";//查看表bodyclock,條件查找且按時間順序排序ps=conn.prepareStatement(sql);ps.setString(1, Stu);rs = ps.executeQuery();DefaultCategoryDataset mDataset = new DefaultCategoryDataset();while(rs.next()){mDataset.addValue(rs.getBigDecimal("temp"), "My temperature curve",rs.getTimestamp("time")); //第一個表示縱軸表示體溫是temp,,,第二個表示時間是time}return mDataset;} catch (SQLException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}return null;} }
總結
以上是生活随笔為你收集整理的学生体温打卡系统Java+MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KETTLE 下载网址
- 下一篇: 备战2022年5月软考高项 —— 信息系