本文的目的是介绍ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于3.1.3视频教程交作业、asp.
本文的目的是介绍ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于3.1.3视频教程交作业、asp.net学生作业管理系统、Flink提交作业运行的模式有哪些、java - 课后作业 - JDBC - 学生信息管理系统 ----的知识。
本文目录一览:- ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
- 3.1.3视频教程交作业
- asp.net学生作业管理系统
- Flink提交作业运行的模式有哪些
- java - 课后作业 - JDBC - 学生信息管理系统 ----
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
本文实例讲述了ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法。分享给大家供大家参考,具体如下:
在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业。那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student)、班级(class)、作业提交表(Submit)这三个表之间的关系。
1. 每个学生都属于一个班级
2. 班级里的每个学生都会被布置同样的作业
3. 学生提交作业后会在作业提交表中添加响应的记录,如学生的ID,作业的ID,提交的内容等。
可以按照以下步骤获取学生已交作业和未交作业
1. 获取学生所在班级的所有作业
由上述代码课看出,首先根据学号($stuno)获取学生信息,通过学生信息表保存的班级ID(clas_id)再获取学生所在班级信息,最后通过班级与作业表之间的多对多的关系(详见ThinkPHP5官方手册关于模型的关联部分内容),获取该学生所在班级所布置的所有作业。
2. 获取学生未交作业
该函数首先调用获取全部作业的函数($this->getTasks($stuno))获得了学生所在班级的所有作业。这个数据集是一个二维数组,遍历这个二维数组,看看这个二维数组中是否有作业已经被该学生提交到了Submit中,如果提交了就删除该元素。
3.获得学生已交作业
有了上述两个函数,获取已交作业的事情就变的简单了,第一个函数获得的二维数组减去第二个函数所返回的数组就是学生已交作业的集合,做下二维数组的求差即可
以上就是我在使用ThinkPHP5建立学生作业管理系统实践中对学生作业列表的解决办法,如果您有更好的方法,欢迎批评指正!
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
3.1.3视频教程交作业
交作业
我一直对网页制作感兴趣,最近自学了一些php,html,css知识,js现在还不会,后来接触tp,看了3.1.3视频,把视频中的代码打了出来,如果有同学不想自己打,只想看看视频中的代码的,可以在这下载,99%后盾网视频中的代码,只改了一点点
哈哈 忘了数据库的事情了
正好我最近又改了改 还有个免费后台和前台模版 也一起分享吧
下载地址:http://yunpan.cn/QGH2kYi6gvLd9
后盾网blog代码和数据库结构.zip
( 3.9 MB 下载:180 次 )
AD:真正免费,域名+虚机+企业邮箱=0元
asp.net学生作业管理系统
随着时代发展,传统的作业模式已经被组件的替代。当下很多学校都是通过微信等方式来进行作业布置,这样一方面可以让家长知道作业内容对学生进行监督和辅导作用,另一方面也减轻了教师的工作量。本学生作业管理系统是一个专门为学生和教师服务的,教师可以直接在本系统内发布作业,学生在看到作业之后进行完成,之后通过上传的方式交给老师进行审阅。本系统通过asp.net+sql进行开发,是一个典型的教务软件,本系统界面简单大方,操作灵活,是您的不二之选
学生作业管理系统登录页面
管理员部分的主要功能要求
管理员登录功能,根据权限进入管理员相应的页面的功能 管理员发布公告、管理公告(查看、修改、删除)的功能 管理员设置院系、班级、课程、任课教师,同样具有查看、修改、删除的功能 管理员修改个人资料功能 管理员中的教师管理,实现教师登陆信息的初始化功能
学生作业管理管理员部分功能展示
教师部分的主要功能要求
教师登录功能,根据权限进入教师相应的页面的功能 教师发布公告、管理公告(查看、修改、删除)功能 教师修改个人资料功能 教师查看学生名单功能 教师在线布置、批改作业功能 教师对学生疑问进行解答的功能
学生作业管理系统教师部分功能展示
学生部分的主要功能要求
学生登录功能,根据权限进入学生相应的页面的功能 学生查看、搜索公告的功能 学生修改个人资料的功能 学生查看、下载老师的作业题目,上传作业(说明作业格式),查看老师对作业的批改情况功能 学生在网上对老师提出疑问并能查看以往对老师提出的疑问功能
学生作业管理系统学生部分功能展示
Flink提交作业运行的模式有哪些
这篇文章主要介绍“Flink提交作业运行的模式有哪些”,在日常操作中,相信很多人在Flink提交作业运行的模式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Flink提交作业运行的模式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
0.背景
基于 Flink-1.12.x
1.Session Mode
这个不用多说,也就是起一个 session,然后会有多个程序提交到这一个 session 中。
好处:集群资源仅分配一次,充分利用资源,程序App 启动较快
坏处:可能会连锁式的重启,jobManager 负载大
2.Per-Job Mode
使用的比较多,一个 application 一个 flink cluster
好处: 资源隔离,粒度更细,方便管理单个 job
坏处:当某个机器上有多个 client 时,会有较高的网络负载( 下载 jar 、传输 jar )以及消费大量的 cpu 来执行 main方法
3.Application Mode
Application Mode 与 Per-Job Mode 类似,主要是为了解决 Per-Job Mode 的不足,通过 yarn.provided.lib.dirs
另外 client 是在 JobManager 上执行的,可以避免 带宽、cpu 的热点问题。
并且相比于 Per-Job Mode 来说,更强大,可以提交多个 job
到此,关于“Flink提交作业运行的模式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注小编网站,小编会继续努力为大家带来更多实用的文章!
java - 课后作业 - JDBC - 学生信息管理系统 ----

