简单的学生管理系统

      上一篇讲到了如何JDBC工具类的封装。

       这篇就用自己封装的JDBC工具类写一个简单的学生管理系统,具体功能有:a:查询学生信息   b:添加学生信息

   c:修改学生信息 d:删除学生信息。通过接收键盘输入,实现具体的功能。这个系统比较简单,不涉及到前端和服务器,

   只有控制台的输入输出。由于是自己摸索着写的,写出来感觉很不错,能从中发现很多问题,学到很多新知识,同时

,也会存在很多缺陷,欢迎大家来进行指点。

        还有,这个系统我用的语句对象 是statement,而非PreparedStatement,该语句对象相较于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);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值