青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::

package test;


import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

import java.util.Scanner;

import java.util.Set;

import java.util.TreeSet;


public class StudentManageSystem {

    /** StudentManager中提供的操作菜單 **/

    public static void showMenus() {

        String format = "              %s\n";

        System.out.println("----------------功能菜單------------------");

        System.out.printf(format, "0. 退出管理");

        System.out.printf(format, "1. 功能菜單");

        System.out.printf(format, "2. 顯示學生");

        System.out.printf(format, "3. 查詢學生");

        System.out.printf(format, "4. 添加學生");

        System.out.printf(format, "5. 刪除學生");

        System.out.printf(format, "6. 修改學生");

        System.out.printf(format, "7. 讀取學生");

        System.out.printf(format, "8. 保存學生");

        System.out.println("-------------------結束------------------");

        System.out.println();

    }


    /** 管理學生信息 **/

    public void manageStudents() throws IOException {

        Scanner scanner = new Scanner(System.in);

        StudentDao sd = new StudentDao();

        StudentService ss = new StudentService(sd, scanner);


        showMenus();

        int op = -1;


        while (op != 0) {

            System.in.skip(System.in.available());

            System.out.print("輸入菜單編號: ");

            op = scanner.nextInt();

            scanner.nextLine(); // 吃掉輸入菜單編號后無效的回車字符


            try {

                switch (op) {

                case 0:

                    break;

                case 1:

                    showMenus();

                    break;

                case 2:

                    ss.showStudents();

                    break;

                case 3:

                    ss.findStudents();

                    break;

                case 4:

                    ss.addStudent();

                    break;

                case 5:

                    ss.removeStudent();

                    break;

                case 6:

                    ss.updateStudent();

                    break;

                case 7:

                    ss.readStudents();

                    break;

                case 8:

                    ss.saveStudents();

                    break;

                default:

                    System.out.println("沒有提供此項操作\n");

                }

            } catch (Exception e) {

                System.out.println("\t" + e.getMessage() + "\n");

            }

        }

    }


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

        StudentManageSystem sm = new StudentManageSystem();

        sm.manageStudents();

        System.out.println("程序結束");

    }

}


/** Service中的很多功能都是委托給Dao對象去完成 **/

class StudentService {

    private StudentDao studentDao;

    private Scanner scanner;


    public StudentService(StudentDao studentDao, Scanner scanner) {

        this.studentDao = studentDao;

        this.scanner = scanner;

    }


    // 添加學生

    public void addStudent() {

        System.out.print("輸入學生資料進行添加,格式為id|name|age: "); // name|age

        String info = scanner.nextLine();

        Student s = Student.buildStudent(info);

        if (studentDao.hasStudent(s)) { throw new RuntimeException("此學生信息已經存在"); }

        studentDao.addStudent(s);

        System.out.println("\t添加成功\n");

    }


    // 刪除學生

    public void removeStudent() {

        System.out.print("輸入學生id進行刪除: ");

        int id = scanner.nextInt();

        Student s = studentDao.findStudent(id);


        if (s == null) {

            System.out.println("\t查無此學生");

        } else {

            studentDao.removeStudent(s);

            System.out.println("\t已經刪除學生: " + s);

        }

        System.out.println();

    }

    

    /** 修改學生信息 **/

    public void updateStudent() {

        System.out.print("修改學生信息,輸入學生id: ");

        int id = scanner.nextInt();

        Student s = studentDao.findStudent(id);


        if (s == null) {

            System.out.println("\t查無此學生");

        } else {

            scanner.nextLine(); // 吃掉回車

            System.out.println("\t學生: " + s);

            System.out.print("\t輸入新的信息,格式為name|age: ");

            String line = scanner.nextLine().trim();

            if (!line.matches("\\w+\\|\\d+")) {

                throw new RuntimeException("輸入的修改學生信息格式不對");

            }

            

            // 修改已搜索到的學生信息

            String[] infos = line.split("\\|");

            String name = infos[0];

            int age = Integer.parseInt(infos[1]);

            s.setName(name);

            s.setAge(age);

            System.out.println("\t修改完成");

        }

        System.out.println();

    }


