Java项目开发成绩管理系统(三) 学生信息模块—主界面设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40788630/article/details/83240020

学生信息模块负责管理学生的个人信息,包括对学生人数的增加对信息的修改等,

设计效果如下:

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

至此学生信息模块—主界面设置就全部完成了

猜你喜欢

转载自blog.csdn.net/qq_40788630/article/details/83240020