2018.10.24之前补交作业及17章项目

14章

1.根据目录结构myjava/practice1/Foo.java,写出Foo类的包名。
包名:practice1

2.改写第12章中简答题第3题中的计算机类(Calculator)。要求将加减乘除的方法改写成带参方法,在定义一个运算方法 ope(),接收用户的运算和两个数字,根据用户选择的运算计算结果

import java.util.Scanner;

public class No2 {
	public static void main(String[] args) {
		No2Class a =new No2Class();
		Scanner input =new Scanner(System.in);
		System.out.print("请选择运算方法(1.加法  2.减法  3.乘法  4.除法):");
		int e =input.nextInt();
		System.out.print("请输入第一个数字:");
		int q=input.nextInt();
		System.out.print("请输入第二个数字:");
		int w=input.nextInt();
		System.out.println("结果为:"+a.ope(e, q, w));
}
	}

public class No2Class {
	
	public int jia(int a,int b){
		return (a+b);
	}
	public int jian(int a,int b){
		return (a-b);
	}
	public int chen(int a,int b){
		return (a*b);
	}
	public int chu(int a,int b){
		return (a/b);
	}
	public int ope(int o,int a,int b) {
		int i=0;
		switch (o) {
		case 1:
			i=jia(a, b);
			break;
		case 2:
			i=jian(a, b);
			break;
		case 3:
			i=chen(a,b);
			break;
		case 4:
			i=chu(a, b);
			break;
		}
		return i;
	}

}

3.模拟一个简单的购房商贷月供计算器,假设按照以下的公式计算出总利息和每月还款金额

import java.util.Scanner;

public class No3 {
	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		No3Class a =new No3Class();
		System.out.print("请输入贷款金额:");
		double m=input.nextInt();
		System.out.print("请选择贷款年限:1.三年(36个月) 2.五年(60个月) 3.二十年(240个月):");
		int y=input.nextInt();
		System.out.println("总利息为:"+a.san(m, y));
		System.out.println("月供为:"+a.yue(m, y));
		
	}

}

public class No3Class {
	public double san(double m,int y) {
		double money;
		if(y==1){
			money=m*0.0603;
		}else if(y==2){
			money=m*0.0612;
		}else{
			money=m*0.0639;
		}
		return money;
	}
	public double yue(double m,int y) {
		double i ;
		if(y==1){
			i=(m+san(m, y))/36;
		}else if(y==2){
			i=(m+san(m, y))/60;
		}else{
			i=(m+san(m, y))/240;
		}
		return i;
		
	}
	
	
}

4.根据指定不同的行及字符,生成不同的三角形。

import java.util.Scanner;

public class No4 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		No4Class a=new No4Class();
		System.out.print("请输入行高:");
		int gao=input.nextInt();
		System.out.print("请输入打印的字符:");
		String d=input.next();
		a.san(gao,d);
	}

}

public class No4Class {
	public void san(int gao,String d) {
		for (int i = 1; i<=gao; i++) {
			for (int j = 0; j < i; j++) {
				System.out.print(d);
			}System.out.println("");
		}
	}

}

5.根据三角形的三条边长,判断其是直角、钝角,还是锐角三角形。

import java.util.Scanner;

public class No5 {
	public static void main(String[] args) {
		No5Class a =new No5Class();
		Scanner input = new Scanner(System.in);
		String b="y";
		while ("y".equals(b)) {
			System.out.print("请输入第一条边:");
			int z=input.nextInt();
			System.out.print("请输入第二条边:");
			int x=input.nextInt();
			System.out.print("请输入第三条边:");
			int c=input.nextInt();
			a.panduan(z,x,c);
			System.out.println("");
			System.out.print("继续吗?(y/n):");
			b=input.next();
		}
		System.out.println("谢谢使用");	
	}

}
public class No5Class {
	public void panduan(int z,int x,int c) {
		if(z+x>c&&z+c>x&&x+c>z){
			System.out.print("这是一个"+san(z,x,c));			
		}else{
			System.out.println("这不能构成三角形");
		}
	}
	public String san(int z,int x,int c){
		String i="";
		if((z*z)==(x*x+c*c)||  (x*x)==(z*z+c*c)|| (c*c)==(z*z+x*x)){
			i="直角三角形";
		}else if((z*z)>(x*x+c*c)||(x*x)>(z*z+c*c)||(c*c)>(z*z+x*x)){
			i="钝角三角形";
		}else if(z==x&&z==c){
			i="等腰三角形";
		}else{
			i="锐角三角形";
		}
		return i;
	}

}

