当前位置:   article > 正文

学生管理系统(JDBC)java版_jdbc学生信息管理系统

jdbc学生信息管理系统

用Java做一个简易的员工管理系统

文章目录

  • 第一步:引入数据库及JDBC的jar包
  • 第二步:创建学生管理系统的类与方法
  • 第三步:测试员工管理系统


前言

本文章适合学完javase,数组,面向对象,mysql数据库,JDBC

核心功能:JDBC连接数据库及项目结构实现员工管理系统

一、引入数据库及JDBC的jar包

MySQL :: Download MySQL Community Server     mysql下载地址

MySQL :: Download Connector/J            JDBC下载地址

打开项目结构

 点击如图添加JAR或目录

 找到JDBC jar包并导入

 数据库创建如图所示

 

二、创建学生管理系统的类与方法(每一步分为一个包)

1.创建pojo层(学生类层)

  1. public class Student {
  2. private String sno;
  3. private String sname;
  4. private Integer sage;
  5. private String ssex;
  6. private String dept;
  7. private int is_del;
  8. public String getSno() {
  9. return sno;
  10. }
  11. public void setSno(String sno) {
  12. this.sno = sno;
  13. }
  14. public String getSname() {
  15. return sname;
  16. }
  17. public void setSname(String sname) {
  18. this.sname = sname;
  19. }
  20. public Integer getSage() {
  21. return sage;
  22. }
  23. public void setSage(Integer sage) {
  24. this.sage = sage;
  25. }
  26. public String getSsex() {
  27. return ssex;
  28. }
  29. public void setSsex(String ssex) {
  30. this.ssex = ssex;
  31. }
  32. public String getDept() {
  33. return dept;
  34. }
  35. public void setDept(String dept) {
  36. this.dept = dept;
  37. }
  38. public int getIs_del() {
  39. return is_del;
  40. }
  41. public void setIs_del(int is_del) {
  42. this.is_del = is_del;
  43. }
  44. @Override
  45. public String toString() {
  46. return "Student{" +
  47. "sno='" + sno + '\'' +
  48. ", sname='" + sname + '\'' +
  49. ", sage=" + sage +
  50. ", ssex='" + ssex + '\'' +
  51. ", dept='" + dept + '\'' +
  52. ", is_del=" + is_del +
  53. '}';
  54. }
  55. }

SC类 

  1. package pojo;
  2. public class Sc{
  3. private String Sno;
  4. private String Cno;
  5. private int Grade;
  6. public String getSno() {
  7. return Sno;
  8. }
  9. public void setSno(String sno) {
  10. Sno = sno;
  11. }
  12. public String getCno() {
  13. return Cno;
  14. }
  15. public void setCno(String cno) {
  16. Cno = cno;
  17. }
  18. public int getGrade() {
  19. return Grade;
  20. }
  21. public void setGrade(int grade) {
  22. Grade = grade;
  23. }
  24. @Override
  25. public String toString() {
  26. return "Sc{" +
  27. "Sno='" + Sno + '\'' +
  28. ", Cno='" + Cno + '\'' +
  29. ", Grade=" + Grade +
  30. '}';
  31. }
  32. }

2.JdbcUtil层()

代码如下:

  1. import java.sql.*;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class JdbcUtil {
  5. private static final String URL="jdbc:mysql://localhost:3306/s_t";
  6. private static final String USER="root";
  7. private static final String PWD="333";
  8. static {
  9. try {
  10. Class.forName("com.mysql.cj.jdbc.Driver");
  11. } catch (ClassNotFoundException e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. private static Connection getConn(){
  16. Connection conn=null;
  17. try {
  18. conn= DriverManager.getConnection(URL,USER,PWD);
  19. } catch (SQLException e) {
  20. e.printStackTrace();
  21. }
  22. return conn;
  23. }
  24. public static int test(String sql,Object...objs){
  25. Connection conn=getConn();
  26. PreparedStatement pstmt=null;
  27. int resurt=0;
  28. try {
  29. pstmt=conn.prepareStatement(sql);
  30. for(int i=0;i<objs.length;i++){
  31. pstmt.setObject(i+1,objs[i]);
  32. }
  33. resurt=pstmt.executeUpdate();
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. }
  37. finally {
  38. close(conn,pstmt,null);
  39. return resurt;
  40. }
  41. }
  42. public static<T> List<T> executeQuery(String test,RowMap<T> rowmap,Object...objs) {
  43. List<T> list = new ArrayList<>();
  44. Connection conn = getConn();
  45. PreparedStatement pstmt = null;
  46. ResultSet resultSet = null;
  47. try {
  48. pstmt = conn.prepareStatement(test);
  49. if (objs!= null) {
  50. for(int i=0;i<objs.length;i++){
  51. pstmt.setObject(i+1,objs[i]);
  52. }
  53. }
  54. resultSet = pstmt.executeQuery();
  55. while (resultSet.next()) {
  56. T t= rowmap.rowMapping(resultSet);
  57. list.add(t);
  58. }
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. } finally {
  62. close(conn,pstmt,resultSet);
  63. }
  64. return list;
  65. }
  66. private static void close(Connection conn,PreparedStatement pstmt,ResultSet rs){
  67. try {
  68. if (conn!= null) {
  69. conn.close();
  70. }
  71. if (pstmt!= null) {
  72. pstmt.close();
  73. }
  74. if (rs!= null) {
  75. rs.close();
  76. }
  77. } catch (SQLException e) {
  78. e.printStackTrace();
  79. }
  80. }
  81. public static<T> T queryOne(String test,RowMap<T> rowmap,Object...objs) {
  82. T t=null;
  83. Connection conn = getConn();
  84. PreparedStatement pstmt = null;
  85. ResultSet resultSet = null;
  86. try {
  87. pstmt = conn.prepareStatement(test);
  88. if (objs!= null) {
  89. for(int i=0;i<objs.length;i++){
  90. pstmt.setObject(i+1,objs[i]);
  91. }
  92. }
  93. resultSet = pstmt.executeQuery();
  94. while (resultSet.next()) {
  95. t= rowmap.rowMapping(resultSet);
  96. }
  97. } catch (SQLException e) {
  98. e.printStackTrace();
  99. } finally {
  100. close(conn,pstmt,resultSet);
  101. return t;
  102. }
  103. }
  104. }

RowMap层

  1. import pojo.Student;
  2. import java.sql.ResultSet;
  3. public interface RowMap <T>{
  4. T rowMapping(ResultSet rs);
  5. }

3.dao层(实现各种方法)

StudentDao接口

  1. import pojo.Student;
  2. import java.util.List;
  3. public interface StudentDao {
  4. List<Student> getAll();
  5. Student getOne(String sno);
  6. int insert(Student student);
  7. int updateOne(Student result);
  8. int del(String sno);
  9. int delTest(String sno);
  10. }
StudentDapImpl实现StudentDao
  1. import pojo.Sc;
  2. import pojo.Student;
  3. import util.JdbcUtil;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6. public class StudentDapImpl implements StudentDao{
  7. @Override
  8. public List<Student> getAll() {
  9. return JdbcUtil.executeQuery("select * from student where is_del=1", rs-> {
  10. Student s=new Student();
  11. try {
  12. s.setSno(rs.getString("Sno"));
  13. s.setSname(rs.getString("Sname"));
  14. s.setSsex(rs.getString("Ssex"));
  15. s.setSage(rs.getInt("Sage"));
  16. s.setDept(rs.getString("Dept"));
  17. s.setIs_del(rs.getInt("is_del"));
  18. } catch (SQLException e) {
  19. e.printStackTrace();
  20. }
  21. return s;
  22. }, null);
  23. }
  24. @Override
  25. public Student getOne(String sno) {
  26. return JdbcUtil.queryOne("select * from student where sno=? and is_del=1", rs-> {
  27. Student s=new Student();
  28. try {
  29. s.setSno(rs.getString("Sno"));
  30. s.setSname(rs.getString("Sname"));
  31. s.setSsex(rs.getString("Ssex"));
  32. s.setSage(rs.getInt("Sage"));
  33. s.setDept(rs.getString("Dept"));
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. }
  37. return s;
  38. },sno);
  39. }
  40. @Override
  41. public int insert(Student student) {
  42. return JdbcUtil.test("insert into student(sno,sname,sage,ssex,dept) values(?,?,?,?,?)",student.getSno(),student.getSname(),student.getSage(),student.getSsex(),student.getDept());
  43. }
  44. @Override
  45. public int updateOne(Student result) {
  46. return JdbcUtil.test("update student set Sname=?,Ssex=?,Sage=?,Dept=? where sno=? and is_del=1",result.getSname(),result.getSsex(),result.getSage(),result.getDept(),result.getSno());
  47. }
  48. @Override
  49. public int del(String sno) {
  50. return JdbcUtil.test("delete from student where sno=? and is_del=1",sno);
  51. }
  52. @Override
  53. public int delTest(String sno) {
  54. return JdbcUtil.test("update student set is_del=0 where sno=?",sno);
  55. }
  56. }

4.service层

StudentService接口
  1. import pojo.Student;
  2. import java.util.List;
  3. public interface StudentService {
  4. void getAll();
  5. void add();
  6. public void update();
  7. public void del();
  8. public void del1();
  9. }

StudentServiecMpl实现StudentService
  1. import dao.StudentDao;
  2. import dao.StudentDapImpl;
  3. import pojo.Student;
  4. import view.StuView;
  5. import java.util.List;
  6. import java.util.Scanner;
  7. public class StudentServiecMpl implements StudentService{
  8. private static StudentDao dao=new StudentDapImpl();
  9. private static Scanner input = new Scanner(System.in);
  10. public void getAll() {
  11. // 进行数据库中数据的查询,数据库操作的逻辑放到view层
  12. // 项目分层:dao:数据传输层,jdbc逻辑的书写
  13. List<Student> all = dao.getAll();
  14. System.out.println("学生信息是:");
  15. for (Student s:all
  16. ) {
  17. System.out.println(s);
  18. }
  19. StuView.showMenu();
  20. }
  21. public void add() {
  22. // 添加时 学号不能重复,输入了学号后,进行判断,学号是否存在
  23. // 如果存在,重新输入,如果不存在,可以添加
  24. // 可以根据学号查找学生信息,根据null进行判断
  25. System.out.println("输入要添加的学生的学号(学号需要输入七位)");
  26. String sno = input.next();
  27. if (sno.length()==7){
  28. Student one = dao.getOne(sno);
  29. if(one==null ){
  30. // 可以将其他的数据进行继续输入
  31. System.out.println("输入姓名");
  32. String sname = input.next();
  33. System.out.println("年龄");
  34. int sage = input.nextInt();
  35. System.out.println("性别(男,女)");
  36. String ssex = input.next();
  37. System.out.println("所在系");
  38. String dept = input.next();
  39. // 添加到数据库 dao
  40. Student stu = new Student();
  41. stu.setSname(sname);
  42. stu.setSage(sage);
  43. stu.setSsex(ssex);
  44. stu.setDept(dept);
  45. stu.setSno(sno);
  46. int i = dao.insert(stu);
  47. System.out.println(i);
  48. if (i>0){
  49. System.out.println("添加成功");
  50. }else {
  51. System.out.println("添加失败");
  52. }
  53. StuView.showMenu();
  54. }else{
  55. System.out.println("学号已存在,重新输入");
  56. add();
  57. }
  58. }else{
  59. System.out.println("学号位数有误,重新输入");
  60. add();
  61. }
  62. }
  63. public void del1(){
  64. System.out.println("输入要删除的学号信息");
  65. String sno = input.next();
  66. Student one = dao.getOne(sno);
  67. if (one!=null){
  68. int s = dao.delTest(sno);
  69. if (s>0){
  70. System.out.println("删除成功");
  71. }else{
  72. System.out.println("删除失败");
  73. }
  74. StuView.showMenu();
  75. }else{
  76. System.out.println("学号不存在,不能删除");
  77. del1();
  78. }
  79. }
  80. public void del() {//物理删除
  81. // 删除,判断学生信息是否存在,如果不存在,不能删除
  82. // 否则,可以删除
  83. // 现在网络上,数据有价值,大量的数据放到一起,进行数据的分析
  84. // 项目书写,数据库中的数据不会轻易的删除,
  85. // 数据不会直接再数据库中删除,
  86. // 数据还是会存在于别人的数据库中,添加一个字段,进行数据有效性的标识--------》逻辑删除
  87. // 标识性字段上的值进行修改=========》修改列上的值
  88. // 直接把数据库中数据删除==========》物理删除
  89. System.out.println("输入要删除的学号信息");
  90. String sno = input.next();
  91. Student one = dao.getOne(sno);
  92. if (one!=null){
  93. int s = dao.del(sno);
  94. if (s>0){
  95. System.out.println("删除成功");
  96. }else{
  97. System.out.println("删除失败");
  98. }
  99. StuView.showMenu();
  100. }else {
  101. System.out.println("学号不存在,不能删除");
  102. del();
  103. }
  104. }
  105. public void update() {
  106. // 修改:当前输入的学号是否存在
  107. // 学号存在,可以修改,学号不存在,不能修改
  108. // 是否要修改某个列上的数据信息
  109. // 要修改的学生信息的组合,对象进行创建
  110. Student result = new Student();
  111. System.out.println("需要修改的学号信息");
  112. String sno = input.next();
  113. Student one = dao.getOne(sno);
  114. if (one!=null){
  115. result.setSno(sno);
  116. System.out.println("输入要修改的学生的姓名(如果不修改 输入exit)");
  117. String sname = input.next();
  118. if("exit".equals(sname)){
  119. result.setSname(one.getSname());
  120. }else{
  121. result.setSname(sname);
  122. }
  123. System.out.println("输入要修改的学生的年龄(如果不修改 输入0)");
  124. int sage = input.nextInt();
  125. if (sage==0){
  126. result.setSage(one.getSage());
  127. }else{
  128. result.setSage(sage);
  129. }
  130. System.out.println("输入要修改的学生的性别(如果不修改 输入exit)");
  131. String ssex = input.next();
  132. if("exit".equals(ssex)){
  133. result.setSsex(one.getSsex());
  134. }else{
  135. result.setSsex(ssex);
  136. }
  137. System.out.println("输入要修改的学生的所在系(如果不修改 输入exit)");
  138. String dept = input.next();
  139. if("exit".equals(dept)){
  140. result.setDept(one.getDept());
  141. }else{
  142. result.setDept(dept);
  143. }
  144. int i = dao.updateOne(result);
  145. if (i>0){
  146. System.out.println("修改成功");
  147. }else{
  148. System.out.println("修改失败");
  149. }
  150. StuView.showMenu();
  151. }else{
  152. System.out.println("学号有误,重新输入");
  153. update();
  154. }
  155. }
  156. }

5.view层(视图层)

  1. import com.sun.security.jgss.GSSUtil;
  2. import dao.StudentDao;
  3. import dao.StudentDapImpl;
  4. import pojo.Student;
  5. import service.StudentService;
  6. import service.StudentServiecMpl;
  7. import util.JdbcUtil;
  8. import java.util.List;
  9. import java.util.Scanner;
  10. public class StuView {
  11. private static StudentService service = new StudentServiecMpl();
  12. private static StudentDao dao = new StudentDapImpl();
  13. private static Scanner input = new Scanner(System.in);
  14. public static void showMenu() {
  15. System.out.println("欢迎使用,输入编号选择功能");
  16. System.out.println("1 查看学生信息");
  17. System.out.println("2 添加学生信息");
  18. System.out.println("3 修改学生信息");
  19. System.out.println("4 删除学生信息");
  20. System.out.println("其他数字 退出系统");
  21. int i = input.nextInt();
  22. switch (i) {
  23. case 1:
  24. service.getAll();
  25. case 2:
  26. service.add();
  27. case 3:
  28. service.update();
  29. case 4:
  30. service.del1();
  31. default:
  32. System.exit(-10);
  33. break;
  34. }
  35. }
  36. }

6.Demo(运行)

  1. import pojo.Sc;
  2. import util.JdbcUtil;
  3. import view.StuView;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6. public class Demo {
  7. public static void main(String[] args) {
  8. StuView.showMenu();
  9. }
  10. }

3.测试员工管理系统


总结

本文章适合学完JDBC后用来练手的项目,希望各位能对各位同学有所帮助

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/790248
推荐阅读
相关标签
  

闽ICP备14008679号