SWT学生成绩管理系统(转)

这个程序终于完完整整地做完了,虽然还不完善,但基本的功能实现了。这个程序零零散散花费了我近一个月的时间,在这一个月的时间里,通过别人的帮助和对程序的调试本人收获不小。希望通过这个博客和大家分享一下我在程序中犯的错误。
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, 200, 20)); 
          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,255, 255, 255)); 
        } 
             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,255, 255, 255)); 
        } 
         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,255, 255, 255)); 
        } 
         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,255, 255, 255)); 
        } 
        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, 200, 20));flag= false
                    } 
                     else  if(text2.getText().equals(it[i].getText(1))) 
                    { 
                      it[i].setBackground( new Color(display, SWT.COLOR_DARK_RED, 200, 20));flag= false
                    } 
                     else  if(text3.getText().equals(it[i].getText(2))) 
                    { 
                      it[i].setBackground( new Color(display, SWT.COLOR_DARK_RED, 200, 20));flag= false
                    } 
                     else  if(text4.getText().equals(it[i].getText(3))) 
                    { 
                      it[i].setBackground( new Color(display, SWT.COLOR_DARK_RED, 200, 20));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(); 
  } 
    

 

转载于:https://www.cnblogs.com/xhqgogogo/p/3372293.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值