/**
* 移动卡类
*/
public class MobileCard {
private String cardNumber; //卡号
private String userName; //用户名
private String passWord; //密码
private ServicePackage serPackage; //移动卡所属套餐
private double consumAmount; //本月消费金额
private double money; //本月余额
private int realTalkTime; //本月实际通话时长
private int realSMSCount; //本月实际发送短信条数
private int realFlow; //本月实际上网流量 public MobileCard() {
//super();
} //接受新注册移动卡用户的名称,和手机号,密码
public MobileCard(String cardNumber, String userName, String passWord){
this.cardNumber=cardNumber;
this.userName=userName;
this.passWord=passWord;
} public MobileCard(String cardNumber, String userName, String passWord,
ServicePackage serPackage, double consumAmount, double money,
int realTalkTime, int realSMSCount, int realFlow) {
//super();
this.cardNumber = cardNumber;
this.userName = userName;
this.passWord = passWord;
this.serPackage = serPackage;
this.consumAmount = consumAmount;
this.money = money;
this.realTalkTime = realTalkTime;
this.realSMSCount = realSMSCount;
this.realFlow = realFlow;
} public String getCardNumber() {
return cardNumber;
} public void setCardNumber(String cardNumber) {
this.cardNumber = cardNumber;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
} public ServicePackage getSerPackage() {
return serPackage;
} public void setSerPackage(ServicePackage serPackage) {
this.serPackage = serPackage;
} public double getConsumAmount() {
return consumAmount;
} public void setConsumAmount(double consumAmount) {
this.consumAmount = consumAmount;
} public double getMoney() {
return money;
} public void setMoney(double money) {
this.money = money;
} public int getRealTalkTime() {
return realTalkTime;
} public void setRealTalkTime(int realTalkTime) {
this.realTalkTime = realTalkTime;
} public int getRealSMSCount() {
return realSMSCount;
} public void setRealSMSCount(int realSMSCount) {
this.realSMSCount = realSMSCount;
} public int getRealFlow() {
return realFlow;
} public void setRealFlow(int realFlow) {
this.realFlow = realFlow;
} /**
* 显示移动卡的信息
*/
public void showMeg(){ }
}
/**
* 三个移动套餐----父类
*/
public abstract class ServicePackage {
//三个套餐的共同属性就是每月要交月租,不交钱还想用卡?
private double price; public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public ServicePackage() {
super();
} public ServicePackage(double price) {
super();
this.price = price;
} //定义一个抽象的控制台输出方法,三个套餐子类会用到
public abstract void showInfo();
}
/**
* 短信---接口
*/
public interface SendService {
public abstract int send(int count, MobileCard card) throws Exception;
}
/**
* 上网流量---接口
*/
public interface NetService {
public abstract int netPlay(int flow, MobileCard card) throws Exception;
}
/**
* 通话--接口
*/
public interface CallService {
public abstract int call (int minCount, MobileCard card) throws Exception;
}
/**
* 超人套餐
* 此套餐继承套餐总类,并实现发送短信,上网流量,语音通话的三个接口
*/
public class SuperPackage extends ServicePackage implements SendService, NetService, CallService {
private int talkTime; //通话时长
private int smsCount; //短信数量
private int flow; //上网流量 public SuperPackage() {
super();
} public SuperPackage(double price, int talkTime, int smsCount, int flow) {
super(price);
this.talkTime = talkTime;
this.smsCount = smsCount;
this.flow = flow;
} public int getTalkTime() {
return talkTime;
} public void setTalkTime(int talkTime) {
this.talkTime = talkTime;
} public int getSmsCount() {
return smsCount;
} public void setSmsCount(int smsCount) {
this.smsCount = smsCount;
} public int getFlow() {
return flow;
} public void setFlow(int flow) {
this.flow = flow;
} //通话时长---暂时未实现具体功能
public int call(int minCount, MobileCard card) throws Exception{
int temp = minCount;
return temp;
} //使用流量数---暂时未实现具体功能
public int netPlay(int flow, MobileCard card) throws Exception {
int temp = flow;
return temp;
} //发送短信数量---暂时未实现具体功能
public int send(int count, MobileCard card) throws Exception {
int temp = count;
return temp;
} //重写套餐父类showInfo输出方法
public void showInfo() {
}
}
/**
* 话唠套餐
* 此套餐继承套餐总类,并实现发送短信,语音通话的二个接口
* 戒除网瘾,从此套餐开始
*/ public class TalkPackage extends ServicePackage implements CallService, SendService {
private int talkTime;//通话时长
private int smsCount;//短信条数 public TalkPackage() {
super();
} public TalkPackage(double price, int talkTime, int smsCount) {
//把此套餐的价格传给父类
super(price);
this.talkTime = talkTime;
this.smsCount = smsCount;
} public int getTalkTime() {
return talkTime;
} public void setTalkTime(int talkTime) {
this.talkTime = talkTime;
} public int getSmsCount() {
return smsCount;
} public void setSmsCount(int smsCount) {
this.smsCount = smsCount;
} //通话时长---未实现此功能
public int call(int minCount, MobileCard card) throws Exception {
int temp = minCount;
return temp;
} //发送短信数量------未实现此功能
public int send(int count, MobileCard card) throws Exception {
int temp = count;
return temp;
} //重写套餐父类showInfo输出方法
public void showInfo() {
}
}
/**
* 网虫套餐---网瘾少年,从此套餐做起~~~
* 此套餐继承餐套父类并继承上网流量接口
*/
public class NetPackage extends ServicePackage implements NetService {
private int flow; //上网流量 public NetPackage() {
super();
} public NetPackage(double price, int flow) {
super(price);
this.flow = flow;
} public int getFlow() {
return flow;
} public void setFlow(int flow) {
this.flow = flow;
} //使用流量---未实现此功能
public int netPlay(int flow, MobileCard card) throws Exception {
int temp = flow;
return temp;
} //重写套餐父类showInfo输出方法
public void showInfo() {
} }
/**
* 实例化三个套餐类
*/
public class Common {
//实例化话唠套餐
//括号参数分别对应(价格,通话时间,短信数量)
static TalkPackage talkPackage = new TalkPackage(58, 500, 30);
//实例化网虫套餐
//括号参数分别对应(价格,上网流量)
static NetPackage netPackage = new NetPackage(68, 3 * 1024);
//实例化超人套餐
//括号参数分别对应(价格,通话时间,短信数量,上网流量)
static SuperPackage superPackage = new SuperPackage(78, 200, 50, 1 * 1024);
}
import java.io.*;
import java.util.*; /**
* 工具类
*/
public class CardUtil {
//初始用户集合
protected static Map<String, MobileCard> cards = new HashMap<String, MobileCard>();
//卡号消费记录列表
protected static Map<String, List<ConsumInfo>> consumInfos = new HashMap<String, List<ConsumInfo>>();
//Scanner方法,后面的方法会多次用到
protected static Scanner input = new Scanner(System.in); public CardUtil() {
//super();
} /**
* 添加用户
*/
public static void addCard(MobileCard card) {
cards.put(card.getCardNumber(), card);
} /**
* 话费充值
*/
public static void chargeMoney(String number) {
System.out.println("请输入要充值的金额(不少于50元):");
while (true) {
double money = 0.0;
while (true) {
Scanner input = new Scanner(System.in);
if (input.hasNextDouble() == true) {
money = input.nextDouble();
break;
} else {
System.out.print("输入错误!请重新输入:");
}
}
if (money < 50) {
System.out.println("输入金额少于50元请重新输入:");
continue;
} else {
cards.get(number).setMoney(cards.get(number).getMoney() + money);
System.out.println("充值成功,当前话费余额为" + cards.get(number).getMoney());
break;
}
} } /**
* 套餐费用简介
*/
public static void introduce() throws IOException {
//该文件地址需按照自己的文件地址格式来写
File file = new File("E:\\JavaLog/logs/2.txt");
//指定读取编码格式为bgk(解决读取出现中文乱码)
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
try {
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("没有找到套餐费用简介文件");
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
br.close();
}
} /**
* 本月账单查询
*/
public static void showAmountDetail(String number) {
MobileCard mobileCard = cards.get(number);
System.out.println("您的卡号为:" + mobileCard.getCardNumber());
System.out.println("当月账单如下:");
System.out.println("套餐资费:" + mobileCard.getSerPackage().getPrice() + "元"
+ "\t合计消费:" + mobileCard.getConsumAmount() + "元"
+ "\t账户余额:" + mobileCard.getMoney() + "元");
} /**
* 套餐余量查询
*/
public static void showRemainDetail(String searchNumber) {
MobileCard mobileCard = cards.get(searchNumber);
MobileCard card;
int remainTalkTime;
int remainSmsCount;
int remainFlow; StringBuffer meg = new StringBuffer();
card = cards.get(searchNumber);
meg.append("您的手机号码是" + searchNumber + "餐套内剩余:\n");
ServicePackage pack = card.getSerPackage();
//向下转型超人类型
if (pack instanceof SuperPackage) {
SuperPackage cardPack = (SuperPackage) pack;
//查询套餐内剩余的通话时长
remainTalkTime = cardPack.getTalkTime() > card.getRealTalkTime() ? cardPack.getTalkTime() - card.getRealTalkTime() : 0;
meg.append("通话时长:" + remainTalkTime + "分钟\n");
//查询套餐内剩余的短信条数
remainSmsCount = cardPack.getSmsCount() > card.getRealSMSCount() ? cardPack.getSmsCount() - card.getRealSMSCount() : 0;
meg.append("短信条数:" + remainSmsCount + "条");
//查询套餐内剩余的流量
remainFlow = cardPack.getFlow() > card.getRealFlow() ? cardPack.getFlow() - card.getRealFlow() : 0;
meg.append("通话时长:" + remainFlow + "分钟\n"); System.out.println("您的手机号是:" + mobileCard.getCardNumber() + ",套餐内剩余:");
System.out.println("通话时长:" + remainTalkTime);
System.out.println("短信条数:" + remainSmsCount);
System.out.println("上网流量:" + remainFlow); //向下转型上网套餐
} else if (pack instanceof NetPackage) {
NetPackage cardPack = (NetPackage) pack;
//查询套餐内剩余的流量
remainFlow = cardPack.getFlow() > card.getRealFlow() ? cardPack.getFlow() - card.getRealFlow() : 0;
meg.append("通话时长:" + remainFlow + "分钟\n");
System.out.println("您的手机号是:" + mobileCard.getCardNumber() + ",套餐内剩余:");
System.out.println("上网流量:" + remainFlow); //向下转型话痨
} else {
TalkPackage cardPack = (TalkPackage) pack;
//查询套餐内剩余的通话时长
remainTalkTime = cardPack.getTalkTime() > card.getRealTalkTime() ? cardPack.getTalkTime() - card.getRealTalkTime() : 0;
meg.append("通话时长:" + remainTalkTime + "分钟\n"); System.out.println("您的手机号是:" + mobileCard.getCardNumber() + ",套餐内剩余:");
System.out.println("通话时长:" + remainTalkTime);
}
} /**
* 打印消费详单--未实现此功能
*/
public static void printAmountDetail(String number) {
} /**
* 套餐变更---未实现此功能
*/
public static void changingPack(String number) {
} /**
* 办理退网
*/
public static void delCard(String number) {
Set<String> numberKeys = cards.keySet();
Iterator<String> it = numberKeys.iterator();
while (it.hasNext()) {
String numberKey = it.next();
//如果在集合中找到此号码,则删除他,完成退网
if (numberKey.equals(number)) {
//删除
cards.remove(numberKey);
System.out.println("卡号" + number + "办理退网成功\n谢谢使用!");
} else {
System.out.println("没有找到您的手机号码,退卡失败!");
}
}
} /**
* 根据手机号码和密码验证该卡是否已经是移动用户
* 实行登陆操作
*/
public static boolean isExistCard(String number, String passWord) {
if (cards.size() != 0) {
Set<String> numberKeys = cards.keySet();
Iterator<String> its = numberKeys.iterator();
while (its.hasNext()) {
String numberKey = its.next();
//根据key取出对应的值
MobileCard mobileCard = cards.get(numberKey);
//trim()作用是无视开始于结束的空格
if (number.trim().equals(numberKey.trim()) && passWord.trim().equals(mobileCard.getPassWord().trim())) {
System.out.println("尊敬的☆" + mobileCard.getUserName() + "☆五星级会员,恭喜您登陆成功!\n");
return true;
} else if (number.trim().equals(numberKey.trim()) == true && passWord.trim().equals(mobileCard.getPassWord().trim()) == false) {
System.out.println("尊敬的☆" + mobileCard.getUserName() + "☆五星级会员,很遗憾您密码输入错误哦~");
return false;
}
}
System.out.println("对不起您还没有注册会员呢~");
return false;
} else {
System.out.println("对不起您还没有注册会员呢~");
return false;
}
} /**
* 手机号码验证是否已经注册
*/
public static boolean isExistCard(String number) {
if (cards.size() != 0) {
Set<String> numberKeys = cards.keySet();
Iterator<String> its = numberKeys.iterator();
while (its.hasNext()) {
if (number.equals(its.next())) {
return true;
}
}
System.out.println("对不起此号码还不是移动会员~");
return false;
} else {
System.out.println("对不起此号码还不是移动会员~");
return false;
}
} /**
* 生成随机卡号
*/
public static String createNumber() {
Random random = new Random();
boolean isExist = false;
String number = "";
int temp = 0;
do {
isExist = false;
//生成的随机数是8位
do {
temp = random.nextInt(100000000);
} while (temp < 10000000);
//生成之前,前面加“139”
number = "139" + temp;
//和已经注册的用户的卡号对比,重复则无法注册
if (cards != null) { //价格判断
Set<String> cardNumbers = cards.keySet();
for (String cardNumber : cardNumbers) {
if (number.equals(cardNumber)) {
isExist = true;
break;
}
}
} } while (isExist);
return number;
} /**
* 生成指定个数的卡号列表
*/
public static String[] getNewNumbers(int count) {
String[] strs = new String[count];
for (int i = 0; i < count; i++) {
strs[i] = createNumber();
}
return strs;
} /**
* 添加指定卡号的消费记录
*/
public static void addConsumInfo(String number, ConsumInfo info) {
if (consumInfos.containsKey(number)) {
consumInfos.get(number).add(info);
} else {
List<ConsumInfo> list = new ArrayList<ConsumInfo>();
list.add(info);
consumInfos.put(number, list);
}
}
}
import java.io.IOException;
import java.util.Scanner; /**
* 业务类
*/
class SosoMgr {
Scanner input = new Scanner(System.in); /**
* 实现主菜单
*/
public void mainMenu() throws IOException {
String number = "";
boolean flag = true; do {
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("*****************国庆钜惠走过路过不要错过***************");
System.out.print("请输入功能编号:");
String num = input.next();
switch (num) {
case "1":
System.out.println("*****************************《用户登录》*****************************");
System.out.print("请输入您的手机号:");
number = input.next();
if (number.length() == 11) {
System.out.print("请输入您的密码:");
String passWord = input.next();
//通过手机号和密码判断该用户是否存在
if (CardUtil.isExistCard(number, passWord)) {
cardMenu(number);
}
flag = true;
} else {
System.out.println("您输入的手机号码格式不正确!");
}
break;
case "2":
System.out.println("*****************************《用户注册》*****************************");
registCard(); flag = true;
break;
case "3":
System.out.println("*****************************《使用嗖嗖》*****************************");
flag = true;
break;
case "4":
System.out.println("*****************************《话费充值》*****************************");
System.out.println("请输入充值手机号码:");
String refill_Number = input.next();
if (CardUtil.isExistCard(refill_Number)) {
CardUtil.chargeMoney(refill_Number);
} flag = true;
break;
case "5":
CardUtil.introduce();
flag = true;
break;
case "6":
System.out.println("*****************************《客户咨询》*****************************");
//客户咨询功能未实现,可在CardUtil类写出ask方法来实现
//CardUtil.ask()
flag = true;
break;
case "7":
System.out.println("*****************************《退出系统》*****************************");
System.out.println("谢谢使用");
flag = false;
break;
default:
System.out.println("输入错误,请重新输入!");
flag = true;
break;
}
} while (flag);
} /**
* 二级菜单
*/
public void cardMenu(String number) {
boolean flag = true;
while (flag) {
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("请选择(输入1~5选择功能,其它键返回上一级):");
//num定义为String类型可以防止输入数字过大而导致的InputMismatchException异常
String num = input.next();
switch (num) {
case "1":
System.out.println("*****************************《本月账单查询》*****************************");
CardUtil.showAmountDetail(number);
flag = true;
break;
case "2":
System.out.println("*****************************《套餐余量查询》*****************************");
CardUtil.showRemainDetail(number);
flag = true;
break;
case "3":
System.out.println("*****************************《打印消费详情》*****************************");
CardUtil.printAmountDetail(number);
flag = true;
break;
case "4":
System.out.println("*****************************《套餐变更》*****************************");
CardUtil.changingPack(number);
flag = true;
break;
case "5":
System.out.println("*****************************《办理退网》*****************************");
CardUtil.delCard(number);
flag = true;
break;
default:
flag = false;
break;
}
if (flag) {
System.out.print("输入0返回上一层,输入其他键返回首页:");
int strNum = input.nextInt();
if (strNum == 1) {
continue;
} else {
flag = false;
}
}
}
} /**
* 用户注册
*/
public void registCard() {
MobileCard mobileCard = new MobileCard();
System.out.println("***************************可选择的手机号码***************************");
//通过循环遍历输出卡号,要输出10个号码
String[] cardNumbers = CardUtil.getNewNumbers(9);
for (int i = 0; i < cardNumbers.length; i++) {
System.out.print((i + 1) + "." + cardNumbers[i] + "\t");
if (2 == i || 5 == i || 8 == i) {
System.out.println();
}
}
System.out.print("请选择卡号:");
while (true) {
Scanner input = new Scanner(System.in);
if (input.hasNextInt() == true) {
int num = input.nextInt();
if (0 < num && num < 10) {
mobileCard.setCardNumber(cardNumbers[num - 1]);
break;
} else {
System.out.print("输入错误!请输入(1~9)的数字:");
continue;
}
} else {
System.out.print("输入错误!请输入(1~9)的整数:");
continue;
}
}
System.out.println("1.话唠套餐 2.网虫套餐 3.超人套餐 , 请选择套餐(输入序号):");
boolean bol = true;
while (bol) {
//core定义为String类型可以防止输入数字过大而导致的InputMismatchException异常
String core = input.next();
switch (core) {
case "1":
//从此段注释开始,Case1、Case2、Case3 是相同代码块,只有变量不同
//提取出去写成方法在Case直接调用,无法正确获取注册的手机号码
mobileCard.setSerPackage(Common.superPackage);
System.out.println("请输入姓名:");
String userName = input.next();
mobileCard.setUserName(userName);
System.out.println("请输入密码:");
String passWord = input.next();
mobileCard.setPassWord(passWord);
System.out.println("请输入预存话费:");
int money = input.nextInt();
mobileCard.setMoney(money);
System.out.println("注册成功!手机号:" + mobileCard.getCardNumber() + ",用户名:" + mobileCard.getUserName() +
",当前余额为:" + mobileCard.getMoney() + "元");
//到此段注释结束 //把注册的值给集合
MobileCard newmobileCard = new MobileCard(mobileCard.getCardNumber(), mobileCard.getUserName(), mobileCard.getPassWord(), Common.talkPackage);
CardUtil.addCard(newmobileCard);
bol = false;
break;
case "2":
//从此段注释开始,Case1、Case2、Case3 是相同代码块,只有变量不同
//提取出去写成方法在Case直接调用,无法正确获取注册的手机号码
mobileCard.setSerPackage(Common.superPackage);
System.out.println("请输入姓名:");
String userName2 = input.next();
mobileCard.setUserName(userName2);
System.out.println("请输入密码:");
String passWord2 = input.next();
mobileCard.setPassWord(passWord2);
System.out.println("请输入预存话费:");
int money2 = input.nextInt();
mobileCard.setMoney(money2);
System.out.println("注册成功!手机号:" + mobileCard.getCardNumber() + ",用户名:" + mobileCard.getUserName() +
",当前余额为:" + mobileCard.getMoney() + "元");
//到此段注释结束 //把注册的值给集合
MobileCard newmobileCard2 = new MobileCard(mobileCard.getCardNumber(), mobileCard.getUserName(), mobileCard.getPassWord(), Common.netPackage);
CardUtil.addCard(newmobileCard2);
bol = false;
break;
case "3":
//从此段注释开始,Case1、Case2、Case3 是相同代码块,只有变量不同
//提取出去写成方法在Case直接调用,无法正确获取注册的手机号码
mobileCard.setSerPackage(Common.superPackage);
System.out.println("请输入姓名:");
String userName3 = input.next();
mobileCard.setUserName(userName3);
System.out.println("请输入密码:");
String passWord3 = input.next();
mobileCard.setPassWord(passWord3);
System.out.println("请输入预存话费:");
int money3 = input.nextInt();
mobileCard.setMoney(money3);
System.out.println("注册成功!手机号:" + mobileCard.getCardNumber() + ",用户名:" + mobileCard.getUserName() +
",当前余额为:" + mobileCard.getMoney() + "元");
//到此段注释结束 //把注册的值给集合
MobileCard newmobileCard3 = new MobileCard(mobileCard.getCardNumber(), mobileCard.getUserName(), mobileCard.getPassWord(), Common.superPackage);
CardUtil.addCard(newmobileCard3);
bol = false;
break;
default:
System.out.println("输入错误,请重新选择:");
bol = true;
break;
}
}
} public static void main(String[] args) throws IOException { //给MobMobileCard的带参方法传入相应的值
MobileCard mobileCard = new MobileCard("36949889123", "张余生", "123",
Common.talkPackage, 0, 100, 0, 0, 0);
MobileCard mobileCard2 = new MobileCard("12345678912", "飙车司机王", "123",
Common.superPackage, 0, 100, 200, 100, 1); //把这些值传给CardUtil方法里会进入集合
CardUtil.addCard(mobileCard);
CardUtil.addCard(mobileCard2);
SosoMgr sosoMgr = new SosoMgr();
sosoMgr.mainMenu();
}
}
//本地套餐家介绍文本如下,可以直接用system.out.println输出,也可以用File方法读取本地txt文件

