数据库课程设计报告格式 电子版

西安邮电大学

数据库课程设计报告

  目:          选课系统课程设计                                 

  目:          选课系统课程设计                                 

学院名称计算机学院

专业名称软件工程

班    级软件1104

一、 课程设计目的

           1. 进一步学习和掌握数据库原理的基础知识和理论。

          2. 学习SQL Server数据库管理系统的基本功能和建立数据库各种对象的方法。

          3. 熟练掌握和使用SQL语言操纵数据库,使用T-SQL语言编程。

          4. 理解和掌握利用数据库所学的理论知识来设计数据库的基本方法和步骤。

          5. 通过上机操作和调试程序,提高学生理论联系实际和动手操作能力。

     

二、课程设计内容

 

  1.完成数据的添加和修改,并提交数据库保存。其中的数据包括:学生信息、课程信息、教师信

    

  2.设计实现学生信息查询,教师信息查询,课程信息查询,选课,选课查询,等JAVA图形化界面面 。 

   

   3.具备一定的安全性管理功能。包括登录、退出等功能。

三、软硬件环境及系统所采用的体系结构

系统的体系结构为C/S,前台为Java,后台数据库一般为SQL Server

四、需求分析

学生管理是学校管理中的一项重要任务,以往的手工操作已经不能适应现在办公的需要.为了摆脱繁琐的劳动,提高工作效率,利用计算机进行信息处理成为必然.开发功能完善及安全可靠的管理系统可以大大提高学校资源的利用率,及时,准确地获取需要的信息,充分发挥人员的工作潜力。正是咨询业的迅速发展使得人们从过去的手工劳动中得以解脱.同时,编写一套完善的学生管理系统的任务就显得尤为重要。本学生管理系统可实现学生基本信息、成绩信息、课程信息、班级基本信息表、教师基本信息表等的录入、修改、查询、更新和删除。

2.功能需求分析

用户密码管理  密码修改、用户删除和用户信息查询。

班级管理   添加、修改、删除和查询班级信息。

 教师管理   添加、修改、删除和查询教师信息。

五、系统设计

  本系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用java作为开发工具;服务器端则用于提供数据服务,采用SQL Server2008标准版作为数据库管理系统。

本系统按照功能划分为以下三个个模块:学生界面(包括学生添加和查询等)、教师界面(包括课程查询、成绩添加等)和管理员界面(包括课程管理、教师管理、学生管理等)。系统的功能模块图如下图所示:

2、数据库设计

   2、数据库设计

(1)数据库概念结构设计

本系统主要有三个实体:

a、学生实体、选修课两个实体,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,联系上有选课成绩;

   b、教师和课程两个实体,一个老师可以教授若干门课程,一门课程也可以被多个老师教授,这两个实体集之间也是多对多联系;

2.数据库设计

       (2)数据库逻辑结构设计

根据关系模型的转换原则,上面的E—R图可转换为如下所示的关系模型:

学生信息表:

student(学号,姓名,所属院系,课程编号,选修课程,选修成绩)

公选课信息表:

course(课程号,课程名,学分,学时,教师编号)

    教师信息表:

teacher(教师编号,教师姓名,所属院系,教授课程号,教授课程名)

根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:

表1 教师信息表teacher的表结构

表2 学生信息表student的表结构

表3公选课信息表course的表结构

下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQL Server数据库

      1.课程基本信息表E-R图:

2.成绩基本信息表E-R图:

     

3.教师基本信息表E-R图:

六、系统的实施

    

    

代码:

