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

逛奔的蝸牛

我不聰明,但我會(huì)很努力

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

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. 顯示學(xué)生");

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

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

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

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

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

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

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

        System.out.println();

    }


    /** 管理學(xué)生信息 **/

    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("輸入菜單編號(hào): ");

            op = scanner.nextInt();

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


            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("沒有提供此項(xiàng)操作\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("程序結(jié)束");

    }

}


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

class StudentService {

    private StudentDao studentDao;

    private Scanner scanner;


    public StudentService(StudentDao studentDao, Scanner scanner) {

        this.studentDao = studentDao;

        this.scanner = scanner;

    }


    // 添加學(xué)生

    public void addStudent() {

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

        String info = scanner.nextLine();

        Student s = Student.buildStudent(info);

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

        studentDao.addStudent(s);

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

    }


    // 刪除學(xué)生

    public void removeStudent() {

        System.out.print("輸入學(xué)生id進(jìn)行刪除: ");

        int id = scanner.nextInt();

        Student s = studentDao.findStudent(id);


        if (s == null) {

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

        } else {

            studentDao.removeStudent(s);

            System.out.println("\t已經(jīng)刪除學(xué)生: " + s);

        }

        System.out.println();

    }

    

    /** 修改學(xué)生信息 **/

    public void updateStudent() {

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

        int id = scanner.nextInt();

        Student s = studentDao.findStudent(id);


        if (s == null) {

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

        } else {

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

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

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

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

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

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

            }

            

            // 修改已搜索到的學(xué)生信息

            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();

    }


    /** 輸入學(xué)生的學(xué)號(hào)或者姓名進(jìn)行查找 **/

    public void findStudents() {

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

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

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


        // 如果輸入的是數(shù)字,默認(rèn)為學(xué)號(hào)

        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);

        }


        // 輸出查詢結(jié)果

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

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

        } else {

            for (Student s : ss) {

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

            }

        }

        System.out.println();

    }


    /** 顯示已經(jīng)有的學(xué)生信息 **/

    public void showStudents() {

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


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

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

            return;

        }


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

        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讀取完成");

    }

}


/** 對(duì)學(xué)生數(shù)據(jù)進(jìn)行執(zhí)久化操作 **/

class StudentDao {

    private Set<Student> students;

    private String fileName = "students.dat";


    public StudentDao() {

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

    }


    /** 添加學(xué)生 **/

    public void addStudent(Student student) {

        students.add(student);

    }


    /** 刪除學(xué)生 **/

    public void removeStudent(Student student) {

        students.remove(student);

    }


    /** 使用學(xué)生的id進(jìn)行查找 **/

    public Student findStudent(int id) {

        for (Student s : students) {

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

        }

        return null;

    }


    /** 使用學(xué)生的名字查找進(jìn)行查找 **/

    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;

    }


    /** 判斷學(xué)生是否已經(jīng)存在 **/

    public boolean hasStudent(Student s) {

        return students.contains(s);

    }


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

    public Set<Student> getStudents() {

        return Collections.unmodifiableSet(students);

    }


    /** 把學(xué)生信息保存到文件 **/

    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) {

                }

            }

        }

    }


    /** 從文件讀取學(xué)生信息 **/

    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) {

                }

            }

        }

    }

}


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

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時(shí)需要的比較器

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) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Java

評(píng)論

# re: Java:寫了個(gè)學(xué)生管理系統(tǒng),以備期末之需 2011-06-09 17:09 6a209
你去當(dāng)老師了么????還有期末???  回復(fù)  更多評(píng)論
  

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

  回復(fù)  更多評(píng)論
  

# re: Java:寫了個(gè)學(xué)生管理系統(tǒng),以備期末之需 2012-10-12 17:52 SEO
buildStudent(String studentInfo)  回復(fù)  更多評(píng)論
  

