Java课程设计_java课设「建议收藏」

Java课程设计_java课设「建议收藏」1.代码截图:2.设计思路建立GUI界面,系统产生一个随机数(对用户不可见),然后用户输入猜测数,系统根据用户每次输入的数据给出评语(偏大,偏小,猜测成功)。当用户最终猜测成功后,就把当次的随机数和猜测次数放到文件夹内。3.遇到的问题:(1).Guess里面每次产生的随机数m和最终猜测次数n一直不知道怎么传到sava里并保存输出到文件。(2).怎么在生成的guessgame文件里追加内容,而不是每…

大家好,又见面了,我是你们的朋友全栈君。

1.代码截图:

aeaf8c864192795a738a290ad0f88d11.png

2.设计思路

建立GUI界面,系统产生一个随机数(对用户不可见),然后用户输入猜测数,系统根据用户每次输入的数据给出评语(偏大,偏小,猜测成功)。当用户最终猜测成功后,就把当次的随机数和猜测次数放到文件夹内。

3.遇到的问题:

(1).Guess里面每次产生的随机数m和最终猜测次数n一直不知道怎么传到sava里并保存输出到文件。

(2).怎么在生成的guessgame文件里追加内容,而不是每次运行程序后guessgame里的内容就被清空。

第(2)题解决:

52a538d4432597f4b8bc1eaf57bc2367.png

4.代码

(1)猜数

package work1;

import javax.swing.*;

import java.awt.event.;

import java.util.;

public class Guess extends JFrame implements ActionListener { //Guess继承JFrame类,继承 ActionListener接口;

private JLabel userlabel; //私有属性;

private JTextField usertext;

private Random random = new Random(); //调用Ramdom()方法,获取随机数;

public int m=(int)(Math.random()*100)+1;

public int n = 1;

public Guess() { //猜数游戏函数;

setTitle(“GuessGame”); //设置文本框标题;

setLocation(300,400);//设置整个文本框位置

setSize(400, 200); //设置文本框的大小;

System.out.println(“程序随机分配的值为:”+m);

getContentPane().setLayout(null); //设置布局管理器

userlabel = new JLabel(“请输入一个猜想数(1-100)?;

userlabel.setBounds(20, 20, 180, 40);//设置组件(请输入一个猜想数(1-100))并调整其大小。由 x(左边坐标) 和 y(上边坐标) 指定左上角的新位置,由 width(宽度) 和 height(高度)指定新的大小。

usertext = new JTextField(10);

usertext.setBounds(100, 60, 150, 40); //设置组件(输入方框)并调整其大小。由 x(左边坐标) 和 y(上边坐标) 指定左上角的新位置,由 width(宽度) 和 height(高度)指定新的大小。

getContentPane().add(userlabel); // contentPane 对象,往容器添加上述两个组件;

getContentPane().add(usertext);

usertext.addActionListener(this); // 添加指定的操作侦听器以从此文本字段接收操作事件;

setVisible(true); //图形界面设置为可见

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

save.saveMandN(m, n);//将随机数和猜测次数保存

System.exit(0);

}

});

}

public void actionPerformed(ActionEvent e) { //游戏内容;

int text = Integer.parseInt(usertext.getText());

if (n != 10) { //10次及以下;

if (text == m) {//当用户猜对时,根据所用次数不同,显示不同内容;

if(n == 1){

JOptionPane.showMessageDialog(null,n+”次就猜对了,你太有才了! 优秀”);

save.saveMandN(m, n);

System.exit(0);

}

else if((n >=2) && (n<=6)){

JOptionPane.showMessageDialog(null,”猜了” + n +”次猜出来了,还不错哦! 良好”);

save.saveMandN(m, n);

System.exit(0);

}

else if(n >6){

JOptionPane.showMessageDialog(null,”猜了” + n +”次才猜出来,尚需努力啊!合格”);

save.saveMandN(m, n);

System.exit(0);

}

}

else if(text<1 || text>100)

JOptionPane.showMessageDialog(null, “输入数字非法哦!请重新输入一个1~100之间的数。”);

else if (text < m) //对用户输入数据的提醒;

JOptionPane.showMessageDialog(null, “很遗憾!偏小了,请重新再猜。”);

else if (text > m)

JOptionPane.showMessageDialog(null, “很遗憾!偏大了,请重新再猜。”);

n++;

} else{

JOptionPane.showMessageDialog(null, “10次都猜不出来…,猜测次数已用尽”); //超过十次,自动结束游戏;

save.saveMandN(m, n);

System.exit(0);

}

}

