【javaweb期末項(xiàng)目】從零開始制作網(wǎng)上學(xué)生成績(jī)管理系統(tǒng)(報(bào)告格式+附demo)

目錄:
一妆棒、 前提與摘要
二川抡、 課程設(shè)計(jì)的目的和要求
三、 系統(tǒng)分析與設(shè)計(jì)
四边臼、 實(shí)現(xiàn)與測(cè)試
五哄尔、 主要源代碼
六、 遇到的問題和解決方法
七柠并、 存在的不足和改進(jìn)的思路

『18.12.28更新』
文末更新下載方式岭接,供參考學(xué)習(xí)交流
『18.12.19更新』
優(yōu)化界面;
優(yōu)化平均成績(jī)和總成績(jī)獲取方式臼予;
優(yōu)化主頁跳轉(zhuǎn)方式鸣戴;
新增回到頂部小火箭;

登錄.png
管理員登錄.png
管理員界面.png
全部成績(jī)
學(xué)生登錄.png
學(xué)生登錄成功.png
學(xué)生信息錄入界面.png
查找列表界面.png

——————————————————————————————————————————————

一粘拾、前提與摘要

學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的教師窄锅、學(xué)生和管理者來說都至關(guān)重要。本論文敘述到的學(xué)生成績(jī)管理系統(tǒng)是用JSP網(wǎng)頁編程+SQL查詢語言實(shí)現(xiàn)的缰雇。重點(diǎn)介紹了學(xué)生成績(jī)管理系統(tǒng)的實(shí)現(xiàn)過程:包括系統(tǒng)分析與設(shè)計(jì)入偷、數(shù)據(jù)庫設(shè)計(jì)、系統(tǒng)功能設(shè)計(jì)械哟、系統(tǒng)實(shí)現(xiàn)疏之、系統(tǒng)測(cè)試等。本系統(tǒng)主要功能有教師信息管理暇咆、學(xué)生信息管理锋爪、成績(jī)管理,包括功能需求設(shè)計(jì)糯崎、數(shù)據(jù)庫設(shè)計(jì)等內(nèi)容几缭。
現(xiàn)在的社會(huì)日新月異,發(fā)展的非澄帜兀快年栓。學(xué)校的發(fā)展也在加快,老師和學(xué)生做為學(xué)校的最主要的管理對(duì)象薄霜,老師和學(xué)生的信息管理系統(tǒng)就成了學(xué)校信息化管理系統(tǒng)中不可缺少的部分某抓,它的內(nèi)容對(duì)于學(xué)校的組織管理至關(guān)重要纸兔。但一直以來人們使用傳統(tǒng)人工的方式進(jìn)行學(xué)生的檔案管理,這種管理方式存在著許多缺點(diǎn),如:效率低,容易出錯(cuò)否副,格式不規(guī)范汉矿。另外時(shí)間一長(zhǎng),不容易進(jìn)行統(tǒng)計(jì)和分析备禀。
隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟洲拇,它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分曲尸,使用計(jì)算機(jī)對(duì)學(xué)生檔案進(jìn)行管理赋续,具有手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速另患、查找方便纽乱、可靠性高、存儲(chǔ)量大昆箕、壽命長(zhǎng)鸦列、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)校學(xué)生檔案管理的效率鹏倘。因此薯嗤,開發(fā)這樣一套管理軟件成為很有必要的事情。而且只要軟件的設(shè)計(jì)合理第股,可以為學(xué)校提供合理的管理模式应民。
摘要:學(xué)生成績(jī)管理系統(tǒng)、JSP網(wǎng)頁編程夕吻、SQL

二诲锹、課程設(shè)計(jì)的目的和要求

2.1 目的:

該系統(tǒng)的具體任務(wù)就是設(shè)計(jì)一個(gè)學(xué)生成績(jī)的數(shù)據(jù)庫管理系統(tǒng),由計(jì)算機(jī)來代替人工執(zhí)
行一系列諸如對(duì)教師涉馅、學(xué)生信息以及學(xué)生成績(jī)的增加归园、刪除、查詢和修改的處理操作稚矿,以
方便對(duì)以上信息的管理組織工作庸诱。
建立學(xué)生成績(jī)管理系統(tǒng),采用計(jì)算機(jī)對(duì)學(xué)生成績(jī)進(jìn)行管理晤揣,進(jìn)一步提高辦學(xué)效益和現(xiàn)
代化水平桥爽。幫助廣大教師提高工作效率,實(shí)現(xiàn)學(xué)生成績(jī)信息管理工作流程的系統(tǒng)化昧识、規(guī)范
化和自動(dòng)化

2.2 要求:

網(wǎng)上學(xué)生成績(jī)管理系統(tǒng)
實(shí)現(xiàn)學(xué)生信息的輸入
實(shí)現(xiàn)課程的輸入
實(shí)現(xiàn)成績(jī)的輸入
實(shí)現(xiàn)成績(jī)的查詢(按照姓名钠四、學(xué)號(hào)等信息查詢)
實(shí)現(xiàn)成績(jī)的統(tǒng)計(jì)(平均分的統(tǒng)計(jì)、總成績(jī)的統(tǒng)計(jì))

三跪楞、 系統(tǒng)分析與設(shè)計(jì)

3.1 數(shù)據(jù)庫設(shè)計(jì)