    /** 輸入學生的學號或者姓名進行查找 **/

    public void findStudents() {

        System.out.print("輸入學生ID或者姓名進行查詢: ");

        String info = scanner.nextLine().trim();

        List<Student> ss = new ArrayList<Student>();


        // 如果輸入的是數字,默認為學號

        if (info.matches("\\d+")) {

            int id = Integer.parseInt(info);

            Student s = studentDao.findStudent(id);

            if (s != null) {

                ss.add(s);

            }

        } else {

            ss = studentDao.findStudents(info);

        }


        // 輸出查詢結果

        if (ss.size() == 0) {

            System.out.println("查無此學生");

        } else {

            for (Student s : ss) {

                System.out.println("\t" + s);

            }

        }

        System.out.println();

    }


    /** 顯示已經有的學生信息 **/

    public void showStudents() {

        Set<Student> students = studentDao.getStudents();


        if (students.size() == 0) {

            System.out.println("\t列表中還沒有任何學生");

            return;

        }


        System.out.println("========所有學生信息========");

        for (Student s : students) {

            System.out.println("\t" + s);

        }

        System.out.println();

    }


    public void saveStudents() {

        studentDao.saveStudents();

        System.out.println("\t保存成功");

    }


    public void readStudents() {

        studentDao.readStudents();

        System.out.println("\t讀取完成");

    }

}


/** 對學生數據進行執久化操作 **/

class StudentDao {

    private Set<Student> students;

    private String fileName = "students.dat";


    public StudentDao() {

        students = new TreeSet<Student>(new StudentComparator());

    }


    /** 添加學生 **/

    public void addStudent(Student student) {

        students.add(student);

    }


    /** 刪除學生 **/

    public void removeStudent(Student student) {

        students.remove(student);

    }


    /** 使用學生的id進行查找 **/

    public Student findStudent(int id) {

        for (Student s : students) {

            if (s.getId() == id) { return s; }

        }

        return null;

    }


    /** 使用學生的名字查找進行查找 **/

    public List<Student> findStudents(String name) {

        List<Student> found = new ArrayList<Student>();

        for (Student s : students) {

            if (s.getName().equals(name)) {

                found.add(s);

            }

        }


        return found;

    }


    /** 判斷學生是否已經存在 **/

    public boolean hasStudent(Student s) {

        return students.contains(s);

    }


    /** 返回學生列表的視圖,不可修改 **/

    public Set<Student> getStudents() {

        return Collections.unmodifiableSet(students);

    }


    /** 把學生信息保存到文件 **/

    public void saveStudents() {

        ObjectOutputStream oos = null;

        try {

            oos = new ObjectOutputStream(new FileOutputStream(fileName));

            oos.writeObject(students);

        } catch (Exception e) {

            e.printStackTrace();

            throw new RuntimeException("保存失敗");

        } finally {

            if (oos != null) {

                try {

                    oos.close();

                } catch (Exception e2) {

                }

            }

        }

    }


    /** 從文件讀取學生信息 **/

    public void readStudents() {

        ObjectInputStream ois = null;

        try {

            ois = new ObjectInputStream(new FileInputStream(fileName));

            students = (Set<Student>) ois.readObject();

        } catch (Exception e) {

            e.printStackTrace();

            throw new RuntimeException("讀取失敗");

        } finally {

            if (ois != null) {

                try {

                    ois.close();

                } catch (Exception e2) {

                }

            }

        }

    }

}


/** 學生類,可以序列化保存到文件 **/

class Student implements Serializable {

    private static final long serialVersionUID = 1L;

    private int id;

    private int age;

    private String name;


    public Student() {

    }


    public Student(int id, String name, int age) {

        this.id = id;

        this.age = age;

        this.name = name;

    }


    public String getName() {

        return name;

    }


    public void setName(String name) {

        this.name = name;

    }


    public int getId() {

        return id;

    }


    public void setId(int id) {

        this.id = id;

    }


    public int getAge() {

        return age;

    }


    public void setAge(int age) {

        this.age = age;

    }


    // Info format: id|name|age

