`
gstarwd
  • 浏览: 1525251 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学生信息管理系统V0.2(使用文件存储数据)【MVC模式、DAO模式、Factory模式】

阅读更多

0.2版更新内容:
1.使用文件存储数据;
2.使用HashMap查找学生信息;
3.使用DAO模式;
4.使用Factory模式;
5.使用BufferedReader、PrintWriter读写文件。

 

Student.java:学生类
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

public class Student {

    private String id;
    private String name;
    private int 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;
    }
}



StudentAction.java:学生信息处理类
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class StudentAction {

    Scanner sc = new Scanner(System.in);
    
    public void add() {
        Student stu = new Student();
        System.out.println("请输入学生学号:");
        String id = sc.next();
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        stu.setId(id);
        stu.setName(name);
        stu.setAge(age);
        try {
            DAOFactory.getStudentDAOInstance().add(stu);
        } catch (Exception e) {
            System.out.println("添加学生信息失败!");
        }
    }
    
    public void showAll() {
        List<Student> stus = null;
        try {
            stus = DAOFactory.getStudentDAOInstance().queryAll();
        } catch (Exception e) {
            System.out.println("信息查找失败!");
        }
        Iterator<Student> iter = stus.iterator();
        this.printHeader();
        while (iter.hasNext()) {
            Student stu = iter.next();
            this.print(stu);
        }
        this.printFooter();
    }
    
    public void printHeader() {
        System.out.println("------------------------");
        System.out.println("学号\t姓名\t年龄");
        System.out.println("------------------------");
    }
    
    public void printFooter() {
        System.out.println("------------------------");
    }
    
    public void print(Student stu) {
        System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge());
    }
    
    public Student queryById() {
        System.out.println("请输入学号:");
        String id = sc.next();
        HashMap<String, Student> stus = null;
        try {
            stus = DAOFactory.getStudentDAOInstance().queryById();
        } catch (Exception e) {
            System.out.println("信息查找失败!");
        }
        Student stu = null;
        if (stus.containsKey(id)) {
            stu = stus.get(id);
        }
        if (stu != null) {
            this.printHeader();
            this.print(stu);
            this.printFooter();
        } else {
            System.out.println("对不起,没找到您要查找的学生!");
        }
        return stu;
    }
    
}



DAOFactory.java:数据操作工厂类
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

public class DAOFactory {

    public static StudentDAO getStudentDAOInstance() {
        return new StudentDAOImpl();
        
    }
}



StudentDAO.java:学生信息数据操作接口
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

import java.util.HashMap;
import java.util.List;


public interface StudentDAO {

    //查询所有学生信息
    public List<Student> queryAll() throws Exception;
    //按ID查询学生信息
    public HashMap<String, Student> queryById() throws Exception;
    //添加学生信息
    public void add(Student stu) throws Exception;
    
}



StudentDAOImpl.java:学生信息数据操作实现类
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class StudentDAOImpl implements StudentDAO {

    public static final String FILE_PATH = "DB/student.txt";
    
    public List<Student> queryAll() throws Exception {
        List<Student> stus = new ArrayList<Student>();
        FileReader fr = null;
        BufferedReader br = null;
        try {
            fr = new FileReader(FILE_PATH);
            br = new BufferedReader(fr);
            String stuStr = null;
            while ((stuStr = br.readLine()) != null) {
                String[] stuMsg = stuStr.split(":");
                if (stuMsg.length == 3) {
                    Student stu = new Student();
                    stu.setId(stuMsg[0]);
                    stu.setName(stuMsg[1]);
                    int age = 20;
                    try {
                        age = Integer.parseInt(stuMsg[2]);
                    } catch (NumberFormatException e) {
                        age = 20;
                    }
                    stu.setAge(age);
                    stus.add(stu);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            throw new Exception(e);
        } catch (IOException e) {
            e.printStackTrace();
            throw new Exception(e);
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new Exception(e);
                }
                br = null;
            }
            if (fr != null) {
                try {
                    fr.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new Exception(e);
                }
                fr = null;
            }
        }
        return stus;
    }
    
    public HashMap<String, Student> queryById() throws Exception {
        HashMap<String, Student> stus = new HashMap<String, Student>();
        FileReader fr = null;
        BufferedReader br = null;
        try {
            fr = new FileReader(FILE_PATH);
            br = new BufferedReader(fr);
            String stuStr = null;
            while ((stuStr = br.readLine()) != null) {
                String[] stuMsg = stuStr.split(":");
                if (stuMsg.length == 3) {
                    Student stu = new Student();
                    stu.setId(stuMsg[0]);
                    stu.setName(stuMsg[1]);
                    int age = 20;
                    try {
                        age = Integer.parseInt(stuMsg[2]);
                    } catch (NumberFormatException e) {
                        age = 20;
                    }
                    stu.setAge(age);
                    stus.put(stuMsg[0], stu);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            throw new Exception(e);
        } catch (IOException e) {
            e.printStackTrace();
            throw new Exception(e);
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new Exception(e);
                }
                br = null;
            }
            if (fr != null) {
                try {
                    fr.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new Exception(e);
                }
                fr = null;
            }
        }
        return stus;
    }

    public void add(Student stu) throws Exception {
        FileWriter fw = null;
        PrintWriter pw = null;
        try {
            fw = new FileWriter(FILE_PATH, true);
            pw = new PrintWriter(fw, true);
            pw.println(stu.getId() + ":" + stu.getName() + ":" + stu.getAge());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (pw != null) {
                pw.close();
                pw = null;
            }
            if (fw != null) {
                try {
                    fw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    throw new Exception(e);
                }
                fw = null;
            }
        }
    }

}



StudentMgr.java:学生信息管理类
程序代码 程序代码

package cn.edu.ahau.mgc.stu;

import java.util.Scanner;

public class StudentMgr {

    
    
    public static void main(String[] args) {
        StudentAction sa = new StudentAction();
        Scanner sc = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            showMenu();
            int selected = sc.nextInt();
            switch(selected) {
            case 1 :
                sa.add();
                break;
            case 2 :
                sa.showAll();
                break;
            case 3 :
                sa.queryById();
                break;
            case 4 :
                flag = false;
                System.out.println("已退出!");
                break;
            }
        }
    }
    
    public static void showMenu() {
        System.out.println("学生信息管理菜单:");
        System.out.println("(1)增加学生信息");
        System.out.println("(2)显示所有学生信息");
        System.out.println("(3)根据学号查询学生信息");
        System.out.println("(4)退出管理");
    }
    
}



student.txt:学生数据文件
程序代码 程序代码

1001:Magci:20
1002:MGC:20
1003:haha:24
1005:lala:19
1004:test:23


 

 

分享到:
评论

相关推荐

    一个学生信息管理系统,使用jsp+Servlet的MVC模式,mysql数据库,适合初学者

    《基于jsp+Servlet的MVC模式学生信息管理系统详解》 在IT行业中,开发高效、可维护的Web应用程序是一项重要的技能。对于初学者来说,理解并掌握Model-View-Controller(MVC)设计模式是通往专业Web开发的第一步。本...

    一个学生信息管理系统,使用jsp+Servlet的MVC模式,mysql数据库

    在学生信息管理系统中,所有学生数据都存储在MySQL数据库中,通过SQL语句进行操作。 2. 数据库设计:为了实现学生信息的管理,需要创建对应的数据库表,例如“students”表,包含id(主键)、name、age、gender等...

    学生信息管理系统、MVC设计模式,实现学生信息管理(增删改查)使用MYSQL、C3P0、DBUtils

    综上所述,这个学生信息管理系统利用MVC设计模式,实现了对学生数据的高效管理。通过集成MySQL数据库进行数据存储,C3P0连接池优化数据库连接管理,以及DBUtils简化数据库操作,系统具有良好的结构和性能。...

    MVC模式的Java编写学生管理系统源码

    在学生管理系统中,Model层可能包含了学生数据的存储、查询、修改和删除等操作。它不直接与用户交互,而是通过Controller传递数据给View。 2. **视图(View)** - 视图是用户看到和与之交互的界面部分。在学生管理...

    JSP+J2EE+MVC模式的学生信息管理系统

    "JSP+J2EE+MVC模式的学生信息管理系统"是一个使用了Java服务器页面(JSP)、Java企业版(J2EE)技术,并遵循模型-视图-控制器(MVC)设计模式的项目。这个系统主要用于管理学生的信息,提供了对数据的增删查改功能。...

    Mvc+DAO模式例子

    在实际开发中,MVC模式的控制器会调用DAO来处理数据,DAO再通过模型将处理后的数据传递给视图。这样,前端请求由控制器处理,业务逻辑在模型中实现,数据操作在DAO中完成,视图只负责显示数据,形成了清晰的职责划分...

    MVC三层架构+DAO工厂模式进行JAVA WEB开发

    在Java Web开发中,MVC(Model-View-Controller)三层架构和DAO(Data Access Object)工厂模式是两种常见的设计模式,它们对于构建高效、可维护的系统至关重要。本项目结合这两种模式,旨在提高代码组织的清晰度和...

    JSP留言管理系统Ⅵ(MVC+DAO设计模式)

    **JSP留言管理系统Ⅵ基于MVC+DAO设计模式详解** 在Web开发中,MVC(Model-View-Controller)设计模式和DAO(Data Access Object)设计模式是两种常见的架构模式,它们被广泛应用于构建可维护性和扩展性高的应用程序...

    学生信息管理系统(java版本+文件保存).zip

    在这个项目中,我们关注的是一个使用Java语言实现的学生信息管理系统,它包含了图形用户界面(GUI)以及文件保存功能。下面我们将详细探讨这个系统的核心知识点。 1. **Java语言基础**: Java是一种跨平台的、面向...

    使用MVC+DAO完成用户登陆(代码+笔记)

    DAO模式用于封装数据访问操作,隔离业务逻辑层与数据存储层。在用户登录的例子中,DAO类会处理与数据库的交互,如执行查询或更新操作。 1. **DAO接口**:定义了操作数据库的方法,如`login(String username, String...

    mvc+mysql学生信息管理系统(实现增删改查)

    总结,这个学生信息管理系统是一个典型的Java Web项目,涵盖了MVC架构的运用、Servlet处理请求、MySQL数据库存储数据、分页显示优化用户体验以及文件上传功能的实现。这样的系统为开发者提供了实际的动手经验,同时...

    java学生信息管理系统

    4. 数据文件:如果是文件存储方式,可能有.csv或.xml文件用于保存学生信息。 5. SQL脚本文件:如果是SQL存储,可能包含用于创建数据库表的SQL语句。 6. 构建脚本(如build.gradle或pom.xml):用于构建和管理项目的...

    javaweb之mvc设计模式的学生信息管理系统

    本项目“javaweb之mvc设计模式的学生信息管理系统”旨在通过实践应用,帮助开发者理解和掌握如何在JavaWeb环境中运用MVC模式来构建一个功能完善的系统。 **MVC设计模式** 1. **Model(模型)**:模型层是应用程序...

    MVC+DAO实现留言系统

    通过这种方式,MVC模式保证了用户界面的独立性,而DAO模式则简化了数据访问,使得整个系统更易于维护和扩展。在实际开发中,还可以利用Spring框架提供的依赖注入和AOP特性,进一步提高代码的可测试性和可维护性。

    基于jspMVC模式的成绩管理系统

    **基于jspMVC模式的成绩管理系统详解** 在信息技术领域,开发Web应用程序时,Model-View-Controller(MVC)模式是一种广泛采用的设计模式。本项目"基于jspMVC模式的成绩管理系统"是一个采用JavaServer Pages(JSP)...

    java学生信息管理系统MVC架构

    Java学生信息管理系统基于MVC(Model-View-Controller)架构设计,这是一种常见的软件设计模式,广泛应用于Web开发中。MVC架构将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以...

    利用Struts2+MVC Dao+mysql做的一个电脑配置信息管理系统(增,删,改,查)

    这是一个基于Struts2框架、MVC设计模式以及MySQL数据库实现的电脑配置信息管理系统。系统的主要功能包括用户管理、电脑配置信息管理和文件上传等,对于初学者来说,是学习Java Web开发的良好实践案例。 首先,...

    MVC实现的简单的学生信息管理系统

    本项目“MVC实现的简单的学生信息管理系统”就是利用这一模式来管理和展示学生数据的实例。通过这种模式,我们可以将业务逻辑、用户界面和数据访问分离开来,从而提高代码的可维护性和可扩展性。 **1. Model(模型...

    MVC+DAO简单登录

    **MVC+DAO模式在简单登录注册...综上所述,这个“MVC+DAO简单登录”项目展示了如何利用这两种设计模式构建一个基本的用户管理系统。通过理解并实践这些模式,开发者可以更好地组织和优化Web应用程序,提高代码质量。

    学生信息管理系统MVC版本

    学生信息管理系统是一个典型的教育信息化应用,它采用MVC(Model-View-Controller)架构模式,旨在帮助学校或教师更有效地管理和追踪学生的信息。对于初学者而言,这是一个很好的实践项目,能深入理解Java MVC框架的...

Global site tag (gtag.js) - Google Analytics