项目四、学生成绩查询系统
1、项目概述
1.1项目目标和主要内容
<1>实现一个简单的学生信息管理的程序。
<2>要求系统能为客户提供下列各项服务:教学管理人员能够使用程序对学生基本信息、课程信息进行管理,包括数据的添加、修改、删除和浏览;能够对学生选课进行管理,包括添加学生选课信息、录入成绩;能够使用查询功能,快速查看到指定学生或指定课程的基本信息以及所指定学生的选课信息;能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。
<3>要注意添加学生基本信息、课程信息相关数据时,学号和课程号不能重复;还有在添加学生选课信息时,要求该学生和课程必须是存在的,而且不能添加重复的选课信息。提供友好的交互界面,可以方便用户进行功能选择,实现信息的管理和查询,并可清晰地显示相关信息。
(2)项目的主要功能
<1>教学管理人员可以使用程序对学生基本信息、课程信息进行管理,包括数据的添加、修改、删除和浏览;能够对学生选课进行管理,包括添加学生选课信息、录入成绩;能够使用查询功能,快速查看到指定学生或指定课程的基本信息以及所指定学生的选课信息;能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。
1.2实验原理:利用java和mySQL,mySQL建立数据 库, 然后利用Java连接mySQL,利用Java编程对数据库进行修改,增加,删除等。
2、项目设计
2.1项目总体框架
包括系统框架图或层次逻辑图,设计思想等。
2.2系统详细设计
【1】 模块划分图及描述
主要分为2个模块:
<1>对学生信息的修改,如增加,删减,信息的更新。
<2>学生信息的保存
【2】 类关系图及描述
【3】 程序流程图及描述
【4】 存储结构、内存分配
上述内容也可以按照函数或模块划分分别设计。
2.3关键算法分析
算法 1:函数名Stu
【1】 算法功能
定义里4个变量,对这4个变量进行修改
【2】 算法基本思想
Stu类中定义4个变量,使用get方法和set方法进行对4个变量修改和增加。
【3】 算法空间、时间复杂度分析
<1>算法空间复杂度分析:来说,一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
<2>算法时间复杂度分析:当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。另外,算法的所有性能之间都存在着或多或少的相互影响。因此,当设计一个算法(特别是大型算法)时,要综合考虑算法的各项性能,算法的使用频率,算法处理的数据量的大小,算法描述语言的特性,算法运行的机器系统环境等各方面因素,才能够设计出比较好的算法。算法的时间复杂度和空间复杂度合称为算法的复杂度。
【4】 代码逻辑(可用伪代码描述)
public class Stu {
private String A;
private String name;
private String B;
private String result;
public String getA() {
return A;
}
public void setA(String A) {
this.A = A;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getB() {
return B;
}
public void setB(String B) {
this.B = B;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public Stu() {
super();
}
public Stu(String A, String name, String B, String result) {
super();
this.A = A;
this.name = name;
this.B = B;
this.result = result;
}
}
算法 2:函数名Dbutil
【1】 算法功能
数据库的加入
【2】 算法基本思想
Dbutil类是对数据库的运用,使用mysql建立一个数据库。
【3】 算法空间、时间复杂度分析
<1>算法空间复杂度分析:一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
<2>算法时间复杂度分析:当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。另外,算法的所有性能之间都存在着或多或少的相互影响。因此,当设计一个算法(特别是大型算法)时,要综合考虑算法的各项性能,算法的使用频率,算法处理的数据量的大小,算法描述语言的特性,算法运行的机器系统环境等各方面因素,才能够设计出比较好的算法。算法的时间复杂度和空间复杂度合称为算法的复杂度。
【4】 代码逻辑(可用伪代码描述)
public class Dbutil {
public static final String DRIVER_NAME=“oracle.jdbc.driver.OracleDriver”;
public static final String URL=“jdbc:oracle:thin:@localhost:1521:orcl”;
public static final String USER = “Mysql80”;
public static final String PASS = “3306”;
public static Connection getCon()throws ClassNotFoundException,
SQLException{
Connection con=null;
Class.forName(DRIVER_NAME);
con= DriverManager.getConnection(URL,USER,PASS);
return con;
}
public static void close(Connection con, Statement stmt, ResultSet rs){
try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null){
con.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
算法 3:函数名Software
【1】 算法功能
数据的修改,增加,删减,信息的更新。
【2】 算法基本思想
Software类是对4个变量的运用,通过代码对数据库里的数据进行修改,增加,删除,信息的更新。
【3】 算法空间、时间复杂度分析
<1>算法空间复杂度分析:一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
<2>算法时间复杂度分析:当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。另外,算法的所有性能之间都存在着或多或少的相互影响。因此,当设计一个算法(特别是大型算法)时,要综合考虑算法的各项性能,算法的使用频率,算法处理的数据量的大小,算法描述语言的特性,算法运行的机器系统环境等各方面因素,才能够设计出比较好的算法。算法的时间复杂度和空间复杂度合称为算法的复杂度。
【4】 代码逻辑(可用伪代码描述)
public class StuDao {
private Connection con;
private PreparedStatement stmt;
private ResultSet rs;
public boolean add(Stu stu){
String sql="insert into stu(stu_A,stu_name,stu_B,stu_result) values(?,?,?,?)";
try {
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,stu.getA());
stmt.setString(2,stu.getName());
stmt.setString(3,stu.getB());
stmt.setString(4,stu.getResult());
} catch (SQLException throwables) {
throwables.printStackTrace();
return false;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
public List<Stu> list(){
List<Stu> list=new ArrayList<>();
String sql="select * from stu";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
rs=stmt.executeQuery();
while (rs.next()) {
Stu stu=new Stu();
stu.setA(rs.getString("stu_A"));
stu.setName(rs.getString("stu_name"));
stu.setB(rs.getString("stu_B"));
stu.setResult(rs.getString("result"));
list.add(stu);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return list;
}
public Stu findSomeone(String A){
Stu stu=null;
String sql="select * from stu where stu_no=?";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,A);
rs=stmt.executeQuery();
while(rs.next()){
stu=new Stu();
stu.setA(rs.getString("stu_A"));//取结果集里面学号这一列的值赋给
stu.setName(rs.getString("stu_name"));
stu.setB(rs.getString("stu_B"));
stu.setResult(rs.getString("stu_result"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return stu;
}
public boolean upDate(Stu stu){
String sql="update stu set stu_name=?,phone=? wherestu_no=?";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(3, stu.getA());
stmt.setString(1, stu.getName());
stmt.setString(2, stu.getB());
stmt.setString(4,stu.getResult());
stmt.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
public boolean del(String id){
String sql="delete from stu where stu_no=?";
try {
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,id);
stmt.executeLargeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
}
算法 4:函数名StuManage
【1】 算法功能
数据的修改,增加,删减,信息的更新,对学生管理系统的更新,控制台的信息显示
【2】 算法基本思想
StuManage类是对4个变量的运用,通过代码对数据库里的数据进行修改,增加,删除,信息的更新。使用算法对控制台信息的更新。
【3】 算法空间、时间复杂度分析
<1>算法空间复杂度分析:一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
<2>算法时间复杂度分析:当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。另外,算法的所有性能之间都存在着或多或少的相互影响。因此,当设计一个算法(特别是大型算法)时,要综合考虑算法的各项性能,算法的使用频率,算法处理的数据量的大小,算法描述语言的特性,算法运行的机器系统环境等各方面因素,才能够设计出比较好的算法。算法的时间复杂度和空间复杂度合称为算法的复杂度。
【4】 代码逻辑(可用伪代码描述)
public class StuManage {
public void menu() {
int choose;
do {
System.out.println("******************************");
System.out.println("=欢迎进入学生信息管理系统=");
System.out.println(“1.新增学生”);
System.out.println(“2.修改学生”);
System.out.println(“3.删除学生”);
System.out.println(“4.查询学生”);
System.out.println(“5.退出该系统”);
System.out.println(“请选择(1-5):”);
Scanner scanner = new Scanner(System.in);
choose = scanner.nextInt();
System.out.println("******************************");
switch (choose) {
case 1:
myAdd();
break;
case 2:
myUpdate(); //菜单选择2,是修改学生
break;
case 3:
myDel();
break;
case 4:
myList();
break;
case 5: //菜单选择5,是退出该系统
System.out.println(“您选择了退出系统,确定要退出吗?(y/n)”);
Scanner scan=new Scanner(System.in);
String scanExit=scan.next();
if(scanExit.equals(“y”)){
System.exit(-1);
System.out.println(“您已成功退出系统,欢迎您再次使用!”);
}
break;
default:
break;
}
}while (choose!=5);
}
private void myList() {
System.out.println("************************");
System.out.println("====查询学生====");
System.out.println("该学生的信息如下:");
System.out.println("学号\t姓名\t选课信息\t成绩查询");
StuDao stuDao=new StuDao();
List<Stu>list=stuDao.list();
for(Stu stuList:list)
{
System.out.println(stuList.getA());
System.out.println(stuList.getName());
System.out.println(stuList.getB());
System.out.println(stuList.getResult());
}
System.out.println("***************");
}
private void myUpdate() {
Scanner s=new Scanner(System.in);
String no;
System.out.println("====修改学生====");
System.out.println("请输入要修改的学生学号:");
no=s.next();
System.out.println("该学生的信息如下:");
StuDao stuDao=new StuDao();
System.out.println("学生学号:"+stuDao.findSomeone(no).getA());
System.out.println("学生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("选课信息:"+stuDao.findSomeone(no).getB());
System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult());
System.out.println("请输入新的学生信息:");
Scanner stuUp=new Scanner(System.in);
String A,name,B,result;
System.out.println("学生学号");
A=stuUp.next();
System.out.println("学生姓名:");
name=stuUp.next();
System.out.println("选课信息:");
B=stuUp.next();
System.out.println("成绩查询");
result=stuUp.next();
Stu stu=new Stu(A,name,B,result);
boolean ok= stuDao.upDate(stu);
if(ok){
System.out.println("保存成功");
}else {
System.out.println("保存失败");
}
}
private void myDel() {
Scanner s=new Scanner(System.in);
String no;
System.out.println("====删除学生====");
System.out.println("请输入要删除的学生学号:");
no=s.next();
System.out.println("该学生的信息如下:");
StuDao stuDao=new StuDao();
System.out.println("学生学号:"+stuDao.findSomeone(no).getA());
System.out.println("学生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("选课信息:"+stuDao.findSomeone(no).getB());
System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult());
System.out.println("是否真的删除(y/n):");
Scanner scanner3=new Scanner(System.in);
String x=scanner3.next();
if (x.equals("y")) {
Stu stu=new Stu(no,null,null,no);
StuDao dao=new StuDao();
boolean ok=dao.del(no);
if (ok) {
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}
}
private void myAdd() {
String continute = null;
do {
Scanner s=new Scanner(System.in);
String A,name,B,result;
System.out.println("====新增学生====");
System.out.println("学号:");
A=s.next();
System.out.println("姓名:");
name=s.next();
System.out.println("选课信息:");
B=s.next();
System.out.println("成绩查询:");
result=s.next();
Stu stu=new Stu(A,name,B,result);
StuDao dao= new StuDao();
boolean ok=dao.add(stu);
if(ok){
System.out.println("保存成功");
}else {
System.out.println("保存失败");
}
System.out.println("是否继续添加(y/n):");
Scanner scanner2=new Scanner(System.in);
continute=scanner2.next();
}while (continute.equals("y"));
}
}
算法 3:函数名Main
【1】 算法功能
函数的调用
【2】 基本思想
对函数stuManage的调用
【3】 算法空间、时间复杂度分析
<1>算法空间复杂度分析:无。
<2>算法时间复杂度分析:无
【4】 代码逻辑(可用伪代码描述)
public class Main {
public static void main(String[] args) {
StuManage a=new StuManage();
a.menu();
}
}
2.3程序运行结果分析
包括输入数据格式、输出显示方式、主要界面、操作流程、运行时间、运行效果等。
初始界面:
增加学生信息:
2.4、总结
1、项目的难点和关键点
项目的难点在于数据库对利用;信息的修改等
2、项目的评价:
可以对数据的修改和存储。
3、心得体会
在这次的简易计算机的实现过程中,使我对Java有了更深的理解
2.5 实验代码
package Software;
public class Stu {
private String A;
private String name;
private String B;
private String result;
public String getA() {
return A;
}
public void setA(String A) {
this.A = A;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getB() {
return B;
}
public void setB(String B) {
this.B = B;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public Stu() {
super();
}
public Stu(String A, String name, String B, String result) {
super();
this.A = A;
this.name = name;
this.B = B;
this.result = result;
}
}
package Software;
import java.sql.*;
public class Dbutil {
public static final String DRIVER_NAME=“oracle.jdbc.driver.OracleDriver”;
public static final String URL=“jdbc:oracle:thin:@localhost:1521:orcl”;
public static final String USER = “Mysql80”;
public static final String PASS = “3306”;
public static Connection getCon()throws ClassNotFoundException,
SQLException{
Connection con=null;
Class.forName(DRIVER_NAME);
con= DriverManager.getConnection(URL,USER,PASS);
return con;
}
public static void close(Connection con, Statement stmt, ResultSet rs){
try {
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(con!=null){
con.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
package Software;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class StuDao {
private Connection con;
private PreparedStatement stmt;
private ResultSet rs;
public boolean add(Stu stu){
String sql="insert into stu(stu_A,stu_name,stu_B,stu_result) values(?,?,?,?)";
try {
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,stu.getA());
stmt.setString(2,stu.getName());
stmt.setString(3,stu.getB());
stmt.setString(4,stu.getResult());
} catch (SQLException throwables) {
throwables.printStackTrace();
return false;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return false;
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
public List<Stu> list(){
List<Stu> list=new ArrayList<>();
String sql="select * from stu";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
rs=stmt.executeQuery();
while (rs.next()) {
Stu stu=new Stu();
stu.setA(rs.getString("stu_A"));
stu.setName(rs.getString("stu_name"));
stu.setB(rs.getString("stu_B"));
stu.setResult(rs.getString("result"));
list.add(stu);
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return list;
}
public Stu findSomeone(String A){
Stu stu=null;
String sql="select * from stu where stu_no=?";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,A);
rs=stmt.executeQuery();
while(rs.next()){
stu=new Stu();
stu.setA(rs.getString("stu_A"));//取结果集里面学号这一列的值赋给
stu.setName(rs.getString("stu_name"));
stu.setB(rs.getString("stu_B"));
stu.setResult(rs.getString("stu_result"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return stu;
}
public boolean upDate(Stu stu){
String sql="update stu set stu_name=?,phone=? wherestu_no=?";
try{
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(3, stu.getA());
stmt.setString(1, stu.getName());
stmt.setString(2, stu.getB());
stmt.setString(4,stu.getResult());
stmt.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
public boolean del(String id){
String sql="delete from stu where stu_no=?";
try {
con= Dbutil.getCon();
stmt=con.prepareStatement(sql);
stmt.setString(1,id);
stmt.executeLargeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
Dbutil.close(con,stmt,rs);
}
return true;
}
}
package Software;
import java.util.List;
import java.util.Scanner;
public class StuManage {
public void menu() {
int choose;
do {
System.out.println("******************************");
System.out.println("=欢迎进入学生信息管理系统=");
System.out.println(“1.新增学生”);
System.out.println(“2.修改学生”);
System.out.println(“3.删除学生”);
System.out.println(“4.查询学生”);
System.out.println(“5.退出该系统”);
System.out.println(“请选择(1-5):”);
Scanner scanner = new Scanner(System.in);
choose = scanner.nextInt();
System.out.println("******************************");
switch (choose) {
case 1:
myAdd();
break;
case 2:
myUpdate(); //菜单选择2,是修改学生
break;
case 3:
myDel();
break;
case 4:
myList();
break;
case 5: //菜单选择5,是退出该系统
System.out.println(“您选择了退出系统,确定要退出吗?(y/n)”);
Scanner scan=new Scanner(System.in);
String scanExit=scan.next();
if(scanExit.equals(“y”)){
System.exit(-1);
System.out.println(“您已成功退出系统,欢迎您再次使用!”);
}
break;
default:
break;
}
}while (choose!=5);
}
private void myList() {
System.out.println("************************");
System.out.println("====查询学生====");
System.out.println("该学生的信息如下:");
System.out.println("学号\t姓名\t选课信息\t成绩查询");
StuDao stuDao=new StuDao();
List<Stu>list=stuDao.list();
for(Stu stuList:list)
{
System.out.println(stuList.getA());
System.out.println(stuList.getName());
System.out.println(stuList.getB());
System.out.println(stuList.getResult());
}
System.out.println("***************");
}
private void myUpdate() {
Scanner s=new Scanner(System.in);
String no;
System.out.println("====修改学生====");
System.out.println("请输入要修改的学生学号:");
no=s.next();
System.out.println("该学生的信息如下:");
StuDao stuDao=new StuDao();
System.out.println("学生学号:"+stuDao.findSomeone(no).getA());
System.out.println("学生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("选课信息:"+stuDao.findSomeone(no).getB());
System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult());
System.out.println("请输入新的学生信息:");
Scanner stuUp=new Scanner(System.in);
String A,name,B,result;
System.out.println("学生学号");
A=stuUp.next();
System.out.println("学生姓名:");
name=stuUp.next();
System.out.println("选课信息:");
B=stuUp.next();
System.out.println("成绩查询");
result=stuUp.next();
Stu stu=new Stu(A,name,B,result);
boolean ok= stuDao.upDate(stu);
if(ok){
System.out.println("保存成功");
}else {
System.out.println("保存失败");
}
}
private void myDel() {
Scanner s=new Scanner(System.in);
String no;
System.out.println("====删除学生====");
System.out.println("请输入要删除的学生学号:");
no=s.next();
System.out.println("该学生的信息如下:");
StuDao stuDao=new StuDao();
System.out.println("学生学号:"+stuDao.findSomeone(no).getA());
System.out.println("学生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("选课信息:"+stuDao.findSomeone(no).getB());
System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult());
System.out.println("是否真的删除(y/n):");
Scanner scanner3=new Scanner(System.in);
String x=scanner3.next();
if (x.equals("y")) {
Stu stu=new Stu(no,null,null,no);
StuDao dao=new StuDao();
boolean ok=dao.del(no);
if (ok) {
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}
}
private void myAdd() {
String continute = null;
do {
Scanner s=new Scanner(System.in);
String A,name,B,result;
System.out.println("====新增学生====");
System.out.println("学号:");
A=s.next();
System.out.println("姓名:");
name=s.next();
System.out.println("选课信息:");
B=s.next();
System.out.println("成绩查询:");
result=s.next();
Stu stu=new Stu(A,name,B,result);
StuDao dao= new StuDao();
boolean ok=dao.add(stu);
if(ok){
System.out.println("保存成功");
}else {
System.out.println("保存失败");
}
System.out.println("是否继续添加(y/n):");
Scanner scanner2=new Scanner(System.in);
continute=scanner2.next();
}while (continute.equals("y"));
}
}
package Software;
public class Main {
public static void main(String[] args) {
StuManage a=new StuManage();
a.menu();
}
}