import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StudentManagementSystem {
static List<Student> studentList = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1.添加学生信息");
System.out.println("2.查询学生信息");
System.out.println("3.修改学生信息");
System.out.println("4.删除学生信息");
System.out.println("5.显示所有学生信息");
System.out.println("6.退出");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addStudent();
break;
case 2:
searchStudent();
break;
case 3:
modifyStudent();
break;
case 4:
deleteStudent();
break;
case 5:
displayAllStudents();
break;
case 6:
System.exit(0);
default:
System.out.println("输入无效,请重新输入!");
break;
}
}
}
private static void addStudent() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生体重:");
int age = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入学生性别:");
String gender = scanner.nextLine();
System.out.println("请输入学生学号:");
String number = scanner.nextLine();
System.out.println("请输入学生课程:");
String className = scanner.nextLine();
Student student = new Student(name, age, gender, number, className);
studentList.add(student);
System.out.println("添加成功!");
}
private static void searchStudent() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查询的学生学号:");
String number = scanner.nextLine();
for (Student student : studentList) {
if (student.getNumber().equals(number)) {
System.out.println(student);
return;
}
}
System.out.println("没有找到该学生!");
}
private static void modifyStudent() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的学生学号:");
String number = scanner.nextLine();
for (Student student : studentList) {
if (student.getNumber().equals(number)) {
System.out.println("请输入学生姓名(原姓名:" + student.getName() + "):");
String name = scanner.nextLine();
student.setName(name);
System.out.println("请输入学生体重(原体重:" + student.getAge() + "):");
int age = scanner.nextInt();
student.setAge(age);
scanner.nextLine();
System.out.println("请输入学生性别(原性别:" + student.getGender() + "):");
String gender = scanner.nextLine();
student.setGender(gender);
System.out.println("请输入学生课程(原课程:" + student.getClassName() + "):");
String className = scanner.nextLine();
student.setClassName(className);
System.out.println("修改成功!");
return;
}
}
System.out.println("没有找到该学生!");
}
private static void deleteStudent() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
String number = scanner.nextLine();
for (int i = 0; i < studentList.size(); i++) {
if (studentList.get(i).getNumber().equals(number)) {
studentList.remove(i);
System.out.println("删除成功!");
return;
}
}
System.out.println("没有找到该学生!");
}
private static void displayAllStudents() {
for (Student student : studentList) {
System.out.println(student);
}
}
}
class Student {
private String name;
private int age;
private String gender;
private String number;
private String className;
public Student(String name, int age, String gender, String number, String className) {
this.name = name;
this.age = age;
this.gender = gender;
this.number = number;
this.className = className;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "姓名:" + name + ",体重:" + age + ",性别:" + gender + ",学号:" + number + ",课程:" + className;
}
}
这个问题可能是你使用了不支持中文的IDE或者控制台。可以尝试在代码中添加以下语句来解决中文乱码问题:
System.setProperty("console.encoding","UTF-8");
或者在IDE的设置中更改字符集为UTF-8。另外,如果在Windows操作系统下运行代码,还需要在控制台中设置字符集为UTF-8,才能够正确显示中文。
编码是UTF-8的吗
可能是编码格式的问题。检查你的代码文件和控制台的编码格式是否一致,建议使用UTF-8编码格式
你怎么运行的? 是 使用 cmd命令行 ,还是 其他开发工具里
javac -encoding utf-8 Main.java
-开发工具里,运行类的 run configuration 里 ,添加 vm options,里面加上 -Dfile-encoding=utf-8【如果不行可改成 -Dfile-encoding=gbk】
我们拿一个学生来举例
struct Stu { int age;//学生的年龄 char name[20];//学生的名字 float weight;//学生的体重 }s;//自己定义的全局变量
问题解答: 这个问题是因为程序在处理姓名和性别的输入时,没有正确设置字符编码。中文字符一般采用UTF-8编码,而英文字符一般采用ASCII编码。如果程序默认使用ASCII编码,那么中文字符就无法正确显示,会出现问号、“□”等非正常字符。
解决方案是要在程序中设置正确的字符编码,或者在输入时进行转码。可以使用如下代码来进行编码转换:
#include <locale.h>
#include <wchar.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, ""); //设置本地化环境
wstring name = L"张三"; //输入的姓名
wstring gender = L"男"; //输入的性别
wcout << "姓名:" << name << endl; //输出姓名
wcout << "性别:" << gender << endl; //输出性别
return 0;
}
这段代码使用了宽字符类型 (wchar) 来表示中文字符,并将本地化环境设置为系统的默认环境。通过使用wcout输出中文字符,程序可以正常显示中文字符。同时,也可以使用Unicode或者其他编码方式进行输入和输出。