6.编写程序,向整型数组的指定位置插入元素,并输出插入前后数组的值。

import java.util.Scanner;

public class No6 {
	public static void main(String[] args) {
		No6Class p=new No6Class();
		int []i=new int []{1,2,3,4,5,6,7};
		System.out.print("插入之前的数组:");
		for (int j = 0; j < i.length; j++) {
			System.out.print(i[j]+" ");
		}
		System.out.println("");
		Scanner input =new Scanner(System.in);
		System.out.print("请输入插入数字:");
		int a=input.nextInt();
		System.out.print("请输入插入数字位置(1~7):");
		int b=input.nextInt();
		p.charu(i, a, b);

	}
	

}
public class No6Class {
	public void charu(int [] arr,int a,int b) {
		int [] op=new int [arr.length+1];
		for (int y = 0; y < arr.length; y++) {
			op[y]=arr[y];
		}
		
		for (int j = arr.length-1; j >= b-1; j--) {
			op[j+1]=arr[j];
		}
	
		op[b-1]=a;
		for (int i = 0; i < op.length; i++) {
			System.out.print(op[i]+" ");
		}
	}

}

7.本学期期末学员共参加了三门课,即Java、C、SQL,编写方法计算每位学员三门课的平均分。

import java.util.Scanner;

public class No7 {
	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		No7Class a=new No7Class();
		No7Class2 b=new No7Class2();
		System.out.print("请输入C成绩:");	
		b.C=input.nextDouble();
		System.out.print("请输入java成绩:");	
		b.java=input.nextDouble();
		System.out.print("请输入SQL成绩:");	
		b.SQL=input.nextDouble();
		double avg=a.getavg(b);
		System.out.println("平均分为:"+avg);
		
		}
}

public class No7Class {
	public double getavg(No7Class2 stu){
		return (stu.java+stu.C+stu.SQL)/3;
	}
}
public class No7Class2 {
	double java;
	double C;
	double SQL;

}

15章

1.根据你的理解,简要说明比较运算符(==)和equal()方法判断两个字符串是否相等有什么区别。
答:一个是比较地址 一个是比较值

2.输入五种水果的英文名称(如葡萄grape、橘子orange、香蕉banana、苹果apple、桃peach),编写一个程序,输出这些水果的名称(按照在字典里出现的先后顺序输出)。

import java.util.Scanner;

public class No2 {
	public static void main(String[] args) {
		String a[]=new String[5];
		Scanner input=new Scanner(System.in);
		No2Class show=new No2Class();
		for (int i = 0; i < 5; i++) {
			System.out.print("请输入第"+(i+1)+"种水果:");
			a[i]=input.next();
		}
		System.out.println("");
		System.out.println("这些水果在字典中排序为:");
		show.show(a);
	}

}
import java.util.Arrays;

public class No2Class {
	public void show(String a[]) {
		Arrays.sort(a);
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i]);
		}
	}

}

3.假设中国人的姓都是单个字,请随机输入一个人的姓名,然后输入一个人的姓名,然后输出姓和名

import java.util.Scanner;

public class No3 {
	public static void main(String[] args) {
		No3Class a=new No3Class();
		String name="";
		Scanner input =new Scanner(System.in);
		System.out.print("请输入姓名:");
	    name=input.next();
	    System.out.println("姓:"+a.name(name));
	    System.out.println("名:"+a.name1(name));

	}

}

