java项目---------------------------嗖嗖移动大厅


package Chlier;

import Util.Dates;
//客户端端
public class ChlierScorket {
public static void main(String[] args) {
System.out.println("************************************************");
System.out.println("<-----欢迎来到晖哥移动大厅----->");
Dates dates=new Dates();//dates对象
dates.mute();//方法调用
}
}


package Serever;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import Util.MyTheread;

//服务器端
public class SereverScorket {
public static void main(String[] args) {
try {
//新建端口
ServerSocket socket=new ServerSocket(6666);
while (true) {
//通过while循环使监听重复使用
Socket accept = socket.accept();
System.out.println(“链接成功!”);//提示语句
MyTheread thread=new MyTheread(accept);//建立线程对象
Thread th=new Thread(thread);//线程类型转换
th.start();//开启线程
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


package Util;

import java.io.Serializable;

//服务状态
public class Date implements Serializable{
//服务的属性
private Object obj;//传输对象状态
private boolean yesNo;//传输结果
private String lookUser;//传输内容
private String fangfa;

public Object getObj() {
	return obj;
}
public void setObj(Object obj) {
	this.obj = obj;
}
public boolean isYesNo() {
	return yesNo;
}
public void setYesNo(boolean yesNo) {
	this.yesNo = yesNo;
}
public String getLookUser() {
	return lookUser;
}
public void setLookUser(String lookUser) {
	this.lookUser = lookUser;
}
public String getFangfa() {
	return fangfa;
}
public void setFangfa(String fangfa) {
	this.fangfa = fangfa;
}

}


package Util;
//导入包区
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
//功能类
public class Dates {
//属性区
//socket客户端端口
private Socket socket;
//is输入流
private ObjectInputStream ois;
//os输出流
private ObjectOutputStream oos;
//建立date对象
Date date=new Date();
//用户键盘录入
Scanner input=new Scanner (System.in);
//初始化功能
public void inte(){
try {
//连接断开
socket=new Socket(“localhost”, 6666);
//建立io流,使io传输的数据为object类型的数据(可序列化数据)
oos=new ObjectOutputStream(socket.getOutputStream());
ois=new ObjectInputStream(socket.getInputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//菜单功能
public void mute(){
//定义布尔值变量,
boolean yeNo=false;
do {
System.out.println("——————1.开卡\t2.查询\t3.缴费\t4.退出——————");
System.out.println("=请输入服务项=");
String num=input.next();
//通过用户输入的数字进行对应的赋值
if(num.equals(“1”)){
date.setFangfa(“kaika”);
}if(num.equals(“2”)){
date.setFangfa(“lookUser”);
}if(num.equals(“3”)){
date.setFangfa(“andMoeny”);
}
//通过用户输入对应值进行对应的选项
if(num.equals(“1”)){
inte();//方法调用
newId();//方法调用
yeNo=false;//改变布尔值
}else if(num.equals(“2”)){
inte();//方法调用
lookUser();//方法调用
yeNo=false;//改变布尔值
}else if(num.equals(“3”)){
inte();//方法调用
andMoeny();//方法调用
yeNo=false;//改变布尔值
}else if(num.equals(“4”)){
System.out.println(“您已退出,欢迎下次使用!”);
yeNo=false;//改变布尔值
}else{
System.out.println(“您的输入有误,请重新输入!”);
yeNo=true;//改变布尔值
}
} while (yeNo);
}
//开卡
public void newId(){
//获取相应的信息
System.out.println(“请输入您的姓名”);
String name=input.next();
System.out.println(“请输入您的身份证号”);
String UserId=input.next();
User user=new User();
//通过用户输入的身份证号进行判定,如果是进行赋值,如果不是进行调用方法
if(UserId.length()==16){
user.setName(name);
user.setUserId(UserId);
}else{
System.out.println(“您的身份证号有误,请重试!”);
newId();
}
date.setObj(user);//对象赋值
try {
oos.writeObject(date);//通过输出流进行对象发送到服务端
Date dates = (Date) ois.readObject();//读取服务端返回的数据(date类型)
if(dates.isYesNo()){//判断对象的结果
System.out.println(“开卡成功,送您100元话费哦!”);
System.out.println(“您的电话号码是:”+dates.getFangfa());
mute();//调用方法
}else{
System.out.println(“开卡失败!”);
mute();//调用方法
}
ois.close();//刷新关闭流
oos.flush();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//查询
public void lookUser(){
//获取对应的数据
System.out.println(“请输入您的电话号码”);
String UserId=input.next();
User user=new User();
if(UserId.length()==11){//判读电话长度
user.setUserId(UserId);//长度符合要求进行赋值
date.setObj(user);
}else{
System.out.println(“您的电话号码有误,请重试!”);
mute();
}
try {
//向服务端进行发送数据
oos.writeObject(date);
Date dates = (Date) ois.readObject();//读取服务端返回的数据(date类型)
String lookUser = dates.getLookUser();
System.out.println(lookUser);
mute();
ois.close();//关闭刷新流
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void andMoeny(){
//获取对应数据
System.out.println(“请输入您的电话号码”);
String UserId=input.next();
User user=new User();
System.out.println("************************"+UserId);
if(UserId.length()==11){//判读电话长度
user.setUserId(UserId);
System.out.println(“请输入您的缴费金额:”);
int moeny=input.nextInt();//获取缴费金额
user.setMoeny(moeny);//将数据写入对象
date.setObj(user);
try {
oos.writeObject(date);//将数据对象法送到服务端
oos.flush();
Date dates = (Date) ois.readObject();//读取服务端返回的数据(date)
String obj = (String) dates.getObj();
if(dates.isYesNo()){//判断是否是,并输出内容
System.out.println(obj);
mute();
}else{
System.out.println(obj);
mute();
}
oos.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}else{
System.out.println(“您的电话号码有误,请重试!”);
newId();
}

}

}


package Util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

import java.util.Iterator;
import java.util.Random;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

//线程类
public class MyTheread implements Runnable {
//线程中存在的属性
private ObjectInputStream ois;//输入流
private ObjectOutputStream oos;//输出流
private Socket socket;//端口
private Element root ;//根节点
private Document document;
private User user ;//user 对象
private boolean yesNo=true;//布尔变量
Date date21=new Date();//date 对象
private String Id;

public MyTheread(Socket socket) {
	this.socket = socket;
}
public ObjectInputStream getOis() {
	return ois;
}
public void setOis(ObjectInputStream ois) {
	this.ois = ois;
}
public ObjectOutputStream getOos() {
	return oos;
}
public void setOos(ObjectOutputStream oos) {
	this.oos = oos;
}
public Socket getSocket() {
	return socket;
}
public void setSocket(Socket socket) {
	this.socket = socket;
}
public Document getDocument() {
	return document;
}
public void setDocuemnt(Document document) {
	this.document = document;
}

//线程
public void run() {
	try {
		//对io流进行赋值
		oos=new ObjectOutputStream(socket.getOutputStream());
		ois=new ObjectInputStream(socket.getInputStream());
		//读取客户端发送的数据(date)
		date21 = (Date) ois.readObject();
		user = (User) date21.getObj();//数据转换
		if(date21.getFangfa().equals("kaika")){//判断用户发送的状态
			readXML();//调用方法
			Date dates=new Date();//date对象
			if(yesNo){
				date21.setYesNo(true);//对对象赋值
				date21.setFangfa(Id);
				oos.writeObject(date21);//向客户端法送数据
				oos.close();//关闭流
			}else{
				oos.writeObject(date21);//向客户端法送数据
				oos.close();//关闭流
			}
		}else if(date21.getFangfa().equals("lookUser")){//判断用户发送的状态
			lookXML();//调用方法
			Date dates=new Date();
			if(yesNo){
				//查询失败
				oos.writeObject(date21);//向客户端发送数据
				oos.close();
			}else{
				//查询成功
				oos.writeObject(date21);
				oos.close();
			}
		}else if(date21.getFangfa().equals("andMoeny")){//判断用户发送的状态
			lookXML();//调用方法
			Date dates=new Date();
			if(yesNo){
				Date date0=new Date();
				String no="充值失败!";
				date0.setYesNo(false);//对对象进行赋值
				date0.setObj(no);
				oos.writeObject(date0);//将对象数据发送到客户端
			}else{
				Date date0=new Date();
				String no="充值成功!";
				date0.setYesNo(true);//对对象进行赋值
				date0.setObj(no);
				oos.writeObject(date0);//将对象数据发送到客户端
			}
		}
		ois.close();
	} catch (IOException e) {
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}
//读取文件
public void readXML(){
	SAXReader read=new SAXReader();//解析器
	try {
		document=read.read(new File("User.xml"));//读取指定XML文件
		root = document.getRootElement();//获取根节点
		Iterator it = root.elementIterator();
		Element next = null;
		while (it.hasNext()) {//获取说有的子标签
			next = (Element) it.next();
			if(user.getName().endsWith(next.attributeValue("name"))){//判断
				System.out.println("开卡失败!");
				yesNo=false;
			}
		}
		if(yesNo){
			System.out.println("开卡成功!");
			writeXML();
		}
	} catch (DocumentException e) {
		e.printStackTrace();
	}
}
//查询文件
public void lookXML(){
	boolean useryes=false;
	SAXReader read=new SAXReader();//解析器
	try {
		Element next = null;
		document=read.read(new File("User.xml"));//读取指定的XML文件
		root = document.getRootElement();//获取所有的根节点
		Iterator it = root.elementIterator();
		while (it.hasNext()) {
			next = (Element) it.next();//获取所有的子节点
			Iterator it2= next.elementIterator();
			while (it2.hasNext()) {
				Element next2 = (Element) it2.next();//获取所有的孙节点
				System.out.println(user.getUserId());
				if(next2.getText().equals(user.getUserId())){
					System.out.println("查询成功!");
					String moeny1=next.element("moeny").getText();
					date21.setLookUser(moeny1);//对对象进行赋值
					if(date21.getFangfa().equals("andMoeny")){
						int moeny = user.getMoeny();
						Element eleme = next.element("moeny");
						String moeny2=next.element("moeny").getText();
						Integer of = Integer.valueOf(moeny2);//将string类型数据进行转换为int类型数据
						int moenyss=of;
						int moenys5=moenyss+moeny;
						eleme.setText(moenys5+"");//将数据写入对象
						OutputFormat formants=OutputFormat.createPrettyPrint();//编写XML文件添加的格式
						XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream("User.xml")),formants);
						writer.write(document);//保存到XML文件
						writer.close();//关闭流
					}
					yesNo=false;
				}
			}
			if(yesNo){
				System.out.println("查询失败,请输入正确的号码!");
				date21.setLookUser("请输入正确的号码!");
				yesNo=true;
			}
		}
	} catch (DocumentException e) {
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
//保存文件
public void writeXML(){
	Element eleme = root.addElement("userName");//添加指定标签名的子节点
	eleme.addAttribute("name", user.getName());//添加指定属性内容
	Element foot=eleme.addElement("userId");//添加指定标签的孙节点
	Random radom=new Random();//获取电话号码
	int int1 = radom.nextInt(999999999);
	int int2 = radom.nextInt(9);
	Id="1"+int2+int1;
	foot.addText("1"+int2+int1);
	Element foot2=eleme.addElement("moeny");//添加指定内容的孙节点
	foot2.addText("100");//添加孙节点的文本内容
	OutputFormat format=OutputFormat.createPrettyPrint();//指定格式
	try {
		XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream("User.xml")),format);//XML文件转换器
		writer.write(document);//保存到XML文件
		writer.close();//关闭流
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

}


package Util;

import java.io.Serializable;

//用户类
public class User implements Serializable{
private String name;//用户姓名
private String UserId;//用户身份证号
private int moeny;//用户年龄

public User() {
}
public User(String name, String userId, int moeny) {
	this.name = name;
	UserId = userId;
	this.moeny = moeny;
}

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getUserId() {
	return UserId;
}
public void setUserId(String userId) {
	UserId = userId;
}
public int getMoeny() {
	return moeny;
}
public void setMoeny(int moeny) {
	this.moeny = moeny;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值