学生成绩管理系统

本文详细介绍了使用MyEclipse10、SQLSEVER2008和PowerDesigner完成成绩管理系统的开发流程,包括数据库设计、Java项目建立、三层架构设计、数据库操作类实现以及界面显示控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一次写博客,算是开始码农的旅程吧,把学的小项目简单书写一下,使用MyEclipse10 + sql sever2008 + Powerdesigner完成成绩管理系统,包括数据库的使用,增删改查之类的。

成绩管理系统开发流程

  1. PowerDesigner设计表格
  2. 使用SQL SERVER2008数据库建立表格
  3. 建立JAVA项目

使用PowerDesigner设计表格

PowerDesigner可以用来设计表格,关系图。
1.插入表格
2.编辑表格名称,列名称
3.设计关系
4.生成脚本文件(在生成过程中注意取消掉外键)
PS: 选项卡DataBase—Generate DataBase—-Option
5.将生成脚本文件.sql导入数据库中

使用SQL生成对应数据库

1.建立数据库
2.建立查询语句,导入生成的sql

使用Eclipse进行开发

开发环境建立

1.系统安装JDK,如果不安装Eclipse里面会带有一个低版本JDK
2.使用环境为Eclipse10

项目分层

1.完成该项目需要将业务与操作进行分层隔离,想一想跟MVC有点类似,用户界面层,系统处理层,数据库层
2.我们按照需求,建立package

(1)数据库操作的为DbUtil包,里面包含对数据库初始化连接控制,代码如下:
实现方法:获得连接,关闭语句,关闭连接,关闭结果集

package com.harbeu.exam.util;

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

/**
 * 数据库相关操作
 * 
 * @author Administrator
 * 
 */
public class DbUtil {
    /**
     * 去的数据库连接
     * 
     * @return
     */
    public static Connection getConnection() {
        Connection conn = null;
        try {
            String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL数据库引擎
            String dbUrl = "jdbc:sqlserver://localhost:1433;databaseName=StudentManagement";
            String username = "a6697238";
            String password = "monkeyws";
            Class.forName(JDriver);
            conn = DriverManager.getConnection(dbUrl, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void close(PreparedStatement psmt){
        if(psmt!=null){
            try {
                psmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }           
        }       
    }

    public static void close(Connection conn){
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }       
    }

    public static void close(ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args){
        Connection conn = DbUtil.getConnection();
        System.out.println(conn);
    }
}

(2)第二个包为业务层,根据表格建立类,用于以后查询表格查询对象,读取结果

(3)第三个包为内层管理包,主要实现对数据库的操作,包括增删改查等,这里注意可以使用单例模式

操作数据库过程为
1.通过DbUtil取得连接Connection
2.使用Connection建立语句
3.设置语句参数
4.执行语句
5.从内向外,顺序关闭 结果集,语句,连接

package com.harbeu.exam.manager;

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

import com.harbeu.exam.model.Course;
import com.harbeu.exam.util.DbUtil;

/**
 * 课程管理
 * @author Administrator
 *
 */
public class CourseManager {

    private static CourseManager instance = new CourseManager();

    private CourseManager(){}

    public static CourseManager getInstance(){
        return instance;
    }

    /**
     * 添加课程
     * @param courseName
     */
    public void addCourse(String courseName){
        String sql = "insert into t_course(course_name) values(?)";
        Connection conn = null;
        PreparedStatement psmt = null;
        try{
            conn = DbUtil.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, courseName);
            psmt.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(psmt);
            DbUtil.close(conn);
        }       
    }

    /**
     * 删除课程
     * @param courseId
     */
    public void deleteCourse(int courseId){
        Connection conn = null;
        PreparedStatement psmt = null;
        /*String sql_1 = "declare @tempTable table(course_id int,course_name varchar(30))"; 
        String sql_2 = "insert @tempTable select * from T_COURSE";
        String sql_3 = "delete from @tempTable where course_id = ?";
        String sql_4 = "TRUNCATE TABLE t_course";
        String sql_5 = "insert into T_COURSE(COURSE_NAME) select COURSE_NAME from @tempTable";  */

        StringBuffer sb = new StringBuffer();
        String sql_1 = "declare @tempTable table(course_id int,course_name varchar(30));"; 
        String sql_2 = "insert @tempTable select * from T_COURSE;";
        String sql_3 = "delete from @tempTable where course_id = ?;";
        String sql_4 = "TRUNCATE TABLE t_course;";
        String sql_5 = "insert into T_COURSE(COURSE_NAME) select COURSE_NAME from @tempTable;";

        sb.append(sql_1);
        sb.append(sql_2);
        sb.append(sql_3);
        sb.append(sql_4);
        sb.append(sql_5);

        String str = new String(sb);
        try {
            conn = DbUtil.getConnection();
            psmt = conn.prepareStatement(str);
            psmt.setInt(1, courseId);
            psmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(psmt);
            DbUtil.close(conn);
        }   

    }

    /**
     * 修改课程
     * @param courseId
     * @param courseName
     */
    public void modifyCourse(int courseId,String courseName){
        Connection conn = null;
        PreparedStatement psmt = null;
        String sql = "update T_COURSE set COURSE_NAME=? where COURSE_ID=?"; 

        conn = DbUtil.getConnection();
        try {
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, courseName);
            psmt.setInt(2, courseId);
            psmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(psmt);
            DbUtil.close(conn);
        }   
    }

    /**
     * 查询课程
     * @return
     */

    public List<Course> findCourseList(){
        List<Course> courseList = new ArrayList<Course>();
        String sql = "select * from t_course order by course_id";
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        try{
            conn = DbUtil.getConnection();
            psmt = conn.prepareStatement(sql);
            rs = psmt.executeQuery();
            while(rs.next()){
                int courseId = rs.getInt("course_id");
                String courseName = rs.getString("course_name");

                //记录每一个对象
                Course course = new Course();
                course.setCourseId(courseId);
                course.setCourseName(courseName);
                courseList.add(course);         
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(rs);
            DbUtil.close(psmt);
            DbUtil.close(conn);
        }
        return courseList;
    }
}

(4)第四个包为界面显示控制包

整个结构如下:
这里写图片描述

工作过程UML图

Created with Raphaël 2.1.0CourseControllerCourseControllerCourseManagerCourseManagerDbUtilDbUtil增,删,改,查操作数据库返回结果集打印到屏幕
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值