Java小例子(学习整理)-----学生管理系统-控制台版

时间:2021-09-04 15:09:52

1、功能介绍:

     首先,这个小案例没有使用数据库,用集合的形式暂时保存数据,做测试!

     功能:

        增加学生信息

        删除学生信息

        修改学生信息

        查询学生信息:  按照学号(精确查询)  按照姓名(模糊查询)

        打印展示

        备份数据到磁盘

        退出      

2、代码块:(作为一个小案例,代码有点多了,我就不一一分析了,直接上代码!)

Java小例子(学习整理)-----学生管理系统-控制台版

(1):Model层

----------学生实体类:

 package cn.jason.db;

 /**
* 学生实体类
* Created by Jason 2016-7-15 上午8:36:20
*/
public class StudentBean { private String sno;
private String name;
private String sex;
private int age;
private String address; public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} }

----------存放学生实体数据的仓库集合:

 package cn.jason.db;

 import java.util.ArrayList;
import java.util.List; /**
* 学生数据存放集合
* Created by Jason 2016-7-15 上午8:38:50
*/
public abstract class DBUtils { private static List<StudentBean> list=null; static{
list=new ArrayList<StudentBean>();
} private DBUtils(){} public static List<StudentBean> getList() {
return list;
}
}

----------数据操作(接口)定义规则:

 package cn.jason.daos;

 import java.util.List;

 import cn.jason.db.StudentBean;

 /**
* 定义数据操作规则
* Created by Jason 2016-7-15 上午8:43:55
* @param <StudentBean>
*/
public interface StudentDBDAOInf { //查询所有
List<StudentBean> getAllStudent();
//学号 精确查找
List<StudentBean> getStudentBySno(String sno);
//姓名 模糊查找
List<StudentBean> getStudentByName(String name); //判断非空性
boolean isEmpty(); //新增
boolean insertStudentDB(StudentBean bean); //删除
boolean deleteStudentDB(StudentBean bean); //修改
boolean updateStudentDB(StudentBean bean); }

----------数据操作(接口实现子类)实现规则:

 package cn.jason.daos;

 import java.util.ArrayList;
import java.util.List; import cn.jason.db.DBUtils;
import cn.jason.db.StudentBean; /**
* 数据操作实现子类
* Created by Jason 2016-7-15 上午8:55:08
*/
public class StudentDBDAOImpl implements StudentDBDAOInf { private static List<StudentBean> list=null;
static{
list=DBUtils.getList();
} /**
* 得到所有信息
*/
public List<StudentBean> getAllStudent() {
return new ArrayList<StudentBean>(list);
} /**
* 根据学号查找
*/
public List<StudentBean> getStudentBySno(String sno) {
ArrayList<StudentBean> rList=new ArrayList<StudentBean>();
for (StudentBean s : list) {
if(s.getSno().equals(sno)){
rList.add(s);
}
}
return rList;
} /**
* 根据姓名查找
*/
public List<StudentBean> getStudentByName(String name) {
ArrayList<StudentBean> rList=new ArrayList<StudentBean>();
for (StudentBean s : list) {
if(s.getName().indexOf(name)!=-){
rList.add(s);
}
}
return rList;
} /**
* 判断是否为空
*/
public boolean isEmpty() {
return list.isEmpty();
} /**
* 新增数据
*/
public boolean insertStudentDB(StudentBean bean) {
return list.add(bean);
} /**
* 删除操作:按学号删
*/
public boolean deleteStudentDB(StudentBean bean) {
for ( StudentBean s: list) {
if(s.getSno().equals(bean.getSno())){
return list.remove(s);
}
}
return false;
} /**
* 修改操作
*/
public boolean updateStudentDB(StudentBean bean) {
boolean bool=false;
int i=;
for (StudentBean s : list) {
if(s.getSno().equals(bean.getSno())){
list.set(i, bean);
bool=true;
break;
}
i++;
}
return bool;
} }

(2): Control层

----------逻辑控制操作(接口)控制规则:

 package cn.jason.services;

 import java.util.List;

 import cn.jason.db.StudentBean;

 /**
* 逻辑控制层的借口
* Created by Jason 2016-7-15 上午8:51:43
*/
public interface StudentServiceInf { //增删查改操作 boolean insertStudent(); boolean deleteStudent(); boolean updateStudent(); List<StudentBean> searchStudent(int index);//查询模式 1、姓名 2、学号 }

----------逻辑控制操作(接口实现子类)实现控制规则:

 package cn.jason.services;

