The effect is as shown in the figure
, 6 file codes are required
package StudentDemo;
import java.util.Scanner;
public class MainTest {
/**
* main方法是程序的入口
*
* @param args
*/
public static void main(String args[]) {
int choice;
System.out.println("这是一个学生信息管理系统,最大容量为100,欢迎您对本系统的使用");
while (true) {
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("********6.信息查询********");
System.out.println("********7.退出********");
System.out.println("===请输入你要进行的操作====");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
choice = scanner.nextInt();
if (choice == 7)
break;
switch (choice) {
case 1:
Tools_DB.add();
break;// 添加学生信息
case 2:
Tools_DB.show();
break;// 查询学生信息
case 3:
Tools_DB.change();
break;// 修改学生信息
case 4:
Tools_DB.delete();
break;// 删除学生信息
case 5:
Tools_DB.paixu();
break;// 对学生信息排序
case 6:
Tools_DB.query();
break;// 查询学生信息
case 7:
System.out.println("您要操作的是:7.退出");
System.exit(0);
break;// 表示正常程序的关闭,执行的是以下操作:System.exit(0);
default:
System.out.println("输入出错!请重新输入");
break;// 表示正常程序的关闭,执行的是以下操作:System.exit(0);
}
}
System.out.println("感谢您对本系统的使用,欢迎下次继续使用");
}
}
package StudentDemo;
public class Student {
private String stuNum;//学号
private String name;//姓名
private String gender;//性别
private int age;//年龄
private int score;//分数
public Student() {
super();
}
public Student(String stuNum,String name,String gender,int age,int score) {
this.stuNum = stuNum;
this.name = name;
this.gender = gender;
this.age = age;
this.score = score;
}
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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;
}
}
package StudentDemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Tools_ArrayList {
static ArrayList<Student> stus = new ArrayList<Student>();
static Scanner scanner = new Scanner(System.in);
public static void add() {// 添加学生信息
System.out.println("添加时要输入学生的学号,姓名,性别,年龄,成绩");
Student stu = new Student();
System.out.println("请输入该学生的学号:");
stu.setStuNum(scanner.next());
System.out.println("请输入该学生的姓名:");
stu.setName(scanner.next());
System.out.println("请输入该学生的性别:");
stu.setGender(scanner.next());
System.out.println("请输入该学生的年龄:");
stu.setAge(scanner.nextInt());
System.out.println("请输入该学生的成绩:");
stu.setScore(scanner.nextInt());
stus.add(stu);
System.out.println("添加成功");
}
public static void show() {// 展示学生信息
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
for (int i = 0; i < stus.size(); i++){
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + "\t" + stus.get(i).getGender() + "\t"
+ stus.get(i).getAge() + "\t" + stus.get(i).getScore());
}
System.out.println("*******************************************");
System.out.println();
}
// 这里排序调用api方法
public static void paixu(){
Collections.sort(stus, new Comparator<Student>(){
@Override
public int compare(Student stu1, Student stu2) {
if(stu1.getScore()>stu2.getScore()){
return 1;
}else if(stu1.getScore()==stu2.getScore()){
return 0;
}else{
return -1;
}
}
});
}
public static void change() {// 改变学生信息
System.out.println("请输入要修改信息的学生学号");
String stunumber = scanner.next();
for (int i = 0; i < stus.size(); i++) {
if (stunumber.equals(stus.get(i).getStuNum())) {
System.out.println("请输入要修改的学生的信息,学号,姓名,性别,年龄,分数");
stus.get(i).setStuNum(scanner.next());
stus.get(i).setName(scanner.next());
stus.get(i).setGender(scanner.next());
stus.get(i).setAge(scanner.nextInt());
stus.get(i).setScore(scanner.nextInt());
break;
}
}
}
public static void query() {// 查询
System.out.println("请输入要查询的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < stus.size(); i++) {
if (Stunumber.equals(stus.get(i).getStuNum())) {
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + "\t" + stus.get(i).getGender()
+ "\t" + stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
}
}
}
public static void delete() {// 删除学生信息
System.out.println("请输入要删除信息的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < stus.size(); i++) {
if (Stunumber.equals(stus.get(i).getStuNum())) {
stus.remove(i);
}
}
System.out.println("删除完成");
}
}
package StudentDemo;
import java.util.Scanner;
public class Tools_Arrays {
// 定义学生数组,容量为100
static Student[] stus = new Student[100];
// 数据中实际添加学生的下标,每添加一个下标加1,删除时减1,留意下面的add(),delete()
static int number = 0;
static Scanner scanner = new Scanner(System.in);
public static void add() {// 添加学生信息
System.out.println("添加时要输入学生的学号,姓名,性别,年龄,成绩");
stus[number] = new Student();
System.out.println("请输入该学生的学号:");
stus[number].setStuNum(scanner.next());
System.out.println("请输入该学生的姓名:");
stus[number].setName(scanner.next());
System.out.println("请输入该学生的性别:");
stus[number].setGender(scanner.next());
System.out.println("请输入该学生的年龄:");
stus[number].setAge(scanner.nextInt());
System.out.println("请输入该学生的成绩:");
stus[number].setScore(scanner.nextInt());
// 添加成功,下标加1
number++;
System.out.println("添加成功");
}
public static void show() {// 展示学生信息
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
for (int i = 0; i < number; i++)
System.out.println(stus[i].getStuNum() + "\t" + stus[i].getName() + "\t" + "\t" + stus[i].getGender() + "\t"
+ stus[i].getAge() + "\t" + stus[i].getScore());
System.out.println("*******************************************");
System.out.println();
}
// 这里排序用的是冒泡排序,在练习时,可以使用十大排序的任意一种替换。
public static void paixu() {// 对学生信息进行排序
int j;
Student temp = new Student();
for (int i = 0; i < number; i++) {
for (j = i + 1; j < number; j++)
if (stus[i].getScore() > stus[j].getScore()) {
temp = stus[i];
stus[i] = stus[j];
stus[j] = temp;
}
}
System.out.println("排序完成,选择”学生信息查看“进行查看");
}
public static void change() {// 改变学生信息
System.out.println("请输入要修改信息的学生学号");
String Stunumber = scanner.next();
for (int i = 0; i < number; i++) {
if (Stunumber.equals(stus[i].getStuNum())) {
System.out.println("请输入要修改的学生的信息,学号,姓名,性别,年龄,分数");
stus[i].setStuNum(scanner.next());
stus[i].setName(scanner.next());
stus[i].setGender(scanner.next());
stus[i].setAge(scanner.nextInt());
stus[i].setScore(scanner.nextInt());
break;
}
}
}
public static void query() {// 查询
System.out.println("请输入要查询的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < number; i++) {
if (Stunumber.equals(stus[i].getStuNum())) {
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
System.out.println(stus[i].getStuNum() + "\t" + stus[i].getName() + "\t" + "\t" + stus[i].getGender()
+ "\t" + stus[i].getAge() + "\t" + stus[i].getScore());
System.out.println("*******************************************");
}
}
}
public static void delete() {// 删除学生信息
System.out.println("请输入要删除信息的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < number; i++) {
if (Stunumber.equals(stus[i].getStuNum()))
break;
}
for (; i < number - 1; i++) {
stus[i] = stus[i + 1];
}
number--;
System.out.println("删除完成");
}
}
package StudentDemo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Scanner;
public class Tools_DB {
static ArrayList<Student> stus = new ArrayList<Student>();
static Scanner scanner = new Scanner(System.in);
public static void dbExcute(String sql) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
/* 加载并注册MySQL的JDBC驱动 */
Class.forName("com.mysql.jdbc.Driver");
/* 建立到MySQL数据库的建立 */
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL = false&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC",
"root", "hui768285131");
// conn=DriverManager.getConnection("jdbc:mysql://120.26.208.137:3306/db_test?characterEncoding=utf8","db_test","123qwe!@#");
/* 访问数据库,执行SQL语句 */
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();// 关闭ResultSet对象
rs = null;
}
if (stmt != null) {
stmt.close();// 关闭Statement对象
stmt = null;
}
if (conn != null) {
conn.close();// 关闭Connection对象
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void query(String sql) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
/* 加载并注册MySQL的JDBC驱动 */
Class.forName("com.mysql.jdbc.Driver");
/* 建立到MySQL数据库的建立 */
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL = false&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC",
"root", "hui768285131");
// conn=DriverManager.getConnection("jdbc:mysql://120.26.208.137:3306/db_test?characterEncoding=utf8","db_test","123qwe!@#");
/* 访问数据库,执行SQL语句 */
stmt = conn.createStatement();
/* 添加记录 */
System.out.println("添加记录后:");
// rs=stmt.executeQuery("select * from student");
rs = stmt.executeQuery(sql);
stus = new ArrayList<Student>();
while (rs.next()) {
String stuNum = rs.getString("stuNum");
String name = rs.getString("name");
String gender = rs.getString("gender");
int age = rs.getInt("age");
int score = rs.getInt("score");
Student student = new Student();
student.setStuNum(stuNum);
student.setName(name);
student.setGender(gender);
student.setAge(age);
student.setScore(score);
stus.add(student);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();// 关闭ResultSet对象
rs = null;
}
if (stmt != null) {
stmt.close();// 关闭Statement对象
stmt = null;
}
if (conn != null) {
conn.close();// 关闭Connection对象
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void add() {// 添加学生信息
System.out.println("添加时要输入学生的学号,姓名,性别,年龄,成绩");
System.out.println("请从键盘输入学号");
String outter_stuNum = scanner.next();
System.out.println("请从键盘输入姓名");
String outter_name = scanner.next();
System.out.println("请从键盘输入性别");
String outter_gender = scanner.next();
System.out.println("请输入该学生的年龄:");
int outter_age = scanner.nextInt();
System.out.println("请从键盘输入成绩");
int outter_score = scanner.nextInt();
String sql = "insert into student_jxyy(stuNum,name,gender,age,score) values(" + "'" + outter_stuNum + "','"
+ outter_name + "','" + outter_gender + "'," + outter_age + "," + outter_score + ")";
System.out.println(sql);
dbExcute(sql);
System.out.println("添加成功");
}
public static void show() {// 展示学生信息
// 从数据库中查询出数据
query("select * from student_jxyy");
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
for (int i = 0; i < stus.size(); i++)
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + stus.get(i).getGender()
+ "\t" + stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
System.out.println();
}
// 这里排序调用api方法
@SuppressWarnings("unchecked")
public static void paixu() {
// 从数据库中查询出数据
query("select * from student_jxyy order by score");
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
for (int i = 0; i < stus.size(); i++)
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + "\t"
+ stus.get(i).getGender() + "\t" + stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
System.out.println();
}
public static void change() {// 改变学生信息
System.out.println("请输入要修改的学生的信息,学号,姓名,性别,年龄,分数");
System.out.println("请从键盘输入学号");
String outter_stuNum = scanner.next();
System.out.println("请从键盘输入姓名");
String outter_name = scanner.next();
System.out.println("请从键盘输入性别");
String outter_gender = scanner.next();
System.out.println("请输入该学生的年龄:");
int outter_age = scanner.nextInt();
System.out.println("请从键盘输入成绩");
int outter_score = scanner.nextInt();
StringBuffer sql = new StringBuffer(" update student_jxyy ");
sql.append(" set name = ");
sql.append("'" + outter_name + "', ");
sql.append(" gender = ");
sql.append("'" + outter_gender + "', ");
sql.append(" age = ");
sql.append(outter_age + ", ");
sql.append(" score = ");
sql.append(outter_score + " ");
sql.append(" where stuNum = " + "'" + outter_stuNum + "'");
System.out.println(sql);
// dbExcute(sql.toString());
}
public static void query() {// 查询
// 从数据库中查询出数据
System.out.println("请输入要查询的学生学号");
String stunumber = scanner.next();
query("select * from student_jxyy where stuNum = " + "'" + stunumber + "'");
for (int i = 0; i < stus.size(); i++) {
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + stus.get(i).getGender()
+ "\t" + stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
}
}
public static void delete() {// 删除学生信息
System.out.println("请输入要删除信息的学生学号");
String stunumber = scanner.next();
StringBuffer sql = new StringBuffer(" delete from student_jxyy ");
sql.append(" where stuNum = " + "'" + stunumber + "'");
System.out.println(sql);
dbExcute(sql.toString());
System.out.println("删除完成");
}
}
package StudentDemo;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Tools_IOFile{
static ArrayList<Student> stus = new ArrayList<Student>();
static Scanner scanner = new Scanner(System.in);
public static void addToFile(String str) {
PrintWriter out;
try {
out = new PrintWriter(new FileOutputStream("students.txt",true));
out.write(str);
out.write("\n");
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void add() {
System.out.println("添加时要输入学生的学号,姓名,性别,年龄,成绩");
System.out.println("请从键盘输入学号");
String outter_stuNum = scanner.next();
System.out.println("请从键盘输入姓名");
String outter_name = scanner.next();
System.out.println("请从键盘输入性别");
String outter_gender = scanner.next();
System.out.println("请输入该学生的年龄:");
int outter_age = scanner.nextInt();
System.out.println("请从键盘输入成绩");
int outter_score = scanner.nextInt();
String studentInfo = outter_stuNum + ":" + outter_name + ":" + outter_gender + ":" +outter_age + ":" + outter_score;
addToFile(studentInfo);
System.out.println("添加成功");
}
/**
* 将文本中学生信息加载入容器
*/
public static ArrayList<Student> txtInfoToList() {
ArrayList<Student> stuList = new ArrayList<Student>();
try {
BufferedReader in = new BufferedReader(new FileReader("students.txt"));
String info = null;
while((info = in.readLine()) != null){
String[] infos = info.split(":");
if (infos != null && infos.length == 5){
Student stu = new Student();
// 学号,姓名,性别,年龄,成绩
stu.setStuNum(infos[0]);
stu.setName(infos[1]);
stu.setGender(infos[2]);
stu.setAge(Integer.parseInt(infos[3]));
stu.setScore(Integer.parseInt(infos[4]));
stuList.add(stu);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stuList;
}
/**
* 将容器中学生信息写入文本
*/
public static void listInfoToTxt(ArrayList<Student> stuList){
// 将动态组的内容写入到文件
try {
PrintWriter out = new PrintWriter(new FileOutputStream("students.txt"),false);
for (int i = 0;i < stuList.size();i++) {
String stuNum = stuList.get(i).getStuNum();
String name = stuList.get(i).getName();
String gender = stuList.get(i).getGender();
int age = stuList.get(i).getAge();
int score = stuList.get(i).getScore();
String studentInfo =stuNum + ":" + name + ":" + gender + ":" + age + ":" + score;
addToFile(studentInfo);
}
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void show() {// 展示学生信息
// 让stus重新指向文本中的学生信息
stus = txtInfoToList();
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
for (int i = 0; i < stus.size(); i++)
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + "\t" + stus.get(i).getGender() + "\t"
+ stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
System.out.println();
}
// 这里排序调用api方法
@SuppressWarnings("unchecked")
public static void paixu(){
// 让stus重新指向文本中的学生信息
stus = txtInfoToList();
Collections.sort(stus, new Comparator(){
@Override
public int compare(Object o1, Object o2) {
Student stu1=(Student)o1;
Student stu2=(Student)o2;
if(stu1.getScore()>stu2.getScore()){
return 1;
}else if(stu1.getScore()==stu2.getScore()){
return 0;
}else{
return -1;
}
}
});
// 将容器中学生信息写入文本
listInfoToTxt(stus);
}
public static void change() {// 改变学生信息
// 让stus重新指向文本中的学生信息
stus = txtInfoToList();
System.out.println("请输入要修改信息的学生学号");
String Stunumber = scanner.next();
for (int i = 0; i < stus.size(); i++) {
if (Stunumber.equals(stus.get(i).getStuNum())) {
System.out.println("请换行输入要修改的学生的信息:姓名,性别,年龄,分数");
stus.get(i).setName(scanner.next());
stus.get(i).setGender(scanner.next());
stus.get(i).setAge(scanner.nextInt());
stus.get(i).setScore(scanner.nextInt());
break;
}
}
// 将容器中学生信息写入文本
listInfoToTxt(stus);
}
public static void query() {// 查询
// 让stus重新指向文本中的学生信息
stus = txtInfoToList();
System.out.println("请输入要查询的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < stus.size(); i++) {
if (Stunumber.equals(stus.get(i).getStuNum())) {
System.out.println("*******************************************");
System.out.println(" 学号 姓名 性别 年龄 成绩");
System.out.println(stus.get(i).getStuNum() + "\t" + stus.get(i).getName() + "\t" + "\t" + stus.get(i).getGender()
+ "\t" + stus.get(i).getAge() + "\t" + stus.get(i).getScore());
System.out.println("*******************************************");
}
}
}
public static void delete() {// 删除学生信息
// 让stus重新指向文本中的学生信息
stus = txtInfoToList();
System.out.println("请输入要删除信息的学生学号");
String Stunumber = scanner.next();
int i;
for (i = 0; i < stus.size(); i++) {
if (Stunumber.equals(stus.get(i).getStuNum())) {
stus.remove(i);
}
}
// 将容器中学生信息写入文本
listInfoToTxt(stus);
System.out.println("删除完成");
}
}
Need idea to connect to MySQL database to create test
Requires test database and student_jxyy table
Details: When the idea connects to the MySQL database to create a test, you need to pay attention to the corresponding connection of the MySQL version
and /* Load and register the MySQL JDBC driver */
mysql 5.x: Class.forName("com.mysql.jdbc.Driver") ;
MySQL 5.x and above: Class.forName("com.mysql.cj.jdbc.Driver");
the test above is the database name, you can change it