******************************《套餐介绍》******************************
***********************  **********************  ***********************
** 套餐类型:话唠套餐 *  *                    *  * 套餐类型:超人套餐 **
**  通话时长:400分钟 *  * 套餐类型:网虫套餐 *  * 通话时长:200分钟  **
**    短信条数:200条 *  *   上网流量:3GB    *  *   短信条数:100条  **
**    月租费:38元    *  *    月资费:66元    *  *    上网流量:1GB   **
**                     *  *                    *  *     月资费:88元   **
***********************  **********************  ***********************
******************************《国庆钜惠》******************************

JAVA项目-嗖嗖移动的更多相关文章

  1. Java项目—嗖嗖移动业务大厅

    嗖嗖移动业务大厅包类(如下图): SosoMgr: package cn.biz; import java.util.Scanner; import cn.common.Common; import ...

  2. Java项目——嗖嗖移动业务大厅

    嗖嗖移动业务大厅包类(如下图): SosoMgr: 1 package cn.biz; 2 3 import java.util.Scanner; 4 5 import cn.common.Commo ...

  3. eclipse — 导入android项目后识别成java项目的问题及解决

    最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...

  4. owner:轻松管理java项目配置

    前段时间,一同事说在 github 上“活捉了”一个很有趣的开源项目,它是一个超轻量级的 jar 包,能够帮助你在 java 项目中摒弃样板式的 properties 配置代码,让你轻松自如地管理和使 ...

  5. Scala:Java 项目中混入scala代码

    Spark 是用Scala代码写的.为了调试Spark,做了如下尝试. 1.Eclipse下:Java 项目 ,Using Maven,编写了一个java 版Spark应用. Spark的代码(sca ...

  6. 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行

    一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...

  7. Java开发程序,使用编辑器编写创建Java项目、类

    打开Eclipse 出现界面 工作空间的路径可以选择一个大空间的磁盘存放,点击确定: 创建:程序左上角-文件-新建-JAVA项目 输入项目名(项目名不能为中文),点击完成: 在   包资源管理器中点击 ...

  8. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...

  9. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

随机推荐

  1. 牛客小白月赛1 J おみやげをまらいました 【MAP】

    链接:https://www.nowcoder.com/acm/contest/85/J おみやげをまらいました!    蛙蛙还是给你带来了礼物.但它有个小小的要求,那就是你得在石头剪刀布上赢过它才能 ...

  2. webpack最小化lodash

    lodash作为一个比较常用的前端开发工具集,在使用webpack进行vendor分离的实践中,会遇到将整个lodash文件分离到vendor.js的问题.这样会使vendor.js文件变得特别大. ...

  3. JavaScript对象回收机制

    js维护了一张对象引用表: 当一个对象被创建以后,栈内就有一个a,a这个对象就指向了对这个地址,当a=new Person()执行后,引用次数加1.当a=null置空,引用次数减1.由系统来维护对象引 ...

  4. php-5.6.26源代码 - 扩展模块的种类,扩展模块的执行埋点

    模块种类(两种) 类型一:zend的模块:(类似zend_extension=test.so) 识别方法: php.ini中以zend_extension开头的配置,如zend_extension=t ...

  5. PLC状态机编程第四篇-历史状态处理

    今天我们接着上次的控制任务,加入历史状态,这个任务会比较复杂,象这样的任务我们倾向于自动生成PLC程序,自己写容易出错.但为了演示,我们可以尝试一下.言归正传,下面是我们的控制任务. 控制任务 这次的 ...

  6. MLT教程:从BXL文件导入Altium Designer原理图封装和PCB封装

    在TI官网的封装文件中提供弄BXL文件可以导出Altium Designer的封装库和原理图库. 这个界面往下面拉会看到: 然后可以下载各种封装的bxl文件了.下面视频说明bxl文件如何导出成功. 如 ...

  7. python3 练习题100例 (十八)托儿所问题

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """练习十八:某托儿所有大.中.小三个班级,其儿童月龄分别用如下 三个列表 ...

  8. Codeforces146D 概率DP

    Bag of mice The dragon and the princess are arguing about what to do on the New Year's Eve. The drag ...

  9. SGU 169 numbers 数学

    169.Numbers Let us call P(n) - the product of all digits of number n (in decimal notation). For exam ...

  10. POJ:2785-4 Values whose Sum is 0(双向搜索)

    4 Values whose Sum is 0 Time Limit: 15000MS Memory Limit: 228000K Total Submissions: 26974 Accepted: ...