利用Java设计一个简单的控制台学生信息管理程序

此程序可作为课设的参考,其中信息存储于文件中。

创建了学生类Student,用于存储学号等的信息。创建StudentFunction类,用于实现诸如学生信息添加,学生信息修改(包含了带各种参数的修改方法),删除,显示成绩排行等功能。

把学生信息的实例放入集合list中实现操作。

创建FileFunction类,用于把list中的学生信息写入文件,每次打开时读取到list中。

每次输入一个“功能判断句”放入String型变量judge中,在主函数中判断用户输入了哪像功能以便执行相应的操作。

创建一个自定义异常类IdNotFoundException,用于当用户输入的学号信息与文件中存在的信息不符时进行后续处理。

学生类实现Comparable接口,并重写compareTo()函数实现排序功能。

全部代码如下:

import java.util.*;
import java.io.*;
public class helloworld {
public static void main(String arg[])
{
System.out.println("###################");
System.out.println("欢迎进入学生管理系统!");
File file=new File("D:\\student.txt");
if(!file.exists())
{
try
{
file.createNewFile();
}
catch(Exception e)
{
e.printStackTrace();
}
}
List list=new ArrayList();
StudentFunction studentfunction=new StudentFunction();
FileFunction filefunction=new FileFunction();
Scanner s=new Scanner(System.in);
String juge=" ";
System.out.println("--------------------");
try
{
if(filefunction.FileRead(file).isEmpty()==true)
{
System.out.println("学生信息为空!");
list=studentfunction.StudentAdd(list);
}
else
{
list=filefunction.FileRead(file);
}
}
catch(IOException e)
{
e.printStackTrace();
}
System.out.println("功能可输入:\n添加学生信息\n"+"按学号查询学生信息\n"+"显示当前所有学生信息\n查看所有学生成绩排名\n查看学习情况分段统计\n"+"按学号修改学生全部信息\n删除所有学生信息\n通过学号删除此学生信息\n通过学生名删除此学生信息\n退出系统");
while(true)
{
juge=s.nextLine();
if(juge.equals("添加学生信息"))
{
try
{
list=studentfunction.StudentAdd(list);
}
catch(Exception e)
{
e.printStackTrace();
}
}
if(juge.equals("显示当前所有学生信息"))
{
try
{
for(int i=0;i
{
System.out.print(list.get(i).id+" ");
System.out.print(list.get(i).name+" ");
System.out.print(list.get(i).Class+" ");
System.out.print(list.get(i).homeadd+" ");
System.out.print(list.get(i).home+" ");
System.out.print(list.get(i).grade+" ");
System.out.print(list.get(i).major+"\n");
}
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("删除所有学生信息"))
{
list=studentfunction.DeletAll(list);
file.delete();
System.out.println("所有学生信息已删除!");
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("通过学号删除此学生信息"))
{
list=studentfunction.DeletById(list);
System.out.println("操作成功!");
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("按学号查询学生信息"))
{
Student a=new Student();
System.out.println("输入要查询学生的学号");
a=studentfunction.IdGetStudentInfo(list);
if(a.Class.equals("0")==true)
{
System.out.println("系统中没有此学生信息!");
}
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("按学号修改学生全部信息"))
{
System.out.println("输入要修改学生的学号");
String id=s.nextLine();
list=studentfunction.StudentAllinfoChange(id, list);
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("查看学习情况分段统计"))
{
List list2=new ArrayList();
for(int i=0;i
{
Student student=new Student();
student.id=list.get(i).id;
student.Class=list.get(i).Class;
student.grade=list.get(i).grade;
student.home=list.get(i).home;
student.homeadd=list.get(i).homeadd;
student.name=list.get(i).name;
student.major=list.get(i).major;
list2.add(student);
}
Collections.sort(list2);
int section1=0;int section2=0;int section3=0;int section4=0;int section5=0;
for(int i=0;i
{
if(Integer.parseInt(list2.get(i).grade)>=90)
section1++;
if(Integer.parseInt(list2.get(i).grade)>=80&&Integer.parseInt(list2.get(i).grade)<90)
section2++;
if(Integer.parseInt(list2.get(i).grade)>=70&&Integer.parseInt(list2.get(i).grade)<80)
section3++;
if(Integer.parseInt(list2.get(i).grade)>=60&&Integer.parseInt(list2.get(i).grade)<70)
section4++;
if(Integer.parseInt(list2.get(i).grade)<60)
section5++;
}
System.out.println("90-100分段: "+section1+"人");
if(section1==0)
System.out.println("无");
for(int i=0;i
{
System.out.print("第"+(i+1)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("80-90分段: "+section2+"人");
if(section2==0)
System.out.println("无");
for(int i=section1;i
{
System.out.print("第"+(i+1-section1)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("70-80分段: "+section3+"人");
if(section3==0)
System.out.println("无");
for(int i=section1+section2;i
{
System.out.print("第"+(i+1-section1-section2)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("60-70分段: "+section4+"人");
if(section4==0)
System.out.println("无");
for(int i=section1+section2+section3;i
{
System.out.print("第"+(i+1-section1-section2-section3)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("0-60分段: "+section5+"人");
if(section5==0)
System.out.println("无");
for(int i=section1+section2+section3+section4;i
{
System.out.print("第"+(i+1-section1-section2-section3-section4)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("查看所有学生成绩排名"))
{
List list2=new ArrayList();
for(int i=0;i
{
Student student=new Student();
student.id=list.get(i).id;
student.Class=list.get(i).Class;
student.grade=list.get(i).grade;
student.home=list.get(i).home;
student.homeadd=list.get(i).homeadd;
student.name=list.get(i).name;
student.major=list.get(i).major;
list2.add(student);
}
Collections.sort(list2);
for(int i=0;i
{
System.out.print("第"+(i+1)+"名: ");
studentfunction.PrintSingleStudentInfo(list2, i);
}
System.out.println("--------------------");
System.out.println("按任意键继续...");
s.nextLine();
}
if(juge.equals("退出系统"))
{
s.close();
try {
filefunction.FileWrite(file, list);
}
catch(IOException e)
{
e.printStackTrace();
}
break;
}
System.out.println("##功能(输入#后的文字):\n#添加学生信息\n"+"#按学号查询学生信息\n"+"#显示当前所有学生信息\n#查看所有学生成绩排名\n#查看学习情况分段统计\n"+"#按学号修改学生全部信息\n#删除所有学生信息\n#通过学号删除此学生信息\n#通过学生名删除此学生信息\n");
}
}
}
class Student implements Comparable
{
String name;
String id;
String major;
String Class;
String homeadd;
String home;
String grade;
Student()
{
}
Student(String name,String id,String major,String Class,String homeadd,String home,String grade)
{
this.name=name;this.id=id;this.major=major;this.Class=Class;this.homeadd=homeadd;this.home=home;this.grade=grade;
}
public String GetGrade()
{
return grade;
}
public String Getid()
{
return id;
}
public String GetName()
{
return name;
}
public void ChangeId(String id)
{
this.id=id;
}
public void ChangeGrade(String grade)
{
this.grade=grade;
}
public int compareTo(Student student)
{
return (Integer.parseInt(student.grade)-Integer.parseInt(this.grade));
}
public String toString()
{
return(id+" "+name+" "+Class+" "+homeadd+" "+home+" "+grade+" "+major);
}
}
class StudentFunction
{
StudentFunction()
{
}
StudentFunction(List student)
{
}
public void ShowGradeRank()
{
}
public void ShowGradeLayout()
{
}
public List DeletAll(List list)
{
list.clear();
return list;
}
public List DeletById(List student)
{
String id2="";
Scanner s=new Scanner(System.in);
System.out.println("输入要删除学生的学号");
id2=s.nextLine();
int flag=0;
for(int i=0;i
{
if(student.get(i).id.equals(id2))
{
student.remove(i);
i--;
flag++;
}
}
if(flag==0)
{
try
{
throw new IdNotFoundException();
}
catch(IdNotFoundException e)
{
e.PrintInfo();
StudentFunction studentfunction=new StudentFunction();
student=studentfunction.DeletById(student);
}
}
return student;
}
public void DeletByName(String name,List student)
{
for(int i=0;i
{
if(student.get(i).name.equals(name))
{
student.remove(i);
i--;
}
}
}
public Student IdGetStudentInfo(List student)
{
Scanner s=new Scanner(System.in);
String id="";
id=s.nextLine();
Student a=new Student();
a.Class="0";
int flag=0;
for(int i=0;i
{
if(student.get(i).id.equals(id))
{
a=student.get(i);
System.out.println(a.id+" "+a.name+" "+a.Class+" "+a.homeadd+" "+a.home+" "+a.grade+" "+a.major);
flag++;
}
}
if(flag==0)
{
try
{
throw new IdNotFoundException();
}
catch(IdNotFoundException e)
{
e.PrintInfo();
}
}
return a;
}
public List StudentNameChange(String name,String newname,List student)
{
for(int i=0;i
{
if(student.get(i).name==name)
{
student.get(i).name=newname;
}
}
return student;
}
public void StudentIdChange(String id,String newid,List student)
{
for(int i=0;i
{
if(student.get(i).id==id)
{
student.get(i).id=newid;
}
}
}
public void StudentGradeChange(String grade,String newgrade,List student)
{
for(int i=0;i
{
if(student.get(i).grade==grade)
{
student.get(i).grade=newgrade;
}
}
}
public List StudentAllinfoChange(String id,List list)
{
Scanner s=new Scanner(System.in);
int flag=0;
for(int i=0;i
{
if(list.get(i).id.equals(id))
{
flag++;
System.out.println("输入新学号");
list.get(i).id=s.nextLine();
System.out.println("输入新姓名");
list.get(i).name=s.nextLine();
System.out.println("输入新班级");
list.get(i).Class=s.nextLine();
System.out.println("输入新住址");
list.get(i).homeadd=s.nextLine();
System.out.println("输入新籍贯");
list.get(i).home=s.nextLine();
System.out.println("输入新成绩");
list.get(i).grade=s.nextLine();
System.out.println("输入新专业");
list.get(i).major=s.nextLine();
}
}
if(flag==0)
{
try
{
throw new IdNotFoundException();
}
catch(IdNotFoundException e)
{
e.PrintInfo();
}
}
else
{
System.out.println("修改成功");
}
return list;
}
public List StudentAdd(List list)
{
System.out.println("请输入学生信息");
Scanner s=new Scanner(System.in);
Student a=new Student();
String juge="";
System.out.println("学号");
a.id=s.nextLine();
System.out.println("姓名");
a.name=s.nextLine();
System.out.println("班 级");
a.Class=s.nextLine();
System.out.println("住址");
a.homeadd=s.nextLine();
System.out.println("籍贯");
a.home=s.nextLine();
System.out.println("成绩");
a.grade=s.nextLine();
System.out.println("专业");
a.major=s.nextLine();
list.add(a);
for(;;)
{
System.out.println("继续添加学生信息? Y/N");
juge=s.nextLine();
if(juge.equals("Y"))
{
list=StudentAdd(list);
}
if(juge.equals("N"))
{
System.out.println("操作成功");
break;
}
}
return list;
}
public void PrintSingleStudentInfo(List list2,int i)
{
System.out.print(list2.get(i).id+" ");
System.out.print(list2.get(i).name+" ");
System.out.print(list2.get(i).Class+" ");
System.out.print(list2.get(i).homeadd+" ");
System.out.print(list2.get(i).home+" ");
System.out.print(list2.get(i).grade+" ");
System.out.print(list2.get(i).major+"\n");
}
}
class FileFunction
{
public void FileWrite(File file,List student) throws IOException
{
FileWriter fw=new FileWriter(file);
BufferedWriter bw=new BufferedWriter(fw);
for(int i=0;i
{
bw.write(student.get(i).id+",");
bw.write(student.get(i).name+",");
bw.write(student.get(i).Class+",");
bw.write(student.get(i).homeadd+",");
bw.write(student.get(i).home+",");
bw.write(student.get(i).grade+",");
bw.write(student.get(i).major);
bw.write("\n");
}
bw.close();
fw.close();
}
public List FileRead(File file) throws IOException
{
List list=new ArrayList();
FileInputStream fips=new FileInputStream(file);
InputStreamReader ipsr=new InputStreamReader(fips);
BufferedReader br=new BufferedReader(ipsr);
String tempall;
String temp[];
int i=0;
while((tempall=br.readLine())!=null)
{
Student student=new Student();
temp=tempall.split(",");
student.id=temp[0];
student.name=temp[1];
student.Class=temp[2];
student.homeadd=temp[3];
student.home=temp[4];
student.grade=temp[5];
student.major=temp[6];
list.add(i,student);
i++;
}
br.close();
ipsr.close();
return list;
}
}
class IdNotFoundException extends Exception
{
private static final long serialVersionUID = 1L;
IdNotFoundException()
{
super("未找到此学号的学生");
}
public void PrintInfo()
{
System.out.println("未找到此学号的学生");
}
}
部分运行效果如下:
###################
欢迎进入学生管理系统!
--------------------
功能可输入:
添加学生信息
按学号查询学生信息
显示当前所有学生信息
查看所有学生成绩排名
查看学习情况分段统计
按学号修改学生全部信息
删除所有学生信息
通过学号删除此学生信息
通过学生名删除此学生信息
退出系统
显示当前所有学生信息
2 spider 1702 meiguo henan 90 cs
3 chaoji wudi beijing china 90 cs
4 haha hhu hhhh dddd 90 cd
1 lihaiwa 1702 beijing liaoning 100 cs
5 waaau 1702 beijing liaoning 65 cs
6 hahaha 1702 wahahagongsi beijing 72 cs
7 lailailai 1702 meiguo Shengdiyage 80 buzhidao
8 诸葛大力 不知道 爱情公寓 不知道 100 不知道
9 张伟 602 爱情公寓 不知道 73 律师
--------------------

按任意键继续...

##功能(输入#后的文字):

#添加学生信息

#按学号查询学生信息

#显示当前所有学生信息

#查看所有学生成绩排名

#查看学习情况分段统计

#按学号修改学生全部信息

#删除所有学生信息

#通过学号删除此学生信息

#通过学生名删除此学生信息

查看学习情况分段统计

90-100分段: 5人

第1名: 1 lihaiwa 1702 beijing liaoning 100 cs

第2名: 8 诸葛大力 不知道 爱情公寓 不知道 100 不知道

第3名: 2 spider 1702 meiguo henan 90 cs

第4名: 3 chaoji wudi beijing china 90 cs

第5名: 4 haha hhu hhhh dddd 90 cd

80-90分段: 1人

第1名: 7 lailailai 1702 meiguo Shengdiyage 80 buzhidao

70-80分段: 2人

第1名: 9 张伟 602 爱情公寓 不知道 73 律师

第2名: 6 hahaha 1702 wahahagongsi beijing 72 cs

60-70分段: 1人

第1名: 5 waaau 1702 beijing liaoning 65 cs

0-60分段: 0人

--------------------

按任意键继续...

##功能(输入#后的文字):

#添加学生信息

#按学号查询学生信息

#显示当前所有学生信息

#查看所有学生成绩排名

#查看学习情况分段统计

#按学号修改学生全部信息

#删除所有学生信息

#通过学号删除此学生信息

#通过学生名删除此学生信息

按学号查询学生信息

输入要查询学生的学号

10

未找到此学号的学生

系统中没有此学生信息!

--------------------

按任意键继续...

##功能(输入#后的文字):

#添加学生信息

#按学号查询学生信息

#显示当前所有学生信息

#查看所有学生成绩排名

#查看学习情况分段统计

#按学号修改学生全部信息

#删除所有学生信息

#通过学号删除此学生信息

#通过学生名删除此学生信息

添加学生信息

请输入学生信息

学号

10

姓名

懵懂的我

班 级

一个班

住址

一个神奇的地方

籍贯

一个叫家乡的地方

成绩

75

专业

入学即失业

继续添加学生信息? Y/N

N

操作成功

##功能(输入#后的文字):

#添加学生信息

#按学号查询学生信息

#显示当前所有学生信息

#查看所有学生成绩排名

#查看学习情况分段统计

#按学号修改学生全部信息

#删除所有学生信息

#通过学号删除此学生信息

#通过学生名删除此学生信息

查看所有学生成绩排名

第1名: 1 lihaiwa 1702 beijing liaoning 100 cs

第2名: 8 诸葛大力 不知道 爱情公寓 不知道 100 不知道

第3名: 2 spider 1702 meiguo henan 90 cs

第4名: 3 chaoji wudi beijing china 90 cs

第5名: 4 haha hhu hhhh dddd 90 cd

第6名: 7 lailailai 1702 meiguo Shengdiyage 80 buzhidao

第7名: 10 懵懂的我 一个班 一个神奇的地方 一个叫家乡的地方 75 入学即失业

第8名: 9 张伟 602 爱情公寓 不知道 73 律师

第9名: 6 hahaha 1702 wahahagongsi beijing 72 cs

第10名: 5 waaau 1702 beijing liaoning 65 cs

--------------------

按任意键继续...