學(xué)生表的設(shè)計(jì):(學(xué)號(hào)缀去,姓名侣灶,密碼,性別缕碎,家庭住址褥影,成績(jī),備注)


學(xué)生數(shù)據(jù)

管理員表的設(shè)計(jì):(id咏雌,名字凡怎,密碼)


管理員數(shù)據(jù)
3.2 業(yè)務(wù)流程設(shè)計(jì)
業(yè)務(wù)流程設(shè)計(jì).jpg
3.3 用例圖設(shè)計(jì)
用例.jpg
3.4 類與頁面邏輯對(duì)應(yīng)關(guān)系圖設(shè)計(jì)
mulu
3.5 項(xiàng)目截圖
項(xiàng)目截圖.png

四、 實(shí)現(xiàn)與測(cè)試

4.1 實(shí)現(xiàn)步驟:

4.1.1 配置數(shù)據(jù)庫

1??首先在mysql內(nèi)建立連接并記住端口號(hào)和數(shù)據(jù)庫用戶名和賬號(hào)


屏幕快照 2018-12-15 下午8.59.12.png

2??創(chuàng)建數(shù)據(jù)庫test(注:本項(xiàng)目只用到了stu和mgr兩個(gè)表赊抖,user是測(cè)試用)


數(shù)據(jù)庫建立.png

3??輸入以下代碼創(chuàng)建學(xué)生表stu:(同理創(chuàng)建管理員表mgr栅贴,其中insert values的值自己定義)

use test;
CREATE TABLE `stu` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `pwd` varchar(255) NOT NULL,
  `sex` varchar(255) NOT NULL,
  `home` varchar(255) NOT NULL,
  `grades` varchar(255),
  `info` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `stu` VALUES ('1', 'stu1', '123', 'men', 'here', '0','i am the data-manerger');
INSERT INTO `stu` VALUES ('2', 'stu2','123','women','there','100','she is a good girl');
管理員數(shù)據(jù)庫.png
學(xué)生數(shù)據(jù)庫.png

4.1.2 在webroot下的WEB-INF下的lib中導(dǎo)入mysql的驅(qū)動(dòng)jar包

jar包.png
導(dǎo)入jar.png
4.1.2 類的編寫

創(chuàng)建一下五個(gè)類包:

類包

