DAO JDBC 学生成绩管理系统

1:student、course类

package JDBCU;

public class Student {
    private String no;
    private String name;

    public String getNo() {
        return no;
    }
    public void setNo(String no) {
        this.no = no;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}
package JDBCU;

public class Course {
    private String no;
    private String cname;
    private float grades;

    public String getNo() {
        return no;
    }
    public void setNo(String no) {
        this.no = no;
    }
    public String getCname() {
        return cname;
    }
    public void setCname(String cname) {
        this.cname = cname;
    }
    public float getGrades() {
        return grades;
    }
    public void setGrades(float grades) {
        this.grades = grades;
    }

}

2 公共连接类

package JDBCU;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {
    private static final String DBDRIVER="com.mysql.jdbc.Driver";
    public static final String DBURL="jdbc:mysql://localhost:3306/stuma";
    public static final String DBNAME="root";
    public static final String DBPWD="root";
    private Connection conn;
    public DatabaseConnection(){
        try {
            Class.forName(DBDRIVER);
            this.conn=DriverManager.getConnection(DBURL,DBNAME,DBPWD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.print("Error loading Mysql Driver!");
            e.printStackTrace();
        }
    }
    public Connection getconnection(){
        return this.conn;
    }
    public void close(){
        if(this.conn!=null){
            try {
                this.conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

3、接口

package JDBCU;

import java.util.List;

public interface IScoreDao {
    public  Student findstu(String no);
    public  boolean updatestu(String no,String name);
    public Course findc(String no,String cname);
    public  List<Course> findallc(String keyword);
    public boolean  addc(Course course);
    public boolean delc(String no,String cname);
    public boolean updatec(String no, String cname, float grades);
}

4、接口的实现

package JDBCU;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ISocreServiceImpl implements IScoreDao {
    private Connection conn=null;
    private PreparedStatement pstmt=null;

    public ISocreServiceImpl(Connection conn) {
        this.conn = conn;
    }

    @Override
    public Student findstu(String no) {
        Student student=null;
        String sql="select * from student where no=?";
        try {
            this.pstmt=this.conn.prepareStatement(sql);
            this.pstmt.setString(1,no);
            ResultSet rs= this.pstmt.executeQuery();
            if(rs.next()){
                student=new Student ();
                student.setNo(rs.getString(1));
                student.setName(rs.getString(2));
            }
            this.pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return student;
    }

    @Override
    public boolean updatestu(String no, String name) {
        boolean flag=false;
        String sql="update student set no=?,name=?";
        try {
            this.pstmt=this.conn.prepareStatement(sql);
            this.pstmt.setString(1,no);
            this.pstmt.setString(2, name);
            if(this.pstmt.executeUpdate()>0)
                flag=true;

            this.pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }

    @Override
    public Course findc(String no, String cname) {
        Course course=null;
        String sql="select * from course where no=? and cname=?";
        try {
            this.pstmt=this.conn.prepareStatement(sql);
            this.pstmt.setString(1,no);
            this.pstmt.setString(2,cname);
            ResultSet rs= this.pstmt.executeQuery();
            if(rs.next()){
                course=new Course ();
                course.setNo(rs.getString(1));
                course.setCname(rs.getString(2));
                course.setGrades(rs.getFloat(3));
            }
            this.pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return course;
    }

    @Override
    public List<Course> findallc(String keyword) {
        List<Course>all=new ArrayList<Course>();
        String sql="select * from course";
        try {
            this.pstmt=this.conn.prepareStatement(sql);
            ResultSet rs= this.pstmt.executeQuery();
            Course course=null;
            while(rs.next()){
                course=new Course ();
                course.setNo(rs.getString(1));
                course.setCname(rs.getString(2));
                course.setGrades(rs.getFloat(3));
                all.add(course);
            }
            this.pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return all;
    }

    @Override
    public boolean addc(Course course) {
        boolean flag=false;
        String sql="Insert into course(no,cname,grades)values(?,?,?)";
        try{
            this.pstmt=this.conn.prepareStatement(sql);
            this.pstmt.setString(1,course.getNo());
            this.pstmt.setString(2, course.getCname());
            this.pstmt.setFloat(3, course.getGrades());
            if(this.pstmt.executeUpdate()>0)
                flag=true;
            this.pstmt.close();
        }catch(SQLException e){
            e.printStackTrace();
        }
        return flag;
    }

    @Override
    public boolean delc(String no, String cname) {
        boolean flag=false;
        String sql="delete from course where no=? and cname=?";
        try{
            this.pstmt=this.conn.prepareStatement(sql);
            this.pstmt.setString(1,no);
            this.pstmt.setString(2,cname);
            if(this.pstmt.executeUpdate()>0)
                flag=true;
            this.pstmt.close();
        }catch(SQLException e){
            e.printStackTrace();
        }
        return flag;
    }

    @Override
    public boolean updatec(String no, String cname, float grades) {
        boolean flag=false;

        try {
                String sql2="update course set no=?,cname=?,grades=? where no=? and cname=?";
                this.pstmt=this.conn.prepareStatement(sql2);
                this.pstmt.setString(1,no);
                this.pstmt.setString(2, cname);
                this.pstmt.setFloat(3, grades);
                this.pstmt.setString(4,no);
                this.pstmt.setString(5, cname);
                if(this.pstmt.executeUpdate()>0)
                    flag=true;

            this.pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }
}

5、回调

package JDBCU;

import java.util.List;

public class ISocreDaoImpl implements IScoreDao {

    private DatabaseConnection dbc=null;
    private ISocreServiceImpl dao=null;

    public ISocreDaoImpl() {
        this.dbc = new DatabaseConnection() ;
        this.dao = new ISocreServiceImpl(this.dbc.getconnection());
    }

    @Override
    public Student findstu(String no) {
        Student student=null;
        try {
            student=this.dao.findstu(no);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
        return student;
    }

    @Override
    public boolean updatestu(String no, String name) {
        boolean flag=false;
        try {
                flag=this.dao.updatestu(no,name);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
    return flag;
    }

    @Override
    public Course findc(String no, String cname) {
        Course course=null;
        try {
            course=this.dao.findc(no,cname);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
        return course;
    }

    @Override
    public List<Course> findallc(String keyword) {
        List<Course> all=null;
        try {
            all=this.dao.findallc(keyword);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
        return all;
    }

    @Override
    public boolean addc(Course course) {
        boolean flag=false;
        try {
            if(this.dao.findc(course.getNo(),course.getCname())==null)
                flag=this.dao.addc(course);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
    return flag;
    }

    @Override
    public boolean delc(String no, String cname) {
        boolean flag=false;
        try {
                flag=this.dao.delc(no,cname);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
    return flag;
    }

    @Override
    public boolean updatec(String no, String cname, float grades) {
        boolean flag=false;
        try {
                flag=this.dao.updatec(no,cname,grades);
        } catch (Exception e) {

        }finally{
            dbc.close();
        }
    return flag;
    }

}

6、测试类以及菜单

package JDBCU;

import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class ISocreTest {
    public static void main(String[] args) {
        menu();
    }

    public static void menu() {
        System.out.println("******************学生个人成绩管理系统***********");
        System.out.printf("\n", null);
        System.out.println("              1、成绩管理");
        System.out.println("              2、学生管理");
        System.out.println("              3、退出系统");
        System.out.printf("\n", null);
        System.out.println("************************************************");
        System.out.println("请输入功能编号(1-3):");
        Scanner r0 = new Scanner(System.in);
        int i = r0.nextInt();
        switch(i){
            case 1: grademenu();                    break;
            case 2: stumenu();                break;
            case 3:
                System.out.println("再见!");
                break;
            default:
                System.out.println("请输入数字1到3");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                menu();
            break;
        }
        r0.close();
    }
    private static void grademenu() {
        System.out.println("******************学生个人成绩系统***************");
        System.out.printf("\n", null);
        System.out.println("              1、增加成绩");
        System.out.println("              2、删除成绩");
        System.out.println("              3、修改成绩");
        System.out.println("              4、显示成绩");
        System.out.println("              5、汇总成绩");
        System.out.println("              6、返回上一系统");
        System.out.printf("\n", null);
        System.out.println("************************************************");
        System.out.println("请输入功能编号(1-6):");
        Course course=new Course();
        Scanner r1 = new Scanner(System.in);
        int s = r1.nextInt();
        switch(s){
            case 1:
                try {
                    System.out.println("请输入信息,输入格式为学号,课程名。如:201220201032 math");
                     Scanner r2 = new Scanner(System.in);
                     String s1 =r2.nextLine();
                     String[] additem=s1.split(" ");
                     if(additem.length==2){
                         course.setNo(additem[0]);
                         course.setCname(additem[1]);
                     }
                     System.out.println("请输入分数");
                     float s2=r1.nextFloat();
                     course.setGrades(s2);
                     new ISocreDaoImpl().addc(course);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                main(null);
                break;
            case 2:
                try {
                    System.out.println("请输入信息,输入格式为学号,课程名。如:201220201032 math");
                     Scanner r3 = new Scanner(System.in);
                     String s3 =r3.nextLine();
                     String[] additem1=s3.split(" ");
                     if(additem1.length==2){
                         new ISocreDaoImpl().delc(additem1[0],additem1[1]);
                     }
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                main(null);
                break;
            case 3:
                try {
                    System.out.println("请输入信息,输入格式为学号,课程名。如:201220201032 math");
                    Scanner r4 = new Scanner(System.in);
                     String s4 =r4.nextLine();
                     System.out.println("请输入新的分数");
                     Scanner r5 = new Scanner(System.in);
                     float s5=r5.nextFloat();
                     String[] additem2=s4.split(" ");
                     if(additem2.length==2){
                         if( new ISocreDaoImpl().findc(additem2[0],additem2[1])!=null)
                                 new ISocreDaoImpl().updatec(additem2[0],additem2[1],s5);
                     }
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                main(null);    

                break;
            case 4:
                 System.out.println("请输入信息,输入格式为学号,课程名。如:201220201032 math");
                 Scanner r6 = new Scanner(System.in);
                 String s6 =r6.nextLine();
                 String[] additem3=s6.split(" ");
                 if(additem3.length==2){
                    Course r= new ISocreDaoImpl().findc(additem3[0],additem3[1]);
                     if(r!=null){
                         System.out.println(r.getNo()+"       "+r.getCname()+"       "+r.getGrades());
                         }
                 }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                main(null);
                break;
            case 5:
                List<Course> all=new  ISocreDaoImpl().findallc(" ");
                Iterator<Course> iter=all.iterator();
                while(iter.hasNext()){
                     course=iter.next();
                    System.out.println(course.getNo()+"       "+course.getCname()+"       "+course.getGrades());
                    }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                main(null);
                break;
            case 6: menu();                            break;
            default:
                System.out.println("请输入数字1到6");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                stumenu();
            break;
        }
        r1.close();
    }
    private static void stumenu() {
        System.out.println("******************学生个人成绩管理系统***********");
        System.out.printf("\n", null);
        System.out.println("              1、显示学生信息");
        System.out.println("              2、修改学生信息");
        System.out.println("              3、返回上一系统");
        System.out.printf("\n", null);
        System.out.println("************************************************");
        System.out.println("请输入功能编号(1-3):");
        Scanner r1 = new Scanner(System.in);
        int t = r1.nextInt();
        switch(t){
            case 1:
                System.out.println("请输入学号.如:201220201032");
                Scanner r2 = new Scanner(System.in);
                String s2=r2.nextLine();
                Student r= new ISocreDaoImpl().findstu(s2);
                 if(r!=null){
                     System.out.println(r.getNo()+"       "+r.getName());
                     }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                main(null);
                break;
            case 2:
                try {
                    System.out.println("请输入学号.如:201220201032");
                    Scanner r3 = new Scanner(System.in);
                    String s3=r3.nextLine();
                    if( new ISocreDaoImpl().findstu(s3)!=null)
                    {
                         System.out.println("请输入信息,输入格式为学号,姓名。如:201220201032 zhang");
                         Scanner r4 = new Scanner(System.in);
                         String s4 =r4.nextLine();
                         String[] additem=s4.split(" ");
                         if(additem.length==2){
                             new ISocreDaoImpl().updatestu(additem[0],additem[1]);
                         }
                    }
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                //延时
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                main(null);
                break;
            case 3:
                menu();
                break;
            default:
                System.out.println("请输入数字1到3");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                stumenu();
            break;
        }
        r1.close();
    }    

}
时间: 2024-12-28 15:43:40

DAO JDBC 学生成绩管理系统的相关文章

学生成绩管理系统 2.0(图形界面)

这个写的……太……羞耻了…… 本来以为能写的很好的……图形界面什么的……啊啊啊好难…… 写一半写不下去了……然后就什么功能都没有…… 1 package com.wenr.dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList;

学生成绩管理系统 1.0(Java+MySql)

真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/wenr/entity/Student.java package wenr.entity; /** 数据库定义 CREATE TABLE Student ( sid CHAR(10) PRIMARY KEY, sname CHAR(20) NOT NULL, sc DOUBLE(5,2), sm D

java开发的简易学生成绩管理系统

经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统. 代码如下(仅供参考学习) view包下的菜单 package com.xujulong.www.view: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import com.xujulong.www.po.Manager; import

《C语言编写 学生成绩管理系统》

/* (程序头部凝视開始)* 程序的版权和版本号声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名: 学生成绩管理系统 * 作 者: 刘江波 * 完毕日期: 2012 年 6 月 23 日* 版 本 号: v.623 * 对任务及求解方法的描写叙述部分 * 程序头部的凝视结束 */ #include "stdio.h" #include"string" /*定义学生结构体*/ struc

C语言练手自己编写学生成绩管理系统

#include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Avarage; }; /*声明学生数组及学生数量*/ struct Student students[1000]; int num=0; /*计算平均成绩*/ float Avg(struct Studen

【学生成绩管理系统】 大二c语言作业

几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <iostream> #include <process.h> #include <stdlib.h> #include <algorithm> #include <cstring> #include <cmath> #define N 5 con

c++学生成绩管理系统

虽然比较水 =.= 但是写了两节课+一个中午 都是强迫症的锅 http://www.cnblogs.com/wenruo/p/4940182.html #include <cstdio> #include <cstring> #include <iostream> using namespace std; class student // student 类为管理系统的一个节点 { friend class studentMessage; student *next;

使用C++结合文件操作和链表实现学生成绩管理系统

对于学生成绩管理系统,我是不会陌生,几乎学习C语言的人,做项目的时候都会想到学生成绩管理系统,我也不例外,在学了一段时间C语言后,也用C语言做了一个学生管理系统,后来联系做了几个,算过来,这个系统对前面的系统有所改进,增加了文件操作可以不用手动输入学生信息,可以直接从文件中读取学生信息,从而简化了操作 使用C语言实现学生成绩管理系统 http://blog.csdn.net/u010105970/article/details/17752193 使用链表实现学生成绩管理系统 http://blo

C语言实现---学生成绩管理系统

C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