    public static Student buildStudent(String studentInfo) {

        if (!studentInfo.matches("\\d+\\|\\w+\\|\\d+")) { throw new RuntimeException(

            "The student information's format should be \"id|name|age\" without quote"); }


        String[] infos = studentInfo.split("\\|");

        int id = Integer.parseInt(infos[0]);

        String name = infos[1].trim();

        int age = Integer.parseInt(infos[2]);


        return new Student(id, name, age);

    }


    @Override

    public int hashCode() {

        return id;

    }


    @Override

    public boolean equals(Object obj) {

        if (obj == null || obj.getClass() != this.getClass()) { return false; }

        Student other = (Student) obj;

        if (other.id == this.id) { return true; }

        return false;

    }


    @Override

    public String toString() {

        return String.format("ID:%d, Name:%s, Age:%d", id, name, age);

    }

}


// 使用TreeSet時需要的比較器

class StudentComparator implements Comparator<Student>, Serializable {

    private static final long serialVersionUID = 1L;


    @Override

    public int compare(Student s1, Student s2) {

        return s1.getId() - s2.getId();

    }

}


posted on 2011-05-25 12:17 逛奔的蝸牛 閱讀(3355) 評論(4)  編輯 收藏 引用 所屬分類: Java

評論

# re: Java:寫了個學生管理系統,以備期末之需 2011-06-09 17:09 6a209
你去當老師了么????還有期末???  回復  更多評論
  

# re: Java:寫了個學生管理系統,以備期末之需 2012-09-08 18:54 SEO
RuntimeException("此學生信息已經存在"); }

  回復  更多評論
  

# re: Java:寫了個學生管理系統,以備期末之需 2012-10-12 17:52 SEO
buildStudent(String studentInfo)  回復  更多評論
  

