import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Windo extends JFrame implements ActionListener{
private static final long serialVersionUID = 2034652375246145970L;
private Control control;
private Display display;
private Storage storage;
private boolean flag;
public Windo()
{
this.setTitle("成绩分析系统");
Toolkit tk =Toolkit.getDefaultToolkit();
Dimension d= tk.getScreenSize();
int screenHeight=d.height;
int screenWidth=d.width;
setSize(screenWidth/2,screenHeight/2);
setLocation(screenWidth/4,screenHeight/4);
createMenu();
control=new Control(this);
String heading[]={"姓名","学号","数学","语文","计算机","平均分","及格否"};
display=new Display(this,7,heading);
display.displayTable2();
storage=new Storage(this);
flag=false;
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//setVisible(true);
}
public void actionPerformed(ActionEvent event){
String menuName=event.getActionCommand();
if(menuName.equals("新建")){
newTable();
}
else if(menuName.equals("打开")){
openTable();
}
else if(menuName.equals("保存")){
saveTable();
}
else if(menuName.equals("另存")){
saveAsTable();
}
else if(menuName.equals("退出")){
quitProgram();
}
else if(menuName.equals("添加新记录")){
addNewStudent();/////////////////////////////////
}
else if(menuName.equals("删除")){
deleteStudent();
}
else if(menuName.equals("查询")){
showStudent();
}
else if(menuName.equals("关闭")){
closeTable();
}
}// 排序、成绩分析
private void addNewStudent(){
if(control.hasGradeTable()){
control.addStudent();
showAllStudents();
flag=true;
}
else{///////////////////////////////////////////////
JOptionPane.showMessageDialog(this, "当前没有打开的成绩薄");
}
}
private void createNewTable(){
control.newGradeTable();
display.displayTable2();
if(control.hasGradeTable()){
setNewTitle();
flag=true;
}
}
private void deleteStudent(){
if(control.hasGradeTable()){
control.deleteStudent();
showAllStudents();
flag=true;
}
else{
JOptionPane.showMessageDialog(this, "当前没有打开成绩薄");
}
}
private void newTable(){
if(!control.hasGradeTable()){
createNewTable();
}
else{
int an=JOptionPane.showConfirmDialog(this, "保存当前成绩薄?","提示",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
switch(an){
case JOptionPane.YES_OPTION:
saveTable();
closeTable();
createNewTable();
break;
case JOptionPane.NO_OPTION:
closeTable();
createNewTable();
break;
case JOptionPane.CANCEL_OPTION:
break;
}
}
}
private void closeTable(){
if(control.hasGradeTable()){
if(flag){
int an=JOptionPane.showConfirmDialog(this, "保存当前成绩薄?","关闭提示",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
switch(an){
case JOptionPane.YES_OPTION:
saveTable();
break;
case JOptionPane.NO_OPTION:
break;
}
}
control.closertable();
display.closeTable();
this.setTitle("成绩分析系统");
}
}
private void openTable(){
if(control.hasGradeTable()){
int an=JOptionPane.showConfirmDialog(this, "保存当前成绩薄?","提示",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
switch(an){
case JOptionPane.YES_OPTION:
saveTable();
control.closertable();
display.closeTable();
break;
case JOptionPane.NO_OPTION:
break;
}
}
GradeTable table=storage.open();
if(table==null){
JOptionPane.showMessageDialog(this, "打开文件失败!");
}
else{
control.setGradeTable(table);
setNewTitle();
showAllStudents();
}
}
private void quitProgram(){
System.exit(0);
}
private void saveTable(){
if(control.hasGradeTable()){
GradeTable table=control.gettable();
boolean success=storage.save(table);
if(!success){
JOptionPane.showMessageDialog(this, "保存数据失败!");
}
else flag=false;
}
else {
JOptionPane.showMessageDialog(this, "当前没有打开的成绩薄!");
}
}
private void saveAsTable(){
if(control.hasGradeTable()){
GradeTable table=control.gettable();
boolean success=storage.saveAs(table);
if(!success){
JOptionPane.showMessageDialog(this, "另保存数据失败!");
}
else flag=false;
}
else {
JOptionPane.showMessageDialog(this, "当前没有打开的成绩薄!");
}
}
private void showAllStudents(){
if(control.hasGradeTable()){
GradeTable table=control.gettable();
display.displayAll(table);
}
else{
JOptionPane.showMessageDialog(this, "当前没有打开的成绩薄!");
}
}
private void showStudent(){
if(control.hasGradeTable()){
GradeTable table=control.gettable();
display.displayOne(table);
}
else{
JOptionPane.showMessageDialog(this, "当前没有打开的成绩薄!");
}
}
private void setNewTitle(){
String title=control.getclasTitle();
setTitle("当前打开的成绩薄:"+title);
}
private void createMenu()
{
MenuItem item;
Menu menu;
MenuBar menuBar;
menuBar=new MenuBar();//文件菜单
menu=new Menu("文件");
menuBar.add(menu);
item=new MenuItem("新建");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("打开");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("保存");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("另存");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("关闭");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("退出");
item.addActionListener(this);
menu.add(item);
menu=new Menu("编辑");//编辑菜单
menuBar.add(menu);
item=new MenuItem("查询");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("添加新记录");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("删除");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("修改");
item.addActionListener(this);
menu.add(item);
menu=new Menu("排序");//排序菜单
menuBar.add(menu);
item=new MenuItem("按数学成绩排序");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("按语文成绩排序");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("按计算机成绩排序");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("按个人平均成绩成绩排序");
item.addActionListener(this);
menu.add(item);
menu=new Menu("成绩分析");//每门课程成绩分析菜单
menuBar.add(menu);
item=new MenuItem("语文成绩分析");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("数学成绩分析");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("计算机成绩分析");
item.addActionListener(this);
menu.add(item);
item=new MenuItem("平均分分析");
item.addActionListener(this);
menu.add(item);
menu=new Menu("帮助");//帮助菜单
menuBar.add(menu);
setMenuBar(menuBar);
this.setVisible(true);
}
}