MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 们,给点建议吧

们,给点建议吧

www.MyException.Cn  网友分享于:2013-09-06  浏览:2次
大虾们,给点建议吧
本人大四,现在开始着手准备毕业设计,想做一个网站,但是不知道具体要做什么系统,大家给点意见吧。



------解决方案--------------------
毕业了 似乎大家都有这个想法 
但是会呗事实打败的,lz还是找个工作,好好积累经验比较好
------解决方案--------------------
常见的信息管理系统吧,可以借此温习本科知识,学习点新的内容
------解决方案--------------------
Java code
package 信息管理系统;

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

            Set<Student> readObject2 = (Set<Student>) ois.readObject();
            Set<Student> readObject = readObject2;
            students = 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;

    public int compare(Student s1, Student s2) {
        return s1.getId() - s2.getId();

    }

}

文章评论

Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
如何成为一名黑客
如何成为一名黑客
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
旅行,写作,编程
旅行,写作,编程
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
鲜为人知的编程真相
鲜为人知的编程真相
为什么程序员都是夜猫子
为什么程序员都是夜猫子
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
我的丈夫是个程序员
我的丈夫是个程序员
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员必看的十大电影
程序员必看的十大电影
程序员和编码员之间的区别
程序员和编码员之间的区别
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
一个程序员的时间管理
一个程序员的时间管理
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
10个调试和排错的小建议
10个调试和排错的小建议
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
那些争议最大的编程观点
那些争议最大的编程观点
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
编程语言是女人
编程语言是女人
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
中美印日四国程序员比较
中美印日四国程序员比较
我是如何打败拖延症的
我是如何打败拖延症的
代码女神横空出世
代码女神横空出世
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
每天工作4小时的程序员
每天工作4小时的程序员
程序员都该阅读的书
程序员都该阅读的书
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老程序员的下场
老程序员的下场
总结2014中国互联网十大段子
总结2014中国互联网十大段子
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有