簡単な学生管理システム

5757 ワード

前編では、JDBCツールクラスのパッケージについて説明しました.
この文章は自分でカプセル化するJDBCツール類で1つの簡単な学生の管理システムを書いて、具体的な機能はあります:a:学生の情報bを検索します:学生の情報を追加します
c:学生情報dの変更:学生情報を削除する.キーボード入力を受信することで、具体的な機能を実現します.このシステムは比較的簡単で、フロントエンドやサーバには関係ありません.
コンソールの入出力のみです.自分で手探りで书いたので、书き心地はとても良くて、そこから多くの问题を発见することができて、多くの新しい知识を学んで、同时に
、多くの欠陥も存在しますので、ご指摘を歓迎します.
また、このシステムで私が使用している文オブジェクトはPreparedStatementではなくstatementです.この文オブジェクトはPreparedStatementに比べて
最大の欠点は、SQL注入攻撃を防ぐことができないことです.SQL注入攻撃とは、別の記事で詳しく説明します.
管理システムのコードは次のとおりです.
package com.xcx;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

import javax.management.StringValueExp;

import org.junit.Test;
import org.omg.CORBA.portable.ValueOutputStream;

import com.jdbc.util.JdbcUtil;

public class StudentManager {
	private static Scanner sc = new Scanner(System.in);//                

	public static void main(String[] args) {
		while (true) {
			System.out.println("a:         b:        c:       d:      ");
			System.out.println("     ,abcd    :");
			char in = sc.next().charAt(0);//            
			// String.equals("a") || char=='a'
			switch (in) {
			case 'a':
				FindStu();
				break;
			case 'b':
				AddStu();
				break;
			case 'c':
				UpdateStu();
				break;
			case 'd':
				DeleteStu();
				break;
			default:
				System.out.println("     ,     ");
				break;
			}
		}
	}

	// ---------------------------------------------------------
	private static void AddStu() {
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConn();
			stat = conn.createStatement();
			sc.nextLine();//           
			System.out.println("           ");
			String stuid = sc.nextLine();
			System.out.println("     ");
			String name = sc.nextLine();
			System.out.println("     ");
			String gender = sc.nextLine();
			System.out.println("     ");
			String addr = sc.nextLine();
			System.out.println("     ");
			double score = sc.nextDouble();
			// String sql="insert into stu"
			// +" values('"+stuid+"','"+name+"','"+gender+"','"+addr+"',"+score;//      
			String sql = "insert into stu values (" + "'" + stuid + "','" + name + "','" + gender + "','" + addr + "',"
					+ score + ")";
			int rows = stat.executeUpdate(sql);
			System.out.println("   " + rows + "   ");

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.close(rs, stat, conn);
		}
	}

	// ----------------------------------------------------------
	private static void DeleteStu() {
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConn();
			stat = conn.createStatement();
			System.out.println("           ");
			String in = new Scanner(System.in).nextLine();
			String sql = "delete from stu " + "where stuid='" + in + "'";// delete    *
																			//         
			int rows = stat.executeUpdate(sql);
			System.out.println("   " + rows + "   !");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.close(rs, stat, conn);
		}
	}

	// ----------------------------------------------------------
	private static void UpdateStu() {
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		try {
			conn=JdbcUtil.getConn();
			stat=conn.createStatement();
			sc.nextLine();
			System.out.println("           ");
			String stuid=sc.nextLine();
			System.out.println("         ");
			String name=sc.nextLine();
			System.out.println("         ");
			String gender=sc.nextLine();
			System.out.println("         ");
			String addr=sc.nextLine();
			System.out.println("         ");
			double score=sc.nextDouble();
			String sql="update stu set name='"+name+"',gender='"+gender+"',addr='"+addr+"',score="+score+" where stuid='"+stuid+"'";
			int rows=stat.executeUpdate(sql);
			System.out.println("   "+rows+"   ");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JdbcUtil.close(rs, stat, conn);
		}

	}

	// ----------------------------------------------------------
	private static void FindStu() {
		Connection conn = null;
		Statement stat = null;
		ResultSet rs = null;
		try {
			conn = JdbcUtil.getConn();
			stat = conn.createStatement();
			String sql = "select * from stu";
			rs = stat.executeQuery(sql);
			while(rs.next()) {
				String stuid = rs.getString("stuid");
				String name = rs.getString("name");
				String gender = rs.getString("gender");
				String addr = rs.getString("addr");
				double score = rs.getDouble("score");
				System.out.println(stuid + ":" + name + ":" + gender + ":" + addr + ":" + score);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.close(rs, stat, conn);
		}

	}
}

もちろん、JDBCはデータベースに接続し、データベース内のstuテーブルと、ライブラリ構築テーブルのスクリプトは以下の通りです.
-- 1、     mydb   (        )
create database if not exists mydb charset utf8;
use mydb; --   mydb   
-- 2、  mydb      stu  (   )
drop table if exists stu;
create table stu(
	stuid varchar(50),
	name varchar(50),
	gender char(2),
	addr varchar(50),
	score double
);
-- 3、  stu   ,     
insert into stu values('1001','  ',' ', '  ', 86);