要求:
选题:随机数采用GUI设计、算术运算使用到了MySQL
选题一 |
随机数游戏 |
题目要求 |
|
功能基本要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件或数据库中。 能力要求:①沟通表达能力②资料搜集能力③自主学习能力④时间规划能力⑤文档撰写能力⑥面向对象编程思想、软件工程思想 |
|
使用Java知识 |
|
1.输入输出 2.随机函数 3.循环Again 4.判断选择(if) 5.运算符(++/--/</>) 6.类和对象 7.类的方法 8.构造方法 9.接口、继承 10.GUI图形用户界面 |
|
选题二 |
算术运算测试 |
题目要求 |
|
功能基本要求:实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。(添加排行榜功能存放到文件或数据库中)。 能力要求:①沟通表达能力②资料搜集能力③自主学习能力④时间规划能力⑤文档撰写能力⑥面向对象编程思想、软件工程思想 |
|
使用Java知识 |
|
1.输入输出 2.随机函数 3.循环(while ) 4.判断选择(if) 5.运算符+、- 6.JDBC数据库 |
一.猜数字游戏:
package xiangmu11;
import java.awt.BorderLayout;//导入对等体的包(调用事件)
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;//导入组件的包(使用组件)
import javax.swing.JFrame;//顶层容器
import javax.swing.JLabel;
import javax.swing.JPanel;//常用,需放在其他容器上才能用
import javax.swing.JTextField;
//这是一个实现猜数字小游戏的窗口
public class GameFrame extends JFrame{//顶层容器
GameManager gameManager = new GameManager();
JLabel label1;//按钮请输入一个100以内的整数
JTextField txt1;//按钮欢迎来到猜数字小游戏
JButton button1;//按钮“猜 ”
JButton button2;//按钮“重新来过”
JButton button3;//按钮“退出游戏”
JButton button4;//按钮“猜的次数”
//构造方法
public GameFrame() {
//程序运行前先产生一个随机数
gameManager.Again();//调用GameManager里的gameManager
//设置Container容器
Container con = getContentPane();
//设置边界布局
con.setLayout(new BorderLayout());
//上
JPanel jp1 = new JPanel();
jp1.setLayout(new GridLayout(1, 1));//设置布局(网格)
txt1 = new JTextField();
jp1.add(txt1);
//中
JPanel jp2 = new JPanel();
jp2.setLayout(new BorderLayout());//边境
label1 = new JLabel("请输入一个100以内的整数");
jp2.add(label1, BorderLayout.CENTER);//添加监听
//下
JPanel jp3=new JPanel();
jp3.setLayout(new GridLayout(1, 4));//设置布局
button1=new JButton("猜");
//添加监听
button1.addActionListener(new Monitor1(txt1, label1));
button2=new JButton("重新来过");
//添加监听
button2.addActionListener(new Monitor2(txt1, label1));
button3=new JButton("退出游戏");
//添加监听
button3.addActionListener(new Monitor3());
button4=new JButton("猜的次数");
//添加监听
button4.addActionListener(new Monitor4(txt1, label1));
jp3.add(button1);
jp3.add(button2);
jp3.add(button3);
jp3.add(button4);
con.add(jp1, BorderLayout.NORTH);//上
con.add(jp2, BorderLayout.CENTER);//中
con.add(jp3, BorderLayout.SOUTH);//下
//回车监听事件
//键盘点击回车,实现和点击“猜”按钮一样的功能
txt1.addActionListener(new Monitor1(txt1, label1));
//窗体设置
setTitle("欢迎来到猜数字小游戏");// 设置窗口的标题
setSize(350, 250);// 设置大小
setLocation(750, 400);// 设置窗口出现的位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
txt1.requestFocus();//txt1获取光标
setVisible(true);//可视化设置
}
//监听按钮一:猜
class Monitor1 implements ActionListener {
JTextField num = new JTextField();
JLabel label = new JLabel();
//构造函数
Monitor1(JTextField num, JLabel label) {
this.num = num;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) {
int number = Integer.parseInt(num.getText());
int flag;
int time = 0;
flag = gameManager.Guess(number);
if (flag == 1) {
label.setText(number + "\t这个数太大了");
time++;
} else if (flag == -1) {
label.setText(number + "\t这个数太小了");
time++;
} else if (flag == 0) {
label.setText("恭喜你,猜对了!");
}
num.setText("");
num.requestFocus();
}
}
/*
* 监听按钮二:重新开始
*/
class Monitor2 implements ActionListener {
JTextField num = new JTextField();
JLabel label = new JLabel();
// 构造函数
Monitor2(JTextField num, JLabel label) {
this.num = num;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) {
gameManager.Again();
int time = 0;
label.setText("请再次输入一个100以内的整数!");
num.setText("");
}
}
//监听按钮三:退出游戏
class Monitor3 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
//监听按钮四:猜的次数
class Monitor4 implements ActionListener {
JTextField time = new JTextField();
JLabel label = new JLabel();
Monitor4(JTextField time, JLabel label) {
this.time = time;
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
label.setText("您一共猜了6次!");
}
}
//主函数
public static void main(String[] args) {
GameFrame Frame = new GameFrame();
}
}
package xiangmu11;
import java.util.Random;
//一个产生随机数和比较猜的对不对的函数
public class GameManager{
private int number=0;// 随机数
public int getNumber(){
return number;
}
public void setNumber(int number){
this.number=number;
}
//number玩家猜的数
//return大了返回1,小了返回-1,相等返回0
public int Guess(int number){
if(number>this.number){
//System.out.println("大了");
return 1;
}else if(number<this.number){
//System.out.println("小了");
return -1;
}else{
//System.out.println("相等");
return 0;
}
}
//再来一次
public void Again(){
Random random = new Random();
//产生一个1-100的一个随机数
int num=random.nextInt(99)+1;
setNumber(num);//得到猜的随机数
System.out.print("随机数字为:"+num);//显示,在一定程度上节省时间
}
}
运行结果:
二.算术运算测试
package xiangmu11;
//算术运算测试
import java.util.Scanner;
public class calculater{
public static void main(String[] args){
Shujuku s=new Shujuku();
Scanner input=new Scanner(System.in);
System.out.println("欢迎进入算数游戏测试");
System.out.println("游戏规则:");
System.out.println("计算下列10道算术题,每题十分,共计一百分,答对得分答错不扣分");
System.out.println("**************加油*****************");
int a=0,b=0,c;
String op="+";
int score=01;
int count=0;//用来计算用户得出的成绩
int count1=0;//用来计算用户得出的成绩1
boolean again=true;//大循环
String choose;//是否选择继续游戏
int sum=0;//记录用户获得的总成绩
c=0;//接收a+b的和c
String id;//用户名便于存储
int times=0;//计算用户第几次游戏
System.out.println("请您输入您的用户名:");
id=input.next();
if(id.length()>4){//四位及以内
System.out.println("输入用户名有误,请重新输入!");
id=input.next();
}else{
System.out.println("游戏开始!");
}
//随机产生10道题
while(true){
System.out.println();
sum=0;
for(int i=1;i<=10;i++){
//产生100以内随机数
a=(int)(Math.random()*100);
b=(int)(Math.random()*100);
int x=(int)(Math.random()*10);//随机产生加减法
if(x%2==0){
System.out.println("第"+i+"题"+":"+a+"+"+b+"=?");
System.out.print("第"+i+"题答案是:");
int result=input.nextInt();
c=a+b;
System.out.print("正确答案是:"+c);
if(result==c){
count+=10;
System.out.println("恭喜答对了!");
}else{
System.out.println("很遗憾答错了,继续努力!");
}
}
else{
if(a<b){//避免减法中出现负数(交换位置)
int K;
K=a;
a=b;
b=K;
}
System.out.println("第"+i+"题"+":"+a+"-"+b+"=?");
System.out.print("第"+i+"题答案是:");
int result=input.nextInt();
c=a-b;
System.out.print("正确答案是:"+c);
if(result==c){
count1+=10;
System.out.println("恭喜答对了!");
}else{
System.out.println(" 很遗憾答错了,继续努力!");
}
}
}
sum=count+count1;//累加和
s.inserts(a,b,op,c,score);
System.out.println("******************************");
System.out.println("游戏完成,您的总成绩是:"+sum);
if(sum>80&&sum<100){
System.out.println("哇哦,太棒了!");
}else if(sum>60&& sum<=80) {
System.out.println("超过了大部分玩家!");
}else{
System.out.println("成绩不及格,继续努力!");
}
System.out.println("退出游戏输入 0,继续参加输入0以外任意值");
choose=input.next();
if(choose.equals("0")){
System.exit(1);
System.out.println("回见");
}else{
System.out.println("继续游戏,开始答题!");
System.out.println("重复游戏规则:");
System.out.println("计算下列10道算术题,每题十分,共计一百分,答对得分答错不扣分");
System.out.println("*************加油!***************");
}
}
}
}
package xiangmu11;
//将其存储于数据库内
//包括用户的用户名和其分数
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Shujuku{
//数据连接
Connection conn=null;
//创建预处理对象
PreparedStatement ps=null;
ResultSet rs=null;
Statement statement=null;
public Connection getConnection(){
try{
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
// 获取连接
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/user", "root","root");
}catch (SQLException e){
e.printStackTrace();
}
return conn;
}
//释放资源
public void closeAll(){
if (rs!=null){
try{
rs.close();
} catch (SQLException e){
e.printStackTrace();
}
}
if(ps!=null){
try{
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if (conn!=null) {
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
//插入分数的方法
public int inserts(int a,int b,String op,int sum,int score){
int result = 0;
// 获取链接
Connection conn=getConnection();
//向数据库插入分数的语句
String sql=" insert into user(op1,op2,op,sum,score) values(?,?,?,?,?)";
try{
//创建预处理对象
ps=conn.prepareStatement(sql);
ps.setInt(1, a);
ps.setInt(2, b);
ps.setString(3, op);
ps.setInt(4, sum);
ps.setInt(5, score);
result=ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}finally{
closeAll();
}
return result;
}
public void select(){
System.out.println("用户的分数记录:");
// 获取链接
Connection conn=getConnection();
//向数据库查找分数等
String sql=" select *from score where id!=0 order by score";
try{
ps= conn.prepareStatement(sql);
//执行给定的SQL语句,返回一个 ResultSet对象
rs =ps.executeQuery(sql);
while(rs.next()){
int id=rs.getInt("id");//"op2"
int op1=rs.getInt("op1");
int op2=rs.getInt("op2");
String op=rs.getString("op");//2
int sum=rs.getInt("sum");
int score=rs.getInt("score");
System.out.print("用户名:"+id+"运算符:"+op+"操作数1:"+op1+"操作数2:"+op2+"和:"+sum+"成绩:"+score);
}
}catch (SQLException e1){
e1.printStackTrace();
}finally{
closeAll();
}
}
}
运行结果:
使用数据库表: