把困难踩在脚下

迎难而上

 

GUI学生成绩管理系统

这个程序终于完完整整地做完了,虽然还不完善,但基本的功能实现了。这个程序零零散散花费了我近一个月的时间,在这一个月的时间里,通过别人的帮助和对程序的调试本人收获不小。希望通过这个博客和大家分享一下我在程序中犯的错误。

1.其实用SWT做东西,基本的组件什么的都挺容易,难的是两个或多个面板的调用(我想这就是面向对象思想吧)。当调用另一个Display时,一定要通过参数将主程序中的display传递到另一个程序中,然后在另一个程序用构造函数接受传递过来的display。

2.在用按钮调用另一个面板时,一定不要将面板设置为static类型的,否则第二次点击这个按钮时将会出错。

3.不管是主程序还是其它程序一定要有shell.open(),即将面板打开

4.在非主程序中还要有shell.close()即将面板关闭

下面看这个程序的要求:

要求:

1.实现增、删、改、查功能

2.使用SWT进行界面管理

下面大致的看一下这个程序的运行效果。

1、初次运行界面:

未命名

2、选择添加按钮:

未命名

输入信息,如果信息输入格式不正确:

未命名

输入正确的信息,就会添加到表格中。

3、选择删除按钮前,必须选中一条或多条信息,否则会出现:

未命名

选择将要删除的学生信息,点击删除按钮就会将改学生的信息在表格中删除。

4、选择修改按钮前,也必须选中一条信息,否则会出现:

未命名

选中信息后,点击修改按钮,就会出现修改学生信息窗口:

未命名

将信息修改后,点击确定按钮就会将原先的信息覆盖并显示在表格中

5、选择查询按钮,就会出现:

未命名

可以通过学号、姓名、成绩、班级或者他们中的任意一项或几项进行查询,如果一项都不写将出现:

未命名

如果没有您要查询的信息,将出现:

未命名

如果有您的信息,那么这个信息在表格中将以绿色显示:

未命名

这个程序还有许多要修改的地方。

//学生类
package com.dr.swt.XueChengXiTong;

public class Student {
    
private int id;
    
private String name;
    
private float score;
    
private String cls;
    
public int getId() {
        
return id;
    }

    
public void setId(int id) {
        
this.id = id;
    }

    
public String getName() {
        
return name;
    }

    
public void setName(String name) {
        
this.name = name;
    }

    
public float getScore() {
        
return score;
    }

    
public void setScore(float score) {
        
this.score = score;
    }

    
public String getCls() {
        
return cls;
    }

    
public void setCls(String cls) {
        
this.cls = cls;
    }


}

//主窗体
package com.dr.swt.XueChengXiTong;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

