?? student.java~255~
字號:
package studentinformation;
import java.awt.* ;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.*;
import java.awt.CheckboxGroup;
import java.awt.Checkbox;
import java.util.Vector;
import java.awt.event.ItemEvent;
import java.io.IOException;
import java.io.File;
import java.io.RandomAccessFile;
//import java.awt.Label;
/**
* <p>Title: 學生信息管理與分析系統</p>
* <p>Description: 此系統尚處于完善階段,其目的并不在于簡單的對學生信息進行處理
* ,而在于幫助老師對學生信息進行分析,得到有關學生的各方面的信息,
* 從而使得老師們能依據這些信息調整教學計劃和方案.
* --By CS0405,熊殿(04281146)</p>
* <p>Copyright: AcoolX Copyright (c) 2006\03\22</p>
* <p>Company:AcoolX工作室 </p>
* @author not attributable
* @version 1.0
* 修改記錄:
* 本次修改主要是完善了有關功能.
* 新增加的功能包括動態創建各種信息的統計列表
*/
public class student
{
public static void main(String args[])
{
new menuFrame ();
}
}
//*******主菜單
class menuFrame extends Frame
implements ActionListener
{
float []fl={0,0,0,0,0,0};
public static Vector NewSetStudent=new Vector(30,1);//定義一個學生信息數據庫
MenuBar StudentMenu; //每10的增加
PopupMenu popM;
Menu files,tools,picture,helps,pictures,ways;
MenuItem open,newfile,close,save,save_as,sort,delete,change,seach,
insert,main_help,show,show_0,newfile_0,save_0,divide;
MenuItem[] text;
public static TextArea ta;
FileDialog fd;
Dialog SaveFile;
boolean informationChange=false;
Button yes,no,quit;
Frame frm;
public static int picture_start=0,picture_end=100;
public static int picture_divide=5;
int[][]divide_student_number;//專門用來保存每個科目和均分的各段學生人數
menuFrame()//這是主菜單類的構造函數
{
super("菜單");
divide_student_number=new int[7][20];// 初始化
for(int dsn1=0;dsn1<7;dsn1++)
for(int dsn2=0;dsn2<20;dsn2++)
{
divide_student_number[dsn1][dsn2]=0;
}
SaveFile =new Dialog(this,"保存文件?",true);
yes=new Button("是");
no=new Button("否");
quit=new Button("取消");
ta=new TextArea("\t\t\t\t\t\t歡迎您的使用\n",25,100);
add("Center",ta);
StudentMenu=new MenuBar();
files=new Menu("文件");
open=new MenuItem("打開");
newfile=new MenuItem("新建");
close=new MenuItem("關閉");
save=new MenuItem("保存");
save_as=new MenuItem("另存為");
open.addActionListener(this);
newfile.addActionListener(this);
close.addActionListener(this);
save.addActionListener(this);
save_as.addActionListener(this);
files.add(open);
files.add(newfile);
files.add(close);
files.add(save);
files.add(save_as);
StudentMenu.add(files);
tools=new Menu("工具箱");
seach=new MenuItem("查找");
sort=new MenuItem("排序");
delete=new MenuItem("刪除");
change=new MenuItem("修改");
insert=new MenuItem("插入");
seach.addActionListener(this);
sort.addActionListener(this);
delete.addActionListener(this);
change.addActionListener(this);
insert.addActionListener(this);
tools.add(seach);
tools.add(sort);
tools.add(delete);
tools.add(change);
tools.add(insert);
StudentMenu.add(tools);
pictures=new Menu("繪圖");
divide=new MenuItem("標準");
ways=new Menu("選擇");
text=new MenuItem[7];
text[0]=new MenuItem("Java");
text[1]=new MenuItem("匯編");
text[2]=new MenuItem("計組");
text[3]=new MenuItem("英語");
text[4]=new MenuItem("隨機");
text[5]=new MenuItem("圖論");
text[6]=new MenuItem("均分");
for(int m=0;m<7;m++)
{
ways.add(text[m]);
text[m].addActionListener(this);
}
pictures.add(ways);
pictures.add(divide);
divide.addActionListener(this);
StudentMenu.add(pictures);
helps=new Menu("幫助");
main_help=new MenuItem("關于主題");
show=new MenuItem("刷新");
main_help.addActionListener(this);
show.addActionListener(this);
helps.add(show);
helps.add(main_help);
StudentMenu.add(helps);
ta.addMouseListener(new HandelMouse(this));
popM=new PopupMenu();
show_0=new MenuItem("刷新");
save_0=new MenuItem("保存");
newfile_0=new MenuItem("新建");
popM.add(newfile_0);
popM.add(show_0);
popM.add(save_0);
ta.add(popM);
newfile_0.addActionListener(this);
show_0.addActionListener(this);
save_0.addActionListener(this);
yes.addActionListener(this);
no.addActionListener(this);
quit.addActionListener(this);
addWindowListener(new closeWin());
setSize(new Dimension(818,818));
setVisible(true) ;
this.setMenuBar( StudentMenu);
}//主菜單類的構造函數結束了
public static void showInformation()//這是主菜單類的一個公有方法
{
String[]sr=new String[8];
ta.setText("\t\t歡迎您的使用,如果您認為結果顯示不正常請選擇刷新\n");
ta.append("NewSetStudent.size()="+ // 為什么在新建調用時它總是不正確呢?
Integer.toString(NewSetStudent.size())+"\n");
ta.append("姓名\t學號\t班級\t性別\tJava\t匯編\t計組\t英語\t隨機\t圖論"
+"\t均分\t名次\n");
for(int i=0;i<NewSetStudent.size();i++)
{
ta.append(((setStudent)NewSetStudent.elementAt(i)).getName()+"\t");
ta.append(((setStudent)NewSetStudent.elementAt(i)).getNumber()+"\t");
ta.append(((setStudent)NewSetStudent.elementAt(i)).getToclass()+"\t");
ta.append(((setStudent) NewSetStudent.elementAt(i)).getSex()+"\t");
for (int j = 0; j < 6; j++)
{
sr[j]=Float.toString(
((setStudent) NewSetStudent.elementAt(i)).getMark(j));
ta.append(sr[j]+"\t");
}
sr[6]=Float.toString(
((setStudent)NewSetStudent.elementAt(i)).getAverage());
sr[7]=Integer.toString(
((setStudent) NewSetStudent.elementAt(i)).getIndex()) ;
ta.append(sr[6]+"\t");
ta.append(sr[7]+"\n");
}
}//該方法結束
//方法,數出各個分數段內的學生人數
public void getNumber()
{
float marks[]=new float[7];
for(int snum1=0;snum1<7;snum1++)
for(int snum2=0;snum2<20;snum2++)
divide_student_number[snum1][snum2]=0;
for(int j=0;j<=100-picture_divide;j+= picture_divide)
for(int i=0;i<NewSetStudent.size();i++)
{
for (int k = 0; k< 6; k++)
{
marks[k]=((setStudent) NewSetStudent.elementAt(i)).getMark(k);
if((marks[k]>=j)&&(marks[k]<j+picture_divide))
divide_student_number[k][j/picture_divide]+=1;
//這一步將得到第k門科目的第j/picture_divide段的人數
}
marks[6]=((setStudent)NewSetStudent.elementAt(i)).getAverage();
if((marks[6]>=j)&&(marks[6]<j+picture_divide))
divide_student_number[6][j/picture_divide]+=1;
//這一步將得到均分的第j/picture_divide段的人數
}
}
public void actionPerformed(ActionEvent e)//事件響應的實現
{
String[] sr=new String[8];
if(e.getActionCommand()=="關閉")
{
if(informationChange==false)
{
dispose();
System.exit(0);
}
else
{
Label label=new Label("您要保存現在的信息嗎?");
Panel p=new Panel();
p.add(new Label("您要保存現在的信息嗎?"));//這里運行時還有一點錯誤
SaveFile.add("Center",p); //估計應該跟沒有delete Label
p.add(yes); //有一點關系,但是暫時還不知道
p.add(no); //該怎么修改
p.add(quit);
SaveFile.setSize(180,100);
SaveFile.setLocation(150,150);
SaveFile.setVisible(true);
SaveFile.show() ;
}
}
else
if(e.getActionCommand()=="關于主題")
{
ta.setText("\n\t您現在使用的是由計算機學院熊殿編寫的"
+"\n\t一個學生信息管理系統。作為一個作業希"
+"\n\t望它能讓您滿意.本幫助尚需補充,請等待." );
}
else
if(e.getActionCommand()=="新建")
{
ta.setText("\t\t\t\t\t\t歡迎您的使用\n");
newfile.setEnabled(false) ;
open.setEnabled(false) ;
new enterInformationFrame();
new getAveIndex();
newfile.setEnabled(true) ;
open.setEnabled(true) ;
menuFrame.showInformation(); //為什么它就是不執行呢?
ta.append("\n\t\t\t如果您認為文本區沒有顯示正常的信息,"+
"請在幫助菜單下選擇刷新") ;
}
else
if(e.getActionCommand()=="排序")
{
if(!NewSetStudent.isEmpty())
{
ta.setText("") ;
ta.setText("\t\t\t\t歡迎您的使用,如果結果不正常請按刷新\n");
ta.append("NewSetStudent.size()="+
Integer.toString(NewSetStudent.size())+"\n");
ta.append("姓名\t學號\t班級\t性別\tJava\t匯編\t計組\t英語"+
"\t隨機\t圖論\t均分\t名次\n");
for(int i=1;i<=NewSetStudent.size();i++)
for(int j=0;j<NewSetStudent.size();j++)
if(((setStudent) NewSetStudent.elementAt(j)).getIndex()==i)
{
ta.append(
((setStudent)NewSetStudent.elementAt(j)).getName()+"\t");
ta.append(
((setStudent)NewSetStudent.elementAt(j)).getNumber()+"\t");
ta.append(
((setStudent)NewSetStudent.elementAt(j)).getToclass()+"\t");
ta.append(
((setStudent)NewSetStudent.elementAt(j)).getSex()+"\t");
for (int k = 0; k< 6;k++)
{
sr[k] = Float.toString(
((setStudent)NewSetStudent.elementAt(j)).getMark(j));
ta.append(sr[k] + "\t");
}
sr[6]=Float.toString(
((setStudent)NewSetStudent.elementAt(j)).getAverage());
sr[7]=Integer.toString(
((setStudent)NewSetStudent.elementAt(j)).getIndex());
ta.append(sr[6]+"\t");
ta.append(sr[7]+"\n");
}
}
else
{
ta.setText("");
ta.append("\t\t\t\t找不到對象,請先建立\n");
}
}
else
if(e.getActionCommand()=="查找")
{
if(!NewSetStudent.isEmpty())
{
new seachFrame();
}
else
{
ta.setText("");
ta.append("\t\t\t\t找不到對象,請先建立\n");
}
}
else
if(e.getActionCommand()=="刪除")
{
if(!NewSetStudent.isEmpty())
{
new deleteFrame();
new getAveIndex();
ta.setText("");
menuFrame.showInformation();
}
else
{
ta.setText("");
ta.append("\t\t\t\t找不到對象,請先建立\n");
}
}
else
if(e.getActionCommand()=="修改")
{
if(!NewSetStudent.isEmpty())
{
new changeFrame();
new getAveIndex();
ta.setText("");
ta.setText("\t\t\t\t\t\t歡迎您的使用\n");
showInformation();
}
}
else
if(e.getActionCommand()=="插入")
{
ta.append("\t請直接使用新建+插入\n");
}
else
if(e.getActionCommand()=="保存")
{
try
{
File studentFile=new File(
"C:\\Documents and Settings\\zhlab\\桌面","學生信息");
RandomAccessFile raf=new RandomAccessFile(studentFile,"rw");
raf.writeUTF("姓名\t學號\t班級\t性別\tJava\t匯編\t計組\t英語"+
"\t隨機\t圖論\t均分\t名次\n") ;
for(int i=0;i<NewSetStudent.size() ;i++)
{
raf.writeUTF(
((setStudent)NewSetStudent.elementAt(i)).getName());
raf.writeUTF("\t");
raf.writeUTF(
((setStudent)NewSetStudent.elementAt(i)).getNumber());
raf.writeUTF("\t");
raf.writeUTF(
((setStudent)NewSetStudent.elementAt(i)).getToclass());
raf.writeUTF("\t");
raf.writeUTF(
((setStudent)NewSetStudent.elementAt(i)).getSex());
raf.writeUTF("\t");
for(int k=0;k<6;k++)
{
raf.writeUTF(Float.toString(
((setStudent)NewSetStudent.elementAt(i)).getMark(k)));
raf.writeUTF("\t");
}
raf.writeUTF(Float.toString(
((setStudent)NewSetStudent.elementAt(i)).getAverage()));
raf.writeUTF("\t");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -