终于完结撒花,用数组写出学生排名的代码也成功做出来了(主要是要定义一个局部变量,而不是在方法全局定义一个变量的问题),完成了学生管理系统的四个功能结束了,以及非常感谢我的朋友的帮助(关键性的突破都是,ID:weixin_52939031)
然后还多增加了最后一个选项,以便于看清楚文档里面存下的内容:
package Day3;
import Day1.dish;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Stusystem {
static List<Stu> arrayList = new ArrayList<>(); //存放某个学生的数据
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
System.out.println("-----欢迎使用学生管理系统-----");
menue();
while(true)
{
System.out.println("请输入你要选择的项目:");
int num=s.nextInt();
switch (num){
case 1:
WriteIn();
break;
case 2:
ReadOut();
break;
case 3:
alist();
break;
case 4:
nums();
break;
case 5:
all();
case 6:
System.out.println("感谢使用学生管理系统");
return ;
}
}
}
//创建一个菜单函数
public static void menue(){
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.退出系统-------------");
}
//创建一个写入函数
public static void WriteIn() {
Stu student = new Stu();
Scanner s = new Scanner(System.in);
File file = new File("student.txt");
BufferedWriter bw = null;
int i=0;
try {
bw = new BufferedWriter(new FileWriter(file));
bw.write("学号\t姓名\tja\tpy\tc\t总分");
bw.newLine();
while (true) {
System.out.println("请输入学生id");
int id = s.nextInt();
student.id = id;
System.out.println("请输入学生姓名");
String name = s.next();
student.name = name;
System.out.println("请输入学生的java成绩");
int java = s.nextInt();
student.java = java;
System.out.println("请输入学生的python成绩");
int python = s.nextInt();
student.python = python;
System.out.println("请输入学生的c语言成绩");
int c = s.nextInt();
student.c = c;
float sum = (java + python + c) / 3;
student.sum=sum;
bw.write(student.id + "\t");
bw.write(student.name + "\t");
bw.write(student.java + "\t");
bw.write(student.python + "\t");
bw.write(student.c + "\t");
bw.write(student.sum+ "\t");
bw.flush();
bw.newLine();
System.out.println("是否继续录入信息,0");
int answer=s.nextInt();
if(answer==0)
break;}
} catch (IOException e) {
e.printStackTrace();
}//扑获异常
finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//查找学生的成绩
public static void ReadOut() {
Scanner s=new Scanner(System.in);
System.out.println("请输入要查询的学生姓名");
String name=s.next();
BufferedReader br=null;
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
String temp;
while((temp= br.readLine())!=null){
String a[]=temp.split("\t");
if(a[1].equals(name)){
System.out.println("您的信息已经找到:");
System.out.println(temp);
}
}
//
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void nums(){
int nums=0;
BufferedReader br=null;
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
String temp;
int count = 0;
while((temp= br.readLine())!=null){
count+=1;
}
System.out.println("总共文档里面有"+(count-1)+"个学生");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//输出输入进的信息
public static void all(){
String temp;
BufferedReader br=null;
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
while((temp= br.readLine())!=null){
System.out.println(temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//输出学生成绩排名
public static void alist(){
BufferedReader br=null;
String temp;
Stu change= new Stu();
Stu [] ap=new Stu[1000];
int i=0,j=0;
System.out.println("学生成绩排名");
System.out.println("排名\t\t姓名\tja\tpy\tc\t");
int len=1;
for(i=0;i<1000;i++)
{
ap[i]=new Stu();
}
i=0;
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
while((temp= br.readLine())!=null){
String a[]=temp.split("\t");
if(i==0)
{
i=1;
continue;
}
Stu student = new Stu();
student.id= Integer.parseInt(a[0].trim());
student.name=a[1];
student.java= Integer.parseInt(a[2].trim());
student.python=Integer.parseInt(a[3].trim());
student.c=Integer.parseInt(a[4].trim());
student.sum=Double.parseDouble(a[5].trim());
ap[i++]=student;
len++;
}
for(i=1;i<len;i++)
{
for(j=i;j<len;j++)
{
if(ap[i].sum<ap[j].sum)
{
change=ap[i];
ap[i]=ap[j];
ap[j]=change;
}
}
}
for(i=1;i<len;i++)
{
System.out.println("第"+(i)+"名"+"\t"+ap[i].name+"\t"+ap[i].java+"\t"+ap[i].python+"\t"+ap[i].c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}}
public static void list(){
BufferedReader br=null;
String temp;
int i=0;
System.out.println("学生成绩排名");
try {
br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
while((temp= br.readLine())!=null){
String a[]=temp.split("\t");
if(i==0)
{
i++;
continue;
}
// 保存一个学生的数据
Stu stu = new Stu(Integer.parseInt(a[0].trim()), a[1], Integer.parseInt(a[2].trim()),
Integer.parseInt(a[3].trim()), Integer.parseInt(a[4].trim()), Double.parseDouble(a[5].trim()));
arrayList.add(stu); //添加到集合中
}
Collections.sort(arrayList); //排序
i=0;
System.out.println("排名\t\t学号\t姓名\tja\tpy\tc\t总分");
// 遍历输出有序集合
for (Stu stu : arrayList) {
i++;
System.out.println("第"+i+"名"+"\t"+stu.id + "\t" + stu.name + "\t" + stu.java + "\t" + stu.python + "\t" + stu.c + "\t" + stu.sum);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//对象
package Day3;
public class Stu implements Comparable<Stu>{
//创建一个学生的类
int id;
String name;
int java;
int python;
int c;
double sum;
//构造器
public Stu(int id, String name, int java, int python, int c, double sum) {
this.id = id;
this.name = name;
this.java = java;
this.python = python;
this.c = c;
this.sum = sum;
}
public Stu() {
}
// 按学生的总成绩降序排序 重写sort方法
public int compareTo(Stu student) {
return (int)( student.sum - this.sum);
}
}
?
?
最后其实这个系统还是有很多我没做到的功能以及我的系统里面出现的问题(例如每次写文档都是新的开始,不能保存以前的旧数据)。但还是先告一段落,后面再继续巩固基础回头再做完善一点吧。
?
|