public class MainUI
{
    
static Table table=null;
    
public static void main(String args[])
    
{
        
final Display display=new Display();
        
final Shell shell=new Shell(display);
       
//创建窗体
        shell.setLayout(new FillLayout());
        shell.setText(
"学生成绩管理系统");
        shell.setBounds(
0,0,600,600);
        shell.setVisible(
true);
        
//创建表单
        table=new Table(shell,SWT.MULTI | SWT.FULL_SELECTION);
        table.setHeaderVisible(
true);
        table.setLinesVisible(
true);
        
//创建列
        TableColumn column1=new TableColumn(table, SWT.NONE);
        column1.setText(
"学号");
        column1.setWidth(
100);
        TableColumn column2
=new TableColumn(table,SWT.NONE);
        column2.setText(
"姓名");
        column2.setWidth(
100);
        TableColumn column3
=new TableColumn(table,SWT.NONE);
        column3.setText(
"成绩");
        column3.setWidth(
100);
        TableColumn column4
=new TableColumn(table,SWT.NONE);
        column4.setText(
"班级");
        column4.setWidth(
100);
        
//创建按钮容器
        Composite post=new Composite(shell,SWT.NONE);
        Button button1
=new Button(post,SWT.NONE);
        
//创建按钮
        button1.setText("添加");
        button1.setBounds(
30,30,100,50);
        Button button2
=new Button(post,SWT.NONE);
        button1.setBackground(
new Color(display, SWT.COLOR_DARK_RED, 20020));
        button2.setText(
"删除");
        button2.setBounds(
200,30,100,50);
        button2.setFont(
new Font(display,"宋体",20,SWT.NONE));
        Button button3
=new Button(post,SWT.NONE);
        button3.setText(
"修改");
        button3.setBounds(
30,150,100,50);
        Button button4
=new Button(post,SWT.NONE);
        button3.setEnabled(
true);
        button4.setText(
"查询");
        button4.setBounds(
200,150,100,50);
        
//table初始化
        new TableItem(table,SWT.LEFT).setText(new String[]{"10","张三","60","08楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"11","李四","90","09电本"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"12","王倩","70","08计本"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"13","李明","80","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"14","刘德华","50","08机电"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"15","范伟","40","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"16","朱元璋","70","08经贸"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"17","周星驰","65","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"18","李连杰","55","08楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"19","赵薇","78","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"20","林心如","70","08机械"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"21","周润发","88","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"22","成龙","73","08汉语言"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"23","赵本山","80","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"24","郭德纲","56","08小品"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"25","周迅","35","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"26","王络丹","49","08土木"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"27","刘亦菲","60","09楼宇"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"28","张静初","55","08建工"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"29","文章","78","09通信"});
        
new TableItem(table,SWT.LEFT).setText(new String[]{"30","王力宏","80","09楼宇"});
        
//为添加按钮添加事件处理
        button1.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                TableItem[] item
=table.getItems();
                
for(int i=0;i<item.length;i++)
                
{
                    item[i].setBackground(
new Color(display,255255255));
                }

                System.out.println(
"test");
                AddStudentUI.addStuShow(display,table);
            }

        }
);
        
//为删除按钮添加事件处理
        button2.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                TableItem[] item
=table.getItems();
                
for(int i=0;i<item.length;i++)
                
{
                    item[i].setBackground(
new Color(display,255255255));
                }

                
if(table.getSelectionIndex()==-1)
                
{
                    MessageBox box
=new MessageBox(shell);
                    box.setMessage(
"请选择要删除的内容");
                    box.open();
                }

                
else
                
{
                    
int[] selInices = table.getSelectionIndices();//将选中的序号放在数组中
                    table.remove(selInices);
                }

                
            }

        }
);
        
//为修改按钮添加事件处理
        button3.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                TableItem[] item
=table.getItems();
                
for(int i=0;i<item.length;i++)
                
{
                    item[i].setBackground(
new Color(display,255255255));
                }

                
if(table.getSelectionIndex()==-1)
                
{
                    MessageBox box
=new MessageBox(shell);
                    box.setMessage(
"请选择要修改的内容");
                    box.open();
                }

                
else
                
{
                    ModifyStudentUI.modifyStuShow(display, table);
                }

            }

        }
);
        
//为查找按钮添加事件处理
        button4.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                TableItem[] item
=table.getItems();
                
for(int i=0;i<item.length;i++)
                
{
                    item[i].setBackground(
new Color(display,255255255));
                }

                FindStuUI.findStuShow(display,table);
            }

        }
);
        
        shell.pack();
        shell.open();
        
while(!shell.isDisposed())
        
{
            
if(!display.readAndDispatch())
            
{
                display.sleep();
            }

        }

            
     }


}


//添加学生信息窗体
package com.dr.swt.XueChengXiTong;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

class AddStudentUI
{
     Display display
=null;
     Shell shell
=new Shell(display);
     
public AddStudentUI(Display dy) {
        display
=dy;
    }

    
public static  void addStuShow(Display dy,Table table) 
    
{
        AddStudentUI ast
=new AddStudentUI(dy);
        ast.run(table);
     }

    
private void run(final Table table) {
        shell.setBounds(
500,200,250,400);
        shell.setText(
"添加学生信息");
        
//添加标签
        Label id=new Label(shell,SWT.NONE);
        id.setText(
"学号");
        id.setBounds(
40,50,60,40);
        Label name
=new Label(shell,SWT.NONE);
        name.setText(
"姓名");
        name.setBounds(
40,100,60,40);
        Label score
=new Label(shell,SWT.NONE);
        score.setText(
"成绩");
        score.setBounds(
40,150,60,40);
        Label cls
=new Label(shell,SWT.NONE);
        cls.setText(
"班级");
        cls.setBounds(
40,200,60,40);
        
//添加文本框
        final Text text1=new Text(shell,SWT.NONE);
        text1.setBounds(
100,45,100,25);
        text1.setTextLimit(
2);//学号必须是两位
        final Text text2=new Text(shell,SWT.NONE);
        text2.setBounds(
100,95,100,25);
        text2.setTextLimit(
6);//姓名最多为三位
        final Text text3=new Text(shell,SWT.NONE);
        text3.setBounds(
100,145,100,25);
        
final Text text4=new Text(shell,SWT.NONE);
        text4.setBounds(
100,195,100,25);
        
//添加按钮
        Button button1=new Button(shell,SWT.NONE);
        button1.setText(
"确定");
        button1.setBounds(
55,250,60,40);
        Button button2
=new Button(shell,SWT.NONE);
        button2.setText(
"取消");
        button2.setBounds(
135,250,60,40);
        
//为确定按钮添加事件处理,添加信息
        button1.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                
try{
                Student stu
=new Student();
                stu.setId(Integer.parseInt(text1.getText()));
                stu.setName(text2.getText());
                stu.setScore(Float.valueOf(text3.getText()).floatValue());
                stu.setCls(text4.getText());
                
new TableItem(table,0).setText(new String[] { Integer.toString(stu.getId()) ,stu.getName(),Float.toString(stu.getScore()),stu.getCls()});
                shell.close();
                }
catch(NumberFormatException e1)
                
{
                    MessageBox box
=new MessageBox(shell,0);
                    box.setMessage(
"输入信息无效");
                    box.open();
                }

                
            }

        }
);
        
//为取消按钮添加事件处理
        button2.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                shell.close();
            }

        }
);
        shell.open();
    }

}


//修改学生窗体
package com.dr.swt.XueChengXiTong;

import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class ModifyStudentUI {
     Display display
=null;
     Shell shell
=new Shell(display);
     
public ModifyStudentUI(Display dy) {
        display
=dy;
    }
public static  void modifyStuShow(Display dy,Table table) 
    
{
        ModifyStudentUI mst
=new ModifyStudentUI(dy);
        mst.run(table);
     }

     
void run( final Table table) {
        shell.setBounds(
500,200,250,400);
        shell.setText(
"修改学生信息");
        
//添加标签
        Label id=new Label(shell,SWT.NONE);
        id.setText(
"学号");
        id.setBounds(
40,50,60,40);
        Label name
=new Label(shell,SWT.NONE);
        name.setText(
"姓名");
        name.setBounds(
40,100,60,40);
        Label score
=new Label(shell,SWT.NONE);
        score.setText(
"成绩");
        score.setBounds(
40,150,60,40);
        Label cls
=new Label(shell,SWT.NONE);
        cls.setText(
"班级");
        cls.setBounds(
40,200,60,40);
        
//添加文本框
        final Text text1=new Text(shell,SWT.NONE);
        text1.setBounds(
100,45,100,25);
        text1.setText(table.getItem(table.getSelectionIndex()).getText(
0));
        
final Text text2=new Text(shell,SWT.NONE);
        text2.setBounds(
100,95,100,25);
        text2.setText(table.getItem(table.getSelectionIndex()).getText(
1));
        
final Text text3=new Text(shell,SWT.NONE);
        text3.setBounds(
100,145,100,25);
        text3.setText(table.getItem(table.getSelectionIndex()).getText(
2));
        
final Text text4=new Text(shell,SWT.NONE);
        text4.setBounds(
100,195,100,25);
        text4.setText(table.getItem(table.getSelectionIndex()).getText(
3));
        
//添加按钮
        Button button1=new Button(shell,SWT.NONE);
        button1.setText(
"确定");
        button1.setBounds(
55,250,60,40);
        Button button2
=new Button(shell,SWT.NONE);
        button2.setText(
"取消");
        button2.setBounds(
135,250,60,40);
        
//为确定按钮添加事件处理,添加信息
        button1.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                
try{
                    Student stu
=new Student();
                    stu.setId(Integer.parseInt(text1.getText()));
                    stu.setName(text2.getText());
                    stu.setScore(Float.valueOf(text3.getText()).floatValue());
                    stu.setCls(text4.getText());
                    TableItem tableitem
=table.getItem(table.getSelectionIndex());
                    tableitem.setText(
new String[] { Integer.toString(stu.getId()) ,stu.getName(),Float.toString(stu.getScore()),stu.getCls()});
                    shell.close();
                    }
catch(NumberFormatException e1)
                    
{
                        MessageBox box
=new MessageBox(shell,0);
                        box.setMessage(
"输入信息无效");
                        box.open();
                    }

                    
            }

        }
);
        
//为取消按钮添加事件处理
        button2.addSelectionListener(new SelectionAdapter(){
            
public void widgetSelected(SelectionEvent e)
            
{
                shell.close();
            }

        }
);
        shell.open();
    }

}


//查询学生窗体
package com.dr.swt.XueChengXiTong;



import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

