赞
踩
-
- public class Student {
- private int sid;
- private String name;
- private String age;
- private String address;
-
- public Student(){
-
- }
-
- public Student(int sid, String name, String age, String address) {
- this.sid = sid;
- this.name = name;
- this.age = age;
- this.address = address;
- }
-
- public int getSid() {
- return sid;
- }
-
- public void setSid(int sid) {
- this.sid = sid;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getAge() {
- return age;
- }
-
- public void setAge(String age) {
- this.age = age;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "sid=" + sid +
- ", name='" + name + '\'' +
- ", age='" + age + '\'' +
- ", address='" + address + '\'' +
- '}';
- }
- }
-
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Comparator;
- import java.util.Scanner;
-
- public class StudentManager {
- /*
- 1.用输出语句完成主界面的编写
- 2.用Scanner实现键盘录入数据
- 3.用switch语句完成操作的选择
- 4.用循环完成再次回到主界面
- */
-
- //创建集合对象,用于保存学生数据信息
- public static ArrayList<Student> array = new ArrayList<>();
-
- public static void main(String[] args) {
- //用循环完成再次回到主界面 1==1
- while (true){
- //用输出语句完成主界面的编写
- 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.保存学生信息");
- System.out.println("7.载入学生信息");
- System.out.println("8,提出系统");
- System.out.println("9.请输入你的选择:");
-
- //用Scanner实现键盘录入数据
- Scanner sc = new Scanner(System.in);
- String line = sc.nextLine();
-
- //用switch语句完成操作的选择
- switch (line){
- case "1":
- addStudent(array);
- break;
- case "2":
- deleteStudent(array);
- break;
- case "3":
- updateStudent(array);
- break;
- case "4":
- findAllStudent(array);
- break;
- case "5":
- System.out.println("升序按1,降序按2:");
- String line1 = sc.nextLine();
- if (line1.equals("1")){
- MyComparator01 myComparator01 = new MyComparator01();
- //归并排序
- array.sort(myComparator01);
- findAllStudent(array);
- break;
- }else if (line1.equals("2")){
- MyComparator02 myComparator02 = new MyComparator02();
- array.sort(myComparator02);
- findAllStudent(array);
- break;
- }
- break;
- case "6":
- saveStudent(array);
- break;
- case "7":
- loadStudent(array);
- break;
- case "8":
- System.out.println("谢谢使用");
- System.exit(0);//java虚拟机退出
- break;
- }
- }
- }
- //******************************
- // 定义一个内部类实现升序排序
- static class MyComparator01 implements Comparator<Student> {
- public int compare(Student s1, Student s2) {
- return s1.getSid() - s2.getSid();
- }
- }
-
- // 定义一个内部类实现降序排序
- static class MyComparator02 implements Comparator<Student> {
- public int compare(Student s1, Student s2) {
- return s2.getSid() - s1.getSid();
- }
- }
- //****************************
-
-
- //实现加载学生信息
- private static void loadStudent(ArrayList<Student> array){
- try {
- BufferedReader isr = new BufferedReader(new InputStreamReader(new FileInputStream(new File("src" +
- "/期末复习/实现数据库/xinxi"))));
- String str;
- while ((str= isr.readLine())!=null){
- Student stu = new Student();
- String[] split = str.split("\t");
-
- stu.setSid(Integer.parseInt(split[0]));
- stu.setName(split[1]);
- stu.setAge(split[2]);
- stu.setAddress(split[3]);
- array.add(stu);
- }
- System.out.println("载入学生数据成功!");
- } catch (FileNotFoundException e) {
- System.out.println("学生数据文件不存在,先输入学生数据保存!");
- e.printStackTrace();
- }catch (IOException e){
- e.printStackTrace();
- }
- }
-
-
- //实现保存学生信息
- private static void saveStudent(ArrayList<Student> array){
- try {
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(
- "src" + "/期末复习/实现数据库/xinxi"))));
- for (int i = 0; i < array.size(); i++) {
- String stu_s;
- stu_s=array.get(i).getSid()+"\t"+ array.get(i).getName()+"\t"+ array.get(i).getAge()+"\t"+ array.get(i).getAddress();
- bw.write(stu_s);
- bw.write('\n');
- }
- bw.flush();
- bw.close();
- System.out.println("保存学生的数据成功!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- //定义一个方法,判断学号是否正确
- public static boolean isUsed(ArrayList<Student> array,int sid){
- //如果与集合中的某一个学生学号相同,返回true;如果都不相同,返回false
- boolean flag= false;
-
- for (int i = 0; i < array.size(); i++) {
- Student s = array.get(i);
- if (s.getSid()==sid){
- flag=true;
- break;
- }
- }
- return flag;
- }
-
- //实现添加学生信息
- public static void addStudent(ArrayList<Student> array){
- //键盘录入学生所需要的数据,显示提示信息,提示要输入的何种信息
- Scanner sc = new Scanner(System.in);
-
- int sid;
-
- while (true){
- System.out.println("请输入学生学号:");
- sid=sc.nextInt();
- //判断是否输入相同学号
- boolean flag = isUsed(array, sid);
- if (flag){
- System.out.println("你输入的学号已经被占用,请重新输入");
- }else {
- break;
- }
- }
-
- System.out.println("请输入学生姓名:");
- String name = sc.next();
-
- System.out.println("请输入学生年龄:");
- String age = sc.next();
-
- System.out.println("请输入学生居住地:");
- String address = sc.next();
-
- //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
- Student s = new Student();
- s.setSid(sid);
- s.setName(name);
- s.setAge(age);
- s.setAddress(address);
- //将学生对象添加到集合中
- array.add(s);
- //给出添加成功提示
- System.out.println("添加学生成功");
- }
-
- //实现查看学生信息
- public static void findAllStudent(ArrayList<Student> array){
- //判断集合是否有数据,如果没有显示提示信息
- if (array.size()==0) {
- System.out.println("无信息,请先添加信息再查询");
- //为了让程序不再往下执行,我们在这里写上return
- return;
- }
- //显示表头信息
- //\t其实是一个tab键的位置
- System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
-
-
-
- // 将集合中数据取出按照对应格式提示学生信息,年龄显示补充"岁"
- for (int i = 0; i < array.size(); i++) {
- Student s = array.get(i);
- System.out.println(s.getSid()+"\t\t"+s.getName()+"\t\t"+s.getAge()+"\t\t"+s.getAddress());
- }
- }
-
-
- //实现删除学生信息
- public static void deleteStudent(ArrayList<Student> array){
- //键盘录入要删除的学号,显示提示信息
- Scanner sc = new Scanner(System.in);
-
- System.out.println("请输入你要删除的学生的学号:");
- int sid= sc.nextInt();
-
- //在删除/修改学生操作时,对学号是否存在进行判断
- //如果不存在,显示提示信息
- //如果存在,执行删除/修改操作
-
- int index=-1;
-
- for (int i = 0; i < array.size(); i++) {
- Student s = array.get(i);
- if (s.getSid() == sid){
- index = i;
- break;
- }
- }
-
- if (index == -1){
- System.out.println("该信息不存在,请重新输入");
- }else {
- array.remove(index);
- //给出删除成功提示
- System.out.println("删除学生成功");
- }
- }
-
- //实现修改学生信息
- public static void updateStudent(ArrayList<Student> array){
- Scanner sc = new Scanner(System.in);
-
- System.out.println("请输入你要修改的学生的学号:");
- int sid = sc.nextInt();
-
- //键盘录入要修改的学生信息
- System.out.println("请输入学生的新姓名:");
- String name = sc.next();
- System.out.println("请输入学生的新年龄:");
- String age = sc.next();
- System.out.println("请输入学生的新居住地:");
- String address = sc.next();
-
- //创建学生对象
- Student s = new Student();
- s.setSid(sid);
- s.setName(name);
- s.setAge(age);
- s.setAddress(address);
-
- //遍历集合修改对应的学生信息
- for (int i = 0; i < array.size(); i++) {
- Student student = array.get(i);
- if (student.getSid()==sid){
- array.set(i,s);
- }
- }
-
- //输出修改成功提示
- System.out.println("修改学生成功!");
- }
- }
代码中,文件路径"src/期末复习/实现数据库/xinxi"要注意自己改动,自己创建一个文本进行信息编辑。
我们对代码运行后会出现一个选项界面,根据界面进行操作。
接着进行添加学生操作,同时进行查询:可以看到添加成功并查询成功。
但接下来我们退出后再运行代码并进行查询,会发现查询不到上面所添加的信息:
这个就是要提醒的一个点,在查询,删除,修改,查看信息之前都要先载入学生信息,这是很重要的点。但是还有需要一个注意的地方,如下图:
就算我载入学生信息后依然无法查询之前张三的信息,这是因为我们在添加张三的信息之后没有保存学生信息就退出了,添加的信息没有保存到文件中,导致载入学生信息中没有张三的信息。
下面重新操作一次:
这次对学生信息进行保存了,接着载入并查询信息,就可以查询到之前添加的信息:
至于排序操作比较简单,就不进行解释了。
对你有帮助的话,give me a 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/788918
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。