学生体温打卡系统

//写的很丑,方便给一个小朋友!
//去年写的,自己也看不懂了,轻点骂
任务要求:
基本功能:
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相关推荐

  1. (附源码)springboot高校学生健康打卡系统的设计与实现 毕业设计 021009

    基于springboot 高校学生健康打卡系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇.农村,这引起我的注目,设计一套 ...

  2. (附源码)springboot高校学生健康打卡系统的设计与实现 毕业设计021009

    基于springboot 高校学生健康打卡系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇.农村,这引起我的注目,设计一套 ...

  3. 基于springboot高校学生健康打卡系统021009

    基于springboot 高校学生健康打卡系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来,大家都在听从政府的号召在居家隔离,不管是在城市还是在乡镇.农村,这引起我的注目,设计一套 ...

  4. SpringBoot+Vue项目实现高校学生健康打卡系统

    文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript.Vue.js .css3 开发工具:IDEA/MyEclipse/Eclipse.Visual St ...

  5. 基于JAVA的网上订餐外卖系统(Java+MySQL)

    基于JAVA的网上订餐外卖系统(Java+MySQL)-编号:jsp0812 美食是人类永恒的话题,无论是在古代还是现代人们对美食都有一种非常的热爱在里面,但是随着时代的发展,人们可能没有更多的时间去 ...

  6. 基于java的学生防疫打卡系统【原创】

    文章内容 1.登录注册 2.学生功能 3.管理员功能 前言:本项目均属于个人爱好,写的原创项目,有兴趣的朋友欢迎私聊或者评论.资源在网上独一无二 接下来一睹项目的风采吧!** 1.登录 2.注册 3. ...

  7. c语言之学生考勤打卡系统

    1.引言 在如今随着社会的反展和信息技术的进步.全球信息化的趋势越来越明显.几乎没有一个学校不在走信息化的路子.都在用自己的智慧将工作效率一步一步的提升.在现在的高校中.由于学生的分布式教学.造成了教 ...

  8. 基于JSP开发的电影票预订系统 JAVA MySQL

    10087基于JSP开发的电影票预订系统 代码: 鏈-椄:https://pan@baidu@com/s/11qEwMtFAmmwMDLQO_Pbk2Q (把@换成 . 就可正常访问) 趧-紶-碼:6 ...

  9. 基于SSH开发的宠物销售商城系统 JAVA MySQL

    10077基于SSH开发的宠物销售商城系统 代码: 鏈-椄:https://pan@baidu@com/s/1wAjL3PK78Bv9866q-B6kuw (把@换成 . 就可正常访问) 趧-紶-碼: ...

  10. 基于Java的新生报到系统JAVA MYSQL

    10186_基于Java的新生报到系统 技术 Java 工具 eclipse + tomcat + mysql + jdk 功能详情 前台界面:首页.校园新闻.报到流程.系统简介.在线留言.校园风光. ...

最新文章

  1. 对装饰器@wraps的解释(一看就懂)-- 并对装饰器详解
  2. GPU编程和流式多处理器
  3. Nginx的继续深入(日志轮询切割,重写,负载均衡等)
  4. 查找数组中第二个最小元素
  5. ABAP memory中的Export和Import
  6. Flask之flask-session
  7. Python + Pytest 自动化框架的用例依赖实操
  8. OpenShift 4 - Fedora CoreOS (1) - 最简安装
  9. ref out的用法
  10. 智能语音识别系统_语音识别技术原理_智能语音识别系统如何识别用户意图_企业服务汇...
  11. EasyUI -- Layout(布局)
  12. 关于 springboot 的自动配置
  13. 百度大脑技术支持慧译视频字幕系统,为听障学生带来“看得见的声音”
  14. dna计算机 论文,科学网—阿德勒曼DNA计算机(科普) - 沈海军的博文
  15. 数据共享,如何拆掉那些“部门的墙”?by 傅一平
  16. 拓嘉辰丰电商:关于拼多多推广计划有哪些问题
  17. 排列组合(9月8日更新
  18. parker派克柱塞泵PV046R1K1T1NUDM
  19. 南卫理公会大学计算机科学,南卫理公会大学计算机科学与工程硕士
  20. ORACLE分区表查询

热门文章

  1. IOS 蓝牙开发(六)蓝牙手柄 GameController开发
  2. Ubuntu操作系统
  3. maven中dependency的属性(依赖)配置
  4. 互联网创新创业大赛优秀范例_【互联网+大学生创新创业大赛项目计划书】创新创业大赛作品范例...
  5. 微信语音终于可以转发了
  6. 微星主板节能模式怎么关闭_技嘉小雕、微星迫击炮、华硕电竞特工三款主板对比...
  7. 如何安装vs2010助手?
  8. 自制宿舍门禁,微信小程序蓝牙控制,比指纹更安全~
  9. 网络驱动器无法访问,提示找不到网络路径故障处理过程
  10. c语言做线性代数第六版答案,线性代数求解(C语言):