Java---设计【高校教师信息管理系统】

题目要求

本次设计题目如下:

设计高校教师信息管理系统,实现以下五个功能:

(1)输入8名教师姓名、工号、性别、所属部门、工作时间;
(2)统计每个部门的教师人数,以及男教师和女教师的人数;
(3)统计工作时间超过10年的教师人数;
(4)输入工号查询教师的信息;
(5)将教师信息保存在文本文件中。

改良前代码(初始代码)

package work.chengxu;

import java.io.FileWriter;
import java.io.IOException;
import java.util.*;


public class teacherManagement {


    static class teacher {

        private String name;
        private int number;
        private String sex;
        private String department;
        private int workTime;

        public teacher() {
        }

        public teacher(String name, int number, String sex, String department, int workTime) {
            this.name = name;
            this.number = number;
            this.sex = sex;
            this.department = department;
            this.workTime = workTime;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getNumber() {
            return number;
        }

        public void setNumber(int number) {
            this.number = number;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public String getDepartment() {
            return department;
        }

        public void setDepartment(String department) {
            this.department = department;
        }

        public int getWorkTime() {
            return workTime;
        }

        public void setWorkTime(int workTime) {
            this.workTime = workTime;
        }

        @Override
        public String toString() {
            return "教师:'" + name + '\'' +
                    ", 工号:" + number +
                    ", 性别:'" + sex + '\'' +
                    ", 所属部门:'" + department + '\'' +
                    ", 工作时间:" + workTime + "\n";
        }
    }


    public static void main(String[] args) throws IOException {
        // 教师列表
        List<teacher> teachers = new LinkedList<teacher>();
        // while循环保证一直在菜单界面
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("\n**********菜单功能**********");
            System.out.println("(1)输入8名教师姓名、工号、性别、所属部门、工作时间;");
            System.out.println("(2)统计每个部门的教师人数,以及男教师和女教师的人数;");
            System.out.println("(3)统计工作时间超过10年的教师人数;");
            System.out.println("(4)输入工号查询教师的信息;");
            System.out.println("(5)将教师信息保存在文本文件中;");
            System.out.println("***************************");
            System.out.println("请输入对应序号进入功能,如:输入1。输入0则退出系统");
            Integer choice = sc.nextInt();
            // 验证输入是否合法
            if (choice > 5 || choice < 1) {
                System.out.println("选择错误,请重试!\n");
            }
            // 处理选择的功能
            switch (choice) {
                case 0:
                    System.exit(0);
                    break;
                case 1:
                    System.out.println("\n**********当前功能**********");
                    System.out.println("1.输入教师姓名、工号、性别、所属部门、工作时间");
                    Scanner sc1 = new Scanner(System.in);
                    while (true) {
                        System.out.println("请输入教师姓名、工号、性别、所属部门、工作时间(用空格分隔),输入“q”结束添加");
                        //教师实体
                        teacher tea = new teacher();
                        //获取用户输入
                        String str1 = sc1.nextLine();
                        if (str1.equals("q")) {
                            break;
                        }
                        //将输入用空格分隔
                        String[] str = str1.split(" ");
                        // 设置教师姓名
                        tea.setName(str[0]);
                        // 设置教师工号
                        tea.setNumber(Integer.parseInt(str[1]));
                        // 设置性别
                        tea.setSex(str[2]);
                        //设置所属部门
                        tea.setDepartment(str[3]);
                        // 设置工作时间
                        tea.setWorkTime(Integer.parseInt(str[4]));
                        //将处理完的教师,保存到教师列表
                        teachers.add(tea);
                    }
                    break;
                case 2:
                    // map:统计部门人数集合
                    Map<String, Integer> map = new HashMap<String, Integer>();
                    // male:男教师数量  。female:女教师数量
                    int male = 0, female = 0;
                    System.out.println("\n**********当前功能**********");
                    System.out.println("2.统计每个部门的教师人数,以及男教师和女教师的人数");
                    // 遍历所有教师,计算所需数据
                    for (teacher t : teachers) {
                        // 如果集合里不存在当前部门,则添加
                        if (!map.containsKey(t.getDepartment())) {
                            map.put(t.getDepartment(), 1);
                        } else {
                            // 如果集合里存在当前部门,则人数加1
                            map.put(t.getDepartment(), map.get(t.getDepartment()) + 1);
                        }
                        if ("男".equals(t.getSex())) {
                            male += 1;
                        } else {
                            female += 1;
                        }
                    }
                    for (String key : map.keySet()) {
                        System.out.println("部门:" + key + ",人数为:" + map.get(key));
                    }
                    System.out.println("男教师人数:" + male);
                    System.out.println("女教师人数:" + female);
                    break;
                case 3:
                    // 记录总人数
                    int count = 0;
                    System.out.println("\n**********当前功能**********");
                    System.out.println("统计工作时间超过10年的教师人数;");
                    // 遍历教师列表,查找符合的教师人数
                    for (teacher t : teachers) {
                        if (t.getWorkTime() > 10) {
                            count += 1;
                        }
                    }
                    System.out.println("工作时间超过10年的教师人数为:" + count);
                    break;
                case 4:
                    System.out.println("\n**********当前功能**********");
                    System.out.println("(4)输入工号查询教师信息;");
                    Scanner sc4 = new Scanner(System.in);
                    int queryNumber = sc4.nextInt();
                    // 遍历教师列表,查找符合的信息
                    for (teacher t : teachers) {
                        if (t.getNumber() == (queryNumber)) {
                            System.out.println(t);
                        }
                    }
                    break;
                case 5:
                    System.out.println("\n**********当前功能**********");
                    System.out.println("(5)将教师信息保存在文本文件中;");
                    // 用文件流保存
                    FileWriter fw = new FileWriter("teacher.txt", true);
                    /**
                     * 调用该对象的write方法,向文件写入字符。
                     * 其实写入到了临时存储缓冲区中,所以需要flush()
                     */
                    for (teacher t : teachers) {
                        fw.write(String.valueOf(t));
                    }
                    fw.flush();
                    fw.close();
                    break;
                default:
                    System.out.println("输入格式错误!重新输入!");
                    break;
            }
        }
    }
}

在这里插入图片描述

