📄 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 + -