Java程序设计实训实验指导书Word格式.docx
《Java程序设计实训实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计实训实验指导书Word格式.docx(155页珍藏版)》请在冰豆网上搜索。
System.out.println();
************************************"
阶段3:
使用\n和\t控制输出格式
从控制台输出购物管理系统的登录菜单
创建文件:
LoginMenu.java
结合使用\n和\t控制菜单输出格式
publicclassLoginMenu{
/*
*显示系统登录菜单
*/
\n\n\t\t\t欢迎使用我行我素购物管理系统1.0版\n\n"
System.out.println();
****************************************\n"
System.out.print("
请选择,输入数字:
"
阶段4:
输出两个菜单
1、系统主菜单
MainMenu.java
2、客户信息管理菜单
CustMMenu.java
阶段5:
代码排错技巧
纠正程序中的错误,使其输出“我喜欢Java程序”
publicclasswrongcode{
publicstaticvoidMain(){
/*打印输出一条信息
system.out.println(我喜欢Java程序)
//修改为:
system.out.println(“我喜欢Java程序”);
加””和;
实验二变量、数据类型和运算符
升级“我行我素”购物管理系统,完成以下功能:
•购物结算
•打印购物小票
•计算会员积分
•模拟幸运抽奖
•计算员工工资
二、训练技能点:
•会声明和使用变量
•能熟练使用常用运算符
•赋值运算符:
=
•算术运算符:
+、-、*、/、%
运算符(*、=)、从控制台输出信息
根据购物清单及会员级别:
1、计算消费金额
客户
购买商品
单价
个数
折扣
1
T恤
¥420.78
9.5
2
网球
¥45
3
无
2、以下表形式输出结果(不要求表格边框)
消费金额
张三
?
李四
声明变量存放商品信息(单价、购物个数)
根据不同折扣,分别计算消费金额
使用“+”连接输出信息,使用\t控制输出格式
代码:
publicclassPay1{
doubleshirtPrice=420.78;
//T恤单价
intshirtNo=1;
//购T恤件数
doubletennisPrice=45;
//网球单价
inttennisNo=3;
//购网球个数
doubleshirtMoney=;
//张三消费金额
doubletennisMoney=;
//李四消费金额
客户\t"
+"
消费金额"
张三\t"
+shirtMoney);
张三(享8折)购物如右表所示,结算时支付1500元
1、计算消费总额并打印购物小票(如下图)
商品
245
网球鞋
570
网球拍
320
2、计算购物获得的会员积分(100元获3分)
运算符(%、/)
幸运抽奖:
凡是4位会员卡号的各个位上的数字之和大于20,则为幸运客户,有精美Mp3送上,编程计算8349各位数字之和
结合使用“/”和“%”分解获得各位数字
计算各位数字之和
商场为员工提供了基本工资(3000元)、物价津贴及房租津贴,其中物价津贴为基本工资的40%,房租津贴为基本工资的25%。
编程计算实领工资
实验三运算符和条件结构
一、上机目标
•录入会员信息
•菜单切换
•计算会员折扣
•会使用关系运算符和逻辑运算符
•会从控制台获取键盘输入的数据
•会使用if-else和多重if条件结构
•会使用switch结构
三、实验内容
获取键盘输入
条件运算符
逻辑运算符
录入会员信息(会员号、会员生日、会员积分)并显示录入信息
升级功能:
判断录入是否合法(会员号必为4位整数),录入合法,显示录入的信息;
不合法,显示“录入失败”
完成信息录入:
使用Scanner获取用户输入,存储在变量中
publicclassAddCust1{
我行我素购物管理系统>
客户信息管理>
添加客户信息\n"
/*录入会员信息*/
Scannerinput=newScanner(System.in);
System.out.print("
请输入会员号(<
4位整数>
):
intcustNo=input.nextInt();
请输入会员生日(月/日<
用两位数表示>
StringcustBirth=input.next();
请输入积分:
intcustScore=input.nextInt();
/*显示录入的信息*/
\n已录入的会员信息是:
System.out.println(custNo+"
\t"
+custBirth+"
+custScore);
判断会员号是否合法
商场实行新的抽奖规则:
会员号的百位数字等于产生的随机数字即为幸运会员。
基于第2章阶段3,实现:
1、从键盘接收会员号
2、使用if-else实现幸运抽奖
switch结构
多重if结构
实现从登录菜单进入二级菜单
1、输入1:
进入主菜单
2、输入2:
退出并显示“谢谢您的使用!
”
3、输入其他数字:
显示“输入错误”
在第1章阶段3登录菜单程序(LoginMenu.java)基础上完成
从控制台接收一个数字
使用switch结构或多重if结构实现菜单切换
会员根据积分享受不同折扣,如右表。
使用多重if结构计算会员折扣
x<2000
9折
2000≤x<4000
8折
4000≤x<8000
7折
x≥8000
6折
实验四循环结构
(一)
一、上机目标:
•查询商品价格
•升级购物结算
•升级菜单切换
•升级幸运抽奖
•会使用while循环
•会使用do-while循环
•会进行代码跟踪调试
三、实验内容:
while循环结构
编程实现:
计算100以内(包括100)的偶数之和
观察在每一次循环中变量值的变化
实现商品查价:
1、输入商品编号,显示商品价格
2、循环查询
3、输入“n”退出循环
编号
价格
实现思路及关键代码:
创建LookPrice.java
声明变量存储商品信息
循环体:
从键盘接收商品编号,使用switch语句选择该编号对应的商品信息,并输出商品名称和商品价格
循环条件
获取用户输入,为“n”时结束循环
阶段3
基于阶段2,升级实验二阶段2购物结算功能:
1、循环输入商品编号和购物数量,计算消费金额并累加到总金额
2、输入“n”开始结账(假设享8折)
3、输入实付金额,计算找零
do-while循环结构
进入系统主菜单,提示输入数字选择进入相应菜单。
用户输入错误,可以重复输入,直到输入正确,执行相应的操作后退出循环
升级实验三阶段2幸运抽奖:
1、循环输入4位会员号,判断是否为幸运会员
2、输入“n”退出抽奖
实验五循环结构
(二)
•统计顾客的年龄层次
•循环录入会员信息
•登录时用户信息验证
•会使用for循环结构
•会使用break和continue控制循环停止或继续
for循环结构
为提高销售额,对顾客的年龄层次(30岁之上/之下)进行调查(样本数为10),计算两个层次的顾客比例
创建AgeRate.java
定义计算器变量old和young
循环录入被调查的10位顾客的年龄
for(inti=0;
i<
10;
i++){
//录入顾客年龄
//统计各层次的人数
计算各层次比例
doubleoldRate=old/10.0;
continue语句
实现循环录入客户信息:
1、循环录入3位客户信息
2、判断会员号是否合法(4位整数)
3、会员号合法,显示录入的信息,否则显示录入失败
基于实验三阶段1代码AddCust.java扩展
增加for循环结构
3;
//从键盘获取信息
//判断:
如果会员号不合法,输出错误提示,继续下一次循环
//会员号合法则输出录入的信息
使用continue控制循环执行过程
实现用户登录时的信息验证:
1、登录时提示输入用户名和密码并进行验证
2、如果输入超过3次,程序结束
3、根据3种匹配结果(信息匹配/信息不匹配/3次都不匹配),执行不同的操作
循环结构,break,断点跟踪
一个球从100米高度自由落下,每次落地后反弹回原高度的一半;
再落下,求在第几次之后反弹高度小于0.1米,并计算在这一次落地时共经过多少米?
对代码进行跟踪调试,使其输出正确结果
实验六循环和分支结构综合训练(阶段练习)
一、上机目标
从控制台输入×
×
年×
月,从控制台输出该月日历
•会使用分支结构解决问题
•会使用循环结构解决问题
任务从控制台输入×
(1900年1月1日是星期一)
1、判断该年是否是闰
2、计算该月天数
3、计算该月第一天是星期几
4、按格式输出该月日历
阶段划分:
–阶段1
分析业务;
实现从控制台接收年和月,判断是否是闰年
–阶段2
编程计算输入月份的天数
–阶段3
编程计算输入的月份距离1900年1月1日的天数
–阶段4
编程计算输入月份的第一天是星期×
–阶段5
格式化输出×
月日历
实现:
从控制台接收年和月份,判断输入的年份是否是闰年
判断是否是闰年:
能被4整除但不能被100整除;
或者能被400整除
importjava.util.Scanner;
publicclassPrintCalendar1{
**********欢迎使用万年历*************"
\n请选择年份:
intyear=input.nextInt();
\n请选择月份:
intmonth=input.nextInt();
System.out.println();
intdays=0;
//存储当月的天数
booleanisRn;
/*判断是否是闰年*/
if(year%4==0&
&
!
(year%100==0)||year%400==0){
isRn=true;
//闰年
}else{
isRn=false;
//平年
if(isRn){
System.out.println(year+"
闰年"
平年"
扩展阶段1,实现2:
计算输入月份的天数
闰年2月:
29天
平年2月:
28天
/*计算当月的天数*/
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case2:
if(isRn){
days=29;
}else{
days=28;
}
default:
days=30;
}
System.out.println(month+"
\t共"
+days+"
天"
扩展阶段2,实现3:
1、计算输入月份距离1900年1月1日的天数
2、计算输入月份之前的天数(从当年年初开始)
3、求和
/*计算输入的年份之前的天数*/
inttotalDays=0;
for(inti=1900;
i<
year;
i++){
/*判断闰年或平年,并进行天数累加*/
if(i%4==0&
(i%100==0)||i%400==0){//判断是否为闰年
totalDays=totalDays+366;
//闰年366天
totalDays=totalDays+365;
//平年365天
System.out.println("
输入年份距离1900年1月1日的天数:
+totalDays);
/*计算输入月份之前的天数*/
intbeforeDays=0;
for(inti=1;
=month;
switch(i){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;
break;
case2:
if(isRn){
days=29;
}else{
days=28;
}
default:
days=30;
if(i<
month){
beforeDays=beforeDays+days;
totalDays=totalDays+beforeDays;
//距离1900年1月1日的天数
输入月份距离1900年1月1日的天数:
当前月份的天数:
+days);
扩展阶段3,已知该月之前的天数,计算输入月份的第一天是星期×
从1900年1月1日(星期一)开始推算:
星期×
=1+天数差%7
周一~周六:
1~6周日:
/*计算星期几*/
intfirstDayOfWeek;
//存储当月第一天是星期几:
星期日为0,星期一~星期六为1~6
inttemp=1+totalDays%7;
//从1900年1月1日推算
if(temp==7){//求当月第一天
firstDayOfWeek=0;
}else{
firstDayOfWeek=temp;
该月第一天是:
+firstDayOfWeek);
格式化输出×
分析下面语句的输出结果
星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"
for(inti=1;
=7;
System.out.print(i+"
源代码:
/*输出日历*/
for(intnullNo=0;
nullNo<
firstDayOfMonth;
nullNo++){
//输出空格
for(inti=1;
=days;
System.out.print(i+"
if((totalDays+i-1)%7==5){//如果当天为周六,输出换行
System.out.println();
实验七对象和类
•实现管理员类
•实现礼品类
•修改管理员密码
•礼品馈赠
•会定义一个类
•会创建一个对象
•会编写和使用类的toString()方法
定义一个类
toString()方法
定义管理员类
管理员类
属性:
用户名
密码
方法:
显示管理员信息
创建Manager类
定义其属性:
username和password
定义其toString()方法
publicStringtoString(){
return"
管理员信息是:
+username+"
+password;
定义礼品类
礼品类(Gift)
礼品名(name)
礼品价值(price)
显示礼品信息