package appstu.view;
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JSplitPane;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.awt.Dimension;
import javax.swing.JInternalFrame;
import appstu.util.RetrieveObject;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
import java.util.Locale;
import java.util.Calendar;
import javax.swing.JOptionPane;
import appstu.util.CommonaJdbc;
import javax.swing.DefaultDesktopManager;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import appstu.model.Obj_gradeinfo_sub ;
public class JF_view_gradesub extends JInternalFrame {
BorderLayout borderLayout1 = new BorderLayout();
JSplitPane jSplitPane1 = new JSplitPane();
JScrollPane jScrollPane2 = new JScrollPane();
JPanel jPanel2 = new JPanel();
FlowLayout flowLayout1 = new FlowLayout();
JTable jTable1 = new JTable();
JLabel jLabel1 = new JLabel();
JComboBox jComboBox1 = new JComboBox();
JLabel jLabel2 = new JLabel();
JComboBox jComboBox2 = new JComboBox();
JButton jBadd = new JButton();
JButton jBsave = new JButton();
JButton jBexit = new JButton();
JScrollPane jScrollPane1 = new JScrollPane();
JTable jTable2 = new JTable();
//////////////////
String classid[] = null;
String examkindid[] = null;
String examkindname[] = null;
String subjectcode[] = null;
String subjectname[] = null;
JLabel jLabel3 = new JLabel();
JTextField jTextField1 = new JTextField();
JButton jBdel = new JButton();
public JF_view_gradesub() {
try {
jbInit();
initialize();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
getContentPane().setLayout(borderLayout1);
jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setDividerSize(10);
jPanel2.setLayout(flowLayout1);
jLabel1.setText("选择班级:");
jLabel2.setText("考试种类:");
jBadd.setText("添加");
jBadd.addActionListener(new JF_view_gradesub_jBadd_actionAdapter(this));
jBsave.setText("存盘");
jBsave.addActionListener(new JF_view_gradesub_jBsave_actionAdapter(this));
jBexit.setText("退出");
jBexit.addActionListener(new JF_view_gradesub_jBexit_actionAdapter(this));
this.setClosable(true);
jComboBox2.addItemListener(new JF_view_gradesub_jComboBox2_itemAdapter(this));
jLabel3.setText("考试日期:");
jTextField1.setPreferredSize(new Dimension(96, 26));
jTextField1.setText("");
flowLayout1.setAlignment(FlowLayout.RIGHT);
jTable1.addMouseListener(new JF_view_gradesub_jTable1_mouseAdapter(this));
jBdel.setText("删除");
jBdel.addActionListener(new JF_view_gradesub_jBdel_actionAdapter(this));
jSplitPane1.add(jScrollPane2, JSplitPane.TOP);
jSplitPane1.add(jScrollPane1, JSplitPane.BOTTOM);
jScrollPane1.getViewport().add(jTable2);
jPanel2.add(jLabel3);
jPanel2.add(jTextField1);
jPanel2.add(jLabel2);
jPanel2.add(jComboBox1);
jPanel2.add(jLabel1);
jPanel2.add(jComboBox2);
jPanel2.add(jBadd);
jPanel2.add(jBdel);
jPanel2.add(jBsave);
jPanel2.add(jBexit);
jScrollPane2.getViewport().add(jTable1);
this.getContentPane().add(jPanel2, java.awt.BorderLayout.NORTH);
this.getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
setSize(700,500);
setVisible(true);
jSplitPane1.setDividerLocation(159);
}
public void initialize(){
RetrieveObject retrieve = new RetrieveObject();
java.util.Vector vdata = new java.util.Vector();
String sqlStr = null;
java.util.Collection collection = null;
java.util.Iterator iterator = null;
sqlStr = "SELECT * FROM tb_examkinds";
collection = retrieve.getTableCollection(sqlStr);
iterator = collection.iterator();
examkindid = new String[collection.size()];
examkindname = new String[collection.size()];
int i = 0;
while(iterator.hasNext()){
vdata = (java.util.Vector)iterator.next();
examkindid[i] = String.valueOf(vdata.get(0));
examkindname[i] = String.valueOf(vdata.get(1));
jComboBox1.addItem(vdata.get(1));
i ++;
}
sqlStr = "select * from tb_classinfo";
collection = retrieve.getTableCollection(sqlStr);
iterator = collection.iterator();
classid = new String[collection.size()];
i = 0 ;
while(iterator.hasNext()){
vdata = (java.util.Vector)iterator.next();
classid[i] = String.valueOf(vdata.get(0));
jComboBox2.addItem(vdata.get(2));
i ++;
}
sqlStr = "select * from tb_subject";
collection = retrieve.getTableCollection(sqlStr);
iterator = collection.iterator();
subjectcode = new String[collection.size()];
subjectname = new String[collection.size()];
i = 0 ;
while(iterator.hasNext()){
vdata = (java.util.Vector)iterator.next();
subjectcode[i] = String.valueOf(vdata.get(0));
subjectname[i] = String.valueOf(vdata.get(1));
i ++;
}
long nCurrentTime = System.currentTimeMillis();
java.util.Calendar calendar = java.util.Calendar.getInstance(new
Locale("CN"));
calendar.setTimeInMillis(nCurrentTime);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
String mm, dd;
if (month < 10) {
mm = "0" + String.valueOf(month);
} else {
mm = String.valueOf(month);
}
if (day < 10) {
dd = "0" + String.valueOf(day);
} else {
dd = String.valueOf(day);
}
java.sql.Date date = java.sql.Date.valueOf(year + "-" + mm + "-" + dd);
jTextField1.setText(String.valueOf(date));
}
public void jComboBox2_itemStateChanged(ItemEvent e) {
String cid = classid[jComboBox2.getSelectedIndex()];
DefaultTableModel tablemodel = null;
String[] name = {"学生编号", "班级编号", "学生姓名", "性别", "年龄", "家庭住址", "联系电话"};
String sqlStr = "select * from tb_studentinfo where classID = '" + cid + "'";
appstu.util.RetrieveObject bdt = new appstu.util.RetrieveObject();
tablemodel = bdt.getTableModel(name, sqlStr);
jTable1.setModel(tablemodel);
jTable1.setRowHeight(24);
}
public void jBadd_actionPerformed(ActionEvent e) {
int currow ;
currow = jTable1.getSelectedRow();
System.out.println("当前行:" + currow);
if (currow >= 0){
DefaultTableModel tablemodel = null;
String[] name = {"学生编号","学生姓名", "考试类别", "考试科目", "考试成绩", "考试时间"};
tablemodel = new DefaultTableModel(name,0);
String sqlStr = null;
java.util.Collection collection = null;
Object[] object = null;
java.util.Iterator iterator = null;
sqlStr = "SELECT subject FROM tb_subject";
java 学生成绩管理系统
需积分: 0 47 浏览量
更新于2009-04-24
收藏 974KB RAR 举报
Java学生成绩管理系统是一款基于Java编程语言开发的软件应用,主要功能是管理和处理学生的成绩信息。这个系统的设计和实现充分体现了Java在业务应用中的强大能力,尤其在数据处理和用户界面设计方面。以下将详细阐述Java在开发学生成绩管理系统中的关键知识点。
1. **Java基础**:Java是一种面向对象的编程语言,具有跨平台性、安全性以及可移植性等优点,使其成为开发此类系统的理想选择。在本系统中,Java的基础语法、类和对象的概念、封装、继承和多态等特性都被广泛运用。
2. **集合框架**:在处理大量学生数据时,Java的集合框架如ArrayList、LinkedList、HashMap等扮演了重要角色。它们用于存储和管理学生对象,支持增删改查等操作,确保数据的有效组织和快速访问。
3. **文件输入/输出**:系统可能需要将数据持久化存储到本地文件,因此需要掌握Java的IO流技术,如FileReader、FileWriter、BufferedReader、BufferedWriter等,用于读写CSV或XML格式的成绩文件。
4. **数据库连接与操作**:为了提高数据的安全性和可靠性,通常会将成绩存储在数据库中,如MySQL或Oracle。Java通过JDBC(Java Database Connectivity)接口与数据库进行交互,包括建立连接、执行SQL语句、处理结果集等。
5. **Swing或JavaFX**:作为图形用户界面(GUI)工具包,Swing或JavaFX用于创建直观、友好的用户界面,如表格展示成绩、按钮触发操作等。开发者需要了解组件布局、事件监听和模型-视图-控制器(MVC)设计模式。
6. **异常处理**:在处理用户输入或数据库操作时,异常处理是必不可少的,Java的try-catch-finally语句块可以捕获并处理可能出现的错误,保证程序的健壮性。
7. **多线程**:如果系统需要同时处理多个任务,例如并发查询和更新成绩,那么理解Java的线程机制就很重要。可以创建Thread对象或使用ExecutorService来管理并发任务。
8. **设计模式**:良好的设计模式可以使代码更易于维护和扩展。在学生成绩管理系统中,可能会用到单例模式(数据库连接)、工厂模式(创建学生对象)、策略模式(不同的评分策略)等。
9. **测试与调试**:单元测试和集成测试是保证代码质量的关键,JUnit是一个常用的Java测试框架。同时,使用IDE的调试工具可以定位并修复程序中的错误。
10. **版本控制**:项目开发过程中,版本控制如Git可以帮助团队协作和跟踪代码变更,确保代码库的稳定和安全。
通过以上知识点的介绍,我们可以看到Java学生成绩管理系统不仅涵盖了Java语言的基础,还包括了数据库操作、GUI设计、异常处理等多个方面的综合运用,是学习和提升Java编程技能的一个良好实践项目。
zhc136
- 粉丝: 3
- 资源: 34
最新资源
- 知攻善防-应急响应靶机-web2.z11
- 知攻善防-应急响应靶机-web2.z12
- 知攻善防-应急响应靶机-web2.z13
- 知攻善防-应急响应靶机-web2.z15
- 知攻善防-应急响应靶机-web2.z16
- 知攻善防-应急响应靶机-web2.z14
- 大模型应用开发极简入门:基于 GPT-4 和 ChatGPT.pdf
- 知攻善防-应急响应靶机-web2.z17
- 知攻善防-应急响应靶机-web2.z19
- 知攻善防-应急响应靶机-web2.z18
- Simulink仿真:基于Matlab Simulink的H6光伏逆变器仿真建模 关键词:光伏电池 Matlab Simulink 仿真建模 参考文献:自建实验文档(数据和图可直接使用) 仿真平台:M
- 知攻善防-应急响应靶机-web2.z22
- 知攻善防-应急响应靶机-web2.z20
- 知攻善防-应急响应靶机-web2.z21
- 2026日历word版本
- AUV 增量PID轨迹跟踪 水下机器人无人船无人艇 USV路径跟随 MATLAB仿真