public class No3Class {
	/**
	 * 提取 姓
	 * @param name
	 * @return
	 */
	public String name(String name) {
		return name.substring(0, 1);
	}
	
	
	/**
	 * 提取 名
	 * @param name
	 * @return
	 */
	public String name1(String name) {
		return name.substring(1);
	}

}

4.录入用户的18位身份证号码,从中提取用户的生日。

import java.util.Scanner;

public class No4 {
	public static void main(String[] args) {
		String ID="";
		No4Class a=new No4Class();
		Scanner input=new Scanner(System.in);
		boolean flag=true;
		do {
			System.out.print("请输入身份证号:");
			ID=input.next();
			if(ID.length()==18){
				System.out.println("");
				System.out.println("该用户的生日是:"+a.year(ID)+"年"+a.mo(ID)+"月"+a.day(ID)+"日");
				flag=false;
			}else{
				System.out.println("请输入正确的身份证号!");
			}
		} while (flag);
		
	}

}

public class No4Class {
	/**
	 * 提取 年
	 * @param ID
	 * @return
	 */
	public String year(String ID) {
		return ID.substring(6, 10);
//		430405199909161012
	}
	/**
	 *  月
	 * @return
	 */
	public String mo(String ID) {
		return ID.substring(10, 12);
	}
	/**
	 * 日
	 * @param ID
	 * @return
	 */
	public String day(String ID) {
		return ID.substring(12, 14);
	}

}

5.编写一个字符浏览器,输入字符串及需要查找的字符或字符串,浏览器自动定位所有出现该字符或字符串的位置。

import java.util.Scanner;

public class No5 {
	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		No5Class a=new No5Class();
		System.out.print("请输入一段字符:");
		String g=input.next();
		System.out.print("请输入要查询的字符串:");
		String f=input.next();
		a.chazhao(g,f);
		
	}

}

public class No5Class {
	public void chazhao(String g,String f) {
		int index = 0;
		int i = index;
		int length = g.length();
		System.out.print(f + "出现的位置是: ");
		do {
			index = g.indexOf(f, i);
			if (index == -1) {
				break;
			}
			System.out.print(index+1 + "   ");
			i = index + f.length();
		} while (i <= length);
		
	}

}

6.对录入的信息进行有效性验证。
录入会员生日时,形式必须是“月/日”,如“09/12”。录入的密码位数必须为6~10位。允许用户重复录入,直到输入正确为止

import java.util.Scanner;

public class No6 {
	public static void main(String[] args) {
		No6Class i=new No6Class();
		Scanner input =new Scanner(System.in);
		do {
			System.out.print("请输入会员生日<月/日:00/00>:");
			String a=input.next();
			i.panduan(a);
		} while (i.flag);
		System.out.println("");
		do {
			System.out.print("请输入会员密码<6~10位>:");
			String b=input.next();
			i.mima(b);
		} while (i.flag1);
	}
}

public class No6Class {
	boolean flag=true;
	boolean flag1=true;
	/**
	 * 判断生日是否合法
	 * @param a
	 */
	public void panduan(String a) {
		if(a.subSequence(2, 3).equals("/")){
			System.out.println("该会员的生日是:"+a);
			flag=false;
		}else{
			System.out.println("输入错误!");
		}
	}
	
	/**
	 * 判断密码是否合法
	 */
	public void mima(String a) {
		if(a.length()>=6&&a.length()<=10){
			System.out.println("该会员的密码为:"+a);
			flag1=false;
		}else{
			System.out.println("密码不合法!");
		}
	}

}

16章

1.实现用户登入功能,在控制台输入用户名和密码,然后判断输入是否正确并输入结果。

import java.util.Scanner;

