/*  Table STUDENT  */
CREATE TABLE STUDENT (
  ID CHAR(6) NOT NULL,
  NAME VARCHAR(20) NOT NULL,
  SEX CHAR(1) DEFAULT 'M' NOT NULL,
  CLASS CHAR(4),
  DEPARTMENT SMALLINT,
  BIRTHDAY TIMESTAMP,
  NATIVE_PLACE VARCHAR(50)
);
/*  PrimaryKey ID  */
ALTER TABLE STUDENT
  ADD CONSTRAINT ID 
  PRIMARY KEY (ID);/*  Table CHANGE  */
CREATE TABLE CHANGE (
  ID SMALLINT NOT NULL,
  STUDENT CHAR(6) NOT NULL,
  CHANGE CHAR(1) NOT NULL,
  REC_TIME TIMESTAMP NOT NULL,
  DESCRIPTION VARCHAR(4000)
);
/*  PrimaryKey CHANGE_ID  */
ALTER TABLE CHANGE
  ADD CONSTRAINT CHANGE_ID 
  PRIMARY KEY (ID);/*  Table REWARD  */
CREATE TABLE REWARD (
  ID SMALLINT NOT NULL,
  STUDENT CHAR(6) NOT NULL,
  LEVELS CHAR(1) NOT NULL,
  REC_TIME TIMESTAMP NOT NULL,
  DESCRIPTION VARCHAR(4000)
);
/*  PrimaryKey REWARD_ID  */
ALTER TABLE REWARD
  ADD CONSTRAINT REWARD_ID 
  PRIMARY KEY (ID);/*  Table PUNISHMENT  */
CREATE TABLE PUNISHMENT (
  ID SMALLINT NOT NULL,
  STUDENT CHAR(6) NOT NULL,
  LEVELS CHAR(1) NOT NULL,
  REC_TIME TIMESTAMP NOT NULL,
  ENABLE CHAR(1) DEFAULT 'T' NOT NULL,
  DESCRIPTION VARCHAR(4000)
);
/*  PrimaryKey PUNISHMENT_ID  */
ALTER TABLE PUNISHMENT
  ADD CONSTRAINT PUNISHMENT_ID 
  PRIMARY KEY (ID);/*  Table DEPARTMENT  */
CREATE TABLE DEPARTMENT (
  ID SMALLINT NOT NULL,
  NAME VARCHAR(50) NOT NULL
);
/*  PrimaryKey DEPARTMENT_ID  */
ALTER TABLE DEPARTMENT
  ADD CONSTRAINT DEPARTMENT_ID 
  PRIMARY KEY (ID);/*  Table CLASS  */
CREATE TABLE CLASS (
  ID CHAR(4) NOT NULL,
  NAME VARCHAR(50) NOT NULL,
  MONITOR CHAR(6),
  DEPARTMENT SMALLINT NOT NULL
);
/*  PrimaryKey CLASS_ID  */
ALTER TABLE CLASS
  ADD CONSTRAINT CLASS_ID 
  PRIMARY KEY (ID);/*  Table CHANGE_CODE  */
CREATE TABLE CHANGE_CODE (
  CODE CHAR(1) NOT NULL,
  DESCRIPTION VARCHAR(50)
);
/*  PrimaryKey CHANGE_CODE  */
ALTER TABLE CHANGE_CODE
  ADD CONSTRAINT CHANGE_CODE 
  PRIMARY KEY (CODE);/*  Table REWARD_LEVELS  */
CREATE TABLE REWARD_LEVELS (
  CODE CHAR(1) NOT NULL,
  DESCRIPTION VARCHAR(50)
);
/*  PrimaryKey REWARD_LEVELS  */
ALTER TABLE REWARD_LEVELS
  ADD CONSTRAINT REWARD_LEVELS 
  PRIMARY KEY (CODE);/*  Table PUNISH_LEVELS  */
CREATE TABLE PUNISH_LEVELS (
  CODE CHAR(1) NOT NULL,
  DESCRIPTION VARCHAR(50)
);
/*  PrimaryKey PUNISH_LEVELS  */
ALTER TABLE PUNISH_LEVELS
  ADD CONSTRAINT PUNISH_LEVELS 
  PRIMARY KEY (CODE);/*  Table COUNTER  */
