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

📄 studentinformetion.java

📁 清华教科书上的非常好的原代码
💻 JAVA
字号:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.applet.Applet;
import java.util.*;
import java.io.*;

public class studentinformetion
{
	public static void main(String arg[])
	{
		sdtframe si=new sdtframe();
	}
}

class sdtframe extends Frame implements TextListener,ActionListener,ItemListener
{
	student sdt1,sdt2;
	Label prompt=new Label("显示学生信息");
	TextField no=new TextField(9);
	TextField name=new TextField("姓名");
	TextField age=new TextField("年龄");
	Checkbox ismoniter=new Checkbox("班长");
	CheckboxGroup sex=new CheckboxGroup();
	Checkbox malesex=new Checkbox("男",true,sex);
	Checkbox femalesex=new Checkbox("女",false,sex);
	List year=new List(3,false);
	Choice month=new Choice();
	Choice date1=new Choice();
	Choice date2=new Choice();
	TextArea result=new TextArea("没有信息",5,30);
	Button reset=new Button("读出");
	Button enter=new Button("输入");
	FileDialog fd;//属性列表
     	
    sdtframe()
	{
		super("输入或显示学生信息");
		this.addWindowListener(new WinAdpt());
		this.setSize(400,250);
		show();
		GridBagLayout gbLayout=new GridBagLayout();
		GridBagConstraints gbc=new GridBagConstraints();
		setLayout(gbLayout);
		
		
		
		gbc.gridx=1;gbc.gridy=1;
		gbc.gridwidth=GridBagConstraints.REMAINDER;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(2,5,1,5);
		gbLayout.setConstraints(prompt, gbc);
		add(prompt);
		
		gbc.gridx=1;gbc.gridy=2;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(2,5,2,5);
		gbLayout.setConstraints(no, gbc);
		no.setEditable(false);
		add(no);
		
		gbc.gridx=2;gbc.gridy=2;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(2,5,2,5);
		gbLayout.setConstraints(name, gbc);
		name.addActionListener(this);
		add(name);
		
		gbc.gridx=3;gbc.gridy=2;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(2,5,2,5);
		gbLayout.setConstraints(age, gbc);
		age.addActionListener(this);
		add(age);
		
		gbc.gridx=4;gbc.gridy=2;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=0;gbc.weighty=0;
		gbc.insets=new Insets(2,5,2,5);
		gbLayout.setConstraints(ismoniter, gbc);
		ismoniter.addItemListener(this);
		add(ismoniter);
		
		
		gbc.gridx=1;gbc.gridy=3;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.NONE;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=0;gbc.weighty=0;
		gbc.insets=new Insets(5,5,2,5);
		gbLayout.setConstraints(malesex, gbc);
		malesex.addItemListener(this);
		add(malesex);
		
		gbc.gridx=1;gbc.gridy=4;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.NONE;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=0;gbc.weighty=0;
		gbc.insets=new Insets(2,5,5,5);
		gbLayout.setConstraints(femalesex, gbc);
		femalesex.addItemListener(this);
		add(femalesex);
		
		gbc.gridx=2;gbc.gridy=3;
		gbc.gridwidth=1;gbc.gridheight=2;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(5,5,5,5);
		gbLayout.setConstraints(year, gbc);
		year.add("2001");year.add("2002");year.add("2003");year.add("2004");
		year.addActionListener(this);
		year.addItemListener(this);
		add(year);
		
		gbc.gridx=3;gbc.gridy=3;
		gbc.gridwidth=2;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(5,5,2,5);
		gbLayout.setConstraints(year, gbc);
		month.add("一月");month.add("二月");month.add("三月");
		month.add("四月");month.add("五月");month.add("六月");
		month.add("七月");month.add("八月");month.add("九月");
		month.add("十月");month.add("十一月");month.add("十二月");
		month.addItemListener(this);
		add(month);
		
		gbc.gridx=3;gbc.gridy=4;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(1,5,5,2);
		gbLayout.setConstraints(date1, gbc);
		date1.add("0");date1.add("1");date1.add("2");date1.add("3");
		date1.addItemListener(this);
		add(date1);
		
		gbc.gridx=4;gbc.gridy=4;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.HORIZONTAL;
		gbc.anchor=GridBagConstraints.SOUTHEAST;
		gbc.weightx=1;gbc.weighty=0;
		gbc.insets=new Insets(1,2,5,5);
		gbLayout.setConstraints(date2, gbc);
		date2.add("0");date2.add("1");date2.add("2");date2.add("3");
		date2.add("4");
		date2.add("5");date2.add("6");date2.add("7");date2.add("8");
		date2.add("9");
		date2.addItemListener(this);
		add(date2);
		
		
		gbc.gridx=1;gbc.gridy=5;
		gbc.gridwidth=4;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.BOTH;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=1;gbc.weighty=1;
		gbc.insets=new Insets(2,5,5,5);
		gbLayout.setConstraints(result, gbc);
		add(result);
		
		gbc.gridx=2;gbc.gridy=6;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.NONE;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=0;gbc.weighty=0;
		gbc.insets=new Insets(5,5,5,5);
		gbLayout.setConstraints(reset, gbc);
		add(reset);
		
		gbc.gridx=3;gbc.gridy=6;
		gbc.gridwidth=1;gbc.gridheight=1;
		gbc.fill=GridBagConstraints.NONE;
		gbc.anchor=GridBagConstraints.CENTER;
		gbc.weightx=0;gbc.weighty=0;
		gbc.insets=new Insets(5,5,5,5);
		gbLayout.setConstraints(enter, gbc);
		enter.addActionListener(this);
		add(enter);
	}//构造函数
	
	
	public void textValueChanged(TextEvent e)
	{
		if(e.getSource()==name)
		  result.setText("响应文本改变事件,名字为:"+((TextField)e.getSource()).getText());
	}
	