五個(gè)類包作用:
①dao:數(shù)據(jù)庫操作的對(duì)象,用于使相關(guān)數(shù)據(jù)庫操作更簡(jiǎn)單(有關(guān)Dao模式的文章https://blog.csdn.net/dragon_dai_2017/article/details/76937553

②entity:相當(dāng)于Javabean熏迹,用于抽象數(shù)據(jù)結(jié)構(gòu)

③filter:過濾器,用于過濾字符(當(dāng)然也可以自己編寫過濾IP等操作凝赛,詳見:http://www.reibang.com/p/1cf4ab2f7e21

④servlet:業(yè)務(wù)邏輯實(shí)體類注暗,用于執(zhí)行對(duì)應(yīng)JSP頁面的業(yè)務(wù)邏輯,完成MVC中C的相關(guān)操作

⑤util:用于連接數(shù)據(jù)庫(相關(guān)連接數(shù)據(jù)庫的操作詳見https://blog.csdn.net/yanglong_blog_/article/details/73733176

在五個(gè)類包中編寫相關(guān)代碼:
1??dao包中:
創(chuàng)建一個(gè)接口類 StuDao.java墓猎,用于規(guī)范化數(shù)據(jù)庫相關(guān)操作

//StuDao.java
package com.dao;

import java.util.List;
import com.entity.Stu;


public interface StuDao {
    
    
    //1.注冊(cè)
    public boolean register(Stu stu);
    
    //2.登錄
    public boolean stulogin(String name,String pwd);
    public boolean mgrlogin(String name,String pwd);
        
    //3.返回學(xué)生信息集合
    public List<Stu> getStuAll();
    
    //4.根據(jù)用戶名返回某個(gè)用戶信息集合
    public List<Stu> getStuByName(String namestr);
    
    //5.根據(jù)學(xué)號(hào)返回某個(gè)用戶信息集合
    public List<Stu> getStuById(String IdStr);
    
    //6.根據(jù)id刪除用戶
    public boolean delete(int id) ;
    
    //7.更新用戶信息
    public boolean update(int id,String name, String pwd,String sex, String home, String grades,String info);
    
    //8.求成績(jī)總和
    public int sum();
    
    //9.求成績(jī)平均
    public int avg();
}

再創(chuàng)建StuDao的實(shí)現(xiàn)類StuDaoImpl.java(自動(dòng)忽略我的相關(guān)測(cè)試用的輸出語句哈哈)

package com.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import com.entity.Stu;
import com.util.DBconn;
 
public class StuDaoImpl implements StuDao{
    //1.注冊(cè)
        public boolean register(Stu stu) {
            boolean flag = false;
            DBconn.init();
            int i =DBconn.addUpdDel("insert into stu(name,pwd,sex,home,grades,info) " +
                    "values('"+stu.getName()+"','"+stu.getPwd()+"','"+stu.getSex()+"','"+stu.getHome()+"','"+stu.getGrades()+"','"+stu.getInfo()+"')");
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        //2.登錄(學(xué)生與管理員的區(qū)別是查找的表不一樣)
        //(學(xué)生)
        public boolean stulogin(String name, String pwd) {
            boolean flag = false;
            try {
                    DBconn.init();
                    ResultSet rs = DBconn.selectSql("select * from stu where name='"+name+"' and pwd='"+pwd+"'");
                    while(rs.next()){
                        if(rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)){
                            flag = true;
                        }
                    }
                    DBconn.closeConn();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return flag;
        }
      //(管理員)
        public boolean mgrlogin(String name, String pwd) {
            boolean flag = false;
            try {
                    DBconn.init();
                    ResultSet rs = DBconn.selectSql("select * from mgr where name='"+name+"' and pwd='"+pwd+"'");
                    while(rs.next()){
                        if(rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)){
                            flag = true;
                        }
                    }
                    DBconn.closeConn();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return flag;
        }
      //3.返回用戶信息集合
        public List<Stu> getStuAll() {
            List<Stu> list = new ArrayList<Stu>();
            try {
                DBconn.init();
                ResultSet rs = DBconn.selectSql("select * from stu");
                
                while(rs.next()){
                    Stu stu = new Stu();
                    stu.setId(rs.getInt("id"));
                    stu.setName(rs.getString("name"));
                    stu.setPwd(rs.getString("pwd"));
                    stu.setSex(rs.getString("sex"));
                    stu.setHome(rs.getString("home"));
                    stu.setGrades(rs.getString("grades"));
                    stu.setInfo(rs.getString("info"));
                    list.add(stu);
                }
                DBconn.closeConn();
                return list;
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.print("錯(cuò)誤");
            }
            return null;
        }
        
        //4.根據(jù)用戶名返回某個(gè)用戶信息集合
        public List<Stu> getStuByName(String namestr)
        {
            List<Stu> list = new ArrayList<Stu>();
            try {
                DBconn.init();
                ResultSet rs = DBconn.selectSql("select * from stu where name='"+namestr+"'");
                while(rs.next()){
                    Stu stu = new Stu();
                    stu.setId(rs.getInt("id"));
                    stu.setName(rs.getString("name"));
                    stu.setPwd(rs.getString("pwd"));
                    stu.setSex(rs.getString("sex"));
                    stu.setHome(rs.getString("home"));
                    stu.setGrades(rs.getString("grades"));
                    stu.setInfo(rs.getString("info"));
                    list.add(stu);
                }
                //DBconn.closeConn();
                return list;
            } catch (SQLException e) {
                System.out.println("查詢的用戶可能不存在捆昏!");
                e.printStackTrace();
                
            }finally{
                DBconn.closeConn();
            }
            return null;
            
        }
        
        //5.根據(jù)學(xué)號(hào)返回某個(gè)用戶信息集合
           public List<Stu> getStuById(String IdStr)
                {
                    List<Stu> list = new ArrayList<Stu>();
                    try {
                        DBconn.init();
                        ResultSet rs = DBconn.selectSql("select * from stu where id='"+IdStr+"'");
                        while(rs.next()){
                            Stu stu = new Stu();
                            stu.setId(rs.getInt("id"));
                            stu.setName(rs.getString("name"));
                            stu.setPwd(rs.getString("pwd"));
                            stu.setSex(rs.getString("sex"));
                            stu.setHome(rs.getString("home"));
                            stu.setGrades(rs.getString("grades"));
                            stu.setInfo(rs.getString("info"));
                            list.add(stu);
                        }
                        DBconn.closeConn();
                        return list;
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    return null;
                    
                }
                
           
        //6.更新用戶信息
        public boolean update(int id,String name, String pwd,String sex, String home, String grades,String info) {
            boolean flag = false;
            DBconn.init();
            String sql ="update stu set name ='"+name
                    +"' , pwd ='"+pwd
                    +"' , sex ='"+sex
                    +"' , home ='"+home
                    +"' , grades ='"+grades
                    +"' , info ='"+info+"' where id = "+id;
            int i =DBconn.addUpdDel(sql);
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        
        //7.根據(jù)id刪除用戶
        public boolean delete(int id) {
            boolean flag = false;
            DBconn.init();
            String sql = "delete  from stu where id="+id;
            int i =DBconn.addUpdDel(sql);
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        
        //8.求成績(jī)總和
        public int sum(){
            int sum = 0;
            try {
                    DBconn.init();
                    
                    ResultSet rs = DBconn.selectSql("SELECT SUM(grades) FROM stu");
                    while(rs.next()){
                        System.out.print("進(jìn)來了1");
                        if(rs.getInt("SUM(grades)")!=0){
                            System.out.print("進(jìn)來了2");
                            sum = rs.getInt("SUM(grades)");
                        }
                    }
                    
                    DBconn.closeConn();
                    return sum; 
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return 0;
        }
        
        //9.求成績(jī)平均
        public int avg(){
            int avg = 0;
            try {
                    DBconn.init();
                    
                    ResultSet rs = DBconn.selectSql("SELECT AVG(grades) FROM stu");
                    while(rs.next()){
                        System.out.print("進(jìn)來了1");
                        if(rs.getInt("AVG(grades)")!=0){
                            System.out.print("進(jìn)來了2");
                            avg = rs.getInt("AVG(grades)");
                        }
                    }
                    
                    DBconn.closeConn();
                    return avg; 
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return 0;
        }
        
        
        

}

②entity中:
創(chuàng)建Stu.java(功能就是javabean)

package com.entity;

public class Stu {
     private int id;
        private String name;
        private String pwd;
        private String sex;
        private String home;
        private String info;
        private String grades;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getHome() {
            return home;
        }
        public void setHome(String home) {
            this.home = home;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
        public String getGrades() {
            return grades;
        }
        public void setGrades(String grades) {
            this.grades = grades;
        }
        
}

③filter中:
創(chuàng)建過濾器EncodingFilter

//字符編碼的過濾器
package com.filter;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
public class EncodingFilter implements Filter{
    public EncodingFilter(){
        System.out.println("過濾器構(gòu)造");
    }
    public void destroy() {
        System.out.println("過濾器銷毀");
    }
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8"); //將編碼改為utf-8
        response.setContentType("text/html;charset=utf-8");
        chain.doFilter(request, response);
    }
 
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("過濾器初始化");
    }
 
}

④servlet中創(chuàng)建一下類:
AddupServlet(用于錄入學(xué)生信息)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;
import com.entity.Stu;

/**
 * Servlet implementation class AddupServlet
 */
@WebServlet("/AddupServlet")
public class AddupServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String name = request.getParameter("name"); //獲取jsp頁面?zhèn)鬟^來的參數(shù)
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String home = request.getParameter("home");
        String grades = request.getParameter("grades");
        String info = request.getParameter("info");
        
        Stu stu = new Stu(); //實(shí)例化一個(gè)對(duì)象,組裝屬性
        stu.setName(name);
        stu.setPwd(pwd);
        stu.setSex(sex);
        stu.setHome(home);
        stu.setGrades(grades);
        stu.setInfo(info);
        
        StuDao ud = new StuDaoImpl();
        
        if(ud.register(stu)){
            request.setAttribute("username", name);  //向request域中放置參數(shù)
            request.setAttribute("message", "錄入成功");
            request.getRequestDispatcher("/mgrsuccess.jsp").forward(request, response);  //轉(zhuǎn)發(fā)到登錄頁面
        }else{
            
            response.sendRedirect("error.jsp");//重定向到首頁
        }
    }

}

DeleteServlet(在管理所有學(xué)生的界面執(zhí)行刪除某個(gè)學(xué)生記錄的操作)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;

/**
 * Servlet implementation class UpdateServlet
 */
@WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String id = request.getParameter("id");
        int userId = Integer.parseInt(id);
        
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String home = request.getParameter("home");
        String grades = request.getParameter("grades");
        String info = request.getParameter("info");
        
        System.out.println("------------------------------------"+userId);
        
        StuDao ud = new StuDaoImpl();//數(shù)據(jù)庫的操作對(duì)象
        if(ud.update(userId, name, pwd, sex, home, grades,info)){
            request.setAttribute("message", "更新成功");
            request.getRequestDispatcher("/SearchallServlet").forward(request, response);
        }else{
            response.sendRedirect("error.jsp");
        }
    }
}

UpdateServlet(在管理所有學(xué)生的界面執(zhí)行更新某個(gè)學(xué)生記錄的操作)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;

/**
 * Servlet implementation class UpdateServlet
 */
@WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String id = request.getParameter("id");
        int userId = Integer.parseInt(id);
        
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String home = request.getParameter("home");
        String grades = request.getParameter("grades");
        String info = request.getParameter("info");
        
        System.out.println("------------------------------------"+userId);
        
        StuDao ud = new StuDaoImpl();//數(shù)據(jù)庫的操作對(duì)象
        if(ud.update(userId, name, pwd, sex, home, grades,info)){
            request.setAttribute("message", "更新成功");
            request.getRequestDispatcher("/SearchallServlet").forward(request, response);
        }else{
            response.sendRedirect("error.jsp");
        }
    }
}

FindByIdServlet(通過學(xué)生Id來查找學(xué)生相關(guān)信息)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;

/**
 * Servlet implementation class FindByIdServlet
 */
@WebServlet("/FindByIdServlet")
public class FindByIdServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FindByIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        

        String id = request.getParameter("id");
        
        StuDao ud = new StuDaoImpl();
        
        if(id!= "") {
            if(ud.getStuById(id).isEmpty()) 
            {
                System.out.println("查詢到的為空值");
                response.sendRedirect("error.jsp");
            }else 
            {
                request.setAttribute("findlist", ud.getStuById(id));  //向request域中放置參數(shù)
                request.setAttribute("message", " 查找成功");
                request.getRequestDispatcher("/findlist.jsp").forward(request, response);  //轉(zhuǎn)發(fā)到登錄頁面
            }
        }else {
            response.sendRedirect("error.jsp");
        }


}
}

