package bigtest;
import java.util.Scanner;
/*
简易版学生管理系统:
欢迎界面(java版)
选择功能操作学生信息:
添加、删除、修改、查询、打印、退出
*/
public class Test {
public static void main(String[] args) {
System.out.println("欢迎登陆学生管理系统,请选择您的操作!");
Scanner scanner = new Scanner(System.in);
Tools tools = new Tools();
wc:
while (true) {
System.out.println("----------学生信息管理系统----------");
System.out.println("* 1、学生登录 2、教师登录 3、退出 *");
System.out.println("---------------------------------");
System.out.print("请输入您的选择:");
int flag = scanner.nextInt();
switch (flag) {
case 1:
tools.Login_student();
break;
case 2:
tools.Login_teacher();
break;
case 3:
break wc;
default:
System.out.println("输入有误,请重新输入:");
break;
}
}
}
}
package bigtest;
import java.util.Scanner;
public class Student {
private String no;
private String name;
private String clazz;
private int age;
private String sex;
Scanner input=new Scanner (System.in);
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
public int getAge() {
return age;
}
public void setAge(int age) {
while(true){
if(age>=0&&age<=100) {
this.age=age;
break;
}else{
System.out.println("输入年龄值不符合条件!请重新输入年龄为:");
age=input.nextInt();
}
}
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"no='" + no + '\'' +
", name='" + name + '\'' +
", clazz='" + clazz + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
package bigtest;
import java.util.Arrays;
import java.util.Scanner;
public class Tools {
//定义一个students用来存储学生信息
public Student[] students = new Student[20];
Scanner scanner = new Scanner(System.in);
//默认索引
//int index = 0;
//学生端登录
public void Login_student( ) {
//已知用户名密码
String[] names = new String[2];
String[] passwords = new String[2];
names[0]="张颖";
names[1]="张娜";
passwords[0]="030106";
passwords[1]="153830";
boolean f=true;//如果此用户不存在,则为true
//获取用户名密码
while (true) {
System.out.print("请输入用户名:");
String username = scanner.next();
System.out.print("请输入密码:");
String user_password = scanner.next();
for (int i=0;i<2;i++){
if (names[i].equals(username) ) {
if (passwords[i].equals(user_password)){
System.out.println("登陆成功");
studentManage();
return;
}else {
System.out.println("密码错误,请重新输入");
}
f=false;
}
}
if(f){
System.out.println("该用户不存在,请重新输入");
}
}
}
//学生功能选择
public void studentManage(){
Scanner sc = new Scanner(System.in);
wc2:
while (true) {
System.out.println("----------学生信息管理界面----------");
System.out.println("* 1、查看信息 2、返回 *");
System.out.println("---------------------------------");
System.out.print("请输入您的选择:");
int flags = sc.nextInt();
switch (flags) {
case 1:
findStudent();
break;
case 2:
break wc2;
}
}
}
//教师端登录
public void Login_teacher( ) {
boolean f=true;//如果此用户不存在,则为true
//已知用户名密码
String[] names = new String[2];
String[] passwords = new String[2];
names[0]="张静";
names[1]="张然";
passwords[0]="123456";
passwords[1]="654321";
//获取用户名密码
while (true) {
System.out.print("请输入用户名:");
String username = scanner.next();
System.out.print("请输入密码:");
String user_password = scanner.next();
for (int i=0;i<2;i++){
if (names[i].equals(username) ) {
if (passwords[i].equals(user_password)){
System.out.println("登陆成功");
teacherManage();
return;
}else {
System.out.println("密码错误,请重新输入");
}
f=false;
}
}
if(f){
System.out.println("该用户不存在,请重新输入");
}
}
}
public void teacherManage(){
//教师登录界面
A:while(true){//实现循环操作
//根据输入的值去处理不同的功能
System.out.println("----------教师信息管理界面----------");
System.out.println("*1、添加信息 2、删除信息 3、修改信息*");
System.out.println("*4、查看信息 5、打印信息 6、退出系统*");
System.out.println("---------------------------------");
System.out.print("请输入您的选择:");
switch(scanner.nextInt()){
case 1:
System.out.println("执行添加学生信息... ...");
saveStudent();
sortStudent();
break;
case 2:
System.out.println("执行删除学生信息... ...");
deleteStudent();
break;
case 3:
System.out.println("执行修改学生信息... ...");
updateStudent();
break;
case 4:
System.out.println("执行查询学生信息... ...");
findStudent();
break;
case 5:
System.out.println("执行打印学生信息... ...");
printStudent();
break;
case 6:
System.out.println("欢迎再次使用本系统,再见! ");
break A;//退出外层while循环
default:
System.out.println("欢迎再次使用本系统,再见!");
break A;
}
}
}
//增加学生信息
public void saveStudent() {
//增加学生信息时,去掉以前index的索引下标的累加值,
// 改变成灵活控制增加信息的n1
// (n1为有值的数组元素的个数,刚好作为下一个无值的数组元素的下标,可以避免出现空指针异常)
// 并且增加信息时,保持信息的连续性
int n1 = 0;//有值的数组元素的个数
//为避免空指针异常的错误,则先找到有值的数组元素的个数
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
n1++;
}
}
//键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息
System.out.print("请输入学生学号:");
String no = scanner.next();//String类的对象用next()方法输入信息
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
if (stu.getNo().equals(no)) {
System.out.println("输入学生信息已经存在!");
return;
}
}
}
System.out.print("请输入学生姓名:");
String name = scanner.next();
System.out.print("请输入学生班级:");
String clazz = scanner.next();
System.out.print("请输入学生年龄:");
int age = scanner.nextInt();//int类的对象用nextInt()方法输入信息
System.out.print("请输入学生性别:");
String sex = scanner.next();
//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student student = new Student();
student.setNo(no);//将得到的学生学号放在tools类中student对象中做存储
student.setName(name); //将得到的学生姓名放在tools类中student对象中做存储
student.setClazz(clazz); //将得到的学生班级放在tools类中student对象中做存储
student.setAge(age); //将得到的学生年龄放在tools类中student对象中做存储
student.setSex(sex);//将得到的学生性别放在tools类中student对象中做存储
//将学生对象添加到集合中
students[n1] = student;
//每次操作之后索引默认+1
//index++;
//给出添加成功提示
System.out.println("恭喜你学生信息录入完成...");
}
//按学号排序
public void sortStudent() {
int n = 0;//有值的数组元素的个数
//为避免空指针异常的错误,则先找到有值的数组元素的个数
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
n++;
}
}
//添加新数据后,将赋值的数组元素按学号排序
Student t1;//转换元素
for (int j = 0; j < n-1; j++) {
for (int k = j + 1; k < n ; k++) {
//compareTo用于两个相同数据类型的比较,如果指定的数与参数相等返回0,如果指定的数小于参数返回 -1,如果指定的数大于参数返回 1
if (students[j].getNo().compareTo(students[k].getNo()) > 0) {
t1 = students[j];
students[j] = students[k];
students[k] = t1;
}
}
}
}
//打印学生信息
public void printStudent() {
//显示表头信息
//\t就是tab键的位置
System.out.println(" 学号\t\t姓名\t\t\t班级\t\t\t年龄\t\t性别");
//增强型for
for (Student student : students) {
//默认打印数组中所有学生信息,所以判断student是否有值
//如果没有值就不执行这个打印输出,如果有值则输出,防止出现空指针异常的错误
if (null != student) {
System.out.println(student.toString());//将学生信息输出
}
}
/*常用型for(可以获取索引)
for (int i=0;i<students.length;i++){
Student stu= students[i];
if (null!=stu){
System.out.println(stu.toString());//将学生信息输出
}
}
*/
}
//修改学生信息
public void updateStudent() {
//1.获取学生信息并且获得每条信息索引
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
System.out.println(stu.toString() + "所对应的索引位置是:" + i);//将学生信息输出
}
}
System.out.println("请输入要修改的数据的索引号:");
//2.选择要修改的信息(输入的是一个索引)
//这个索引对应需要修改的数据
int index_ = scanner.nextInt();
boolean m = true;//如果f为true,说明删除的信息不存在
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
//3.修改对应索引的学生信息
if (i == index_) {
//3.输入新的信息并且将新的信息对应放在这个索引的位置上
Student stu1 = students[index_];
//将得到的学生信息放在tools类中student对象中做存储
//对应索引的数组元素里边有数据,再输入数据可能导致数据的叠加
//先将对应索引的数组元素里边的数据清空一下
//再将修改的值放入对应索引的数组元素里
System.out.println("欢迎修改学生信息,请选择您的操作!");
B:
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.修改完成,退出修改");
System.out.print("请输入您的选择:");
switch (scanner.nextInt()) {
case 1:
System.out.println("执行修改学生学号... ...");
System.out.print("请修改学生学号:");
String no = scanner.next();//String类的对象用next()方法输入信息
stu1.setNo(null);
stu1.setNo(no);//将得到的学生学号放在tools类中student对象中做存储
break;
case 2:
System.out.println("执行修改学生姓名... ...");
System.out.print("请修改学生姓名:");
String name = scanner.next();
stu1.setName(null);
stu1.setName(name); //将得到的学生姓名放在tools类中student对象中做存储
break;
case 3:
System.out.println("执行修改学生班级... ...");
System.out.print("请修改学生班级:");
String clazz = scanner.next();
stu1.setClazz(null);
stu1.setClazz(clazz); //将得到的学生班级放在tools类中student对象中做存储
break;
case 4:
System.out.println("执行修改学生年龄... ...");
System.out.print("请修改学生年龄:");
int age = scanner.nextInt();//int类的对象用nextInt()方法输入信息
stu1.setAge(0);
stu1.setAge(age); //将得到的学生年龄放在tools类中student对象中做存储
break;
case 5:
System.out.println("执行修改学生性别... ...");
System.out.print("请修改学生性别:");
String sex = scanner.next();
stu1.setSex(null);
stu1.setSex(sex);//将得到的学生性别放在tools类中student对象中做存储
break;
case 6:
System.out.println("执行修改完成... ...");
break B;
}
}
System.out.println("修改信息完成... ...");
m = false;
}
}
}
if (m) {
System.out.println("修改信息不存在");//修改对应索引不存在,则输出"修改信息不存在"
}
}
//删除学生信息(清除当前索引位置数据)
public void deleteStudent() {
//1.获取学生信息并且获得每条信息索引
System.out.println(" 学号\t\t姓名\t\t\t班级\t\t\t年龄\t\t性别");
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
System.out.println(stu.toString() + "所对应的索引位置是:" + i);//将学生信息输出
}
}
int m = 0;//有值的数组元素的个数
//为避免空指针异常的错误,则先找到有值的数组元素的个数
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
m++;
}
}
System.out.print("请输入要删除的数据的索引号:");
//2.选择要删除的信息(输入的是一个索引)
Scanner scanner = new Scanner(System.in);
//这个索引对应需要删除的数据
int index_ = scanner.nextInt();
boolean f = true;//如果f为true,说明删除的信息不存在
for (int i = 0; i < students.length; i++) {
//Student stu = students[i];
if (null != students[i]) {
//3.删除对应索引的学生信息
if (i == index_) {
students[index_] = null;//直接清空当前索引的数据
f = false;
System.out.println("删除信息完成... ...");
}
}
}
//数组元素索引排序
//删除数据后,将有值的数组元素前移
int k;//后一个数组元素下标
Student t2;//转换元素
for (int j = index_; j < m-1; j++) {
k=j+1;
t2 = students[j];
students[j] = students[k];
students[k] = t2;
}
if (f) {
System.out.println("删除信息不存在");//删除对应索引不存在,则输出"删除信息不存在"
}
}
//查询学生信息
public void findStudent() {
System.out.println("欢迎查询学生信息,请选择您的操作!");
C:
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.查询某个学生的信息");
System.out.println("7.查询完成,退出查询");
System.out.print("请输入您的选择:");
switch (scanner.nextInt()) {
case 1:
boolean f1=true;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
f1=false;
System.out.print(stu.getNo() + " ");
}
}
System.out.println("");
if(f1){
System.out.println("暂无学生学号信息,请先录入学生信息再进行查询");
}
break;
case 2:
boolean f2=true;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
f2=false;
System.out.print(stu.getName() + " ");
}
}
System.out.println("");
if(f2){
System.out.println("暂无学生姓名信息,请先录入学生信息再进行查询");
}
break;
case 3:
boolean f3=true;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
f3=false;
System.out.print(stu.getClazz() + " ");
}
}
System.out.println("");
if(f3){
System.out.println("暂无学生班级信息,请先录入学生信息再进行查询");
}
break;
case 4:
boolean f4=true;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
f4=false;
System.out.print(stu.getAge() + " ");
}
}
System.out.println("");
if(f4){
System.out.println("暂无学生年龄信息,请先录入学生信息再进行查询");
}
break;
case 5:
boolean f5=true;
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if (null != stu) {
f5=false;
System.out.print(stu.getSex() + " ");
}
}
System.out.println("");
if(f5){
System.out.println("暂无学生性别信息,请先录入学生信息再进行查询");
}
break;
case 6:
boolean f6=true;
//1.输入要查询的学号(因为学号的唯一性,如果是学生的姓名可能重复,查询结果不准确)
System.out.print("请输入您要查询的学生的学号:");
String no = scanner.next();
//2.在数组中循环查找有这个名字的对象
//增强型for
Z:for (Student student : students) {
//默认打印数组中所有学生信息,所以判断student是否有值
//如果没有值就不执行这个打印输出,如果有值则输出,防止出现空指针异常的错误
if (null != student) {
if (student.getNo().equals(no)) {
System.out.println("恭喜你已经查找到对应的数据:");
System.out.println(" 学号\t\t姓名\t\t\t班级\t\t\t年龄\t\t性别");
System.out.println(student.toString());//将学生信息输出
f6=false;
break Z;
}
}
}
//3.判断有无并提示
if(f6){
System.out.println("对不起,没有找到您需要的数据。");
}
break;
case 7:
System.out.println("执行查询完成... ...");
break C;
}
}
System.out.println("查询信息完成... ...");
}
}