public class FindStuUI {
    Display display
=null;
    Shell shell
=new Shell(display);
    
public FindStuUI(Display dy)
    
{
        
this.display=dy;
    }

    
static void findStuShow(Display dy,Table table)
    
{
        FindStuUI fst
=new FindStuUI(dy);
        fst.run(table);
    }

    
public void run(final Table table)
    
{
        shell.setBounds(
500,200,280,400);
        shell.setText(
"查询学生信息");
        
//添加标签
        Label shuoming=new Label(shell,SWT.NONE);
        shuoming.setText(
"请输入所要查询的信息,至少输入一项");
        shuoming.setFont(
new Font(display,"宋体",10,SWT.BOLD));
        shuoming.setBounds(
10,30,245,20);
        Label id
=new Label(shell,SWT.NONE);
        id.setText(
"请输入要查询的学号");
        id.setBounds(
20,70,120,40);
        Label name
=new Label(shell,SWT.NONE);
        name.setText(
"请输入要查询的姓名");
        name.setBounds(
20,120,120,40);
        Label score
=new Label(shell,SWT.NONE);
        score.setText(
"请输入要查询的成绩");
        score.setBounds(
20,170,120,40);
        Label cls
=new Label(shell,SWT.NONE);
        cls.setText(
"请输入要查询的班级");
        cls.setBounds(
20,220,120,40);
        
//添加文本框
        final Text text1=new Text(shell,SWT.NONE);
        text1.setBounds(
140,65,100,25);
        
final Text text2=new Text(shell,SWT.NONE);
        text2.setBounds(
140,115,100,25);
        
final Text text3=new Text(shell,SWT.NONE);
        text3.setBounds(
140,165,100,25);
        
final Text text4=new Text(shell,SWT.NONE);
        text4.setBounds(
140,215,100,25);
        
//添加按钮
        Button button1=new Button(shell,SWT.NONE);
        button1.setText(
"确定");
        button1.setBounds(
55,270,60,40);
        Button button2
=new Button(shell,SWT.NONE);
        button2.setText(
"取消");
        button2.setBounds(
135,270,60,40);
        
//为确定按钮添加事件处理
        button1.addSelectionListener(new SelectionAdapter(){
                
public void widgetSelected(SelectionEvent e)
                
{
                    
boolean flag=false;
                    
if("".equals(text1.getText())&&"".equals(text2.getText())&&"".equals(text3.getText())&&"".equals(text4.getText()))
                    
{
                        MessageBox box 
= new MessageBox(shell);
                        box.setMessage(
"请至少输入一项信息");
                        box.open();
                        
                    }

                    
else
                    
{
                        
int count=0;
                        
                        TableItem it[]
=table.getItems();
                        
for(int i=0;i<it.length;i++)
                        
{
                            flag
=true;
                            
if(text1.getText().equals(it[i].getText(0)))
                            
{
                                it[i].setBackground(
new Color(display, SWT.COLOR_DARK_RED, 20020));flag=false;
                            }

                            
else if(text2.getText().equals(it[i].getText(1)))
                            
{
                                it[i].setBackground(
new Color(display, SWT.COLOR_DARK_RED, 20020));flag=false;
                            }

                            
else if(text3.getText().equals(it[i].getText(2)))
                            
{
                                it[i].setBackground(
new Color(display, SWT.COLOR_DARK_RED, 20020));flag=false;
                            }

                            
else if(text4.getText().equals(it[i].getText(3)))
                            
{
                                it[i].setBackground(
new Color(display, SWT.COLOR_DARK_RED, 20020));flag=false;
                            }

                            
if(flag==false)
                            
{
                                count
++;
                            }

                            
                        }

                        
if(count==0)
                        
{
                            MessageBox box
=new MessageBox(shell);
                            box.setMessage(
"很抱歉,没有你所要查询的信息");
                            box.open();
                            
                        }

                    
                    }

                    
if(flag)
                    
{
                        shell.close();
                    }

                    
                }

            }
);
            
//为取消按钮添加事件处理
            button2.addSelectionListener(new SelectionAdapter(){
                
public void widgetSelected(SelectionEvent e)
                
{
                    shell.close();
                }

            }
);
        shell.open();
    }

    

}


posted on 2010-11-02 15:21 冯魁 阅读(1492) 评论(1)  编辑  收藏

评论

# re: GUI学生成绩管理系统 2010-11-02 22:34 闫佳

牛~~~~~  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

快乐每一天!

Everything is an object!

常用链接

留言簿(2)

随笔档案

学习网站

搜索

最新评论

阅读排行榜

评论排行榜