FindServlet(通過學(xué)生姓名查找相關(guān)信息)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;

/**
 * Servlet implementation class FindServlet
 */
@WebServlet("/FindServlet")
public class FindServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FindServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        String name = request.getParameter("name"); 
        
        StuDao ud = new StuDaoImpl();
        
        if(name != "") {
            if(ud.getStuByName(name).isEmpty()) 
            {
                System.out.println("查詢到的為空值");
                response.sendRedirect("error.jsp");
            }else 
            {
                request.setAttribute("findlist", ud.getStuByName(name));  //向request域中放置參數(shù)
                request.setAttribute("message", " 查找成功");
                request.getRequestDispatcher("/findlist.jsp").forward(request, response);  //轉(zhuǎn)發(fā)到登錄頁面
            
            }       
        }else {
            response.sendRedirect("error.jsp");
        }
    
        
    }

}

MgrLoginServlet(管理員登錄的業(yè)務(wù)邏輯)

package com.servlet;
 
import java.io.IOException;
//import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.dao.StuDao;
import com.dao.StuDaoImpl;
 
@WebServlet("/MgrLoginServlet")
//用來實(shí)現(xiàn)對(duì)用戶登錄的操作
public class MgrLoginServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;
    //需要繼承HttpServlet  并重寫doGet  doPost方法
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);  //將信息使用doPost方法執(zhí)行   對(duì)應(yīng)jsp頁面中的form表單中的method
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String name = request.getParameter("name"); //得到j(luò)sp頁面?zhèn)鬟^來的參數(shù)
        String pwd = request.getParameter("pwd");
        
        StuDao ud = new StuDaoImpl();
        
        if(ud.mgrlogin(name, pwd)){
            request.setAttribute("message", "歡迎管理員"+name); //向request域中放置信息
            request.getRequestDispatcher("/mgrsuccess.jsp").forward(request, response);//轉(zhuǎn)發(fā)到成功頁面
        }else{
            response.sendRedirect("error.jsp"); //重定向到error頁面
        }
    }
 
}


