java课程设计阶段一 个人设计
目 录
1 选题.......................................................................................................................... 1
2 系统需求分析............................................................................................................ 2
2.1 系统可行性分析...................................................................................................... 2
2.2 系统需求分析.......................................................................................................... 2
2.3 项目进度安排.......................................................................................................... 3
3 系统设计.................................................................................................................... 4
3.1 系统设计................................................................................................................. 4
4 系统实现.................................................................................................................... 8
4.1 算术运算测试.......................................................................................................... 8
4.2 猜数游戏.................................................................................................................. 9
5 结论和心得................................................................................................................. 11
1 选题
选题一 |
算术运算测试 |
题目要求 |
|
实现十道100以内加减法数学题,能根据题目计算出答案, 与输入答案对比,判断做题是否正确,最后计算分数。 添加排行榜功能存放到文件或数据库中。 |
|
使用Java知识 |
|
Java基本输入输出 运算符 循环 选择分支 GUI 等 |
|
选题二 |
猜数游戏 |
题目要求 |
|
计算机产生随机数,猜中即胜, 猜不中,提示是大了还是小了,继续猜, 直至猜到,给出所用时间和评语。 保留用户测试成绩,做出成绩排行榜。排行榜存放到文件或数据库中。
|
|
使用Java知识 |
|
循环 分支 变量 常用类 文件 等. |
2 系统需求分析
2.1 系统可行性分析
技术可行性:
算术运算测试:(1)GUI图形用户界面
(2)生成随机数,进行加减法运算
猜数游戏:(1)产生0--100的随机数
(2)获取开始和结束时间
(3)用for循环来控制猜数,直到猜对为止
(4)文件管理
操作可行性:
只需要用户有一台计算机即可,因此在操作上是可行的。
2.2 系统需求分析
算术运算测试:
实现十道100以内加减法数学题,能根据题目计算出答案,
与输入答案对比,判断做题是否正确,最后计算分数。
猜数游戏:
计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,
直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件中
图1-1 算术运算测试
图1-2 猜数游戏
2.3 进度安排
阶段一进度安排如表3-1所示。
表3-1 进度安排表
阶段 |
持续时间 |
阶段描述 |
输出 |
构思阶段 |
1小时 |
需求分析 |
需求说明,功能模块图 |
设计阶段 |
1小时 |
系统设计 |
设计说明-可以画流程图;数据库设计 |
实现阶段 |
1天半 |
编写代码 |
项目工程源代码 |
1小时 |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
运行阶段 |
1小时 |
部署、运行 |
系统使用说明、运维报告、录制视频 |
3 系统设计
3.1 系统设计
项目一:算术运算测试:
(1)图形界面化设计:
JFrame jf = new JFrame();//创建窗口
JPanel jp = new JPanel();//创建面板
JLabel jl = new JLabel();//创建标签 显示题目
JLabel jl2 = new JLabel();//创建标签 显示结果正确与否
JButton jb = new JButton("提交");//创建“提交”按钮
JButton jb2 = new JButton("下一题");//创建“下一题”按钮
JTextField jtf = new JTextField();//创建文本框 输入答案
jf.setSize(500, 500);//调整窗口大小 宽,长
jf.add(jp);//往窗口中添加面板
jp.setLayout(null);//设置布局管理器为空
jp.add(jl);//添加标签 此标签显示题目
jl.setBounds(18, 18, 100, 30);//调整标签位置 大小 x,y,宽,高
jp.add(jl2);//添加标签 此标签显示结果正确与否
jl2.setBounds(60, 100, 250, 70);
jp.add(jtf);//添加文本框用户输入答案
jtf.setBounds(120, 18, 40, 30);
jp.add(jb);//添加“提交”按钮
jb.setBounds(10, 60, 80, 40);
jp.add(jb2);//添加“下一题”按钮
jb2.setBounds(100, 60, 80, 40);
jf.setVisible(true);//true使Window可见,否则隐藏Window
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置用户在此框架上启动“关闭”时默认执行的操作。退出应用程序默认窗口关闭操作 在窗口被关闭时退出JVM
(2)随机生成两个0—100的数:
Random ran = new Random();
num1 = (int)(Math.random()*100);
num2 = (int)(Math.random()*100);
(3)响应用户点击“提交”按钮:
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int s=Integer.parseInt(jtf.getText());//将用户输入的答案字符串转化成十进制数
if(s==sum) {
jl2.setText("恭喜您,回答正确!");
score+=10;
}else {
jl2.setText("很遗憾,回答错误。 正确答案:"+sum);
}
}
});
(4)响应用户点击“下一题”按钮:
jb2.addActionListener(new ActionListener() {
@Overrid
public void actionPerformed(ActionEvent e) {
Random ran = new Random();
num1 = (int)(Math.random()*100);
num2 = (int)(Math.random()*100);
sum=0;
temp=(int)(Math.random()*10)%2;//若temp为0则加法 1为减法
if(temp==0) {
count++;
jl.setText("第"+count+"题:"+num1+"+"+num2+"=");
sum=num1+num2;
}else {
count++;
jl.setText("第"+count+"题:"+num1+"-"+num2+"=");
sum=num1-num2;
}
if(count==11) {
JOptionPane j = new JOptionPane();//提示框
j.showMessageDialog(jf, "您的得分是:"+score);
jf.setVisible(false);//关闭窗口
}
}
});
(5)主函数:
public static void main(String[] args) {
Arithmetic a = new Arithmetic();
a.produce();
}
项目二猜数游戏:
(1)录入玩家人数并输入名字:
Scanner p=new Scanner(System.in);
System.out.println("请输入玩家人数:"); //游戏人数
int person=p.nextInt();
System.out.println("请输入您的代号:");
String name = p.next();
(2)生成随机数:
Random ran=new Random();
number=ran.nextInt(100); //产生0--100的随机数
(3)猜数过程:
int guessNumber=-1;
for(int j=0;guessNumber!=number;j++) { //用for循环来控制猜数,直到猜对为止
guessNumber=p.nextInt(); //录入用户猜的数
count++; //猜一次,加一次
if(guessNumber>number) {//将用户猜的数与随机数进行比较
System.out.println("您猜的太大了,请往小一点猜");
continue;
}
else if(guessNumber<number) {
System.out.println("您猜的太小了,请往大一点猜");
continue;
}else if(number==guessNumber) {
end=System.currentTimeMillis(); //猜对了 记录结束时间
time=(end-start)/1000;
if(count<7)
System.out.println("真厉害,恭喜你,猜对了!");
else if(count>7) {
System.out.println("你终于猜对了。");
}
}
(4)时间:
double start=0.0; //开始时间
double end=0.0; //结束时间
double time=0.0;//计算所用时间
start = System.currentTimeMillis(); //获取开始时刻
end=System.currentTimeMillis(); //猜对了 记录结束时间
time=(end-start)/1000;
(5)信息录入:
try {
w=new FileWriter("info.txt",true);
w.write("代号:");
w.write(name);
w.write("\r\n");
w.write("猜数所用次数:");
String count1= Integer.toString(count);
w.write(count1);
w.write(" 次 \r\n");
w.write("花费时间:");
String time1=Double.toString(time);
w.write(time1);
w.write(" 秒 \r\n\n");
System.out.println("玩家信息已读入");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
w.close();
} catch (IOException e) {
e.printStackTrace();
}
}
(6)排名:
try {
fw = new FileWriter("rank.txt",true);
fw.write("排名(倒序):\n");
for(double s1:s) {
String s2= Double.toString(s1);
fw.write(s2);
fw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
4 系统实现
4.1 算术运算测试
4.2 猜数游戏
5 结论和心得
项目一算术运算测试:第一次使用到GUI图形界面设计,通过跟着老师视频学习和网上资料慢慢学会点这部分的内容,窗口、面板、标签、按钮、文本框,组合到了一起变成一个带有一点功能的小窗口。特别的是点击一个按钮之后的响应,这方面是我觉得这次实训收获最大的地方,因为原来都不懂,觉得很神奇,这次的实训则帮我揭开了这层神秘的面纱。通过一个ActionListenr按钮(类似一个监听器)来响应用户点击按钮,而ActionListenr其实是一个接口,里面有一个actionPerformed(ActionEvent e)方法,来具体实现。
项目二猜数游戏:这个项目巩固了前面大部分所学的知识 变量、循环、数组、条件判断、常用类、异常处理、文件读写等,更加提高了我的编程能力。让我发现了我在数组和文件处理方面还是要加强的,基础没有太牢固。
以后要多动手,提高自己的编程能力。基础是最重要的,只有基础牢固才能写对代码。学习Java要脚踏实地,要更有信心和耐心。多向老师、同学请教讨论。