⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 studentinfo.java

📁 用Java实现学生学籍信息的管理
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class StudentInfo implements MouseListener,WindowListener{   
 //为界面设计声明成员变量  
  private Frame frObj;
  private Checkbox checkObj;  
  private CheckboxGroup groupObj;  
  private Checkbox checkObj1,checkObj2;  
  private TextField tfObj;  
  private List listObj;  
  private Choice choiceObj;  
  private TextArea taObj;  
  private Button butObj1,butObj2;  
  private Label labObj1,labObj2,labObj3,labObj4,labObj5;  
  private Panel panelObj1,panelObj2,panelObj3,panelObj4,panelObj5,panelObj6;     
  public static void main(String args[])
   {    StudentInfo stuObj = new StudentInfo();    
	stuObj.create();   
   }    //在这个例子中,使用了四种常用容器  
  public void create()   
   {     //实例化一个标题为Student information example的Frame对象	  
     frObj = new Frame("Student information example");	   
        //生成“是否注册”复选框	 
     checkObj = new Checkbox("是否注册");	
       //生成“姓名”文本以及对应的文本框	
     labObj1 = new Label("姓名:");	
     tfObj   = new TextField(20);	   
       //生成“性别“文本以及对应的两个单选钮	
     labObj2 = new Label("性别:");	 
     groupObj = new CheckboxGroup();	
     checkObj1 = new Checkbox("男",groupObj,true);	
     checkObj2 = new Checkbox("女",groupObj,false);	 
       //生成”年级“文本以及对应的List对象	
     labObj3 = new Label("年级:");	
     listObj = new List(4,false);	
     listObj.add("一年级");	
     listObj.add("二年级");	
     listObj.add("三年级");	
     listObj.add("四年级");	
        //生成”系别“文本以及对应的Choice对象	
     labObj4 = new Label("系别:");	
     choiceObj = new Choice();	
     choiceObj.add("计算机");	
     choiceObj.add("数学");	
     choiceObj.add("物理");	
     choiceObj.add("外语");	
       //生成”显示一个学生所有信息“文本以及用于信息显示的文本区域	 
     labObj5 = new Label("显示一个学生所有信息:");	
     taObj = new TextArea();	  
       //生成”显示“和”保存“按钮	
     butObj1 = new Button("显示");	
     butObj2 = new Button("保存");	
        //实例化6个Panel对象,用于界面上各组件位置的控制	
     panelObj1 = new Panel();	 
     panelObj2 = new Panel();	
     panelObj3 = new Panel();	
     panelObj4 = new Panel();	 
     panelObj5 = new Panel();	
     panelObj6 = new Panel();	
       /*为panelObj1设置布局管理器,使学生姓名和是否注册复选框位于同一行上*/	    	         panelObj1.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));	
     panelObj1.add(checkObj);
     panelObj1.add(labObj1);	  
     panelObj1.add(tfObj);	
      /*为panelObj2设置布局管理器,设置”性别“文本和两个单选钮成纵向分布*/	 
     panelObj2.setLayout(new GridLayout(3,1));	 
     panelObj2.add(labObj2);	  
     panelObj2.add(checkObj1);	        panelObj2.add(checkObj2);	    /*panelObj3控制”年级“文本和List组件的位置关系*/	        panelObj3.setLayout(new BorderLayout());	 
     panelObj3.add("North",labObj3);	        panelObj3.add("Center",listObj);	
      /*panelObj4控制”系别“文本和Choice组件的位置关系*/	   
     panelObj4.setLayout(new BorderLayout());	
     panelObj4.add("North",labObj4);	  
     panelObj4.add("Center",choiceObj);	
      /*panelObj5控制”显示一个学生所有信息“文本和TextArea组件的位置关系*/	              
     panelObj5.setLayout(new BorderLayout());	 
     panelObj5.add("North",labObj5);	 
     panelObj5.add("Center",taObj);	          /*panelObj6控制”显示“和”保存“按钮的位置关系*/	  
     panelObj6.setLayout(new FlowLayout(FlowLayout.CENTER,80,20));	
     panelObj6.add(butObj1);	
     panelObj6.add(butObj2);	  
        /*声明GridBagLayout和GridBagConstraints对象,用于控制整个界面的布局*/	        
     GridBagLayout gridbag = new GridBagLayout();	    
     GridBagConstraints c = new GridBagConstraints();	  
       //为Frame设置GridBagLayout布局管理器	  
     frObj.setLayout(gridbag);	   
       //下面四行语句使学生姓名和”是否注册“复选框占一行显示	   
     c.gridwidth =GridBagConstraints.REMAINDER;	 
     c.weightx = 1.0;	  
     gridbag.setConstraints(panelObj1,c);	
     frObj.add(panelObj1);	 
    	    /*下面的11行语句将性别、年级和系别三部分上端对齐显示*/	   
     c.anchor = GridBagConstraints.NORTH;	 
     c.gridwidth = 1;	  
     c.gridheight = 4;	 
     c.weightx = 1.0;	
     gridbag.setConstraints(panelObj2,c);	   
     gridbag.setConstraints(panelObj3,c);	    
     frObj.add(panelObj2);	    
     frObj.add(panelObj3);	    
     c.gridwidth = GridBagConstraints.REMAINDER;	    
     gridbag.setConstraints(panelObj4,c);	         frObj.add(panelObj4);	  
   /*下面5行语句使”显示一个学生所有信息“文本和对应的文本区域在性别、年级、系别三部分下面显示*/	     c.gridwidth = GridBagConstraints.REMAINDER;	         c.gridheight = 4;
     c.weightx = 1.0;	   
     gridbag.setConstraints(panelObj5,c);	     frObj.add(panelObj5);
      /*下面三行语句将”显示“按钮和”保存“按钮另起一行显示*/	        c.gridwidth = GridBagConstraints.RELATIVE;	
     gridbag.setConstraints(panelObj6,c);	     frObj.add(panelObj6);	    	    
       //下面的两个语句设置窗口以紧凑的方式显示	       frObj.pack();	
    frObj.setVisible(true);	
     //为按钮和窗口注册事件注册器	        butObj1.addMouseListener(this);	    
    butObj2.addMouseListener(this);	        frObj.addWindowListener(this);   }	 
