A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.学生类的建立
public class Student {
//学生属性的私有封装
        private String id;
        private String name;
        private int age;
//学生类空参构造
        public Student() {
//对父类进行空参初始化
                super();
                // TODO Auto-generated constructor stub
        }
        public Student(String id, String name, int age) {
//对父类进行空参初始化
                super();
                this.id = id;
                this.name = name;
                this.age = age;
        }
// 可以通过外部访问学生类私有的属性方法
        public String getId() {
                return id;
        }
        public void setId(String id) {
                this.id = id;
        }
        public String getName() {
                return name;
        }
// 可以通过外部更改学生类私有的属性方法
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
2.主函数的建立
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
//带主方法的测试类
public class IOStudentSystem {
        public static void main(String[] args) throws IOException {
// 学生管理系统界面的创建
                System.out.println("--------欢迎来到学生管理系统-----------");
                System.out.println("1 显示所有学生信息:");
                System.out.println("2 添加学生的信息:");
                System.out.println("3 删除学生信息:");
                System.out.println("4 修改学生信息:");
                System.out.println("5 退出:");
// 新建键盘输入对象
                Scanner input = new Scanner(System.in);
// 新建用于存储txt文档读入信息的集合对象
                ArrayList<Student> list = new ArrayList<Student>();
                read(list);// 讲txt内信息读入集合的方法
// 利用while循环多次运行系统
                while(true) {
                        System.out.println("请选择需要的进程:");
                        int key = input.nextInt();
//根据输入的选项用switch语句进行相关程序的跳转
                        switch(key) {
                                case 1:show(list);// 显示集合内的信息的方法即学生系统的内容
                                break;
                                case 2:{
                                        addStudent(list);//添加学生信息方法
                                        write(list);//将更改后的集合写入txt文档
                                }
                                break;
                                case 3:{
                                        delStudent(list);//删除学生信息方法
                                        write(list);//将更改后的集合写入txt文档
                                }
                                break;
                                case 4:{
                                        modifyStudent(list);//修改学生信息
                                        write(list);//将更改后的集合写入txt文档
                                }
                                break;
                                case 5:
                                default :{
                                        System.out.println("退出");
                                        System.exit(0);
                                }
                                break;
                        }
                }
        }
//实现主函数上的方法
3.集合与txt文件的读写方法
3.1.txt文件数据读入集合
public static void read (ArrayList<Student> list) throws IOException {
//创建缓冲流输入对象
                BufferedReader br = new BufferedReader(new FileReader("studentfile.txt"));               
String str;//创建字符串变量用于在下面while语句临时存储txt每行读入的字符串
//利用while语句将txt文件每行字符串依次存入临时变量str,利用str作为临时媒介讲每行信息存入集合中
                while((str = br.readLine()) != null) {
//利用String类中的split方法提取学生属性信息
                        String[] strlist = str.split(",");
//将字符串转化为数字(也可以用Integer 类中的 intValue()方法对字符串类数字向int类转换目前方  法由自己编写)
                        int age = StringToNum(strlist[2]);
将集合每个Student类数据对Student类对象进行初始化;
                        Student stu = new Student(strlist[0],strlist[1],age);
//将初始化的对象放入集合中
                        list.add(stu);
                }
                br.close();
        }
3.2.集合数据写入txt文件
public static void write (ArrayList<Student> list) throws IOException {
//创建缓冲流输出对象
                BufferedWriter bw = new BufferedWriter(new FileWriter("studentfile.txt"));
//利用for循环将集合内数据写到txt文件中
                for(int i = 0; i < list.size(); i++) {
                        bw.write(list.get(i).getId()+","+list.get(i).getName()+","+list.get(i).getAge());
                        bw.newLine();
                }
                bw.flush();
                bw.close();
        }
4.学生管理系统的增删改方法
4.1.增
public static void  addStudent(ArrayList<Student> list) {
                Scanner input = new Scanner(System.in);
                System.out.println("请输入添加的学生信息:");
//创建布尔类标记变量,用于条件的判断
                boolean flag = false;
                System.out.println("请输入添加的学生学号:");
                String id = input.next();
                while(true) {
// 便利集合寻找目标学号
                        for(int i = 0; i < list.size(); i++) {
//如找到跳出for循环,flag为true,如果未找到循环运行至结束flag仍为flase
                                if(id.equals(list.get(i).getId())) {                                       
flag = true;
                                        break;
                                }
                        }
                        if(flag) {
                                System.out.println("你输入的学号已被占用,请重新输入");
                                id = input.next();
                        } else {
                                break;
                        }
                }
4.2删
public static void delStudent(ArrayList<Student> list) {
                Scanner input = new Scanner(System.in);
                System.out.println("请输入删除的学生学号:");
                String id = input.next();
//遍历集合找到目标学号利用ArrayList<>集合类的remove方法删除集合中对象
                for(int i = 0; i < list.size(); i++) {
                        if(id.equals(list.get(i).getId())) {
                                list.remove(i);
                                return;
                        }
                }
                System.out.println("你输入的学号不存在");
}
4.3改
public static void modifyStudent(ArrayList<Student> list) {
                Scanner input = new Scanner(System.in);
                System.out.println("请输入修改的学生学号:");
                String id = input.next();
//遍历集合找到目标学号利用

                for(int i = 0; i < list.size(); i++) {
                        if(id.equals(list.get(i).getId())) {
                                boolean flag = false;
                                System.out.println("请输入添加的学生学号:");
                                id = input.next();
// 利用while语句对学好进行查重检查
                                while(true) {
                                        for(int j = 0; j < list.size(); j++) {
                                                if(id.equals(list.get(i).getId()) && i != j) {
                                                        flag = true;
                                                        break;
                                                }
                                        }
                                        if(flag) {
                                                System.out.println("你输入的学号已被占用,请重新输入");
                                                id = input.next();
                                        } else {
                                                break;
                                        }
                                }
                                System.out.println("请输入添加修改后的学生姓名:");
                                String name = input.next();
                                System.out.println("请输入添加修改后的学生年龄:");
                                int age = input.nextInt();
                                list.get(i).setId(id);
                                list.get(i).setName(name);
                                list.get(i).setAge(age);
                                break;
                        }
                       
                }
        }
5.将学生信息输出到控制台
        public static void show(ArrayList<Student> list) {
                if(list.size() == 0) {
                        System.out.println("系统中无学生");
                }else {
                        System.out.println("学号\t\t姓名\t年龄");
for(int i = 0; i < list.size(); i++) {                                                         System.out.println(list.get(i).getId()+"\t\t"+
list.get(i).getName()+"\t"+list.get(i).getAge());
                        }
                }
        }
6.将数字字符串转化为整数
        public static int StringToNum(String str) {
                int num = 0;
                char[] ch = str.toCharArray();
                int j = 1;
                for(int i = str.length() -1;i >= 0; i--) {
                        num += ch[i] * j;
                        j *= 10;
                }
                return num;
        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马