 import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List; import cn.jason.daos.StudentDBDAOImpl;
import cn.jason.db.StudentBean; /**
* 逻辑控制实现子类
* Created by Jason 2016-7-15 上午9:19:37
*/
public class StudentServiceImpl implements StudentServiceInf { private StudentDBDAOImpl dao=null;
private BufferedReader br=null ;
public StudentServiceImpl(BufferedReader br){
dao=new StudentDBDAOImpl();
this.br=br;
} /**
* 数据显示处理
*/
private StudentBean getData(){ StudentBean student=null;
try {
System.out.println("请输入姓名:");
String name=br.readLine();
System.out.println("请输入性别:");
String sex=br.readLine();
if("男".equals(sex)||"女".equals(sex)){ }else{
System.out.println("性别输入有误!");
return student;
}
System.out.println("请输入年龄:");
String age=br.readLine();
int sage=;
if(Integer.parseInt(age)< || Integer.parseInt(age)>){
System.out.println("请设置年龄区段为:0-100 岁");
return student;
}else{
sage=Integer.parseInt(age);
}
System.out.println("请输入地址:");
String address=br.readLine(); student=new StudentBean();
student.setName(name);
student.setSex(sex);
student.setAge(sage);
student.setAddress(address); } catch (IOException e) {
e.printStackTrace();
}
return student;
} /**
* 新增操作
*/
public boolean insertStudent() {
boolean bool=false;
try {
System.out.println("请输入学号:");
String sno=br.readLine();
if(dao.getStudentBySno(sno).size()>){
System.out.println("当前学号已存在,不能做新增操作!");
return false;
}
StudentBean bean=getData();
if(bean==null){
return bool;
}
bean.setSno(sno);
bool= dao.insertStudentDB(bean); } catch (IOException e) {
e.printStackTrace();
return false;
}
return bool;
} /**
* 删除操作
*/
public boolean deleteStudent() {
boolean bool=false;
System.out.println("请输入要删除的学生学号");
try {
String sno = br.readLine();
StudentBean bean=null;
if(dao.getStudentBySno(sno).size()==){
System.err.println("没有找到这个学生,不能删除!");
}else{
bean=new StudentBean();
bean.setSno(sno);
bool=dao.deleteStudentDB(bean);
}
} catch (IOException e) {
e.printStackTrace();
} return bool;
} /**
* 修改操作
*/
public boolean updateStudent() {
boolean bool=false;
try {
System.out.println("请输入要修改的学生学号:");
String sno=br.readLine();
if(dao.getStudentBySno(sno).size()==){
System.out.println("当前学号不存在,不能做修改操作!");
return false;
}
StudentBean bean=getData();
if(bean==null){
return bool;
}
bean.setSno(sno);
bool= dao.updateStudentDB(bean); } catch (IOException e) {
e.printStackTrace();
return false;
}
return bool;
} /**
* 查询操作
*/
public List<StudentBean> searchStudent(int index) {
List<StudentBean> rlist=null;
switch (index) {//1、姓名 2、学号
case :
rlist=searchByName();
break;
case :
rlist=searchBySno();
break; }
return rlist;
} /**
*按学号查(精确查)
*/
private List<StudentBean> searchBySno() {
List<StudentBean> rList=null;
try {
System.out.println("请输入学号:");
String sno=br.readLine();
rList=dao.getStudentBySno(sno);
PrintData(rList);
} catch (IOException e) {
System.err.println("输入学号处发生错误");
return rList;
}
return rList;
} /**
*按姓名查(模糊查)
*/
private List<StudentBean> searchByName() {
List<StudentBean> rList=null;
try {
System.out.println("请输入姓名:");
String sname=br.readLine();
rList=dao.getStudentByName(sname);
PrintData(rList);
} catch (IOException e) {
System.err.println("输入姓名处发生错误");
return rList;
}
return rList;
} /**
* 显示查询的数据
*/
private void PrintData(List<StudentBean> rList){
System.out.println("姓名\t学号\t性别\t年龄\t地址");
for (StudentBean s : rList) {
System.out.println(s.getName()+"\t"+s.getSno()+"\t"+s.getSex()+"\t"+s.getAge()+"\t"+s.getAddress());
}
} /**
* 打印所有信息
*/
public void ShowData(){
System.out.println("姓名\t学号\t性别\t年龄\t地址");
for (StudentBean s : dao.getAllStudent()) {
System.out.println(s.getName()+"\t"+s.getSno()+"\t"+s.getSex()+"\t"+s.getAge()+"\t"+s.getAddress());
}
} /**
* 备份数据
*/
public boolean BakData(){ boolean bool=false;
BufferedOutputStream bos=null;
try{
File file=new File("testData.bak");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file,true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bos=new BufferedOutputStream(fos); SimpleDateFormat sdf=new SimpleDateFormat("yyyy年-MM月-dd日 HH:mm:ss");
String date=sdf.format(System.currentTimeMillis());
bos.write(date.getBytes());
bos.write("姓名\t学号\t性别\t年龄\t地址".getBytes());
for (StudentBean s : dao.getAllStudent()) {
bos.write((s.getName()+"\t"+s.getSno()+"\t"+s.getSex()+"\t"+s.getAge()+"\t"+s.getAddress()).getBytes());
}
bool=true;
}catch(IOException e){
return false;
}
finally{
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bool;
} }

(3): Views层

----------视图界面(在控制台展示)

