600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Java---设计【高校教师信息管理系统】

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

时间:2021-07-02 21:58:27

相关推荐

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

题目要求

本次设计题目如下:

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

(1)输入8名教师姓名、工号、性别、所属部门、工作时间;

(2)统计每个部门的教师人数,以及男教师和女教师的人数;

(3)统计工作时间超过的教师人数;

(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;}@Overridepublic 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)统计工作时间超过的教师人数;");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 {// 如果集合里存在当前部门,则人数加1map.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("统计工作时间超过的教师人数;");// 遍历教师列表,查找符合的教师人数for (teacher t : teachers) {if (t.getWorkTime() > 10) {count += 1;}}System.out.println("工作时间超过的教师人数为:" + 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.统计工作时间超过的教师人数 ");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 {// 如果集合里存在当前部门,则人数加1map.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("工作时间超过的教师人数为:" + 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今天就到这里,欢迎大家私信我进行留言,你想要的加急送到!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。