SearchallServlet(管理員管理所有學(xué)生的類)

package com.servlet;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;
import com.entity.Stu;

/**
 * Servlet implementation class SearchallServlet
 */
@WebServlet("/SearchallServlet")
public class SearchallServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        
        StuDao ud = new StuDaoImpl();//定義數(shù)據(jù)庫操作類的對(duì)象
        List<Stu> stuAll = ud.getStuAll();//獲取到所有的對(duì)象并且存儲(chǔ)到list里
        request.setAttribute("stuAll", stuAll);
        
        //求和
        int sum = ud.sum();
        request.setAttribute("sum", sum);
        
        //求平均
        int avg = ud.avg();
        request.setAttribute("avg", avg);
        
        request.getRequestDispatcher("/mgrall.jsp").forward(request, response);
    }
}

StuLoginServlet(學(xué)生登錄的頁面)

package com.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.StuDao;
import com.dao.StuDaoImpl;

/**
 * Servlet implementation class StuLoginServlet
 */
@WebServlet("/StuLoginServlet")
public class StuLoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    //需要繼承HttpServlet  并重寫doGet  doPost方法
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);  //將信息使用doPost方法執(zhí)行   對(duì)應(yīng)jsp頁面中的form表單中的method
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        String name = request.getParameter("name"); //得到j(luò)sp頁面?zhèn)鬟^來的參數(shù)
        String pwd = request.getParameter("pwd");
        
        StuDao ud = new StuDaoImpl();
        
        if(ud.stulogin(name, pwd)){
            request.setAttribute("message", "歡迎學(xué)生用戶"+name); //向request域中放置信息
            request.setAttribute("name", name);
            request.getRequestDispatcher("/stusuccess.jsp").forward(request, response);//轉(zhuǎn)發(fā)到成功頁面
        }else{
            response.sendRedirect("error.jsp"); //重定向到error頁面
        }
    }
}

⑤util包中創(chuàng)建:
DBconn.java(鏈接數(shù)據(jù)庫的方法毙沾,注意其中的用戶名密碼要和你之前配置數(shù)據(jù)庫的要一致)

//數(shù)據(jù)庫連接的類
package com.util;
 
import java.sql.*;
 
public class DBconn {
    static String url = "jdbc:mysql://localhost:3306/test?useunicuee=true& characterEncoding=utf8"; 
    static String username = "root"; 
    static String password = "363316495"; 
    static Connection  conn = null;
    static ResultSet rs = null;
    static PreparedStatement ps =null;
    public static void init(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            System.out.println("init [SQL驅(qū)動(dòng)程序初始化失斊贰!]");
            e.printStackTrace();
        }
    }
    public static int addUpdDel(String sql){
        int i = 0;
        try {
            PreparedStatement ps =  conn.prepareStatement(sql);
            i =  ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println("sql數(shù)據(jù)庫增刪改異常");
            e.printStackTrace();
        }
        
        return I;
    }
    public static ResultSet selectSql(String sql){
        try {
            ps =  conn.prepareStatement(sql);
            rs =  ps.executeQuery(sql);
        } catch (SQLException e) {
            System.out.println("sql數(shù)據(jù)庫查詢異常");
            e.printStackTrace();
        }
        return rs;
    }
    public static void closeConn(){
        try {
            conn.close();
        } catch (SQLException e) {
            System.out.println("sql數(shù)據(jù)庫關(guān)閉異常");
            e.printStackTrace();
        }
    }
}
4.1.3 頁面的編寫

addup.jsp (學(xué)生信息錄入)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>學(xué)生信息錄入</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<form action="AddupServlet"method="post" style="padding-top:-700px;">
       輸入用戶名:<input name="name" type="text"><br><br>
       輸入密碼:<input name="pwd" type="password"><br><br>
       選擇性別:<input type="radio"name="sex"value="men"checked>男
            <input type="radio"name="sex"value="women">女<br><br>
       選擇家鄉(xiāng):
       <select name="home">
           <option value="ShangHai">ShangHai</option>
           <option value="Beijing" selected>Beijing</option>
           <option value="ChangSha">ChangSha</option>
        </select><br>
        輸入成績(jī):<input name="grades" type="text"><br><br>
        填寫個(gè)人信息:<br>
       <textarea name="info" row="5" cols="30"></textarea><br>
       <input type="reset"value="重置"><input type="submit"value="錄入">