# re: Java:寫了個(gè)學(xué)生管理系統(tǒng),以備期末之需 2015-03-01 18:12 s
這個(gè)挺簡(jiǎn)單的
  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线观看www| 欧美韩国一区| 久久资源在线| 久久九九国产精品怡红院| 午夜在线电影亚洲一区| 亚洲图片欧洲图片av| 亚洲永久免费| 久久精品一区蜜桃臀影院| 欧美成人一区二区三区| 亚洲国产乱码最新视频| 欧美高清不卡| 国产精品99久久99久久久二8 | 免费亚洲一区二区| 亚洲国产91精品在线观看| 91久久精品美女高潮| 99精品欧美一区| 久久精品免费| 欧美日韩在线免费视频| 国产女主播在线一区二区| 激情综合久久| 一本色道久久综合亚洲精品不卡 | 先锋亚洲精品| 麻豆av一区二区三区久久| 欧美精品九九| 国产视频在线一区二区| 亚洲久久在线| 久久久亚洲国产天美传媒修理工| 欧美激情bt| 午夜视频在线观看一区二区三区 | 欧美www在线| 国产精品日韩精品| 亚洲国产成人精品女人久久久 | 麻豆视频一区二区| 国产精品女人网站| 一区二区电影免费观看| 久久久精品网| 亚洲一区国产视频| 欧美日韩高清在线| 最新精品在线| 欧美国产日韩一二三区| 久久av最新网址| 国产精品一区视频| 亚洲欧美日本国产专区一区| 亚洲激情视频在线| 麻豆国产精品777777在线| 国产午夜精品麻豆| 久久精品国产久精国产一老狼 | 亚洲国产精品一区二区第一页 | 亚洲美女在线国产| 久久综合久久综合久久| 午夜精品久久久久久久99水蜜桃 | 亚洲一本视频| 欧美香蕉视频| 在线亚洲观看| 亚洲精美视频| 欧美久久电影| 一区二区三欧美| 亚洲区国产区| 欧美精品日韩三级| 亚洲人体1000| 亚洲国产婷婷香蕉久久久久久| 久久精品一区二区三区中文字幕| 国产亚洲欧美日韩精品| 久久久久久久久蜜桃| 欧美在现视频| 在线看片一区| 日韩视频在线观看免费| 欧美国产精品中文字幕| 久热国产精品视频| 亚洲激情在线观看| 亚洲欧洲在线观看| 欧美日韩一区二区三区四区在线观看| 一本色道久久综合亚洲二区三区| 99精品国产热久久91蜜凸| 欧美精品国产精品日韩精品| 一区二区福利| 一区二区三区视频观看| 国产精品美女在线| 久久亚洲二区| 欧美精品成人一区二区在线观看| 一本色道88久久加勒比精品| 日韩亚洲视频在线| 国产精品综合| 久久免费视频网站| 免费一级欧美片在线观看| 艳妇臀荡乳欲伦亚洲一区| 一区二区成人精品| 国产亚洲一级高清| 欧美黑人多人双交| 国产精品成人国产乱一区| 欧美一区2区三区4区公司二百| 久久精品亚洲一区二区| 夜夜精品视频一区二区| 午夜精品国产| 日韩视频一区| 欧美一区二区三区视频免费| 亚洲国产精品日韩| 亚洲视频免费看| 在线日韩欧美视频| 中文无字幕一区二区三区| 一区三区视频| 亚洲主播在线| 亚洲美女黄网| 欧美影院视频| 欧美亚洲一区二区在线观看| 欧美xxx成人| 久久精品一区二区国产| 欧美日韩1区2区3区| 美女视频黄a大片欧美| 国产精品成人aaaaa网站| 欧美成人有码| 国产精品视频免费| 亚洲日本电影| 在线看欧美日韩| 欧美在线视频网站| 亚洲欧美国产精品专区久久| 欧美va亚洲va香蕉在线| 久久字幕精品一区| 国产欧美一区二区三区沐欲| 亚洲精品国产精品国自产观看浪潮 | 狠狠色综合色综合网络| 日韩亚洲精品视频| 亚洲欧洲一区二区三区在线观看 | 久久视频一区| 在线观看国产精品网站| 亚洲影视在线| 亚洲特黄一级片| 欧美精品播放| 亚洲精品黄色| 日韩写真在线| 欧美激情导航| 亚洲国产精品成人一区二区| 影音先锋成人资源站| 欧美在线视频免费播放| 久久精品一区| 永久免费精品影视网站| 久久精品国产亚洲精品| 久久久精彩视频| 极品少妇一区二区三区| 久久精品亚洲乱码伦伦中文| 久久一区二区三区四区| 国产欧美一区二区色老头| 亚洲免费在线精品一区| 亚洲欧美日韩精品| 欧美国产视频日韩| 亚洲高清一区二| 亚洲三级毛片| 久久精品视频网| 午夜激情亚洲| 国产日本欧美一区二区| 亚洲午夜精品在线| 亚洲一区日韩| 国产一区自拍视频| 免播放器亚洲一区| 91久久久久| 亚洲欧美日韩国产一区| 国产农村妇女精品一二区| 久久高清福利视频| 亚洲第一色在线| 中文av一区二区| 国产精品一区在线观看你懂的| 欧美一区二区免费观在线| 国产精品免费电影| 午夜欧美视频| 模特精品在线| 亚洲无线观看| 极品裸体白嫩激情啪啪国产精品| 欧美精品日韩精品| 欧美一级在线视频| 亚洲人成网站999久久久综合| 亚洲伊人伊色伊影伊综合网| 国产欧美日韩视频在线观看 | 亚洲第一色在线| 午夜伦理片一区| 一区二区三区在线视频播放| 欧美不卡三区| 欧美一区深夜视频| 亚洲欧洲三级| 另类尿喷潮videofree| 一区二区三区高清在线观看| 国产日产欧产精品推荐色 | 国内成人自拍视频| 欧美另类视频| 久久精品30| 9l国产精品久久久久麻豆| 老**午夜毛片一区二区三区| 亚洲午夜精品久久久久久浪潮| 国内激情久久| 国产欧美日韩视频一区二区| 99精品视频免费| 媚黑女一区二区| 国产精品一区二区你懂的| 亚洲精品国久久99热| 久久综合狠狠综合久久综合88| 午夜亚洲影视| 亚洲伦理自拍| 亚洲激情二区| 国产女优一区| 欧美激情精品久久久久久免费印度 | 亚洲福利在线看|