	public void actionPerformed(ActionEvent e)
	{
	    if(e.getSource()=="读出")
	       {
	       	  fd=new FileDialog(this,"打开文件",FileDialog.LOAD);
	       	  fd.setDirectory("e://temp");
	       	  fd.show();
	       	  String fpath=fd.getDirectory()+fd.getFile();
	       	  sdt2=student.readsdf(fpath);
	       	  no.setText(Integer.toString(sdt2.sno));
	       	  name.setText(sdt2.sname);
	       	  if(sdt2.sismoniter)
	       	    ismoniter.setState(true);
	       	  else ismoniter.setState(false);
	       	  if(sdt2.sgender=='m')
	       	    malesex.setState(true);
	       	  else femalesex.setState(true);
	       	  age.setText(Double.toString(sdt2.sage));
	       	  year.select(sdt2.year);
	       	  month.select(sdt2.month);
	       	  date1.select(sdt2.date%10);
	       	  date2.select(sdt2.date%10);
	       	   
	       }
	       
	      else if(e.getSource()=="输入")
		  { String n=name.getText();
	         char ch;
	         boolean mon=ismoniter.getState();
	         int y,m,d;
	         int s=Integer.parseInt(no.getText());
	         if(malesex.getState())
	            ch='m';
	         else ch='f';
	         y=year.getSelectedIndex();
	         m=month.getSelectedIndex();
	         d=date1.getSelectedIndex()*10+date2.getSelectedIndex();
	         sdt1=new student(n,s,ch,mon,new Date(y,m,d));
	         no.setText(Integer.toString(sdt1.getsno()));
	         result.setText(sdt1.toString());
		  }
	         else
	         {
	         	result.setText(e.getActionCommand());
	         }
	    
	}
	public void itemStateChanged(ItemEvent e)
	{
		ItemSelectable is=e.getItemSelectable();
		if(is==ismoniter)
		{
			result.setText("改变了复选框的状态:");
			if(e.getStateChange()==ItemEvent.SELECTED)
			 result.appendText("选中");
			 else if(e.getStateChange()==ItemEvent.DESELECTED)
			 result.appendText("未选中");
		}
		else if(is==malesex)
		  result.setText("选中"+malesex.getLabel());
		else if(is==femalesex)
		  result.setText("选中"+femalesex.getLabel());
		else if(is==year)
		 result.setText("选中第"+((List)is).getSelectedIndex()+"个年份");
		else if(is==month)
		 result.setText("选中第"+((Choice)is).getSelectedIndex()+"个月份");
		 else if(is==date1)
		 result.setText("选中第"+((Choice)is).getSelectedIndex()+"个数天数十位");
		else if(is==date2)
		 result.setText("选中第"+((Choice)is).getSelectedIndex()+"个数天数个位");
	}
}	
class student
	{
		int year,month,date;
		int sno;
		String sname;
		boolean sismoniter;
		char sgender; 
		static int snextno;
		static final double totalpeoples=30;
		Date sbirthday;
		int sage;
		student(){}
		student(String name,int age,char sex,boolean moniter,Date birthday)
		{
			getnextsno();
			sno=sno++;
			setnextsno();
			sname=new String(name);
			sismoniter=moniter;
			sgender=sex;
			sbirthday=new Date(birthday.getTime());
		}	
		int getsno()
		{
			return sno;
		}
		
		int getnextsno()
		{
				try
				{
					File sdfdata=new File("e:\\sdfdata.dat");
					if(!sdfdata.exists()&&sdfdata.isFile())
					 snextno=020320101;
					 else
					 {
					 	DataInputStream din=new DataInputStream(new FileInputStream(sdfdata));
					 	snextno=din.readInt();
					 	din.close(); 
					 }
				}catch(Exception e){}
			return snextno;
		}
			
			
		void setnextsno()
		{
				try
				{
					File classdata=new File("e:\\sdfdata.dat");
					DataOutputStream dout=new DataOutputStream(new FileOutputStream(classdata));
					dout.writeInt(snextno);
					dout.close();
				}catch(Exception e){}
		}
			
		void writesdt(String path)
		{
				try
				{
					File sdtfile=new File("e:sdtclassdata.dat");
					DataOutputStream dout=new DataOutputStream(new FileOutputStream(sdtfile));
					dout.writeInt(sno);
					dout.writeBoolean(sismoniter);
					dout.writeInt(sgender);
					dout.writeInt(sage);
					dout.writeInt(sbirthday.getYear());
					dout.writeInt(sbirthday.getMonth());
					dout.writeInt(sbirthday.getDate());
					dout.writeUTF(sname);
					dout.close();
					
				}catch(Exception e){}
		}
			
		static student readsdf(String path)
		{
				student sdf=new student();
				try
				{
			         File sdffile=new File(path);
			         DataInputStream din=new DataInputStream(new FileInputStream(sdffile));
			         sdf.sno=din.readInt();
			         sdf.sismoniter=din.readBoolean();
			         sdf.sage=din.readInt();
			         sdf.year=din.readInt();
			         sdf.month=din.readInt();
			         sdf.date=din.readInt();
			         sdf.sname=new String(din.readUTF());
			         din.close();
			    }catch(Exception e){}
			    return sdf;
		}
			
						
			
		public String toString()
		{
				String s;
				s="学号:"+sno+
				";姓名"+sname;
				if(sismoniter)
				s=s+"是班长";
				if(sgender=='m')
				s=s+";\n 性别:男";
				else s=s+";\n 性别:女";
				s=s+"\n 年龄:"+(2004-sbirthday.getYear());
				if(sbirthday!=null)
				 s=s+";\n 出生日期:"+(sbirthday.getYear())+"/"+(sbirthday.getMonth()+1)+"/"+sbirthday.getDate();
				 return s;
		}
						
			
}
		
		
		
		

class WinAdpt extends WindowAdapter
{
		public void windowClosing(WindowEvent e)
		{
			((Frame)e.getWindow()).dispose();
			System.exit(0);
		}
}
	
	

⌨️ 快捷键说明

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