publicchar logon() throws SQLException

   {

      String tuserid=t1.getText();

      String tpassword=new String(t2.getPassword());

      String sql1=null,sql2=null;

      ResultSet rs=null;

      SqlManager DBm = SqlManager.createInstance();   //单态模式获取实例

      DBm.connectDB();

      sql1="exec ProcLogon'"+tuserid+"','"+tpassword+"'";

      rs=DBm.executeQuery(sql1);

               if(rs.next())//如果存储过程有结果返回,则将用户信息读入并保存

      {

         System.out.println(rs.getString(1)+"如果存储过程有结果返回,则将用户信息读入并保存");

         userid=rs.getString(1);password=rs.getString(2);

         if(userid.startsWith("T"))

         {TeaInfo.saveTea(userid);}

         elseif(userid.startsWith("S"))

                      {StuInfo.saveStu(userid);}

         elseif(userid.startsWith("A"))

         {sql2=sql1;DBm.connectDB();rs=DBm.executeQuery(sql2);}

         rs.close();DBm.closeDB();

         returnuserid.substring(0, 1).toCharArray()[0];

      }

      else{userid=null;password=null;

         JOptionPane.showMessageDialog(this,"用户名或密码错误,请重新填写",

               "警告",JOptionPane.WARNING_MESSAGE);

         rs.close();DBm.closeDB();return '0';}}

   publicvoid reset()

   {t1.setText(null);t2.setText(null);t1.requestFocusInWindow();}

    

        publicvoid actionPerformed(ActionEvent e)

   {

      if(e.getSource()==button)

      {if(selectcourse()>0){

            JOptionPane.showMessageDialog(this,"选课成功\n点击\"确定\"查看已选课程","选课成功",JOptionPane.INFORMATION_MESSAGE);

            ChooseList.updateTable();stuPanel.card.show(StuPanel.pCenter, "已选课程");}}}

   publicint selectcourse()

   {

      int selectedCount=ChooseList.getSelectedCount();

      int a=xianzhi();int c=0;

      String[] courseID=new String[selectedCount];if(selectedCount==3)

      {

         JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了3门\n点击\"确定\"查看已选课程",

               "警告",JOptionPane.WARNING_MESSAGE);

         ChooseList.updateTable();

         StuPanel.card.show(StuPanel.pCenter, "已选课程");return c ;}

      else{if(a+selectedCount>3)

         {

            JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了"+selectedCount+"门\n点击\"确定\"查看已选课程",

                  "警告",JOptionPane.WARNING_MESSAGE);

            ChooseList.updateTable();

            StuPanel.card.show(StuPanel.pCenter, "已选课程");return c;}

         else

         {//不能选重复了

            String sql="exec SelectedCourse'"+Logon.userid+"'";

            //System.out.println(sql+"不能选重复了");

            SqlManager DBm=SqlManager.createInstance();

            DBm.connectDB();

            ResultSet rs=DBm.executeQuery(sql);

            try{int i=0;while(rs.next()){

               courseID[i]=rs.getString(1).trim();System.out.println(courseID[i]+"changdu");}

               rs.close();}catch(SQLException e){e.printStackTrace();return c;}

            DBm.closeDB(){for(int i=0;i

            {

               for(int j=0;j

               {

                  if(table1.getValueAt(i,0).toString().equals("true"))

                  {

                     //System.out.println(table1.getValueAt(i,1).toString().trim()+"选课不能重复,点击");

                     //System.out.println(courseID[j]);

                     if(table1.getValueAt(i,1).toString().trim().equals(courseID[j])){

                        JOptionPane.showMessageDialog(this,"选课不能重复,\n点击\"确定\"查看已选课程",

                              "警告",JOptionPane.WARNING_MESSAGE);

                        ChooseList.updateTable();

                        StuPanel.card.show(StuPanel.pCenter, "已选课程");

                        return c;}}}  }

            for(int i=0;i

            {

               if(table1.getValueAt(i,0).toString().equals("true"))

               {

                  String courseid=table1.getValueAt(i,1).toString();

                  sql="exec SelectCourse'"+Logon.userid+"','"+courseid+"'";DBm.connectDB();

                  c=DBm.executeUpdate(sql);DBm.closeDB();System.out.println("c1="+c);

               }System.out.println("c2="+c);}

            if(c==0){

               JOptionPane.showMessageDialog(this,"请选择选修课",

                     "警告",JOptionPane.WARNING_MESSAGE);}return c;}}}

   publicint xianzhi(){

      int a=0;

      for(int i=0;i

      {if(table1.getValueAt(i,0).toString().equals("true"))a++;}

      return a;}}

   

 publicvoid actionPerformed(ActionEvent e)

   {modify.setVisible(true);}

   publicstaticvoid saveStu(String id)

   {      SqlManager DBm=SqlManager.createInstance();

      DBm.connectDB();

      String sql="exec ProcStudent'"+id+"'";

      ResultSet rs=DBm.executeQuery(sql);

      System.out.println(sql);

      try{

         rs.next();

         jid.setText(rs.getString(1));

         jname.setText(rs.getString(2));

         jsex.setText(rs.getString(3));

         jbirth.setText(rs.getString(4));

         jclass.setText(rs.getString(5));}catch(SQLException e){

         e.printStackTrace();}}}

七、系统评价及心得体会

       通过将近两周的时间的艰苦历程,终于完成了本次数据库的课程设计——选修课程管理系统。如果       凭现在所学的知识来看要完成选修课程管理系统,这是远远不够的,因此需要下去大量查资料并自学很多知识。所以在做的过程中,边做边学,作出的效果并不是那么的完善。

    以前没有做过这种数据库管理系统,面对好几张表时,对于它们之间的联系、E-R图的结构,都是要经过深思熟虑之后才能动手开始整个数据库建立与java编程。

本次课程设计虽然完成了,但是我知道还是存在一些缺陷的,数据库还不是那么的完美,还存在一些漏洞,java编程界面面也不是那么的完美,界面结构也有一些缺点,但是我尽最大的能力来使我的数据库和界面面更加的人性化,更加的方便实用。

在以后的学习过程中,需要对事物多加考虑,对问题全面考虑。要把问题更加的完善,不能想到什么就做什么,一定要在动手之前做好充分的准备,这样才可以做到事半功倍。

本次课程设计取得一定的成绩,是值得欣慰的。同时,也认识到自学的重要性,要不懂多查书,多查资料。在做的过程中,学习知识。同时提高自己。

八、参考文献

     [1] 钱雪忠.数据库原理及应用(第二版).北京邮电大学出版社.2004

     [2] 钱雪忠.数据库原理及应用实验指导(第二版).北京邮电大学出版社.2004

     [3] 李刚.疯狂Java讲义.电子工业出版社.2008

九、附录:源代码

     import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import java.sql.*;

import java.util.Vector;

publicclass AdmPanel extends JPanel implements ActionListener,ItemListener,MouseListener

{

  

   privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

   JButton b1,b2,b3,b4,b5,b6;

   JPanel p1,p2,pCenter;

   CardLayout card=null;

   JTextField t1=new JTextField(10),

               t2=new JTextField(10),

               t3=new JTextField(10),

               tt1=new JTextField(10),

               tt2=new JTextField(10),

               tt3=new JTextField(10);

   ButtonGroup sex1=new ButtonGroup(),

               sex2=new ButtonGroup();

   JRadioButton radio1=new JRadioButton("男",true),

                radio2=new JRadioButton("女");

   JRadioButton r1=new JRadioButton("男",true),

                 r2=new JRadioButton("女");

   JComboBox year,month,date,yy,mm,dd,post;

  

   JTable table1,table2;

   Vector vectorColName1=new Vector(),

          vectorColName2=new Vector();

   Vector> vector1=new Vector>(),

          vector2=new Vector>();

   DefaultTableModel model1=new DefaultTableModel(vectorColName1,0){

     

      privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

      publicboolean isCellEditable(int row, int column)

        {

            returnfalse;

        }

   };

   DefaultTableModel model2=new DefaultTableModel(vectorColName2,0){

     

      privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

      publicboolean isCellEditable(int row, int column)

         {

             returnfalse;

         }

   };

  

   AdmPanel()

   {

      setLayout(new BorderLayout());

     

      t1=new JTextField(10);

      t2=new JTextField(10);

      t3=new JTextField(10);

      tt1=new JTextField(10);

      tt2=new JTextField(10);

      tt3=new JTextField(10);

     

      sex1.add(radio1);

      sex1.add(radio2);

      sex2.add(r1);

      sex2.add(r2);

     

      year=newJComboBox();

      month=newJComboBox();

      date=newJComboBox();

      yy=newJComboBox();

      mm=newJComboBox();

      dd=newJComboBox();

      post=newJComboBox();

     

      post.addItem("助教");

      post.addItem("讲师");

      post.addItem("副教授");

      post.addItem("教授");

      for(int i=1980;i<1995;i++)

         year.addItem(i);

      for(int i=1;i<=12;i++)

         month.addItem(i);

      for(int i=1;i<=31;i++)

         date.addItem(i);

      for(int i=1950;i<1995;i++)

         yy.addItem(i);

      for(int i=1;i<=12;i++)

         mm.addItem(i);

      for(int i=1;i<=31;i++)

         dd.addItem(i);

     

      year.addItemListener(this);

      month.addItemListener(this);

      yy.addItemListener(this);

      mm.addItemListener(this);

      post.addItemListener(this);

     

      b1=new JButton("学生信息管理");

      b2=new JButton("教师信息管理");

      b3=new JButton("输入");

      b4=new JButton("删除");

      b5=new JButton("输入");

      b6=new JButton("删除");

     

      b1.addActionListener(this);

      b2.addActionListener(this);

      b3.addActionListener(this);

      b4.addActionListener(this);

      b5.addActionListener(this);

      b6.addActionListener(this);

     

      JPanel p0=new JPanel();

      p0.add(b1);

      p0.add(b2);

     

      pCenter=new JPanel();

      card=new CardLayout();

      pCenter.setLayout(card);

      p1=createStuPanel();

      p2=createTeaPanel();

     

      pCenter.add("学生信息管理",p1);

      pCenter.add("教师信息管理",p2);

     

      add(p0,BorderLayout.NORTH);

      add(pCenter,BorderLayout.CENTER);

     

   }

   private JPanel createStuPanel()

   {

      JPanel p=new JPanel();

      JScrollPane p1;

      JPanel p2=new JPanel();

      p.setLayout(new GridLayout(2,1));

           

      SqlManager DBm=SqlManager.createInstance();//单态模式获取实例

      DBm.connectDB();

      String sql="exec ProcAllStu";

      ResultSet rs=DBm.executeQuery(sql);

      vectorColName1.addElement("学号");  

      vectorColName1.addElement("姓名");  

      vectorColName1.addElement("性别");  

      vectorColName1.addElement("生日");  

      vectorColName1.addElement("班级");

      model1.setDataVector(vector1,vectorColName1);

      table1=new JTable(model1);

      table1.addMouseListener(this);

      p1=new JScrollPane(table1);

      p.add(p1);

      try{

         while(rs.next()){  

                Vector   rec_vector=new   Vector();  //从结果集中取数据放入向量rec_vector中  

                rec_vector.addElement(rs.getString(1));  

                rec_vector.addElement(rs.getString(2));  

                rec_vector.addElement(rs.getString(3));  

                rec_vector.addElement(rs.getString(4));  

                rec_vector.addElement(rs.getString(5));  

                vector1.addElement(rec_vector);  //向量rec_vector加入向量vect中  

                                }  

                 //tm.fireTableStructureChanged();//更新表格,显示向量vect的内容 

         rs.close();

      }catch(SQLException e){

         e.printStackTrace();

      }

      DBm.closeDB(); 

      //构造p2

      Box base=Box.createHorizontalBox(),

          boxleft=Box.createVerticalBox(),

          boxright=Box.createVerticalBox();

      JPanel pp1=new JPanel(),

             pp2=new JPanel(),

             pp3=new JPanel(),

             pp4=new JPanel(),

             pp5=new JPanel(),

             pp6=new JPanel(),

             psex=new JPanel(),

             pbirth=new JPanel();

     

     

      psex.add(radio1);

      psex.add(radio2);

     

      pbirth.add(year);

      pbirth.add(month);

      pbirth.add(date);

     

      pp1.add(new JLabel("学生编号:"));

      pp1.add(t1);

      pp2.add(new JLabel("学生姓名:"));

      pp2.add(t2);

      pp3.add(new JLabel("学生性别:"));

      pp3.add(psex);

      pp4.add(new JLabel("学生生日:"));

      pp4.add(pbirth);

      pp5.add(new JLabel("所在班级:"));

      pp5.add(t3);

      pp6.add(b3);

      pp6.add(b4);

     

      boxleft.add(Box.createVerticalStrut(30));

       boxleft.add(pp1);

       boxleft.add(Box.createVerticalStrut(20));

       boxleft.add(pp2);

       boxleft.add(Box.createVerticalStrut(20));

       boxleft.add(pp3);

      

       boxright.add(Box.createVerticalStrut(20));

       boxright.add(pp4);

       boxright.add(Box.createVerticalStrut(20));

       boxright.add(pp5);

       boxright.add(Box.createVerticalStrut(20));

       boxright.add(pp6);

       

      base.add(boxleft);

      base.add(Box.createHorizontalStrut(80));

      base.add(boxright);

      p2.add(base);

      p.add(p2);

      return p;

   }

   private JPanel createTeaPanel()

   {

      JPanel p=new JPanel();

      JScrollPane p1;

      JPanel p2=new JPanel();

      p.setLayout(new GridLayout(2,1));

           

      SqlManager DBm=SqlManager.createInstance();  //单态模式获取实例

      DBm.connectDB();

      String sql="exec  ProcAllTea";

      ResultSet rs=DBm.executeQuery(sql);

      vectorColName2.addElement("教师编号");  

      vectorColName2.addElement("教师姓名");  

      vectorColName2.addElement("教师性别");  

      vectorColName2.addElement("生日");  

      vectorColName2.addElement("职称");

      vectorColName2.addElement("所在院系");

      model2.setDataVector(vector2,vectorColName2);

      table2=new JTable(model2);

      table2.addMouseListener(this);

     

      p1=new JScrollPane(table2);

      p.add(p1);

      try{

         while(rs.next()){  

                Vector   rec_vector=new   Vector();  //从结果集中取数据放入向量rec_vector中  

                rec_vector.addElement(rs.getString(1));  

                rec_vector.addElement(rs.getString(2));  

                rec_vector.addElement(rs.getString(3));  

                rec_vector.addElement(rs.getString(4));  

                rec_vector.addElement(rs.getString(5));

                rec_vector.addElement(rs.getString(6));

                vector2.addElement(rec_vector);  //向量rec_vector加入向量vect中  

          }  

                //tm.fireTableStructureChanged();//更新表格,显示向量vect的内容 

         rs.close();

      }catch(SQLException e){

         e.printStackTrace();

      }

      DBm.closeDB();    

      //构造p2

      Box base=Box.createHorizontalBox(),

       boxleft=Box.createVerticalBox(),

       boxright=Box.createVerticalBox();

       JPanel pp1=new JPanel(),

              pp2=new JPanel(),

              pp3=new JPanel(),

              pp4=new JPanel(),

              pp5=new JPanel(),

              pp6=new JPanel(),

              pp7=new JPanel(),

              psex=new JPanel(),

              pbirth=new JPanel();

      

       psex.add(r1);

       psex.add(r2);

       pbirth.add(yy);

       pbirth.add(mm);

       pbirth.add(dd);

      

       pp1.add(new JLabel("教职工号:"));

       pp1.add(tt1);

       pp2.add(new JLabel("教师姓名:"));

       pp2.add(tt2);

       pp3.add(new JLabel("教师性别:"));

       pp3.add(psex);

       pp4.add(new JLabel("教师生日:"));

       pp4.add(pbirth);

       pp5.add(new JLabel("教师职称:"));

       pp5.add(post);

       pp6.add(new JLabel("所在院系:"));

       pp6.add(tt3);

       pp7.add(b5);

       pp7.add(b6);

      

       boxleft.add(Box.createVerticalStrut(40));

       boxleft.add(pp1);

       boxleft.add(Box.createVerticalStrut(20));

       boxleft.add(pp2);

       boxleft.add(Box.createVerticalStrut(20));

       boxleft.add(pp3);

      

       boxright.add(Box.createVerticalStrut(30));

       boxright.add(pp4);

       boxright.add(Box.createVerticalStrut(10));

       boxright.add(pp5);

       boxright.add(Box.createVerticalStrut(10));

       boxright.add(pp6);

       boxright.add(pp7);

      

       base.add(boxleft);

       base.add(Box.createHorizontalStrut(80));

       base.add(boxright);

      p2.add(base);

      p.add(p2);

      return p;

   }

   publicvoid actionPerformed(ActionEvent e)

   {

      if(e.getSource()==b1)

      {

         card.show(pCenter, "学生信息管理");

      }

      elseif(e.getSource()==b2)

      {

         card.show(pCenter, "教师信息管理");

      }

      if(e.getSource()==b3)

      {       

         String userid=t1.getText(),

                username=t2.getText(),

                classs=t3.getText();

         String sex="男";

         if(radio2.isSelected())

         {

            sex="女";

         }

         String birth=String.valueOf((Integer)year.getSelectedItem())+"-"

                        +String.valueOf((Integer)month.getSelectedItem())

                        +"-"+String.valueOf((Integer)date.getSelectedItem());

         String sql="exec InsertStudent'"+userid+"','"+username+"','"+sex+"','"+birth+"','"+classs+"'";

         String s="exec IsExistsStu'"+userid+"'";

         String inserlog="exec InsertLogon'"+userid+"'";

         System.out.println(sql);

         SqlManager DBm=SqlManager.createInstance();//单态模式获取实例

         DBm.connectDB();

          

        

         ResultSet rset=DBm.executeQuery(s);

         System.out.println(s);

        

         try{

            if (rset.next())

            {

               JOptionPane.showMessageDialog(this,"学生信息插入失败,该学生ID号已存在",

                     "警告",JOptionPane.WARNING_MESSAGE);

               rset.close();

            }

            else{

               ResultSet rs=DBm.executeQuery(sql);

              

               if(rs.next())

               {

                  JOptionPane.showMessageDialog(this,"学生信息插入成功",

                        "成功",JOptionPane.WARNING_MESSAGE);

                  DBm.connectDB();

                  DBm.executeUpdate(inserlog);

                  t1.setText("S");

                  t2.setText(null);

                  t3.setText(null);

                  radio1.setSelected(true);

                  //this.post.setSelectedIndex(0);

                  year.setSelectedIndex(0);

                  month.setSelectedIndex(0);

                  date.setSelectedIndex(0);

                  //sql="select * from Inserted";

                  //ResultSet rs=DBm.executeQuery(sql);

                  Vector   rec_vector=new   Vector();//从结果集中取数据放入向量rec_vector中  

                    rec_vector.addElement(rs.getString(1));  

                    rec_vector.addElement(rs.getString(2));  

                    rec_vector.addElement(rs.getString(3));  

                    rec_vector.addElement(rs.getString(4));  

                    rec_vector.addElement(rs.getString(5));  

                    vector1.addElement(rec_vector);//向量rec_vector加入向量vect中      

                    model1.fireTableStructureChanged();//更新表格,显示向量vect的内容  

                    rs.close();   

               }

               else{

                  JOptionPane.showMessageDialog(this,"学生信息插入失败",

                        "警告",JOptionPane.WARNING_MESSAGE);

                  rs.close();

               }

            }

         }catch(SQLException ex){

            ex.printStackTrace();

         }

         DBm.closeDB();

      }

      if(e.getSource()==b4)

      {

         //同步删除数据库中的数据

         int selectrow = 0;

           selectrow =table1.getSelectedRow();

         String id =table1.getValueAt(selectrow,0).toString();

         String sql="exec DeleteStudent'"+id+"'";

         String deletelog="exec DeleteLogon'"+id+"'";

         SqlManager DBm=SqlManager.createInstance();//单态模式获取实例

         DBm.connectDB();

        

         if(DBm.executeUpdate(sql)==1)

         {

            JOptionPane.showMessageDialog(this,"学生信息已删除",

                  "删除成功",JOptionPane.INFORMATION_MESSAGE);

            DBm.connectDB();

            DBm.executeUpdate(deletelog);

            model1.removeRow(selectrow);

            t1.setText("S");

            t2.setText(null);

            t3.setText(null);

            radio1.setSelected(true);

            year.setSelectedIndex(0);

            month.setSelectedIndex(0);

            date.setSelectedIndex(0);           

         }

         DBm.closeDB();

      }

      if(e.getSource()==b5)

      {

         String userid=tt1.getText(),

                username=tt2.getText(),

                depart=tt3.getText(),

                post=(String)this.post.getSelectedItem();

         String sex="男";

         if(r2.isSelected())

         {

            sex="女";

         }

         String birth=String.valueOf((Integer)yy.getSelectedItem())+"-"+String.valueOf((Integer)mm.getSelectedItem())

                          +"-"+String.valueOf((Integer)dd.getSelectedItem());

         String sql="exec InsertTeacher'"+userid+"','"+username+"','"+sex+"','"+birth+"','"+post+"','"+depart+"'";

         String s="exec IsExistsTea'"+userid+"'";

         String insertlog="exec InsertLogon'"+userid+"'";

         System.out.println(sql);

         SqlManager DBm=SqlManager.createInstance();//单态模式获取实例

         DBm.connectDB();

        

         ResultSet rset=DBm.executeQuery(s);

         System.out.println(s);

         try{

            if (rset.next())

            {

               JOptionPane.showMessageDialog(this,"教师信息插入失败,该教师ID号已存在",

                     "警告",JOptionPane.WARNING_MESSAGE);

               rset.close();

            }

            else{

               ResultSet rs=DBm.executeQuery(sql);

               if(rs.next())

               {

                  JOptionPane.showMessageDialog(this,"教师信息插入成功",

                        "成功",JOptionPane.WARNING_MESSAGE);

                  DBm.connectDB();

                  DBm.executeUpdate(insertlog);

                  tt1.setText("T");

                  tt2.setText(null);

                  tt3.setText(null);

                  r1.setSelected(true);

                  this.post.setSelectedIndex(0);

                  yy.setSelectedIndex(0);

                  mm.setSelectedIndex(0);

                  dd.setSelectedItem(0);

                  Vector   rec_vector=new   Vector();//从结果集中取数据放入向量rec_vector中  

                    rec_vector.addElement(rs.getString(1));  

                    rec_vector.addElement(rs.getString(2));  

                    rec_vector.addElement(rs.getString(3));  

                    rec_vector.addElement(rs.getString(4));  

                    rec_vector.addElement(rs.getString(5));

                    rec_vector.addElement(rs.getString(6));

                    vector2.addElement(rec_vector);//向量rec_vector加入向量vect中      

                    model2.fireTableStructureChanged();//更新表格,显示向量vect的内容  

                    rs.close();                         

               }

               else{

                  JOptionPane.showMessageDialog(this,"教师信息插入失败",

                        "警告",JOptionPane.WARNING_MESSAGE);

                  rs.close();

               }

            }

         }catch(SQLException ex){

            ex.printStackTrace();

         }

         DBm.closeDB();

      }

      if(e.getSource()==b6)

      {

         //同步删除数据库中的数据

         int selectrow = 0;

           selectrow =table2.getSelectedRow();

         String id =table2.getValueAt(selectrow,0).toString();

         String sql="exec DeleteTeacher'"+id+"'";

         String deletelog="exec DeleteLogon'"+id+"'";

         SqlManager DBm=SqlManager.createInstance();//单态模式获取实例

         DBm.connectDB();

        

         if(DBm.executeUpdate(sql)==1)

         {

            JOptionPane.showMessageDialog(this,"教师信息信息已删除",

                  "删除成功",JOptionPane.INFORMATION_MESSAGE);

            DBm.connectDB();

            DBm.executeUpdate(deletelog);

            model2.removeRow(selectrow);

            tt1.setText("T");

            tt2.setText(null);

            tt3.setText(null);

            r1.setSelected(true);

            yy.setSelectedIndex(0);

            mm.setSelectedIndex(0);

            dd.setSelectedIndex(0);

         }

         DBm.closeDB();

      }

   }

   publicvoid mousePressed(MouseEvent e){}

   publicvoid mouseReleased(MouseEvent e){}

   publicvoid mouseEntered(MouseEvent e){}

   publicvoid mouseExited(MouseEvent e){}

   publicvoid mouseMoved(MouseEvent e){}

   publicvoid mouseDraged(MouseEvent e){}

   publicvoid mouseClicked(MouseEvent e)

   {

      if(e.getSource()==table1)

      {

         int selectrow = 0;

           selectrow =table1.getSelectedRow();

         String id =table1.getValueAt(selectrow,0).toString();

         String name=table1.getValueAt(selectrow,1).toString();

         String sex=table1.getValueAt(selectrow,2).toString();

         String birth=table1.getValueAt(selectrow,3).toString().substring(0,10);

         String classs=table1.getValueAt(selectrow,4).toString();

         t1.setText(id);

         t2.setText(name);

         t3.setText(classs);

         if(sex.trim().equals("男"))

            radio1.setSelected(true);

         elseif(sex.equals("女"))

            radio2.setSelected(true);

         int y=Integer.parseInt(birth.substring(0, 4));

         int m=Integer.parseInt(birth.substring(5, 7));

         int d=Integer.parseInt(birth.substring(8));

         year.setSelectedIndex(y-1980);

         month.setSelectedIndex(m-1);

         date.setSelectedIndex(d-1);

      }

      elseif(e.getSource()==table2)

      {

         int selectrow = 0;

           selectrow =table2.getSelectedRow();

         String id =table2.getValueAt(selectrow,0).toString();

         String name=table2.getValueAt(selectrow,1).toString();

         String sex=table2.getValueAt(selectrow,2).toString();

         String birth=table2.getValueAt(selectrow,3).toString().substring(0,10);

         String position=table2.getValueAt(selectrow,4).toString();

         String depart=table2.getValueAt(selectrow,5).toString();

         tt1.setText(id);

         tt2.setText(name);

         tt3.setText(depart);

         if(sex.trim().equals("男"))

            r1.setSelected(true);

         elseif(sex.equals("女"))

            r2.setSelected(true);

         int y=Integer.parseInt(birth.substring(0, 4));

         int m=Integer.parseInt(birth.substring(5, 7));

         int d=Integer.parseInt(birth.substring(8));

         yy.setSelectedIndex(y-1950);

         mm.setSelectedIndex(m-1);

         dd.setSelectedIndex(d-1);

         if(position.equals("助教"))

            post.setSelectedIndex(0);

         elseif(position.equals("讲师"))

            post.setSelectedIndex(1);

         elseif(position.equals("副教授"))

            post.setSelectedIndex(2);

         elseif(position.equals("教授"))

            post.setSelectedIndex(3);

      }

   }

   publicvoid itemStateChanged(ItemEvent e)

   {

      if(e.getSource()==year)

      {

         int y=(Integer)year.getSelectedItem();

         int m=(Integer)month.getSelectedItem();

        

         if(((y%4==0)&&(y%100!=0))||(y%400==0))

         {

            if(m==2)

            {

               date.removeAll();

               for(int i=1;i<=29;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               date.removeAll();

               for(int i=1;i<=31;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               date.removeAll();

               for(int i=1;i<=30;i++)

               {

                  date.addItem(i);

               }

            }

         }

         else{

            if(m==2)

            {

               date.removeAll();

               for(int i=1;i<=28;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               date.removeAll();

               for(int i=1;i<=31;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               date.removeAll();

               for(int i=1;i<=30;i++)

               {

                  date.addItem(i);

               }

            }

         }

      }

      elseif(e.getSource()==month)

      {

         int y=(Integer)year.getSelectedItem();

         int m=(Integer)month.getSelectedItem();

        

         if(((y%4==0)&&(y%100!=0))||(y%400==0))

         {

            if(m==2)

            {

               date.removeAll();

               for(int i=1;i<=29;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               date.removeAll();

               for(int i=1;i<=31;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               date.removeAll();

               for(int i=1;i<=30;i++)

               {

                  date.addItem(i);

               }

            }

         }

         else{

            if(m==2)

            {

               date.removeAll();

               for(int i=1;i<=28;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               date.removeAll();

               for(int i=1;i<=31;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               date.removeAll();

               for(int i=1;i<=30;i++)

               {

                  date.addItem(i);

               }

            }

         }

      }    

      elseif(e.getSource()==yy)

      {

         int y=(Integer)yy.getSelectedItem();

         int m=(Integer)mm.getSelectedItem();

         if(((y%4==0)&&(y%100!=0))||(y%400==0))

         {

            if(m==2)

            {

               dd.removeAll();

               for(int i=1;i<=29;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               dd.removeAll();

               for(int i=1;i<=31;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               dd.removeAll();

               for(int i=1;i<=30;i++)

               {

                  dd.addItem(i);

               }

            }

         }

         else{

            if(m==2)

            {

               dd.removeAll();

               for(int i=1;i<=28;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               date.removeAll();

               for(int i=1;i<=31;i++)

               {

                  date.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               date.removeAll();

               for(int i=1;i<=30;i++)

               {

                  date.addItem(i);

               }

            }

         }

       }

      elseif(e.getSource()==mm)

      {

         int y=(Integer)yy.getSelectedItem();

         int m=(Integer)mm.getSelectedItem();

        

         if(((y%4==0)&&(y%100!=0))||(y%400==0))

         {

            if(m==2)

            {

               dd.removeAll();

               for(int i=1;i<=29;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               dd.removeAll();

               for(int i=1;i<=31;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               dd.removeAll();

               for(int i=1;i<=30;i++)

               {

                  dd.addItem(i);

               }

            }

         }

         else{

            if(m==2)

            {

               dd.removeAll();

               for(int i=1;i<=28;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

            {

               dd.removeAll();

               for(int i=1;i<=31;i++)

               {

                  dd.addItem(i);

               }

            }

            elseif(m==4||m==6||m==9||m==11)

            {

               dd.removeAll();

               for(int i=1;i<=30;i++)

               {

                  dd.addItem(i);

               }

            }

         }

      }

   }

}

import java.awt.BorderLayout;

import java.sql.ResultSet;

import java.sql.SQLException;

//import java.sql.Statement;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

publicclass ChooseList extends JPanel //implements ActionListener

{

   privatestaticfinallongserialVersionUID = 1L; //添加默认序列号

   //int count=0;//已经选择的课程数

   staticintselectedcount=0;

   static MymyTable table;

   static DefaultTableModel dtm=new DefaultTableModel(  

            new Object [] {"课程编号","课程名称","学分","任课教师","教师职称","上课地点","课程成绩"},0); 

   static String id=Logon.userid;

   ChooseList()

   {

      setLayout(new BorderLayout());

      table=new MymyTable(dtm);

      JScrollPane sp=new JScrollPane(table);

        add(sp);

     

   }

   public JTable initTable(JTable table) {  

        DefaultTableModel dtm = new DefaultTableModel(  

            new Object [] {"课程编号","课程名称","学分","任课教师","教师职称","上课地点"},0);  

        SqlManager DBm=SqlManager.createInstance();

        DBm.connectDB();

        String sql="exec SelectedCourse'"+Logon.userid+"'";//所有选修课,如果选课人数没有达到5时设置MyTable.b=true;

        ResultSet rs=DBm.executeQuery(sql);

        try{

        while(rs.next())

            {

           dtm.addRow(new Object[] {rs.getString(1),rs.getString(2),

                 rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6)});

            }

        rs.close();

        }catch(SQLException e){

        e.printStackTrace();

        }

        DBm.closeDB();

        table.setModel(dtm);

        return table;

   }

   publicstaticint getSelectedCount()

   {

      SqlManager DBm=SqlManager.createInstance();

      DBm.connectDB();

      String sql="exec SelectedCourseNum'"+Logon.userid+"'";

      ResultSet rs=DBm.executeQuery(sql);

      try{

         rs.next();

         selectedcount=Integer.parseInt(rs.getString(1).trim());

      }catch(SQLException ex){

         ex.printStackTrace();

      }

      //System.out.println(selectedcount);

      returnselectedcount;

   } 

   publicstaticvoid updateTable()

   {

      SqlManager DBm=SqlManager.createInstance();

        DBm.connectDB();

        String sql="exec SelectedDetail'"+Logon.userid+"'";//所有选修课,如果选课人数没有达到5时设置MyTable.b=true;

        //System.out.println(sql);

        ResultSet rs=DBm.executeQuery(sql);

        try{

        DefaultTableModel dtm2=new DefaultTableModel(  

                  new Object [] {"课程编号","课程名称","学分","任课教师","教师职称","上课地点","课程成绩"},0); 

        while(rs.next())

            {

           dtm2.addRow(new Object[] {rs.getString(1),rs.getString(2),

              rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7)});  

            }

        table.setModel(dtm2);

        rs.close();

        }catch(SQLException ex){

        ex.printStackTrace();

        }

        DBm.closeDB();

   }

}

class MymyTable extends JTable

{

  

   privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

   staticbooleanb=true;  

   MymyTable(DefaultTableModel tdm)

   {

      super(tdm);

   }

   public   boolean   isCellEditable(int   rowIndex,   int   columnIndex){

      returnfalse;

   } 

}

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

//import java.awt.event.ItemEvent;

//import java.awt.event.ItemListener;

//import java.awt.event.MouseEvent;

//import java.awt.event.MouseListener;

import java.sql.*;

import javax.swing.DefaultCellEditor;

import javax.swing.JButton;

import javax.swing.JCheckBox;

//import javax.swing.JComboBox;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableCellRenderer;

import javax.swing.table.TableColumnModel;

public class CourseList extends JPanel implements ActionListener

{

  

   private static final long serialVersionUID = 1L;//添加默认序列号

   int count=0;//可供选择的课程数

   MyTable table1;

   JTable table2;

   TableColumnModel tcm;

   JButton button;

   CourseList()

   {

      setLayout(new BorderLayout());

      button=new JButton("确定");

      button.addActionListener(this);

      JPanel p=new JPanel();

      p.add(button);

      table1=new MyTable();

      JTable table2=initTable(table1);

      JScrollPane sp=new JScrollPane(table2);

      add(sp,BorderLayout.CENTER);

      add(p,BorderLayout.SOUTH);

   }

   private JTable initTable(JTable table) {  

        DefaultTableModel dtm = new DefaultTableModel(  

            new Object [] {"","课程编号","课程名称","学分","任课教师","教师职称","上课地点","已选人数"},0);  

        SqlManager DBm=SqlManager.createInstance();

        DBm.connectDB();

        String sql="exec AllCourse";//所有选修课,如果选课人数没有达到5时设置MyTable.b=true;

        ResultSet rs=DBm.executeQuery(sql);

        try{

        while(rs.next())

            {

           dtm.addRow(new Object[] {new Boolean(false),rs.getString(1),rs.getString(2),

              rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7)});

           count++;

            }

        rs.close();

        }catch(SQLException e){

        e.printStackTrace();

        }

        DBm.closeDB();

        table.setModel(dtm);  

        TableColumnModel tcm = table.getColumnModel();  

        tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));  

        tcm.getColumn(0).setCellRenderer(new MyTableRenderer());

        tcm.getColumn(0).setPreferredWidth(20);  

        tcm.getColumn(0).setWidth(20);  

        tcm.getColumn(0).setMaxWidth(20);  

        return table;  

   }

  

   public void actionPerformed(ActionEvent e)

   {

      if(e.getSource()==button)

      {

         if(selectcourse()>0)

         {

            JOptionPane.showMessageDialog(this,"选课成功\n点击\"确定\"查看已选课程",

                  "选课成功",JOptionPane.INFORMATION_MESSAGE);

            ChooseList.updateTable();

            StuPanel.card.show(StuPanel.pCenter, "已选课程");

         }

      }

   }

   public int selectcourse()

   {

      int selectedCount=ChooseList.getSelectedCount();

      int a=xianzhi();

      int c=0;

      String[] courseID=new String[selectedCount];

      if(selectedCount==3)

      {

         JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了3门\n点击\"确定\"查看已选课程",

               "警告",JOptionPane.WARNING_MESSAGE);

         ChooseList.updateTable();

         StuPanel.card.show(StuPanel.pCenter, "已选课程");

         return c ;

      }

      else{

         if(a+selectedCount>3)

         {

            JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了"+selectedCount+"门\n点击\"确定\"查看已选课程",

                  "警告",JOptionPane.WARNING_MESSAGE);

            ChooseList.updateTable();

            StuPanel.card.show(StuPanel.pCenter, "已选课程");

            return c;

         }

         else

         {//不能选重复了

            String sql="exec SelectedCourse'"+Logon.userid+"'";

            //System.out.println(sql+"不能选重复了");

            SqlManager DBm=SqlManager.createInstance();

            DBm.connectDB();

            ResultSet rs=DBm.executeQuery(sql);

            try{

               int i=0;

               while(rs.next()){

                  courseID[i]=rs.getString(1).trim();

                  System.out.println(courseID[i]+"changdu");

               }

               rs.close();

            }catch(SQLException e){

               e.printStackTrace();

               return c;

            }

            DBm.closeDB();

            for(int i=0;i

            {

               for(int j=0;j

               {

                  if(table1.getValueAt(i,0).toString().equals("true"))

                  {

                     //System.out.println(table1.getValueAt(i,1).toString().trim()+"选课不能重复,点击");

                     //System.out.println(courseID[j]);

                     if(table1.getValueAt(i,1).toString().trim().equals(courseID[j])){

                        JOptionPane.showMessageDialog(this,"选课不能重复,\n点击\"确定\"查看已选课程",

                              "警告",JOptionPane.WARNING_MESSAGE);

                        ChooseList.updateTable();

                        StuPanel.card.show(StuPanel.pCenter, "已选课程");

                        return c;

                      }

                  }

               } 

            }

            for(int i=0;i

            {

               if(table1.getValueAt(i,0).toString().equals("true"))

               {

                  String courseid=table1.getValueAt(i,1).toString();

                  sql="exec SelectCourse'"+Logon.userid+"','"+courseid+"'";

                  DBm.connectDB();

                  c=DBm.executeUpdate(sql);

                  DBm.closeDB();

                  System.out.println("c1="+c);

               }System.out.println("c2="+c);

            }

            if(c==0)

            {

               JOptionPane.showMessageDialog(this,"请选择选修课",

                     "警告",JOptionPane.WARNING_MESSAGE);

            }

            return c;

         }

      }

   }

   public int xianzhi()

   {

      int a=0;

      for(int i=0;i

      {

         if(table1.getValueAt(i,0).toString().equals("true"))

            a++;

      }

      return a;

   }

}

class MyTable extends JTable

{

   private static final long serialVersionUID = 1L;//添加默认序列号

   static boolean b=true;  

   public   boolean   isCellEditable(int   rowIndex,   int   columnIndex){

      if (columnIndex>0)return false;  

      else return true;

   } 

}

class MyTableRenderer extends JCheckBox implements TableCellRenderer

{

   private static final long serialVersionUID = 1L;//添加默认序列号

   public Component getTableCellRendererComponent( JTable table,  

            Object value,  

            boolean isSelected,  

            boolean hasFocus,  

            int row,  

            int column ) {  

        Boolean b = (Boolean) value;  

        this.setSelected(b.booleanValue());  

        return this;  

    }  

}

import java.awt.Label;

import java.sql.*;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

class Logon extends JPanel

{

  

   private static final long serialVersionUID = 1L; //加入默认序列号

   JTextField t1;

   JPasswordField t2;

   JButton button1,button2;

   static String info[];

   static String userid,password;

    Logon()

   {

      JLabel label=new JLabel("欢迎使用选课信息管理系统");

      t1=new JTextField(20);

      t2=new JPasswordField(20);

      button1=new JButton("登陆");

      button2=new JButton("取消");

      JPanel p1,p2,p3,p4;

      Box box=Box.createVerticalBox();

      p1=new JPanel();

      p2=new JPanel();

      p3=new JPanel();

      p4=new JPanel();

      p1.add(label);

      p2.add(new Label("用户名:"));

      p2.add(t1);

      p3.add(new Label("密 码:"));

      p3.add(t2);

      p4.add(button1);

      p4.add(button2);  

      box.add(p1);

      box.add(p2);

      box.add(p3);

      box.add(p4);

      add(box);

     

   }

   public char logon() throws SQLException

   {

      String tuserid=t1.getText();

      String tpassword=new String(t2.getPassword());

      String sql1=null,sql2=null;

      ResultSet rs=null;

      SqlManager DBm = SqlManager.createInstance();   //单态模式获取实例

      DBm.connectDB();

      sql1="exec ProcLogon'"+tuserid+"','"+tpassword+"'";

      rs=DBm.executeQuery(sql1);

     

      if(rs.next())//如果存储过程有结果返回,则将用户信息读入并保存

      {

         System.out.println(rs.getString(1)+"如果存储过程有结果返回,则将用户信息读入并保存");

         userid=rs.getString(1);

         password=rs.getString(2);

         if(userid.startsWith("T"))

         {

            TeaInfo.saveTea(userid);

           

         }

         else if(userid.startsWith("S"))

         {

            StuInfo.saveStu(userid);

         }

         else if(userid.startsWith("A"))

         {

            sql2=sql1;

            DBm.connectDB();

            rs=DBm.executeQuery(sql2);

         }

         rs.close();

         DBm.closeDB();

         return userid.substring(0, 1).toCharArray()[0];

      }

      else{

         userid=null;

         password=null;

         JOptionPane.showMessageDialog(this,"用户名或密码错误,请重新填写",

               "警告",JOptionPane.WARNING_MESSAGE);

         rs.close();

         DBm.closeDB();

         return '0';

      }

   }

   public void reset()

   {

      t1.setText(null);

      t2.setText(null);

      t1.requestFocusInWindow();

   }

  

   public static void main(String[] args) {

      JFrame myframe = new MyFrame("选课信息管理系统");

      //Logon logon  = new Logon();

      //myframe.add(logon);

   }

}

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

//import java.sql.Statement;

import javax.swing.*;

public class ModifyPassword extends JDialog implements ActionListener

{

   private static final long serialVersionUID = 1L;//添加默认序列号

   JPasswordField t1,t2,t3;

   JButton b1,b2;

   static String userid,password;

   ModifyPassword(MyFrame f,String s,boolean b)

   {

      super(f,s,b);

      t1=new JPasswordField(20);

      t2=new JPasswordField(20);

      t3=new JPasswordField(20);

     

      b1=new JButton("确定");

      b2=new JButton("取消");

      b1.addActionListener(this);

      b2.addActionListener(this);

     

      Box vbox=Box.createVerticalBox();

      JPanel p1=new JPanel(),

             p2=new JPanel(),

             p3=new JPanel(),

             p4=new JPanel();

     

      p1.add(new JLabel("原始密码:"));

      p1.add(t1);

      p2.add(new JLabel(" 新 密 码 :"));

      p2.add(t2);

      p3.add(new JLabel("确认密码:"));

      p3.add(t3);

      p4.add(b1);

      p4.add(b2);

     

      vbox.add(Box.createVerticalStrut(20));

      vbox.add(p1);

      vbox.add(Box.createVerticalStrut(20));

      vbox.add(p2);

      vbox.add(Box.createVerticalStrut(20));

      vbox.add(p3);

      vbox.add(Box.createVerticalStrut(20));

      vbox.add(p4);

      add(vbox);

      setBounds(200,200,400,300);

      setDefaultCloseOperation(HIDE_ON_CLOSE);

   }

   public void actionPerformed(ActionEvent e)

   {

      if(e.getSource()==b1)

      {

         String s1=new String(t1.getPassword()),

                 s2=new String(t2.getPassword()),

                 s3=new String(t3.getPassword());

         userid=Logon.userid;

            password=Logon.password;

          System.out.println(password+"passwordx");

          if(s1.equals(password.trim()))

          {

             System.out.println(password+"passwordok");

             if(s2.equals(s3))

             {

               SqlManager DBm=SqlManager.createInstance();

               DBm.connectDB();

               String sql="exec ProcModify'"+userid+"','"+s2+"'";

               System.out.println(sql);

               if(DBm.executeUpdate(sql)==1)

               {

                  JOptionPane.showMessageDialog(this, "密码修改成功!");

                  password=s2;

                  Logon.password=s2;

                  setVisible(false);

               }

               else{

                  JOptionPane.showMessageDialog(this, "密码修改失败!\n请重试");

                  t1.setText(null);

                   t2.setText(null);

                   t3.setText(null);

                   t1.requestFocusInWindow();

               }

             }

          }

          else{

            JOptionPane.showMessageDialog(this, "原始密码输入错误!\n请重新输入");

             t1.setText(null);

             t2.setText(null);

             t3.setText(null);

             t1.requestFocusInWindow();

          }       

      }

      else if(e.getSource()==b2)

      {

         t1.setText(null);

         t2.setText(null);

         t3.setText(null);

         t1.requestFocusInWindow();

         setVisible(false);

      }

     

   }

}

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.*;

public class MyFrame extends JFrame implements ActionListener

{

  

   private static final long serialVersionUID = 1L;//添加默认序列号

   JPanel pCenter;

   CardLayout card=null;

   Logon logon;

   AdmPanel ap;

   TeaPanel tp;

   StuPanel sp;

   MyFrame(String s)

   {

      super(s);

      card=new CardLayout();

      pCenter=new JPanel();

      logon=new Logon();

      ap=new AdmPanel();

      tp=new TeaPanel(this);

      sp=new StuPanel(this);

     

      logon.button1.addActionListener(this);

      logon.button2.addActionListener(this);

     

      pCenter.setLayout(card);

      pCenter.add("登录",logon);

      pCenter.add("管理员",ap);

      pCenter.add("学生",sp);

      pCenter.add("教师",tp);

     

      add(pCenter,BorderLayout.CENTER);

     

      setBounds(200,100,600,550);

      this.setResizable(false);

      this.setVisible(true);

     

      validate();

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }

   public void actionPerformed(ActionEvent e)

   {

      if(e.getSource()==logon.button1)

      {

         char role='0';

         try{

            role=logon.logon();

           

         }catch(SQLException ex)

         {    

            ex.printStackTrace();

         } 

         if(role=='S')

         {

            card.show(pCenter, "学生");

         }

         else if(role=='T')

         {

            card.show(pCenter, "教师");

         } 

         else if(role=='A')

         {

           

            card.show(pCenter, "管理员");

         }

      }

      else if(e.getSource()==logon.button2)

      {

         logon.reset();

      }    

   }

}

import java.sql.*;

publicclass SqlManager {

   privatestatic SqlManager p=null;

   privatestatic String jdbcDriver=null;

   private Connection Sqlconn=null;

   private Statement Sqlstmt=null;

   private String strCon=null;

   private SqlManager(){

      try{

        

         jdbcDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";

         strCon="jdbc:sqlserver://localhost:1433;DatabaseName=CourseManager";

      }catch(Exception e){

         e.printStackTrace();

      }

   }

   publicstatic SqlManager createInstance(){

      if(p==null)

      {

         p=new SqlManager();

         p.initDB();

      }

      returnp;

   }

  

   publicvoid initDB(){

      System.out.println(strCon);

      System.out.println(jdbcDriver);

      try{

         Class.forName(jdbcDriver);

      }catch(Exception ex){

         System.err.println("Can't Find Database Driver.");

      }

   }

   publicvoid connectDB(){

      try{

         System.out.println("SqlManager:Connecting to database...");

         Sqlconn=DriverManager.getConnection(strCon,"sa","123456");

         Sqlstmt=Sqlconn.createStatement();

      }catch(SQLException ex){

         System.err.println("connectDB"+ex.getMessage());

      }

      System.out.println("SqlManager:Connect to database successful.");

   }

   publicvoid closeDB(){

      try{

         System.out.println("SqlManager:Close connection to database...");

         Sqlstmt.close();

         Sqlconn.close();

      }catch(SQLException ex){

         System.err.println("closeDB:"+ex.getMessage());

      }

      System.out.println("Sqlmanager:Close connection successful.");

   }

   publicint executeUpdate(String sql){

      int ret=0;

      try{

         ret=Sqlstmt.executeUpdate(sql);

      }catch(SQLException ex)

      {

         System.out.println("executeUpdate:"+ex.getMessage());

      }

      return ret;

   }

   public ResultSet executeQuery(String sql){

      ResultSet rs=null;

      try{

         rs=Sqlstmt.executeQuery(sql);

      }catch(SQLException ex){

         System.err.println("executeQuery:"+ex.getMessage());

      }

      return rs;

   }

}

import java.awt.BorderLayout;

//import java.awt.CardLayout;

//import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

//import java.util.Vector;

import java.sql.*;

//import javax.swing.DefaultCellEditor;

import javax.swing.JButton;

//import javax.swing.JCheckBox;

//import javax.swing.JFrame;

//import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

//import javax.swing.table.AbstractTableModel;

import javax.swing.table.DefaultTableModel;

publicclass StoreScore extends JPanel

{

   privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

   private   MeTable   table   =   null;  

   private   JScrollPane   s_pan   =   null;  

   private   JButton   button_1   =   null;

  

   StoreScore()

   {

      setLayout(new BorderLayout());

      table=new MeTable();

      button_1=new JButton("录入");

      button_1.addActionListener(new ActionListener(){

         publicvoid actionPerformed(ActionEvent e){

            inputPerform();

         }

      });

      JPanel p=new JPanel();

      p.add(button_1);

      s_pan=new JScrollPane(add(initTable(table)));

      add(s_pan,BorderLayout.CENTER);

      add(p,BorderLayout.SOUTH);

   }

  

    private JTable initTable(JTable table) {

      DefaultTableModel dtm = new DefaultTableModel(  

                new Object [] {"学生编号","学生姓名","课程名称","成绩"},0); 

       

        table.setModel(dtm);  

        return table;  

   }

    publicvoid updateTable()

    {

      SqlManager DBm=SqlManager.createInstance();

        DBm.connectDB();

        String sql="exec StoreScore'"+TeaInfo.jid.getText()+"'";

        System.out.println(sql);

        ResultSet rs=DBm.executeQuery(sql);

        DefaultTableModel dtm = new DefaultTableModel(  

                new Object [] {"学生编号","学生姓名","课程名称","成绩"},0);

        try{

        while(rs.next())

            {

            dtm.addRow(new Object[]{rs.getString(1),rs.getString(2),

                  rs.getString(3),rs.getString(4)});

            }

        }catch(SQLException e){

        e.printStackTrace();

        }

        table.setModel(dtm);

    }

   publicvoid inputPerform()

   {

      int selectrow = 0;

        selectrow =table.getSelectedRow();

        String sid =table.getValueAt(selectrow,0).toString();

      String cname=table.getValueAt(selectrow,2).toString();

      String score=table.getValueAt(selectrow,3).toString();

      String sql="exec InputPerform '"+sid+"','"+cname+"','"+score+"'";

      System.out.println(sid+"...."+cname+"....");

      System.out.println(sql);

      SqlManager DBm=SqlManager.createInstance();

        DBm.connectDB();

        if(DBm.executeUpdate(sql)==1)

        {

        JOptionPane.showMessageDialog(this,"成绩输入成功",

               "消息",JOptionPane.INFORMATION_MESSAGE);

        }

        DBm.closeDB();

   }

}

class MeTable extends JTable

{

  

   privatestaticfinallongserialVersionUID = 1L; //添加默认序列号

   public   boolean   isCellEditable(int   rowIndex,   int   columnIndex){

      if (columnIndex==3){

        returntrue;  

        }

      else {

         returnfalse;

      }

   }

  

}

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.*;

public class StuInfo extends JPanel implements ActionListener

{

  

   private static final long serialVersionUID = 1L;//添加默认序列号

   static JLabel jid,jname,jsex,jbirth,jclass;

   JButton b;

   ModifyPassword modify;

   StuInfo(MyFrame f)

   {

      setLayout(new BorderLayout());

      modify=new ModifyPassword(f,"修改密码",true);

     

      jid=new JLabel();

      jname=new JLabel();

      jsex=new JLabel();

      jbirth=new JLabel();

      jclass=new JLabel();

     

      JPanel p=new JPanel();

      b=new JButton("修改密码");

      b.addActionListener(this);

      p.add(b);

      add(p,BorderLayout.SOUTH);

      initInstance(this);

   }

   private void initInstance(Object obj)

   {

      Box base=Box.createHorizontalBox();

      Box left=Box.createVerticalBox();

      Box right=Box.createVerticalBox();

      JPanel p11=new JPanel(),

             p12=new JPanel(),

             p13=new JPanel(),

             p14=new JPanel(),

             p15=new JPanel();

            

      JPanel p21=new JPanel(),

              p22=new JPanel(),

              p23=new JPanel(),

              p24=new JPanel(),

              p25=new JPanel();

      

      p11.add(new JLabel("学生编号:"));

      p21.add(jid);

      p12.add(new JLabel("学生姓名:"));

      p22.add(jname);

      p13.add(new JLabel("学生性别:"));

      p23.add(jsex);

      p14.add(new JLabel("学生生日:"));

      p24.add(jbirth);

      p15.add(new JLabel("学生班级:"));

      p25.add(jclass);

     

      left.add(Box.createVerticalStrut(30));

      left.add(p11);

      left.add(Box.createVerticalStrut(10));

      left.add(p12);

      left.add(Box.createVerticalStrut(10));

      left.add(p13);

      left.add(Box.createVerticalStrut(10));

      left.add(p14);

      left.add(Box.createVerticalStrut(10));

      left.add(p15);

      left.add(Box.createVerticalStrut(10));

     

      right.add(Box.createVerticalStrut(30));

      right.add(p21);

      right.add(Box.createVerticalStrut(10));

      right.add(p22);

      right.add(Box.createVerticalStrut(10));

      right.add(p23);

      right.add(Box.createVerticalStrut(10));

      right.add(p24);

      right.add(Box.createVerticalStrut(10));

      right.add(p25);

      right.add(Box.createVerticalStrut(10));

     

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(left);

      base.add(right);

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      this.add(base,BorderLayout.CENTER);

   }

   public void actionPerformed(ActionEvent e)

   {

      modify.setVisible(true);

   }

   public static void saveStu(String id)

   {

      SqlManager DBm=SqlManager.createInstance();

      DBm.connectDB();

      String sql="exec ProcStudent'"+id+"'";

      ResultSet rs=DBm.executeQuery(sql);

      System.out.println(sql);

      try{

         rs.next();

         jid.setText(rs.getString(1));

         jname.setText(rs.getString(2));

         jsex.setText(rs.getString(3));

         jbirth.setText(rs.getString(4));

         jclass.setText(rs.getString(5));

        

      }catch(SQLException e){

         e.printStackTrace();

      }

   }

}

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

//import java.sql.*;

//import java.util.Vector;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

publicclass StuPanel extends JPanel implements ActionListener

{

  

   privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

   JButton b1,b2,b3;

   StuInfo stuinfo;

   CourseList courselist;

   ChooseList chooselist;

   JPanel p1=new JPanel(),

           p2=new JPanel(),

           p3=new JPanel();

    static JPanel pCenter=new JPanel();

   static CardLayout card=new CardLayout();

   StuPanel(MyFrame f)

   {

      setLayout(new BorderLayout());

      p3.setLayout(new BorderLayout());

      pCenter.setLayout(card);

     

      JLabel label=new JLabel("选课系统(学生端)");

      label.setFont(new Font("TimesRoman",Font.BOLD,24));

      p1.add(label);

     

      b1=new JButton("  个  人  信  息  ");

      b2=new JButton("  课  程  列  表  ");

      b3=new JButton("  已  选  课  程  ");

      b1.addActionListener(this);

      b2.addActionListener(this);

      b3.addActionListener(this);

      p2.add(b1);

      p2.add(b2);

      p2.add(b3);

     

      stuinfo=new StuInfo(f);

      courselist=new CourseList();

      chooselist=new ChooseList();

      pCenter.add("个人信息",stuinfo);

      pCenter.add("课程列表",courselist);

      pCenter.add("已选课程",chooselist);

     

      p3.add(p2,BorderLayout.NORTH);

      p3.add(pCenter,BorderLayout.CENTER);

       

      add(p1,BorderLayout.NORTH);

      add(p3,BorderLayout.CENTER);

     

   }

   publicvoid actionPerformed(ActionEvent e)

   {

      if(e.getSource()==b1)

         card.show(pCenter, "个人信息");

      if(e.getSource()==b2)

         card.show(pCenter, "课程列表");

      if(e.getSource()==b3)

      {

         ChooseList.updateTable();

     

         card.show(pCenter, "已选课程");

      }       

   }

}

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.*;

public class TeaInfo extends JPanel implements ActionListener

{

  

   private static final long serialVersionUID = 1L;//添加默认序列号

   static JLabel jid,jname,jsex,jbirth,jpost,jdepart;

   JButton b;

   //ModifyPassword modify;

   TeaInfo(MyFrame f)

   {

      setLayout(new BorderLayout());

      //modify=new ModifyPassword(f,"修改密码",true);

     

      jid=new JLabel();

      jname=new JLabel();

      jsex=new JLabel();

      jbirth=new JLabel();

      jpost=new JLabel();

      jdepart=new JLabel();

     

      JPanel p=new JPanel();

      b=new JButton("修改密码");

      b.addActionListener(this);

      p.add(b);

      add(p,BorderLayout.SOUTH);

      initInstance(this);

   }

   private void initInstance(Object obj)

   {

      Box base=Box.createHorizontalBox();

      Box left=Box.createVerticalBox();

      Box right=Box.createVerticalBox();

      JPanel p11=new JPanel(),

             p12=new JPanel(),

             p13=new JPanel(),

             p14=new JPanel(),

             p15=new JPanel();

            

      JPanel p21=new JPanel(),

              p22=new JPanel(),

              p23=new JPanel(),

              p24=new JPanel(),

              p25=new JPanel();

      

      p11.add(new JLabel("教师编号:"));

      p21.add(jid);

      p12.add(new JLabel("教师姓名:"));

      p22.add(jname);

      p13.add(new JLabel("教师性别:"));

      p23.add(jsex);

      p14.add(new JLabel("教师生日:"));

      p24.add(jbirth);

      p15.add(new JLabel("教师职称:"));

      p25.add(jpost);

     

     

      left.add(Box.createVerticalStrut(30));

      left.add(p11);

      left.add(Box.createVerticalStrut(10));

      left.add(p12);

      left.add(Box.createVerticalStrut(10));

      left.add(p13);

      left.add(Box.createVerticalStrut(10));

      left.add(p14);

      left.add(Box.createVerticalStrut(10));

      left.add(p15);

      left.add(Box.createVerticalStrut(10));

     

      right.add(Box.createVerticalStrut(30));

      right.add(p21);

      right.add(Box.createVerticalStrut(10));

      right.add(p22);

      right.add(Box.createVerticalStrut(10));

      right.add(p23);

      right.add(Box.createVerticalStrut(10));

      right.add(p24);

      right.add(Box.createVerticalStrut(10));

      right.add(p25);

      right.add(Box.createVerticalStrut(10));

     

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(left);

      base.add(right);

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      base.add(new JPanel());

      this.add(base,BorderLayout.CENTER);

   }

   public void actionPerformed(ActionEvent e)

   {

      //modify.setVisible(true);

   }

   public static void saveTea(String id)

   {

      SqlManager DBm=SqlManager.createInstance();

      DBm.connectDB();

      String sql="exec ProcTeacher'"+id+"'";

      ResultSet rs=DBm.executeQuery(sql);

      System.out.println(sql);

      try{

         rs.next();

         System.out.println(rs.getString(1)+" ");

         jid.setText(rs.getString(1));

         jname.setText(rs.getString(2));

         jsex.setText(rs.getString(3));

         jbirth.setText(rs.getString(4));

         jpost.setText(rs.getString(5));

         jdepart.setText(rs.getString(6));

        

      }catch(SQLException e){

         e.printStackTrace();

      }

   }

}

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JPanel;

publicclass TeaPanel extends JPanel

{

  

   privatestaticfinallongserialVersionUID = 1L;//添加默认序列号

   JButton b1,b2;

   TeaInfo teainfo;

   StoreScore ss;

   JPanel p1=new JPanel(),

           p2=new JPanel(),

           p3=new JPanel();

    static JPanel pCenter=new JPanel();

   static CardLayout card=new CardLayout();

   TeaPanel(MyFrame f)

   {

      setLayout(new BorderLayout());

      p3.setLayout(new BorderLayout());

      pCenter.setLayout(card);

      teainfo=new TeaInfo(f);

      ss=new StoreScore();

      pCenter.add("个人信息",teainfo);

      pCenter.add("录入成绩",ss);

      JLabel label=new JLabel("选课系统(教师端)");

      label.setFont(new Font("TimesRoman",Font.BOLD,24));

      p1.add(label);

     

      b1=new JButton("  个  人  信  息  ");

      b2=new JButton("  录  入  成  绩  ");

      b1.addActionListener(new   ActionListener(){

         publicvoid actionPerformed(ActionEvent e){

            card.show(pCenter,"个人信息");

         }

      });

      b2.addActionListener(new   ActionListener(){

         publicvoid actionPerformed(ActionEvent e){

            ss.updateTable();

            card.show(pCenter,"录入成绩");

         }

      });

      p2.add(b1);

      p2.add(b2);

     

      p3.add(p2,BorderLayout.NORTH);

      p3.add(pCenter,BorderLayout.CENTER);

      

      add(p1,BorderLayout.NORTH);

      add(p3,BorderLayout.CENTER);

     

   }

   publicvoid actionPerformed(ActionEvent e)

   {

     

   }

}

     

    

相关推荐