java小学期实验报告_大一java小学期作业学生管理信息系统

这个Java程序实现了学生管理信息系统的功能,包括读取、转换、存储学生数据,进行成绩统计、排名和查询等操作。用户可以进行基本信息查看、信息修改、总分排名打印、单科数据查看、按总分排名查询以及打印成绩报表等。
摘要由CSDN通过智能技术生成

package summerPractice;

import java.util.NoSuchElementException;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Arrays;

import java.util.Iterator;

import java.util.Scanner;

public class Home {

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

Scanner input=new Scanner(System.in);

//实验文档数据转换

/**PrintWriter outputTest=new PrintWriter("data/outputTest.txt");

Scanner outputRu=new Scanner(new File("data/output.txt"));int line=0;

while(outputRu.hasNextLine()){

String s=outputRu.nextLine();

outputTest.println(s);line++;

}outputTest.close();outputRu.close();

System.out.println(line);

*/

//确定学生人数

//out1和out2为操作是的试验文本

System.out.println("先将信息按:学号+名字+性别+高数+马列+C语言+计技基础的格式输入到data/output.txt文档中;输入out 退出,输入任意字符进入系统。");String enter=input.next();

//判断是否进入系统

while(!enter.equals("out")){

CopyRight.CopyRight(1);//版权书写

int studentNum=0;Scanner outS=new Scanner(new File("data/output.txt"));

PrintWriter out1=new PrintWriter(new File("data/out1.txt"));PrintWriter out2=new PrintWriter(new File("data/out2.txt"));

while(outS.hasNext()){

for(int i=0;i<3;i++){if(i!=2)out1.print(outS.next()+"  "); else out1.println(outS.next());}

for(int i=0;i<5;i++){if(i!=4)out2.print(outS.nextInt()+"  "); else out2.println(outS.nextInt());}

studentNum++;

}outS.close();out1.close();out2.close();

//System.out.println(studentNum);//检验学生人数

//将原始数据信息和分数分别复制到student.txt和scores.txt文档中

PrintWriter studentData=new PrintWriter(new File("data/student.txt"));

PrintWriter scoresData=new PrintWriter(new File("data/student1.txt"));

Scanner dataSource=new Scanner (new File("data/output.txt"));

while(dataSource.hasNext()){

for(int n=0;n<3;n++){if(n!=2)studentData.print(dataSource.next()+"    ");else studentData.println(dataSource.next());}

for(int n=0;n<5;n++){if(n!=4)scoresData.print(dataSource.nextInt()+"    ");else scoresData.println(dataSource.next());}

}studentData.close();scoresData.close();scoresData.close();

String[][] student=new String[studentNum][3];String[][] student1=new String[studentNum][3];

int[][] scores=new int[studentNum][5];

Scanner source=new Scanner(new File("data/student.txt"));

Scanner source1=new Scanner(new File("data/student1.txt"));

//基本信息二维数组student;

for(int i=0;i

int n=0;while(source.hasNext()&&n<=2){

student [i][n]=source.next();String s=student[i][n];student1[i][n]=s;//student1为原始基本信息数组

n++;

}

}source.close();

//成绩二维数组scores;一行为个人高数。英语。马列,C语言,计技基础的成绩

for(int i=0;i

int n=0;while(source1.hasNext()&&n<=4){

scores [i][n]=source1.nextInt();n++;

}

}source1.close();

//个人各科分数求和,输入列,存入Sum数组中

double[] Sum=new double[studentNum];

for(int i=0;i

double sum=0;for(int n=0;n<5;n++){

sum=sum+scores [i][n];

}Sum[i]=sum;

}

//实现总分排名输出和排名检索: 将数组按总分排名写出

for(int i=0;i

String[] turn1=new String[3];int[] turn2=new int[5];

double max=Sum[i];for(int n=i+1;n

if(Sum[n]>max){

max=Sum[n];Sum[n]=Sum[i];Sum[i]=max;//总分替换

turn1=student[i];student[i]=student[n];student[n]=turn1;//替换基本信息

turn2=scores[i];scores[i]=scores[n];scores[n]=turn2;//替换各科分数数组

}

}

}//for(int i=0;i<10;i++){System.out.println(Sum[i]+student[i][1]);}总分打印检验,数组已经是按总分排名

System.out.println("共:"+studentNum+"名学生"+"输入操作类型case:(0:基本信息;1:修改信息;2:总分排名打印;3:单科数据;4:总分排名查询;5:基本信息查询;6:打印成绩报表)");

int type=input.nextInt();

switch(type){

//显示学生基本信息

case 0:

for(int i=0;i

System.out.println(Arrays.toString(student1[i]));

}break;

case 1:

//修改信息

System.out.println("信息修改,输入1增加个人数据,输入2删除个人数据,输入3更改已有人员信息:");

int update=input.nextInt();PrintWriter output = new PrintWriter(new FileWriter("data/output.txt", true));

PrintWriter outputData = new PrintWriter(new FileWriter("data/testData.txt", true));

//增加档案

if(update==1){

System.out.println("请输入增加人:");

int i=input.nextInt();System.out.println("输入学号+姓名+性别+高数+英语+马列+c语言+计技基础:");

for(int t=0;t

for(int n=0;n<3;n++){String s=input.next();output.print(s+"  ");}

for(int n=0;n<5;n++){int num=input.nextInt();if(n!=4)output.print(num+ "  ");else output.println(num);}

}

output.close();outputData.close();System.out.println("操作成功,数据保存在data/output.txt文档中");

}

//删除档案

else if(update==2){

System.out.println("输入个人信息:学号或姓名:");java.io.File file=new java.io.File("data/output.txt");

String s=input.next();int count=-1;

for(int i=0;i

if(s.equals(student[i][0])||s.equals(student[i][1])){

count=i;

}

}

if(count>=0){System.out.println("即将删除的信息为:"+Arrays.toString(student[count])+" "+Arrays.toString(scores[count])+"输入yes删除,输入其他则取消:");

String yes=input.next();

if(yes.equals("yes")){DelectAims.delectAims(file, s);

Scanner delSource=new Scanner (new File("data/delMid.txt"));PrintWriter delRusult=new PrintWriter(new File("data/output.txt"));

while(delSource.hasNextLine()){

delRusult.println(delSource.nextLine());

}delSource.close();delRusult.close();System.out.println("操作成功,数据保存在原文档data/output.txt中");

}

else System.out.println("取消删除成功!");

}

else System.out.println("没有该学生信息,请重新操作。");

}

//修改个人信息

else {

System.out.println("输入名字和修改科目(1-5):高数1;英语2;马列3;c语言;计技基础5和新的分数");String name=input.next();int subject=input.nextInt();int num=input.nextInt();

for(int i=0;i

if(student[i][1].equals(name)||student[i][0].equals(name)){

System.out.println();scores[i][subject-1]=num;System.out.println(scores[i][subject-1]);

}

}

PrintWriter editMid=new PrintWriter(new File("data/editMid.txt"));

for(int i=0;i

for(int n=0;n<3;n++){editMid.print(student[i][n]+" ");}//打印到文档

for(int n=0;n<5;n++){if(n!=4)editMid.print(scores[i][n]+" ");else editMid.println(scores[i][n]);}

}editMid.close();//需要确定文档名

Scanner editSource=new Scanner(new File("data/editMid.txt"));PrintWriter editResult=new PrintWriter(new File("data/output.txt"));

while(editSource.hasNextLine()){

editResult.println(editSource.nextLine());

}editSource.close();editResult.close();

System.out.println("操作成功,数据保存在data/output.txt文档中");

System.out.println(Arrays.toString(student[1])+" "+Arrays.toString(scores[1]));

}

break;

case 2:

//总分统计

java.io.PrintWriter sumData=new java.io.PrintWriter("data/总分统计.txt");

for(int i=0;i

sumData.print(Arrays.toString(student[i]));sumData.println(Sum[i]);

}sumData.close();System.out.println("数据保存于data/总分统计.txt文档中");

break;

case 3:

//单科最高分和最低分:保存到SumSingle数组中。平均分保存到SingleAverage数组中

double[] maxSingle=new double[5];double[] SingleAverage=new double[5];double[] minSingle=new double[5];

double sum1=0;double sum2=0;double sum3=0;double sum4=0;double sum5=0;double max=0;double min=0;

//单科平均分

for(int i=0;i

sum1+=scores[i][0];sum2+=scores[i][1];sum3+=scores[i][2];sum4+=scores[i][3];sum5+=scores[i][4];

}

SingleAverage[0]=(sum1*1.0)/studentNum;SingleAverage[1]=((sum2)*1.0)/studentNum;SingleAverage[2]=(sum3*1.0)/studentNum;

SingleAverage[3]=(sum4*1.0)/studentNum;SingleAverage[4]=(sum5*1.0)/studentNum;

//单科最高分和最低分

for(int n=0;n<5;n++){

max=scores[0][n];min=scores[0][n];

for(int i=1;i

if(scores[i][n]>max) max=scores[i][n];

else if(scores[i][n]

}

maxSingle[n]=max;minSingle[n]=min;

}

PrintWriter singleData=new PrintWriter("data/各科目数据.txt");//输出到文档

singleData.println("data    高数    英语      马列    c语言  计技基础");

singleData.print("最高分:  ");for(int i=0;i<5;i++){if(i!=4)singleData.print(maxSingle[i]+"    ");else singleData.println(maxSingle[i]);}

singleData.print("最低分:  ");for(int i=0;i<5;i++){if(i!=4)singleData.print(minSingle[i]+"    ");else singleData.println(minSingle[i]);}

singleData.print("平均分:  ");for(int i=0;i<5;i++){if(i!=4)singleData.print(SingleAverage[i]+"    ");else singleData.println(SingleAverage[i]);}

singleData.close();

System.out.println("操作成功:显示为单科最高分,最低分和平均分(数据保存在data/各科目数据.txt中)");

System.out.println("最高分:"+Arrays.toString(maxSingle)+"最低分:"+Arrays.toString(minSingle)+"平局分:"+Arrays.toString(SingleAverage));//打印检验

break;

case 4:

//按总分排名查询

System.out.println("输入总分名次:");int degree=input.nextInt();

System.out.println("第"+(degree)+"名:"+Arrays.toString(student[degree-1])+Sum[degree-1]);//排名检索实现

break;

case 5:

//按信息查询结果

System.out.println("请输入要查询的基本信息:名字,学号,性别");String s=input.next();

for(int i=0;i

for(int n=0;n<3;n++){

if(s.equals(student[i][n])){

System.out.println("该人信息为:"+Arrays.toString(student[i])+" 高数:"+scores[i][0]+" 英语:"+scores[i][1]+" 马列:"+scores[i][2]

+" c语言:"+scores[i][3]+" 计技基础:"+scores[i][4]+"总分:"+Sum[i]+"总分第"+(i+1)+"名");

}

}

}break;

case 6:

//打印成绩报表

PrintWriter form=new PrintWriter("data/成绩报表.txt");form.println("                班级成绩报表                         ");

form.println("学号        姓名    高数    英语   马列  c语言 计技基础  总分  ");

for(int i=0;i

for(int n=0;n<2;n++){form.print(student[i][n]+"     ");}

for(int n=0;n<5;n++){form.print(scores[i][n]+"     ");}

form.println(" "+Sum[i]);

}form.close();

System.out.println("操作成功,数据保存在data/成绩报表.txt中");

break;

default://输入无效是报错。

System.out.println("输入无效!\n系统自动退出");

break;

}

System.out.println("继续输入任意数字,退出输入out");

enter=input.next();

}

System.out.println("已经安全退出系统!");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值