转:
java - 课后作业 - JDBC - 学生信息管理系统 ----
文章目录
-
- 作业要求:
- 界面展示与功能说明
-
- 登录界面:
- 信息管理界面:
-
- 初始状态:
- 添加记录:
- 修改记录:
- 删除记录:
- 程序源代码
作业要求:
- 根据以上登陆界面内容设计一个数据表,要求用户正确的输入用户名和密码允许用户登陆,否则输出密码或用户名不正确.
- 根据下面要求编写程序
- 设计一个图形界面
- 在数据库中建立一个表
- 表名为学生
- 表结构为:学号,姓名,性别,年龄,JAVA 语言,数据结构,数据库,总分
- 功能要求:实现对对数据库的增,删,改,查操作
界面展示与功能说明
- 本次作业使用
SQLite
作为数据库系统 SQLite JDBC.
登录界面:
- 数据库中有三个字段,分别为递增整数主键 id, 表中唯一且可索引的可变长字符串 (最长 32 个字符) 字段 username 与 64 字节定长字节字段 password (用来储存使用 SHA-512 进行散列的密码).
- 数据库中初始化了用户名为
admin
, 散列前密码也为admin
的管理员账户. - 当输入的用户名不存在或用户名对应的密码不一致时,点击确定按钮将弹出一个提示框.
- 点击取消按钮将结束程序.
- 当输入的用户名存在且数据库中的密码散列与输入框中的密码散列后的字节串相同,点击确定按钮将弹出一个提示框.
- 单击确定后将隐藏登录界面并进入信息管理页面.
信息管理界面:
初始状态:
- 程序 UI 由左侧的显示面板与右侧的操作面板组成,单击窗口关闭按钮将退出程序.
- 左侧显示面板实时显示数据库对应表中所有的记录与字段,并具有滚动条进行翻页.
- 操作面板提供数据的增删改查功能,并依靠业务逻辑设置按钮的活动与禁用,以避免数据库的错误操作.
添加记录:
- 在右侧数据编辑面板编辑需要添加字段的信息.
- 学号必须为 10 位字符,若不为 10 位字符,则禁用添加,修改与删除按钮.
- 若学号为 10 位字符且在数据库中具有能够匹配相应记录 (学号为唯一字段), 则更新其他输入框中的内容并激活修改与删除按钮并禁用添加按钮,可以使用该功能通过学号查询对应学生的信息.
- 若学号为 10 位字符且在数据库中没有能与其匹配的相应记录 (学号为唯一字段), 则更新其他输入框中的内容并激活添加按钮并禁用修改与删除按钮.
- 若在添加时成绩具有小数点后第三位或更小的位数,则会对小数点后第三位进行四舍五入操作.
- 性别下拉选项框可以在其选项中选择,也可以通过单击选项框直接编辑.
- 若三门课的成绩不在 0~100 范围内,则在点击添加按钮 / 点击修改按钮 / 输入完成后单击回车键时弹出一个提示框.
- 该提示框单击确定按钮后程序将不进行任何数据库操作,直到所有数据都合理规范.
- 若在输入完成后单击回车键时弹出该对话框,则会清除该输入框中的不合理数据.
- 若三门课成绩的输入框与年龄的输入框中存在非法字符,则在点击添加按钮 / 点击修改按钮 / 输入完成后单击回车键时弹出一个提示框.
- 若在输入完成后单击回车键时弹出该对话框,则会清除该输入框中的不合理数据.
修改记录:
- 在三门课程成绩的输入框中输入数据后单击回车键则会对输入框中的字符串进行处理,若字符串可以解析为一个数字且其数值在 0~100 范围内,则会保留两位小数并对小数点后第三位 (若有) 进行四舍五入操作.
- 总成绩不可编辑,由系统对三门课程的成绩自动进行求和.
- 左侧信息显示区不能直接编辑,但是单击对应的记录后该记录的信息将更新到右侧信息编辑区,在编辑区便可以对数据进行修改,修改完成后点击修改按钮则将修改后的字段同步更新至数据库,左侧显示区也会自动刷新.
- 左侧信息显示区中的记录将会按照学号递增的顺序排序.
- 四个操作按钮 (刷新 / 添加 / 修改 / 删除) 响应后左侧显示区均会进行刷新.
删除记录:
- 只有在数据库中存在对应学号的记录时删除按钮才会激活.
- 删除后编辑区信息不会改变,若误操作可以单击添加按钮将删除的信息重新添加进数据库.
程序源代码
package assignment.week_12;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
import java.util.*;
import java.security.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class StudentManage implements ActionListener
{
private JLabel label_username;
private JLabel label_password;
private JTextField field_username;
private JPasswordField field_password;
private Button button_login;
private Button button_exit;
private JFrame frame_login;
private Connection connection;
private StudentInfoManage student_info_manage;
private static final String username = "admin";
private static final String password = "admin";
private static final String JDriver = "org.sqlite.JDBC";
private static final String conURL = "jdbc:sqlite:assignment\assignment.db";
public static void main(String arg[])
{
// UserLogin.init();
// StudentInfoManage.init();
new StudentManage().run();
}
public static void init()
{
try {
Class.forName(JDriver); // 加载JDBC驱动程序
} catch (java.lang.ClassNotFoundException e) {
System.out.println("ForName: " + e.getMessage());
}
try {
Connection connection = DriverManager.getConnection(conURL); // 连接数据库URL
Statement statement = connection.createStatement(); // 建立Statement类对象
String query = "CREATE TABLE USER(" // 表名USER
+ "id INTEGER NOT NULL UNIQUE PRIMARY KEY AUTOINCREMENT," // 自增长ID, 设为主键, 唯一
+ "username VARCHAR(32) NOT NULL UNIQUE," // 用户名最大32字符, 唯一
+ "password BINARY(64) NOT NULL" // 密码使用SHA-512散列算法, 长度位64字节
+ ");";
query += "CREATE UNIQUE INDEX index_user ON USER (id, username);"; // 为id与username创建唯一索引
statement.executeUpdate(query); // 执行SQL命令
statement.close(); // 释放Statement所连接的数据库及JDBC资源
PreparedStatement p_statement = connection.prepareStatement("INSERT INTO USER(username, password) values(?, ?);");
p_statement.setString(1, StudentManage.username);
p_statement.setBytes(2, getHashBiteString(StudentManage.password));
p_statement.executeUpdate(); // 执行SQL命令, 建立管理员账户(用户名:admin 密码:admin)
p_statement.close();
connection.close(); // 关闭与数据库的连线
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
}
}
public StudentManage()
{
try {
Class.forName(JDriver); // 加载JDBC驱动程序
this.connection = DriverManager.getConnection(conURL); // 连接数据库URL
} catch (java.lang.ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
protected void finalize()
{
try {
this.connection.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
public void run()
{
this.frame_login = new JFrame("登录");
frame_login.setSize(300, 200);
frame_login.setLocation(500, 300);
frame_login.setBackground(Color.lightGray);
frame_login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame_login.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER; // 组件在显示区域居中对齐
gbc.fill = GridBagConstraints.BOTH; // 设置组件填充区域
gbc.insets = new Insets(10, 5, 10, 5); // 设置与显示区域边缘的位置
this.label_username = new JLabel("用户名", JLabel.LEFT);
this.label_password = new JLabel("密码", JLabel.LEFT);
this.field_username = new JTextField(20);
this.field_password = new JPasswordField(20);
this.button_login = new Button("确定");
this.button_exit = new Button("取消");
Container frame_contain = frame_login.getContentPane(); // 获取窗口的内容窗格
addComponent(label_username, frame_contain, gbc, 0, 0, 1, 1, 1, 1);
addComponent(field_username, frame_contain, gbc, 0, 1, 3, 1, 3, 1);
addComponent(label_password, frame_contain, gbc, 1, 0, 1, 1, 1, 1);
addComponent(field_password, frame_contain, gbc, 1, 1, 3, 1, 3, 1);
addComponent(button_login, frame_contain, gbc, 2, 1, 1, 1, 1, 1);
addComponent(button_exit, frame_contain, gbc, 2, 3, 1, 1, 1, 1);
this.button_login.addActionListener(this);
this.button_exit.addActionListener(this);
frame_login.setVisible(true);
}
private void addComponent(Component c, Container contain, GridBagConstraints gbc, int row, int column, int width, int height, int weightx, int weighty)
{
gbc.gridy = row; // 第几行的格子
gbc.gridx = column; // 第几列的格子
gbc.gridwidth = width; // 占用几列格子
gbc.gridheight = height; // 占用几行格子
gbc.weightx = weightx; // 行方向分配的权重
gbc.weighty = weighty; // 列方向分配的权重
gbc.ipadx = 2; // 左右边缘的空白距离
gbc.ipady = 2; // 上下边缘的空白距离
contain.add(c, gbc); // 将组件c按照约束条件gbc添加到容器contain中
}
// 获得字符串的摘要
private static byte[] getHashBiteString(String str)
{
try {
MessageDigest digest = MessageDigest.getInstance("SHA-512");
// digest.update(String.valueOf(str).getBytes());
// return new ByteArrayInputStream(digest.digest());
return digest.digest(str.getBytes());
} catch (NoSuchAlgorithmException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
return null;
}
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == this.button_login) {
try {
boolean auth_flag = false; // 验证是否成功
byte byte_string[] = getHashBiteString(String.valueOf(this.field_password.getPassword()));
// System.out.println(password_hash.length); // 64字节
PreparedStatement p_statement = this.connection.prepareStatement("SELECT * FROM USER WHERE username=?;");
p_statement.setString(1, this.field_username.getText());
ResultSet result_set = p_statement.executeQuery();
if (result_set.next()) {
if (Arrays.equals(byte_string, result_set.getBytes("password"))) auth_flag = true;
// System.out.println(String.valueOf(this.field_password.getPassword()));
// System.out.println(new java.math.BigInteger(1, getHashBiteString(String.valueOf(this.field_password.getPassword()))).toString(16));
// System.out.println(new java.math.BigInteger(1, result_set.getBytes("password")).toString(16));
}
if (auth_flag) {
JOptionPane.showMessageDialog(null, "恭喜您, 登录成功!", "登录信息", JOptionPane.INFORMATION_MESSAGE);
this.student_info_manage = new StudentInfoManage();
this.student_info_manage.display(); // 打开信息管理页面
this.frame_login.setVisible(false);
} else {
JOptionPane.showMessageDialog(null, "登录失败, 用户名或密码错误", "登录信息", JOptionPane.WARNING_MESSAGE);
}
p_statement.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
} else if (event.getSource() == this.button_exit) {
System.exit(0);
}
}
}
class StudentInfoManage implements ActionListener, ItemListener, CaretListener, ListSelectionListener
{
private JFrame frame;
private JLabel lable_student_id;
private JLabel lable_name;
private JLabel lable_gender;
private JLabel lable_age;
private JLabel lable_java;
private JLabel lable_database;
private JLabel lable_data_structure;
private JLabel lable_total;
private JTextField field_student_id;
private JTextField field_name;
private JTextField field_age;
private JTextField field_java;
private JTextField field_database;
private JTextField field_data_structure;
private JTextField field_total;
private JButton button_add;
private JButton button_alter;
private JButton button_delete;
private JButton button_refresh;
private JComboBox<String> combo_box_gender;
private JScrollPane scroll_pane_table;
private JTable table;
private static final String gender[] = {
"女", "男", "其他" };
private StudentInfo student_info;
private Connection connection;
private static final String JDriver = "org.sqlite.JDBC";
private static final String conURL = "jdbc:sqlite:assignment\assignment.db";
private class StudentInfo
{
String student_id;
String name;
String gender;
int age;
BigDecimal java;
BigDecimal database;
BigDecimal data_structure;
BigDecimal total;
ResultSet result_set;
final String column_titles[] = {
"学号", "姓名", "性别", "年龄", "java成绩", "数据库成绩", "数据结构成绩", "总成绩" };
final BigDecimal __100__ = new BigDecimal(100);
final BigDecimal __0__ = new BigDecimal(0);
public StudentInfo()
{
this.java = new BigDecimal(0);
this.database = new BigDecimal(0);
this.data_structure = new BigDecimal(0);
this.total = new BigDecimal(0);
}
public void selectAll() throws SQLException
{
PreparedStatement p_statement = connection.prepareStatement("SELECT * FROM STUDENT ORDER BY student_id;");
this.result_set = p_statement.executeQuery();
}
public boolean next() throws SQLException
{
if (this.result_set.next()) {
this.student_id = result_set.getString("student_id");
this.name = result_set.getString("name");
this.gender = result_set.getString("gender");
this.age = result_set.getInt("age");
this.java = result_set.getBigDecimal("java").setScale(2, RoundingMode.HALF_UP);
this.database = result_set.getBigDecimal("database").setScale(2, RoundingMode.HALF_UP);
this.data_structure = result_set.getBigDecimal("data_structure").setScale(2, RoundingMode.HALF_UP);
this.total = result_set.getBigDecimal("total").setScale(2, RoundingMode.HALF_UP);
return true;
} else return false;
}
public boolean select(String student_id) throws SQLException
{
PreparedStatement p_statement = connection.prepareStatement("SELECT * FROM STUDENT WHERE student_id=?;");
p_statement.setString(1, student_id);
this.result_set = p_statement.executeQuery();
if (this.next()) return true;
else return false;
}
public void insert() throws SQLException
{
PreparedStatement p_statement = connection.prepareStatement("INSERT INTO STUDENT(student_id, name, gender, age, java, database, data_structure, total) VALUES(?, ?, ?, ?, ?, ?, ?, ?);");
p_statement.setString(1, this.student_id);
p_statement.setString(2, this.name);
p_statement.setString(3, this.gender);
p_statement.setInt(4, this.age);
p_statement.setBigDecimal(5, this.java);
p_statement.setBigDecimal(6, this.database);
p_statement.setBigDecimal(7, this.data_structure);
p_statement.setBigDecimal(8, this.total);
p_statement.executeUpdate(); // 执行SQL命令, 建立管理员账户(用户名:admin 密码:admin)
p_statement.close();
}
public void update() throws SQLException
{
PreparedStatement p_statement = connection.prepareStatement("UPDATE STUDENT SET name=?, gender=?, age=?, java=?, database=?, data_structure=?, total=? WHERE student_id=?;");
p_statement.setString(1, this.name);
p_statement.setString(2, this.gender);
p_statement.setInt(3, age);
p_statement.setBigDecimal(4, java);
p_statement.setBigDecimal(5, database);
p_statement.setBigDecimal(6, data_structure);
p_statement.setBigDecimal(7, total);
p_statement.setString(8, this.student_id);
p_statement.executeUpdate(); // 执行SQL命令, 建立管理员账户(用户名:admin 密码:admin)
p_statement.close();
}
public void delete() throws SQLException
{
PreparedStatement p_statement = connection.prepareStatement("DELETE FROM STUDENT WHERE student_id=?;");
p_statement.setString(1, this.student_id);
p_statement.executeUpdate(); // 执行SQL命令, 建立管理员账户(用户名:admin 密码:admin)
p_statement.close();
}
public Vector<Vector<Object>> getDataVector()
{
Vector<Vector<Object>> table_data_vector = new Vector<>();
try {
for (this.selectAll(); this.next(); table_data_vector.add(this.getRowVector()))
;
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
return table_data_vector;
}
public Vector<Object> getRowVector()
{
Vector<Object> row_vector = new Vector<>();
row_vector.add(this.student_id);
row_vector.add(this.name);
row_vector.add(this.gender);
row_vector.add(this.age);
row_vector.add(this.java);
row_vector.add(this.database);
row_vector.add(this.data_structure);
row_vector.add(this.total);
return row_vector;
}
public Vector<Object> getTitleVector()
{
Vector<Object> title_vector = new Vector<>();
for (String title : this.column_titles)
title_vector.add(title);
return title_vector;
}
public BigDecimal getTotal()
{
this.total = this.java.add(this.database).add(this.data_structure);
return this.total;
}
public BigDecimal getValidScore(String input) throws NumberFormatException
{
BigDecimal temp = new BigDecimal(input);
temp = temp.setScale(2, RoundingMode.HALF_UP); // 保留小数点后两位
if (temp.compareTo(this.__0__) == -1 || temp.compareTo(this.__100__) == 1) throw new NumberFormatException("成绩应在合理区间内");
return temp;
}
}
public static void init()
{
try {
Class.forName(JDriver); // 加载JDBC驱动程序
} catch (java.lang.ClassNotFoundException e) {
System.out.println("ForName: " + e.getMessage());
}
try {
Connection connection = DriverManager.getConnection(conURL); // 连接数据库URL
Statement statement = connection.createStatement(); // 建立Statement类对象
String query = "CREATE TABLE STUDENT(" // 表名USER
+ "id INTEGER NOT NULL UNIQUE PRIMARY KEY AUTOINCREMENT," // 自增长ID, 设为主键, 唯一
+ "student_id CHARACTER(10) NOT NULL UNIQUE," // 学号固定10字符, 且唯一
+ "name VARCHAR(16) NOT NULL," // 名字
+ "gender VARCHAR(8)," // 性别
+ "age INTEGER," // 年龄
+ "java DECIMAL(3, 2)," // java成绩, 定点数(小数点前3位, 小数点后2位)
+ "database DECIMAL(3, 2)," // 数据库成绩, 定点数(小数点前3位, 小数点后2位)
+ "data_structure DECIMAL(3, 2)," // 数据结构成绩, 定点数(小数点前3位, 小数点后2位)
+ "total DECIMAL(3, 2)" // 总成绩, 定点数(小数点前3位, 小数点后2位)
+ ");";
query += "CREATE INDEX index_student ON STUDENT (id, student_id, name);"; // 为id, username与name创建索引
statement.executeUpdate(query); // 执行SQL命令
statement.close(); // 释放Statement所连接的数据库及JDBC资源
connection.close(); // 关闭与数据库的连线
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
}
}
public StudentInfoManage()
{
try {
Class.forName(JDriver); // 加载JDBC驱动程序
this.connection = DriverManager.getConnection(conURL); // 连接数据库URL
} catch (java.lang.ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
protected void finalize()
{
try {
this.connection.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
public void display()
{
this.student_info = new StudentInfo();
this.frame = new JFrame("学生信息管理系统");
this.frame.setSize(1080, 500);
this.frame.setLocation(100, 200);
this.frame.setBackground(Color.lightGray);
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER; // 组件在显示区域居中对齐
gbc.fill = GridBagConstraints.BOTH; // 设置组件填充区域
gbc.insets = new Insets(5, 5, 5, 5); // 设置与显示区域边缘的位置
this.lable_student_id = new JLabel("学号", JLabel.RIGHT);
this.lable_name = new JLabel("姓名", JLabel.RIGHT);
this.lable_gender = new JLabel("性别", JLabel.RIGHT);
this.lable_age = new JLabel("年龄", JLabel.RIGHT);
this.lable_java = new JLabel("Java-成绩", JLabel.RIGHT);
this.lable_database = new JLabel("数据库-成绩", JLabel.RIGHT);
this.lable_data_structure = new JLabel("数据结构-成绩", JLabel.RIGHT);
this.lable_total = new JLabel("总成绩", JLabel.RIGHT);
this.field_student_id = new JTextField();
this.field_name = new JTextField();
this.field_age = new JTextField();
this.field_java = new JTextField();
this.field_database = new JTextField();
this.field_data_structure = new JTextField();
this.field_total = new JTextField();
this.field_total.setEditable(false);
this.button_refresh = new JButton("刷新");
// this.button_refresh.setEnabled(false);
this.button_add = new JButton("添加");
this.button_add.setEnabled(false);
this.button_alter = new JButton("修改");
this.button_alter.setEnabled(false);
this.button_delete = new JButton("删除");
this.button_delete.setEnabled(false);
this.combo_box_gender = new JComboBox<String>(StudentInfoManage.gender);
this.combo_box_gender.setEditable(true);
;
this.table = new JTable(this.student_info.getDataVector(), this.student_info.getTitleVector())
{
private static final long serialVersionUID = -3960132093510822116L;
public boolean isCellEditable(int row, int column) // 所有单元格不能编辑
{
return false;
};
};
this.table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.table.getTableHeader().setReorderingAllowed(false);
this.scroll_pane_table = new JScrollPane(this.table);
Container frame_contain = this.frame.getContentPane(); // 获取窗口的内容窗格
addComponent(this.lable_student_id, frame_contain, gbc, 0, 6, 1, 1, 1, 1);
addComponent(this.lable_name, frame_contain, gbc, 1, 6, 1, 1, 1, 1);
addComponent(this.lable_gender, frame_contain, gbc, 2, 6, 1, 1, 1, 1);
addComponent(this.lable_age, frame_contain, gbc, 3, 6, 1, 1, 1, 1);
addComponent(this.lable_java, frame_contain, gbc, 4, 6, 1, 1, 1, 1);
addComponent(this.lable_database, frame_contain, gbc, 5, 6, 1, 1, 1, 1);
addComponent(this.lable_data_structure, frame_contain, gbc, 6, 6, 1, 1, 1, 1);
addComponent(this.lable_total, frame_contain, gbc, 7, 6, 1, 1, 1, 1);
addComponent(this.field_student_id, frame_contain, gbc, 0, 7, 4, 1, 4, 1);
addComponent(this.field_name, frame_contain, gbc, 1, 7, 4, 1, 4, 1);
addComponent(this.field_age, frame_contain, gbc, 3, 7, 1, 1, 1, 1);
addComponent(this.field_java, frame_contain, gbc, 4, 7, 1, 1, 1, 1);
addComponent(this.field_database, frame_contain, gbc, 5, 7, 1, 1, 1, 1);
addComponent(this.field_data_structure, frame_contain, gbc, 6, 7, 1, 1, 1, 1);
addComponent(this.field_total, frame_contain, gbc, 7, 7, 1, 1, 1, 1);
addComponent(this.combo_box_gender, frame_contain, gbc, 2, 7, 3, 1, 3, 1);
addComponent(this.button_refresh, frame_contain, gbc, 4, 9, 2, 1, 2, 1);
addComponent(this.button_add, frame_contain, gbc, 5, 9, 2, 1, 2, 1);
addComponent(this.button_alter, frame_contain, gbc, 6, 9, 2, 1, 2, 1);
addComponent(this.button_delete, frame_contain, gbc, 7, 9, 2, 1, 2, 1);
addComponent(this.scroll_pane_table, frame_contain, gbc, 0, 0, 6, 8, 20, 10);
this.field_student_id.addCaretListener(this);
this.field_name.addCaretListener(this);
this.field_age.addActionListener(this);
this.field_java.addActionListener(this);
this.field_database.addActionListener(this);
this.field_data_structure.addActionListener(this);
this.field_total.addActionListener(this);
this.combo_box_gender.addActionListener(this);
this.button_refresh.addActionListener(this);
this.button_add.addActionListener(this);
this.button_alter.addActionListener(this);
this.button_delete.addActionListener(this);
this.table.getSelectionModel().addListSelectionListener(this);
this.frame.setVisible(true);
}
private void addComponent(Component c, Container contain, GridBagConstraints gbc, int row, int column, int width, int height, double weightx, double weighty)
{
gbc.gridy = row; // 第几行的格子
gbc.gridx = column; // 第几列的格子
gbc.gridwidth = width; // 占用几列格子
gbc.gridheight = height; // 占用几行格子
gbc.weightx = weightx; // 行方向分配的权重
gbc.weighty = weighty; // 列方向分配的权重
gbc.ipadx = 2; // 左右边缘的空白距离
gbc.ipady = 2; // 上下边缘的空白距离
contain.add(c, gbc); // 将组件c按照约束条件gbc添加到容器contain中
}
private void refreshTable()
{
this.table.setModel(new DefaultTableModel(this.student_info.getDataVector(), this.student_info.getTitleVector()));
}
private void importField(boolean import_student_id_flag)
{
if (import_student_id_flag) this.field_student_id.setText(this.student_info.student_id);
this.field_name.setText(this.student_info.name);
this.combo_box_gender.setSelectedItem(this.student_info.gender);
this.field_age.setText(String.valueOf(this.student_info.age));
this.field_java.setText(this.student_info.java.toString());
this.field_database.setText(this.student_info.database.toString());
this.field_data_structure.setText(this.student_info.data_structure.toString());
this.field_total.setText(this.student_info.total.toString());
}
private void exportField() throws NumberFormatException
{
this.student_info.student_id = this.field_student_id.getText();
this.student_info.name = this.field_name.getText();
this.student_info.gender = String.valueOf(this.combo_box_gender.getSelectedItem());
this.student_info.age = Integer.valueOf(this.field_age.getText());
this.student_info.java = this.student_info.getValidScore(this.field_java.getText());
this.student_info.database = this.student_info.getValidScore(this.field_database.getText());
this.student_info.data_structure = this.student_info.getValidScore(this.field_data_structure.getText());
this.student_info.total = this.student_info.getTotal();
this.field_java.setText(this.student_info.java.toString());
this.field_database.setText(this.student_info.database.toString());
this.field_data_structure.setText(this.student_info.data_structure.toString());
this.field_total.setText(this.student_info.total.toString());
}
public void actionPerformed(ActionEvent event)// 处理ActionEvent事件,处理按钮啊事件
{
try {
// System.out.println(this.student_info.getDataVector());
if (this.button_refresh == event.getSource()) {
this.refreshTable();
} else if (this.button_add == event.getSource()) {
try {
this.exportField();
this.student_info.insert();
this.button_add.setEnabled(false);
this.button_alter.setEnabled(true);
this.button_delete.setEnabled(true);
this.refreshTable();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, String.format("存在异常数据格式n异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
}
} else if (this.button_alter == event.getSource()) {
try {
this.exportField();
this.student_info.update();
this.button_add.setEnabled(false);
this.button_alter.setEnabled(true);
this.button_delete.setEnabled(true);
this.refreshTable();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, String.format("存在异常数据格式n异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
}
} else if (this.button_delete == event.getSource()) {
try {
this.exportField();
this.student_info.delete();
this.button_add.setEnabled(true);
this.button_alter.setEnabled(false);
this.button_delete.setEnabled(false);
this.refreshTable();
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, String.format("存在异常数据格式n异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
}
} else if (this.combo_box_gender == event.getSource()) {
this.student_info.gender = (String) this.combo_box_gender.getSelectedItem();
} else if (this.field_age == event.getSource()) {
this.student_info.age = Integer.valueOf(this.field_age.getText());
} else {
if (this.field_java == event.getSource()) {
this.student_info.java = this.student_info.getValidScore(this.field_java.getText());
this.field_java.setText(this.student_info.java.toString());
} else if (this.field_database == event.getSource()) {
this.student_info.database = this.student_info.getValidScore(this.field_database.getText());
this.field_database.setText(this.student_info.database.toString());
} else if (this.field_data_structure == event.getSource()) {
this.student_info.data_structure = this.student_info.getValidScore(this.field_data_structure.getText());
this.field_data_structure.setText(this.student_info.data_structure.toString());
}
this.field_total.setText(this.student_info.getTotal().toString());
// this.field_total.setText("");
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
// System.exit(0);
} catch (NumberFormatException e) {
// if (((JTextField) event.getSource()).getText().equals("")) return;
JOptionPane.showMessageDialog(null, String.format("数据格式输入异常n异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
((JTextField) event.getSource()).setText("");
}
}
public void valueChanged(ListSelectionEvent event)
{
int index_row = this.table.getSelectedRow();
if (index_row == -1) return;
this.field_student_id.setText(this.table.getValueAt(index_row, 0).toString());
// try {
// if (!this.student_info.select(this.table.getValueAt(index_row, 0).toString())) throw new SQLException("未查询到对应记录");
// this.importField(true);
// this.button_add.setEnabled(false);
// this.button_alter.setEnabled(true);
// this.button_delete.setEnabled(true);
// } catch (SQLException e) {
// JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
// System.exit(0);
// }
}
public void caretUpdate(CaretEvent event)
{
try {
if (this.field_student_id == event.getSource()) {
this.student_info.student_id = this.field_student_id.getText();
if (this.student_info.student_id.length() == 10) {
if (this.student_info.select(this.student_info.student_id)) {
this.importField(false);
this.button_add.setEnabled(false);
this.button_alter.setEnabled(true);
this.button_delete.setEnabled(true);
} else {
this.button_add.setEnabled(true);
this.button_alter.setEnabled(false);
this.button_delete.setEnabled(false);
}
} else {
this.button_add.setEnabled(false);
this.button_alter.setEnabled(false);
this.button_delete.setEnabled(false);
}
} else if (this.field_name == event.getSource()) {
this.student_info.name = this.field_name.getText();
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, String.format("异常信息:n%sn%s", e.toString(), e.getStackTrace()), "运行时异常", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
public void itemStateChanged(ItemEvent event) // 处理ItemEvent事件,处理Choice事件
{
if (this.combo_box_gender == event.getSource()) {
this.student_info.gender = (String) this.combo_box_gender.getSelectedItem();
}
}
}
转:
java - 课后作业 - JDBC - 学生信息管理系统 ----
--Posted from Rpc
关于ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于3.1.3视频教程交作业、asp.net学生作业管理系统、Flink提交作业运行的模式有哪些、java - 课后作业 - JDBC - 学生信息管理系统 ----的相关信息,请在本站寻找。
本文标签: