Java实现学生信息管理系统(使用数据库)

网友投稿 399 2022-09-01


Java实现学生信息管理系统(使用数据库)

java基础—学生信息管理系统(使用数据库),供大家参考,具体内容如下

前一段时间写了学生信息管理系统(使用ArrayList),今天再来更新一下使用数据库的管理系统,总体上来说要比用ArrayList简便一些,同时输入的数据也能存储起来。

这次程序是在上一篇的基础上进行修改的,所以结构上来看十分相似。

在写程序之前,要先在mysql上建立Student Info表。

create table Student (

ID varchar(50) primary key not null,

Name varchar(30) not null,

Gender char(5) not null,

Age int not null,

Score int not null

);

1、就和上一篇博客一样,先将学生信息进行封装,这一步并不必要,只是修改起来方便些。

public class Student {

private String stuName;

private String stuNo;

private String gender;

private int age;

private int score;

public String getStuName() {

return stuName;

}

public void setStuName(String stuName) {

this.stuName = stuName;

}

public String getStuNo() {

return stuNo;

}

public void setStuNo(String stuNo) {

this.stuNo = stuNo;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

}

2.新建操作类,因为这次要使用MySql数据库,所以要使用JDBC将Java与数据库链接起来。

1> 先将mysql-connector-java.jar 加入到lib库中,之后右键Add path。

2> 然后在程序中要先开启JDBC,加载驱动器,如果驱动器不存在,会抛出异常,所以需要加上try-catch

//开启JDBC

public void getDBconn(){

String url = "jdbc:mysql://localhost:3306/homework";

String user = "root";

String password = "root";

try {

/**1.加载JDBC驱动器*/

Class.forName("com.mysql.jdbc.Driver");

/**2.获取连接*/

conn = DriverManager.getConnection(url, user, password);

stat = conn.createStatement();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

3>同样,在程序结束后一定要关闭连接,防止出问题。如果关闭异常,也要抛出异常。

//关闭JDBC

public void closeRs(){

try{

if(rs != null){

rs.close();

}

if(stat != null){

stat.close();

}

if(conn != null){

conn.close();

}

}catch(Exception e){

e.printStackTrace();

}

}

3.接下来就是程序的主体:增、删、改、查四个操作部分,这部分因为笔者偷懒,所以和上一篇使用ArrayList的结构很像,但是内容有较大的修改,每一个try-catch后都加上了finally,无论操作是否成功都要关闭连接

//增加学生信息

public void addStu(Student stu){

String sql = "insert into studentinfo values ( '" + stu.getStuNo()+ "', '" + stu.getStuName() + "', '"

+ stu.getGender() + "', " + stu.getAge() + " , " + stu.getScore() + ")";

try {

int affectedRows = stat.executeUpdate(sql);

if(affectedRows > 0){

System.out.println("该学生信息已添加!");

}else{

System.out.println("操作有误,请重新添加!");

append();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeRs();

}

}

//输入学生信息

public void append(){

Student stu = new Student();

/**

* 通过封装方法,将学生信息赋给stus

*/

stu.setStuName(name());

stu.setStuNo(stuNum());

stu.setGender(gender());

stu.setAge(age());

stu.setScore(score());

//将stu中的信息增添到stus中

addStu(stu);

}

//得到学生姓名

public String name(){

String name;

System.out.println("请输入学生的姓名:");

name = scanner.next();

return name;

}

//得到学生学号

public String stuNum(){

String stuNum;

System.out.println("请输入学生的学号:");

stuNum = scanner.next();

//如果学号不为11位,则重新输入,直到学号正确

if(stuNum.length() != 11){

System.out.println("您输入的学号有误!请重新输入!");

stuNum();

}

return stuNum;

}

//得到学生的性别

public String gender(){

String stuGender;

System.out.println("请输入学生的性别:");

stuGender = scanner.next();

if(!stuGender.equals("男") && !stuGender.equals("女") ){

System.out.println("您输入的学生性别有误!请重新输入!");

gender();

}

return stuGender;

}

//得到学生的年龄

public int age(){

int stuAge;

System.out.println("请输入学生的年龄:");

stuAge = scanner.nextInt();

if(stuAge < 0 || stuAge >= 80){

System.out.println("您输入的年龄有误!请重新输入!");

age();

}

return stuAge;

}

//得到学生的成绩

public int score(){

int stuScore;

System.out.println("请输入学生的成绩:");

stuScore = scanner.nextInt();

if(stuScore < 0 || stuScore > 100){

System.out.println("您输入的成绩有误!请重新输入!");

score();

}

return stuScore;

}

/**

*

* 删除学生信息

*

* @param stuNo

*/

public void delStu(){

System.out.println("请输入您想删除的学号:");

String stuNo = scanner.neaRVOKxt();

String sql = "delete from studentinfo where ID = '" + stuNo + "' ";

try {

int affectedRows = stat.executeUpdate(sql);

if(affectedRows > 0){

System.out.println("该学生信息已删除!");

}else{

System.out.println("操作有误,请重新输入!");

delStu();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeRs();

}

}

/**

* 修改学生信息:

* 1.姓名

* 2.学号

* 3.性别

* 4.年龄

* 5.成绩

* @param stu

*/

public void updateStu(String stuNo){

String sql = null;

information();

int choose = scanner.nextInt();

switch(choose){

case 1:

System.out.println("请输入要更新的名字:");

String Name = scanner.next();

sql = "update studentinfo set Name = '" + Name +"' where ID = '" + stuNo + "'";

break;

case 2:

System.out.println("请输入要更新的性别:");

String Gender = scanner.next();

sql = "update studentinfo set Gender = '" + Gender +"' where ID = '" + stuNo + "'";

break;

case 3:

System.out.println("请输入要更新的年龄:");

int Age = scanner.nextInt();

sql = "update studentinfo set Age = " + Age +" where ID = '" + stuNo + "'";

break;

case 4:

System.out.println("请输入要更新的成绩:");

int Score = scanner.nextInt();

sql = "update studentinfo set Score = " + Score +" where ID = '" + stuNo + "'";

break;

case 0:

System.exit(0);

break;

}

try {

int affectedRows = stat.executeUpdate(sql);

if(affectedRows > 0){

System.out.println("该学生信息已修改!");

}else{

System.out.println("操作有误!");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeRs();

}

}

public void information(){

System.out.println("请选择您要修改的信息:");

System.out.println("1.姓名");

System.out.println("2.性别");

System.out.println("3.年龄");

System.out.println("4.成绩");

System.out.println("0.退出");

System.out.println("请输入序号:");

}

/**

* 根据学号查询学生信息

* 如果存在,输出学生信息

* @param stuNo

*/

public void queryStuByStuNo(String stuNo){

String sql = "select * from studentinfo where ID = '" + stuNo + "'";

try {

if(stuNo.equals("0")){

sql = "select * from studentinfo";

rs = stat.executeQuery(sql);

while(rs.next()){

System.out.print("学号:" + rs.getString("ID") + "\t");

System.out.print("姓名:" + rs.getString("Name") + "\t");

System.out.print("性别:" + rs.getString("Gender") + "\t");

System.out.print("年龄:" + rs.getInt("Age") + "\t");

System.out.println("成绩:" + rs.getInt("Score") + "\t");

}

}else{

if(rs.next()){

rs = stat.executeQuery(sql);

System.out.print("学号:" + rs.getString("ID") + "\t");

System.out.print("姓名:" + rs.getString("Name") + "\t");

System.out.print("性别:" + rs.getString("Gender") + "\t");

System.out.print("年龄:" + rs.getInt("Age") + "\t");

System.out.println("成绩:" + rs.getInt("Score") + "\t");

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeRs();

}

}

4.定义操作菜单,允许用户输入选择要操作的功能。

http://

import java.util.Scanner;

public class SystemService {

Scanner scanner = new Scanner(System.in);

StudentSystem ss = new StudentSystem();

public void serviceChoose(){

System.out.println("-----欢迎使用学生信息管理系统-----");

while(true){

ss.getDBconn();

System.out.println("1.添加学生信息");

System.out.println("2.删除学生信息");

System.out.println("3.修改学生信息");

System.out.println("4.查询学生信息");

System.out.println("0.退出系统");

System.out.println("请输入序号:");

switch(scanner.nextInt()){

case 1:

ss.append();

System.out.println();

break;

case 2:

ss.delStu();

System.out.println();

break;

case 3:

System.out.println("请输入要修改的学生的学号:");

ss.updateStu(scanner.next());

System.out.println();

break;

case 4:

System.out.println("请输入要查询的学生的学号(若为0,则查询所有学生信息):");

ss.queryStuByStuNo(scanner.next());

System.out.println();

break;

case 0:

System.exit(0);//退出系统

ss.closeRs();

break;

}

}

}

}

5.定义主方法,使用该系统

public class Main {

public static void main(String[] args) {

SystemService ss = new SystemService();

ss.serviceChoose();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Matplotlib基础--个性化颜色条(matplotlib条形图颜色)
下一篇:api接口管理怎么实现?程序员常用的API接口管理神器
相关文章

 发表评论

暂时没有评论,来抢沙发吧~