Java实现学生信息管理系统(使用数据库)
作者:吾人为学 发布时间:2024-01-25 11:22:03
标签: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.next();
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.定义操作菜单,允许用户输入选择要操作的功能。
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();
}
}
来源:https://study.blog.csdn.net/article/details/77365192


猜你喜欢
- 本文实例分析了Go语言多值替换的HTML模板用法。分享给大家供大家参考。具体如下:这里通过两种方式提供基于HTML模板的多变量值替换。另外附
- 在上一篇博客中,已经将环境搭建好了。现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算。创建模拟器在运
- 导语大家以前应该都听说过一个游戏:叫做走四棋儿这款游戏出来到现在时间挺长了,小时候的家乡农村条件有限,附近也没有正式的玩具店能买到玩具,因此
- 众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。你们中的许多人可能已经使用 pip 
- 背景和目的:利用python request 编写脚本测试公司系统的文件上传接口。前端读取文件的大小然后文件分片传给后端,后端将每一片数据重
- 代码如下:DECLARE @T varchar(255), @C varchar(255) DECLARE Table_Cursor CUR
- js数字转换为float,取N个小数:=========================================javascript
- 一、Python 的 IDE —— PyCharm1.1 集成开发环境(IDE)集成开发环境(IDE,Integrated Developm
- Anaconda is a completely free Python distribution (including for comme
- Python + opencv 读取视频的三种情况:情况一:通过摄像头采集视频情况二:通过本地视频文件获取视频情况三:通过摄像头录制视频,再
- 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。
- 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多。修复bug什么的,测试,提交版本库(2分钟),ss
- openpyxl模块是一个读写Excel 文档的Python库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。op
- 之前安装mysql 5.7.12时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑(一)mysql 5.7.1
- 测试配置文件test.conf内容如下:[first]w = 2v: 3c =11-3[second]sw=4test: hello测试配置
- 一、概述及完整代码对MNIST(MixedNational Institute of Standard and Technology dat
- select a.f_username from ( SELECT /*+parallel(gu,4)*/distinct gu.f_use
- Oracle不像SQLServer那样在存储过程中用Select就可以返回结果集,而是通过Out型的参数进行结果集返回的。实际上是利用REF
- 1.什么是接口接口就是一种规范与标准,在生活中经常见接口,例如:笔记本电脑的USB接口,可以将任何厂商生产的鼠标与键盘,与电脑进行链接。为什
- Go 在testing包中内置测试命令go test,提供了最小化但完整的测试体验。标准工具链还包括基准测试和基于代码覆盖的语句,类似于NC