public class No1 {
	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		No1Class i=new No1Class();
		System.out.print("请输入账号:");
		String a =input.next();
		System.out.print("请输入密码:");
		String b =input.next();
		if (i.flag(a,b)) {
			System.out.println("登入成功");
		}else {
			System.out.println("登入失败");
		}
	}

}
public class No1Class {
	String a="admin";
	String b="123";
	public boolean flag(String a1,String b1) {
		boolean flag=false;
		if (a1.equals(a)&&b1.equals(b)) {
			flag=true;
		}
		return flag;
	}

}

2.在控制台输入学生姓名,年龄,性别,和学校,然后模拟将该学生信息存储到数据库中。

import java.util.Scanner;

public class No2 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		No2Class1 i=new No2Class1();
		No2Class o=new No2Class();
		System.out.print("请输入学生姓名:");
		i.name=input.next();
		System.out.print("请输入学生年龄:");
		i.age=input.nextInt();
		System.out.print("请输入学生性别:");
		i.sex=input.next();
		System.out.print("请输入学生学校:");
		i.xuexiao=input.next();
		System.out.println("");
		o.insert(i);
	}

}

public class No2Class {
	public void insert(No2Class1 i) {
		System.out.println("将该学生信息成功写入到数据库");
		System.out.println(i.name+" "+i.age+" "+i.sex+" "+i.xuexiao);
	}

}

3.某公司对固定资产进行编号,规则如下:购买年份+产品类型(1为台式机,2为笔记本,3为其他,统一采用两位数字表示,数字前加0)+3位随机数。

import java.util.Scanner;

public class No3 {
	public static void main(String[] args) {
		No3Class i=new No3Class();
		Scanner input=new Scanner(System.in);
		System.out.print("请输入年份:");
		String age =input.next();
		System.out.print("请选择产品类型(1.台式机   2.笔记本   3.其他):");
		int num=input.nextInt();
		System.out.println("");
		System.out.println("该固定资产编号为:"+i.num(age,num));
		
	}

}
import java.util.Random;

public class No3Class {
	public String num(String age,int num) {
		int i= (int) (Math.random() * (999 - 100)) + 100;
		StringBuffer a=new StringBuffer(age);
		StringBuffer a1=a.append("0"+num);
		StringBuffer a2=a.append(i);
		return a.toString();
	}

}

4.按照月/日/年的方法输入一个日期(如8/8/2008),然后对字符串进行拆分,输出某天是哪年哪月哪日(如2008年8月8日)。

import java.util.Scanner;

public class No4 {
    public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		No4Class i=new No4Class();
		System.out.print("请输入一个日期(月/日/年):");
		String time=input.next();
		i.time(time);
	}

}
public class No4Class {
	public void time(String time) {
		String a[]=time.split("/");	
		System.out.println(a[2]+"年"+a[0]+"月"+a[1]+"日");
	}

}

17章
吃货联盟系统

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		LogoingClass logoing = new LogoingClass();
		OrderingUtil b=new OrderingUtil();
		Scanner input = new Scanner(System.in);
		int num = 1;
		boolean isExit = false;
		System.out.println("欢迎使用“吃货联盟订餐系统”");
		do {
			logoing.logoing();
			System.out.print("请选择:");
			String xuanze = input.next();
			switch (xuanze) {
			case "1":
				System.out.println("***我要订餐***");
				b.add();
				break;
			case "2":
				System.out.println("***查看餐袋***");
				b.ChaKanCanDai();
				break;
			case "3":
				System.out.println("***签收订单***");
				b.qianshou();
				break;
			case "4":
				System.out.println("***删除订单***");
				b.del();
				break;
			case "5":
				System.out.println("***我要点赞***");
				b.dianzan();
				break;
			case "6":
				isExit = true;
				break;

			default:
				System.out.print("错误请重新选择,");			
				break;
			}
			if (!isExit) {
				System.out.print("输入0返回,0除外退出系统:");
				num = input.nextInt();
			} else {
				break;
			}
		} while (num == 0);
		System.out.println("谢谢您的使用!");
	}
}
public class LogoingClass {
	public void logoing() {
		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("********************");
	}
}
public class OrderingSet {
	String[] names = new String[4]; // 订餐人
	String[] disMegs = new String[4]; // 菜品名及份数
	int[] times = new int[4]; // 送餐时间
	String[] addresses = new String[4]; // 送餐地址
	int[] states = new int[4]; // 订单状态 0表示已预订 1表示已完成
	double[] sumPrices = new double[4]; // 订单总金额
	
}
import java.util.Scanner;

