import javautilScanner;
public class AtmDemo
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner sc = new Scanner(Systemin);
Boolean flag = true;
int times = 0;
while(flag){
times++;
if(times == 4){
Systemoutprintln("密码错误,请取卡");
break;
}
Systemoutprintln("请输入你的密码");
String password = scnext();
if(passwordequals("111111")){
Boolean moneyflag = true;
while(moneyflag){
Systemoutprintln("请输入金额");
int number = scnextInt();
if(number >= 0 && number <= 1000 && number % 100 == 0){
Systemoutprintln("用户取了" + number + "元。交易完成");
moneyflag = false;
}else{
Systemoutprintln("请重新输入金额");
}
}
break;
}else{
continue;
}
}
}
}import javautilScanner;
public class ATM{
public static void main(String args){
Scanner sc=new Scanner(Systemin);
double money=0;
do{
Systemoutprintln("请选择业务:1)查询余额 2)取款 3)存款 4)退出");
int c=scnextInt();
if(c==1){
Systemoutprintln("用户余额为:"+money+"元");
}else if(c==2){
while(true){
Systemoutprintln("请输入取款金额:");
double load=scnextDouble();
if(load>=money){
Systemoutprintln("账户余额不足,请重新输入取款金额");
continue;
}else{
money-=load;
Systemoutprintln("取款成功");
break;
}
}
}else if(c==3){
Systemoutprintln("请输入存款金额:");
money+=scnextDouble();
Systemoutprintln("存款成功");
}else if(c==4){
Systemexit(0);
}else{
Systemoutprintln("输入错误,请重新选择业务");
}
}while(true);
}
}
WEB容器工作原理
市面上的javaweb容器常见的有两种,一种是jetty,一种是tomcat。要想用java实现web容器,首先要知道其工作原理。
以Tomcat为例,我们通常开发出来的war包,会放在tomcat中的webapp下面,tomcat会自动解压war包。解压完成后,其实就是一个servlet应用!换句话说,我们写的war包中的servlet应用只需要关注业务层面的,处理>
所以其实我们也可以手写一个web容器,只要能接收请求并转发给相应的servlet请求即可。
手写一个小的web容器
整体结构大致如下
1、写一个处理网络请求连接请求实体类、一个和网络请求连接响应实体类
2、写一个容器主类,包括启动监听端口等
3、写容器的接口,以及注解相关的url附加类便于让应用servlet
4、写一个app测试servlet,类似tomcat中跑的war包
如果你监听的端口是8888,那么就可以访问localhost:8888/app,就可以测试了
结语
java写web容器,其实没什么难的,简单的写一下了解一下原理即可,真实工作中是不建议自己写的,有很多问题会考虑不周的。关于web容器网上也有很多例子,可以借鉴了解一下。祝你学习愉快。
最后一列为备注 1、 管理员表(tb_admin) 字段 类型 约束 备注 aId number(6) 主键 --管理员编号 aName varchar2(10) 唯一、非空 --管理员登陆名 aPassword varchar2(16) 非空 --管理员登陆密码 aLastDate date 非空 --上次登陆时间 aNowDate date 非空 --本次登陆时间 2、 yhk登陆表(tb_login) 字段 类型 约束 备注 lId number(8) 主键 --登录ID lCardNumber varchar2(19) 引用yhk信息表 卡号 lPassword number(6) 非空 yhk密码 bIsLock char(1) 默认1 是否被锁,0表示被锁,1表示开启 lTime number(10) 初始为0 登陆次数 aLastDate date 非空 上次登陆时间 aNowDate date 非空 本次登陆时间 3、 客户详细资料表(tb_userInfo) 字段 类型 约束 备注 usId number(8) 主键 客户ID usName varchar2(10) 非空 客户姓名 usIDNumber varchar2(18) 非空 客户身份z号码 usSex char(1) 默认0 客户性别,0表示男,1表示女 usTel varchar2(11) 非空 客户电话 usAddress varchar2(50) 非空 客户地址 4、 银行支行表(tb_Branch) 字段 类型 约束 备注 bId number(3) 主键 支行ID bName varchar2(20) 唯一、非空 支行名 bAddress varchar2(100) 非空 支行地址 5、 yhk信息表(tb_CardInfo) 字段 类型 约束 备注 bCardID number(19) 主键 卡号 bBalance number(8,2) 默认000 余额 bUserId number(8) 引用客户详细资料表 卡对应用户ID bBranchID number(4) 引用支行表 支行ID bDate date 默认系统时间 开户时间 6、 yhk交易类型表(tb_TransType) 字段 类型 约束 备注 tId number(2) 主键 类型ID tType nvarchar2(6) 唯一 类型(转账、存款、取出等) 7、 yhk个人账户存、取款记录表(tb_ Pacount) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardID number(19) 引用yhk信息表 交易卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间 8、 yhk转账等交易记录表(tb_TransInfo) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardIDout number(19) 引用yhk信息表 交易金额转出卡号 tCardIDIn number(19) 引用yhk信息表 交易金额转入卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间public class Card {public String type; //卡的类型
public String cardCode; //卡号
public double money; //钱
/
重写toString()方法
/
public String toString(){
return "卡的类型:"+type+"\t卡号:"+cardCode+"\t余额:"+money;
}
}public class Person {
Card card;
/
构造方法,一般用来初始化信息
此方法是创建对象时自动调用的
/
public Person(){
card=new Card();
cardtype="招商银行";
cardmoney=1000D;
}
/
@param money 你要取的钱
@return 返回的是取到的钱
/
public double getMoney(double money){
if( (cardmoney-money) >=0){
cardmoney=cardmoney-money;//从卡中减去要取的钱,并重新改变卡中的余额
return money;
}else{
Systemoutprintln("余额不足:请存款!");
return 0;
}
}
/
存款
@param money
/
public void setMoney(double money){
if(money<=0){
Systemoutprintln("不能为0!");
}else
cardmoney=cardmoney+money;
}
/
这个方法是输出客户卡的信息
/
public void print(){
Systemoutprintln(card);
}
}public class Text {
/
@param args
/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p=new Person();
pcardcardCode="111100022222";
psetMoney(1000);
double money=pgetMoney(2000);
Systemoutprintln(pcard);
}
}
首先,我得说明的是,目前市场上新人很难去做pc游戏开发,要么是做页游要么是手游。
页游不清楚我就不说了,手游里面,客户端主要就是c2d和u3d。
如果你想做客户端,那么你可以转学u3d,因为它使用的语言是csharp,这个语言和java相似。网上unity的教程也很多,你随便找一下就有了。
再说说手游服务器,其实我入行服务器还是挺巧合的,当初本来是打算做客户端的,都入职了,因为招不到服务器,就让我转服务器了。。
服务器的教程,我至今也没找到,而且也找不到系统的教程。
开源的服务器框架也只熟悉kbengine和scut。其中一个是cpp做底层python做开发的,一个是csharp做开发。而且scut已经两年没有更新了,应该是死掉了。
所以,想要学服务器开发,得碰点运气。
java服务器目前主流框架技术有网络层netty或mina,数据协议protobuf,数据库mysql,缓存数据库redis,jdbc一般是mybaits或者jpa,项目管理maven,设计层面spring
然后还需要熟悉多线程,linux的基本 *** 作,git或者svn。
差不多了,这些都有个大致的了解,会用,应该就能找到工作了。
后面再深入需要学习的也挺多的,到时候你再根据业务需求自己琢磨着学吧。
由于今年疫情的影响,很多人担心不知道学习Java软件开发就业怎么样?那么学习Java软件开发的程序员有前途吗?
对于想要转行的人来说,只能能够掌握技术,就业是没有任何办法的。北大青鸟的学生还没毕业就有很多公司上面招聘,Java技术人才的需求量是非常大的。下面北大青鸟昌平计算机学院为大家介绍学习Java软件开发的优势。
1、Java无处不在
全世界有超过30亿台设备运行Java,运行的Java语言比任何其他语言都多。北大青鸟发现Java编写的程序可用于几乎所有设备,包括智能手机,服务器,ATM,POS(销售点终端),蓝光播放器,电视,机顶盒,物联网网关,医疗设备,Kindle电子阅读器和汽车等等。
2、市场人才紧缺
很多企业对Java开发人员的技术要求更高,并且昌平java培训认为Java是使用最广泛的语言,使用群体是非常大的。
3、可观的薪资
Java程序员是业界薪酬过高的程序员之一。有了Java技能,根据Quartz全球数字商业媒体机构的分析,拥有Java技能有助于提高工资。
4、更高的工作效率
选择编程语言的一个重要因素是能够确保生产力的优秀开发工具。并且计算机办公软件发现许多工具是免费或开源的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)