# re: Java:寫了個學生管理系統,以備期末之需 2015-03-01 18:12 s
這個挺簡單的
  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美婷婷在线| 亚洲靠逼com| 一区二区三区欧美成人| 欧美有码视频| 欧美中文在线免费| 亚洲三级免费观看| 亚洲国产精品黑人久久久| 亚洲尤物精选| 国产精品久久7| 久久经典综合| 亚洲国产精品久久人人爱蜜臀| 在线播放豆国产99亚洲| 欧美不卡在线| 亚洲一区欧美二区| 久久久久女教师免费一区| 国产精品自拍一区| 欧美亚洲三级| 欧美国产高清| 一本色道久久88综合亚洲精品ⅰ| 男女精品网站| 亚洲在线成人精品| 欧美www视频| 欧美一区日韩一区| 亚洲精品在线视频| 国产一区视频网站| 国产精品成人午夜| 嫩草影视亚洲| 久久精品91久久香蕉加勒比| 在线亚洲免费视频| 欧美电影在线观看完整版| 一区二区三区欧美激情| 永久免费视频成人| 国产精品久久福利| 欧美日韩激情网| 欧美成人四级电影| 麻豆精品在线观看| 久久国产精品亚洲va麻豆| 亚洲精品中文字| 亚洲黑丝一区二区| 国产偷久久久精品专区| 国产精品无码专区在线观看| 国产精品va| 欧美日韩亚洲综合| 欧美激情aⅴ一区二区三区| 久久久国产亚洲精品| 巨乳诱惑日韩免费av| 久久久欧美一区二区| 国产精品综合| 一区二区三区黄色| 美国成人直播| 免费观看久久久4p| 欧美黄色免费| 日韩网站在线看片你懂的| 亚洲人屁股眼子交8| 亚洲精品日韩在线观看| 亚洲精品乱码久久久久久黑人| 免费成人性网站| 国产欧美一区二区色老头| 欧美二区在线播放| 欧美精品色综合| 欧美午夜国产| 伊人成人开心激情综合网| 精品88久久久久88久久久| 黑人一区二区三区四区五区| 在线观看欧美精品| a4yy欧美一区二区三区| 亚洲欧美日韩精品| 久久国产精品99精品国产| 欧美电影免费观看大全| 一本色道久久88综合亚洲精品ⅰ| 欧美在线视频全部完| 欧美精品色网| 91久久国产自产拍夜夜嗨| 亚洲永久在线观看| 亚洲精品免费一区二区三区| 欧美一区二区| 国产精品久久久久三级| 亚洲国产欧美久久| 久久久久九九九九| 亚洲图片欧美午夜| 欧美日韩视频一区二区| 亚洲精品国产精品乱码不99| 久久久亚洲高清| 欧美在线三级| 狠狠色伊人亚洲综合成人| 欧美一区二区在线免费播放| 亚洲素人一区二区| 国产精品久久久久久久久借妻| 亚洲乱亚洲高清| 亚洲欧洲精品天堂一级| 亚洲高清资源综合久久精品| 久久精品中文| 久久精品一区二区国产| 激情久久久久久久久久久久久久久久| 性做久久久久久久免费看| 午夜久久美女| 精品91久久久久| 亚洲韩国青草视频| 国产精品国色综合久久| 国产精品v片在线观看不卡| 老鸭窝91久久精品色噜噜导演| 国产伦精品一区二区三区在线观看| 午夜精品久久久久久久蜜桃app | 国产伦精品一区二区三区高清版 | 午夜精品久久久久久久蜜桃app| 亚洲一区亚洲二区| 在线观看欧美成人| 亚洲免费成人av| 国产一区日韩欧美| 亚洲人成小说网站色在线| 国产精品久久午夜| 美女脱光内衣内裤视频久久影院| 欧美精品一线| 老司机成人在线视频| 国产精品久在线观看| 最新亚洲一区| 影音先锋久久精品| 亚洲综合日本| 亚洲天堂av图片| 免费一级欧美片在线观看| 香蕉成人久久| 国产精品毛片在线| 亚洲精品影视| 日韩亚洲欧美中文三级| 欧美jizz19hd性欧美| 亚洲激情亚洲| 久久美女性网| 欧美/亚洲一区| 亚洲国产天堂久久综合网| 久久成人久久爱| 久久一区二区三区四区| 国产亚洲欧美日韩美女| 亚洲欧美在线aaa| 亚洲欧美日本精品| 国产伦精品一区二区三区| 欧美一区成人| 欧美激情在线有限公司| 亚洲肉体裸体xxxx137| 欧美成人免费在线观看| 亚洲另类在线视频| 亚洲欧美美女| 国产一区二区三区四区五区美女| 亚洲欧美综合精品久久成人| 久久久国产午夜精品| 精品999成人| 欧美日韩一区二区在线| 亚洲宅男天堂在线观看无病毒| 久久久在线视频| 在线高清一区| 欧美人体xx| 在线一区二区三区做爰视频网站| 麻豆国产精品va在线观看不卡| 亚洲国产精品成人精品| 亚洲欧美激情一区二区| 激情自拍一区| 欧美亚洲成人精品| 欧美77777| 久久国产主播| 一区二区高清视频| 亚洲电影第1页| 久久精品中文字幕一区| 99re66热这里只有精品3直播| 国产午夜精品美女视频明星a级 | 99国产精品久久久久老师 | 亚洲午夜视频| 亚洲国产精品成人va在线观看| 国产精品狠色婷| 欧美人成在线视频| 麻豆成人在线播放| 久久精品一区中文字幕| 性8sex亚洲区入口| 亚洲网友自拍| 99riav久久精品riav| 国产婷婷色一区二区三区四区| 欧美日韩中文在线观看| 欧美日韩午夜视频在线观看| 欧美jizz19hd性欧美| 欧美成人69| 欧美黄色一区二区| 欧美日韩中文字幕在线| 欧美日韩精品久久| 欧美日韩综合视频| 欧美午夜精品久久久久久孕妇 | 欧美国产精品日韩| 欧美电影在线观看完整版| 欧美国产视频一区二区| 亚洲国产三级| 亚洲婷婷在线| 性做久久久久久久久| 六月婷婷久久| 欧美日韩在线播放三区| 国产日产欧美a一级在线| 国色天香一区二区| 亚洲精品一区二区三区在线观看| 亚洲每日在线| 午夜在线视频观看日韩17c| 久久久久五月天| 一区二区三区久久网| 久久久久99| 国产精品欧美久久久久无广告|