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