1 选题
选题一 |
算法计算测试 |
题目要求 |
|
|
|
使用Java知识 |
|
|
|
选题二 |
随机数游戏 |
题目要求 |
|
|
|
使用Java知识 |
|
|
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. 系统提示用户输入用户名(四位以内数字错误会跳回重输入)
- 陈述游戏规则
- 随机产生加减法(加数被加数,减数被减数均为100以内)
- 累计计分
- 得出最终成绩并给予评语(0-60,60-80,80-100)
- 系统存储分数于数据库
- 可选择继续游戏或者退出游戏
二. 随机数
功能设计:1. 随机产生数字(随机数)
- 可以记次数(times++,在循环内猜一次记一次)
- 可循环游戏(Boolean类判断标识)
- 提示性语句(普通输出println)
- 用户输入答案(Scanner)
流程设计:1.系统提示用户进入游戏
- 陈述游戏规则
- 生成随机数
- 用户猜数
- 给予提示,大了或者小了
- 累计次数
- 猜出来后给予评语并告知猜了几次
- 可选择退出或循环游戏
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 |
|
varchar(20) |
否 |
电子邮箱 |
8 |
xb |
varchar(8) |
是 |
性别 |
9 |
cjsj |
datetime(8) |
是 |
创建时间 |
4 系统实现
一随机数游戏(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 系统测试
表5.1 随机数游戏
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
HP01 |
随机数功能 |
用户使用时由系统给出一个随机的数(1-100以内) |
可以正常产生且每次都不一样 |
正常,与预期结果一致 |
HP02 |
循环功能 |
游戏结束后询问用户是否继续游戏,如果用户是继续游戏则从头开始 |
与第一次游戏相同,可以正常运行 |
正常,与预期结果一致 |
HP03 |
次数统计功能 |
告诉用户在猜了几次之后才猜对的 |
数据正确 |
正常,与预期结果一致 |
HPO4 |
提示功能 |
将用户猜测的数与系统随机的数进行比较并给出提示 |
给出正确提示 |
正常,与预期结果一致 |
表5.2算法计算测试
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
HP01 |
随机产生数字功能 |
用户使用时由系统给出一个随机的数(1-100以内) |
可以正常产生且每次都不一样 |
正常,与预期结果一致 |
HP02 |
循环功能 |
游戏结束后询问用户是否继续游戏,如果用户是继续游戏则从头开始 |
与第一次游戏相同,可以正常运行 |
正常,与预期结果一致 |
HP03 |
总分计算功能 |
每题十分答错不得分,统计用户十道题之后的总分 |
计算正确提显示清楚 |
正常,与预期结果一致 |
HPO4 |
评语功能 |
60以下,60-80 80-100 100 四个档给予不同评语 |
判断正确评语委婉 |
正常,与预期结果一致 |
HPO5 |
数据库存储功能 |
将用户的总分存储在数据库下 |
存储正确且自动编号 |
正常,与预期结果一致 |
一. 随机数
二. 算法设计
6 结论和心得
心得:
因为工作原因开始的有一点点晚。不过好在老师准备的材料充足,同学也热情帮助,让我很快就完成了任务,下午做数据库的时候真的是有点头疼啊,一直在问老师问题,老师真的真的很耐心!本来还不好意思问,但是老师说发现问题是好事,我就多麻烦了老师一会,嘻嘻。最终在同学的讲解和老师的帮助下完成了数据库的实现,非常有成就感!非常开心!体会到了努力后成功的快乐。