/**
 * 
 * @author Cat
 *
 */
public class OrderingUtil {
	/*
	 * 定义菜品价格及点赞数
	 */
	String[] dishNames = { "红烧带鱼", "鱼香肉丝", "时令蔬菜" }; // 菜名
	double[] prices = { 38.0, 20.0, 10.0 }; // 价格
	int[] praiseNums = new int[3]; // 点赞数
	OrderingSet oSet = new OrderingSet();

	/**
	 * 查看菜袋
	 */
	public void ChaKanCanDai() {
		System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
		// 循环查看餐袋内容是否为null 如果不为null 就引用数值 打印输出
		for (int i = 0; i < oSet.names.length; i++) {
			if (oSet.names[i] != null) {
				String state = (oSet.states[i] == 0) ? "已预订" : "已完成";
				String date = oSet.times[i] + "时间";
				String sumPrice = oSet.sumPrices[i] + "元";
				System.out.println((i + 1) + "\t" + oSet.names[i] + "\t"
						+ oSet.disMegs[i] + "\t" + oSet.times[i] + "点\t"
						+ oSet.addresses[i] + "\t" + sumPrice + "\t" + state);
			}
		}
	}

	/**
	 * 签收订单
	 */
	public void qianshou() {
		boolean flag = true; // 订单是否找到
		Scanner input = new Scanner(System.in);
		System.out.print("请选择要签收的订单序号:");
		int xuhao = input.nextInt();
		/*
		 * 循环查看订单 如果条件满足 就签收订单 或者提醒用户订单已经完成签收
		 */
		for (int i = 0; i < oSet.names.length; i++) {
			if (oSet.names[i] != null && oSet.states[i] == 0
					&& xuhao == (i + 1)) {
				oSet.states[i] = 1;
				flag = false;
				System.out.println("订单签收成功!");
			} else if (oSet.names[i] != null && oSet.states[i] == 1
					&& xuhao == (i + 1)) {
				System.out.println("您选择的订单已完成签收,不能再次签收!");
				flag = false;
			}
		}
		if (flag) {
			System.out.println("订单不存在!");
		}

	}
/**
 * 添加订单
 * 
 */
	public void add() {
		boolean isAdd = false;
		for (int i = 0; i < oSet.names.length; i++) {
			if (oSet.names[i] == null) {
				isAdd = true;
				int time = 0;
				boolean dingcantime = true;
				Scanner input = new Scanner(System.in);
				System.out.print("请输入点餐人姓名:");
				String name = input.next();
				System.out.println("序列\t菜名\t单价\t点赞数");
				for (int j = 0; j < dishNames.length; j++) {
					String money = prices[j] + "元";
					String Zan = (praiseNums[j] > 0) ? praiseNums[j] + "赞": "0";
					System.out.println((j + 1) + "\t" + dishNames[j] + "\t"+ money + "\t" + Zan);
				}
				System.out.print("请选择您要点的菜品编号:");
				int cai = 0;
				if (input.hasNextInt()) {
					cai = input.nextInt();
				} else {
					System.out.println("输入错误!");
					break;
				}
				System.out.print("请选择您需要的份数:");
				int num = 0;
				if (input.hasNextInt()) {
					num = input.nextInt();
				} else {
					System.out.println("输入错误!");
					break;
				}
				String dishMeg = dishNames[cai - 1] + num + "份";
				double canfei = prices[cai - 1] * num;
				double soncaifei = (canfei >= 50) ? 0 : 5;
				System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
				do {
					time = input.nextInt();
					if (time < 10 || time > 20) {
						System.out.print("时间不匹配,请从新输入:");
					} else {
						dingcantime = false;
					}
				} while (dingcantime);
				System.out.print("请输入送餐地址:");
				String dizhi = input.next();
				System.out.println("订餐成功!");
				System.out.println("您订的是:" + dishMeg);
				System.out.println("送餐时间:" + time + "点");
				System.out.println("餐费:" + canfei + "元,送餐费" + soncaifei
						+ "元,总计:" + (canfei + soncaifei) + "元。");
				oSet.names[i] = name;
				oSet.disMegs[i] = dishMeg;
				oSet.times[i] = time;
				oSet.addresses[i] = dizhi;
				oSet.sumPrices[i] = canfei + soncaifei;
				break;
			}
		}
		if (!isAdd) {
			System.out.println("对不起,您的餐袋已满!");
		}

	}

/**
 * 删除订单  
 * 根据用户正确的输入数据 进行判断查找
 * 如果找到数据   对相应坐标之后的数据进行向前位移及删除最后一位数值的值
 * 如果未找到   提醒用户未找到
 */
	public void del() {
		boolean flag = true;
		Scanner input = new Scanner(System.in);
		System.out.print("请输入要删除的订单号:");

		if (input.hasNextInt()) {
			int del = input.nextInt();
			for (int i = 0; i < oSet.names.length; i++) {
				if (oSet.names[i] != null && oSet.states[i] == 1
						&& del == i + 1) {
					flag = false;
					//循环向前位移
					for (int j = del - 1; j < oSet.names.length - 1; j++) {
						oSet.names[j] = oSet.names[j + 1];
						oSet.disMegs[j] = oSet.disMegs[j + 1];
						oSet.times[j] = oSet.times[j + 1];
						oSet.states[j] = oSet.states[j + 1];
						oSet.addresses[j] = oSet.addresses[j + 1];
						oSet.sumPrices[j] = oSet.sumPrices[j + 1];
					}
					//删除最后位置的数据
					oSet.names[oSet.names.length - 1] = null;
					oSet.disMegs[oSet.names.length - 1] = null;
					oSet.times[oSet.names.length - 1] = 0;
					oSet.states[oSet.names.length - 1] = 0;
					oSet.addresses[oSet.names.length - 1] = null;
					oSet.sumPrices[oSet.names.length - 1] = 0;
					System.out.println("删除成功!");
					break;
				} else if (oSet.names[i] != null && oSet.states[i] == 0
						&& del == i + 1) {
					System.out.println("订单未签收,不能删除!");
					flag = false;
					break;
				}
			}
			if (flag) {
				System.out.println("订单未找到!");
			}
		} else {
			System.out.println("请正确输入!");
		}

	}
  /**
   * 点赞
   * 先循环打印之前的点赞数     之后根据判断条件  进行点赞数+1  完成后提示点赞成功  否则提醒报错
   */
	public void dianzan() {
		System.out.println("序列\t菜名\t单价\t点赞数");
		for (int j = 0; j < dishNames.length; j++) {
			String money = prices[j] + "元";
			String Zan = (praiseNums[j] > 0) ? praiseNums[j] + "赞" : "0";
			System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + money
					+ "\t" + Zan);
		}
		Scanner input = new Scanner(System.in);
		System.out.print("请选择要点赞的菜品序号:");
		if (input.hasNextInt()) {
			int xuhao = input.nextInt();
			if (xuhao < 1 || xuhao > 3) {
				System.out.println("请正确输入!");
			} else {
				praiseNums[xuhao - 1]++;
				System.out.println("点赞成功!");
			}
		} else {
			System.out.println("请正确输入!");
		}
	}
}

ps.之前写完一直没有交emmmmm。

猜你喜欢

转载自blog.csdn.net/qq_43024800/article/details/83338522