博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连接数据库的项目实例
阅读量:3930 次
发布时间:2019-05-23

本文共 8634 字,大约阅读时间需要 28 分钟。

学生成绩管理系统

  • 关键词:java,SQL Server 2012

后端

  • 打开SQL Server 2012:
    这里写图片描述
  • 点击加号:
    这里写图片描述
  • 选中数据库,右键,新建数据库:
    这里写图片描述
  • 点击确定,等待片刻
  • 选中数据库,右键,刷新,即可看到:
    这里写图片描述

建表

  • 点击新建查询:
    这里写图片描述
  • 选择刚才新建的数据库,不然新建的表就存到别的数据库了,默认是master:
    这里写图片描述
  • 写建表语句:
create table student( stdtId char(6),--学号,只能是6位  stdtName varchar(10),--姓名  class char(4),--班级,只能是4位  grade int check(grade>=0 and grade<=100),--学生成绩,必须在0和100之间  primary key(stdtId)--主键);create table teacher( tcrId char(6),--教师编号,只能是6位  tcrName varchar(10),--教师姓名  primary key(tcrId)--主键);
  • 点击执行:
    这里写图片描述

添加数据

insert into student values('201801','见血封喉','1801',89);insert into student values('201811','独孤求败','1801',77);insert into student values('201823','东方彧卿','1802',63);insert into student values('201824','喋喋不休','1802',96);insert into student values('201807','走马观花','1803',90);insert into student values('201809','花天酒地','1803',98);insert into student values('201833','地大物博','1804',83);insert into student values('201861','博君一笑','1804',81);insert into student values('201884','笑口常开','1805',76);insert into student values('201895','开天辟地','1805',92);insert into teacher values('201607','滴水穿石');insert into teacher values('201611','石破天惊');insert into teacher values('201606','经天纬地');
  • 点击执行
  • 后端我们就先写到这里,虽然这家学校只有10名同学,3位老师
  • 但是,我们测试什么的已经够用了

前端

写代码

  • 打开eclipse,新建项目,命名为student:
    这里写图片描述
  • 右键src,新建一个package,命名为database(这里面我们打算写和数据库连接有关的类):
    这里写图片描述
  • 右键database,新建三个class,分别命名为:connection,preparedStatement,resultSet:
    这里写图片描述
  • 其中connection里面写:
package database;import java.sql.DriverManager;import java.sql.Connection;public class connection {
public static Connection getConnection() {
String url="jdbc:sqlserver://LAPTOP-2FMIL3F1:1433;"+"DatabaseName=csdn"; String user="sa"; String password="1234"; try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //System.out.println("数据库驱动加载成功!"); Connection con = DriverManager.getConnection(url,user,password); if(null!=con) {
//System.out.println("数据库连接成功!!"); return con; } } catch (Exception e) {
e.printStackTrace(); } return null; }}
  • 这个类的代码解析可以查看我的另一篇博客:
  • preparedStatement里面写:
package database;import java.sql.PreparedStatement;public class preparedStatement {
public static PreparedStatement getPreparedStatement(String sql) {
try {
PreparedStatement pstmt=connection.getConnection().prepareStatement(sql); return pstmt; } catch(Exception e) {
e.getStackTrace(); } return null; } }
  • resultSet里面写:
package database;import java.sql.ResultSet;public class resultSet {
public static ResultSet getResultSet(String sql) {
try {
ResultSet rs=preparedStatement.getPreparedStatement(sql).executeQuery(); return rs; } catch(Exception e) {
e.getStackTrace(); } return null; }}
  • 其它包和类如下图所示:
    这里写图片描述
  • query里面写:
package database;import java.sql.ResultSet;import java.sql.SQLException;public class query {
public static void queryStudent(String stdtId) {
String sql="select * from student where stdtId='"+stdtId+"'"; ResultSet rs=resultSet.getResultSet(sql); System.out.print("学号\t"); System.out.print("姓名\t"); System.out.print("班级\t"); System.out.println("成绩"); try {
while(rs.next()) {
System.out.print(rs.getString("stdtId")+"\t"); System.out.print(rs.getString("stdtName")+"\t"); System.out.print(rs.getString("class")+"\t"); System.out.println(rs.getInt("grade")); } }catch(SQLException e) {
System.err.println("查询出错 "+e.getStackTrace()); } } public static void queryTeacher(String tcrId) {
String sql="select * from teacher where tcrId='"+tcrId+"'"; ResultSet rs=resultSet.getResultSet(sql); System.out.print("教师编号\t"); System.out.println("姓名"); try {
while(rs.next()) {
System.out.print(rs.getString("tcrId")+"\t"); System.out.println(rs.getString("tcrName")); } }catch(SQLException e) {
System.err.println("查询出错 "+e.getStackTrace()); } } public static void queryStudent() {
String sql="select * from student"; ResultSet rs=resultSet.getResultSet(sql); System.out.print("学号\t"); System.out.print("姓名\t"); System.out.print("班级\t"); System.out.println("成绩"); try {
while(rs.next()) {
System.out.print(rs.getString("stdtId")+"\t"); System.out.print(rs.getString("stdtName")+"\t"); System.out.print(rs.getString("class")+"\t"); System.out.println(rs.getInt("grade")); } }catch(SQLException e) {
System.err.println("查询出错 "+e.getStackTrace()); } }}
  • Main里面写:
package heaven;import menu.mainMenu;public class Main {
public static void main(String[] args) {
mainMenu.menu(); }}
  • stdtLogin里面写:
package login;import java.sql.ResultSet;import java.sql.SQLException;import database.resultSet;public class stdtLogin {
public static boolean login(String stdtId, String stdtName) {
//学生登录,把学生姓名当作登录密码 String sql="select stdtName from student where stdtId='"+stdtId+"'"; int idExist=0;//账户不存在 try {
ResultSet rs=resultSet.getResultSet(sql); if(rs.next()) {
idExist=1; if(stdtName.equals(rs.getString("stdtName"))) {
return true; } } }catch(SQLException e) {
System.err.println("学生登录出错 "+e.getStackTrace()); } if(idExist==0) {
System.err.println("账户不存在!!"); }else {
System.err.println("密码错误!!"); } return false; }}
  • tcrLogin里面写:
package login;import java.sql.ResultSet;import java.sql.SQLException;import database.resultSet;public class tcrLogin {
public static boolean login(String tcrId, String tcrName) {
String sql="select tcrName from teacher where tcrId='"+tcrId+"'"; int idExist=0;//账户不存在 try {
ResultSet rs=resultSet.getResultSet(sql); if(rs.next()) {
idExist=1; if(tcrName.equals(rs.getString("tcrName"))) {
return true; } } }catch(SQLException e) {
System.err.println("教师登录出错 "+e.getStackTrace()); } if(idExist==0) {
System.err.println("账户不存在!!"); }else {
System.err.println("密码错误!!"); } return false; }}
  • mainMenu里面写:
package menu;import java.util.Scanner;public class mainMenu {
//主菜单 public static void menu() {
System.out.println("\n欢迎来到天堂大学\n"); System.out.println("1.学生登录"); System.out.println("2.教师登录"); System.out.println("3.退出"); Scanner input=new Scanner(System.in); System.out.println("请输入对应操作的序号:"); int oprtNumber=0; if(input.hasNextInt()) {
oprtNumber=input.nextInt(); } switch(oprtNumber) {
case 1: System.out.println("您选择了学生登录!!"); studentLoginMenu.menu(); break; case 2: System.out.println("您选择了教师登录!!"); teacherLoginMenu.menu(); break; case 3: System.out.println("感谢光临天堂大学!!"); break; default: System.err.println("您的输入有误,请重新输入!!"); menu(); } input.close(); }}
  • stdtMenu里面写:
package menu;import database.query;public class stdtMenu {
public static void menu(String stdtId) {
System.out.println("你的信息如下:"); query.queryStudent(stdtId); mainMenu.menu(); }}
  • studentLoginMenu里面写:
package menu;import java.util.Scanner;import login.stdtLogin;public class studentLoginMenu {
//学生登录菜单 public static void menu() {
String stdtId=""; String stdtName=""; Scanner input=new Scanner(System.in); System.out.println("请输入学号:"); if(input.hasNextLine()) {
stdtId=input.nextLine(); } System.out.println("请输入姓名:"); if(input.hasNextLine()) {
stdtName=input.nextLine(); } if(stdtLogin.login(stdtId, stdtName)) {
System.out.println("登录成功!!!"); stdtMenu.menu(stdtId);//登录成功,跳转到学生菜单 }else {
System.err.println("登录失败!!!"); mainMenu.menu();//登录失败,返回主菜单 } input.close(); }}
  • tcrMenu里面写:
package menu;import database.query;public class tcrMenu {
public static void menu() {
System.out.println("所有的学生信息如下:"); query.queryStudent(); mainMenu.menu(); }}
  • teacherLoginMenu里面写:
package menu;import java.util.Scanner;import login.tcrLogin;public class teacherLoginMenu {
public static void menu() {
String tcrId=""; String tcrName=""; Scanner input=new Scanner(System.in); System.out.println("请输入教师编号:"); if(input.hasNextLine()) {
tcrId=input.nextLine(); } System.out.println("请输入姓名:"); if(input.hasNextLine()) {
tcrName=input.nextLine(); } if(tcrLogin.login(tcrId, tcrName)) {
System.out.println("登录成功!!!"); tcrMenu.menu();//登录成功,跳转到教师菜单 }else {
System.err.println("登录失败!!!"); mainMenu.menu();//登录失败,返回主菜单 } input.close(); }}

添加jar包

  • 下载SQL Server 2012的驱动jar包
  • 项目右键,build path,Add External Archives,找到刚下载的jar包即可:
    这里写图片描述

大功告成

  • 双击Main,运行即可:
    这里写图片描述

备注

  • 有什么地方不明白的,可以评论区问我一下
  • 这只是一个简单的模板,大家可以在里面添加功能的,即在相应的包里面添加类就行了
  • 这是个例子,写得不好,可以重构一下
你可能感兴趣的文章
机器学习 | 台大林轩田机器学习技法课程笔记1 --- Linear Support Vector Machine
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记2 --- Dual Support Vector Machine
查看>>
线性代数 | (3) 行列式
查看>>
学术英语 | (1) wordList1
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记3 --- Kernel Support Vector Machine
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记7 --- Blending and Bagging
查看>>
学术英语 | (6) WordList6
查看>>
线性代数 | (5) 线性方程组
查看>>
学术英文 | (7) Unit3Words
查看>>
线性代数 | (6) 相似对角形
查看>>
学术英语 | (8) WordList7
查看>>
概率论与数理统计 | (1) 概率论初步Part One
查看>>
概率论与数理统计 | (2) 概率论初步Part Two
查看>>
概率论与数理统计 | (3) 随机变量
查看>>
学术英语 | (9) WordList8
查看>>
概率论与数理统计 | (4) 二元随机变量Part One
查看>>
学术英语 | (10) WordList9
查看>>
李航机器学习 | (2) 统计学习方法(第2版)笔记 --- 感知机
查看>>
动手学PyTorch | (33) 通过时间反向传播
查看>>
动手学PyTorch | (35) 长短期记忆(LSTM)
查看>>