  • 后面大家就可以自行输入对应功能前的序号,实现菜单功能

当然,上面的代码看着还有些不完美的,比如注释不全,代码重复。
因为在运行过程中我发现有些地方还是比较冗杂的,下面为大家推出改良升级后代码
喂奶注释

改良后代码(最终代码)

package work.chengxu;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class teacherManagement {
    static class teacher {
        //数据成员
        private String name;
        private int number;
        private String sex;
        private String department;
        private int workTime;

        //成员方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getNumber() {
            return number;
        }
        public void setNumber(int number) {
            this.number = number;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getDepartment() {
            return department;
        }
        public void setDepartment(String department) {
            this.department = department;
        }
        public int getWorkTime() {
            return workTime;
        }
        public void setWorkTime(int workTime) {
            this.workTime = workTime;
        }

        @Override        //@override标签下的方法是对接口get方法的实现
        public String toString() {
            return "教师:'" + name + '\'' +  ", 工号:" + number + ", 性别:'" + sex + '\'' + ", 所属部门:'" + department + '\'' + ", 工作时间:" + workTime + "\n";
        }
    }

    public static void main(String[] args) throws IOException {
        // 教师列表
        List<teacher> teachers = new LinkedList<teacher>();  //list可理解为数组,用来存储较为方便
        // while循环保证一直在菜单界面
        while (true) {
            Scanner sc = new Scanner(System.in);// 则是输入流的入口,像控制台送出信号:要输入内容了,挪出位置
             System.out.println("\n          欢迎使用高校教师信息管理系统            ");
            System.out.println("\n                可供查询功能如下                ");
            System.out.println("   1.输入8名教师姓名、工号、性别、所属部门、工作时间    ");
            System.out.println("   2.统计每个部门的教师人数,以及男教师和女教师的人数   ");
            System.out.println("   3.统计工作时间超过10年的教师人数                 ");
            System.out.println("   4.输入工号查询教师的信息                        ");
            System.out.println("   5.将教师信息保存在文本文件中                     ");
            System.out.println("                   谢谢您的查询                   ");
            System.out.println("    (请输入要查询的内容所对应的序号。输入0退出系统)   ");
            Integer num = sc.nextInt();    //sc是一个类生成的对象,nextInt()是该类的成员函数,该句调用sc对象的nextInt()函数,将返回至赋给choice变量
            // 处理选择的功能
            switch (num) {
                case 0:
                    System.exit(0);
                    break;
                case 1:
                    Scanner sc1 = new Scanner(System.in);
                    while (true) {
                        System.out.println("请输入教师姓名、工号、性别、所属部门、工作时间,输入“e”结束添加");
                        //教师实体
                        teacher tea = new teacher();
                        //获取用户输入
                        String str1 = sc1.nextLine();
                        if (str1.equals("e")) {
                            break;
                        }
                        //将输入用空格分隔
                        String[] str = str1.split(" ");
                        // 设置教师姓名
                        tea.setName(str[0]);
                        // 设置教师工号
                        tea.setNumber(Integer.parseInt(str[1]));   //将整型数据Integer转换为基本数据类型int
                        // 设置性别
                        tea.setSex(str[2]);
                        //设置所属部门
                        tea.setDepartment(str[3]);
                        // 设置工作时间
                        tea.setWorkTime(Integer.parseInt(str[4]));
                        //将处理完的教师,保存到教师列表
                        teachers.add(tea);
                    }
                    break;
                case 2:
                    // map:统计部门人数集合
                    Map<String, Integer> map = new HashMap<String, Integer>(); //map可以存数据,例如存a,就会把a和a的值都存进去
                    // male:男教师数量  female:女教师数量
                    int male = 0, female = 0;
                    // for循环,遍历所有教师集合,计算所需数据。:的意思遍历,teachers是容器相当于列表、数组,存前面的teacher对象, t形参。即就是,从teachers里取出teacher,取出的这个名字就叫t。
                    for (teacher t : teachers) {
                        // 如果集合里不存在当前部门,则添加
                        if (!map.containsKey(t.getDepartment())) {
                            map.put(t.getDepartment(), 1);
                        } else {
                            // 如果集合里存在当前部门,则人数加1
                            map.put(t.getDepartment(), map.get(t.getDepartment()) + 1);
                        }
                        if ("男".equals(t.getSex())) {
                            male += 1;
                        } else {
                            female += 1;
                        }
                    }
                    //这个是增强型for循环,用String key声明的变量去依次指向集合里的每个元素对象,相当是遍历了集合中的所有对象,让后用它输出
                    //map里存名字和值。名字和值是一条数据。遍历这个map,拿到所有里面的名字。
                    for (String key : map.keySet()) {
                        System.out.println("部门:" + key + ",人数为:" + map.get(key));
                    }
                    System.out.println("男教师人数:" + male);
                    System.out.println("女教师人数:" + female);
                    break;
                case 3:
                    // 记录总人数
                    int count = 0;
                    // 遍历教师列表,查找符合的教师人数
                    for (teacher t : teachers) {
                        if (t.getWorkTime() > 10) {
                            count += 1;
                        }
                    }
                    System.out.println("工作时间超过10年的教师人数为:" + count);
                    break;
                case 4:
                    Scanner sc4 = new Scanner(System.in);
                    int queryNumber = sc4.nextInt();
                    // 遍历教师列表,查找符合的信息
                    for (teacher t : teachers) {
                        if (t.getNumber() == (queryNumber)) {
                            System.out.println(t);
                        }
                    }
                    break;
                case 5:
                    // 用文件流保存
                    FileWriter fw = new FileWriter("teacher.txt", true);
                    /**
                     * 调用该对象的write方法,向文件写入字符。
                     * 其实写入到了临时存储缓冲区中,所以需要flush()
                     */
                    for (teacher t : teachers) {
                        fw.write(String.valueOf(t));
                    }
                    fw.flush();   //清除缓存区
                    fw.close();   //关闭IO流
                    break;
                default:
                    System.out.println("错误!请重试!");
                    break;
            }
        }
    }
}

在这里插入图片描述

  • 后面大家就可以自行输入对应功能前的序号,实现此系统的功能

OK今天就到这里,欢迎大家私信我进行留言,你想要的加急送到!

  • 13
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值