阶段一WSY

 

1 选题

选题一

算法计算测试

题目要求

 

  1. 实现十道加减法(100以内随机)
  2. 可循环游戏
  3. 给出结果和最终成绩
  4. 给出评语
  5. 存储进数据库

使用Java知识

  1. 输入输出
  2. 随机数
  3. 循环(while )
  4. 判断选择(if)
  5. 运算符加减法
  6. 数据库存储(JDBC)

选题二

随机数游戏

题目要求

  1. 随机产生1-100以内的整数
  2. 给予提示
  3. 给予评语
  4. 给出最终次数和最终结果
  5. 可循环游戏

使用Java知识

  1. 用户输入输出
  2. 随机数
  3. 运算符(++/--/)
  4. 循环(while)
  5. 判断 boolean


2 系统需求分析

2.1 系统可行性分析

一、算术运算测试

1)经济可行性:

软件:eclipse  --免费

设备:笔记本/台式  +网络  --程序员基本约等于免费

需求课程:学校提供--约等于免费,社会人士需要100-200元课工场课程费用

2)技术可行性:

java基础语言,java面向对象,数据库基础语言。

对于学习过学校课程的学生或自学课工场的社会人士来讲,均难度不大,可行。

二、简易计算器模拟程序

1)经济可行性:

软件:eclipse  --免费

设备:笔记本/台式  +网络  --程序员基本约等于免费

需求课程:学校提供--约等于免费,社会人士需要100-200元课工场课程费用

2)技术可行性:

java基础语言,java面向对象

Java基础性技术,有基础均可实现,难度较低

 

 

 

2.2 系统需求分析

一、算术运算测试

1)需求分析:

随机数一共三个 a ,b, x

其中 a b为计算数,随机产生进行计算。而x控制随机的加法或减法。

控制台会给出计算式子,一共10题,答对获得十分,答错不扣分(会根据评分有评语)

控制台会要求用户输入用户名,4位数字,若不符合规定会要求重新输入

(控制台会给出提示和规则)

最终会显示总分,并将结果存储在数据库内。

循环游戏,可以选择继续或者退出。

 

 

 

 

 

 

 

 

 

 

2.2.1算法计算模块图

 

 

二、随机数游戏

