今天给大家带来Java快递问题
这个问题采用了mvc的方法,分为三个部分首先是view模块,这一部分主要是视图部分,能让程序员看到的部分。第二部分是dao部分,主要是存储数据,和参与计算的部分,很重要。最后一部分就是主函数main,懂得都得,这一部分为了能参与修改,所以不含输出,主要靠调用view里面的方法。还有就是调用dao里面的数据,如果难以理解,欢迎在下面评论或者私聊,欢迎骚扰。
view
public class Views {
private Scanner sc = new Scanner(System.in);
public Express e = new Express();
/**
* 欢迎语句
* @return
*/
public void sayHello(){
System.out.println("欢迎使用本快递");
}
/**
* 菜单语句
* @return
*/
public int menu(){
System.out.println("请根据提示,输入功能序号");
System.out.println("请输入你的身份:");
System.out.println("1-快递员");
System.out.println("2-用户");
System.out.println("0-退出");
String text = sc.nextLine();
int num = -1;
try{
num = Integer.parseInt(text);
}catch(NumberFormatException e){
}if(num<0||num>2){
return menu();
}
return num;
}
/**
* 管理员菜单
* @return
*/
public int cMeun(){
System.out.println("请选择操作:");
System.out.println("1-存快递");
System.out.println("2-修改快递信息");
System.out.println("3-删除快递");
System.out.println("4-查看所有快递");
System.out.println("0-返回");
String text = sc.nextLine();
int num = -1;
try{
num = Integer.parseInt(text);
}catch(NumberFormatException e){
}if(num<0||num>4){
System.out.println("输入有误,请重新输入。");
return cMeun();
}
return num;
}
/**
* 快递员录入快递
* @return 返回的是快递的单号和快递公司
*/
public Express add(){
System.out.println("请根据提示,输入快递信息");
System.out.println("请输入快递单号:");
String number = sc.nextLine();
System.out.println("请输入快递公司:");
String company = sc.nextLine();
e.setCompany(company);
e.setNumber(number);
return e;
}
/**
* 根据快递单号找快递
* @param
* @return
*/
public String findByNumber(){
System.out.println("请根据提示,输入快递信息");
System.out.println("请输入快递单号:");
String number = sc.nextLine();
return number;
}
/**
* 打印快递的信息
* @param e
*/
public void printExpress(Express e){
System.out.println("快递的信息如下");
System.out.println("快递的单号为"+e.getNumber()+"快递公司为:"+e.getCompany()+"取件码为:"+e.getCode());
}
/**
* 修改
* @param number
* @return
*/
public Express update(Express number){
System.out.println("请输入新的快递单号");
String number1 = sc.nextLine();
System.out.println("请输入新的快递公司:");
String company = sc.nextLine();
e.setCompany(company);
e.setNumber(number1);
return e;
}
/**
* 删除快递
* @return
*/
public int delete(){
System.out.println("请问是否确定删除");
System.out.println("1-确定删除");
System.out.println("2-取消删除");
String text = sc.nextLine();
int num = -1;
try{
num = Integer.parseInt(text);
}catch(NumberFormatException e){
}if(num<1||num>2) {
System.out.println("输入有误,请重新输入。");
return delete();
}
return num;
}
/**
* 打印所以的快递
* @param es
*/
public void findByAll(Express[][] es){
int count = 0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if (es[i][j] !=null) {
count++;
System.out.println("快递在第"+(i+1)+"行"+(j+1)+"列");
printExpress(es[i][j]);
}
}
}
if(count == 0){
System.out.println("暂无快递");
}
}
public void printNull(){
System.out.println("快递不存在,请重新输入");
}
public void printCode(Express e){
System.out.println("快递的取件码是:"+e.getCode());
}
public void success(){
System.out.println("操作成功");
}
public void expressExist(){
System.out.println("此快递已存储");
}
/**
* 用户菜单
* @return
*/
public int uMeun(){
System.out.println("请根据提示取快递");
System.out.println("请输入六位的取件码");
String text = sc.nextLine();
int num = -1;
try{
num = Integer.parseInt(text);
}catch(NumberFormatException e){
}if(num<100000||num>999999){
System.out.println("输入有误,请重新输入。");
return uMeun();
}
return num;
}
}
dao
public class Dao {
public Express e = new Express();
private Express[][] date = new Express[10][10];
private int size;
private Random r = new Random();
/**
* 快递录入
* @param e
* @return
*/
public boolean add(Express e){
if(size==100){
return false;
}
int x = -1;
int y = -1;
while(true) {
x = r.nextInt(10);
y = r.nextInt(10);
if(date[x][y] == null){
break;
}
}
int code =randomCode();
e.setCode(code);
date[x][y] = e;
return true;
}
/**
* 生成随机的取件码
* @return
*/
public int randomCode() {
while (true) {
int code = r.nextInt(900000) + 100000;
Express e = findCode(code);
if (e == null) {
return code;
}
}
}
/**
* 查找快递单号
* @param number
* @return
*/
public Express findNumber(String number){
Express e = new Express();
e.setNumber(number);
for(int i = 0 ;i<10;i++){
for(int j = 0;j<10;j++){
if (date[i][j] != null)
if (number.equals(date[i][j].getNumber())){
return date[i][j];
}
}
}
return null;
}
/**
* 查找取件码
* @param code
* @return
*/
public Express findCode(int code){
for(int i = 0 ;i<10;i++){
for(int j = 0;j<10;j++){
if (date[i][j] != null)
if (date[i][j].getCode() == code){
return date[i][j];
}
}
}
return null;
}
/**
* 修改快递
* @param
*/
public void update(Express oldExpress,Express newExpress){
delete(oldExpress);
add(newExpress);
}
/**
* 删除快递
* @param e
*/
public void delete(Express e){
p:for(int i = 0 ;i<10;i++) {
for (int j = 0; j < 10; j++) {
if(e.equals(date[i][j])){
date[i][j] = null;
break p;
}
}
}
}
/**
* 所有快递
* @return
*/
public Express[][] findAll(){
return date;
}
}
Main
public class Main {
public static void main(String[] args) {
init();
}
private static Views view =new Views();
private static Dao dao = new Dao();
public static void init(){
view.sayHello();
int menu = view.menu();
m:while(true){
switch(menu){
//0选项:退出
case 0:
break m;
//1选项:进入快递员界面
case 1:
cClient();
break;
//2选项:进入用户界面
case 2:
uClient();
break ;
}
}
}
public static void uClient(){
//获得用户输入的取件码
int code = view.uMeun();
//取出快递
Express e = dao.findCode(code);
if (e == null){
view.printNull();
}else{
view.printExpress(e);
view.success();
}
}
public static void cClient(){
while(true){
int menu = view.cMeun();
switch(menu){
case 0:
init();
case 1:{
//提示输入快递信息
Express e = view.add();
//查询快递单号是否已经存储
Express e2 = dao.findNumber(e.getNumber());
//存储快递
if (e2 == null){
dao.add(e);
view.printExpress(e);
break;
}else{
//单号重复
view.expressExist();
}
}
//快递修改
case 2:{
//输入快递信息
String number = view.findByNumber();
//查找数据
Express e =dao.findNumber(number);
Express e2=e;
//打印快递信息
if (e == null){
view.printNull();
}else{
view.printExpress(e);
view.update(e2);
dao.update(e,e2);
}
}
break;
//删除快递
case 3:{
//输入快递单号并查找
String number = view.findByNumber();
Express e = dao.findNumber(number);
if (e == null){
view.printNull();
}else{
view.printExpress(e);
int type = view.delete();
if(type == 1){
dao.delete(e);
view.success();
}
}
}
break;
//查看所有
case 4:{
Express[][] date = dao.findAll();
view.findByAll(date);
}
break;
}
}
}
}
创建的Express类
这一部分可有可无,但是本人现阶段使用了,就为大家提供了,后续会提供未使用这个类的使用方法。
相信大家都能看懂,就是创建了三个数据,然后调用了,pojo类的方法,将geter,seter,equals,toString,全参构造方法,无参构造方法。你们这么聪明,肯定都不看这行的。嘿嘿嘿
public class Express {
private String number;
private String company;
int code;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public Express() {
super();
}
public Express(String number, String company, int code) {
this.number = number;
this.company = company;
this.code = code;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Express express = (Express) o;
return code == express.code;
}
@Override
public String toString() {
return "Express{" +
"number='" + number + '\'' +
", company='" + company + '\'' +
", code=" + code +
'}';
}
}
行文至此,感谢观看。
完整的包可以私聊我给你。