精华内容
下载资源
问答
  • 学生信息管理系统报告

    千次阅读 2020-09-17 19:12:58
    沈 阳 工 程 学 院 课 程 设 计 设计题目: 学生信息管理系统 院 系 信息学院 班级 计算机B191 学生姓名 陈力源 冯帅 学号 30 29 指导教师 关 颖...
    1. 设计的原始资料及依据

    查阅有关数据库设计、JSP程序设计、面向对象程序设计等资料,进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,提高学生用程序的思想来解决实际问题的能力。本课程设计主要涉及到需求分析、总体设计、详细设计以及底层数据库设计几个主要环节。

    2.设计的主要内容及要求

    (1)写出系统的需求分析。

    (2)写出数据库设计。

    (3)写出系统的详细设计及各模块的功能。

    (4)编写代码,开发系统。

    3.对设计说明书撰写内容、格式、字数的要求

    (1)学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计说明书(论文)的结构及各部分内容要求参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。

    (2)装订格式:

    封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、结论、致谢、参考文献。

    (3)课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。

    4. 设计完成后应提交成果的种类、数量、质量等方面的要求

    (1)每组提交一份课程设计报告。

    (2)每组提交一份课程设计成品。

    5.时间进度安排

    顺序

    阶段日期

    计 划 完 成 内 容

    备注

    1

    第一天

    查阅资料,进行系统的需求分析、详细设计,确定各功能模块并进行数据库设计。

     

    2

    第二天

    单元模块编程及调试。

     

    3

    第三天

    单元模块编程及调试。

     

    4

    第四天

    单元模块集成、调试及运行。

     

    5

    第五天

    撰写课程设计报告。

     

    6.主要参考资料(文献)

    [1]王珊.数据库系统概论.高等教育出版社,2000

    ⑵李代平.软件工程(第2版).清华大学出版社.2008

    ⑶向学哲.JSP程序设计教程.人民邮电出版社,2006

    ⑷陈旭东.JSP2.0应用教程.清华大学出版社,2006 

    ⑸孙鑫.Java Web开发详解.电子工业出版社,2006

     

    沈 阳 工 程 学 院

    Web程序设计课程设计成绩评定表

    院(系):信息学院 班级:计算机B191-1 学生姓名:         陈力源 30   冯帅 29                 

    指 导 教 师 评 审 意 见

    评价内容

    具    体    要    求

    权重

    评    分

    加权分

    调研

    论证

    能独立查阅文献,收集资料;能制定课程设计方案和日程安排。

    0.1

    5

    4

    3

    2

     

    工作能力

    态度

    工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,

    0.2

    5

    4

    3

    2

     

    工作量

    按期圆满完成规定的设计任务,工作量饱满,难度适宜。

    0.2

    5

    4

    3

    2

     

    说明书的质量

    说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

    0.5

    5

    4

    3

    2

     

    指导教师评审成绩

    (加权分合计乘以8)

          

    加权分合计

     

    指 导 教 师 签 名:

     年   月   日

    评 阅 教 师 评 审 意 见

    评价内容

    具    体    要    求

    权重

    评    分

    加权分

    查阅

    文献

    查阅文献有一定广泛性;有综合归纳资料的能力

    0.2

    5

    4

    3

    2

     

    工作量

    工作量饱满,难度适中。

    0.5

    5

    4

    3

    2

     

    说明书的质量

    说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

    0.3

    5

    4

    3

    2

     

    评阅教师评审成绩

    (加权分合计乘以4)

    加权分合计

     

    评 阅 教 师 签 名:

     年   月   日

    答 辩 小 组 评 审 意 见

    评价内容

    具    体    要    求

    权重

    评    分

    加权分

    学生汇报

    汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。

    0.5

    5

    4

    3

    2

     

    答    辩

    思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。

    0.5

    5

    4

    3

    2

     

    答辩小组评审成绩

    (加权分合计乘以8)

    加权分合计

     

    答辩小组教师签名:

     年   月   日

    课 程 设 计 总 评 成 绩

                             

     

    目录

    目 录... 5

    1系统总体介绍... 5

    1.1系统总体介绍... 5

    1.1.1学生信息管理... 5

    1.1.2学生信息查询... 5

    1.2组内分工... 5

    2系统需求分析... 7

    2.1管理员对系统的需求... 7

    2.2学生对系统的需求... 7

    3数据库设计... 8

    3.1数据库需求分析... 8

    3.2数据库物理结构设计(表结构)... 8

    4系统实现... 9

    4.1 总体设计... 9

    4.2 详细设计... 10

    4.2.1.界面设计... 10

    4.2.2.学生管理系统设计... 11

    4.2.3.学生信息查询系统设计... 13

    4.3 编程实现... 13

    4.3.1.登陆... 13

    4.3.2主界面... 16

    4.3.3添加... 21

    4.3.4修改... 25

    4.3.5删除... 29

    4.3.6查询... 30

    结论... 33

    致谢... 34

    参考文献... 35

     

    1系统总体介绍

    1.1系统总体介绍

    1.1.1学生信息管理

    本模块包括学生信息包括学生的学号、姓名、性别、年龄、班级、专业的添加,删除以及修改,由管理员登陆后操作。

    1.1.2学生信息查询

        学生查询个人信息,学生登陆后查询。

    1.2组内分工

    ×××××××××××××××××××××××××××××××××××××××××××××……

                                  表1.1分工表

    成员

    分工

    成绩

    陈力源

    报告撰写及数据库设计

     

    冯帅

    代码撰写及系统设计调试

     

     

     

    2系统需求分析

    2.1管理员对系统的需求

    1、目标:     

    学生信息管理系统的目标是为方便学校教务处系统的管理学生信息2、具体需求:

    1)管理员需要登陆此系统然后对学生的信息进行操作

    2)管理员需要对入学的学生录入学生信息

    3)管理员需要对毕业的学生移除学生信息

    4)管理员需要对升学的学生修改学生信息

     

     

    2.2学生对系统的需求

    1.目标:提供一个学校和学生间提供一个信息共享的平台

    2.具体需求:

    1)学生需要登陆后可以通过学号查询个人信息

     

     

    3数据库设计

    3.1数据库需求分析

                                                     图1.1数据流程图

     

     

     

    3.2数据库物理结构设计(表结构)

    属性

    学号

    姓名

    性别

    年龄

    班级

    专业

    类型

    varchar(20)

    varchar(40)

    varchar(10)

    int(11)

    varchar(50)

    varchar(50)

    约束

    primaykey

    Notnull

    Default null

    Default null

    Default null

    Default null

                                                                   表1.1结构表

     

     

     

    4系统实现

     

     

     

     

    4.1 总体设计

     

     

    图1.2系统总体框图

     

     

     

     

     

     

     

     

     

     

     

     

    4.2 详细设计

     

    4.2.1.界面设计

    1)登陆界面设计

    登陆时会显示用户权限

     

     

     

     

     

    2)主界面设计

    文本框内可输入sql语句操作

    4.2.2.学生管理系统设计

    1)学生信息的添加

    管理员需要登陆后按照要求输入所需的学生信息,包括学号、姓名、性别、年龄、班级、专业,其中学号、姓名不能为空,其他默认为空。

     

     

    2)学生信息的修改

    修改由子界面完成,主界面调出子界面

     

    3)学生信息的删除

    按照学号删除

     

    4.2.3.学生信息查询系统设计

    1)学生查询个人信息

    按照学号查询

     

     

     

    4.3 编程实现

    4.3.1.登陆

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.border.*;

    public class LoginIn extends JFrame{

     JTextField f1;

        JTextField f2;

     JButton b1;

     JButton b2;

     String power;//表示权限

        String imgePath = "11.jpg";

        JPanel p5;

        Image img = Toolkit.getDefaultToolkit().createImage(imgePath);

     LoginIn(){

      Container cp=getContentPane();

     

     

     

      Label l1=new Label("用户:");

      Label l2=new Label("密码:");

     

      JPanel p1=new JPanel();

      JPanel p2=new JPanel();

      JPanel p3=new JPanel();

      JPanel p4=new JPanel();

         p5=new JPanel(){

               protected  void paintChildren(Graphics g) {

                    g.drawImage(img,0,0,this);

                    super.paintChildren(g);

                }

            };

     

       f1=new JTextField(15);

          f2=new JPasswordField(15);

       b1=new JButton("登录");

       b2=new JButton("重置");

            //p1.setBackground(Color.orange);

      p2.add(l1);

      p2.add(f1);

      p2.setBorder(new MatteBorder(0,0,0,0,Color.BLACK));

      p2.setBackground(Color.white);

      p3.add(l2);

      p3.add(f2);

      p3.setBackground(Color.white);

      p3.setBorder(new MatteBorder(0,0,0,0,Color.BLACK));

      p4.add(b1);

      p4.add(b2);

      p4.setBorder(new MatteBorder(-3,-3,-3,-3,Color.CYAN));

      p4.setBackground(Color.BLACK);

      p5.setLayout(new FlowLayout(FlowLayout.CENTER,120,100));

      p5.add(p2);

      p5.add(p3);

      p5.add(p4);

      cp.add(p5,BorderLayout.CENTER);

     

      b1.addActionListener(new Enter());

      b2.addActionListener(new ReWrite());

      addWindowListener(new winClose());

     }

     public static void main(String[] args) {

      LoginIn log=new LoginIn();

      log.setIconImage(Toolkit.getDefaultToolkit().createImage("F:/eclipse文件/rjgc/dl.gif"));

      log.setTitle("计B191 冯帅 陈力源-学生信息管理系统");

      log.setLocation(600,300);

      log.setSize(600,600);

      log.setVisible(true);

     

     

     }

     class Enter implements ActionListener{

      @SuppressWarnings("deprecation")

    public void actionPerformed(ActionEvent e)

      {  //LoginIn log=new LoginIn();

                  if((f1.getText()).equals("admin")&&(f2.getText()).equals("123"))

                  {

            JOptionPane.showMessageDialog(null, "登录成功!用户权限是adimistrator");

                  power="adminstrator";

                  Qframe frame= new Qframe();

                  frame.setIconImage(Toolkit.getDefaultToolkit().createImage("F:/eclipse文件/rjgc/java.gif"));

                  frame.setLocation(400,200);

                     frame.resize(500,285);

                     frame.show();

                    //log.setVisible(false);

                    dispose();

                 

                  }

                  else if((f1.getText()).equals("冯帅")&&(f2.getText()).equals("123456"))

                  {

                  JOptionPane.showMessageDialog(null, "登录成功!用户权限是user");

                  power="adminstrator";

                  Qframe frame= new Qframe();

                  frame.setIconImage(Toolkit.getDefaultToolkit().createImage("F:/eclipse文件/rjgc/java.gif"));

                  frame.setLocation(400,200);

                     frame.resize(500,285);

                     frame.show();

                     dispose();

                  }

            else JOptionPane.showMessageDialog(null, "登录失败,请重新登录!");

      }

     }

     class ReWrite implements ActionListener{

      public void actionPerformed(ActionEvent e)

      {

       f1.setText("");

       f2.setText("");

       f1.requestFocus();

      }

     }

     class winClose extends WindowAdapter

     {

     public void windowClosing(WindowEvent e)

     {

        (e.getWindow()).dispose();

      System.exit(0);

     }

     }

    }

    4.3.2主界面

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import java.security.cert.PKIXRevocationChecker.Option;

     

    import javax.swing.*;

     

    import java.sql.*;

     

     

    class Qframe extends JFrame implements ActionListener{

                           

      JPanel contentPane;

      BorderLayout borderLayout1=new BorderLayout(5,10);

      Label prompt;

      JTextField stm;

      Button run;

      public static final TextArea result=new TextArea();

       

      public Qframe(){

            contentPane=(JPanel)this.getContentPane();

            contentPane.setLayout(borderLayout1);

            this.setTitle("学生信息管理系统");

           

            addWindowListener(new WindowAdapter(){

                   public void windowClosing(WindowEvent e){

                          System.exit(0);

                   }

            });

            prompt =new Label("执行语句:");

            run=new Button("开始执行");

            result.setEditable(false);

            stm=new JTextField(100);

            JPanel option =new JPanel();

            Button zenjia=new Button("增加(add)");

            option.add(zenjia,BorderLayout.NORTH);

            zenjia.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==zenjia){

                                        Adddialog add1= new Adddialog();

                                        add1.setVisible(true);

                                 }

                              

                        }

                 });

            zenjia.addActionListener(this);

            Button shanchu=new Button("删除(delet)");

            option.add(shanchu,BorderLayout.NORTH);

           shanchu.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==shanchu){

                                        Deletedialog dt1=new Deletedialog();

                                        dt1.setVisible(true);

                                 }

                              

                        }

                 });

            shanchu.addActionListener(this);

            Button xiugai=new Button("修改(alter)");

            option.add(xiugai,BorderLayout.NORTH);

            xiugai.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==xiugai){

                                       Alterdialog af=new Alterdialog();

                                       af.setVisible(true);

                                     

                                 }

                              

                        }

                 });

            Button cx=new Button("查询(query)");

            option.add(cx,BorderLayout.NORTH);

            cx.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==cx){

                                       Cxdialog cj=new Cxdialog();

                                       cj.show();

                                 }

                              

                        }

                 });

           cx.addActionListener(this);

            xiugai.addActionListener(this);

            Button chaxun=new Button("刷新(refresh)");

            option.add(chaxun,BorderLayout.NORTH);

            chaxun.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==chaxun){

                                       Connection sin=Dbcon.getconnectin();

                                       ResultSet rs=Dbcon.query(sin);

                                       

                                       try {

                                              result.setText("刷新成功\n\n\n");  //.format("这是一个数%1$4d",10)

                                             while(rs.next())

                                                    {

                                                         String msg=rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sage")+"\t"+rs.getString("sclass")+"\t"+rs.getString("smajor")+"\n";

                                                         result.append(msg);

                                                    }

                                             sin.close();

                                             rs.close();

                                       }catch(Exception h){

                                              h.printStackTrace();

                                       }

                                 }

                              

                        }

                 });

            chaxun.addActionListener(this);

            Button tuichu=new Button("退出(quit)");

            option.add(tuichu,BorderLayout.NORTH);

            tuichu.addActionListener(new ActionListener() {

                        @Override

                        public void actionPerformed(ActionEvent e) {

                              

                                if(e.getSource()==tuichu){

                                       System.exit(0);

                                       }

                                 }

                              

                       

                 });

            

           

            //界面布局

            contentPane.add(prompt,BorderLayout.WEST);

            contentPane.add(stm,BorderLayout.CENTER);

            contentPane.add(run,BorderLayout.EAST);

            contentPane.add(result,BorderLayout.SOUTH);

            contentPane.add(option,BorderLayout.NORTH);

            run.addActionListener(this);

      }

      public void actionPerformed(ActionEvent e){

            Connection con=null;

            Statement st=null;

            ResultSet rs=null;

            if(e.getSource()==run){

                   try{

                            con=Dbcon.getconnectin();

                            //System.out.println("连接成功");

                            String msg1="lianjiechenggong";

                            result.setText("连接成功\n\n\n");

                             

                            String yuju=stm.getText();

                            st=con.createStatement();

                            rs=st.executeQuery(yuju);

                            //System.out.println("fengshuai");

                            //result.setText("");

                            while(rs.next())

                            {

                                 String msg=rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sage")+"\t"+rs.getString("sclass")+"\t"+rs.getString("smajor")+"\n";

                                 result.append(msg);

                            }

                           

                            //System.out.println("连接完成");

                     }catch(SQLException sqle){

                            result.setText(sqle+"lianjiecuowu");

                      //System.out.println(sqle+"lianjiecuowu");

                      }

                     catch(Exception h){

                            //result.setText(h.getMessage());

                            //System.out.println(h+"diergecuowu");

                            h.printStackTrace();

                    

                     }finally{

                            try {

                                      rs.close();

                                      st.close();

                                      con.close();

                               } catch (SQLException e1) {

                                      // TODO Auto-generated catch block

                                      e1.printStackTrace();

                               }

                     }

            }

           

      }

      @SuppressWarnings("deprecation")

    public static void main(String argc[]){

           

            LoginIn dl=new LoginIn();

            dl.show();

           

           

            Qframe frame= new Qframe();

            frame.setLocation(400,200);

            frame.resize(600,350);

            frame.show(); }}

    4.3.3添加

    1)添加子界面

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

     

     

    import java.sql.*;

     

     public class Adddialog extends JFrame {

            public static final int Width =320;

            public static final int Heigth =230;

          

            Button btn,btn2;

          JTextField jt,jt2,jt3,jt4,jt5,jt6;

          

           /*class MyPanel extends JPanel{

                   Label lb ;

                 

                  MyPanel(String s,JTextField jt){

                         setLayout(new FlowLayout());

                        

                         lb=new Label(s);

                         add(lb);add(jt);

                  }

                   

            }*/

    public Adddialog(){

                  setSize(Width,Heigth);

                  setLocation(820,200);

                  setTitle(new String("增加"));

                  setLayout(new FlowLayout());

                  Container con=getContentPane();

                  jt=new JTextField(20);

                  Label lb=new Label("学号:");

                  jt2=new JTextField(20);

                  Label lb2=new Label("姓名:");

                  jt3=new JTextField(20);

                  Label lb3=new Label("性别:");

                  jt4=new JTextField(20);

                  Label lb4=new Label("年龄:");

                  jt5=new JTextField(20);

                  Label lb5=new Label("班级:");

                  jt6=new JTextField(20);

                  Label lb6=new Label("专业:");

                  btn=new Button("添加");

                  btn.addActionListener(new Enter());

               btn2=new Button("取消");

                  /*MyPanel p1=new MyPanel("学号:",jt);

                  MyPanel p2=new MyPanel("姓名:",jt2);

                  MyPanel p3=new MyPanel("性别:",jt3);*/

                  add(lb);add(jt);add(lb2);add(jt2);add(lb3);add(jt3);add(lb4);add(jt4);add(lb5);add(jt5);add(lb6);add(jt6);add(btn);add(btn2);

                 

                 

           }

    class Enter implements ActionListener{

          

       public void actionPerformed(ActionEvent e){

          

               Container con=getContentPane();

               Adddialog ad= new Adddialog();

          

           if(e.getActionCommand().equals("添加")){

                 

           con.setBackground(Color.green);

                 

                 

                         String sno=jt.getText();

                         String sname=jt2.getText();

                         String ssex=jt3.getText();

                         String sage=jt4.getText();

                         String sclass=jt5.getText();

                         String smajor=jt6.getText();

                         Object str[]={sno,sname,ssex,sage,sclass,smajor};

                         Connection sin=Dbcon.getconnectin();

                         Dbcon.insert(sin, str);

                         JOptionPane.showMessageDialog(null,"添加成功!","操作提示",JOptionPane.NO_OPTION );

                   dispose();

             

             

             }

     }

     }

     }

    2)添加数据库

    package rjgc;

     

    import java.sql.*;

     

    import javax.swing.JOptionPane;

    public class Dbcon {

    public final static Connection getconnectin(){

           Connection con=null;

           String driver = "com.mysql.jdbc.Driver";

           String url = "jdbc:mysql://localhost:3306/sims?serverTimezone=GMT%2B8";

        String user = "root";

           String password = "feng";

           try{

                  //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

                  Class.forName(driver);

               con=DriverManager.getConnection(url,user,password);

                  con.setCatalog("sims");

                 

           }

           catch(SQLException sqle){

                  System.out.println(sqle+"lianjiecuowu");

                       }

                      catch(Exception e){

                             System.out.println(e+"diergecuowu");

                     

                      }

           return con;

    }

    //添加数据

    public final static void insert(Connection con,Object obj[]){

           PreparedStatement stmt=null;

           try {

                  stmt=con.prepareStatement("insert into student(sno,sname,ssex,sage,sclass,smajor) values(?,?,?,?,?,?)");

                 

                  stmt.setString(1,obj[0].toString());

                  stmt.setString(2,obj[1].toString());

                  stmt.setString(3,obj[2].toString());

                  stmt.setString(4,obj[3].toString());

                  stmt.setString(5,obj[4].toString());

                  stmt.setString(6,obj[5].toString());

                  stmt.execute();

                 

                 

                 

           } catch (SQLException e) {

                  JOptionPane.showMessageDialog(null,"shibai","操作提示",JOptionPane.NO_OPTION );

           }

    }

    //查询数据

    public final static ResultSet query(Connection con){

          

           ResultSet rs=null;

           PreparedStatement stmt=null;

           try {

                  stmt=con.prepareStatement("select * from student");

                   rs=stmt.executeQuery();

                 

                

                 //stmt.close();

                 //con.close();

           } catch (SQLException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

           }

           return rs;

    }

    //删除数据

    public final static void delete(Connection con,String s){

           try {

                  PreparedStatement stmt;

                   stmt=con.prepareStatement("delete from student where sno=?");

               stmt.setObject(1,s);

                  stmt.execute();

                 

           } catch (SQLException e) {

                  // TODO Auto-generated catch block

                  e.printStackTrace();

           }

           finally{

                 

           }

    }

     

    }

    4.3.4修改

    1)修改子界面

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

     

     

    import java.sql.*;

     

     public class Tianjiadialog extends JFrame {

            public static final int Width =320;

            public static final int Heigth =230;

          

            Button btn,btn2;

          JTextField jt,jt2,jt3,jt4,jt5,jt6;

          

           /*class MyPanel extends JPanel{

                   Label lb ;

                 

                  MyPanel(String s,JTextField jt){

                         setLayout(new FlowLayout());

                        

                         lb=new Label(s);

                         add(lb);add(jt);

                  }

                   

            }*/

    public Tianjiadialog(){

                  setSize(Width,Heigth);

                  setLocation(820,200);

                  setTitle(new String("请输入新的信息:"));

                  setLayout(new FlowLayout());

                  jt=new JTextField(20);

                  Label lb=new Label("学号:");

                  jt2=new JTextField(20);

                  Label lb2=new Label("姓名:");

                  jt3=new JTextField(20);

                  Label lb3=new Label("性别:");

                 

                  jt4=new JTextField(20);

                  Label lb4=new Label("年龄:");

                  jt5=new JTextField(20);

                  Label lb5=new Label("班级:");

                  jt6=new JTextField(20);

                  Label lb6=new Label("专业:");

                  btn=new Button("修改");

                  btn.addActionListener(new Enter());

               btn2=new Button("取消");

                  /*MyPanel p1=new MyPanel("学号:",jt);

                  MyPanel p2=new MyPanel("姓名:",jt2);

                  MyPanel p3=new MyPanel("性别:",jt3);*/

                  add(lb);add(jt);add(lb2);add(jt2);add(lb3);add(jt3);

                  add(lb4);add(jt4);add(lb5);add(jt5);add(lb6);add(jt6);

                  add(btn);add(btn2);

                 

           }

    class Enter implements ActionListener{

          

       public void actionPerformed(ActionEvent e){

          

               Container con=getContentPane();

          

           if(e.getActionCommand().equals("修改")){

                 

           con.setBackground(Color.blue);

                 

                 

                         String sno=jt.getText();

                         String sname=jt2.getText();

                         String ssex=jt3.getText();

                         String sage=jt4.getText();

                         String sclass=jt5.getText();

                         String smajor=jt6.getText();

                         Object str[]={sno,sname,ssex,sage,sclass,smajor};

                         Connection sin=Dbcon.getconnectin();

                         Dbcon.insert(sin, str);

                         JOptionPane.showMessageDialog(null,"修改成功!","操作提示",JOptionPane.NO_OPTION );

                   dispose();

             

             

             }

     }

     }

    }

    2)修改数据库

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

     

     

    import java.sql.*;

     

     public class Alterdialog extends JFrame {

            public static final int Width =320;

            public static final int Heigth =230;

          

            Button btn,btn2;

          JTextField jt,jt2,jt3;

          

           /*class MyPanel extends JPanel{

                   Label lb ;

                 

                  MyPanel(String s,JTextField jt){

                         setLayout(new FlowLayout());

                        

                         lb=new Label(s);

                         add(lb);add(jt);

                  }

                   

            }*/

    public Alterdialog(){

                  setSize(Width,Heigth);

                  setLocation(820,200);

                  setTitle(new String("修改:"));

                  setLayout(new FlowLayout());

                  Container con=getContentPane();

                  jt=new JTextField(20);

                  Label lb=new Label("学号:");

                  btn=new Button("确定");

                  btn.addActionListener(new Enter());

               btn2=new Button("取消");

                  /*MyPanel p1=new MyPanel("学号:",jt);

                  MyPanel p2=new MyPanel("姓名:",jt2);

                  MyPanel p3=new MyPanel("性别:",jt3);*/

                  add(lb);add(jt);

                  //add(lb2);add(jt2);add(lb3);add(jt3);

                  add(btn);add(btn2);

                 

                 

           }

    class Enter implements ActionListener{

          

       public void actionPerformed(ActionEvent e){

          

               Container con=getContentPane();

              

          

           if(e.getActionCommand().equals("确定")){

                 

           con.setBackground(Color.red);

                 

                Connection sin=Dbcon.getconnectin();

                         String sno=jt.getText();

                         try {

                                PreparedStatement stmt;

                                 stmt=sin.prepareStatement("delete from student where sno=?");

                             stmt.setObject(1,sno);

                                stmt.execute();

                         } catch (SQLException h) {

                                // TODO Auto-generated catch block

                                h.printStackTrace();

                         }

                         dispose();

                         Tianjiadialog tg=new Tianjiadialog();

                         tg.show();

                        

             

             

             }

         }

        }

     

    }

    4.3.5删除

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

     

     

    import java.sql.*;

     

     public class Deletedialog extends JFrame {

            public static final int Width =320;

            public static final int Heigth =230;

          

            Button btn,btn2;

          JTextField jt,jt2,jt3;

          

           /*class MyPanel extends JPanel{

                   Label lb ;

                 

                  MyPanel(String s,JTextField jt){

                         setLayout(new FlowLayout());

                        

                         lb=new Label(s);

                         add(lb);add(jt);

                  }

                   

            }*/

    public Deletedialog(){

                  setSize(Width,Heigth);

                  setLocation(820,200);

                  setTitle(new String("删除:"));

                  setLayout(new FlowLayout());

                  Container con=getContentPane();

                  jt=new JTextField(20);

                  Label lb=new Label("学号:");

                  /*jt2=new JTextField(20);

                  Label lb2=new Label("姓名:");

                  jt3=new JTextField(20);

                  Label lb3=new Label("性别:");*/

                  btn=new Button("确定");

                  btn.addActionListener(new Enter());

               btn2=new Button("取消");

                  /*MyPanel p1=new MyPanel("学号:",jt);

                  MyPanel p2=new MyPanel("姓名:",jt2);

                  MyPanel p3=new MyPanel("性别:",jt3);*/

                  add(lb);add(jt);

                  //add(lb2);add(jt2);add(lb3);add(jt3);

                  add(btn);add(btn2);

                 

                 

           }

    class Enter implements ActionListener{

          

       public void actionPerformed(ActionEvent e){

          

               Container con=getContentPane();

              

          

           if(e.getActionCommand().equals("确定")){

                 

           con.setBackground(Color.red);

                 

                 

                         String sno=jt.getText();

                        

                         Connection sin=Dbcon.getconnectin();

                         Dbcon.delete(sin, sno);

                         JOptionPane.showMessageDialog(null,"信息删除成功!","信息",JOptionPane.INFORMATION_MESSAGE );

                   dispose();

             

             

             }

         }

        }

     

    }

     

     

     

    4.3.6查询

    package rjgc;

     

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

     

     

    import java.sql.*;

     

     public class Cxdialog extends JFrame {

            public static final int Width =320;

            public static final int Heigth =230;

          

            Button btn,btn2;

          JTextField jt,jt2,jt3;

          

           /*class MyPanel extends JPanel{

                   Label lb ;

                 

                  MyPanel(String s,JTextField jt){

                         setLayout(new FlowLayout());

                        

                         lb=new Label(s);

                         add(lb);add(jt);

                  }

                   

            }*/

    public Cxdialog(){

                  setSize(Width,Heigth);

                  setLocation(820,200);

                  setTitle(new String("查询:"));

                  setLayout(new FlowLayout());

                  Container con=getContentPane();

                  jt=new JTextField(20);

                  Label lb=new Label("学号:");

                  btn=new Button("确定");

                  btn.addActionListener(new Enter());

               btn2=new Button("取消");

                  /*MyPanel p1=new MyPanel("学号:",jt);

                  MyPanel p2=new MyPanel("姓名:",jt2);

                  MyPanel p3=new MyPanel("性别:",jt3);*/

                  add(lb);add(jt);

                  //add(lb2);add(jt2);add(lb3);add(jt3);

                  add(btn);add(btn2);

                 

                 

           }

    class Enter implements ActionListener{

          

       public void actionPerformed(ActionEvent e){

          

               Container con=getContentPane();

              

          

           if(e.getActionCommand().equals("确定")){

                 

               con.setBackground(Color.red);

                 

                Connection sin=Dbcon.getconnectin();

                         String sno=jt.getText();

                         ResultSet rs=null;

                         PreparedStatement stmt=null;

                         try {

                               

                                 stmt=sin.prepareStatement("select * from student where sno=?");

                             stmt.setObject(1,sno);

                                rs=stmt.executeQuery();

                                while(rs.next()){

                                String msg=rs.getString("sno")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex")+"\t"+rs.getString("sage")+"\t"+rs.getString("sclass")+"\t"+rs.getString("smajor")+"\n";

                                JOptionPane.showMessageDialog(null,msg,"查询结果:",JOptionPane.NO_OPTION );

                                }

                                      //stmt.close();

                                      //con.close();

                                } catch (SQLException h) {

                                       // TODO Auto-generated catch block

                                       h.printStackTrace();

                                }

                         }

                 

                        

                   dispose();

             

             

             }

         }

        }

     

     

     

    结论

     

    首先,更进一步的了解了数据库的基本操作, 在这之前,数据库的学习仅仅刚开了个头,我们只是在了解一些概念性的东西。在做这个系统之前,我连基本的连接数据库,配文件dsn,数据库查询语句等这些东西都不熟练。现在对于数据库的增删改查操作比较熟练了,对于初学者来说,比较头疼的就是对于单引号的处理。我的建议是如果不理解先把按照课本上正确的语句敲,然后在多次进行数据库的链接,增删改查操作中不断总结规律。 这次设计的学生信息管理系统,全在自己所掌握的知识下,进行编程设计,完全体现了自己在数据库语言和程序设计课程学习状况,充分地为自己以后更深入了数据库语言奠下深厚的基础。纵观此学生信息管理系统的整体概况,目前,自我认为设计良好,相关功能都能够实现,功能强大,条理清晰,界面可观性比较好。并且特色在于,所设计的表单都在一个表单系统桌面中运行,比较符合系统的观念。

    --------学生信息管理系统小结经过大家的努力,学生管理系统终于做完了,经过这次实习系统设计,自己总结了这个学生信息管理系统的一些问题,不过收获还是颇为丰富的,再有理论知识上结合实践,使我学到了更多。在系统设计的过程中,我从中发现,学习数据库要细心和有耐性,并且要不断地从外界学习更多的技术才能设计出一套完美的系统。

     

    致谢

    时光飞逝,岁月如梭,短暂的实训即将画上句点。回想起这短暂的实训生活,短暂而又美好,开启了我未来的职业生涯,这段时光将是我人生中最宝贵的财富。感谢沈阳工程学院为我们提供实训机会,感谢学校领导对我们实训的支持,感谢指导过我的老师、同学。他们都在工作中给过我莫大的支持和帮助,度过了短暂快乐的实训生活。  

      感谢老师用严谨敬业的态度指导我们学习、用温柔体贴的话语指导我们生活,我最应该感谢的是我的父母,他们无私的给与我物质和精神上的支持和鼓励,特在此表示感谢。

     

    参考文献

    [1] 列出的只限于那些作者亲自阅读过的,最重要的且发表在公开出版物上的文献或网上下载的资料。按引用文献的顺序,列于末。

    [2] 参考文献是专著时,书写格式为:顺序号 著者.书名.版本.其他责任者.出版地:出版者,出版年,文献数量

    [3] 窦振中.PIC系列单片机原理和程序设计.北京:北京航空航天大学出版社,1998

    [4] 参考文献是期刊时,书写格式为:顺序号作者.题名.其他责任者.刊名,年,卷(期):在原文献中的位置

    [5] 高为柄,程勉,夏小华.非线性控制系统的发展.自动化学报,1991,17

    展开全文
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    扫描下方公众号,发送 成绩系统 4个字,获取下载源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,但仍在更新补充中)

    以后有时间再给大家继续分享,有任何问题欢迎留言区交流。

    大学C语言实训课,C语言学生成绩管理系统。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    struct student
    	{
    		int num;
    		char name[20];
    		float pingshi;
    		float shiyan;
    		float kaoshi;
    		double zongping;
    	}stu[4];
    void main()
    {
    	void a();
    	void b();
    	void c();
    	void d();
    	void e();
    	int n;
    	while(n!=6)
    	{	printf("\t大学计算机基础成绩管理系统\n");
    		printf("1:输入一个班学生大学计算机基础成绩记录\n");
    		printf("2:显示所有成绩记录\n");
    		printf("3:计算并输出平均成绩,均方差\n");
    		printf("4:输出成绩与排名\n");
    		printf("5:结果存入文件chengji.txt\n");
    		printf("6:退出系统\n");
    		printf("输入选项代码:");
    		scanf("%d",&n);
    		switch(n)
    		{
    			case 1:a();break;
    			case 2:b();break;
    			case 3:c();break;
    			case 4:d();break;
    			case 5:e();break;
    			case 6:printf("\n*******************谢谢使用!*******************\n");break;
    			break;    
    		}	
    	}
    getchar();
    }
    /* 子  函  数*/
    void a() /* 输入一个班的学生记录*/
    
    {
    	int i;
    
    	for(i=0;i<4;i++)
    
    	{   
    
    		printf("请输入学号 姓名 平时成绩 实验成绩 考试成绩:");
    
    		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);
    		
    	}for(i=0;i<4;i++)
    stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;
    }
    void b()/* 显示所有记录*/
    
    {
    	int i;
    
    	printf("学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    }
    
    void c()/* 求出全班平均成绩,显示均方差*/
    {  
    	int a[4]={0,1,2,3};
        int i,j;
        double total=0,pfc=0,bzc=0;
        double ave;
        for(i=0;i<4;i++)
    	{
    		total=total+stu[i].zongping;
    	}
        ave=total/4.0;
        printf("总评平均成绩是%f\n",ave);
    	for(i=0;i<4;i++)
    	{
    		pfc=pow((stu[i].zongping-ave),2)/4;
    	}
    	bzc=sqrt(pfc);
    	printf("\n平方差是%f\n",pfc);
    	printf("\n标准差是%f\n",bzc);
    }
    void d()
    
    {
    	int a[4]={0,1,2,3};
    	int i,j,temp;
    	for(j=0;j<3;j++)
    	{
    		for(i=0;i<3-j;i++)
    		if(stu[a[i]].zongping>stu[a[i+1]].zongping)
    		{	
    			temp=a[i];a[i]=a[i+1];
    			a[i+1]=temp;
    
    		}
    	}
    
    	printf("顺序为:\n");
    
    	printf("学号     姓名      总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);
    
    	printf("\n");
    
    }
    
    void e()
    {int i;
    FILE *fp;
    fp=fopen("chengji.txt","w");
    
    	fprintf(fp,"学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    printf("\n\n*******************恭喜,保存完成!*******************\n\n");
    }
    

    简单记录。

    关注微信公众号“资料在线”,回复“C语言源码”,即可获得C语言源码包

    更多资源等着你

    最新文章:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

     

    展开全文
  • 学生管理系统

    千次阅读 2019-06-25 08:51:04
    学生管理系统实训报告 ** 首先,本次java实训的内容是写一个学生管理系统,主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。 这就是本次学生管理系统需要实现的...

    **

    学生管理系统实训报告

    **
    首先,本次java实训的内容是写一个学生管理系统,主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。

    在这里插入图片描述
    这就是本次学生管理系统需要实现的内容:
    1、可设置学校信息
    2、可设置状态栏信息
    3、登录与注册功能
    4、登录用户修改密码功能
    5、对学生记录增加和修改
    6、查询:按学号、姓名、班级和系部进行查询
    7、删除:按学号、班级、系部删除记录
    8、统计:按性别、班级、系部统计人数

    这个学生管理系统的学生信息是通过连接着mysql服务器导入到IJ里面,这个就是连接
    mysql服务器的文档,
    在这里插入图片描述
    然后需要通过连接maneger,实现和数据库的连接管理。
    在这里插入图片描述
    提示连接成功!这样就和数据库连接上了。
    在这里插入图片描述
    接下来就是插入这个学生管理系统所要用到的图片还有帮助文档。
    在这里插入图片描述
    接下来要做的就是添加java class实体类:
    在这里插入图片描述
    添加好了之后就是数据访问接口

    在这里插入图片描述
    访问接口写完后,就需要实现访问接口的连接
    在这里插入图片描述
    然后还需要创建:状态数据,服务接口接口,以及他们的实现类。
    在这里插入图片描述
    接下来就是创建net.zjq.student.test包,在里面创建测试类Test,分别测试每个接口是否连接正常,是否可以完美运行
    在这里插入图片描述
    在这里插入图片描述
    以上的这些访问接口都做好了以后就可以创建运用程序和窗口页面类:
    加粗样式
    在创建窗口页面类时,可以给窗口注册监视器,实现监听器连接接口,就可以编写事件处理方法:
    在这里插入图片描述

    java实训总结

    通过实训周对java学生管理系统的学习,自己也基本掌握了学生管理系统里面所包含的一些重要的知识点。这次实训主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。 通过这次实训,我初步了解MVC模式与单元测试,巩固所学的Java理论知识,提高Java数据库应用编程的基本技能。
    想想这段时间以来,对java的学习,重点还是在学习一些概念和常识性的东西,给我自己收获最大的就是,学会了分析异常,抛出异常,自己会分析是哪里出了问题,应该如何解决,怎样避免问题的存在。在编写代码的时候,一个小小的符号,一个常量变量的设定,这都无不考虑着我的细心和严谨,所以学习java对我以后学习其他的语言有很大的帮助。
    实训时间虽然不是很长,但其中的每一天我都受益匪浅,收获很大,不仅极大加深了我对理论知识的理解,也提高了我自己的实践能力,必须要真正地做到了学以致用。在做整个系统的过程中,遇到了不少的麻烦,但是都慢慢的解决了。
    总之通过这次实训的学习,我自己的实践能力得到了很大的提升,有一点我就很满足了。马上就大二了,而且现在也分好了方向,我选的就是java,我一定会好好学习这门专业!

    **

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。1

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt&ThinSpace;. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. 注脚的解释 ↩︎

    展开全文
  • 基于java的学生信息管理系统设计报告
  • Web学生管理系统

    千次阅读 多人点赞 2019-10-03 23:51:34
    学生管理系统Web项目实现与总结 经过了两个阶段的学习与尝试,最终实现了Web端的学生管理系统。 为什么要说是两个阶段呢? 实际上在暑假学习Web的时候做了一个初版的学生管理系统,但是在最后一个传值 的过程中...

    学生管理系统Web项目实现与总结

    经过了两个阶段的学习与尝试,最终实现了Web端的学生管理系统。
    为什么要说是两个阶段呢?

    1. 实际上在暑假学习Web的时候做了一个初版的学生管理系统,但是在最后一个传值 的过程中,遇到了一个我以为不能解决的问题,就因为这个问题捣鼓了一天没捣鼓出来,最终决定放弃这个项目。
    2. 直到我继续往下学习的时候觉得这个学生管理系统应该还是得尝试一下,于是最后一次尝试中,解决了问题,初版的学生管理系统的问题在开学的2周后解决,在昨天完成了其他的所有功能并且修改了一下BUG

    项目做了很久,遇到的问题很多,在此做一个项目实现流程与项目个人总结来记录一下学习过程。接下来进入正题,为了分析这个项目,我分为五大块:

    1. 项目的层次结构
    2. 项目的逻辑流程
    3. 项目的代码实现
    4. 项目的运行效果
    5. 项目的问题总结
    6. 项目的感想与展望

    1、项目的层次结构

    项目结构

    1、Dao层中包含了两个接口,分别是StudentDao与UserDao,其下为它们的实现类
    2、Model层中PageBean为分页实现所需要的数据存储类,Account为登录功能所需要的用户数据类,Student为显示数据所需要的学生信息存储类
    3、Service层为业务逻辑层,目的是为了确保避免Dao层与用户的直接接触,类似一个Dao的代理
    4、Servlet层的功能主要实现了JSP页面与后端的数据交互并实现页面的跳转功能
    5、Utils层的功能主要是为了使用数据库连接池以及判断JSP页面传递的值是否为空

    JSP结构

    N、这里六个JSP页面中student1与student2分别为单页与分页显示的页面(其余略)

    注意:由于Eclipse的问题,所以导致图1没有明显的层次感,具体看包名分清

    2、项目的逻辑流程

    逻辑流程图

    3、项目的代码实现
    Dao层实现类

    1、StudentDaoImpl

    package Dao.DaoImpl;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.ScalarHandler;
    import Dao.StudentDao;
    import Model.PageBean;
    import Model.Student;
    import Utils.JDBCUtil_c3p0;
    import Utils.StringUtil;
    /**
     * StudentDaoImpl
     * @author Hillain
     */
    public class StudentDaoImpl implements StudentDao{
    	QueryRunner qr = JDBCUtil_c3p0.getQR();
    	@Override
    	public List<Student> findAll() {
    		List<Student> list = null;
    		try {
    			list = qr.query("select * from stu",new BeanListHandler<Student>(Student.class));
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    
    	@Override
    	public void insert(Student stu) {
    		try {
    			qr.update("insert into stu values (null,?,?,?,?,?,?,?,?)",
    					stu.getSchool(),stu.getDepartment(),stu.getBanji(),stu.getName(),
    					stu.getAge(),stu.getSex(),stu.getLocation(),stu.getRt());
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    	@Override
    	public void delete(int id) {
    		try {
    			qr.update("delete from stu where id = ?",id);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    	@Override
    	public Student findOne(int id) {
    		Student stu = new Student();
    		try {
    			 stu = qr.query("select * from stu where id = ?", new BeanHandler<Student>(Student.class) ,id);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return stu;
    	}
    
    	@Override
    	public void update(Student stu) {
    		try {
    			qr.update("update stu set school=?,department=?,banji=?,name=?,age=?,sex=?,location=?,rt=? where id=?", 
    					stu.getSchool(),stu.getDepartment(),stu.getBanji(),stu.getName(),stu.getAge(),
    					stu.getSex(),stu.getLocation(),stu.getRt(),stu.getId());
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    	@Override
    	public List<Student> search(String name, String sex) {
    		String sql = "select * from stu where 1=1";		//先写一个sql语句,后面的1=1是为了方便加内容
    		List<String> list = new ArrayList<String>();	//用于查询参数的list
    		List<Student> students = null;
    		if(!StringUtil.isEmpty(name)){
    			sql += " and name like ?";
    			list.add("%"+name+"%");	//模糊查询
    		}
    		if(!StringUtil.isEmpty(sex)){
    			sql += " and sex = ?";
    			list.add(sex);
    		}
    		try {
    			students = qr.query(sql, new BeanListHandler<Student>(Student.class),list.toArray());
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return  students;
    	}
    
    	@Override
    	public List<Student> findStudentByPage(int currentPage) {
    		List<Student> students = new ArrayList<Student>();
    		try {
    			students = qr.query("select * from stu limit ? OFFSET ?",new BeanListHandler<Student>(Student.class), Page_Size,(currentPage-1)*Page_Size);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return students;
    	}
    
    	@Override
    	public int findCount() {
    		Long count = null;
    		try {
    			count = (Long)qr.query("select COUNT(*) from stu", new ScalarHandler());
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return count.intValue();
    	}
    }
    

    2、UserDaoImpl

    package Dao.DaoImpl;
    import java.sql.SQLException;
    import java.util.List;
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import Dao.UserDao;
    import Model.Account;
    import Model.Student;
    import Utils.JDBCUtil_c3p0;
    /**
     * StudentDaoImpl
     * @author Hillain
     */
    public class UserDaoImpl implements	UserDao{
    	@Override
    	public boolean login(String username, String password) {
    		QueryRunner qr = JDBCUtil_c3p0.getQR();
    		List<Account> list = null;
    		try {
    			list = qr.query("select * from admin where username = ? and password = ?", 
    					new BeanListHandler<Account>(Account.class),username,password);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return !list.isEmpty();
    	}
    	
    }
    

    Model层

    1、Account

    package Model;
    
    public class Account {
    	private int id = -1;
    	private String username = null;
    	private String password = null;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public String getPassword() {
    		return password;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	@Override
    	public String toString() {
    		return "Account [id=" + id + ", username=" + username + ", password=" + password + "]";
    	}
    }
    

    2、PageBean

    package Model;
    
    import java.util.List;
    
    public class PageBean<T> {
    	private String name;
    	private String sex;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	private int method;//查看是哪种查询
    	public int getMethod() {
    		return method;
    	}
    	public void setMethod(int method) {
    		this.method = method;
    	}
    	private int currentPage;//当前页数
    	private int totalPage;//总页数
    	public int getCurrentPage() {
    		return currentPage;
    	}
    	@Override
    	public String toString() {
    		return "PageBean [currentPage=" + currentPage + ", totalPage=" + totalPage + ", currentSize=" + currentSize
    				+ ", totalSize=" + totalSize + ", list=" + list + "]";
    	}
    	public void setCurrentPage(int currentPage) {
    		this.currentPage = currentPage;
    	}
    	public int getTotalPage() {
    		return totalPage;
    	}
    	public void setTotalPage(int totalPage) {
    		this.totalPage = totalPage;
    	}
    	public int getCurrentSize() {
    		return currentSize;
    	}
    	public void setCurrentSize(int currentSize) {
    		this.currentSize = currentSize;
    	}
    	public int getTotalSize() {
    		return totalSize;
    	}
    	public void setTotalSize(int totalSize) {
    		this.totalSize = totalSize;
    	}
    	public List<T> getList() {
    		return list;
    	}
    	public void setList(List<T> list) {
    		this.list = list;
    	}
    	private int currentSize;//当前个数
    	private int totalSize;//总个数
    	private List<T> list;//集合
    }
    

    3、Student

    package Model;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    /**
     * Student数据存储对象
     * @author Hillain
     */
    public class Student {
    	public Student(int id,String school, String department, String banji, String name, int age, String sex,
    			String location, Date rt) {
    		super();
    		this.id = id;
    		this.school = school;
    		this.department = department;
    		this.banji = banji;
    		this.name = name;
    		this.age = age;
    		this.sex = sex;
    		this.location = location;
    		this.rt = rt;
    	}
    	public Student(String school, String department, String banji, String name, int age, String sex,
    			String location, Date rt) {
    		super();
    		this.school = school;
    		this.department = department;
    		this.banji = banji;
    		this.name = name;
    		this.age = age;
    		this.sex = sex;
    		this.location = location;
    		this.rt = rt;
    	}
    	public Student(){}
    	int id = -1;
    	String school = null;
    	String department = null;
    	String banji = null;
    	String name = null;
    	int age = -1;
    	String sex = null;
    	String location = null;
    	Date rt = null;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getLocation() {
    		return location;
    	}
    	public void setLocation(String location) {
    		this.location = location;
    	}
    	public Date getRt() {
    		return rt;
    	}
    	public void setRt(Date rt) {
    		this.rt = rt;
    	}
    	public String getSchool() {
    		return school;
    	}
    	public void setSchool(String school) {
    		this.school = school;
    	}
    	public String getDepartment() {
    		return department;
    	}
    	public void setDepartment(String department) {
    		this.department = department;
    	}
    	public String getBanji() {
    		return banji;
    	}
    	public void setBanji(String banji) {
    		this.banji = banji;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	@Override
    	public String toString() {
    		return "Student [id=" + id + ", school=" + school + ", department=" + department + ", banji=" + banji
    				+ ", name=" + name + ", age=" + age + ", sex=" + sex + ", location=" + location + ", rt=" + rt + "]";
    	}
    }
    

    Service层实现类

    1、SystemServiceImpl

    package Service.ServiceImpl;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import Dao.StudentDao;
    import Dao.DaoImpl.StudentDaoImpl;
    import Dao.DaoImpl.UserDaoImpl;
    import Model.PageBean;
    import Model.Student;
    import Service.SystemService;
    /**
     * 具体的业务处理
     * @author Hillain
     * @param <T>
     *
     */
    public class SystemServiceImpl<T> implements SystemService{
    	StudentDao stuDao = new StudentDaoImpl();
    	@Override
    	public List<Student> findAll() {
    		return stuDao.findAll();
    	}
    
    	@Override
    	public boolean login(String username, String password) {
    		return new UserDaoImpl().login(username, password);
    	}
    
    	@Override
    	public void insert(Student stu) {
    		stuDao.insert(stu);
    	}
    
    	@Override
    	public void delete(int id) {
    		stuDao.delete(id);
    	}
    
    	@Override
    	public Student findOne(int id) {
    		Student stu = stuDao.findOne(id);
    		return stu;
    	}
    
    	@Override
    	public void update(Student stu) {
    		stuDao.update(stu);
    	}
    
    	@Override
    	public List<Student> search(String name, String sex) {
    		return stuDao.search(name,sex);
    	}
    
    	@Override
    	public PageBean<T> findStudentByPage(int currentPage) {
    		PageBean<Student> pb = new PageBean<Student>();
    		StudentDao stu = new StudentDaoImpl();
    		int totalPage = -1;	//总页数
    		int totalSize = -1;	//总个数
    		totalSize = stu.findCount();
    		totalPage = (totalSize%stu.Page_Size==0)?(totalSize/stu.Page_Size):(totalSize/stu.Page_Size)+1;
    		pb.setCurrentPage(currentPage);
    		pb.setCurrentSize(stu.Page_Size);
    		pb.setTotalSize(stu.findCount());
    		pb.setTotalPage(totalPage);
    		pb.setList(stu.findStudentByPage(currentPage));
    		pb.setSex("");
    		pb.setName("");
    		pb.setMethod(1);
    		return (PageBean<T>) pb;
    	}
    	
    	@Override
    	public PageBean<T> searchByPage(String name,String sex,int currentPage,int method) {
    		PageBean<Student> pb = new PageBean<Student>();
    		StudentDao stu = new StudentDaoImpl();
    		List<Student> students1 = stu.search(name, sex);
    		List<Student> students2 = new ArrayList<Student>();
    		for(int i = (currentPage-1)*5;i<currentPage*5;i++) {
    			if(students1.size()<=i)break;
    			students2.add(students1.get(i));
    		}
    		int totalPage = -1;	//总页数
    		int totalSize = -1;	//总个数
    		totalSize = students1.size();
    		totalPage = (totalSize%stu.Page_Size==0)?(totalSize/stu.Page_Size):(totalSize/stu.Page_Size)+1;
    		pb.setList(students2);
    		pb.setCurrentPage(currentPage);
    		pb.setCurrentSize(stu.Page_Size);
    		pb.setTotalSize(students1.size());
    		pb.setTotalPage(totalPage);
    		pb.setName(name);
    		pb.setSex(sex);
    		pb.setMethod(method);
    		return (PageBean<T>) pb;
    	}
    }
    

    Servlet层

    1、AddStudent

    package Servlet;
    
    import java.io.IOException;
    import java.sql.SQLException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.dbutils.QueryRunner;
    
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    import Utils.JDBCUtil_c3p0;
    
    /**
     * Servlet implementation class AddStudent
     */
    public class AddStudent extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		try {
    			request.setCharacterEncoding("UTF-8");
    			response.setContentType("text/html; charset=UTF-8");
    			String school = request.getParameter("school");
    			String department = request.getParameter("dept");
    			String banji = request.getParameter("banji");
    			String name = request.getParameter("name");
    			String agestr = request.getParameter("age");
    			String sex = request.getParameter("sex");
    			String location = request.getParameter("location");
    			String timestr = request.getParameter("time");
    			Date time = null;
    			int age = -1;
    			if(school.trim().equals("")||department.trim().equals("")||banji.trim().equals("")||name.trim().equals("")||agestr.trim().equals("")||sex.trim().equals("")||location.trim().equals("")||timestr.trim().equals("")){
    				response.getWriter().write("所填信息不能为空!");
    				response.setHeader("refresh", "3;addStudent.jsp");
    			}else{
    				age = Integer.parseInt(agestr);
    				time = new SimpleDateFormat("yyyy-MM-dd").parse(timestr);
    				Student stu = new Student(school,department,banji,name,age,sex,location,time);
    				SystemService service = new SystemServiceImpl();
    				service.insert(stu);
    				request.getRequestDispatcher("student").forward(request, response);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    2、DeleteStudent

    package Servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * Servlet implementation class DeleteStudent
     */
    public class DeleteStudent extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		SystemService service = new SystemServiceImpl();
    		int id = Integer.parseInt(request.getParameter("id"));
    		service.delete(id);
    		request.getRequestDispatcher("student").forward(request, response);
    	}
    
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }
    

    3、FindStudent

    package Servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * Servlet implementation class UpdateStudent
     */
    public class FindStudent extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		int id = Integer.parseInt(request.getParameter("id"));
    		SystemService service = new SystemServiceImpl();
    		Student stu = service.findOne(id);
    		request.getSession().setAttribute("student", stu);
    		response.sendRedirect("update.jsp");
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    }
    

    4、LoginServlet

    package Servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Dao.UserDao;
    import Dao.DaoImpl.UserDaoImpl;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * 用于处理登录功能的Servlet
     */
    public class LoginServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=utf-8");
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		SystemService service = new SystemServiceImpl();
    		if(service.login(username, password)){
    			response.sendRedirect("index.jsp");
    		}else{
    			response.setHeader("refresh", "3;login.jsp");
    			response.getWriter().write("登陆失败,请重试!");
    		}
    	}
    }
    

    5、SearchStudent

    package Servlet;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.catalina.core.ApplicationContext;
    
    import com.sun.glass.ui.Application;
    
    import Model.PageBean;
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    import Utils.StringUtil;
    
    /**
     * Servlet implementation class SearchStudent
     */
    public class SearchStudent extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=utf-8");
    		String name = request.getParameter("name");
    		String sex = request.getParameter("sex");
    		int method = Integer.parseInt(request.getParameter("method"));
    		if(method==1){
    			SystemService service = new SystemServiceImpl();
    			List<Student> students = service.search(name,sex);
    			request.getSession().setAttribute("student", students);
    			request.getSession().setAttribute("name", name);
    			request.getSession().setAttribute("sex", sex);
    			request.getRequestDispatcher("student1.jsp").forward(request, response);
    		}
    		if(method==2){
    			int currentPage = Integer.parseInt(request.getParameter("currentPage"));
    			SystemService service = new SystemServiceImpl();
    			if(StringUtil.isEmpty(name)&&StringUtil.isEmpty(sex)){
    				method=1;
    			}
    			PageBean pb = service.searchByPage(name, sex, currentPage, method);
    			request.getSession().setAttribute("pb", pb);
    			request.getRequestDispatcher("student2.jsp").forward(request, response);
    		}
    		if(method==3){
    			int currentPage = Integer.parseInt(request.getParameter("currentPage"));
    			SystemService service = new SystemServiceImpl();
    			PageBean<Student> pb1 = (PageBean<Student>) request.getSession().getAttribute("pb");
    			PageBean pb2 = service.searchByPage(pb1.getName(), pb1.getSex(), currentPage,method);
    			request.getSession().setAttribute("pb", pb2);
    			request.getRequestDispatcher("student2.jsp").forward(request, response);
    		}
    	}
    }
    

    6、StudentPageServlet

    package Servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Model.PageBean;
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * Servlet implementation class StudentPageServlet
     */
    public class StudentPageServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		int currentPage = Integer.parseInt(request.getParameter("currentPage"));
    		SystemService service = new SystemServiceImpl();
    		PageBean pb = service.findStudentByPage(currentPage);
    		request.getSession().setAttribute("pb", pb);
    		/*for (Object student : pb.getList()) {
    			System.out.println(student.toString());
    		}*/
    		request.getRequestDispatcher("student2.jsp").forward(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    }
    

    7、StudentServlet

    package Servlet;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * Servlet implementation class StudentServlet
     */
    public class StudentServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		SystemService service = new SystemServiceImpl();
    		List<Student> list = service.findAll();
    		request.getSession().setAttribute("student", list);
    		response.sendRedirect("student1.jsp");
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    
    }
    

    8、UpdateStudent

    package Servlet;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Model.Student;
    import Service.SystemService;
    import Service.ServiceImpl.SystemServiceImpl;
    
    /**
     * Servlet implementation class UpdateStudent
     */
    public class UpdateStudent extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		try {
    			request.setCharacterEncoding("UTF-8");
    			response.setContentType("text/html; charset=UTF-8");
    			int id = Integer.parseInt(request.getParameter("id"));
    			String school = request.getParameter("school");
    			String department = request.getParameter("dept");
    			String banji = request.getParameter("banji");
    			String name = request.getParameter("name");
    			String agestr = request.getParameter("age");
    			String sex = request.getParameter("sex");
    			String location = request.getParameter("location");
    			String timestr = request.getParameter("time");
    			Date time = null;
    			int age = -1;
    			if(school.trim().equals("")||department.trim().equals("")||banji.trim().equals("")||name.trim().equals("")||agestr.trim().equals("")||sex.trim().equals("")||location.trim().equals("")||timestr.trim().equals("")){
    				response.getWriter().write("所填信息不能为空!");
    				response.setHeader("refresh", "3;addStudent.jsp");
    			}else{
    				age = Integer.parseInt(agestr);
    				time = new SimpleDateFormat("yyyy-MM-dd").parse(timestr);
    				Student stu = new Student(id,school,department,banji,name,age,sex,location,time);
    				SystemService service = new SystemServiceImpl();
    				service.update(stu);
    				request.getRequestDispatcher("student").forward(request, response);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    }
    

    Utils层

    1、C3P0

    package Utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    import org.apache.commons.dbutils.QueryRunner;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    /**
     * 该类为c3p0实现的JDBCUtil工具类
     * @author Hillain
     *
     */
    public class JDBCUtil_c3p0 {
    	static ComboPooledDataSource cpds = null;
    	static QueryRunner qr = null;
    	//静态初始块
    	static{
    		cpds = new ComboPooledDataSource();
    		qr = new QueryRunner(cpds);
    	}
    	public static Connection getConn() throws SQLException{
    		//注册驱动
    		//获取Connection
    		return cpds.getConnection();
    	}
    	public static QueryRunner getQR(){
    		return qr;
    	}
    	/**
    	 * 利用方法关闭JDBC资源
    	 * @param rs
    	 * @param st
    	 * @param conn
    	 */
    	public static void closeAll(ResultSet rs,Statement st,Connection conn){
    		closeRs(rs);
    		closeSt(st);
    		closeConn(conn);
    	}
    	//关闭ResultSet
    	public static void closeRs(ResultSet rs){
    		try {
    			if(rs!=null){
    				rs.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally{
    			rs = null;
    		}
    	}
    	//关闭Statement
    	public static void closeSt(Statement st){
    		try {
    			if(st!=null){
    				st.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally{
    			st = null;
    		}
    	}
    	//关闭Connection
    	public static void closeConn(Connection conn){
    		try {
    			if(conn!=null){
    				conn.close();
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally{
    			conn = null;
    		}
    	}
    }
    

    2、StringUtil

    package Utils;
    
    public class StringUtil {
    	static public boolean isEmpty(CharSequence s){
    		return s==null||s.length()==0;
    	}
    }
    

    3、C3P0-config

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
      <default-config>
      	<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
      	<property name="jdbcUrl">jdbc:mysql://localhost:3306/sorm?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai</property>
      	<property name="user">root</property>
      	<property name="password">1044722314</property>
        <property name="checkoutTimeout">30000</property>
        <property name="idleConnectionTestPeriod">30</property>
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
        <property name="maxStatements">200</property>
      </default-config>
    
    
      <!-- This app is massive! -->
      <named-config name="intergalactoApp"> 
        <property name="acquireIncrement">50</property>
        <property name="initialPoolSize">100</property>
        <property name="minPoolSize">50</property>
        <property name="maxPoolSize">1000</property>
    
        <!-- intergalactoApp adopts a different approach to configuring statement caching -->
        <property name="maxStatements">0</property> 
        <property name="maxStatementsPerConnection">5</property>
    
        <!-- he's important, but there's only one of him -->
        <user-overrides user="master-of-the-universe"> 
          <property name="acquireIncrement">1</property>
          <property name="initialPoolSize">1</property>
          <property name="minPoolSize">1</property>
          <property name="maxPoolSize">5</property>
          <property name="maxStatementsPerConnection">50</property>
        </user-overrides>
      </named-config>
    </c3p0-config>
    

    JSP层

    1、addStudent

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="AddStudent" method="post">
    		<table border="1">
    			 <tr align="center">
    				<td>学校</td>
    				<td><input type="text" name="school"></td>
    			 </tr>
    			 <tr align="center">
    				<td>学院</td>
    				<td><input type="text" name="dept"></td>
    			 </tr>
    			 <tr align="center">
    				<td>班级</td>
    				<td><input type="text" name="banji"></td>
    			 </tr>
    			 <tr align="center">
    				<td>姓名</td>
    				<td><input type="text" name="name"></td>
    			 </tr>
    			 <tr align="center">
    				<td>年龄</td>
    				<td><input type="text" name="age"></td>
    			 </tr>
    			 <tr align="center">
    				<td>性别</td>
    				<td>
    					<input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"></td>
    			 </tr>
    			 <tr align="center">
    				<td>籍贯</td>
    				<td><input type="text" name="location"></td>
    			 </tr>
    			 <tr align="center">
    				<td>注册日期</td>
    				<td><input type="text" name="time"></td>
    			 </tr>
    			 <tr align="center">
    				<td><input value="添加信息" type="submit"></td>
    			 </tr>
    		</table>
    	</form>
    </body>
    </html>
    

    2、index

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>index</title>
    </head>
    <body>
    	<h3><a href="student">显示所有学生信息列表</a></h3>
    	<h3><a href="StudentPageServlet?currentPage=1">分页显示所有学生信息列表</a></h3>
    </body>
    </html>
    

    3、login

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>student</title>
    <script type="text/javascript">
    	function deleteStudent(id) {
    		var flag = confirm("是否要删除学生?");
    		if(flag){
    			//表明点了确定,访问Servlet,在当前标签页上打开超链接
    			window.location.href="DeleteStudent?id="+id
    		}
    	}
    </script>
    </head>
    <body>
    	<form action="SearchStudent" method="post">
    		<table border="1">
    			<tr>
    				<td colspan="10">
    					&nbsp
    					姓名:<input type="text" name="name" <c:if test="${!empty name }">value="${name }"</c:if>>
    					<input type="hidden" name="method" value="1">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					性别:<select name="sex" style="text-align: center;">
    							<option value="" <c:if test="${empty sex }">selected="selected"</c:if>>--请选择--</option>
    							<option value="男" <c:if test="${sex eq '男' }">selected="selected"</c:if>></option>
    							<option value="女" <c:if test="${sex eq '女' }">selected="selected"</c:if>></option>
    						 </select>
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="submit" value="查询学生信息">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp|&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="button" value="添加学生信息" onclick="window.location.href='addStudent.jsp'">
    				</td>
    			</tr>
    			<tr align="center">
    				<td>编号</td>
    				<td>学校</td>
    				<td>学院</td>
    				<td>班级</td>
    				<td>姓名</td>
    				<td>年龄</td>
    				<td>性别</td>
    				<td>籍贯</td>
    				<td>注册日期</td>
    				<td>操作</td>
    			</tr>
    			<c:forEach items="${student }" var="stu">
    				<tr align="center">
    					<td>${stu.id }</td>
    					<td>${stu.school }</td>
    					<td>${stu.department }</td>
    					<td>${stu.banji }</td>
    					<td>${stu.name }</td>
    					<td>${stu.age }</td>
    					<td>${stu.sex }</td>
    					<td>${stu.location }</td>
    					<td>${stu.rt }</td>
    					<td><a href="FindStudent?id=${stu.id }">更新</a> <a href="#" onclick="deleteStudent(${stu.id })">删除</a></td>
    				</tr>
    			</c:forEach>
    		</table>
    	</form>
    </body>
    </html>
    

    4、student1

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>student</title>
    <script type="text/javascript">
    	function deleteStudent(id) {
    		var flag = confirm("是否要删除学生?");
    		if(flag){
    			//表明点了确定,访问Servlet,在当前标签页上打开超链接
    			window.location.href="DeleteStudent?id="+id
    		}
    	}
    </script>
    </head>
    <body>
    	<form action="SearchStudent" method="post">
    		<table border="1">
    			<tr>
    				<td colspan="10">
    					&nbsp
    					姓名:<input type="text" name="name" <c:if test="${!empty name }">value="${name }"</c:if>>
    					<input type="hidden" name="method" value="1">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					性别:<select name="sex" style="text-align: center;">
    							<option value="" <c:if test="${empty sex }">selected="selected"</c:if>>--请选择--</option>
    							<option value="男" <c:if test="${sex eq '男' }">selected="selected"</c:if>></option>
    							<option value="女" <c:if test="${sex eq '女' }">selected="selected"</c:if>></option>
    						 </select>
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="submit" value="查询学生信息">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp|&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="button" value="添加学生信息" onclick="window.location.href='addStudent.jsp'">
    				</td>
    			</tr>
    			<tr align="center">
    				<td>编号</td>
    				<td>学校</td>
    				<td>学院</td>
    				<td>班级</td>
    				<td>姓名</td>
    				<td>年龄</td>
    				<td>性别</td>
    				<td>籍贯</td>
    				<td>注册日期</td>
    				<td>操作</td>
    			</tr>
    			<c:forEach items="${student }" var="stu">
    				<tr align="center">
    					<td>${stu.id }</td>
    					<td>${stu.school }</td>
    					<td>${stu.department }</td>
    					<td>${stu.banji }</td>
    					<td>${stu.name }</td>
    					<td>${stu.age }</td>
    					<td>${stu.sex }</td>
    					<td>${stu.location }</td>
    					<td>${stu.rt }</td>
    					<td><a href="FindStudent?id=${stu.id }">更新</a> <a href="#" onclick="deleteStudent(${stu.id })">删除</a></td>
    				</tr>
    			</c:forEach>
    		</table>
    	</form>
    </body>
    </html>
    

    5、student2

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>student</title>
    <script type="text/javascript">
    	function deleteStudent(id) {
    		var flag = confirm("是否要删除学生?");
    		if(flag){
    			//表明点了确定,访问Servlet,在当前标签页上打开超链接
    			window.location.href="DeleteStudent?id="+id
    		}
    	}
    </script>
    </head>
    <body>
    	<form action="SearchStudent" method="post">
    		<table border="1">
    			<tr>
    				<td colspan="10">
    					&nbsp
    					姓名:<input type="text" name="name" <c:if test="${!empty pb.name }">value="${pb.name }"</c:if> >
    					
    					<input type="hidden" name="method" value="2">
    					<input type="hidden" name="currentPage" value="1">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					性别:<select name="sex" style="text-align: center;">
    							<option value="" <c:if test="${empty pb.sex }">selected="selected"</c:if>>--请选择--</option>
    							<option value="男" <c:if test="${pb.sex eq '男' }">selected="selected"</c:if>></option>
    							<option value="女" <c:if test="${pb.sex eq '女' }">selected="selected"</c:if>></option>
    						 </select>
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="submit" value="查询学生信息">
    					&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp|&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
    					<input type="button" value="添加学生信息" onclick="window.location.href='addStudent.jsp'">
    				</td>
    			</tr>
    			<tr align="center">
    				<td>编号</td>
    				<td>学校</td>
    				<td>学院</td>
    				<td>班级</td>
    				<td>姓名</td>
    				<td>年龄</td>
    				<td>性别</td>
    				<td>籍贯</td>
    				<td>注册日期</td>
    				<td>操作</td>
    			</tr>
    			<c:forEach items="${pb.list }" var="stu">
    				<tr align="center">
    					<td>${stu.id }</td>
    					<td>${stu.school }</td>
    					<td>${stu.department }</td>
    					<td>${stu.banji }</td>
    					<td>${stu.name }</td>
    					<td>${stu.age }</td>
    					<td>${stu.sex }</td>
    					<td>${stu.location }</td>
    					<td>${stu.rt }</td>
    					<td><a href="FindStudent?id=${stu.id }">更新</a> <a href="#" onclick="deleteStudent(${stu.id })">删除</a></td>
    				</tr>
    			</c:forEach>
    			<c:if test="${pb.method == 1}">
    				<tr>
    					<td colspan="10">
    						第${pb.currentPage }/${pb.totalPage }&nbsp&nbsp&nbsp
    						每页显示:${pb.currentSize }条数据&nbsp&nbsp&nbsp
    						总记录数:${pb.totalSize }条数据&nbsp&nbsp&nbsp
    						<c:if test="${pb.currentPage!=1 }">
    							<a href="StudentPageServlet?currentPage=1">首页</a>|<a href="StudentPageServlet?currentPage=${pb.currentPage-1 }">上一页</a>
    						</c:if>
    						
    						<c:forEach begin="1" end="${pb.totalPage }" var="i">
    							<c:if test="${pb.currentPage== i }">
    								${i }
    							</c:if>
    							<c:if test="${pb.currentPage!= i }">
    								<a href="StudentPageServlet?currentPage=${i }">${i }</a>
    							</c:if>
    						</c:forEach>
    						
    						<c:if test="${pb.currentPage!=pb.totalPage }">
    							<a href="StudentPageServlet?currentPage=${pb.currentPage+1 }">下一页</a>|<a href="StudentPageServlet?currentPage=${pb.totalPage}">尾页</a>
    						</c:if>
    					</td>
    				</tr>
    			</c:if>
    			<c:if test="${pb.method == 2||pb.method == 3}">
    				<tr>
    					<td colspan="10">
    						第${pb.currentPage }/${pb.totalPage }&nbsp&nbsp&nbsp
    						每页显示:${pb.currentSize }条数据&nbsp&nbsp&nbsp
    						总记录数:${pb.totalSize }条数据&nbsp&nbsp&nbsp
    						<%
    							session.setAttribute("name", session.getAttribute("pb"));
    							session.setAttribute("sex", session.getAttribute("pb"));
    						%>
    						<c:if test="${pb.currentPage!=1 }">
    							<a href="SearchStudent?currentPage=1&method=3">首页</a>|<a href="SearchStudent?currentPage=${pb.currentPage-1 }&method=3">上一页</a>
    						</c:if>
    						
    						<c:forEach begin="1" end="${pb.totalPage }" var="i">
    							<c:if test="${pb.currentPage== i }">
    								${i }
    							</c:if>
    							<c:if test="${pb.currentPage!= i }">
    								<a href="SearchStudent?currentPage=${i }&method=3">${i }</a>
    							</c:if>
    						</c:forEach>
    						
    						<c:if test="${pb.currentPage!=pb.totalPage }">
    							<a href="SearchStudent?currentPage=${pb.currentPage+1 }&method=3">下一页</a>|<a href="SearchStudent?currentPage=${pb.totalPage}&method=3">尾页</a>
    						</c:if>
    					</td>
    				</tr>
    			</c:if>
    		</table>
    	</form>
    </body>
    </html>
    

    6、update

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>update</title>
    </head>
    <body>
    	<form method="post" action="UpdateStudent">
    		<table border="1">
    			<tr>
    				<td>编号</td>
    				<td><input type="hidden" name="id" value="${student.id }">${student.id }</td>
    			</tr>
    			<tr>
    				<td>学校</td>
    				<td><input type="text" name="school" value="${student.school }"></td>
    			</tr>
    			<tr>
    				<td>学院</td>
    				<td><input type="text" name="dept" value="${student.department }"></td>
    			</tr>
    			<tr>
    				<td>班级</td>
    				<td><input type="text" name="banji" value="${student.banji }"></td>
    			</tr>
    			<tr>
    				<td>姓名</td>
    				<td><input type="text" name="name" value="${student.name }"></td>
    			</tr>
    			<tr>
    				<td>年龄</td>
    				<td><input type="text" name="age" value="${student.age }"></td>
    			</tr>
    			<tr>
    				<td>性别</td>
    				<td>
    					<input type="radio" name="sex"<c:if test="${student.sex =='男'}"> checked="true"</c:if> value="男"><input type="radio" name="sex"<c:if test="${student.sex =='女'}"> checked="true"</c:if> value="女"></td>
    			</tr>
    			<tr>
    				<td>籍贯</td>
    				<td><input type="text" name="location" value="${student.location }"></td>
    			</tr>
    			<tr>
    				<td>注册日期</td>
    				<td><input type="text" name="time" value="${student.rt }"></td>
    			</tr>
    			<tr>
    				<td>操作</td>
    				<td><input value="更新" type="submit"><input value="返回" type="button" onclick="window.location.href='index.jsp'"></td>
    			</tr>
    		</table>
    	</form>
    </body>
    </html>
    

    注意:关于Dao类等接口这里没有贴上代码,但不影响代码的理解

    4、项目的运行效果

    具体运行效果请看视频:项目演示视频

    5、项目的问题总结

    由于Tomcat版本问题,学生管理系统项目提取不出学生的信息(已尝试n次)✘
    前两周学习时,突然想最后一次尝试,由于学生管理系统项目需要添加新功能✔
    --------------------------以上分别是我解决问题前后的两个阶段----------------------------

    遇到了N多个问题,不过最后解决了,感觉如磐涅重生了一般,在此写下个人心得。
    1、还是上一次的问题,我一直认为是Tomcat版本的问题导致我的数据库无法和Servlet连接,一直提不出数据。成功的原因是因为学了数据库连接池之后,打算使用 ComboPooledDataSource来重写JDBCUtil,发现使用ComboPooledDataSource还是不行,而且是根本无法运行,错误为找不到c3p0所在类?
    2、吃惊的我百度之后发现JavaWeb不仅仅资源文件的实际位置不在Java工程,就连添加Build-Path都要放在WebContent的lib下进行才可以成功使用jar包中的类。
    3、终于,c3p0是成功使用了,在登陆页面也终于可以尝试登录,只不过我无论输入账号密码是否正确,最后永远弹出登录错误提示,其实这个错误也是因为connection的jar包没有正确导入。
    4、jar包的问题解决之后,就是jsp页面的问题,在jsp页面中,无法显示学生的信息,发现没有导入taglib,导致c:forEach无法正确运行。
    5、导入了jstl包之后,jsp页面运行出现错误(虽然错,但起码前面的错都对了),说在StudentImpl中没有找到School这个属性,其实我是有这个变量,只不过可能jsp只识别小写,最后改为小写执行成功!
    6、解决问题Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF的问题,原因是利用href或者表单传值的method为get,但是不同版本的tomcat接收能力不一。我的tomcat不能用get接收中文数值(在Servlet设置编码问题也解决不了、xml配置文件修改了也无济于事),所以最后干脆把href的数据利用<%%>把查询的数据保存到Session中,这样的话解决了这个问题,并且达到了我想要的效果(查询过后,跳转的信息页面中仍然保存我之前所要查询的信息)
    ------------------------------------------------------------------------------------------------------------
    以上为项目解决问题的过程以及心得,为了加强记忆以及记录这一神圣的时刻,因此写了个人第二份博客,以下为重点概括:
    1、显示数据:EL + JSP + JSTL + 表格。
    2、在jsp页面中想要使用c:forEach等系统未自带的方法,必须要在首行导入taglib。
    3、JUnit4调试失败的原因很多,我是因为方法前有返回值,而返回值只能为void。
    4、JSP页面与Servlet是一对一的,一个个实现而不是同时写出多个JSP或Servlet。
    5、除MVC模式的三个部分,最好有一个业务逻辑类,专门负责处理业务。
    6、JSP页面使用doGet方法无法传中文字符,故到Servlet写入数据库时就是乱码。
    7、如果传到Servlet中的值有多个,则使用getParameterValues,返回值为数组。
    8、Web项目中lib不与src同级,故要把所有jar包放在WEB-INF的lib下添加才可以。
    9、在jsp的El表达式中,抓取对象的属性,尽量写为小写,否则无法识别,产生错误(这点没有查询过多的资料,自己判断的结果)。
    10、如果Servlet的请求转发是doPost发送的,那么在另一个Servlet中必须写doPost,否则无效(最好在doGet中也调用doPost)。
    11、完成了这些存储工作后,需要跳转到列表页面。这里不能直接跳转到列表页面,应该先跳转到Servlet,由Servlet跳转到列表页面。
    12、隐藏表单的妙用:在更新信息的功能中,肯定要将id传递给Servlet,但是学生的id肯定是不可修改,但还是要传递。所以手动创建一个隐藏的输入框,给定id的值,以便提交表单。
    13、模糊查询和普通查询方式不一,若模糊查询中使用普通查询的方式,则根据不同的情况可能要写4、5种sql查询。而"select * from stu where 1=1",可以保留sql语句中的where,默认查询所有,其他情况直接在末端添加相应语句即可。

    6、项目的感想与展望

    1、文章开头所提到的两个阶段确实是两个实打实的阶段,第一个阶段在解决了看似无法解决的问题之后,引发了一系列后续问题,所以初版的学生管理系统并不是这么简单。其次就是第二个阶段,后续功能的实现花了比较长的时间(在实现过程中还是有很多错误以及学校正常学习、Web的视频学习等也占了很多时间)

    2、这一次的Web项目相比之前做过的项目,也许总耗时不是最长,但是逻辑层面和代码量是之前做过的项目所不及的。而且这个完整的管理系统并不是一次性就可以写好,而是一直改错一直改进所完成的。让我明白了,不管是什么作品,都可能是经过一波三折之后才写出来的。

    3、这次的项目经历使我对MVC模式更加的了解,对数据库连接池、JSP页面的书写、JSTL以及EL表达式等这类代码书写更加的熟练,对分页功能的印象更加深刻。PS:一个看似简单的分页功能可能会让你可以整一个下午。

    4、关于后续的学习,如果有好的项目,则还是会与这次一样把一系列的内容写到博客中进行记录与交流。

    5、Web学生管理系统项目基本到此结束,之前做过一个应用程序版的学生管理系统(内包含:仿TIM登录界面、较为精美的管理系统界面,以及一系列功能),也是在学校花了近两个星期的周期写了这个项目(PS:关于界面的制作花了大量时间,毕竟想做一个让自己满意的项目),所以我可能也会在近期有空写一个博客,来记录并回忆一下所学所做的内容。

    最后:本人为大二菜鸡一枚,花了近半天时间写下这篇博客来记录一下项目经验。同时也希望能够帮助到一些对Web或者项目有问题的同学。

    展开全文
  • GUI学生管理系统实训报告

    万次阅读 2019-07-04 15:25:59
    对于实训GUI学生管理系统,我个人而言,理解不是很多,除了老师讲的前面的,简单的听了课的,都还理解,但上手可能也会很迷茫,后面的抄代码都全是红线红线,上找下找,都是重新打,反正基本上都是跟着抄代码 ...
  • 学生成绩管理系统设计》 二、实训目的 (1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。 (2)掌握C++的基本概念和基础知识。 (3)通过训练能够读懂较为复杂的C++语言源程序...
  • 1.程序依赖项关系图: 2.程序运行截图: 3.学生管理系统c#实现(控制台程序及设计报告下载
  • MySQL学生成绩管理系统设计实验报告

    千次阅读 多人点赞 2020-12-01 21:46:15
    主要介绍学生成绩管理系统项目开发的背景、目的、对象以及研究内容。 1.1项目背景 每个学校都需要在期末进行考试成绩的统计分析工作,而这些工作都必须在考试结束后一个星期的时间内完成。大量的成绩数据的统计工作...
  • C++ 学生信息管理系统课程设计报告

    千次阅读 2020-06-13 11:22:27
    《面向对象课程设计》报告学生信息管理系统设计一、问题描述二、需求分析和概要设计三、功能模块描述和设计思路四、具体实现过程五、收获与展望 一、问题描述 学生信息管理系统设计 学生信息包括:学号,姓名,年龄...
  • 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍号码等。 系统要求实现以下功能: 1、输入功能:录入学生信息(包括学生学号、姓名、性别、出生...
  • 学生学籍管理系统可行性分析报告

    千次阅读 多人点赞 2020-04-28 21:46:14
    通过对学生学籍管理系统项目进行一系列的详细调查研究,明确了该系统项目的实现在技术、经济和社会因素方面的可行性,阐述为了合理地达到项目目标的实现报告,对软件开发中将要面临的问题及其解决方案进行可行性分析...
  • C语言学生成绩信息管理系统课程设计报告

    万次阅读 多人点赞 2016-10-07 22:19:22
    学生成绩管理系统 主要功能: (1)能按学期、按班级完成对学生成绩的录入、 修改,删除 (2)能按班级统计学生的成绩,求学生的总分及 平均分,并能根据学生的平均成绩进行排序 (3)能查询学生...
  • Java EE期末报告--学生成绩管理系统

    千次阅读 2019-06-04 10:48:10
    目录 引言 ...学生管理系统的编码阶段: dao层与*Mapper.xml映射关系 Service层和dao层的关系: controller层与Service层的关系: jsp和Controller前后端进行数据交互 分页技术的实现: Stu...
  • JavaWeb学生成绩管理系统

    万次阅读 多人点赞 2018-07-06 21:12:05
    基于JavaWeb开发的学生成绩,使用MyEclipse2014开发,连接MySQL数据库,存储学生的身份信息、成绩,管理员的身份信息,课程信息。功能说明:学生注册。学生身份:跳转到学生登录界面,点击查询成绩按钮,以表格的形式...
  • c++学生信息管理系统+项目报告

    万次阅读 多人点赞 2018-08-18 09:23:43
    一.系统分析:1.开发背景: 随着科学技术的发展,计算机管理在日常生活中的地位变得越来越重要。它能够代替人做各种重复,繁琐的劳动,并且拥有操作简单,可信度好,不易...学生信息管理系统,是针对学校人事处的大...
  • 学生信息管理系统测试总报告

    万次阅读 多人点赞 2019-10-18 11:55:53
    目录 1 前言 4 1.1 编写目的 4 ...3.2.1 系统管理模块 6 3.2.2 系统设置模块 6 3.2.3 用户管理模块 7 3.3 非功能需求 7 4. 设计测试用例 8 4.1 专业管理功能模块(场景分析法) 8 4.1.1 专业管理...
  • 学生管理系统(代码+论文+开题报告)

    千次下载 热门讨论 2008-02-15 21:31:42
    学生管理系统(代码+论文+开题报告),完整的毕业论文,供参考,
  • SSM学生管理系统

    千次阅读 热门讨论 2019-06-21 17:57:22
    项目利用Spring+SpingMvc+Mybatis技术,主要实现了对学生信息的增删查改和登录,有需要的,可以下载源码 一:包目录结构: 实现步骤: 1,创建数据库 2,创建动态web项目 3,导包 4,编写配置文件:application.xml...
  • 学生管理系统 VC++版 源码

    千次下载 热门讨论 2007-06-02 12:08:58
    学生管理系统 VC++版 源码 学生管理系统 VC++版 源码 学生管理系统 VC++版 源码
  • C语言学生成绩管理系统(设计报告和全部源码)

    千次阅读 多人点赞 2020-11-29 16:49:31
    学生成绩管理系统设计与实现 1) 系统功能模块 学生成绩管理系统主要功能是。。。。 模块结构如“图1-1系统功能结构图”所示。 图1-1 系统功能结构图 我是事先定义了: typedef struct Node { in
  • 广州大学MFC实验报告——学生成绩管理系统

    千次阅读 多人点赞 2019-06-08 10:33:38
    并通过本实验,掌握如何运用面向对象技术对具体的应用系统进行分析和设计。 二、基本知识点 1、类和对象的定义、对象的初始化和使用 2、面向对象的继承机制 3、虚函数与多态性 4、运算符重载 5、文件的使用 6、算法...
  • 学生信息管理系统实训总结报告

    千次阅读 2019-06-25 16:21:30
    **实训目的:**让学生综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发,让学生了解系统开发的...
  • 【实战】javaweb学生信息管理系统

    万次阅读 多人点赞 2018-04-15 21:10:00
    javaweb学生信息管理系统总的来说整个项目通过Maven来管理jar包,实现了学生信息管理系统的登录,增删改查等基本操作,然后不喜写css样式,页面有点丑,但是代码中的逻辑基本正确。项目下载链接csdn下载链接github...
  • c语言课程设计,学生信息管理系统

    万次阅读 多人点赞 2019-03-06 21:20:50
    学生信息管理系统 题目: 新生入学,需要管理学生信息,要求如下: 能够通过键盘进行输入学生的信息,比如:学生姓名,学号,性别,班级,专业,入学成绩; 能够通过键盘输入要录入的学生的个数; 能够...
  • 学生成绩管理系统——课程设计报告

    万次阅读 多人点赞 2018-07-10 19:47:16
    学期末课程设计的作业,利用链表和文件的操作。...*******程序名称:学生成绩管理系统 *******作 者: *******开发环境:Dev-C++5.11 *******创建日期:2018.06.28 *******完成日期:2018.07.02 ***************...
  • 学生管理包含了学生信息的增删改查,这里我只讲最重要的根据模板导入和导出。 前端代码 <div> <div class="search-div"> <div class=""> <div class="layui-inlin...
  • 学生信息管理系统(Java+JSP)

    万次阅读 多人点赞 2019-01-23 13:33:38
    简易的学生信息管理系统(含源码)
  • C#学生信息管理系统

    千次阅读 多人点赞 2020-07-16 21:15:31
    C#学生信息管理系统 会搜索学生信息管理系统,想必兄台是个正在实训阶段的大学生吧。如果你的实训内容是用C#开发一个学生信息管理系统的话,那么这篇文章或许可以帮到你,说不好还可以让你的实训作品脱颖而出,让...
  • Javaweb学生管理系统期末设计

    万次阅读 多人点赞 2019-06-14 21:18:11
    学生管理-描述文档 有需要参考的可以进入,项目下载地址。 一:功能描述 该项目实现了以下功能:  页面包括展示信息和管理信息两部分,并且实现了图片验证登录  通过连接数据库并执行SQL语句实现对数据库的增、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,317
精华内容 14,526
关键字:

学生管理系统报告