1. 程式人生 > >Java專案開發成績管理系統(三) 學生資訊模組—主介面設定

Java專案開發成績管理系統(三) 學生資訊模組—主介面設定

學生資訊模組負責管理學生的個人資訊,包括對學生人數的增加對資訊的修改等,

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();
	}

至此學生資訊模組—主介面設定就全部完成了