(1)需求分析:

 random随机产生一个1-100之间的数(num

用户猜测的数为guessnum,次数times ,判断 again

 控制台给出规则及提示,一直猜猜对为止(会提供一共猜了几次)

 可以循环游戏,也可以退出游戏

 

 

 

 

 

 

2.2.2随机数游戏模块图

 

 

2.3 进度安排

表2.3.1随机数进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

0.5h

需求分析

需求说明,功能模块图

设计阶段

0.5h

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

5h

编写代码

项目工程源代码

2h

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

1h

部署、运行

系统使用说明、运维报告、录制视频

 

表2.3.1算法设计进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

1.5h

需求分析

需求说明,功能模块图

设计阶段

1.5h

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

10h

编写代码

项目工程源代码

4h

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

3h

部署、运行

系统使用说明、运维报告、录制视频

 

 

 

 

 

 

 

 

 

 

 

 

 


3 系统设计

3.1 系统设计

 

一. 算法设计

功能设计:1.提供十道问题(随机数)

          2.可记总分(sum++,在循环内做一个加一个)

          3.可循环游戏(boolean类型判断标识)

          4.可存储数据(数据库)

          5.提示性语句(普通输出println

          6.用户输入答案(Scanner

流程设计:

1.   系统提示用户输入用户名(四位以内数字错误会跳回重输入)

  1. 陈述游戏规则
  2. 随机产生加减法(加数被加数,减数被减数均为100以内)
  3. 累计计分
  4. 得出最终成绩并给予评语(0-6060-8080-100
  5. 系统存储分数于数据库
  6. 可选择继续游戏或者退出游戏

二. 随机数

功能设计:1.  随机产生数字(随机数)

  1. 可以记次数(times++,在循环内猜一次记一次)
  2. 可循环游戏(Boolean类判断标识)
  3. 提示性语句(普通输出println
  4. 用户输入答案(Scanner

流程设计:1.系统提示用户进入游戏

  1. 陈述游戏规则
  2. 生成随机数
  3. 用户猜数
  4. 给予提示,大了或者小了
  5. 累计次数
  6. 猜出来后给予评语并告知猜了几次
  7. 可选择退出或循环游戏

           

      

3.2 数据库设计(有则写-无则删除,如果是文件直接写文件)

表3.2.1  管理员信息表

序号

字段名

数据类型

是否为空

说明

1

glid

varchar(36)

管理员ID

2

glxm

varchar(8)

管理员姓名

3

glzh

varchar(11)

管理员账号

4

glmm

varchar(16)

管理员密码

5

cjsj

datetime(8)

创建时间

 

用户表主要记录了普通用户基本信息,如表4-2所示。

表3.2.2用户信息表

序号

字段名

数据类型

是否为空

说明

1

yhid

varchar(36)

用户ID

2

nc

varchar(16)

昵称

3

yhzh

varchar(11)

用户账号

4

yhmm

varchar(16)

用户密码

5

yhsj

varchar(16)

手机号码

6

email

varchar(20)

电子邮箱

8

xb

varchar(8)

性别

9

cjsj

datetime(8)

创建时间

 

 

系统实现

 

一随机数游戏Randomnum

package first;

import java.util.Random;

import java.util.Scanner;

public class Randomnum {

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

Random random =new Random();

int num =random.nextInt(101);//随机数0-100

int times = 0;

int guessnum;

System.out.println("*****您好~欢迎来到猜数小游戏!*****");

System.out.println("");

System.out.println("请您猜数,1-100之间的整数哦=v=");

boolean again=true;

String choose;

while(true) {

guessnum=scanner.nextInt();

if(guessnum

System.out.println("对不起,数猜小啦,请您再猜一次");

times++;

}else if(guessnum>num) {

System.out.println("对不起,数猜大啦,请您在才一次");

times++;

}else{

System.out.println("恭喜您,猜对啦!");

System.out.println("您一共猜了"+times+"次");

System.out.println("输入0退出,输入任意键再来一局^-^");

   choose=scanner.next();

   if(choose.equals("0")) {

    System.exit(1);

    }else {

       num=random.nextInt(101);//继续随机

        times=0;

        System.out.println("*****请您猜数,1-100之间的整数哦=v=*****");

   }

   }

}

}

 

. 算法计算测试Calculate

package seconed;

//简易计算小游戏=v=

import java.util.Scanner;

public class Calculate {

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 count=0;//用来计算用户得出的成绩

int count1=0;//用来计算用户得出的成绩

boolean again=true;//大循环

String choose;//是否选择继续游戏

int sum=0;//记录用户获得的总成绩

int 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以内随机数

int a=(int)(Math.random()*100);

int 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避免出现负数

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(sum);

System.out.println("******************************");

System.out.println("游戏完成,您的总成绩是:"+sum);

if(sum>80&&sum<100) {

System.out.println("哇哦,太棒了!");

}else if(sum>60&& sum<=80) {

System.out.println("超过了大部分玩家!真棒!加油!=v=");

}else {

System.out.println("还没及格哦,还需要加倍努力哦=^=");

}

 

System.out.println("退出游戏输入 0,继续参加输入0以外任意键");

  choose=input.next();

  

    if(choose.equals("0")) {

     System.exit(1);

     System.out.println("那我们下次再见啦~=v=");

     }else {

           System.out.println("欢迎您继续游戏,让我们开始答题吧~");

           System.out.println("重复一下游戏规则");

           System.out.println("计算下列10道算术题,每题十分,共计一百分,答对得分答错不扣分");

    System.out.println("*****************加油^-^*****************");

     }

 

}

}

}

(Shujuku)

package seconed;

//将其存储于数据库内

//包括用户的用户名和其分数

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", "0225");

} 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(Object... objects) {

int result = 0;

// 获取链接

Connection conn = getConnection();

//向数据库查找分数的语句

String sql = " insert into calculate(score) values(?)";

try {

//创建预处理对象

ps = conn.prepareStatement(sql);

if (objects != null) {

for (int i = 0; i < objects.length; i++) {

ps.setObject(i + 1, objects[i]);

}

}

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()) {

 String id=rs.getString("id");

 String score=rs.getString("score");

     System.out.print("编号:"+id+"分数:"+score);

 }

} catch (SQLException e1) {

e1.printStackTrace();

}finally {

closeAll();

}

}

}

 

系统测试

表5.1 随机数游戏

编号

测试功能

输入描述

预期结果

运行结果

HP01

随机数功能

用户使用时由系统给出一个随机的数(1-100以内)

可以正常产生且每次都不一样

正常,与预期结果一致

HP02

循环功能

游戏结束后询问用户是否继续游戏,如果用户是继续游戏则从头开始

与第一次游戏相同,可以正常运行

正常,与预期结果一致

HP03

次数统计功能

告诉用户在猜了几次之后才猜对的

数据正确

正常,与预期结果一致

HPO4

提示功能

将用户猜测的数与系统随机的数进行比较并给出提示

给出正确提示

正常,与预期结果一致

 

表5.2算法计算测试

 

编号

测试功能

输入描述

预期结果

运行结果

HP01

随机产生数字功能

用户使用时由系统给出一个随机的数(1-100以内)

可以正常产生且每次都不一样

正常,与预期结果一致

HP02

循环功能

游戏结束后询问用户是否继续游戏,如果用户是继续游戏则从头开始

与第一次游戏相同,可以正常运行

正常,与预期结果一致

HP03

总分计算功能

每题十分答错不得分,统计用户十道题之后的总分

计算正确提显示清楚

正常,与预期结果一致

HPO4

评语功能

60以下,60-80 80-100 100

四个档给予不同评语

判断正确评语委婉

正常,与预期结果一致

HPO5

数据库存储功能

将用户的总分存储在数据库下

存储正确且自动编号

正常,与预期结果一致

 

 

 

一. 随机数

 

 

 

二. 算法设计

 

 

 

 

结论和心得

 

心得:

因为工作原因开始的有一点点晚。不过好在老师准备的材料充足,同学也热情帮助,让我很快就完成了任务,下午做数据库的时候真的是有点头疼啊,一直在问老师问题,老师真的真的很耐心!本来还不好意思问,但是老师说发现问题是好事,我就多麻烦了老师一会,嘻嘻。最终在同学的讲解和老师的帮助下完成了数据库的实现,非常有成就感!非常开心!体会到了努力后成功的快乐。

你可能感兴趣的:(阶段一WSY)