 package cn.jason.views;

 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; import com.sun.org.apache.xml.internal.security.Init; import cn.jason.services.StudentServiceImpl; /**
* 控制台显示效果
* Created by Jason 2016-7-15 上午10:36:36
*/
public class MainView { private StudentServiceImpl control=null;
private BufferedReader br=null ; public MainView(){
br=new BufferedReader(new InputStreamReader(System.in));
control=new StudentServiceImpl(br); //初始化界面
init();
} /**
*初始化界面
*/
private void init() {
System.out.println("学生关系系统测试版");
boolean bool=true;
while(bool){
System.out.println("信息操作指令:0、删除 1、新增 2、修改 3、查询 4、打印 5、备份 6、退出");
String order;
try {
order = br.readLine();
if("".equals(order)){
if(control.deleteStudent()){
System.out.println("删除成功!");
}else{
System.out.println("删除失败!");
}
}else if("".equals(order)){
if(control.insertStudent()){
System.out.println("新增成功!");
}else{
System.out.println("新增失败!");
}
}else if("".equals(order)){
if(control.updateStudent()){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
}else if("".equals(order)){
checkKindSearch();
}else if("".equals(order)){
control.ShowData();
}else if("".equals(order)){
if(control.BakData()){
System.out.println("打印完成,请注意查看!");
}else{
System.out.println("打印操作失败!");
}
}else if("".equals(order)){ if(br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.exit();
}else{
System.out.println("抱歉!请输入正确的操作指令!");
}
} catch (IOException e) {
e.printStackTrace();
}
} } /**
*查询细分类
*/
private void checkKindSearch() { try {
System.out.println("查询条件:1、姓名 2、学号");
String index=br.readLine();
if("".equals(index)){
control.searchStudent();
}else if("".equals(index)){
control.searchStudent();
}else{
System.err.println("输入有误,请核对后再输入");
} } catch (IOException e) {
e.printStackTrace();
} }
}

(4): 启动程序:main

 package cn.jason.start;

 import cn.jason.views.MainView;

 /**
* 程序启动类:
* Created by Jason 2016-7-15 上午10:50:49
*/
public class Start { public static void main(String[] args) {
new MainView();
} }

3、运行测试结果:

 学生关系系统测试版
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入学号:
s001
请输入姓名:
Jason
请输入性别:

请输入年龄: 请输入地址:
长沙市 岳麓区
新增成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入学号:
s002
请输入姓名:
Jask
请输入性别:

请输入年龄: 请输入地址:
北京
新增成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入学号:
s003
请输入姓名:
Rose
请输入性别:

请输入年龄: 请输入地址:
纽约
新增成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 姓名 学号 性别 年龄 地址
Jason s001 男 长沙市 岳麓区
Jask s002 男 北京
Rose s003 女 纽约
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 查询条件:、姓名 、学号 请输入姓名:
Jason
姓名 学号 性别 年龄 地址
Jason s001 男 长沙市 岳麓区
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 查询条件:、姓名 、学号 请输入学号:
s002
姓名 学号 性别 年龄 地址
Jask s002 男 北京
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 打印完成,请注意查看!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入要修改的学生学号:
s002
请输入姓名:
Jack_2
请输入性别:

请输入年龄: 请输入地址:
暂无详细住址信息
修改成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 姓名 学号 性别 年龄 地址
Jason s001 男 长沙市 岳麓区
Jack_2 s002 女 暂无详细住址信息
Rose s003 女 纽约
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入学号:
s004
请输入姓名:
测试人物
请输入性别:

请输入年龄: 请输入地址:
暂无
新增成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入要删除的学生学号
s005
没有找到这个学生,不能删除!
删除失败!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 姓名 学号 性别 年龄 地址
Jason s001 男 长沙市 岳麓区
Jack_2 s002 女 暂无详细住址信息
Rose s003 女 纽约
测试人物 s004 男 暂无
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 请输入要删除的学生学号
s004
删除成功!
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出 姓名 学号 性别 年龄 地址
Jason s001 男 长沙市 岳麓区
Jack_2 s002 女 暂无详细住址信息
Rose s003 女 纽约
信息操作指令:、删除 、新增 、修改 、查询 、打印 、备份 、退出