CREATE TABLE COUNTER (
  ID CHAR(1) NOT NULL,
  COUNTER_VALUE SMALLINT NOT NULL
);
/*  PrimaryKey COUNTER_ID  */
ALTER TABLE COUNTER
  ADD CONSTRAINT COUNTER_ID 
  PRIMARY KEY (ID);/*  ForeignKey CHANGE  */
ALTER TABLE CHANGE
  ADD CONSTRAINT CHANGE 
  FOREIGN KEY (CHANGE) 
  REFERENCES CHANGE_CODE;
/*  ForeignKey STUDENT1  */
ALTER TABLE CHANGE
  ADD CONSTRAINT STUDENT1 
  FOREIGN KEY (STUDENT) 
  REFERENCES STUDENT;
/*  ForeignKey MONITOR  */
ALTER TABLE CLASS
  ADD CONSTRAINT MONITOR 
  FOREIGN KEY (MONITOR) 
  REFERENCES STUDENT;
/*  ForeignKey PUNISH  */
ALTER TABLE PUNISHMENT
  ADD CONSTRAINT PUNISH 
  FOREIGN KEY (LEVELS) 
  REFERENCES PUNISH_LEVELS;
/*  ForeignKey STUDENT3  */
ALTER TABLE PUNISHMENT
  ADD CONSTRAINT STUDENT3 
  FOREIGN KEY (STUDENT) 
  REFERENCES STUDENT;
/*  ForeignKey REWARD  */
ALTER TABLE REWARD
  ADD CONSTRAINT REWARD 
  FOREIGN KEY (LEVELS) 
  REFERENCES REWARD_LEVELS;
/*  ForeignKey STUDENT2  */
ALTER TABLE REWARD
  ADD CONSTRAINT STUDENT2 
  FOREIGN KEY (STUDENT) 
  REFERENCES STUDENT;
/*  ForeignKey CLASS  */
ALTER TABLE STUDENT
  ADD CONSTRAINT CLASS 
  FOREIGN KEY (CLASS) 
  REFERENCES CLASS;

