目 录
1 选题
选题一 | 算术运算测试 |
题目要求 | |
实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。每道题10分,答对得10分,答错不得分。最后计算成绩为多少分。
面向对象编程思维和软件工程思想。 | |
使用Java知识 | |
Java基本输入输入出、运算符、循环、选择分支; JDBC,数据库,mysql。 | |
选题二 | 猜数游戏 |
题目要求 | |
计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件或数据库中。 1.沟通表达能力; 2.资料搜集能力; 3.自主学习能力; 4.时间规划能力; 5.独立完成项目能力; 6.文档撰写能力; 面向对象编程思维和软件工程思想。 | |
使用Java知识 | |
循环、分支、变量、判断、常用类等; JDBC。 |
2 系统需求分析
2.1 系统可行性分析
一、算数运算测试
1.技术可行性
本次程序运用的是Eclipse这个软件,采用的JAVA语言,JAVA面向对象,所以技术上是可行的。
2.经济可行性
因为本次程序使用的Eclipse软件是免费的,在这个软件上就能满足我们的需求,不需要额外的开销所以经济上也是可行的。
3.操作可行性
本次程序只需要用户有这个软件并配置好环境变量并且安装windowbuilder插件就可以使用,操作简单便捷,符合大部分用户的使用习惯。因此在操作上是可行的。
4.法律可行性
在法律许可范围内。
2.2 系统需求分析
1.通过与老师和同学交流,完成了简单的运算算数测试,实现了十道100以内加减法数学题,根据题目算出答案,与用户输入答案对比,判断做题是否正确,若正确,则分数加10分,若答错,则不加分,最后计算分数总和,每道题10分,共计100分。
2.功能模块图
图2-1 算数测试运算模块图
图2-2 猜数游戏模块图
2.3进度安排
阶段一进度安排如表3-1所示。
表3-1 进度安排表
阶段 | 持续时间 | 阶段描述 | 输出 |
构思阶段 | 2小时 | 需求分析 | 需求说明,功能模块图 |
设计阶段 | 2小时 | 系统设计 | 设计说明-可以画流程图;数据库设计 |
实现阶段 | 3小时 | 编写代码 | 项目工程源代码 |
3小时 | 系统测试 | 进行黑盒测试(功能测试)-测试说明 | |
运行阶段 | 4小时 | 部署、运行 | 系统使用说明、运维报告、录制视频 |
3 系统设计
3.1 系统设计
一、算数测试运算
根据系统的实际功能需求分析,对系统功能部分进行了设计。
随机测试题目生成模块:先随机生成2个数,随机生成运算符号+或者-。
题目测试模块:输入得数,判断所输入得数与正确答案是否相等。若正确,则输出正确进行下一道题目,若错误,则输出正确答案并进行下一道题目。
成绩记录模块:每道题10分,一共十道题,总共100分。
二、猜数游戏
根据系统的实际功能需求分析,对系统功能部分进行了设计。
随机数输入模块:程序运行后,会自动获取一个随机数,也就是说系统会随机生成一个数,这个数就是我们要猜的数。
次数记录模块:每猜一次就会记录一次,记录总次数。
大小判断模块:每次猜测的数字,若大于随机数,则会提示您的结果大于随机数,若小于数,则会提示您的结果小于随机数。否则退出判断,输出猜对了
4 系统实现
4.1 代码实现
一、算数运算测试
功能的基本要求:实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。每道题1分,答对得1分,答错不得分。最后计算成绩为多少分。
package com.su;
import java.util.*;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SuanShu {
private static java.sql.Statement statement;
public static void main(String[]args){
Scanner input=new Scanner(System.in);
//计算分数
int count=0;
int num=0;
String name = null;
//生成随机数a b
System.out.println("请输入有多少人进行测试");
int peoplenumber=input.nextInt();
for(int i=0;i<peoplenumber;i++)//测试人数
{
count=0;//循环一次后将答对次数清0
System.out.println("你是第"+(i+1)+"位进行算数测试的人");
System.out.println("输入姓名:");
name=input.next();
for(int j=0;j<1;j++)//循环输出10道题
{
int m=(int)(Math.random()*100);
int n=(int)(Math.random()*100);//随机生成两个随机数
if(m<=n)
{
System.out.println("第"+(j+1)+"道题为:"+m+"+"+n);//如果a>b就相加
num=m+n;
}else{
System.out.println("第"+(j+1)+"道题为:"+m+"-"+n);//如果a<b就想减
num=m-n;
}
System.out.println("请输入答案:");
int DaAn=input.nextInt();
if(DaAn==num)//令正确答案和用户输入答案相比较
{
System.out.println("回答正确!");
count++;
}else{
System.out.println("回答错误,正确答案是"+num);
}
}
System.out.println("您得得分为:"+count);
}
input.close();
/*-----------------------------------------------------------------------------------*/
Connection con;
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/mysql";
String user="root";
String password="root";
try{
Class.forName(driver);
con = (Connection) DriverManager.getConnection(url, user, password);
if(!con.isClosed())
System.out.println("Sucess");
//增加数据
String sql1 = "insert into suanshu values("+count+",'"+name+"')";
//statement = null;
statement.executeUpdate(sql1);
//查询数据
String sql = "select * from suanshu";
ResultSet rs=statement.executeQuery(sql);
System.out.println("------------");
System.out.println("姓名"+"\t"+"成绩");
System.out.println("------------");
String name1 = null;
while(rs.next()){
name1=rs.getString("name");
//int score=rs.getInt("score");
//System.out.println(name1 + "\t"+score);
System.out.println(name1);
}
rs.close();
con.close();
}catch(ClassNotFoundException e){
System.out.println("Sorry");
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("数据库成功获取");
}
}
}
二、猜数游戏
功能的基本要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。
package com.su;
import java.io.FileWriter;
import java.util.Arrays;
import java.util.Scanner;
public class CaiShu {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int count=0;//猜测次数
int guess;//用户猜测的数
long startTime=0,endTime=0;//开始时间和结束时间
System.out.println("******欢迎来到猜数游戏******");
System.out.println("请输入测试人数:");
int peoplenumble=input.nextInt();
for(int i=0;i<peoplenumble;i++)//测试人数
{
count=0;//当第2个人开始测试时,前面的猜测次数清0
int number=(int)(Math.random()*100);//生成100之内的随机数
System.out.println("您是第"+(i+1)+"位进行猜数游戏的人");
System.out.println("请输入姓名:");
String name =input.next();
startTime=System.currentTimeMillis();//开始时间
System.out.println("请猜一个1到100之间的整数");
guess=input.nextInt();//进行猜测
count++;//每循环一次猜测次数+1
do{
if(guess>number)
{
System.out.println("猜错了,您的结果偏大,可以再继续猜");//判断大小
guess=input.nextInt();
count++;
}
if(guess<number)
{
System.out.println("猜错了,您的结果偏小,可以再继续猜");//判断大小
guess=input.nextInt();
count++;
}
}while(guess!=number);
endTime=System.currentTimeMillis();//结束时间
System.out.println("恭喜您猜对了!");
System.out.println("您一共猜了"+count+"次,耗时"+(endTime-startTime)/1000+"秒");
if(count<=1)
System.out.println("真棒一次就猜对了!");//当一次就猜对时输出"真棒一次就猜对了!"
if(1<count&&count<=5)
System.out.println("不错哦!");//当2到5次就猜对时输出"不错哦!"
if(5<count)
System.out.println("还需努力哦!");//当5次以上猜对时输出"还需努力哦!"
}
}
}
4.2 运行界面实现
一、算数运算测试
二、猜数游戏
5结论和心得
结论:算术运算测试、猜数游戏让我对java程序有了更深的了解,同时也很圆满的完成了该项目
心得:回顾知识点的同时也增加了新知识数据库以及mysql和GUI的学习阶段1较短时间使我对数据库这方面感到自身水平的不总,但是我也在不断地学习和改进,与同学和老师的交流使我受益匪浅,我会慢慢提升自己,,即使学习路上会遇到很多困难和挫折,但也不会阻止我学习的道路。