</form>
</body>
</html>

error.jsp(錯(cuò)誤頁面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>錯(cuò)誤頁面</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>~(~ ̄▽ ̄)~出錯(cuò)啦左胞!請(qǐng)嘗試檢查一下輸入或者頁面邏輯呦</h1>
<a href="Index.jsp">回到首頁</a>
</body>
</html>

findlist.jsp(查找學(xué)生列表)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
    
 <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查找列表</title>
</head>
<body>
  <%-- <h1>${message}</h1> --%>

    <table  width="200" border="1" cellpadding="0" >
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性別</th>
            <th>密碼</th>
            <th>家鄉(xiāng)</th>
            <th>成績(jī)</th>
            <th>備注</th>
        </tr>

     <c:forEach var="U" items="${findlist}"  > 
     
      <form action="UpdateServlet" method="post"> 
      
        <tr>
           <td><input type="text" value="${U.id}" name="id" ></td>
           <td><input type="text" value="${U.name}" name="name"></td>
           <td><input type="text" value="${U.sex}" name="sex"></td>
           <td><input type="text" value="${U.pwd}" name="pwd"></td>
           <td><input type="text" value="${U.home}" name="home"></td>
           <td><input type="text" value="${U.grades}" name="grades"></td>
           <td><input type="text" value="${U.info}" name="info"></td>
         </tr>
       
    </form> 
   
    
    </c:forEach> 
    

    </table>

</body>
</html>

index.jsp (主頁入口)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>歡迎登陸zyz的學(xué)生管理系統(tǒng)</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>歡迎登陸zyz的學(xué)生管理系統(tǒng)</h1>
<a href="mgrlogin.jsp">管理員登錄</a>
<a href="stulogin.jsp">學(xué)生登錄</a>
</body>
</html>

mgrall.jsp(管理所有學(xué)生表)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
    
 <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查找列表</title>
</head>
<body>
  <%-- <h1>${message}</h1> --%>

    <table  width="200" border="1" cellpadding="0" >
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性別</th>
            <th>密碼</th>
            <th>家鄉(xiāng)</th>
            <th>成績(jī)</th>
            <th>備注</th>
        </tr>

     <c:forEach var="U" items="${findlist}"  > 
     
      <form action="UpdateServlet" method="post"> 
      
        <tr>
           <td><input type="text" value="${U.id}" name="id" ></td>
           <td><input type="text" value="${U.name}" name="name"></td>
           <td><input type="text" value="${U.sex}" name="sex"></td>
           <td><input type="text" value="${U.pwd}" name="pwd"></td>
           <td><input type="text" value="${U.home}" name="home"></td>
           <td><input type="text" value="${U.grades}" name="grades"></td>
           <td><input type="text" value="${U.info}" name="info"></td>
         </tr>
       
    </form> 
   
    
    </c:forEach> 
    

    </table>

</body>
</html>

mgrlogin.jsp (管理員登錄界面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>管理員登錄頁面</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>管理員登錄頁面</h1>
  <form action="MgrLoginServlet"  method="post"  style="padding-top:-700px;">
        用戶名:<input type="text" name="name"value=""><br><br>
        密碼:  <input type="password" name="pwd"value=""><br><br>
                    <input type="submit"value="登錄"name="Mgrlogin"><input type="reset"value="重置"><br>
  </form>
</body>
</html>

mgrsuccess.jsp(管理員登錄成功后的操作頁面)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>管理員登錄成功</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
            ${message} <br>  
            <a href="SearchallServlet">查看所有學(xué)生信息表</a>
            <br/>
            <a href="addup.jsp">錄入學(xué)生信息</a>

       <form action="FindServlet"method="post" style="padding-top:-700px;">
       輸入用戶名(按照用戶名查找):<input name="name" type="text"><br><br>
       <input type="reset"value="重置"><input type="submit"value="查找">
       </form>
       

       <form action="FindByIdServlet"method="post" style="padding-top:-700px;">
       輸入Id號(hào)(按照學(xué)號(hào)查找):<input name="id" type="text"><br><br>
       <input type="reset"value="重置"><input type="submit"value="查找">
       </form>
            
  </body>
</html>

stulogin.jsp(學(xué)生登錄頁面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>學(xué)生登錄頁面</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>學(xué)生登錄頁面</h1>
<form action="StuLoginServlet"  method="post"  style="padding-top:-700px;">
        用戶名:<input type="text" name="name"value=""><br><br>
        密碼:  <input type="password" name="pwd"value=""><br><br>
               <input type="submit"value="登錄"name="Stulogin"><input type="reset"value="重置"><br>
</form>
</body>
</html>

stusuccess.jsp(學(xué)生登錄成功后的查找我的成績(jī)頁面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>學(xué)生登錄成功頁面</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>學(xué)生登錄成功頁面</h1>
${message} <br>
<%-- ${name} --%>
<% 
String name = request.getParameter("name"); 
request.setAttribute("name", name);
%>

<form action="FindServlet"  method="post"  style="padding-top:-700px;">
<!-- 定義了一個(gè)隱藏的輸入框 -->
<input type="hidden" name="name" value="${name}"><br>
<input type="submit"value="查找我的成績(jī)"name="Stulogin"><br>
</form>
            
</body>
</html>

4.2 測(cè)試:

主頁.png
管理員登陸成功操作界面.png
管理所有學(xué)生表(包含更新和刪除).png
管理員登錄界面.png
學(xué)生信息錄入.png
按名Id查找.png
學(xué)生登錄界面.png
學(xué)生登陸成功操作界面.png
顯示該學(xué)生成績(jī)的頁面 .png
錯(cuò)誤.png

五寇仓、 主要源代碼

詳見四:
其中最重要的是相關(guān)數(shù)據(jù)的操作:(有可能屏幕前的你用的不是Mysql,那么你的sql語句可能能不太一樣烤宙,現(xiàn)在你自己的數(shù)據(jù)庫中試好了再來編寫java代碼)

//1.注冊(cè)
        public boolean register(Stu stu) {
            boolean flag = false;
            DBconn.init();
            int i =DBconn.addUpdDel("insert into stu(name,pwd,sex,home,grades,info) " +
                    "values('"+stu.getName()+"','"+stu.getPwd()+"','"+stu.getSex()+"','"+stu.getHome()+"','"+stu.getGrades()+"','"+stu.getInfo()+"')");
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        //2.登錄(學(xué)生與管理員的區(qū)別是查找的表不一樣)
        //(學(xué)生)
        public boolean stulogin(String name, String pwd) {
            boolean flag = false;
            try {
                    DBconn.init();
                    ResultSet rs = DBconn.selectSql("select * from stu where name='"+name+"' and pwd='"+pwd+"'");
                    while(rs.next()){
                        if(rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)){
                            flag = true;
                        }
                    }
                    DBconn.closeConn();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return flag;
        }
      //(管理員)
        public boolean mgrlogin(String name, String pwd) {
            boolean flag = false;
            try {
                    DBconn.init();
                    ResultSet rs = DBconn.selectSql("select * from mgr where name='"+name+"' and pwd='"+pwd+"'");
                    while(rs.next()){
                        if(rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)){
                            flag = true;
                        }
                    }
                    DBconn.closeConn();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return flag;
        }
      //3.返回用戶信息集合
        public List<Stu> getStuAll() {
            List<Stu> list = new ArrayList<Stu>();
            try {
                DBconn.init();
                ResultSet rs = DBconn.selectSql("select * from stu");
                
                while(rs.next()){
                    Stu stu = new Stu();
                    stu.setId(rs.getInt("id"));
                    stu.setName(rs.getString("name"));
                    stu.setPwd(rs.getString("pwd"));
                    stu.setSex(rs.getString("sex"));
                    stu.setHome(rs.getString("home"));
                    stu.setGrades(rs.getString("grades"));
                    stu.setInfo(rs.getString("info"));
                    list.add(stu);
                }
                DBconn.closeConn();
                return list;
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.print("錯(cuò)誤");
            }
            return null;
        }
        
        //4.根據(jù)用戶名返回某個(gè)用戶信息集合
        public List<Stu> getStuByName(String namestr)
        {
            List<Stu> list = new ArrayList<Stu>();
            try {
                DBconn.init();
                ResultSet rs = DBconn.selectSql("select * from stu where name='"+namestr+"'");
                while(rs.next()){
                    Stu stu = new Stu();
                    stu.setId(rs.getInt("id"));
                    stu.setName(rs.getString("name"));
                    stu.setPwd(rs.getString("pwd"));
                    stu.setSex(rs.getString("sex"));
                    stu.setHome(rs.getString("home"));
                    stu.setGrades(rs.getString("grades"));
                    stu.setInfo(rs.getString("info"));
                    list.add(stu);
                }
                //DBconn.closeConn();
                return list;
            } catch (SQLException e) {
                System.out.println("查詢的用戶可能不存在遍烦!");
                e.printStackTrace();
                
            }finally{
                DBconn.closeConn();
            }
            return null;
            
        }
        
        //5.根據(jù)學(xué)號(hào)返回某個(gè)用戶信息集合
           public List<Stu> getStuById(String IdStr)
                {
                    List<Stu> list = new ArrayList<Stu>();
                    try {
                        DBconn.init();
                        ResultSet rs = DBconn.selectSql("select * from stu where id='"+IdStr+"'");
                        while(rs.next()){
                            Stu stu = new Stu();
                            stu.setId(rs.getInt("id"));
                            stu.setName(rs.getString("name"));
                            stu.setPwd(rs.getString("pwd"));
                            stu.setSex(rs.getString("sex"));
                            stu.setHome(rs.getString("home"));
                            stu.setGrades(rs.getString("grades"));
                            stu.setInfo(rs.getString("info"));
                            list.add(stu);
                        }
                        DBconn.closeConn();
                        return list;
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    return null;
                    
                }
                
           
        //6.更新用戶信息
        public boolean update(int id,String name, String pwd,String sex, String home, String grades,String info) {
            boolean flag = false;
            DBconn.init();
            String sql ="update stu set name ='"+name
                    +"' , pwd ='"+pwd
                    +"' , sex ='"+sex
                    +"' , home ='"+home
                    +"' , grades ='"+grades
                    +"' , info ='"+info+"' where id = "+id;
            int i =DBconn.addUpdDel(sql);
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        
        //7.根據(jù)id刪除用戶
        public boolean delete(int id) {
            boolean flag = false;
            DBconn.init();
            String sql = "delete  from stu where id="+id;
            int i =DBconn.addUpdDel(sql);
            if(i>0){
                flag = true;
            }
            DBconn.closeConn();
            return flag;
        }
        
        //8.求成績(jī)總和
        public int sum(){
            int sum = 0;
            try {
                    DBconn.init();
                    
                    ResultSet rs = DBconn.selectSql("SELECT SUM(grades) FROM stu");
                    while(rs.next()){
                        System.out.print("進(jìn)來了1");
                        if(rs.getInt("SUM(grades)")!=0){
                            System.out.print("進(jìn)來了2");
                            sum = rs.getInt("SUM(grades)");
                        }
                    }
                    
                    DBconn.closeConn();
                    return sum; 
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return 0;
        }
        
        //9.求成績(jī)平均
        public int avg(){
            int avg = 0;
            try {
                    DBconn.init();
                    ResultSet rs = DBconn.selectSql("SELECT AVG(grades) FROM stu");
                    while(rs.next()){
                        System.out.print("進(jìn)來了1");
                        if(rs.getInt("AVG(grades)")!=0){
                            System.out.print("進(jìn)來了2");
                            avg = rs.getInt("AVG(grades)");
                        }
                    }
                    
                    DBconn.closeConn();
                    return avg; 
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
            return 0;
        }

六、 遇到的問題和解決方法

過程中中主要遇到的小問題不少躺枕,原因主要是jsp域相關(guān)的問題服猪。遇到的比較棘手的問題主要是:
數(shù)據(jù)庫語句編寫錯(cuò)誤到時(shí)數(shù)據(jù)庫的增刪改查錯(cuò)誤


屏幕快照 2018-12-12 上午9.16.22.png

屏幕快照 2018-12-12 上午9.24.04.png

解決

"select * from mgr where name='"+name+"' and pwd='"+pwd+"'"

一定要注意其中""與''以及+等符號(hào)之間的關(guān)系,因?yàn)檫@里的aql語句是一個(gè)String拐云,其中又用到了傳入的參數(shù)罢猪,字符串拼接的時(shí)候一定要注意!

七叉瘩、 存在的不足和改進(jìn)的思路

1膳帕、界面的問題:解決思路是導(dǎo)入的一個(gè)css的包,然后在jsp頁面引用了一下
2房揭、查詢時(shí)未輸入也可以錄入的問題:思路是添加一個(gè)錄入判斷
3备闲、數(shù)據(jù)的中文問題:思路是更改字符編碼

項(xiàng)目下載:(更新下載方式)
鏈接:https://download.csdn.net/download/weixin_40486026/10884068

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晌端,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恬砂,更是在濱河造成了極大的恐慌咧纠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泻骤,死亡現(xiàn)場(chǎng)離奇詭異漆羔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)狱掂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門演痒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趋惨,你說我怎么就攤上這事鸟顺。” “怎么了器虾?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵讯嫂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我兆沙,道長(zhǎng)欧芽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任葛圃,我火速辦了婚禮千扔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘库正。我一直安慰自己曲楚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布诀诊。 她就那樣靜靜地躺著洞渤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪属瓣。 梳的紋絲不亂的頭發(fā)上载迄,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音抡蛙,去河邊找鬼护昧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛粗截,可吹牛的內(nèi)容都是我干的惋耙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼绽榛!你這毒婦竟也來了湿酸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤灭美,失蹤者是張志新(化名)和其女友劉穎推溃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體届腐,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铁坎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犁苏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硬萍。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖围详,靈堂內(nèi)的尸體忽然破棺而出朴乖,到底是詐尸還是另有隱情,我是刑警寧澤助赞,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布寒砖,位于F島的核電站,受9級(jí)特大地震影響嫉拐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜魁兼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一婉徘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咐汞,春花似錦盖呼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至植阴,卻和暖如春蟹瘾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掠手。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工憾朴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喷鸽。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓众雷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砾省,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評(píng)論 2 89
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評(píng)論 0 11
  • 殘雪消融鸡岗,院中春意漸濃。 早間折下的花枝在修長(zhǎng)十指的擺弄下被修剪成長(zhǎng)長(zhǎng)短短的形狀插進(jìn)白瓷的花瓶中编兄,盛放的机杜,半開的枚碗,...
    九重桜閱讀 308評(píng)論 0 0
  • 下圖是昨天弗蘭克老師留的作業(yè)—《你和頭等艙的距離,差的不止是錢》的思維導(dǎo)圖。 因?yàn)闆]用過思維導(dǎo)圖荧恍,所以既要熟悉軟件...
    彼岸很美閱讀 183評(píng)論 0 2
  • 我都不知道臉皮是用來干嘛的撼港,這是他掛在嘴邊一句話。 事實(shí)也是如此芦圾,對(duì)身邊的女孩子經(jīng)扯昱桑“下手”,一些不檢點(diǎn)的行為時(shí)而...
    八月豆子閱讀 588評(píng)論 2 2