解决方案 »

  1.   

    unit u_main;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, ComCtrls, DBCtrls, StdCtrls, Mask, Grids, DBGrids, ExtCtrls;type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        TabSheet3: TTabSheet;
        TabSheet4: TTabSheet;
        TabSheet5: TTabSheet;
        Database1: TDatabase;
        T_student: TTable;
        DS_student: TDataSource;
        DBGrid1: TDBGrid;
        DBNavigator1: TDBNavigator;
        Label1: TLabel;
        i_stud_id_1: TMaskEdit;
        GroupBox1: TGroupBox;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        i_change: TRadioGroup;
        i_descrip_1: TMemo;
        Label5: TLabel;
        Button1: TButton;
        Button2: TButton;
        T_stud_info_1: TTable;
        DS_stud_info_1: TDataSource;
        DBText1: TDBText;
        DBText2: TDBText;
        DBText3: TDBText;
        T_class_info_1: TTable;
        DS_class_info_1: TDataSource;
        DS_depart_info_1: TDataSource;
        T_depart_info_1: TTable;
        T_counter_c: TTable;
        T_change: TTable;
        Label6: TLabel;
        i_stud_id_2: TMaskEdit;
        GroupBox2: TGroupBox;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        DBText4: TDBText;
        DBText5: TDBText;
        DBText6: TDBText;
        i_reward_level: TRadioGroup;
        Label10: TLabel;
        i_descrip_2: TMemo;
        Button3: TButton;
        Button4: TButton;
        Label11: TLabel;
        i_stud_id_3: TMaskEdit;
        GroupBox3: TGroupBox;
        Label12: TLabel;
        Label13: TLabel;
        Label14: TLabel;
        DBText7: TDBText;
        DBText8: TDBText;
        DBText9: TDBText;
        i_punish_level: TRadioGroup;
        Label15: TLabel;
        i_descrip_3: TMemo;
        Button5: TButton;
        Button6: TButton;
        T_counter_r: TTable;
        T_reward: TTable;
        T_counter_p: TTable;
        T_punish: TTable;
        Label16: TLabel;
        i_stud_id_4: TMaskEdit;
        GroupBox4: TGroupBox;
        Label17: TLabel;
        Label18: TLabel;
        Label19: TLabel;
        Label20: TLabel;
        Label21: TLabel;
        Label22: TLabel;
        Label23: TLabel;
        Label24: TLabel;
        Label25: TLabel;
        DBGrid2: TDBGrid;
        DBGrid3: TDBGrid;
        DBGrid4: TDBGrid;
        DBEdit1: TDBEdit;
        DBEdit2: TDBEdit;
        DBEdit3: TDBEdit;
        GroupBox5: TGroupBox;
        DBLookupComboBox1: TDBLookupComboBox;
        DBLookupComboBox2: TDBLookupComboBox;
        T_stud_info_4: TTable;
        DS_stud_info_4: TDataSource;
        Button7: TButton;
        Button8: TButton;
        T_class_info_4: TTable;
        DS_class_info_4: TDataSource;
        T_depart_info_4: TTable;
        DS_depart_info_4: TDataSource;
        T_change_4: TTable;
        DS_change_4: TDataSource;
        T_reward_4: TTable;
        DS_reward_4: TDataSource;
        T_punish_4: TTable;
        DS_punish_4: TDataSource;
        GroupBox6: TGroupBox;
        GroupBox7: TGroupBox;
        Label26: TLabel;
        Label27: TLabel;
        DBLookupComboBox3: TDBLookupComboBox;
        DBMemo1: TDBMemo;
        Button9: TButton;
        Button10: TButton;
        T_change_code_4: TTable;
        DS_change_code_4: TDataSource;
        Label28: TLabel;
        DBLookupComboBox4: TDBLookupComboBox;
        Label29: TLabel;
        DBMemo2: TDBMemo;
        Button11: TButton;
        Button12: TButton;
        T_reward_level_4: TTable;
        DS_reward_level_4: TDataSource;
        Label30: TLabel;
        Label31: TLabel;
        DBRadioGroup1: TDBRadioGroup;
        DBMemo3: TDBMemo;
        DBLookupComboBox5: TDBLookupComboBox;
        Button13: TButton;
        Button14: TButton;
        T_punish_level_4: TTable;
        DS_punish_level_4: TDataSource;
        DBRadioGroup2: TDBRadioGroup;
        procedure FormCreate(Sender: TObject);
        procedure i_stud_id_1Change(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure i_stud_id_2Change(Sender: TObject);
        procedure i_stud_id_3Change(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure i_stud_id_4Change(Sender: TObject);
        procedure Button7Click(Sender: TObject);
        procedure Button8Click(Sender: TObject);
        procedure Button9Click(Sender: TObject);
        procedure Button10Click(Sender: TObject);
        procedure Button11Click(Sender: TObject);
        procedure Button12Click(Sender: TObject);
        procedure Button13Click(Sender: TObject);
        procedure Button14Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      

  2.   

    implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
    //  try
        Database1.Open;
    //  except
    //    Application.MessageBox('请确认用户名密码!','数据库连接错误',MB_OK);
    //    Application.Terminate;
    //  end;
      if not Database1.Connected then Application.Terminate;
      T_student.Open;
      DBGrid1.Columns[0].Width:=64;
      DBGrid1.Columns[1].Width:=64;
      DBGrid1.Columns[2].Width:=64;
      DBGrid1.Columns[3].Width:=64;
      DBGrid1.Columns[4].Width:=30;
      DBGrid1.Columns[5].Width:=64;
      DBGrid1.Columns[6].Width:=100;
    end;procedure TForm1.i_stud_id_1Change(Sender: TObject);
    begin
      T_stud_info_1.Filter:='ID='''+i_stud_id_1.Text+'''';
      T_stud_info_1.Filtered:=True;
      T_stud_info_1.Open;
      T_class_info_1.Open;
      T_depart_info_1.Open;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      i_stud_id_1.Text:='';
      i_change.ItemIndex:=0;
      i_descrip_1.Clear;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      counter:integer;
    begin
      T_stud_info_1.Open;
      if T_stud_info_1.RecordCount>0 then //确认学号是否存在
      begin
        T_counter_c.Open;
        counter:=T_counter_c['COUNTER_VALUE'];
        Inc(counter); //累加学籍变更计数器
        T_counter_c.Edit;
        T_counter_c['COUNTER_VALUE']:=counter;
        T_counter_c.Post;
        T_change.Open;
        //T_change.Edit;
        T_change.AppendRecord([counter, i_stud_id_1.text, i_change.ItemIndex, Now, i_descrip_1.text]);
        Button1Click(nil);
      end
      else
        Application.MessageBox('请确认输入的学号是否正确!', '错误', MB_OK);
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      i_stud_id_2.Text:='';
      i_reward_level.ItemIndex:=0;
      i_descrip_2.Clear;
    end;procedure TForm1.Button6Click(Sender: TObject);
    begin
      i_stud_id_3.Text:='';
      i_punish_level.ItemIndex:=0;
      i_descrip_3.Clear;
    end;procedure TForm1.i_stud_id_2Change(Sender: TObject);
    begin
      T_stud_info_1.Filter:='ID='''+i_stud_id_2.Text+'''';
      T_stud_info_1.Filtered:=True;
      T_stud_info_1.Open;
      T_class_info_1.Open;
      T_depart_info_1.Open;
    end;procedure TForm1.i_stud_id_3Change(Sender: TObject);
    begin
      T_stud_info_1.Filter:='ID='''+i_stud_id_3.Text+'''';
      T_stud_info_1.Filtered:=True;
      T_stud_info_1.Open;
      T_class_info_1.Open;
      T_depart_info_1.Open;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
      counter:integer;
    begin
      T_stud_info_1.Open;
      if T_stud_info_1.RecordCount>0 then //确认学号是否存在
      begin
        T_counter_r.Open;
        counter:=T_counter_r['COUNTER_VALUE'];
        Inc(counter); //累加奖励记录计数器
        T_counter_r.Edit;
        T_counter_r['COUNTER_VALUE']:=counter;
        T_counter_r.Post;
        T_reward.Open;
        //T_change.Edit;
        T_reward.AppendRecord([counter, i_stud_id_2.text, i_reward_level.ItemIndex, Now, i_descrip_2.text]);
        Button4Click(nil);
      end
      else
        Application.MessageBox('请确认输入的学号是否正确!', '错误', MB_OK);
    end;procedure TForm1.Button5Click(Sender: TObject);
    var
     counter:integer;
    begin
      T_stud_info_1.Open;
      if T_stud_info_1.RecordCount>0 then //确认学号是否存在
      begin
        T_counter_p.Open;
        counter:=T_counter_p['COUNTER_VALUE'];
        Inc(counter); //累加处罚记录计数器
        T_counter_p.Edit;
        T_counter_p['COUNTER_VALUE']:=counter;
        T_counter_p.Post;
        T_punish.Open;
        //T_change.Edit;
        T_punish.AppendRecord([counter, i_stud_id_3.text, i_punish_level.ItemIndex, Now, True, i_descrip_3.text]);
        Button6Click(nil);
      end
      else
        Application.MessageBox('请确认输入的学号是否正确!', '错误', MB_OK);
    end;procedure TForm1.i_stud_id_4Change(Sender: TObject);
    begin
      T_stud_info_4.Filter:='ID='''+i_stud_id_4.Text+'''';
      T_stud_info_4.Filtered:=True;
      T_stud_info_4.Open;
      T_class_info_4.Open;
      T_depart_info_4.Open;
      T_change_4.Open;
      T_change_code_4.Open;
      T_reward_4.Open;
      T_reward_level_4.Open;
      T_punish_4.Open;
      T_punish_level_4.Open;
    end;procedure TForm1.Button7Click(Sender: TObject);
    begin
      T_stud_info_4.Post;
    end;procedure TForm1.Button8Click(Sender: TObject);
    begin
      T_stud_info_4.Cancel;
    end;procedure TForm1.Button9Click(Sender: TObject);
    begin
      T_change_4.Post;
    end;procedure TForm1.Button10Click(Sender: TObject);
    begin
      T_change_4.Cancel;
    end;procedure TForm1.Button11Click(Sender: TObject);
    begin
      T_reward_4.Post;
    end;procedure TForm1.Button12Click(Sender: TObject);
    begin
      T_reward_4.Cancel;
    end;procedure TForm1.Button13Click(Sender: TObject);
    begin
      T_punish_4.Post;
    end;procedure TForm1.Button14Click(Sender: TObject);
    begin
      T_punish.Cancel;
    end;end.
      

  3.   

    是用InterBase做的,前面的一段SQL是用来建表用的
      

  4.   

    InterBase
    会不会小了一些阿,我们是学校用的,.
    最好用大一些的数据库,这位大哥,能不能在给一点详细的建议
      

  5.   

    你准备了多少分? 我去年做过一个学生信息管理系统(大学的),如果你想要的话,发e_mail给我:[email protected]
      

  6.   

    我就在做一个,快完工了。[email protected]
      

  7.   

    4年做过,不过是vfp的,源码还在。