航空管理系统

某航空公司在其航班到达的不同的国家的不同地方设有不同的办事处,这个项目要求开发一个自动化软件系统,该系统将提供给这些办事处的管理者(role=1)和普通用户(role=0)用于管理航班信息。根据以上描述,要求实现系统的用户模块和办事处模块,包含以下功能(注:系统存在一个默认管理员admin/admin123)
用户模块:

  1. 用户添加
  2. 密码修改
  3. 个人信息查看
  4. 账号状态修改(禁用0、启用1)
  5. 用户登录(被禁用账号无法登录并提示友好的消息)
  6. 修改用户角色(设置取消管理员)
  7. 用户列表
  8. 删除用户
    用户类
    (User)id,账号(username),密码(passord),年龄(age),角色(role),邮箱(email),办事处id(officeID),账户状态(status)办事处类(Office):id,办公室名(officeName)

package testa;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Scanner;

import javax.print.attribute.standard.Fidelity;

public class UserModule {
private Scanner sc;
private ArrayList list = new ArrayList<>();
private User user;

public UserModule() {
	this.sc = new Scanner(System.in);
	getuser();
	writeuser();
}

// 获取用户
public void getuser() {
	FileInputStream fis = null;
	ObjectInputStream ois = null;
	try {
		fis = new FileInputStream("D:/testa/src/user.txt");
		ois = new ObjectInputStream(fis);
		Object obj = ois.readObject();
		// 把文件输入到链表
		// (一开始没实现)
		if (obj instanceof ArrayList) {
			this.list = (ArrayList<User>) obj;
		}
	} catch (EOFException e) {
		// 文件内没有用户,创建一个初始用户
		this.list = new ArrayList<User>();
		User user = new User("1", "admin", "admin123", "20", "123@qq.com", " 14", "1", " 1");
		list.add(user);
		writeuser();

	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
		if (ois != null) {
			try {
				ois.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (fis != null) {

			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

// 写入用户
public void writeuser() {
	FileOutputStream fos = null;
	ObjectOutputStream oos = null;
	try {
		fos = new FileOutputStream("D:/testa/src/user.txt");
		oos = new ObjectOutputStream(fos);
		oos.writeObject(list);
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
		if (oos != null) {
			try {
				oos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (fos != null) {

			try {
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

}

// 选择界面
public void choice(User user) {
	System.out.println("请输入您的选择");
	System.out.println("1.用户添加");
	System.out.println("2.用户密码修改");///
	System.out.println("3.个人信息查看");
	System.out.println("4.账号状态修改");
	System.out.println("5.用户登录");
	System.out.println("6.");
	System.out.println("7.用户列表");
	System.out.println("8.删除用户");
	System.out.println("9.退出");
	System.out.println(">>");
	String ch = sc.nextLine();
	switch (ch) {
	case "1":
		adduser();

		break;
	case "2":
		changePassword();
		break;
	case "3":
		search();
		choice(user);
		break;
	case "4":
		break;
	case "5":
		login();
		choice(user);
		break;
	case "6":
		break;
	case "7":
		showall();
		choice(user);
		break;
	case "8":
		deleteuser();
		break;
	case "9":
		break;
	}
}

// 修改密码
public void changePassword() {
	String name;
	String password;
	String newpassword;
	String repassword;
	System.out.println("请输入用户名");
	name = sc.nextLine();
	System.out.println("请输入原密码");
	password = sc.nextLine();
	if (user.getUsername().equals(name) && user.getPassword().equals(password)) {
		for (User user : list) {
			if (!password.equals(user.getPassword())) {
				System.out.println("密码错误请重新输入");
				changePassword();
			}
			System.out.println("请输入新密码");
			newpassword = sc.nextLine();
			System.out.println("请确认新密码");
			repassword = sc.nextLine();

			if (!newpassword.equals(repassword)) {
				System.out.println("两次密码输入不一致,请重新输入");
				changePassword();
			} else {
				user.setPassword(newpassword);
				list.add(user);
				writeuser();
				System.out.println("密码修改成功");
				choice(user);
			}
		}
	}else{
		System.out.println("用户名或密码不匹配");
		changePassword();
	}
}

// 用户添加
public void adduser() {
	FileOutputStream fos = null;
	ObjectOutputStream oos = null;

	try {
		User user = new User();
		fos = new FileOutputStream("D:/testa/src/user.txt");
		oos = new ObjectOutputStream(fos);

		System.out.println("请输入添加的用户id");
		String id = sc.nextLine();
		user.setId(id);
		System.out.println("请输入添加的用户账号");
		String username = sc.nextLine();
		user.setUsername(username);
		System.out.println("请输入添加的用户密码");
		String password = sc.nextLine();
		user.setPassword(password);
		System.out.println("请输入添加的用户年龄");
		String age = sc.nextLine();
		user.setAge(age);
		System.out.println("请输入添加的用户角色");
		String role = sc.nextLine();
		user.setRole(role);
		System.out.println("请输入添加的用户邮箱");
		String email = sc.nextLine();
		user.setEmail(email);
		System.out.println("请输入添加的用户办事处ID");
		String officeID = sc.nextLine();
		user.setOfficeID(officeID);
		System.out.println("请输入添加的用户账号状态");
		String status = sc.nextLine();
		user.setStatus(status);
		list.add(user);
		oos.writeObject(list);
		System.out.println("添加用户成功");
		choice(user);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
		if (fos != null) {
			try {
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (oos != null) {

			try {
				oos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

// 登录
public void login() {
	System.out.println("请输入您的账号");
	String count = sc.nextLine();
	System.out.println("请输入您的密码");
	String pwd = sc.nextLine();
	System.out.println("文件长度:" + list.size());
	for (User user : list) {
		if (user.getUsername().equals(count) && user.getPassword().equals(pwd)) {
			System.out.println("登录成功");
			choice(user);

		} else {
			System.out.println("用户名或密码错误");
			login();
		}
	}

}

// 查看用户列表
public void showall() {
	getuser();
	if (list.size() == 0) {
		System.out.println("当前用户为空");
	} else {
		for (User user : list) {
			System.out.println(user);
		}
	}

}

// 删除用户
public void deleteuser() {
	System.out.println("请输入想要删除的用户id");
	String di = sc.nextLine();
	for (User user : list) {
		if (user.getId().equals(di)) {
			list.remove(user);
			System.out.println("删除成功");
			writeuser();
			choice(user);
		}
	}
}

// 根据id查看用户
public void search() {
	System.out.println("请输入您想要查看的id");
	String si = sc.nextLine();
	for (User user : list) {
		if (user.getId() == si) {
			System.out.println(si);
		} else {
			System.out.println("用户不存在");
		}
	}
}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OOP(机试)[具体要求在压缩文档中给出] 项目名称: Air Infomation System 基于控制台的航班信息系统,简称AIS 具体要求如下: (1)显示航班信息系统主菜单,如图-1所示,包括: 1)列出所有航班 2)按起飞时间查询 3)按目的地查询 4)删除航班 5)更新航班 6)退出系统 (2)列出所有航班:查出所有航班的信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 航班信息实体类(AirInfo) 航班编号(id) 航班号(flight_number) 目的地(destination) 起飞日期(flight_date) 航班信息管理类AirInfoManager类 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 6.创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 7.创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询 的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出系统的方法。 8.创建TestAirInfo类,启动和运行系统。 9.航班的信息用ArrayList(或数组)保存。 10.要求代码规范,命名正确。
# OOP(机试) 本程序总结文章:http://blog.qiji.tech/?p=10344 - - - ## 程序基本要求 一、项目名称: Air Infomation Programming 基于控制台的航班信息程序,简称AIP 二、具体要求如下: (1)显示航班信息程序主菜单,如图-1所示,包括: * 1)列出所有航班 * 2)按起飞时间查询 * 3)按目的地查询 * 4)删除航班 * 5)更新航班 * 6)退出系统 (2)列出所有航班:查出所有航班的信息,以列表形式显示,包括:编号,航班号,目的地,起飞日期。 (3)按起飞时间查询:输入起飞时间(格式如2011-2-25),查出所有这一天的航班。 (4)按目的地查询:输入目的地,查出所有飞往此地的航班。 (5)删除航班:删除指定编号的航班。 (6)更新航班:更新指定编号的航班。 (7)退出系统。 三、类的设计 需要定义如下类 * 航班信息实体类(AirInfo) * 航班编号(id) * 航班号(flight_number) * 目的地(destination) * 起飞日期(flight_date) * 航班信息管理类AirInfoManager类 * 程序入口类TestAirInfo类 四、具体要求及推荐实现步骤 1. 创建实体类AirInfo,属性私有化,根据业务提供需要的构造方法和setter/getter方法。 1. 创建航班管理AirInfoManager类,在类中提供列出所有航班的方法,按起飞时间查询的方法、按目的地查询的方法、删除航班的方法、更新航班的方法、退出程序的方法。 2. 创建TestAirInfo类,启动和运行程序。 3. 航班的信息用ArrayList(或数组)保存。 4. 要求代码规范,命名正确。 - - -

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值