【需求描述】
(1)记录管理人员信息。员工信息包括工号、姓名、性别和一个手机号,工号唯一标识每位员工。
(2)记录地铁站信息。地铁站信息包括地铁站编号、地铁站名称、所属路线、停留时间、起始运营时间、停止运营时间,系统内部用地铁站编号唯一标识每个地铁站。
【结构设计】
管理人员(工号,姓名,性别,手机号)
地铁站(地铁站编号,地铁站名称,所属路线)
【问题1】
请根据业务需求及结构,设计出管理人员类(Manager)和地铁站类(Subway)
要求:
1.包括所涉及的属性
2.要生成getter()&setter()方法
3.要包含无参和带全部参数的构造方法
4.要有相应的toString()方法,用于输出相关属性的值
Manager类
public class Manager {
private String managerID;
private String managerName;
private String sex;
private String telePhone;
public Manager() {
}
public Manager(String managerID, String managerName, String sex, String telePhone) {
this.managerID = managerID;
this.managerName = managerName;
this.sex = sex;
this.telePhone = telePhone;
}
public String getManagerID() {
return managerID;
}
public void setManagerID(String managerID) {
this.managerID = managerID;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTelePhone() {
return telePhone;
}
public void setTelePhone(String telePhone) {
this.telePhone = telePhone;
}
@Override
public String toString() {
return "Manager{" +
"managerID='" + managerID + '\'' +
", managerName='" + managerName + '\'' +
", sex=" + sex +
", telePhone='" + telePhone + '\'' +
'}';
}
}
Subway类
import java.io.Serializable;
public class Subway implements Serializable {
private String subNum;
private String subName;
private String subRoute;
public Subway() {
}
public Subway(String subNum, String subName, String subRoute) {
this.subNum = subNum;
this.subName = subName;
this.subRoute = subRoute;
}
public String getSubNum() {
return subNum;
}
public void setSubNum(String subNum) {
this.subNum = subNum;
}
public String getSubName() {
return subName;
}
public void setSubName(String subName) {
this.subName = subName;
}
public String getSubRoute() {
return subRoute;
}
public void setSubRoute(String subRoute) {
this.subRoute = subRoute;
}
@Override
public String toString() {
return
subNum + ',' +
subName + ',' +
subRoute ;
}
}
【问题2】
运行程序,提示管理员进行登录,根据输入的工号和姓名判断是否登录成功,登录成功,进入下一步,登录失败,给出提示,结束程序
系统中现有管理人员信息如下:
10001,小王,男,13112345678
10002,老于,男,13212345678
10003,老方,男,13312345678
保存在当前项目模块下的managers.txt文件中
系统中现有地铁站信息如下:
s3002,南锣鼓巷,6号线
s5016,王府井,1号线
s2026,西直门,4号线
保存在当前项目模块下的subways.txt文件中
要求:
2.1. 运行程序,将managers.txt文件中的管理人员信息读取到集合中
2.1.1. 将读取到的一行数据切割成字符串数组
2.1.2. 将数组中的元素封装到Manager对象中
2.1.3. 将Manager对象添加到集合中
2.2. 将subways文件中的地铁站信息读取到另一个集合中
2.3. 给出提示,获取管理人员输入的工号和姓名
2.4. 判断管理人员信息集合中是否包含管理人员输入的工号和姓名,给出对应的登录结果
对Manager进行封装对象,并判断存在
import SubwayMenagerment.domian.Manager;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Managerdao {
//创建Manager集合对象
public void getManager(ArrayList<Manager> list) throws IOException {
BufferedReader br = new BufferedReader(
new FileReader("C:\\Users\\Desktop\\JavaProject\\manager.txt"));
String s;
while ((s = br.readLine()) != null) {
/* String ID = s.split(",")[0];
String name = s.split(",")[1];
String sex = s.split(",")[2];
String tel = s.split(",")[3];
Manager manager = new Manager(ID, name, sex, tel);*/
String[] split = s.split(",");
Manager manager = new Manager(split[0], split[1], split[2],split[3]);
list.add(manager);
}
for (Manager get : list) {
System.out.println(get);
}
}
//判断该管理员是否存在
public boolean jujde(String id, String name, ArrayList<Manager> list) {
//遍历集合
boolean judge=false;
for (Manager manager : list) {
//判断
boolean equals = id.equals(manager.getManagerID()) && name.equals(manager.getManagerName());
if (equals) {
System.out.println("登录成功");
judge=true;
break;
}
}
return judge;
}
}
【问题3】
当管理人员登录成功后,给出选项提示,根据管理人员的选择,执行后续的操作
要求:
3.1. 给出提示: 1.查看地铁站 2.添加地铁站
3.2. 获取管理人员输入的选择
3.3. 根据管理人员的选择,执行对应的操作
Enytry类
package SubwayMenagerment.entry;
import SubwayMenagerment.controller.Managerdao;
import SubwayMenagerment.domian.Manager;
import SubwayMenagerment.domian.Subway;
import SubwayMenagerment.controller.SubwayStationdao;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class SubManagerEntry {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ArrayList<Manager> list = new ArrayList<>();
getManagerList(list);//获取员工信息
ArrayList<Subway> list1 = new ArrayList<>();
getSubwayList(list1);//获取地铁信息
System.out.println("欢迎来到管理员登录界面!");
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入工号:");
String id = sc.next();
System.out.println("请输入姓名:");
String name = sc.next();
boolean judge = judgeManager(id, name, list);
if (judge) {
loop:
while (true) {
System.out.println("请输入选择:1.查看地铁站 2.添加地铁站 3.查看txt文件 4.退出");
int input = sc.nextInt();
switch (input) {
case 1:
System.out.println("欢迎来到--查看地铁站--");
lookSubway(list1);//查找地铁信息
break;
case 2:
System.out.println("欢迎来到--添加地铁站--");
addSubway(list1);
break;
case 3:
System.out.println("查看subway.txt文件");
lookFile(list1);
break;
case 4:
System.out.println("感谢您使用地铁信息化管理系统, 再见!");
break loop;
default:
System.out.println("您的输入有误, 请重新输入");
break;
}
}
return;
}
System.out.println("工号或密码不对,请重新输入!");
}
}
private static void getSubwayList(ArrayList<Subway> list1) throws IOException {
SubwayStationdao getSubwayList = new SubwayStationdao();
getSubwayList.getSubway(list1);
}
private static void lookSubway(ArrayList<Subway> list1) throws IOException {
SubwayStationdao substation = new SubwayStationdao();
substation.lookMethod(list1);
}
private static void addSubway(ArrayList<Subway> list1) throws IOException {
SubwayStationdao message = new SubwayStationdao();
message.add(list1);
}
private static void lookFile(ArrayList<Subway> list1) throws IOException, ClassNotFoundException {
SubwayStationdao lookFile = new SubwayStationdao();
lookFile.Preserve(list1);
}
private static boolean judgeManager(String id, String name, ArrayList<Manager> list) {
Managerdao judgement = new Managerdao();
return judgement.jujde(id, name, list);
}
private static void getManagerList(ArrayList<Manager> manager) throws IOException {
Managerdao message = new Managerdao();
message.getManager(manager);
}
}
【问题4】
当管理人员选择1时,执行对应的查看地铁站操作
要求:
4.1. 判断地铁站集合中是否有地铁站信息
4.2. 如果没有地铁站信息,给出提示
4.3. 如果有地铁站信息,遍历集合,打印每个地铁站信息
【问题5】
当管理人员选择2时,执行对应的添加地铁站操作
要求:
5.1.依次给出提示,获取管理人员输入的地铁站信息,包括地铁站编号,地铁站名称,所属路线
5.2. 将管理人员输入的地铁站信息封装成对象,存储到集合中
5.3. 将集合中的地铁站信息更新到文件中,再次打开文件时,应该包含管理人员刚才录入进去的地铁站信息,程序结束
对subway进行封装并增加对象到集合,写入文件
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class SubwayStationdao {
//将地铁信息录入集合中
public void getSubway(ArrayList<Subway> list) throws IOException {
BufferedReader br = new BufferedReader(
new FileReader("C:\\Users\\Desktop\\JavaProject\\subways.txt"));
String s;
while ((s = br.readLine()) != null) {
/* String subNum = s.split(",")[0];
String subName = s.split(",")[1];
String subRoute = s.split(",")[2];
Subway subway = new Subway(subNum, subName, subRoute);*/
String[] split = s.split(",");
Subway subway = new Subway(split[0], split[1], split[2]);
list.add(subway);
}
}
//查看地铁信息
public void lookMethod(ArrayList<Subway> list) {
if (list.size() == 0) {
System.out.println("查无信息,请添加信息!");
} else {
for (Subway subway : list) {
System.out.println(subway);
}
}
}
//增加地铁站
public void add(ArrayList<Subway> list) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入地铁编号:");
String subNum = sc.nextLine();
System.out.println("请输入地铁名称:");
String subName = sc.nextLine();
System.out.println("请输入所属路线:");
String subRoute = sc.nextLine();
Subway subway = new Subway(subNum, subName, subRoute);
list.add(subway);
//将录入的信息存入subway.txt文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\Desktop\\JavaProject\\subways.txt", true));
/* bw.write("\r\n");
bw.write(subNum + ",");
bw.write(subName + ",");
bw.write(subRoute + "\r\n");
bw.flush();*/
bw.write(subway.toString());
bw.newLine();
bw.close();
System.out.println("添加成功!!!");
}
//查看subways文件
public void Preserve(ArrayList<Subway> list) throws IOException, ClassNotFoundException {
BufferedReader br = new BufferedReader(
new FileReader("C:\\Users\\Desktop\\JavaProject\\subways.txt"));
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
/* ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("E:\\JavaProject\\subways.txt"));
Subway read = (Subway) ois.readObject();
System.out.println(read);*/
}
}