基于java和sql学生管理系统如何连接两个输出
本帖最后由 cow427kk 于 2021-6-23 11:17 编辑一、创建数据库
利用MySQLWorkbench创建数据库School,在库中创建学生信息表(student),教师信息表(teacher)、班级信息表(class)
学生表记录: 学号(主键)、姓名、性别、出生日期、所属班级ID号(外键)、特长简介
教师表记录:教师ID(主键)、姓名、性别、出生日期、简介
班级表记录:班级ID(主键)、班级名、班主任ID(外键)
二、输入数据
利用MySQLWorkbench在数据库School的各个表中输入一定量的数据。
三、编写Java程序
编写Java程序,具体功能要求如下:
(1)程序运行后首先显示如下信息:
请输入您的操作:
1:查看学生信息
2:查看教师信息
3:查看班级信息”
(2)当用户输入1或2或3时,将逐行列出相应的信息,例如用户输入2后,输出信息效果如下所示:
教师信息:
ID,姓名,性别,出生日期,简介
1,张三,男,1980.1.1,善于讲解Java
2,李四,女,1981.5.1,从教多年,经验丰富
……
Java数据库作业(二)
在作业一的基础上,增加新功能,具体要求如下所述:
(1)程序运行后首先显示如下信息(即增加了4号选项):
请输入您的操作:
1:查看学生信息
2:查看教师信息
3:查看班级信息”
4:查看某班级的所有学生
(2)当用户输入4后,继续输出
请输入班级ID
(3)当用户输入相应班级ID后,继续输出
**班级的学生信息:
学号,姓名,性别,出生日期、简介
201,王二,男,2001.2.3,体育好
202,王二,男,2001.2.3,数学好,人好
……
注意这个作业要求输出的是某一班级的学生信息,而不是全部学生信息!!!
Java数据库作业(三)
在作业一的基础上,增加新功能,具体要求如下所述:
(1)程序运行后首先显示如下信息(即增加了5号选项):
请输入您的操作:
1:查看学生信息
2:查看教师信息
3:查看班级信息”
4:查看某班级的所有学生
5:删除某个学生信息
(2)当用户输入5后,继续输出
请输入删除学生的学号
(3)当用户输入学号后,在学生信息表中删除该名学生,并给出是否删除成功的提示信息。
Java数据库作业(四)一、增加数据表
利用MySQLWorkbench,在School库中添加课程信息表(course)、教师授课表(teacher_course)、学生选课表(student_course)
课程表记录:课程ID(主键)、课程名、课程性质、简介
教师授课表:ID(主键)、教师ID(外键)、课程ID(外键)
学生选课表:ID(主键)、学号(外键)、课程ID(外键)
二、输入数据
利用MySQL Workbench在以上三个表中输入数据。
三、编写Java程序
在前面作业的基础上,编写Java程序,增加以下具体功能:
(1)程序运行后首先显示如下信息(即增加了6号功能):
请输入您的操作:
1:查看学生信息
2:查看教师信息
3:查看班级信息”
4:查看某班级的所有学生
5:删除某个学生信息
6:查看某门课程信息
(2)当用户输入6后,系统输出如下内容:
请输入课程ID
(3)当用户输入课程ID后(例如2后),系统输出类似如下内容:
课程信息:
ID:2,课名:java,课程性质:专业课,简介:比较难学
授课教师:
教师ID:5, 顾鹏
教师ID:7,王顺
选课学生
学号:07,姓名:王特
学号:11,姓名:赵特
学号:15,姓名:李特
学号:17,姓名:吴特
学号:18,姓名:正特
本帖最后由 连帅帅 于 2021-6-23 10:38 编辑
整体实现步骤如下:
1.用户输入4后,跳转到对应接口(我暂且称为接口1),在接口1中输出:请输入班级ID,并获取用户输入的班级ID;
2.然后跳转到3中,即输出班级的学生信息(我暂且称为接口2),在接口2中去数据库查询该班级的学生人数,注意sql记得用个where进行班级区分即可,把查出的结果封装成统一格式(集合里面装学生信息)逐层返回即可。 连帅帅 发表于 2021-6-23 10:22
用户输入4后,跳转到对应接口(我暂且称为接口1),在接口1中输出:请输入班级ID,并获取用户输入的班级ID ...
你好我想请问一下这个是怎么跳转到3来出现一个接口2的呢? 本帖最后由 连帅帅 于 2021-6-23 10:40 编辑
连帅帅 发表于 2021-6-23 10:22
用户输入4后,跳转到对应接口(我暂且称为接口1),在接口1中输出:请输入班级ID,并获取用户输入的班级ID ...
代码补充如下:只写了整体大概结构,其中List集合里面为学生类
package com.lian.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* @author :LSS
* @description: 学生管理类功能4:查看某班级的所有学生
* @date :2021/6/23 10:25
*/
public class Student {
private static Scanner scanner = new Scanner(System.in);
public static List<Object> SearchClass2(int i){
//注意,这里写查询数据库的操作,查询出该班级的所有人数,然后封装在list集合中返回
List<Object> list = new ArrayList<>();
return list;
}
public static List<Object> SearchClass(int i){
System.out.println("请输入班级ID");
int i1 = scanner.nextInt();
return SearchClass2(i1);
}
public static void main(String[] args) {
System.out.println("请输入您的操作:");
int i = scanner.nextInt();
if(i == 4){
List<Object> list = SearchClass(i);
System.out.println("班级的学生信息:");
//进行班级学生信息的遍历打印
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(i));
}
}
}
}
cow427kk 发表于 2021-6-23 10:34
你好我想请问一下这个是怎么跳转到3来出现一个接口2的呢?
函数呀{:10_278:} 连帅帅 发表于 2021-6-23 10:36
代码补充如下:只写了整体大概结构,其中List集合里面为学生类
else if (n == 4){
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
System.out.println(" 请输入班级ID");
stmt = conn.createStatement();
String sql;
sql = "SELECT ID FROM class";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
int number= rs.getInt("number");
String name = rs.getString("name");
String sex = rs.getString("sex");
Date birth = rs.getDate("birth");
int ID = rs.getInt("ID");
String speciality = rs.getString("speciality");
// 输出数据
System.out.print("学号: " + number);
System.out.print(", 姓名: " + name);
System.out.print(", 性别: " + sex);
System.out.print(", 出生日期: " + birth);
System.out.print(", 所属班级ID号: " + ID);
System.out.print(", 特长简介: " + speciality);
System.out.print("\n");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
} 连帅帅 发表于 2021-6-23 10:42
函数呀
我是照老师的格式在一个大框架里分成了四个小的,如果这样的话我也可以这样封装运行吗?有点不太懂{:10_250:} cow427kk 发表于 2021-6-23 10:47
else if (n == 4){
Connection conn = null;
Statement stmt = null;
你这样把所有代码都写在一起,应该功能没问题,可以正常输出吧?问题是啥?就是结构有点乱{:10_256:} 连帅帅 发表于 2021-6-23 10:56
你这样把所有代码都写在一起,应该功能没问题,可以正常输出吧?问题是啥?就是结构有点乱
你这个SQL也有问题吧?都没有限定班级,这查出来的是所有的学生信息呀,SQL是不是应该改为:select * from class where 班级字段 = 班级ID,这样呀? 连帅帅 发表于 2021-6-23 10:56
你这样把所有代码都写在一起,应该功能没问题,可以正常输出吧?问题是啥?就是结构有点乱
功能是没问题,可以正常运行,但是我跳转不到某某班级输出,第一次输出完之后它就结束了
它运行就是这样:
请输入您的操作:
1: 查看学生信息
2: 查看教师信息
3: 查看班级信息
4: 查看某班级的所有学生
5: 删除某个学生信息
6: 查看某门课程信息
4
请输入班级ID
Goodbye!
连帅帅 发表于 2021-6-23 11:01
你这个SQL也有问题吧?都没有限定班级,这查出来的是所有的学生信息呀,SQL是不是应该改为:select * fro ...
我在sql里创建了class teacher student三个表,我的select是不是得from student 但是这个班级字段和班级ID是输入的什么呢?
被自己蠢哭{:10_266:} else if (n == 4){
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
System.out.println("请输入班级ID");
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM student WHERE ID='1'";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
int number= rs.getInt("number");
String name = rs.getString("name");
String sex = rs.getString("sex");
Date birth = rs.getDate("birth");
int ID = rs.getInt("ID");
String speciality = rs.getString("speciality");
// 输出数据
System.out.print("学号: " + number);
System.out.print(", 姓名: " + name);
System.out.print(", 性别: " + sex);
System.out.print(", 出生日期: " + birth);
System.out.print(", 所属班级ID号: " + ID);
System.out.print(", 特长简介: " + speciality);
System.out.print("\n");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
运行结果:
请输入您的操作:
1: 查看学生信息
2: 查看教师信息
3: 查看班级信息
4: 查看某班级的所有学生
5: 删除某个学生信息
6: 查看某门课程信息
4
请输入班级ID
学号: 201, 姓名: 王二, 性别: 男, 出生日期: 2001-02-03, 所属班级ID号: 1, 特长简介: 体育好
Goodbye!
本帖最后由 连帅帅 于 2021-6-23 11:45 编辑
cow427kk 发表于 2021-6-23 11:14
else if (n == 4){
Connection conn = null;
你这直接把where条件给干死了,{:10_258:}
这段代码我给你改了改:
// 执行查询
System.out.println("请输入班级ID");
int i1 = scanner.nextInt();
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM student WHERE ID="+i1;
ResultSet rs = stmt.executeQuery(sql);
System.out.println("班级的学生信息:");
连帅帅 发表于 2021-6-23 11:37
你这直接把where条件给干死了,
这段代码我给你改了改:
超级感谢你帮我改代码,前两天忙于兼职,今天继续来看这个问题试了一下 你给的这个程序,但有部分出了错一直在冒红。这个是我改了还是冒红的
else if (n == 4){
System.out.println("请输入班级ID");
Scanner i1 = new Scanner(System.in);
int i1 = i1.nextInt();
Connection conn = null;
Statement stmt = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 执行查询
stmt = conn.createStatement();
String sql;
sql = "SELECT * FROM student WHERE ID='+i1'";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
int number= rs.getInt("number");
String name = rs.getString("name");
String sex = rs.getString("sex");
Date birth = rs.getDate("birth");
int ID = rs.getInt("ID");
String speciality = rs.getString("speciality");
// 输出数据
System.out.print("学号: " + number);
System.out.print(", 姓名: " + name);
System.out.print(", 性别: " + sex);
System.out.print(", 出生日期: " + birth);
System.out.print(", 所属班级ID号: " + ID);
System.out.print(", 特长简介: " + speciality);
System.out.print("\n");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null) conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
} 连帅帅 发表于 2021-6-23 11:37
你这直接把where条件给干死了,
这段代码我给你改了改:
我最开始是在执行查询后面照着你那个试了一下 ,但是那个时候开始冒红 我又改了几个但还是有点问题 cow427kk 发表于 2021-6-26 22:45
超级感谢你帮我改代码,前两天忙于兼职,今天继续来看这个问题试了一下 你给的这个程序,但有部分出了错 ...
指出以下错误:
1.第三行,第四行,变量i1重复使用;
2.第20行的SQL格式错误,应该为:sql = "SELECT * FROM student WHERE ID="+i1; 连帅帅 发表于 2021-6-28 09:15
指出以下错误:
1.第三行,第四行,变量i1重复使用;
2.第20行的SQL格式错误,应该为:sql = "SELECT * ...
后来交作业的时候看了一下同学的,大概了解了一点,等期末结束后再重新巩固。谢谢你的帮助!{:10_303:} cow427kk 发表于 2021-7-1 10:37
后来交作业的时候看了一下同学的,大概了解了一点,等期末结束后再重新巩固。谢谢你的帮助!
加油,一定要多看多练,自己实操{:9_231:} 连帅帅 发表于 2021-7-1 11:08
加油,一定要多看多练,自己实操
学的东西太多了,这几天又在学flask了{:10_266:}还不会读取csv到网页中
页:
[1]