概述
题目要求
本次设计题目如下:
设计高校教师信息管理系统,实现以下五个功能:
(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今天就到这里,欢迎大家私信我进行留言,你想要的加急送到!
最后
以上就是天真丝袜为你收集整理的Java---设计【高校教师信息管理系统】的全部内容,希望文章能够帮你解决Java---设计【高校教师信息管理系统】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复