public static void main(String[] args) {

Guess mathgame = new Guess();

mathgame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //退出整个程序

}

}

(2)保存数据

package work1;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Scanner;

public class save {

public static void saveMandN(int m,int n)

{

try {

FileWriter fw = new FileWriter(“d:/guessgame.txt”, true); //定义FileWriter变量

fw.write(“随机数: “+m+”\n”+”猜测所用次数 : “+n+”\n”);//写入数据

fw.close();//关闭文件

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

45aa87541ec36b3b57abcd09bfd19102.png

4a00ed80794bab4979656ac5d4b5d851.png

0ef3313d321cd12704e1a3f152532c2a.png

c531c95aab35225a99dc31d6067fddbb.png

5.感受:

GUI界面之前只了解一点点,这次是想到一点就百度或请教别人该怎么实现,所以这次做的很艰难。多数并未了解原理,只是拿来能用就行。

另外我学会了怎么从Eclipse导出可执行jar包。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158027.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java List去除重复数据的五种方式

    java List去除重复数据的五种方式以下介绍五种-不同的方法去除Java中ArrayList中的重复数据1.使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:删除重复数据 保持添加到其中的数据的顺序Java示例使用LinkedHashSet删除arraylist中的重复项。在…

    2022年5月26日
    39
  • 阿里云服务器使用freessl配置免费证书Nginx

    阿里云服务器使用freessl配置免费证书Nginx环境:阿里云服务器购买的域名服务器:linux+nginxSSL证书:FreeSSL申请的免费证书步骤1、申请ssl证书具体参考二哥的“五分钟搞定HTTPS配置,二哥手把手教”https://blog.csdn.net/qing_gee/article/details/90031376博客,这位大佬写的很详细了2、配置阿里云服务器2.1、上传证书登陆阿里云控制台,搜索“ssl证书应用安全”,上传原有证书,注意一定要将证书转换为pem格式2.2、开启服务器443.

    2025年6月11日
    4
  • 文本分类——常见分类模型及分析_文本表示模型

    文本分类——常见分类模型及分析_文本表示模型内容提要基于规则的模型基于概率的模型基于几何的模型基于统计的模型  文本分类方法模型主要分为两个大类,一类是基于规则的分类模型;另一类是基于概率统计的模型。基于规则的模型  基于规则的分类模型相对简单,易于实现。它在特定领域的分类往往能够取得较好的效果。相对于其它分类模型来说,基于规则的分类模型的优点就是时间复杂度低、运算速度快。在基于规则的分类模型中,使用许多条规则来表述类别。类别规则可以…

    2022年10月5日
    2
  • sstream类的详解

    sstream类的详解C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。 strstream类同时可以支持C风格的串流的输入输出操作。istringstrea

    2022年6月4日
    33
  • PCIe卡的主要引脚 及 热插拔

    PCIe卡的主要引脚 及 热插拔目录1PCIe总线使用的信号1.1收发数据信号1.2辅助信号2热插拔参考资料1PCIe总线使用的信号PCIex1,x4,x8,x16卡的连接器引脚如下图所示,数据收发引脚为白色,辅助引脚为灰色:mechanicalkey对应防呆缺口的位置。1.1收发数据信号PCIe总线的层次分层图:与收发数据相关的线就是每个通路(lane)的两对差分传输线。PCIex1,x2,x4,x8,x16分别代表有1,2,4,8,16条lane。1.2辅助信号在连接器上提供辅助引脚来辅助

    2022年5月7日
    489
  • string类型保留两位小数_js保留4位小数

    string类型保留两位小数_js保留4位小数以下我们将为大家介绍JavaScript保留两位小数的实现方法:四舍五入以下处理结果会四舍五入:varnum=2.446242342;num=num.toFixed(2);//输出结果为2.45不四舍五入以下处理结果不会四舍五入:第一种,先把小数边整数:Math.floor(15.7784514000*100)/100//输出结果为15.77第二种,当作字符串,使用正则匹…

    2022年8月10日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号