Java專案開發成績管理系統(三) 學生資訊模組—主介面設定
阿新 • • 發佈:2018-12-16
學生資訊模組負責管理學生的個人資訊,包括對學生人數的增加對資訊的修改等,
1.主介面設計:
學生資訊主介面包含選單欄,列表按鈕,等元件,其實現程式碼如下:
package student; import grade.GIndex; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; import javax.swing.JOptionPane; import javax.swing.JTable; import course.CIndex; import dao.CourseManager; import dao.GradeMarager; import dao.StudentManager; public class SIndex extends Frame implements ActionListener{ public static void main(String[] args) { } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } }
2.在SIndex類中宣告需要的元件
用於在事件監聽方法中直接使用。該介面使用BorderLayout佈局,介面最頂端時選單才做,底部提供了三個操作按鈕,中間用於存放列表資訊。
程式碼如下:
private Panel p1,p2,p3,p4; private Menu menu2,menu3; private MenuItem citem1; //選單項“課程資訊” private MenuItem gitem1; //選單項“成績資訊” private MenuBar bar; private Button btn1,addbtn,upbtn,delbtn; private Label lab; private TextField tf; private JScrollPane jsp; private StudentManager sm; private JTable jtab; private JOptionPane jop;
3.建立方法menuCreate()
該方法用於構建選單元件,其中選單包括課程資訊和成績資訊,可以帶你及相應的選單項進行介面之間的跳躍。
程式碼如下所示:
public void menuCreate() { bar = new MenuBar(); menu2 = new Menu("課程資訊"); menu3 = new Menu("成績資訊"); citem1 = new MenuItem("課程資訊"); citem1.addActionListener(this); menu2.add(citem1); gitem1 = new MenuItem("成績資訊"); gitem1.addActionListener(this); menu3.add(gitem1); bar.add(menu2); bar.add(menu3); this.setMenuBar(bar); }
4.建立SIndex類的構造方法
呼叫宣告的元件對學生資訊主介面進行佈局,程式碼如下所示:
public SIndex() {
this.setTitle("學生管理");
p1 = new Panel();
p1.setLayout(new BorderLayout());
p2 = new Panel();
p3 = new Panel();
p4 = new Panel();
menuCreate();
p1.add(p2, BorderLayout.NORTH);
lab = new Label("請輸入性別:");
tf = new TextField(8);
btn1 = new Button("開始查詢");
btn1.addActionListener(this);
p3.add(lab);
p3.add(tf);
p3.add(btn1);
p1.add(p3, BorderLayout.SOUTH);
this.add(p1, BorderLayout.NORTH);
sm = new StudentManager();
String sql = "select * from student where 0=?";
String[] param = new String[] {"0"};
sm.addStudent(sql, param);
jtab = new JTable(sm);
jtab.setRowHeight(30);
jsp = new JScrollPane(jtab);
this.add(jsp,BorderLayout.CENTER);
addbtn = new Button("新增");
upbtn = new Button("修改");
delbtn = new Button("刪除");
addbtn.addActionListener(this);
upbtn.addActionListener(this);
delbtn.addActionListener(this);
p4.add(addbtn);
p4.add(upbtn);
p4.add(delbtn);
this.add(p4, BorderLayout.SOUTH);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dim = tk.getScreenSize();
this.setSize(1000, tk.getScreenSize().height-200);
this.setLocationRelativeTo(null);
this.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent w) {
w.getWindow().setVisible(false);
((Frame) w.getComponent()).dispose();
System.exit(0);
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
});
this.setVisible(true);
}
5.實現actionPerformed()
並處理介面的選單事件,其程式碼如下:
public void actionPerformed(ActionEvent e) {
if(e.getSource()==citem1) {
CIndex cx = new CIndex();
cx.setVisible(true);
this.setVisible(false);
}
if(e.getSource()==gitem1) {
GIndex gx = new GIndex();
gx.setVisible(true);
this.setVisible(false);
}
if(e.getSource()==btn1) {
String jtf = tf.getText().trim();
if(jtf.equals("")) {
String sql = "select * from student where 1=?";
String[] param = new String[] {"1"};
sm = new StudentManager();
sm.addStudent(sql, param);
jtab.setModel(sm);
}else {
String sql = "select * from student where ssex=?";
String[] param = new String[] {jtf};
sm = new StudentManager();
sm.addStudent(sql, param);
jtab.setModel(sm);
}
}else if(e.getSource()==addbtn) {
Sadd add = new Sadd(this,"新增學生資訊",true);
sm = new StudentManager();
String sql = "select * from student where 1=?";
String[] param = new String[] {"1"};
sm.addStudent(sql, param);
jtab.setModel(sm);
}else if(e.getSource()==upbtn){
int rowNo = this.jtab.getSelectedRow();
if(rowNo == -1) {
jop.showMessageDialog(this,"請選擇修改項");
return;
}else{
Supd add = new Supd(this,"修改學生資訊",true,sm,rowNo);
sm = new StudentManager();
String sql = "select * from student where 1=?";
String[] param = new String[] {"1"};
sm.addStudent(sql, param);
jtab.setModel(sm);
}
}else if(e.getSource()==delbtn){
int rowNo = this.jtab.getSelectedRow();
if(rowNo == -1) {
jop.showMessageDialog(this,"請選擇刪除項");
return;
}else{
String sql = "delete from student where sid=?";
String sid = (String)this.jtab.getValueAt(rowNo, 0);
String[] param = new String[] {sid};
StudentManager sm1=new StudentManager();
sm1.updateStudent(sql, param);
String sql3 = "delete from student where gsid=?";
String[] param1 = new String[] {sid};
GradeManager gm=new GradeManager();
gm.updateGrade(sql3, param1);
sm = new StudentManager();
String sql2 = "select * from student where 1=?";
String[] param2 = new String[] {"1"};
sm.addStudent(sql2, param2);
jtab.setModel(sm);
}
}
}
6.在SIndex類中建立main()方法,呼叫該類的構造方法
public static void main(String[] args) {
SIndex sIndex =new SIndex();
}
至此學生資訊模組—主介面設定就全部完成了