/**方法mouseClicked用于处理鼠标单击的事件,也就是当鼠标单击事件发生后,程序就会进入该方法中执行*/  
    public void mouseClicked(MouseEvent e)
    {//下面这个语句用于获得事件源按钮  
      Button butObj = (Button)(e.getSource());    	/*声明一个String型变量tempStr,用于获得界面 上不同组件的字符串内容*/  
      String tempStr;  	/*声明一个StringBuffer对象totalBuf,用来进行字符串的处理操作*/   	      StringBuffer totalBuf = new StringBuffer();   
      String totalStr;   	
      Checkbox tempCheck = groupObj.getSelectedCheckbox();   
	/*下面这段代码用来将有关的学生信息组合起来,用一个字符串totalStr表示*/   	
      tempStr = tfObj.getText();   	
      totalBuf.append(tempStr);   	      if(checkObj.getState()==true)   
		totalBuf.append("  已注册");  
      else          totalBuf.append("  未注册");  
      tempStr = tempCheck.getLabel();   
      totalBuf.append("  "+tempStr);   
      tempStr = listObj.getSelectedItem();   
      totalBuf.append("  "+tempStr);   	      tempStr = choiceObj.getSelectedItem();  
      totalBuf.append("  "+tempStr);   	      totalStr = totalBuf.toString();   	
      /*下面是根据单击不同的按钮执行不同的操作*/  
      //如果单击的是"显示"按钮,就将信息显示在文本区域中   	
      if(butObj.getLabel()=="显示")   	
        {   		         taObj.setText(totalStr);   	}   
	//如果单击的是"保存"按钮,就将学生信息保存在文件中   	     else if(butObj.getLabel()=="保存")  
 	{ //实例化InfoSave类的一个对象   		         InfoSave saveObj = new InfoSave();   	
  	/*调用InfoSave类的writeFun方法将学生信息写入文件中*/   	
  	saveObj.writeFun(totalStr);  
 	}    
      }   
    //下面的语句重写MouseListener和WindowListener接口中的方法 
      public void mouseEntered(MouseEvent e){}          public void mouseExited(MouseEvent e){} 
      public void mousePressed(MouseEvent e){}          public void mouseReleased(MouseEvent e){} 
     //重写windowClosing方法,关闭窗口时,程序退出          public void windowClosing(WindowEvent e){  System.exit(0);    }  
      public void windowOpened(WindowEvent e){}	   
      public void windowIconified(WindowEvent e){}    
      public void windowDeiconified(WindowEvent e){}    
      public void windowClosed(WindowEvent e){}          public void windowActivated(WindowEvent e){}    
     public void windowDeactivated(WindowEvent e){}	
   }
   //类InfoSave用于将信息写入到文件中存储起来
 class InfoSave
   {
      boolean boolObj;	      public void writeFun(String str)
       {    try{	    	//创建一个File对象fileObj		                  File fileObj = new File("stuIfo.txt");
    		/*下面的语句首先通过使用getBytes()方法将参数字符串放到一个byte数组中,"8859_1"用于指定编码方式,使得输入的汉字可以正确的输入到文件中*/		
               String wrStr = new String(str.getBytes(),"8859_1");
              /*如果当前目录下不存在stuIfo.txt文件,就创建该文件*/	
        	if(fileObj.exists()==false)  			                   boolObj = fileObj.createNewFile();		
                /*创建一个RandomAccessFile对象,用于进行随机访问文件的处理*/		                   RandomAccessFile ranFile = new RandomAccessFile(fileObj,"rw");		                   //下面两个语句将文件指针放在文件的结尾处		
                  long len = ranFile.length();	
                  ranFile.seek(len);		
                        /*将字符串wrStr写入文件的结尾处,并且每次写入新的信息,都换行写入*/		                ranFile.writeBytes("\r\n"+wrStr);	
                ranFile.close();	                 }
          catch(UnsupportedEncodingException e)
                    {System.out.println(e);  }           catch(IOException e)
                   {System.out.println(e);    }
 	}
}

⌨️ 快捷键说明

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