studentmanager.java

来自「用Java实现学生学籍管理系统」· Java 代码 · 共 374 行

JAVA
374
字号
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class StudentManager extends JFrame{

private JMenuBar jMenuBar1;
private JPanel jPanel1;
private JScrollPane jScrollPane1;
private JMenu mFile,mOpt,mHelp;
private JMenuItem mOpen,mSave,mExit;
private JMenuItem mNew,mModi,mClear,mFind,mDelete,mDeleteAll;
private JMenuItem mAbout;
private JList nameList;
JTextField txtID,txtName,txtSex,txtFath,txtData,txtBirth,txtClass,txtFrom;
JButton btnDelete,btnFind,btnNew,btnModi,btnClear;

private Student p;
private Students people=new Students();
private File chosenFile;
private int choice;
private JFileChooser fileChooser=new JFileChooser();

public StudentManager(){
	super("学籍管理系统");
	initComponents();
	nameList.setListData(people.toArray());
	setSize(500,530);
	setVisible(true);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void initComponents(){
	//添加菜单条
	jMenuBar1=new JMenuBar ();
	setJMenuBar(jMenuBar1);
	mFile=new JMenu ("文件");
	mOpen=new JMenuItem ("打开");
	mSave=new JMenuItem ("保存");
	mExit=new JMenuItem ("退出");
	mOpt=new JMenu ("编辑");
	mNew=new JMenuItem ("录入");
	mClear=new JMenuItem ("清空");
	mModi=new JMenuItem("修改");
	mFind=new JMenuItem ("查询");
	mDelete=new JMenuItem ("删除");
	mDeleteAll=new JMenuItem ("全部删除");
	mHelp=new JMenu ("帮助");
	mAbout=new JMenuItem ("关于");

	jMenuBar1.add(mFile);
	jMenuBar1.add(mOpt);
	jMenuBar1.add(mHelp);
	mFile.add(mOpen);
	mFile.add(mSave);
	mFile.add(mExit);
	mOpt.add(mNew);
	mOpt.add(mClear);
	mOpt.add(mModi);
	mOpt.add(mFind);
	mOpt.add(mDelete);
	mOpt.add(mDeleteAll);
	mHelp.add(mAbout);

	mOpen.addActionListener(new MemuL());
	mSave.addActionListener(new MemuL());
	mExit.addActionListener(new MemuL());
	mClear.addActionListener(new MemuL());
	mModi.addActionListener(new MemuL());
	mNew.addActionListener(new MemuL());
	mFind.addActionListener(new MemuL());
	mDelete.addActionListener(new MemuL());
	mDeleteAll.addActionListener(new MemuL());
	mAbout.addActionListener(new MemuL());	

	//添加一个面板
	jPanel1=new JPanel ();
	jPanel1.setLayout(new FlowLayout(FlowLayout.CENTER,5,20));
	getContentPane().add(jPanel1,BorderLayout.CENTER);

	jScrollPane1=new JScrollPane ();
	nameList=new JList ();
	jScrollPane1.setPreferredSize(new Dimension(200,0));
	jScrollPane1.setViewportView(nameList);
	nameList.setAutoscrolls(false);
	nameList.addMouseListener(new MouseAdapter(){
		public void mouseClicked(MouseEvent evt){nameListMouseClicked(evt);}
	});
	getContentPane().add(jScrollPane1,BorderLayout.WEST);

	btnDelete=new JButton ("删除");
	btnFind=new JButton ("查询");
	btnNew=new JButton ("录入");
	btnModi=new JButton ("修改");
	btnClear=new JButton("清空");

	JLabel lblid=new JLabel ("学号:");
	JLabel lblname=new JLabel ("姓名:");
	JLabel lblsex=new JLabel ("性别:");
	JLabel lbldata=new JLabel ("入学年份:");
	JLabel lblclass=new JLabel ("专业:");	
	JLabel lblbirth=new JLabel ("出生日期:");
	JLabel lblfath=new JLabel ("民族:");
	JLabel lblfrom=new JLabel ("籍贯:");
	txtID=new JTextField (20);
	txtName=new JTextField (20);
	txtSex=new JTextField (20);
	txtData=new JTextField (18);
	txtClass=new JTextField (20);
	txtBirth=new JTextField (18);
	txtFath=new JTextField (20);
	txtFrom=new JTextField (20);

	jPanel1.add(lblid);
	jPanel1.add(txtID);
	jPanel1.add(lblname);
	jPanel1.add(txtName);
	jPanel1.add(lblsex);
	jPanel1.add(txtSex);
	jPanel1.add(lbldata);
	jPanel1.add(txtData);
	jPanel1.add(lblclass);
	jPanel1.add(txtClass);
	jPanel1.add(lblbirth);
	jPanel1.add(txtBirth);
	jPanel1.add(lblfath);
	jPanel1.add(txtFath);
	jPanel1.add(lblfrom);
	jPanel1.add(txtFrom);
	jPanel1.add(btnClear);
	jPanel1.add(btnNew);
	jPanel1.add(btnFind);
	jPanel1.add(btnModi);
	jPanel1.add(btnDelete);

	btnClear.addActionListener(new MemuL());
	btnNew.addActionListener(new MemuL());
	btnModi.addActionListener(new MemuL());
	btnFind.addActionListener(new MemuL());
	btnDelete.addActionListener(new MemuL());
}

public class MemuL implements ActionListener{
	public void actionPerformed(ActionEvent e){
		String m=e.getActionCommand();
		if(m.equals("打开")){open();}
		if(m.equals("保存")){save();}
		if(m.equals("退出")){System.exit(1);}
		if(m.equals("清空")){clear();}
		if(m.equals("录入")){add();}
		if(m.equals("查询")){Inquest();}
		if(m.equals("删除")){delete();}
		if(m.equals("全部删除")){deleteall();}
		if(m.equals("修改")){saveEdited();}
		if(m.equals("关于")){about();}
	}

}

private void about(){
	JOptionPane.showConfirmDialog(this,"学籍管理系统\n制作人:程燕云04120010","关于",	JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
}

private void nameListMouseClicked(MouseEvent evt){
	p=(Student)(nameList.getSelectedValue());
	txtID.setText(p.ID);
	txtName.setText(p.name);
	txtSex.setText(p.sex);
	txtData.setText(p.data);
	txtClass.setText(p.class1);
	txtBirth.setText(p.birthday);
	txtFath.setText(p.fath);
	txtFrom.setText(p.from);
}

private void clear(){
	txtID.setText(null);
	txtName.setText(null);
	txtSex.setText(null);
	txtFath.setText(null);
	txtData.setText(null);
	txtBirth.setText(null);
	txtClass.setText(null);
	txtFrom.setText(null);
}

private void delete(){
	String nam=JOptionPane.showInputDialog("请输入要删除的学号或名字");
	p=people.findID(nam);
	if(p == null){
		p=people.findname(nam);
		if(p == null){
			JOptionPane.showConfirmDialog(this,"查无此人!","删除结果",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
			return;
		}
	}
	if(p!=null){
		//people.delete( nameList.getSelectedValue());
		people.delete( p);
		JOptionPane.showMessageDialog(null,"删除成功!");
		nameList.setListData(people.toArray());
		clear();
	}
}

private void deleteall(){
	for(int i=0;i<people.size();){
		p=(Student)people.get(i);
		people.delete(p);
	}
	nameList.setListData(people.toArray());
	clear();
}

private void Inquest(){
	String nam=JOptionPane.showInputDialog("请输入要查询的学号或名字");
	p=people.findID(nam);
	if(p == null){
		p=people.findname(nam);
		if(p == null){
			JOptionPane.showConfirmDialog(this,"查无此人!","查询结果",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
			return;
		}
	}
	if(p!=null){
	txtID.setText(p.ID);
	txtName.setText(p.name);
	txtSex.setText(p.sex);
	txtData.setText(p.data);
	txtClass.setText(p.class1);
	txtBirth.setText(p.birthday);
	txtFath.setText(p.fath);
	txtFrom.setText(p.from);
	}
}

private void add(){
	String xuehao="",xingming="",warning="";
	xuehao=txtID.getText().trim();
	xingming=txtName.getText().trim();
         	if(xuehao.length()>0&&xingming.length()>0){
		if(people.findID(xuehao)==null){
              			people.addnew(new Student (txtID.getText(),txtName.getText(),txtSex.getText(),txtData.getText(),txtClass.getText(),txtBirth.getText(),txtFath.getText(),txtFrom.getText()));
			nameList.setListData(people.toArray());
//			JOptionPane.showMessageDialog(null,"录入成功!");
			clear();
		}else{
                     		warning="该生基本信息已存在,请到修改页面修改!";
                       		JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
                   	}
	}else {
		warning="必须要输入学号及姓名信息!";
		JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
//		return;
	}
}

private void open(){
	choice=fileChooser.showOpenDialog(this);
	if(choice==JFileChooser.APPROVE_OPTION){
		chosenFile=fileChooser.getSelectedFile();
	}
	deserializePeople(chosenFile.getAbsolutePath());
}

private void save(){
	choice=fileChooser.showSaveDialog(this);
	if(choice==JFileChooser.APPROVE_OPTION){
		chosenFile=fileChooser.getSelectedFile();
		serializePeople(people,chosenFile.getAbsolutePath());
	}
}

private void serializePeople(Students people,String filename){
	try{
		String s="";
		Student stu=null;
		PrintWriter out=new PrintWriter(filename);
		for(int i=0;i<people.size();i++){
			stu=(Student)people.get(i);
			out.println(stu.ID);
			out.println(stu.name);
			out.println(stu.sex);
			out.println(stu.data);
			out.println(stu.class1);
			out.println(stu.birthday);
			out.println(stu.fath);
			out.println(stu.from);
//			s=s+stu.ID+"\n"+stu.name+"\n"+stu.sex+"\n"+stu.data+"\n"+stu.class1+"\n"+stu.birthday+"\n"+stu.fath+"\n"+stu.from+"\n";
//			out.println(s);
		}
		out.close();
	}catch(Exception e){
		System.out.println(e);
	}
}

private void deserializePeople(String filename){

	deleteall();

	try{
//		System.out.println(filename);
		FileReader in=new FileReader(filename);
		BufferedReader br=new BufferedReader(in);
		String s1,s2,s3,s4,s5,s6,s7,s8;
		s1=br.readLine();//System.out.println("1"+s1);
		s2=br.readLine();//System.out.println("2"+s2);
		s3=br.readLine();//System.out.println("3"+s3);
		s4=br.readLine();//System.out.println("4"+s4);
		s5=br.readLine();//System.out.println("5"+s5);
		s6=br.readLine();//System.out.println("6"+s6);
		s7=br.readLine();//System.out.println("7"+s7);
		s8=br.readLine();//System.out.println("8"+s8);
		while(s1.length()>0&&s2.length()>0){
			people.addnew(new Student (s1,s2,s3,s4,s5,s6,s7,s8));
			s1=br.readLine();//System.out.println("1"+s1);
			s2=br.readLine();//System.out.println("2"+s2);
			s3=br.readLine();//System.out.println("3"+s3);
			s4=br.readLine();//System.out.println("4"+s4);
			s5=br.readLine();//System.out.println("5"+s5);
			s6=br.readLine();//System.out.println("6"+s6);
			s7=br.readLine();//System.out.println("7"+s7);
			s8=br.readLine();//System.out.println("8"+s8);		
		}
		br.close();
	}catch(Exception e){
		System.out.println(e);
	}
	nameList.setListData(people.toArray());
}


private void saveEdited(){
	String xuehao="",xingming="";
	Student p;
	xuehao=txtID.getText().trim();
	xingming=txtName.getText().trim();
         	if(xuehao.length()>0&&xingming.length()>0){
		if((p=people.findID(xuehao))!=null){
			p.ID=txtID.getText().trim();
			p.name=txtName.getText().trim();
			p.sex=txtSex.getText().trim();
			p.data=txtData.getText().trim();
			p.class1=txtClass.getText().trim();
			p.birthday=txtBirth.getText().trim();
			p.fath=txtFath.getText().trim();
			p.from=txtFrom.getText().trim();
			nameList.setListData(people.toArray());
			JOptionPane.showMessageDialog(null,"修改成功!");
//			clear();
		}else{
                     		String warning="输入学号不存在,重新输入要修改的学号!";
			JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
//			clear();
                   	}
	}else{
		String warning="必须要输入学号及姓名信息!";
		JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
	}
}

public static void main(String args[]){
	JFrame frame=new StudentManager();
}

}





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?