要求如下:
根据要求建立工程目录结构如下(在IDEA下进行开发):
代码如下:
package cn.edu.swufe.students;
import javax.jws.Oneway;
import java.io.*;
import java.util.Scanner;
class StudentManager {
/**
* addAStudent()静态方法向文件中增加一条记录
*/
static void addAStudent(int xh, Scanner scanner) {
System.out.println("请输入年级:");
int nj = scanner.nextInt();
System.out.println("请输入数学成绩:");
int sx = scanner.nextInt();
System.out.println("请输入计算机成绩:");
int jsj = scanner.nextInt();
System.out.println("请输入姓名:");
String xm = scanner.next();
System.out.println("请输入学院:");
String xy = scanner.next();
//将学生信息写入文件
String fileName = "user.txt";
String record = xh + "," + nj + "," + sx + "," + jsj + "," + xm + "," + xy;
try {
FileWriter fileWriter = new FileWriter(fileName, true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.newLine();
bufferedWriter.write(record);
bufferedWriter.close();
} catch (IOException e) {
System.out.println("写入文件时发生错误:" + e.getMessage());
}
}
/**
* deleteAStudent()静态方法用于删除学生信息
*/
static void deleteAStudent(int is_exist_in) {
String fileName = "user.txt";
int lineNumber = is_exist_in;
String line = null;
String[] lineArray = null;
StringBuilder stringBuilder = new StringBuilder();
try {
RandomAccessFile randomAccessFile = new RandomAccessFile(fileName, "rw");
for (int i = 0; i < lineNumber; i++) {
line = randomAccessFile.readLine();
}
lineArray = line.split(",");
for (int i = 0;i < lineArray.length;i++) {
for (int j=0;j<lineArray[i].length();j++){
stringBuilder.append(" ");
}
}
for (int i=0;i<5;i++) {
stringBuilder.append(" ");
}
randomAccessFile.seek(randomAccessFile.getFilePointer()-line.length()-2);
randomAccessFile.writeBytes(String.valueOf(stringBuilder));
randomAccessFile.close();
} catch (IOException e) {
System.out.println("删除文件时出现错误:" + e.getMessage());
}
}
/**
* changeAStudent()静态方法用于修改学生信息
*/
static void changeAStudent(int is_exist_in, int xh, Scanner scanner) {
deleteAStudent(is_exist_in);
addAStudent(xh, scanner);
}
/**
* showAllStudents()静态方法用于显示所有学生信息
*/
static void showAllStudents() {
String fileName = "user.txt";
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String[] lineArray = null;
double average = 0;
String line = null;
while ((line = bufferedReader.readLine()) != null) {
if (!line.trim().isEmpty()) {
lineArray = line.split(",");
average = (Integer.parseInt(lineArray[2]) + Integer.parseInt(lineArray[3])) / 2.0;
System.out.println(line.trim() + " 平均成绩为 " + average);
}
}
bufferedReader.close();
} catch (IOException e) {
System.out.println("读取文件时发生错误:" + e.getMessage());
}
System.out.println("输出完成!");
}
/**
* studentExist()方法用于判断学生是否存在
*/
static int studentExist(int xh) {
int is_exist_in = 0;
String fileName = "user.txt";
int lineNumber = 0;
try {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String[] lineArray = null; //将每一行以逗号分隔成字符串数组赋值给lineArray
String line = null;
while ((line = bufferedReader.readLine()) != null) {
lineNumber++;
lineArray = line.split(",");
if (lineArray[0].equals(Integer.toString(xh))) {
is_exist_in = lineNumber;
break;
}
}
bufferedReader.close();
} catch (IOException e) {
System.out.println("读取文件时发生错误:" + e.getMessage());
}
return is_exist_in;
}
}
public class Main {
/**
* prompt()静态方法用于提示用户,向用户介绍功能
*/
static void prompt() {
System.out.println("欢迎使用学生信息管理系统!");
System.out.println("按1新增学生信息");
System.out.println("按2修改学生信息");
System.out.println("按3删除学生信息");
System.out.println("按4显示所有学生信息");
System.out.println("按5退出系统");
}
public static void main(String[] args) {
//定义通用变量
int xh = 0;
int is_exist_in = 0;
//输出提示词
prompt();
//与用户的交互循环
while (true) {
Scanner scanner = new Scanner(System.in);
int item = scanner.nextInt();
if (item == 5) {
System.out.println("退出成功!");
break;
}
switch (item) {
case 1:
System.out.println("请指定要新增学生的学号:");
xh = scanner.nextInt();
is_exist_in = StudentManager.studentExist(xh);
if (is_exist_in == 0) {
StudentManager.addAStudent(xh, scanner);
System.out.println("新增成功!");
} else {
System.out.println("该学生已经存在!");
}
break;
case 2:
System.out.println("请指定要修改学生的学号:");
xh = scanner.nextInt();
is_exist_in = StudentManager.studentExist(xh);
if (is_exist_in == 0) {
System.out.println("该学生不存在!");
} else {
StudentManager.changeAStudent(is_exist_in, xh, scanner);
System.out.println("修改成功!");
}
break;
case 3:
System.out.println("请指定要删除学生的学号:");
xh = scanner.nextInt();
is_exist_in = StudentManager.studentExist(xh);
if (is_exist_in == 0) {
System.out.println("该学生不存在!");
} else {
StudentManager.deleteAStudent(is_exist_in);
System.out.println("删除成功!");
}
break;
case 4:
StudentManager.showAllStudents();
break;
default:
System.out.println("请输入正确的命令");
System.out.println();
}
}
}
}
以上.